π
← Back to Categories
GCX016 Sequence (GCX016)
Objective: Handles GCX016 processing.
πΊοΈ High-Level Visual Map
flowchart TD
A[GCX016 EDI 350 Processing Start]:::start
B[1:Program Initialization]:::process
C[138:IMS Queue Reading]:::process
D[142:MQ Queue Operations]:::process
E{Message Available?}:::decision
F[2:EDI Transaction Set Processing]:::process
G{Segment Type?}:::decision
H[3:Manifest Information Processing]:::process
I[4:Port Information Processing]:::process
J[5:Event Detail Processing]:::process
K[20:Remarks Processing]:::process
L[21:Customs Release Information Processing]:::process
M[22:Equipment Details Processing]:::process
N{Train Operations?}:::decision
O[6:Train Hold Operations]:::process
P[7:Train Release Operations]:::process
Q[8:Train Arrival Processing]:::process
R[12:Train Lock Operations]:::process
S[13:Train Unlock Operations]:::process
T[14:Train Seizure Operations]:::process
U[15:Train Seizure Release]:::process
V{Cargo Processing Required?}:::decision
W[24:Bond-based Cargo Processing]:::process
X[25:Car/Waybill Cargo Processing]:::process
Y[185:Cargo Processing by Bond Number]:::process
Z[186:Cargo Processing by Car and Waybill]:::process
AA{Cargo Found?}:::decision
BB[203:Cargo Record Retrieval by Car Index]:::process
CC[99:New Cargo Record Creation]:::process
DD[215:Status Array Initialization]:::process
EE[216:Status Array Population]:::process
FF[218:Disposition Code Table Lookup]:::process
GG[224:Status Array Analysis]:::process
HH[257:Cargo Status Transition Management]:::process
II{Release Required?}:::decision
JJ[90:Multi-cargo Release Verification]:::process
KK[92:Merlin Release Message Generation]:::process
LL[89:Integration Service Calls]:::process
MM[97:Payer of Freight Identification]:::process
NN[110:Broker Information Lookup]:::process
OO[111:Email vs Merlin Routing]:::process
PP{KCSM Integration Required?}:::decision
QQ[174:KCSM Disposition Code Processing]:::process
RR[175:EDI 350 Message Copying for KCSM]:::process
SS[312:KCSM Transaction Spawning]:::process
TT[126:Cargo Information Logging]:::process
UU[Processing Complete]:::success
VV[Error Handling]:::error
%% Data Sources
DS1[(GCSTBRT IMS Segment)]:::datasource
DS2[(GCWTL-TRAIN-LIST IMS Segment)]:::datasource
DS3[(GCCC-CARGO-ROOT IMS Segment)]:::datasource
DS4[(GCSUSS09 IMS Segment)]:::datasource
DS5[(MQ_QUEUE)]:::datasource
DS6[(A9RT-TRANSMISSION-SEGMENT)]:::datasource
DS7[(A9DP-DEPENDENT-SEGMENT)]:::datasource
DS8[(GCSA2RT IMS Segment)]:::datasource
DS9[(AECWRKTB DB2 Table)]:::datasource
%% Main Flow
A --> B
B --> C
C --> D
D --> E
E -->|Yes| F
E -->|No| UU
F --> G
G -->|M10| H
G -->|P4| I
G -->|V9| J
G -->|K1| K
G -->|X4| L
G -->|N7| M
H --> N
I --> N
J --> N
K --> N
L --> N
M --> N
N -->|HMI| O
N -->|HRE| P
N -->|POD/AAD| Q
N -->|LCK| R
N -->|ULC| S
N -->|SEI| T
N -->|SER| U
N -->|No| V
O --> V
P --> V
Q --> V
R --> V
S --> V
T --> V
U --> V
V -->|Yes| W
W --> Y
V -->|Car/Waybill| X
X --> Z
Y --> AA
Z --> AA
AA -->|No| BB
BB --> AA
AA -->|Still No| CC
AA -->|Yes| DD
CC --> DD
DD --> EE
EE --> FF
FF --> GG
GG --> HH
HH --> II
II -->|Yes| JJ
JJ --> KK
KK --> LL
II -->|No| MM
LL --> MM
MM --> NN
NN --> OO
OO --> PP
PP -->|Yes| QQ
QQ --> RR
RR --> SS
SS --> TT
PP -->|No| TT
TT --> E
%% Error Handling
F --> VV
H --> VV
VV --> UU
%% Data Source Connections
DS1 -.->|Admin Tables| B
DS5 -.->|EDI Messages| D
DS2 -.->|Train Data| H
DS3 -.->|Cargo Records| W
DS3 -.->|Cargo Records| X
DS3 -.->|Cargo Records| BB
DS4 -.->|Status Arrays| EE
DS1 -.->|Disposition Codes| FF
DS8 -.->|Secondary Records| MM
DS1 -.->|Broker Tables| NN
DS6 -.->|Transmission Root| QQ
DS7 -.->|Transmission Data| RR
DS9 -.->|Work Tables| QQ
%% Class Definitions
classDef start fill:#67A353
classDef process fill:#08AAD2
classDef decision fill:#FFE347
classDef datasource fill:#2EA597
classDef final fill:#D13313
classDef success fill:#2BB534
classDef error fill:#D13313
π Step-by-Step Logic Trace
β Consolidated Acceptance Criteria
- The segment type is evaluated → the system routes ST segments to header processing, M10 to manifest processing, P4 to port processing, V9 to event processing, K1 to remarks processing, X4 to customs release processing, N7 to equipment processing, and SE to trailer processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_2EDITransactionSetProcessing(["Start Step"])
E_2EDITransactionSetProcessing(["End Step"])
N_2EDITransactionSetProcessing_Node0{"The segment type is evaluated"}:::decision
N_2EDITransactionSetProcessing_Node0_action["The system routes ST segments to
header processing, M10 to manifest
processing, P4 to port processing,
V9 to event processing, K1 to
remarks processing, X4 to customs
release processing, N7 to equipment
processing, and SE to trailer
processing"]:::main N_2EDITransactionSetProcessing_Node0 -- Yes --> N_2EDITransactionSetProcessing_Node0_action N_2EDITransactionSetProcessing_Node0_action --> E_2EDITransactionSetProcessing S_2EDITransactionSetProcessing --> N_2EDITransactionSetProcessing_Node0 N_2EDITransactionSetProcessing_Node0 -- No --> E_2EDITransactionSetProcessing
header processing, M10 to manifest
processing, P4 to port processing,
V9 to event processing, K1 to
remarks processing, X4 to customs
release processing, N7 to equipment
processing, and SE to trailer
processing"]:::main N_2EDITransactionSetProcessing_Node0 -- Yes --> N_2EDITransactionSetProcessing_Node0_action N_2EDITransactionSetProcessing_Node0_action --> E_2EDITransactionSetProcessing S_2EDITransactionSetProcessing --> N_2EDITransactionSetProcessing_Node0 N_2EDITransactionSetProcessing_Node0 -- No --> E_2EDITransactionSetProcessing
File: GCX016.cbl
GIVEN:
An EDI message segment is received
WHEN:
The segment type is evaluated
THEN:
The system routes ST segments to header processing, M10 to manifest processing, P4 to port processing, V9 to event processing, K1 to remarks processing, X4 to customs release processing, N7 to equipment processing, and SE to trailer processing
β Consolidated Acceptance Criteria
- The vessel name does not start with 'TRAIN' → the system fetches train list and validates train existence in the system
- The train is not found in the system → the system generates an error report and sets train not found status
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_3ManifestInformationProcessing(["Start Step"])
E_3ManifestInformationProcessing(["End Step"])
N_3ManifestInformationProcessing_Node0{"The vessel name does not start with
TRAIN"}:::decision N_3ManifestInformationProcessing_Node0_action["The system fetches train list and
validates train existence in the
system"]:::main N_3ManifestInformationProcessing_Node0 -- Yes --> N_3ManifestInformationProcessing_Node0_action N_3ManifestInformationProcessing_Node0_action --> E_3ManifestInformationProcessing S_3ManifestInformationProcessing --> N_3ManifestInformationProcessing_Node0 N_3ManifestInformationProcessing_Node1{"The train is not found in the
system"}:::decision N_3ManifestInformationProcessing_Node1_action["The system generates an error
report and sets train not found
status"]:::main N_3ManifestInformationProcessing_Node1 -- Yes --> N_3ManifestInformationProcessing_Node1_action N_3ManifestInformationProcessing_Node1_action --> E_3ManifestInformationProcessing N_3ManifestInformationProcessing_Node0 -- No --> N_3ManifestInformationProcessing_Node1 N_3ManifestInformationProcessing_Node1 -- No --> E_3ManifestInformationProcessing
TRAIN"}:::decision N_3ManifestInformationProcessing_Node0_action["The system fetches train list and
validates train existence in the
system"]:::main N_3ManifestInformationProcessing_Node0 -- Yes --> N_3ManifestInformationProcessing_Node0_action N_3ManifestInformationProcessing_Node0_action --> E_3ManifestInformationProcessing S_3ManifestInformationProcessing --> N_3ManifestInformationProcessing_Node0 N_3ManifestInformationProcessing_Node1{"The train is not found in the
system"}:::decision N_3ManifestInformationProcessing_Node1_action["The system generates an error
report and sets train not found
status"]:::main N_3ManifestInformationProcessing_Node1 -- Yes --> N_3ManifestInformationProcessing_Node1_action N_3ManifestInformationProcessing_Node1_action --> E_3ManifestInformationProcessing N_3ManifestInformationProcessing_Node0 -- No --> N_3ManifestInformationProcessing_Node1 N_3ManifestInformationProcessing_Node1 -- No --> E_3ManifestInformationProcessing
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
A manifest information segment is processed
WHEN:
The vessel name does not start with 'TRAIN'
THEN:
- The system fetches train list
- Validates train existence in the system
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
Train validation is performed
WHEN:
The train is not found in the system
THEN:
- The system generates an error report
- Sets train not found status
β Consolidated Acceptance Criteria
- The event code is evaluated → the system executes HMI for hold train, HRE for release hold, POD/AAD for train arrival, RC for review completed, OCA for train not arrived, COC for cancel arrival, LCK for lock train, ULC for unlock train, SEI for seize train, or SER for release seizure
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_5EventDetailProcessing(["Start Step"])
E_5EventDetailProcessing(["End Step"])
N_5EventDetailProcessing_Node0{"The event code is evaluated"}:::decision
N_5EventDetailProcessing_Node0_action["The system executes HMI for hold
train, HRE for release hold, PODAAD
for train arrival, RC for review
completed, OCA for train not
arrived, COC for cancel arrival, LCK
for lock train, ULC for unlock
train, SEI for seize train, or SER
for release seizure"]:::main N_5EventDetailProcessing_Node0 -- Yes --> N_5EventDetailProcessing_Node0_action N_5EventDetailProcessing_Node0_action --> E_5EventDetailProcessing S_5EventDetailProcessing --> N_5EventDetailProcessing_Node0 N_5EventDetailProcessing_Node0 -- No --> E_5EventDetailProcessing
train, HRE for release hold, PODAAD
for train arrival, RC for review
completed, OCA for train not
arrived, COC for cancel arrival, LCK
for lock train, ULC for unlock
train, SEI for seize train, or SER
for release seizure"]:::main N_5EventDetailProcessing_Node0 -- Yes --> N_5EventDetailProcessing_Node0_action N_5EventDetailProcessing_Node0_action --> E_5EventDetailProcessing S_5EventDetailProcessing --> N_5EventDetailProcessing_Node0 N_5EventDetailProcessing_Node0 -- No --> E_5EventDetailProcessing
File: GCX016.cbl
GIVEN:
An event detail segment with event code is received
WHEN:
The event code is evaluated
THEN:
The system executes HMI for hold train, HRE for release hold, POD/AAD for train arrival, RC for review completed, OCA for train not arrived, COC for cancel arrival, LCK for lock train, ULC for unlock train, SEI for seize train, or SER for release seizure
β Consolidated Acceptance Criteria
- The processing method is determined → the system processes cargo by bond number for grouped processing, by car and waybill for transportation unit processing, or individually for single cargo items
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_21CustomsReleaseInformationProcessing(["Start Step"])
E_21CustomsReleaseInformationProcessing(["End Step"])
N_21CustomsReleaseInformationProcessing_Node0{"The processing method is determined"}:::decision
N_21CustomsReleaseInformationProcessing_Node0_action["The system processes cargo by bond
number for grouped processing, by
car and waybill for transportation
unit processing, or individually for
single cargo items"]:::main N_21CustomsReleaseInformationProcessing_Node0 -- Yes --> N_21CustomsReleaseInformationProcessing_Node0_action N_21CustomsReleaseInformationProcessing_Node0_action --> E_21CustomsReleaseInformationProcessing S_21CustomsReleaseInformationProcessing --> N_21CustomsReleaseInformationProcessing_Node0 N_21CustomsReleaseInformationProcessing_Node0 -- No --> E_21CustomsReleaseInformationProcessing
number for grouped processing, by
car and waybill for transportation
unit processing, or individually for
single cargo items"]:::main N_21CustomsReleaseInformationProcessing_Node0 -- Yes --> N_21CustomsReleaseInformationProcessing_Node0_action N_21CustomsReleaseInformationProcessing_Node0_action --> E_21CustomsReleaseInformationProcessing S_21CustomsReleaseInformationProcessing --> N_21CustomsReleaseInformationProcessing_Node0 N_21CustomsReleaseInformationProcessing_Node0 -- No --> E_21CustomsReleaseInformationProcessing
File: GCX016.cbl
GIVEN:
A customs release information segment is received
WHEN:
The processing method is determined
THEN:
- The system processes cargo by bond number for grouped processing, by car
- Waybill for transportation unit processing, or individually for single cargo items
β Consolidated Acceptance Criteria
- Multiple cargo records share the same bond number → the system processes all cargo records with the same bond number as a group
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_24BondbasedCargoProcessing(["Start Step"])
E_24BondbasedCargoProcessing(["End Step"])
N_24BondbasedCargoProcessing_Node0{"Multiple cargo records share the
same bond number"}:::decision N_24BondbasedCargoProcessing_Node0_action["The system processes all cargo
records with the same bond number as
a group"]:::main N_24BondbasedCargoProcessing_Node0 -- Yes --> N_24BondbasedCargoProcessing_Node0_action N_24BondbasedCargoProcessing_Node0_action --> E_24BondbasedCargoProcessing S_24BondbasedCargoProcessing --> N_24BondbasedCargoProcessing_Node0 N_24BondbasedCargoProcessing_Node0 -- No --> E_24BondbasedCargoProcessing
same bond number"}:::decision N_24BondbasedCargoProcessing_Node0_action["The system processes all cargo
records with the same bond number as
a group"]:::main N_24BondbasedCargoProcessing_Node0 -- Yes --> N_24BondbasedCargoProcessing_Node0_action N_24BondbasedCargoProcessing_Node0_action --> E_24BondbasedCargoProcessing S_24BondbasedCargoProcessing --> N_24BondbasedCargoProcessing_Node0 N_24BondbasedCargoProcessing_Node0 -- No --> E_24BondbasedCargoProcessing
File: GCX016.cbl
GIVEN:
Cargo processing by bond is selected
WHEN:
Multiple cargo records share the same bond number
THEN:
The system processes all cargo records with the same bond number as a group
β Consolidated Acceptance Criteria
- Multiple cargo records share the same car ID and waybill number → the system processes all cargo records with the same car ID and waybill combination as a transportation unit
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_25CarWaybillCargoProcessing(["Start Step"])
E_25CarWaybillCargoProcessing(["End Step"])
N_25CarWaybillCargoProcessing_Node0{"Multiple cargo records share the
same car ID and waybill number"}:::decision N_25CarWaybillCargoProcessing_Node0_action["The system processes all cargo
records with the same car ID and
waybill combination as a
transportation unit"]:::main N_25CarWaybillCargoProcessing_Node0 -- Yes --> N_25CarWaybillCargoProcessing_Node0_action N_25CarWaybillCargoProcessing_Node0_action --> E_25CarWaybillCargoProcessing S_25CarWaybillCargoProcessing --> N_25CarWaybillCargoProcessing_Node0 N_25CarWaybillCargoProcessing_Node0 -- No --> E_25CarWaybillCargoProcessing
same car ID and waybill number"}:::decision N_25CarWaybillCargoProcessing_Node0_action["The system processes all cargo
records with the same car ID and
waybill combination as a
transportation unit"]:::main N_25CarWaybillCargoProcessing_Node0 -- Yes --> N_25CarWaybillCargoProcessing_Node0_action N_25CarWaybillCargoProcessing_Node0_action --> E_25CarWaybillCargoProcessing S_25CarWaybillCargoProcessing --> N_25CarWaybillCargoProcessing_Node0 N_25CarWaybillCargoProcessing_Node0 -- No --> E_25CarWaybillCargoProcessing
File: GCX016.cbl
GIVEN:
Cargo processing by car and waybill is selected
WHEN:
- Multiple cargo records share the same car id
- Waybill number
THEN:
- The system processes all cargo records with the same car id
- Waybill combination as a transportation unit
β Consolidated Acceptance Criteria
- The system processes the hold disposition code → the system adds the hold code to the status array with appropriate hold flags and location information
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_61HoldCodeProcessing(["Start Step"])
E_61HoldCodeProcessing(["End Step"])
N_61HoldCodeProcessing_Node0{"The system processes the hold
disposition code"}:::decision N_61HoldCodeProcessing_Node0_action["The system adds the hold code to
the status array with appropriate
hold flags and location information"]:::main N_61HoldCodeProcessing_Node0 -- Yes --> N_61HoldCodeProcessing_Node0_action N_61HoldCodeProcessing_Node0_action --> E_61HoldCodeProcessing S_61HoldCodeProcessing --> N_61HoldCodeProcessing_Node0 N_61HoldCodeProcessing_Node0 -- No --> E_61HoldCodeProcessing
disposition code"}:::decision N_61HoldCodeProcessing_Node0_action["The system adds the hold code to
the status array with appropriate
hold flags and location information"]:::main N_61HoldCodeProcessing_Node0 -- Yes --> N_61HoldCodeProcessing_Node0_action N_61HoldCodeProcessing_Node0_action --> E_61HoldCodeProcessing S_61HoldCodeProcessing --> N_61HoldCodeProcessing_Node0 N_61HoldCodeProcessing_Node0 -- No --> E_61HoldCodeProcessing
File: GCX016.cbl
GIVEN:
A disposition code is classified as a hold code type
WHEN:
The system processes the hold disposition code
THEN:
- The system adds the hold code to the status array with appropriate hold flags
- Location information
β Consolidated Acceptance Criteria
- The system processes the release disposition code → the system adds the release code to the status array with release flags and updates release quantities
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_62ReleaseCodeProcessing(["Start Step"])
E_62ReleaseCodeProcessing(["End Step"])
N_62ReleaseCodeProcessing_Node0{"The system processes the release
disposition code"}:::decision N_62ReleaseCodeProcessing_Node0_action["The system adds the release code to
the status array with release flags
and updates release quantities"]:::main N_62ReleaseCodeProcessing_Node0 -- Yes --> N_62ReleaseCodeProcessing_Node0_action N_62ReleaseCodeProcessing_Node0_action --> E_62ReleaseCodeProcessing S_62ReleaseCodeProcessing --> N_62ReleaseCodeProcessing_Node0 N_62ReleaseCodeProcessing_Node0 -- No --> E_62ReleaseCodeProcessing
disposition code"}:::decision N_62ReleaseCodeProcessing_Node0_action["The system adds the release code to
the status array with release flags
and updates release quantities"]:::main N_62ReleaseCodeProcessing_Node0 -- Yes --> N_62ReleaseCodeProcessing_Node0_action N_62ReleaseCodeProcessing_Node0_action --> E_62ReleaseCodeProcessing S_62ReleaseCodeProcessing --> N_62ReleaseCodeProcessing_Node0 N_62ReleaseCodeProcessing_Node0 -- No --> E_62ReleaseCodeProcessing
File: GCX016.cbl
GIVEN:
A disposition code is classified as a release code type
WHEN:
The system processes the release disposition code
THEN:
- The system adds the release code to the status array with release flags
- Updates release quantities
β Consolidated Acceptance Criteria
- The system processes the status information disposition code → the system adds the information code to the status array with status info flags without affecting quantities
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_63StatusInfoProcessing(["Start Step"])
E_63StatusInfoProcessing(["End Step"])
N_63StatusInfoProcessing_Node0{"The system processes the status
information disposition code"}:::decision N_63StatusInfoProcessing_Node0_action["The system adds the information
code to the status array with status
info flags without affecting
quantities"]:::main N_63StatusInfoProcessing_Node0 -- Yes --> N_63StatusInfoProcessing_Node0_action N_63StatusInfoProcessing_Node0_action --> E_63StatusInfoProcessing S_63StatusInfoProcessing --> N_63StatusInfoProcessing_Node0 N_63StatusInfoProcessing_Node0 -- No --> E_63StatusInfoProcessing
information disposition code"}:::decision N_63StatusInfoProcessing_Node0_action["The system adds the information
code to the status array with status
info flags without affecting
quantities"]:::main N_63StatusInfoProcessing_Node0 -- Yes --> N_63StatusInfoProcessing_Node0_action N_63StatusInfoProcessing_Node0_action --> E_63StatusInfoProcessing S_63StatusInfoProcessing --> N_63StatusInfoProcessing_Node0 N_63StatusInfoProcessing_Node0 -- No --> E_63StatusInfoProcessing
File: GCX016.cbl
GIVEN:
A disposition code is classified as status information type
WHEN:
The system processes the status information disposition code
THEN:
The system adds the information code to the status array with status info flags without affecting quantities
β Consolidated Acceptance Criteria
- IIS integration is evaluated AND cargo is held (not PTT status) AND equipment type is container or trailer → the system calls IIS integration services with appropriate status descriptions
- Disposition code is 4E AND cargo has full release quantities → the system performs special 4E processing logic for release handling
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_89IntegrationServiceCalls(["Start Step"])
E_89IntegrationServiceCalls(["End Step"])
N_89IntegrationServiceCalls_Node0{"IIS integration is evaluated AND
cargo is held not PTT status AND
equipment type is container or
trailer"}:::decision N_89IntegrationServiceCalls_Node0_action["The system calls IIS integration
services with appropriate status
descriptions"]:::main N_89IntegrationServiceCalls_Node0 -- Yes --> N_89IntegrationServiceCalls_Node0_action N_89IntegrationServiceCalls_Node0_action --> E_89IntegrationServiceCalls S_89IntegrationServiceCalls --> N_89IntegrationServiceCalls_Node0 N_89IntegrationServiceCalls_Node1{"Disposition code is 4E AND cargo
has full release quantities"}:::decision N_89IntegrationServiceCalls_Node1_action["The system performs special 4E
processing logic for release
handling"]:::main N_89IntegrationServiceCalls_Node1 -- Yes --> N_89IntegrationServiceCalls_Node1_action N_89IntegrationServiceCalls_Node1_action --> E_89IntegrationServiceCalls N_89IntegrationServiceCalls_Node0 -- No --> N_89IntegrationServiceCalls_Node1 N_89IntegrationServiceCalls_Node1 -- No --> E_89IntegrationServiceCalls
cargo is held not PTT status AND
equipment type is container or
trailer"}:::decision N_89IntegrationServiceCalls_Node0_action["The system calls IIS integration
services with appropriate status
descriptions"]:::main N_89IntegrationServiceCalls_Node0 -- Yes --> N_89IntegrationServiceCalls_Node0_action N_89IntegrationServiceCalls_Node0_action --> E_89IntegrationServiceCalls S_89IntegrationServiceCalls --> N_89IntegrationServiceCalls_Node0 N_89IntegrationServiceCalls_Node1{"Disposition code is 4E AND cargo
has full release quantities"}:::decision N_89IntegrationServiceCalls_Node1_action["The system performs special 4E
processing logic for release
handling"]:::main N_89IntegrationServiceCalls_Node1 -- Yes --> N_89IntegrationServiceCalls_Node1_action N_89IntegrationServiceCalls_Node1_action --> E_89IntegrationServiceCalls N_89IntegrationServiceCalls_Node0 -- No --> N_89IntegrationServiceCalls_Node1 N_89IntegrationServiceCalls_Node1 -- No --> E_89IntegrationServiceCalls
File: GCX016.cbl
GIVEN:
Cargo processing is completed
WHEN:
- Iis integration is evaluated
- Cargo is held (not ptt status) and equipment type is container or trailer
THEN:
The system calls IIS integration services with appropriate status descriptions
File: GCX016.cbl
GIVEN:
IIS integration processing is performed
WHEN:
- Disposition code is 4e
- Cargo has full release quantities
THEN:
The system performs special 4E processing logic for release handling
β Consolidated Acceptance Criteria
- The system processes disposition codes 88, 89, or 90 → integration service calls are made to external systems for customs compliance processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_89IntegrationServiceCallsforNewRequirements(["Start Step"])
E_89IntegrationServiceCallsforNewRequirements(["End Step"])
N_89IntegrationServiceCallsforNewRequirements_Node0{"The system processes disposition
codes 88, 89, or 90"}:::decision N_89IntegrationServiceCallsforNewRequirements_Node0_action["Integration service calls are made
to external systems for customs
compliance processing"]:::main N_89IntegrationServiceCallsforNewRequirements_Node0 -- Yes --> N_89IntegrationServiceCallsforNewRequirements_Node0_action N_89IntegrationServiceCallsforNewRequirements_Node0_action --> E_89IntegrationServiceCallsforNewRequirements S_89IntegrationServiceCallsforNewRequirements --> N_89IntegrationServiceCallsforNewRequirements_Node0 N_89IntegrationServiceCallsforNewRequirements_Node0 -- No --> E_89IntegrationServiceCallsforNewRequirements
codes 88, 89, or 90"}:::decision N_89IntegrationServiceCallsforNewRequirements_Node0_action["Integration service calls are made
to external systems for customs
compliance processing"]:::main N_89IntegrationServiceCallsforNewRequirements_Node0 -- Yes --> N_89IntegrationServiceCallsforNewRequirements_Node0_action N_89IntegrationServiceCallsforNewRequirements_Node0_action --> E_89IntegrationServiceCallsforNewRequirements S_89IntegrationServiceCallsforNewRequirements --> N_89IntegrationServiceCallsforNewRequirements_Node0 N_89IntegrationServiceCallsforNewRequirements_Node0 -- No --> E_89IntegrationServiceCallsforNewRequirements
File: GCX016.cbl
GIVEN:
New customs requirements need external system integration
WHEN:
The system processes disposition codes 88, 89, or 90
THEN:
Integration service calls are made to external systems for customs compliance processing
β Consolidated Acceptance Criteria
- All cargo records on the same car and waybill combination are evaluated → the system triggers container/trailer processing if the entire waybill is released
- Individual cargo records are evaluated → the system checks for deleted cargo, manually released cargo, held cargo, partial releases, and fully released cargo to determine overall waybill status
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_90MulticargoReleaseVerification(["Start Step"])
E_90MulticargoReleaseVerification(["End Step"])
N_90MulticargoReleaseVerification_Node0{"All cargo records on the same car
and waybill combination are
evaluated"}:::decision N_90MulticargoReleaseVerification_Node0_action["The system triggers
containertrailer processing if the
entire waybill is released"]:::main N_90MulticargoReleaseVerification_Node0 -- Yes --> N_90MulticargoReleaseVerification_Node0_action N_90MulticargoReleaseVerification_Node0_action --> E_90MulticargoReleaseVerification S_90MulticargoReleaseVerification --> N_90MulticargoReleaseVerification_Node0 N_90MulticargoReleaseVerification_Node1{"Individual cargo records are
evaluated"}:::decision N_90MulticargoReleaseVerification_Node1_action["The system checks for deleted
cargo, manually released cargo, held
cargo, partial releases, and fully
released cargo to determine overall
waybill status"]:::main N_90MulticargoReleaseVerification_Node1 -- Yes --> N_90MulticargoReleaseVerification_Node1_action N_90MulticargoReleaseVerification_Node1_action --> E_90MulticargoReleaseVerification N_90MulticargoReleaseVerification_Node0 -- No --> N_90MulticargoReleaseVerification_Node1 N_90MulticargoReleaseVerification_Node1 -- No --> E_90MulticargoReleaseVerification
and waybill combination are
evaluated"}:::decision N_90MulticargoReleaseVerification_Node0_action["The system triggers
containertrailer processing if the
entire waybill is released"]:::main N_90MulticargoReleaseVerification_Node0 -- Yes --> N_90MulticargoReleaseVerification_Node0_action N_90MulticargoReleaseVerification_Node0_action --> E_90MulticargoReleaseVerification S_90MulticargoReleaseVerification --> N_90MulticargoReleaseVerification_Node0 N_90MulticargoReleaseVerification_Node1{"Individual cargo records are
evaluated"}:::decision N_90MulticargoReleaseVerification_Node1_action["The system checks for deleted
cargo, manually released cargo, held
cargo, partial releases, and fully
released cargo to determine overall
waybill status"]:::main N_90MulticargoReleaseVerification_Node1 -- Yes --> N_90MulticargoReleaseVerification_Node1_action N_90MulticargoReleaseVerification_Node1_action --> E_90MulticargoReleaseVerification N_90MulticargoReleaseVerification_Node0 -- No --> N_90MulticargoReleaseVerification_Node1 N_90MulticargoReleaseVerification_Node1 -- No --> E_90MulticargoReleaseVerification
File: GCX016.cbl
GIVEN:
Cargo release processing is completed
WHEN:
- All cargo records on the same car
- Waybill combination are evaluated
THEN:
The system triggers container/trailer processing if the entire waybill is released
File: GCX016.cbl
GIVEN:
Waybill release verification is performed
WHEN:
Individual cargo records are evaluated
THEN:
The system checks for deleted cargo, manually released cargo, held cargo, partial releases, and fully released cargo to determine overall waybill status
β Consolidated Acceptance Criteria
- Release message generation is required → the system creates release message with car information, date, time, and quantity details
- Export or cancel export processing is required → the system generates appropriate Merlin messages for export status changes
- Arrival or cancel arrival processing is required → the system generates appropriate Merlin messages for arrival status changes
- Message type is evaluated → the system routes ERROR/ARRCANL to IN and USERR destinations, INFO to IN and station-specific Merlin IDs, UNRLSE to default and cancel-specific Merlin IDs, RLSE to station-specific Merlin IDs only, and EXPORT with equipment type validation
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_92MerlinReleaseMessageGeneration(["Start Step"])
E_92MerlinReleaseMessageGeneration(["End Step"])
N_92MerlinReleaseMessageGeneration_Node0{"Release message generation is
required"}:::decision N_92MerlinReleaseMessageGeneration_Node0_action["The system creates release message
with car information, date, time,
and quantity details"]:::main N_92MerlinReleaseMessageGeneration_Node0 -- Yes --> N_92MerlinReleaseMessageGeneration_Node0_action N_92MerlinReleaseMessageGeneration_Node0_action --> E_92MerlinReleaseMessageGeneration S_92MerlinReleaseMessageGeneration --> N_92MerlinReleaseMessageGeneration_Node0 N_92MerlinReleaseMessageGeneration_Node1{"Export or cancel export processing
is required"}:::decision N_92MerlinReleaseMessageGeneration_Node1_action["The system generates appropriate
Merlin messages for export status
changes"]:::main N_92MerlinReleaseMessageGeneration_Node1 -- Yes --> N_92MerlinReleaseMessageGeneration_Node1_action N_92MerlinReleaseMessageGeneration_Node1_action --> E_92MerlinReleaseMessageGeneration N_92MerlinReleaseMessageGeneration_Node0 -- No --> N_92MerlinReleaseMessageGeneration_Node1 N_92MerlinReleaseMessageGeneration_Node2{"Arrival or cancel arrival
processing is required"}:::decision N_92MerlinReleaseMessageGeneration_Node2_action["The system generates appropriate
Merlin messages for arrival status
changes"]:::main N_92MerlinReleaseMessageGeneration_Node2 -- Yes --> N_92MerlinReleaseMessageGeneration_Node2_action N_92MerlinReleaseMessageGeneration_Node2_action --> E_92MerlinReleaseMessageGeneration N_92MerlinReleaseMessageGeneration_Node1 -- No --> N_92MerlinReleaseMessageGeneration_Node2 N_92MerlinReleaseMessageGeneration_Node3{"Message type is evaluated"}:::decision N_92MerlinReleaseMessageGeneration_Node3_action["The system routes ERRORARRCANL to
IN and USERR destinations, INFO to
IN and station-specific Merlin IDs,
UNRLSE to default and
cancel-specific Merlin IDs, RLSE to
station-specific Merlin IDs only,
and EXPORT with equipment type
validation"]:::main N_92MerlinReleaseMessageGeneration_Node3 -- Yes --> N_92MerlinReleaseMessageGeneration_Node3_action N_92MerlinReleaseMessageGeneration_Node3_action --> E_92MerlinReleaseMessageGeneration N_92MerlinReleaseMessageGeneration_Node2 -- No --> N_92MerlinReleaseMessageGeneration_Node3 N_92MerlinReleaseMessageGeneration_Node3 -- No --> E_92MerlinReleaseMessageGeneration
required"}:::decision N_92MerlinReleaseMessageGeneration_Node0_action["The system creates release message
with car information, date, time,
and quantity details"]:::main N_92MerlinReleaseMessageGeneration_Node0 -- Yes --> N_92MerlinReleaseMessageGeneration_Node0_action N_92MerlinReleaseMessageGeneration_Node0_action --> E_92MerlinReleaseMessageGeneration S_92MerlinReleaseMessageGeneration --> N_92MerlinReleaseMessageGeneration_Node0 N_92MerlinReleaseMessageGeneration_Node1{"Export or cancel export processing
is required"}:::decision N_92MerlinReleaseMessageGeneration_Node1_action["The system generates appropriate
Merlin messages for export status
changes"]:::main N_92MerlinReleaseMessageGeneration_Node1 -- Yes --> N_92MerlinReleaseMessageGeneration_Node1_action N_92MerlinReleaseMessageGeneration_Node1_action --> E_92MerlinReleaseMessageGeneration N_92MerlinReleaseMessageGeneration_Node0 -- No --> N_92MerlinReleaseMessageGeneration_Node1 N_92MerlinReleaseMessageGeneration_Node2{"Arrival or cancel arrival
processing is required"}:::decision N_92MerlinReleaseMessageGeneration_Node2_action["The system generates appropriate
Merlin messages for arrival status
changes"]:::main N_92MerlinReleaseMessageGeneration_Node2 -- Yes --> N_92MerlinReleaseMessageGeneration_Node2_action N_92MerlinReleaseMessageGeneration_Node2_action --> E_92MerlinReleaseMessageGeneration N_92MerlinReleaseMessageGeneration_Node1 -- No --> N_92MerlinReleaseMessageGeneration_Node2 N_92MerlinReleaseMessageGeneration_Node3{"Message type is evaluated"}:::decision N_92MerlinReleaseMessageGeneration_Node3_action["The system routes ERRORARRCANL to
IN and USERR destinations, INFO to
IN and station-specific Merlin IDs,
UNRLSE to default and
cancel-specific Merlin IDs, RLSE to
station-specific Merlin IDs only,
and EXPORT with equipment type
validation"]:::main N_92MerlinReleaseMessageGeneration_Node3 -- Yes --> N_92MerlinReleaseMessageGeneration_Node3_action N_92MerlinReleaseMessageGeneration_Node3_action --> E_92MerlinReleaseMessageGeneration N_92MerlinReleaseMessageGeneration_Node2 -- No --> N_92MerlinReleaseMessageGeneration_Node3 N_92MerlinReleaseMessageGeneration_Node3 -- No --> E_92MerlinReleaseMessageGeneration
File: GCX016.cbl
GIVEN:
Cargo release processing is completed
WHEN:
Release message generation is required
THEN:
The system creates release message with car information, date, time, and quantity details
File: GCX016.cbl
GIVEN:
Export status change occurs
WHEN:
Export or cancel export processing is required
THEN:
The system generates appropriate Merlin messages for export status changes
File: GCX016.cbl
GIVEN:
Arrival status change occurs
WHEN:
Arrival or cancel arrival processing is required
THEN:
The system generates appropriate Merlin messages for arrival status changes
File: GCX016.cbl
GIVEN:
Message routing is required
WHEN:
Message type is evaluated
THEN:
- The system routes error/arrcanl to in
- Userr destinations, info to in
- Station-specific merlin ids, unrlse to default
- Cancel-specific merlin ids, rlse to station-specific merlin ids only, and export with equipment type validation
β Consolidated Acceptance Criteria
- Payer of freight search is performed in cargo sections → the system retrieves payer of freight information and gets broker short name if payer is found
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_97PayerofFreightIdentification(["Start Step"])
E_97PayerofFreightIdentification(["End Step"])
N_97PayerofFreightIdentification_Node0{"Payer of freight search is
performed in cargo sections"}:::decision N_97PayerofFreightIdentification_Node0_action["The system retrieves payer of
freight information and gets broker
short name if payer is found"]:::main N_97PayerofFreightIdentification_Node0 -- Yes --> N_97PayerofFreightIdentification_Node0_action N_97PayerofFreightIdentification_Node0_action --> E_97PayerofFreightIdentification S_97PayerofFreightIdentification --> N_97PayerofFreightIdentification_Node0 N_97PayerofFreightIdentification_Node0 -- No --> E_97PayerofFreightIdentification
performed in cargo sections"}:::decision N_97PayerofFreightIdentification_Node0_action["The system retrieves payer of
freight information and gets broker
short name if payer is found"]:::main N_97PayerofFreightIdentification_Node0 -- Yes --> N_97PayerofFreightIdentification_Node0_action N_97PayerofFreightIdentification_Node0_action --> E_97PayerofFreightIdentification S_97PayerofFreightIdentification --> N_97PayerofFreightIdentification_Node0 N_97PayerofFreightIdentification_Node0 -- No --> E_97PayerofFreightIdentification
File: GCX016.cbl
GIVEN:
Cargo processing requires payer information
WHEN:
Payer of freight search is performed in cargo sections
THEN:
- The system retrieves payer of freight information
- Gets broker short name if payer is found
β Consolidated Acceptance Criteria
- The system searches for payer of freight information in secondary cargo records → the system retrieves payer of freight details from GCSA2RT records if available
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_97PayerofFreightIdentification(["Start Step"])
E_97PayerofFreightIdentification(["End Step"])
N_97PayerofFreightIdentification_Node0{"The system searches for payer of
freight information in secondary
cargo records"}:::decision N_97PayerofFreightIdentification_Node0_action["The system retrieves payer of
freight details from GCSA2RT records
if available"]:::main N_97PayerofFreightIdentification_Node0 -- Yes --> N_97PayerofFreightIdentification_Node0_action N_97PayerofFreightIdentification_Node0_action --> E_97PayerofFreightIdentification S_97PayerofFreightIdentification --> N_97PayerofFreightIdentification_Node0 N_97PayerofFreightIdentification_Node0 -- No --> E_97PayerofFreightIdentification
freight information in secondary
cargo records"}:::decision N_97PayerofFreightIdentification_Node0_action["The system retrieves payer of
freight details from GCSA2RT records
if available"]:::main N_97PayerofFreightIdentification_Node0 -- Yes --> N_97PayerofFreightIdentification_Node0_action N_97PayerofFreightIdentification_Node0_action --> E_97PayerofFreightIdentification S_97PayerofFreightIdentification --> N_97PayerofFreightIdentification_Node0 N_97PayerofFreightIdentification_Node0 -- No --> E_97PayerofFreightIdentification
File: GCX016.cbl
GIVEN:
A CIH hold code has been detected on cargo
WHEN:
The system searches for payer of freight information in secondary cargo records
THEN:
The system retrieves payer of freight details from GCSA2RT records if available
β Consolidated Acceptance Criteria
- The system performs broker name lookup using PF= prefix in GCSTBRT broker tables → the system retrieves the corresponding broker short name for the payer entity
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_98BrokerNameResolution(["Start Step"])
E_98BrokerNameResolution(["End Step"])
N_98BrokerNameResolution_Node0{"The system performs broker name
lookup using PF prefix in GCSTBRT
broker tables"}:::decision N_98BrokerNameResolution_Node0_action["The system retrieves the
corresponding broker short name for
the payer entity"]:::main N_98BrokerNameResolution_Node0 -- Yes --> N_98BrokerNameResolution_Node0_action N_98BrokerNameResolution_Node0_action --> E_98BrokerNameResolution S_98BrokerNameResolution --> N_98BrokerNameResolution_Node0 N_98BrokerNameResolution_Node0 -- No --> E_98BrokerNameResolution
lookup using PF prefix in GCSTBRT
broker tables"}:::decision N_98BrokerNameResolution_Node0_action["The system retrieves the
corresponding broker short name for
the payer entity"]:::main N_98BrokerNameResolution_Node0 -- Yes --> N_98BrokerNameResolution_Node0_action N_98BrokerNameResolution_Node0_action --> E_98BrokerNameResolution S_98BrokerNameResolution --> N_98BrokerNameResolution_Node0 N_98BrokerNameResolution_Node0 -- No --> E_98BrokerNameResolution
File: GCX016.cbl
GIVEN:
A valid payer of freight entity has been identified
WHEN:
The system performs broker name lookup using PF= prefix in GCSTBRT broker tables
THEN:
The system retrieves the corresponding broker short name for the payer entity
β Consolidated Acceptance Criteria
- No existing cargo record is found → the system creates a new cargo record with appropriate initial status
- The cargo is identified as CPRS type → the system sets the cargo status to ERROR with ERROR description
- The cargo is not CPRS type → the system sets the cargo status to SENT with SENT description
- The disposition code is 1J, 69, or 55 → the system sets master in-bond flag and processes entry type codes for different bond types
- Entry type code is evaluated → the system processes 61 as immediate transport, 62 as transport export, 63 as immediate export, 69 as US-Canada-US movement, and 00 as default border processing
- The entry number starts with V prefix → the system places it in the entry number field, otherwise places it in the in-bond control number field
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_99NewCargoRecordCreation(["Start Step"])
E_99NewCargoRecordCreation(["End Step"])
N_99NewCargoRecordCreation_Node0{"No existing cargo record is found"}:::decision
N_99NewCargoRecordCreation_Node0_action["The system creates a new cargo
record with appropriate initial
status"]:::main N_99NewCargoRecordCreation_Node0 -- Yes --> N_99NewCargoRecordCreation_Node0_action N_99NewCargoRecordCreation_Node0_action --> E_99NewCargoRecordCreation S_99NewCargoRecordCreation --> N_99NewCargoRecordCreation_Node0 N_99NewCargoRecordCreation_Node1{"The cargo is identified as CPRS
type"}:::decision N_99NewCargoRecordCreation_Node1_action["The system sets the cargo status to
ERROR with ERROR description"]:::main N_99NewCargoRecordCreation_Node1 -- Yes --> N_99NewCargoRecordCreation_Node1_action N_99NewCargoRecordCreation_Node1_action --> E_99NewCargoRecordCreation N_99NewCargoRecordCreation_Node0 -- No --> N_99NewCargoRecordCreation_Node1 N_99NewCargoRecordCreation_Node2{"The cargo is not CPRS type"}:::decision N_99NewCargoRecordCreation_Node2_action["The system sets the cargo status to
SENT with SENT description"]:::main N_99NewCargoRecordCreation_Node2 -- Yes --> N_99NewCargoRecordCreation_Node2_action N_99NewCargoRecordCreation_Node2_action --> E_99NewCargoRecordCreation N_99NewCargoRecordCreation_Node1 -- No --> N_99NewCargoRecordCreation_Node2 N_99NewCargoRecordCreation_Node3{"The disposition code is 1J, 69, or
55"}:::decision N_99NewCargoRecordCreation_Node3_action["The system sets master in-bond flag
and processes entry type codes for
different bond types"]:::main N_99NewCargoRecordCreation_Node3 -- Yes --> N_99NewCargoRecordCreation_Node3_action N_99NewCargoRecordCreation_Node3_action --> E_99NewCargoRecordCreation N_99NewCargoRecordCreation_Node2 -- No --> N_99NewCargoRecordCreation_Node3 N_99NewCargoRecordCreation_Node4{"Entry type code is evaluated"}:::decision N_99NewCargoRecordCreation_Node4_action["The system processes 61 as
immediate transport, 62 as transport
export, 63 as immediate export, 69
as US-Canada-US movement, and 00 as
default border processing"]:::main N_99NewCargoRecordCreation_Node4 -- Yes --> N_99NewCargoRecordCreation_Node4_action N_99NewCargoRecordCreation_Node4_action --> E_99NewCargoRecordCreation N_99NewCargoRecordCreation_Node3 -- No --> N_99NewCargoRecordCreation_Node4 N_99NewCargoRecordCreation_Node5{"The entry number starts with V
prefix"}:::decision N_99NewCargoRecordCreation_Node5_action["The system places it in the entry
number field, otherwise places it in
the in-bond control number field"]:::main N_99NewCargoRecordCreation_Node5 -- Yes --> N_99NewCargoRecordCreation_Node5_action N_99NewCargoRecordCreation_Node5_action --> E_99NewCargoRecordCreation N_99NewCargoRecordCreation_Node4 -- No --> N_99NewCargoRecordCreation_Node5 N_99NewCargoRecordCreation_Node5 -- No --> E_99NewCargoRecordCreation
record with appropriate initial
status"]:::main N_99NewCargoRecordCreation_Node0 -- Yes --> N_99NewCargoRecordCreation_Node0_action N_99NewCargoRecordCreation_Node0_action --> E_99NewCargoRecordCreation S_99NewCargoRecordCreation --> N_99NewCargoRecordCreation_Node0 N_99NewCargoRecordCreation_Node1{"The cargo is identified as CPRS
type"}:::decision N_99NewCargoRecordCreation_Node1_action["The system sets the cargo status to
ERROR with ERROR description"]:::main N_99NewCargoRecordCreation_Node1 -- Yes --> N_99NewCargoRecordCreation_Node1_action N_99NewCargoRecordCreation_Node1_action --> E_99NewCargoRecordCreation N_99NewCargoRecordCreation_Node0 -- No --> N_99NewCargoRecordCreation_Node1 N_99NewCargoRecordCreation_Node2{"The cargo is not CPRS type"}:::decision N_99NewCargoRecordCreation_Node2_action["The system sets the cargo status to
SENT with SENT description"]:::main N_99NewCargoRecordCreation_Node2 -- Yes --> N_99NewCargoRecordCreation_Node2_action N_99NewCargoRecordCreation_Node2_action --> E_99NewCargoRecordCreation N_99NewCargoRecordCreation_Node1 -- No --> N_99NewCargoRecordCreation_Node2 N_99NewCargoRecordCreation_Node3{"The disposition code is 1J, 69, or
55"}:::decision N_99NewCargoRecordCreation_Node3_action["The system sets master in-bond flag
and processes entry type codes for
different bond types"]:::main N_99NewCargoRecordCreation_Node3 -- Yes --> N_99NewCargoRecordCreation_Node3_action N_99NewCargoRecordCreation_Node3_action --> E_99NewCargoRecordCreation N_99NewCargoRecordCreation_Node2 -- No --> N_99NewCargoRecordCreation_Node3 N_99NewCargoRecordCreation_Node4{"Entry type code is evaluated"}:::decision N_99NewCargoRecordCreation_Node4_action["The system processes 61 as
immediate transport, 62 as transport
export, 63 as immediate export, 69
as US-Canada-US movement, and 00 as
default border processing"]:::main N_99NewCargoRecordCreation_Node4 -- Yes --> N_99NewCargoRecordCreation_Node4_action N_99NewCargoRecordCreation_Node4_action --> E_99NewCargoRecordCreation N_99NewCargoRecordCreation_Node3 -- No --> N_99NewCargoRecordCreation_Node4 N_99NewCargoRecordCreation_Node5{"The entry number starts with V
prefix"}:::decision N_99NewCargoRecordCreation_Node5_action["The system places it in the entry
number field, otherwise places it in
the in-bond control number field"]:::main N_99NewCargoRecordCreation_Node5 -- Yes --> N_99NewCargoRecordCreation_Node5_action N_99NewCargoRecordCreation_Node5_action --> E_99NewCargoRecordCreation N_99NewCargoRecordCreation_Node4 -- No --> N_99NewCargoRecordCreation_Node5 N_99NewCargoRecordCreation_Node5 -- No --> E_99NewCargoRecordCreation
File: GCX016.cbl
GIVEN:
Cargo search has been performed
WHEN:
No existing cargo record is found
THEN:
The system creates a new cargo record with appropriate initial status
File: GCX016.cbl
GIVEN:
A new cargo record is being created
WHEN:
The cargo is identified as CPRS type
THEN:
The system sets the cargo status to ERROR with ERROR description
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
A new cargo record is being created
WHEN:
The cargo is not CPRS type
THEN:
The system sets the cargo status to SENT with SENT description
File: GCX016.cbl
GIVEN:
A new cargo record is being created
WHEN:
The disposition code is 1J, 69, or 55
THEN:
- The system sets master in-bond flag
- Processes entry type codes for different bond types
File: GCX016.cbl
GIVEN:
In-bond processing is triggered
WHEN:
Entry type code is evaluated
THEN:
The system processes 61 as immediate transport, 62 as transport export, 63 as immediate export, 69 as US-Canada-US movement, and 00 as default border processing
File: GCX016.cbl
GIVEN:
A new cargo record with entry number is being created
WHEN:
The entry number starts with V prefix
THEN:
The system places it in the entry number field, otherwise places it in the in-bond control number field
β Consolidated Acceptance Criteria
- The system prepares messages for external communication → the system retrieves all stored K1 comments from the array AND integrates them into the appropriate message formats AND makes them available for inclusion in Merlin messages, release messages, and broker notifications
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_106K1CommentIntegration(["Start Step"])
E_106K1CommentIntegration(["End Step"])
N_106K1CommentIntegration_Node0{"The system prepares messages for
external communication"}:::decision N_106K1CommentIntegration_Node0_action["The system retrieves all stored K1
comments from the array AND
integrates them into the appropriate
message formats AND makes them
available for inclusion in Merlin
messages, release messages, and
broker notifications"]:::main N_106K1CommentIntegration_Node0 -- Yes --> N_106K1CommentIntegration_Node0_action N_106K1CommentIntegration_Node0_action --> E_106K1CommentIntegration S_106K1CommentIntegration --> N_106K1CommentIntegration_Node0 N_106K1CommentIntegration_Node0 -- No --> E_106K1CommentIntegration
external communication"}:::decision N_106K1CommentIntegration_Node0_action["The system retrieves all stored K1
comments from the array AND
integrates them into the appropriate
message formats AND makes them
available for inclusion in Merlin
messages, release messages, and
broker notifications"]:::main N_106K1CommentIntegration_Node0 -- Yes --> N_106K1CommentIntegration_Node0_action N_106K1CommentIntegration_Node0_action --> E_106K1CommentIntegration S_106K1CommentIntegration --> N_106K1CommentIntegration_Node0 N_106K1CommentIntegration_Node0 -- No --> E_106K1CommentIntegration
File: GCX016.cbl
GIVEN:
K1 comments have been processed and stored in the comment array
WHEN:
The system prepares messages for external communication
THEN:
- The system retrieves all stored k1 comments from the array
- Integrates them into the appropriate message formats
- Makes them available for inclusion in merlin messages, release messages, and broker notifications
β Consolidated Acceptance Criteria
- Payer of freight broker is found → the system uses payer of freight broker, otherwise uses cargo broker
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_110BrokerInformationLookup(["Start Step"])
E_110BrokerInformationLookup(["End Step"])
N_110BrokerInformationLookup_Node0{"Payer of freight broker is found"}:::decision
N_110BrokerInformationLookup_Node0_action["The system uses payer of freight
broker, otherwise uses cargo broker"]:::main N_110BrokerInformationLookup_Node0 -- Yes --> N_110BrokerInformationLookup_Node0_action N_110BrokerInformationLookup_Node0_action --> E_110BrokerInformationLookup S_110BrokerInformationLookup --> N_110BrokerInformationLookup_Node0 N_110BrokerInformationLookup_Node0 -- No --> E_110BrokerInformationLookup
broker, otherwise uses cargo broker"]:::main N_110BrokerInformationLookup_Node0 -- Yes --> N_110BrokerInformationLookup_Node0_action N_110BrokerInformationLookup_Node0_action --> E_110BrokerInformationLookup S_110BrokerInformationLookup --> N_110BrokerInformationLookup_Node0 N_110BrokerInformationLookup_Node0 -- No --> E_110BrokerInformationLookup
File: GCX016.cbl
GIVEN:
Broker information lookup is required
WHEN:
Payer of freight broker is found
THEN:
The system uses payer of freight broker, otherwise uses cargo broker
β Consolidated Acceptance Criteria
- The system performs broker lookup using broker identification keys → the system retrieves broker contact information and sets broker found status flags
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_110BrokerInformationLookup(["Start Step"])
E_110BrokerInformationLookup(["End Step"])
N_110BrokerInformationLookup_Node0{"The system performs broker lookup
using broker identification keys"}:::decision N_110BrokerInformationLookup_Node0_action["The system retrieves broker contact
information and sets broker found
status flags"]:::main N_110BrokerInformationLookup_Node0 -- Yes --> N_110BrokerInformationLookup_Node0_action N_110BrokerInformationLookup_Node0_action --> E_110BrokerInformationLookup S_110BrokerInformationLookup --> N_110BrokerInformationLookup_Node0 N_110BrokerInformationLookup_Node0 -- No --> E_110BrokerInformationLookup
using broker identification keys"}:::decision N_110BrokerInformationLookup_Node0_action["The system retrieves broker contact
information and sets broker found
status flags"]:::main N_110BrokerInformationLookup_Node0 -- Yes --> N_110BrokerInformationLookup_Node0_action N_110BrokerInformationLookup_Node0_action --> E_110BrokerInformationLookup S_110BrokerInformationLookup --> N_110BrokerInformationLookup_Node0 N_110BrokerInformationLookup_Node0 -- No --> E_110BrokerInformationLookup
File: GCX016.cbl
GIVEN:
The disposition code is configured for broker notification
WHEN:
The system performs broker lookup using broker identification keys
THEN:
- The system retrieves broker contact information
- Sets broker found status flags
β Consolidated Acceptance Criteria
- Broker configuration is evaluated → the system uses internet notification if broker is configured for internet, otherwise uses standard Merlin messaging
- Broker notification is generated → the system sends quantity mismatch notifications to brokers with disposition code descriptions
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_111EmailvsMerlinRouting(["Start Step"])
E_111EmailvsMerlinRouting(["End Step"])
N_111EmailvsMerlinRouting_Node0{"Broker configuration is evaluated"}:::decision
N_111EmailvsMerlinRouting_Node0_action["The system uses internet
notification if broker is configured
for internet, otherwise uses
standard Merlin messaging"]:::main N_111EmailvsMerlinRouting_Node0 -- Yes --> N_111EmailvsMerlinRouting_Node0_action N_111EmailvsMerlinRouting_Node0_action --> E_111EmailvsMerlinRouting S_111EmailvsMerlinRouting --> N_111EmailvsMerlinRouting_Node0 N_111EmailvsMerlinRouting_Node1{"Broker notification is generated"}:::decision N_111EmailvsMerlinRouting_Node1_action["The system sends quantity mismatch
notifications to brokers with
disposition code descriptions"]:::main N_111EmailvsMerlinRouting_Node1 -- Yes --> N_111EmailvsMerlinRouting_Node1_action N_111EmailvsMerlinRouting_Node1_action --> E_111EmailvsMerlinRouting N_111EmailvsMerlinRouting_Node0 -- No --> N_111EmailvsMerlinRouting_Node1 N_111EmailvsMerlinRouting_Node1 -- No --> E_111EmailvsMerlinRouting
notification if broker is configured
for internet, otherwise uses
standard Merlin messaging"]:::main N_111EmailvsMerlinRouting_Node0 -- Yes --> N_111EmailvsMerlinRouting_Node0_action N_111EmailvsMerlinRouting_Node0_action --> E_111EmailvsMerlinRouting S_111EmailvsMerlinRouting --> N_111EmailvsMerlinRouting_Node0 N_111EmailvsMerlinRouting_Node1{"Broker notification is generated"}:::decision N_111EmailvsMerlinRouting_Node1_action["The system sends quantity mismatch
notifications to brokers with
disposition code descriptions"]:::main N_111EmailvsMerlinRouting_Node1 -- Yes --> N_111EmailvsMerlinRouting_Node1_action N_111EmailvsMerlinRouting_Node1_action --> E_111EmailvsMerlinRouting N_111EmailvsMerlinRouting_Node0 -- No --> N_111EmailvsMerlinRouting_Node1 N_111EmailvsMerlinRouting_Node1 -- No --> E_111EmailvsMerlinRouting
File: GCX016.cbl
GIVEN:
Broker notification is required
WHEN:
Broker configuration is evaluated
THEN:
The system uses internet notification if broker is configured for internet, otherwise uses standard Merlin messaging
File: GCX016.cbl
GIVEN:
Quantity processing results in mismatch
WHEN:
Broker notification is generated
THEN:
The system sends quantity mismatch notifications to brokers with disposition code descriptions
β Consolidated Acceptance Criteria
- If broker notification preferences and available contact methods → the system selects either email or Merlin messaging as the notification delivery method
- The system checks email routing preferences in routing tables → the system routes via internet email if preference available, otherwise uses traditional Merlin routing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_111EmailvsMerlinRouting(["Start Step"])
E_111EmailvsMerlinRouting(["End Step"])
N_111EmailvsMerlinRouting_Node0{"The system evaluates broker
notification preferences and
available contact methods"}:::decision N_111EmailvsMerlinRouting_Node0_action["The system selects either email or
Merlin messaging as the notification
delivery method"]:::main N_111EmailvsMerlinRouting_Node0 -- Yes --> N_111EmailvsMerlinRouting_Node0_action N_111EmailvsMerlinRouting_Node0_action --> E_111EmailvsMerlinRouting S_111EmailvsMerlinRouting --> N_111EmailvsMerlinRouting_Node0 N_111EmailvsMerlinRouting_Node1{"The system checks email routing
preferences in routing tables"}:::decision N_111EmailvsMerlinRouting_Node1_action["The system routes via internet
email if preference available,
otherwise uses traditional Merlin
routing"]:::main N_111EmailvsMerlinRouting_Node1 -- Yes --> N_111EmailvsMerlinRouting_Node1_action N_111EmailvsMerlinRouting_Node1_action --> E_111EmailvsMerlinRouting N_111EmailvsMerlinRouting_Node0 -- No --> N_111EmailvsMerlinRouting_Node1 N_111EmailvsMerlinRouting_Node1 -- No --> E_111EmailvsMerlinRouting
notification preferences and
available contact methods"}:::decision N_111EmailvsMerlinRouting_Node0_action["The system selects either email or
Merlin messaging as the notification
delivery method"]:::main N_111EmailvsMerlinRouting_Node0 -- Yes --> N_111EmailvsMerlinRouting_Node0_action N_111EmailvsMerlinRouting_Node0_action --> E_111EmailvsMerlinRouting S_111EmailvsMerlinRouting --> N_111EmailvsMerlinRouting_Node0 N_111EmailvsMerlinRouting_Node1{"The system checks email routing
preferences in routing tables"}:::decision N_111EmailvsMerlinRouting_Node1_action["The system routes via internet
email if preference available,
otherwise uses traditional Merlin
routing"]:::main N_111EmailvsMerlinRouting_Node1 -- Yes --> N_111EmailvsMerlinRouting_Node1_action N_111EmailvsMerlinRouting_Node1_action --> E_111EmailvsMerlinRouting N_111EmailvsMerlinRouting_Node0 -- No --> N_111EmailvsMerlinRouting_Node1 N_111EmailvsMerlinRouting_Node1 -- No --> E_111EmailvsMerlinRouting
File: GCX016.cbl
GIVEN:
Broker contact information has been retrieved successfully
WHEN:
- The system evaluates broker notification preferences
- Available contact methods
THEN:
The system selects either email or Merlin messaging as the notification delivery method
File: GCX016.cbl
GIVEN:
A CIH hold notification message has been prepared for the payer of freight
WHEN:
The system checks email routing preferences in routing tables
THEN:
The system routes via internet email if preference available, otherwise uses traditional Merlin routing
β Consolidated Acceptance Criteria
- The system checks the disposition code configuration in the broker notification table → the system determines if the disposition code is configured for broker notification and sets appropriate processing flags
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_112BrokerDispositionCodeValidation(["Start Step"])
E_112BrokerDispositionCodeValidation(["End Step"])
N_112BrokerDispositionCodeValidation_Node0{"The system checks the disposition
code configuration in the broker
notification table"}:::decision N_112BrokerDispositionCodeValidation_Node0_action["The system determines if the
disposition code is configured for
broker notification and sets
appropriate processing flags"]:::main N_112BrokerDispositionCodeValidation_Node0 -- Yes --> N_112BrokerDispositionCodeValidation_Node0_action N_112BrokerDispositionCodeValidation_Node0_action --> E_112BrokerDispositionCodeValidation S_112BrokerDispositionCodeValidation --> N_112BrokerDispositionCodeValidation_Node0 N_112BrokerDispositionCodeValidation_Node0 -- No --> E_112BrokerDispositionCodeValidation
code configuration in the broker
notification table"}:::decision N_112BrokerDispositionCodeValidation_Node0_action["The system determines if the
disposition code is configured for
broker notification and sets
appropriate processing flags"]:::main N_112BrokerDispositionCodeValidation_Node0 -- Yes --> N_112BrokerDispositionCodeValidation_Node0_action N_112BrokerDispositionCodeValidation_Node0_action --> E_112BrokerDispositionCodeValidation S_112BrokerDispositionCodeValidation --> N_112BrokerDispositionCodeValidation_Node0 N_112BrokerDispositionCodeValidation_Node0 -- No --> E_112BrokerDispositionCodeValidation
File: GCX016.cbl
GIVEN:
A CIH hold code has been detected for cargo processing
WHEN:
The system checks the disposition code configuration in the broker notification table
THEN:
- The system determines if the disposition code is configured for broker notification
- Sets appropriate processing flags
β Consolidated Acceptance Criteria
- The system formats the email subject line → the system creates a subject line containing cargo identification, hold type, and relevant disposition code information
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_119SubjectLineFormatting(["Start Step"])
E_119SubjectLineFormatting(["End Step"])
N_119SubjectLineFormatting_Node0{"The system formats the email
subject line"}:::decision N_119SubjectLineFormatting_Node0_action["The system creates a subject line
containing cargo identification,
hold type, and relevant disposition
code information"]:::main N_119SubjectLineFormatting_Node0 -- Yes --> N_119SubjectLineFormatting_Node0_action N_119SubjectLineFormatting_Node0_action --> E_119SubjectLineFormatting S_119SubjectLineFormatting --> N_119SubjectLineFormatting_Node0 N_119SubjectLineFormatting_Node0 -- No --> E_119SubjectLineFormatting
subject line"}:::decision N_119SubjectLineFormatting_Node0_action["The system creates a subject line
containing cargo identification,
hold type, and relevant disposition
code information"]:::main N_119SubjectLineFormatting_Node0 -- Yes --> N_119SubjectLineFormatting_Node0_action N_119SubjectLineFormatting_Node0_action --> E_119SubjectLineFormatting S_119SubjectLineFormatting --> N_119SubjectLineFormatting_Node0 N_119SubjectLineFormatting_Node0 -- No --> E_119SubjectLineFormatting
File: GCX016.cbl
GIVEN:
Email keywords and routing parameters have been configured for CIH hold notification
WHEN:
The system formats the email subject line
THEN:
The system creates a subject line containing cargo identification, hold type, and relevant disposition code information
β Consolidated Acceptance Criteria
- Logging is performed AND disposition code is not 54 or 55 → the system logs cargo processing information via GCT1051E transaction
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_126CargoInformationLogging(["Start Step"])
E_126CargoInformationLogging(["End Step"])
N_126CargoInformationLogging_Node0{"Logging is performed AND
disposition code is not 54 or 55"}:::decision N_126CargoInformationLogging_Node0_action["The system logs cargo processing
information via GCT1051E transaction"]:::main N_126CargoInformationLogging_Node0 -- Yes --> N_126CargoInformationLogging_Node0_action N_126CargoInformationLogging_Node0_action --> E_126CargoInformationLogging S_126CargoInformationLogging --> N_126CargoInformationLogging_Node0 N_126CargoInformationLogging_Node0 -- No --> E_126CargoInformationLogging
disposition code is not 54 or 55"}:::decision N_126CargoInformationLogging_Node0_action["The system logs cargo processing
information via GCT1051E transaction"]:::main N_126CargoInformationLogging_Node0 -- Yes --> N_126CargoInformationLogging_Node0_action N_126CargoInformationLogging_Node0_action --> E_126CargoInformationLogging S_126CargoInformationLogging --> N_126CargoInformationLogging_Node0 N_126CargoInformationLogging_Node0 -- No --> E_126CargoInformationLogging
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
Cargo processing is completed
WHEN:
- Logging is performed
- Disposition code is not 54 or 55
THEN:
The system logs cargo processing information via GCT1051E transaction
β Consolidated Acceptance Criteria
- The system performs audit logging for the notification transaction → the system records cargo identification, broker information, notification method, and timestamp in the audit log
- The system completes processing of disposition codes 88, 89, or 90 → cargo information and processing details are logged for audit trail and compliance tracking
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_126CargoInformationLogging(["Start Step"])
E_126CargoInformationLogging(["End Step"])
N_126CargoInformationLogging_Node0{"The system performs audit logging
for the notification transaction"}:::decision N_126CargoInformationLogging_Node0_action["The system records cargo
identification, broker information,
notification method, and timestamp
in the audit log"]:::main N_126CargoInformationLogging_Node0 -- Yes --> N_126CargoInformationLogging_Node0_action N_126CargoInformationLogging_Node0_action --> E_126CargoInformationLogging S_126CargoInformationLogging --> N_126CargoInformationLogging_Node0 N_126CargoInformationLogging_Node1{"The system completes processing of
disposition codes 88, 89, or 90"}:::decision N_126CargoInformationLogging_Node1_action["Cargo information and processing
details are logged for audit trail
and compliance tracking"]:::main N_126CargoInformationLogging_Node1 -- Yes --> N_126CargoInformationLogging_Node1_action N_126CargoInformationLogging_Node1_action --> E_126CargoInformationLogging N_126CargoInformationLogging_Node0 -- No --> N_126CargoInformationLogging_Node1 N_126CargoInformationLogging_Node1 -- No --> E_126CargoInformationLogging
for the notification transaction"}:::decision N_126CargoInformationLogging_Node0_action["The system records cargo
identification, broker information,
notification method, and timestamp
in the audit log"]:::main N_126CargoInformationLogging_Node0 -- Yes --> N_126CargoInformationLogging_Node0_action N_126CargoInformationLogging_Node0_action --> E_126CargoInformationLogging S_126CargoInformationLogging --> N_126CargoInformationLogging_Node0 N_126CargoInformationLogging_Node1{"The system completes processing of
disposition codes 88, 89, or 90"}:::decision N_126CargoInformationLogging_Node1_action["Cargo information and processing
details are logged for audit trail
and compliance tracking"]:::main N_126CargoInformationLogging_Node1 -- Yes --> N_126CargoInformationLogging_Node1_action N_126CargoInformationLogging_Node1_action --> E_126CargoInformationLogging N_126CargoInformationLogging_Node0 -- No --> N_126CargoInformationLogging_Node1 N_126CargoInformationLogging_Node1 -- No --> E_126CargoInformationLogging
File: GCX016.cbl
GIVEN:
The CIH hold notification has been successfully sent via email or Merlin
WHEN:
The system performs audit logging for the notification transaction
THEN:
The system records cargo identification, broker information, notification method, and timestamp in the audit log
File: GCX016.cbl
GIVEN:
New customs requirements have been processed
WHEN:
The system completes processing of disposition codes 88, 89, or 90
THEN:
- Cargo information
- Processing details are logged for audit trail
- Compliance tracking
β Consolidated Acceptance Criteria
- The system checks for message availability AND the completion code is not OK AND the reason code equals 2033 → the system sets message not available status
- The completion code is OK AND the message backout count is not equal to zero → the system sets skip message found status and does not process the message
- The completion code is OK AND the message backout count equals zero → the system sets good message found status and proceeds with processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_138IMSQueueReading(["Start Step"])
E_138IMSQueueReading(["End Step"])
N_138IMSQueueReading_Node0{"The system checks for message
availability AND the completion code
is not OK AND the reason code equals
2033"}:::decision N_138IMSQueueReading_Node0_action["The system sets message not
available status"]:::main N_138IMSQueueReading_Node0 -- Yes --> N_138IMSQueueReading_Node0_action N_138IMSQueueReading_Node0_action --> E_138IMSQueueReading S_138IMSQueueReading --> N_138IMSQueueReading_Node0 N_138IMSQueueReading_Node1{"The completion code is OK AND the
message backout count is not equal
to zero"}:::decision N_138IMSQueueReading_Node1_action["The system sets skip message found
status and does not process the
message"]:::main N_138IMSQueueReading_Node1 -- Yes --> N_138IMSQueueReading_Node1_action N_138IMSQueueReading_Node1_action --> E_138IMSQueueReading N_138IMSQueueReading_Node0 -- No --> N_138IMSQueueReading_Node1 N_138IMSQueueReading_Node2{"The completion code is OK AND the
message backout count equals zero"}:::decision N_138IMSQueueReading_Node2_action["The system sets good message found
status and proceeds with processing"]:::main N_138IMSQueueReading_Node2 -- Yes --> N_138IMSQueueReading_Node2_action N_138IMSQueueReading_Node2_action --> E_138IMSQueueReading N_138IMSQueueReading_Node1 -- No --> N_138IMSQueueReading_Node2 N_138IMSQueueReading_Node2 -- No --> E_138IMSQueueReading
availability AND the completion code
is not OK AND the reason code equals
2033"}:::decision N_138IMSQueueReading_Node0_action["The system sets message not
available status"]:::main N_138IMSQueueReading_Node0 -- Yes --> N_138IMSQueueReading_Node0_action N_138IMSQueueReading_Node0_action --> E_138IMSQueueReading S_138IMSQueueReading --> N_138IMSQueueReading_Node0 N_138IMSQueueReading_Node1{"The completion code is OK AND the
message backout count is not equal
to zero"}:::decision N_138IMSQueueReading_Node1_action["The system sets skip message found
status and does not process the
message"]:::main N_138IMSQueueReading_Node1 -- Yes --> N_138IMSQueueReading_Node1_action N_138IMSQueueReading_Node1_action --> E_138IMSQueueReading N_138IMSQueueReading_Node0 -- No --> N_138IMSQueueReading_Node1 N_138IMSQueueReading_Node2{"The completion code is OK AND the
message backout count equals zero"}:::decision N_138IMSQueueReading_Node2_action["The system sets good message found
status and proceeds with processing"]:::main N_138IMSQueueReading_Node2 -- Yes --> N_138IMSQueueReading_Node2_action N_138IMSQueueReading_Node2_action --> E_138IMSQueueReading N_138IMSQueueReading_Node1 -- No --> N_138IMSQueueReading_Node2 N_138IMSQueueReading_Node2 -- No --> E_138IMSQueueReading
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
A message queue connection is established
WHEN:
- The system checks for message availability
- The completion code is not ok
- The reason code equals 2033
THEN:
The system sets message not available status
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
A message is retrieved from the queue
WHEN:
- The completion code is ok
- The message backout count is not equal to zero
THEN:
- The system sets skip message found status
- Does not process the message
File: GCX016.cbl
GIVEN:
A message is retrieved from the queue
WHEN:
- The completion code is ok
- The message backout count equals zero
THEN:
- The system sets good message found status
- Proceeds with processing
β Consolidated Acceptance Criteria
- KCSM integration requirements are evaluated → the system determines if KCSM disposition code processing and EDI message copying is required
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_174KCSMDispositionCodeProcessing(["Start Step"])
E_174KCSMDispositionCodeProcessing(["End Step"])
N_174KCSMDispositionCodeProcessing_Node0{"KCSM integration requirements are
evaluated"}:::decision N_174KCSMDispositionCodeProcessing_Node0_action["The system determines if KCSM
disposition code processing and EDI
message copying is required"]:::main N_174KCSMDispositionCodeProcessing_Node0 -- Yes --> N_174KCSMDispositionCodeProcessing_Node0_action N_174KCSMDispositionCodeProcessing_Node0_action --> E_174KCSMDispositionCodeProcessing S_174KCSMDispositionCodeProcessing --> N_174KCSMDispositionCodeProcessing_Node0 N_174KCSMDispositionCodeProcessing_Node0 -- No --> E_174KCSMDispositionCodeProcessing
evaluated"}:::decision N_174KCSMDispositionCodeProcessing_Node0_action["The system determines if KCSM
disposition code processing and EDI
message copying is required"]:::main N_174KCSMDispositionCodeProcessing_Node0 -- Yes --> N_174KCSMDispositionCodeProcessing_Node0_action N_174KCSMDispositionCodeProcessing_Node0_action --> E_174KCSMDispositionCodeProcessing S_174KCSMDispositionCodeProcessing --> N_174KCSMDispositionCodeProcessing_Node0 N_174KCSMDispositionCodeProcessing_Node0 -- No --> E_174KCSMDispositionCodeProcessing
File: GCX016.cbl
GIVEN:
Disposition code processing is completed
WHEN:
KCSM integration requirements are evaluated
THEN:
- The system determines if kcsm disposition code processing
- Edi message copying is required
β Consolidated Acceptance Criteria
- EDI message copying is performed → the system copies the EDI 350 message structure for KCSM transaction processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_175EDI350MessageCopyingforKCSM(["Start Step"])
E_175EDI350MessageCopyingforKCSM(["End Step"])
N_175EDI350MessageCopyingforKCSM_Node0{"EDI message copying is performed"}:::decision
N_175EDI350MessageCopyingforKCSM_Node0_action["The system copies the EDI 350
message structure for KCSM
transaction processing"]:::main N_175EDI350MessageCopyingforKCSM_Node0 -- Yes --> N_175EDI350MessageCopyingforKCSM_Node0_action N_175EDI350MessageCopyingforKCSM_Node0_action --> E_175EDI350MessageCopyingforKCSM S_175EDI350MessageCopyingforKCSM --> N_175EDI350MessageCopyingforKCSM_Node0 N_175EDI350MessageCopyingforKCSM_Node0 -- No --> E_175EDI350MessageCopyingforKCSM
message structure for KCSM
transaction processing"]:::main N_175EDI350MessageCopyingforKCSM_Node0 -- Yes --> N_175EDI350MessageCopyingforKCSM_Node0_action N_175EDI350MessageCopyingforKCSM_Node0_action --> E_175EDI350MessageCopyingforKCSM S_175EDI350MessageCopyingforKCSM --> N_175EDI350MessageCopyingforKCSM_Node0 N_175EDI350MessageCopyingforKCSM_Node0 -- No --> E_175EDI350MessageCopyingforKCSM
File: GCX016.cbl
GIVEN:
KCSM integration is required
WHEN:
EDI message copying is performed
THEN:
The system copies the EDI 350 message structure for KCSM transaction processing
β Consolidated Acceptance Criteria
- The system processes the K1 segment for train operations → the system extracts the remarks from K1 segment AND associates them with the current train record AND logs the comments with train identification information
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_178K1RemarksProcessingforTrainOperations(["Start Step"])
E_178K1RemarksProcessingforTrainOperations(["End Step"])
N_178K1RemarksProcessingforTrainOperations_Node0{"The system processes the K1 segment
for train operations"}:::decision N_178K1RemarksProcessingforTrainOperations_Node0_action["The system extracts the remarks
from K1 segment AND associates them
with the current train record AND
logs the comments with train
identification information"]:::main N_178K1RemarksProcessingforTrainOperations_Node0 -- Yes --> N_178K1RemarksProcessingforTrainOperations_Node0_action N_178K1RemarksProcessingforTrainOperations_Node0_action --> E_178K1RemarksProcessingforTrainOperations S_178K1RemarksProcessingforTrainOperations --> N_178K1RemarksProcessingforTrainOperations_Node0 N_178K1RemarksProcessingforTrainOperations_Node0 -- No --> E_178K1RemarksProcessingforTrainOperations
for train operations"}:::decision N_178K1RemarksProcessingforTrainOperations_Node0_action["The system extracts the remarks
from K1 segment AND associates them
with the current train record AND
logs the comments with train
identification information"]:::main N_178K1RemarksProcessingforTrainOperations_Node0 -- Yes --> N_178K1RemarksProcessingforTrainOperations_Node0_action N_178K1RemarksProcessingforTrainOperations_Node0_action --> E_178K1RemarksProcessingforTrainOperations S_178K1RemarksProcessingforTrainOperations --> N_178K1RemarksProcessingforTrainOperations_Node0 N_178K1RemarksProcessingforTrainOperations_Node0 -- No --> E_178K1RemarksProcessingforTrainOperations
File: GCX016.cbl
GIVEN:
A K1 segment contains remarks AND the processing context is train-level
WHEN:
The system processes the K1 segment for train operations
THEN:
- The system extracts the remarks from k1 segment
- Associates them with the current train record
- Logs the comments with train identification information
β Consolidated Acceptance Criteria
- The system processes the K1 segment for cargo operations → the system extracts the remarks from K1 segment AND stores the remarks in the associated cargo record AND makes the remarks available for cargo-related messaging
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_179K1RemarksProcessingforCargoOperations(["Start Step"])
E_179K1RemarksProcessingforCargoOperations(["End Step"])
N_179K1RemarksProcessingforCargoOperations_Node0{"The system processes the K1 segment
for cargo operations"}:::decision N_179K1RemarksProcessingforCargoOperations_Node0_action["The system extracts the remarks
from K1 segment AND stores the
remarks in the associated cargo
record AND makes the remarks
available for cargo-related
messaging"]:::main N_179K1RemarksProcessingforCargoOperations_Node0 -- Yes --> N_179K1RemarksProcessingforCargoOperations_Node0_action N_179K1RemarksProcessingforCargoOperations_Node0_action --> E_179K1RemarksProcessingforCargoOperations S_179K1RemarksProcessingforCargoOperations --> N_179K1RemarksProcessingforCargoOperations_Node0 N_179K1RemarksProcessingforCargoOperations_Node0 -- No --> E_179K1RemarksProcessingforCargoOperations
for cargo operations"}:::decision N_179K1RemarksProcessingforCargoOperations_Node0_action["The system extracts the remarks
from K1 segment AND stores the
remarks in the associated cargo
record AND makes the remarks
available for cargo-related
messaging"]:::main N_179K1RemarksProcessingforCargoOperations_Node0 -- Yes --> N_179K1RemarksProcessingforCargoOperations_Node0_action N_179K1RemarksProcessingforCargoOperations_Node0_action --> E_179K1RemarksProcessingforCargoOperations S_179K1RemarksProcessingforCargoOperations --> N_179K1RemarksProcessingforCargoOperations_Node0 N_179K1RemarksProcessingforCargoOperations_Node0 -- No --> E_179K1RemarksProcessingforCargoOperations
File: GCX016.cbl
GIVEN:
A K1 segment contains remarks AND the processing context is cargo-level
WHEN:
The system processes the K1 segment for cargo operations
THEN:
- The system extracts the remarks from k1 segment
- Stores the remarks in the associated cargo record
- Makes the remarks available for cargo-related messaging
β Consolidated Acceptance Criteria
- Exact match search using car ID and US CCN key fails → the system performs broader search criteria and sets cargo found or not found flags based on search results
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_203CargoRecordRetrievalbyCarIndex(["Start Step"])
E_203CargoRecordRetrievalbyCarIndex(["End Step"])
N_203CargoRecordRetrievalbyCarIndex_Node0{"Exact match search using car ID and
US CCN key fails"}:::decision N_203CargoRecordRetrievalbyCarIndex_Node0_action["The system performs broader search
criteria and sets cargo found or not
found flags based on search results"]:::main N_203CargoRecordRetrievalbyCarIndex_Node0 -- Yes --> N_203CargoRecordRetrievalbyCarIndex_Node0_action N_203CargoRecordRetrievalbyCarIndex_Node0_action --> E_203CargoRecordRetrievalbyCarIndex S_203CargoRecordRetrievalbyCarIndex --> N_203CargoRecordRetrievalbyCarIndex_Node0 N_203CargoRecordRetrievalbyCarIndex_Node0 -- No --> E_203CargoRecordRetrievalbyCarIndex
US CCN key fails"}:::decision N_203CargoRecordRetrievalbyCarIndex_Node0_action["The system performs broader search
criteria and sets cargo found or not
found flags based on search results"]:::main N_203CargoRecordRetrievalbyCarIndex_Node0 -- Yes --> N_203CargoRecordRetrievalbyCarIndex_Node0_action N_203CargoRecordRetrievalbyCarIndex_Node0_action --> E_203CargoRecordRetrievalbyCarIndex S_203CargoRecordRetrievalbyCarIndex --> N_203CargoRecordRetrievalbyCarIndex_Node0 N_203CargoRecordRetrievalbyCarIndex_Node0 -- No --> E_203CargoRecordRetrievalbyCarIndex
File: GCX016.cbl
GIVEN:
Cargo record retrieval is required
WHEN:
- Exact match search using car id
- Us ccn key fails
THEN:
- The system performs broader search criteria
- Sets cargo found or not found flags based on search results
β Consolidated Acceptance Criteria
- All disposition code processing is complete → the system updates the cargo S09 status segments with the modified status array information
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_217StatusArrayPersistence(["Start Step"])
E_217StatusArrayPersistence(["End Step"])
N_217StatusArrayPersistence_Node0{"All disposition code processing is
complete"}:::decision N_217StatusArrayPersistence_Node0_action["The system updates the cargo S09
status segments with the modified
status array information"]:::main N_217StatusArrayPersistence_Node0 -- Yes --> N_217StatusArrayPersistence_Node0_action N_217StatusArrayPersistence_Node0_action --> E_217StatusArrayPersistence S_217StatusArrayPersistence --> N_217StatusArrayPersistence_Node0 N_217StatusArrayPersistence_Node0 -- No --> E_217StatusArrayPersistence
complete"}:::decision N_217StatusArrayPersistence_Node0_action["The system updates the cargo S09
status segments with the modified
status array information"]:::main N_217StatusArrayPersistence_Node0 -- Yes --> N_217StatusArrayPersistence_Node0_action N_217StatusArrayPersistence_Node0_action --> E_217StatusArrayPersistence S_217StatusArrayPersistence --> N_217StatusArrayPersistence_Node0 N_217StatusArrayPersistence_Node0 -- No --> E_217StatusArrayPersistence
File: GCX016.cbl
GIVEN:
The status array has been modified with new disposition codes
WHEN:
All disposition code processing is complete
THEN:
The system updates the cargo S09 status segments with the modified status array information
β Consolidated Acceptance Criteria
- The system performs table lookup → the system retrieves disposition code details and sets found or not found flags with corresponding Merlin messages
- The disposition type is ARL (Auto Release) → the system generates auto release message and processes the release automatically
- The disposition type is MRL (Manual Release) → the system processes manual release request and clears destination index
- The disposition type is DC Removal → the system removes existing disposition codes from the status array
- The disposition type is DC Hold/Release → the system adds hold or release status with location and quantity information to the cargo status
- Counterpart disposition codes exist in the status array → the system removes counterpart codes before adding the new disposition code
- The disposition code is A1 or A3 → the system triggers FDA notification processing
- The system looks up the disposition code in the GCSTBRT disposition code table → the system determines if the disposition code is valid and retrieves associated processing rules
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_218DispositionCodeTableLookup(["Start Step"])
E_218DispositionCodeTableLookup(["End Step"])
N_218DispositionCodeTableLookup_Node0{"The system performs table lookup"}:::decision
N_218DispositionCodeTableLookup_Node0_action["The system retrieves disposition
code details and sets found or not
found flags with corresponding
Merlin messages"]:::main N_218DispositionCodeTableLookup_Node0 -- Yes --> N_218DispositionCodeTableLookup_Node0_action N_218DispositionCodeTableLookup_Node0_action --> E_218DispositionCodeTableLookup S_218DispositionCodeTableLookup --> N_218DispositionCodeTableLookup_Node0 N_218DispositionCodeTableLookup_Node1{"The disposition type is ARL Auto
Release"}:::decision N_218DispositionCodeTableLookup_Node1_action["The system generates auto release
message and processes the release
automatically"]:::main N_218DispositionCodeTableLookup_Node1 -- Yes --> N_218DispositionCodeTableLookup_Node1_action N_218DispositionCodeTableLookup_Node1_action --> E_218DispositionCodeTableLookup N_218DispositionCodeTableLookup_Node0 -- No --> N_218DispositionCodeTableLookup_Node1 N_218DispositionCodeTableLookup_Node2{"The disposition type is MRL Manual
Release"}:::decision N_218DispositionCodeTableLookup_Node2_action["The system processes manual release
request and clears destination index"]:::main N_218DispositionCodeTableLookup_Node2 -- Yes --> N_218DispositionCodeTableLookup_Node2_action N_218DispositionCodeTableLookup_Node2_action --> E_218DispositionCodeTableLookup N_218DispositionCodeTableLookup_Node1 -- No --> N_218DispositionCodeTableLookup_Node2 N_218DispositionCodeTableLookup_Node3{"The disposition type is DC Removal"}:::decision N_218DispositionCodeTableLookup_Node3_action["The system removes existing
disposition codes from the status
array"]:::main N_218DispositionCodeTableLookup_Node3 -- Yes --> N_218DispositionCodeTableLookup_Node3_action N_218DispositionCodeTableLookup_Node3_action --> E_218DispositionCodeTableLookup N_218DispositionCodeTableLookup_Node2 -- No --> N_218DispositionCodeTableLookup_Node3 N_218DispositionCodeTableLookup_Node4{"The disposition type is DC
HoldRelease"}:::decision N_218DispositionCodeTableLookup_Node4_action["The system adds hold or release
status with location and quantity
information to the cargo status"]:::main N_218DispositionCodeTableLookup_Node4 -- Yes --> N_218DispositionCodeTableLookup_Node4_action N_218DispositionCodeTableLookup_Node4_action --> E_218DispositionCodeTableLookup N_218DispositionCodeTableLookup_Node3 -- No --> N_218DispositionCodeTableLookup_Node4 N_218DispositionCodeTableLookup_Node5{"Counterpart disposition codes exist
in the status array"}:::decision N_218DispositionCodeTableLookup_Node5_action["The system removes counterpart
codes before adding the new
disposition code"]:::main N_218DispositionCodeTableLookup_Node5 -- Yes --> N_218DispositionCodeTableLookup_Node5_action N_218DispositionCodeTableLookup_Node5_action --> E_218DispositionCodeTableLookup N_218DispositionCodeTableLookup_Node4 -- No --> N_218DispositionCodeTableLookup_Node5 N_218DispositionCodeTableLookup_Node6{"The disposition code is A1 or A3"}:::decision N_218DispositionCodeTableLookup_Node6_action["The system triggers FDA
notification processing"]:::main N_218DispositionCodeTableLookup_Node6 -- Yes --> N_218DispositionCodeTableLookup_Node6_action N_218DispositionCodeTableLookup_Node6_action --> E_218DispositionCodeTableLookup N_218DispositionCodeTableLookup_Node5 -- No --> N_218DispositionCodeTableLookup_Node6 N_218DispositionCodeTableLookup_Node7{"The system looks up the disposition
code in the GCSTBRT disposition code
table"}:::decision N_218DispositionCodeTableLookup_Node7_action["The system determines if the
disposition code is valid and
retrieves associated processing
rules"]:::main N_218DispositionCodeTableLookup_Node7 -- Yes --> N_218DispositionCodeTableLookup_Node7_action N_218DispositionCodeTableLookup_Node7_action --> E_218DispositionCodeTableLookup N_218DispositionCodeTableLookup_Node6 -- No --> N_218DispositionCodeTableLookup_Node7 N_218DispositionCodeTableLookup_Node7 -- No --> E_218DispositionCodeTableLookup
code details and sets found or not
found flags with corresponding
Merlin messages"]:::main N_218DispositionCodeTableLookup_Node0 -- Yes --> N_218DispositionCodeTableLookup_Node0_action N_218DispositionCodeTableLookup_Node0_action --> E_218DispositionCodeTableLookup S_218DispositionCodeTableLookup --> N_218DispositionCodeTableLookup_Node0 N_218DispositionCodeTableLookup_Node1{"The disposition type is ARL Auto
Release"}:::decision N_218DispositionCodeTableLookup_Node1_action["The system generates auto release
message and processes the release
automatically"]:::main N_218DispositionCodeTableLookup_Node1 -- Yes --> N_218DispositionCodeTableLookup_Node1_action N_218DispositionCodeTableLookup_Node1_action --> E_218DispositionCodeTableLookup N_218DispositionCodeTableLookup_Node0 -- No --> N_218DispositionCodeTableLookup_Node1 N_218DispositionCodeTableLookup_Node2{"The disposition type is MRL Manual
Release"}:::decision N_218DispositionCodeTableLookup_Node2_action["The system processes manual release
request and clears destination index"]:::main N_218DispositionCodeTableLookup_Node2 -- Yes --> N_218DispositionCodeTableLookup_Node2_action N_218DispositionCodeTableLookup_Node2_action --> E_218DispositionCodeTableLookup N_218DispositionCodeTableLookup_Node1 -- No --> N_218DispositionCodeTableLookup_Node2 N_218DispositionCodeTableLookup_Node3{"The disposition type is DC Removal"}:::decision N_218DispositionCodeTableLookup_Node3_action["The system removes existing
disposition codes from the status
array"]:::main N_218DispositionCodeTableLookup_Node3 -- Yes --> N_218DispositionCodeTableLookup_Node3_action N_218DispositionCodeTableLookup_Node3_action --> E_218DispositionCodeTableLookup N_218DispositionCodeTableLookup_Node2 -- No --> N_218DispositionCodeTableLookup_Node3 N_218DispositionCodeTableLookup_Node4{"The disposition type is DC
HoldRelease"}:::decision N_218DispositionCodeTableLookup_Node4_action["The system adds hold or release
status with location and quantity
information to the cargo status"]:::main N_218DispositionCodeTableLookup_Node4 -- Yes --> N_218DispositionCodeTableLookup_Node4_action N_218DispositionCodeTableLookup_Node4_action --> E_218DispositionCodeTableLookup N_218DispositionCodeTableLookup_Node3 -- No --> N_218DispositionCodeTableLookup_Node4 N_218DispositionCodeTableLookup_Node5{"Counterpart disposition codes exist
in the status array"}:::decision N_218DispositionCodeTableLookup_Node5_action["The system removes counterpart
codes before adding the new
disposition code"]:::main N_218DispositionCodeTableLookup_Node5 -- Yes --> N_218DispositionCodeTableLookup_Node5_action N_218DispositionCodeTableLookup_Node5_action --> E_218DispositionCodeTableLookup N_218DispositionCodeTableLookup_Node4 -- No --> N_218DispositionCodeTableLookup_Node5 N_218DispositionCodeTableLookup_Node6{"The disposition code is A1 or A3"}:::decision N_218DispositionCodeTableLookup_Node6_action["The system triggers FDA
notification processing"]:::main N_218DispositionCodeTableLookup_Node6 -- Yes --> N_218DispositionCodeTableLookup_Node6_action N_218DispositionCodeTableLookup_Node6_action --> E_218DispositionCodeTableLookup N_218DispositionCodeTableLookup_Node5 -- No --> N_218DispositionCodeTableLookup_Node6 N_218DispositionCodeTableLookup_Node7{"The system looks up the disposition
code in the GCSTBRT disposition code
table"}:::decision N_218DispositionCodeTableLookup_Node7_action["The system determines if the
disposition code is valid and
retrieves associated processing
rules"]:::main N_218DispositionCodeTableLookup_Node7 -- Yes --> N_218DispositionCodeTableLookup_Node7_action N_218DispositionCodeTableLookup_Node7_action --> E_218DispositionCodeTableLookup N_218DispositionCodeTableLookup_Node6 -- No --> N_218DispositionCodeTableLookup_Node7 N_218DispositionCodeTableLookup_Node7 -- No --> E_218DispositionCodeTableLookup
File: GCX016.cbl
GIVEN:
A disposition code is received for processing
WHEN:
The system performs table lookup
THEN:
- The system retrieves disposition code details
- Sets found or not found flags with corresponding merlin messages
File: GCX016.cbl
GIVEN:
A disposition code is processed
WHEN:
The disposition type is ARL (Auto Release)
THEN:
- The system generates auto release message
- Processes the release automatically
File: GCX016.cbl
GIVEN:
A disposition code is processed
WHEN:
The disposition type is MRL (Manual Release)
THEN:
- The system processes manual release request
- Clears destination index
File: GCX016.cbl
GIVEN:
A disposition code with removal action is processed
WHEN:
The disposition type is DC Removal
THEN:
The system removes existing disposition codes from the status array
File: GCX016.cbl
GIVEN:
A disposition code for hold or release is processed
WHEN:
The disposition type is DC Hold/Release
THEN:
- The system adds hold or release status with location
- Quantity information to the cargo status
File: GCX016.cbl
GIVEN:
A new hold or release disposition code is being added
WHEN:
Counterpart disposition codes exist in the status array
THEN:
The system removes counterpart codes before adding the new disposition code
File: GCX016.cbl
GIVEN:
A disposition code is processed
WHEN:
The disposition code is A1 or A3
THEN:
The system triggers FDA notification processing
File: GCX016.cbl
GIVEN:
A disposition code from X4 segment needs to be processed for cargo
WHEN:
The system looks up the disposition code in the GCSTBRT disposition code table
THEN:
- The system determines if the disposition code is valid
- Retrieves associated processing rules
β Consolidated Acceptance Criteria
- The system performs disposition code table lookup → the system retrieves code properties and processing instructions from GCSTBRT table
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_218DispositionCodeTableLookup(["Start Step"])
E_218DispositionCodeTableLookup(["End Step"])
N_218DispositionCodeTableLookup_Node0{"The system performs disposition
code table lookup"}:::decision N_218DispositionCodeTableLookup_Node0_action["The system retrieves code
properties and processing
instructions from GCSTBRT table"]:::main N_218DispositionCodeTableLookup_Node0 -- Yes --> N_218DispositionCodeTableLookup_Node0_action N_218DispositionCodeTableLookup_Node0_action --> E_218DispositionCodeTableLookup S_218DispositionCodeTableLookup --> N_218DispositionCodeTableLookup_Node0 N_218DispositionCodeTableLookup_Node0 -- No --> E_218DispositionCodeTableLookup
code table lookup"}:::decision N_218DispositionCodeTableLookup_Node0_action["The system retrieves code
properties and processing
instructions from GCSTBRT table"]:::main N_218DispositionCodeTableLookup_Node0 -- Yes --> N_218DispositionCodeTableLookup_Node0_action N_218DispositionCodeTableLookup_Node0_action --> E_218DispositionCodeTableLookup S_218DispositionCodeTableLookup --> N_218DispositionCodeTableLookup_Node0 N_218DispositionCodeTableLookup_Node0 -- No --> E_218DispositionCodeTableLookup
File: GCX016.cbl
GIVEN:
An X4 segment contains disposition code 88, 89, or 90
WHEN:
The system performs disposition code table lookup
THEN:
- The system retrieves code properties
- Processing instructions from gcstbrt table
β Consolidated Acceptance Criteria
- The system processes a disposition code with counterpart removal requirements → the system removes all counterpart disposition codes from the status array before adding the new code
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_219CounterpartDispositionCodeRemoval(["Start Step"])
E_219CounterpartDispositionCodeRemoval(["End Step"])
N_219CounterpartDispositionCodeRemoval_Node0{"The system processes a disposition
code with counterpart removal
requirements"}:::decision N_219CounterpartDispositionCodeRemoval_Node0_action["The system removes all counterpart
disposition codes from the status
array before adding the new code"]:::main N_219CounterpartDispositionCodeRemoval_Node0 -- Yes --> N_219CounterpartDispositionCodeRemoval_Node0_action N_219CounterpartDispositionCodeRemoval_Node0_action --> E_219CounterpartDispositionCodeRemoval S_219CounterpartDispositionCodeRemoval --> N_219CounterpartDispositionCodeRemoval_Node0 N_219CounterpartDispositionCodeRemoval_Node0 -- No --> E_219CounterpartDispositionCodeRemoval
code with counterpart removal
requirements"}:::decision N_219CounterpartDispositionCodeRemoval_Node0_action["The system removes all counterpart
disposition codes from the status
array before adding the new code"]:::main N_219CounterpartDispositionCodeRemoval_Node0 -- Yes --> N_219CounterpartDispositionCodeRemoval_Node0_action N_219CounterpartDispositionCodeRemoval_Node0_action --> E_219CounterpartDispositionCodeRemoval S_219CounterpartDispositionCodeRemoval --> N_219CounterpartDispositionCodeRemoval_Node0 N_219CounterpartDispositionCodeRemoval_Node0 -- No --> E_219CounterpartDispositionCodeRemoval
File: GCX016.cbl
GIVEN:
A disposition code requires counterpart removal and the status array contains existing codes
WHEN:
The system processes a disposition code with counterpart removal requirements
THEN:
The system removes all counterpart disposition codes from the status array before adding the new code
β Consolidated Acceptance Criteria
- The system checks if the same disposition code already exists in the status array → the system skips adding the code if a duplicate is found, otherwise proceeds with adding the code
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_221DispositionCodeDuplicatePrevention(["Start Step"])
E_221DispositionCodeDuplicatePrevention(["End Step"])
N_221DispositionCodeDuplicatePrevention_Node0{"The system checks if the same
disposition code already exists in
the status array"}:::decision N_221DispositionCodeDuplicatePrevention_Node0_action["The system skips adding the code if
a duplicate is found, otherwise
proceeds with adding the code"]:::main N_221DispositionCodeDuplicatePrevention_Node0 -- Yes --> N_221DispositionCodeDuplicatePrevention_Node0_action N_221DispositionCodeDuplicatePrevention_Node0_action --> E_221DispositionCodeDuplicatePrevention S_221DispositionCodeDuplicatePrevention --> N_221DispositionCodeDuplicatePrevention_Node0 N_221DispositionCodeDuplicatePrevention_Node0 -- No --> E_221DispositionCodeDuplicatePrevention
disposition code already exists in
the status array"}:::decision N_221DispositionCodeDuplicatePrevention_Node0_action["The system skips adding the code if
a duplicate is found, otherwise
proceeds with adding the code"]:::main N_221DispositionCodeDuplicatePrevention_Node0 -- Yes --> N_221DispositionCodeDuplicatePrevention_Node0_action N_221DispositionCodeDuplicatePrevention_Node0_action --> E_221DispositionCodeDuplicatePrevention S_221DispositionCodeDuplicatePrevention --> N_221DispositionCodeDuplicatePrevention_Node0 N_221DispositionCodeDuplicatePrevention_Node0 -- No --> E_221DispositionCodeDuplicatePrevention
File: GCX016.cbl
GIVEN:
A disposition code is ready to be added to the status array
WHEN:
The system checks if the same disposition code already exists in the status array
THEN:
The system skips adding the code if a duplicate is found, otherwise proceeds with adding the code
β Consolidated Acceptance Criteria
- The system performs status array analysis → the system determines compliance status, required notifications, and subsequent processing steps
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_224StatusArrayAnalysis(["Start Step"])
E_224StatusArrayAnalysis(["End Step"])
N_224StatusArrayAnalysis_Node0{"The system performs status array
analysis"}:::decision N_224StatusArrayAnalysis_Node0_action["The system determines compliance
status, required notifications, and
subsequent processing steps"]:::main N_224StatusArrayAnalysis_Node0 -- Yes --> N_224StatusArrayAnalysis_Node0_action N_224StatusArrayAnalysis_Node0_action --> E_224StatusArrayAnalysis S_224StatusArrayAnalysis --> N_224StatusArrayAnalysis_Node0 N_224StatusArrayAnalysis_Node0 -- No --> E_224StatusArrayAnalysis
analysis"}:::decision N_224StatusArrayAnalysis_Node0_action["The system determines compliance
status, required notifications, and
subsequent processing steps"]:::main N_224StatusArrayAnalysis_Node0 -- Yes --> N_224StatusArrayAnalysis_Node0_action N_224StatusArrayAnalysis_Node0_action --> E_224StatusArrayAnalysis S_224StatusArrayAnalysis --> N_224StatusArrayAnalysis_Node0 N_224StatusArrayAnalysis_Node0 -- No --> E_224StatusArrayAnalysis
File: GCX016.cbl
GIVEN:
Cargo status array has been updated with new customs requirements
WHEN:
The system performs status array analysis
THEN:
The system determines compliance status, required notifications, and subsequent processing steps
β Consolidated Acceptance Criteria
- The system processes quantity changes for add or subtract actions → the system updates release quantities ensuring they do not go below zero for subtract actions
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_226ReleaseQuantityCalculation(["Start Step"])
E_226ReleaseQuantityCalculation(["End Step"])
N_226ReleaseQuantityCalculation_Node0{"The system processes quantity
changes for add or subtract actions"}:::decision N_226ReleaseQuantityCalculation_Node0_action["The system updates release
quantities ensuring they do not go
below zero for subtract actions"]:::main N_226ReleaseQuantityCalculation_Node0 -- Yes --> N_226ReleaseQuantityCalculation_Node0_action N_226ReleaseQuantityCalculation_Node0_action --> E_226ReleaseQuantityCalculation S_226ReleaseQuantityCalculation --> N_226ReleaseQuantityCalculation_Node0 N_226ReleaseQuantityCalculation_Node0 -- No --> E_226ReleaseQuantityCalculation
changes for add or subtract actions"}:::decision N_226ReleaseQuantityCalculation_Node0_action["The system updates release
quantities ensuring they do not go
below zero for subtract actions"]:::main N_226ReleaseQuantityCalculation_Node0 -- Yes --> N_226ReleaseQuantityCalculation_Node0_action N_226ReleaseQuantityCalculation_Node0_action --> E_226ReleaseQuantityCalculation S_226ReleaseQuantityCalculation --> N_226ReleaseQuantityCalculation_Node0 N_226ReleaseQuantityCalculation_Node0 -- No --> E_226ReleaseQuantityCalculation
File: GCX016.cbl
GIVEN:
A disposition code requires quantity impact and current release quantities exist
WHEN:
The system processes quantity changes for add or subtract actions
THEN:
The system updates release quantities ensuring they do not go below zero for subtract actions
β Consolidated Acceptance Criteria
- The disposition code is not found in GCSTBRT table → the system generates an error message and stops processing for this disposition code
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_228DispositionCodeErrorHandling(["Start Step"])
E_228DispositionCodeErrorHandling(["End Step"])
N_228DispositionCodeErrorHandling_Node0{"The disposition code is not found
in GCSTBRT table"}:::decision N_228DispositionCodeErrorHandling_Node0_action["The system generates an error
message and stops processing for
this disposition code"]:::main N_228DispositionCodeErrorHandling_Node0 -- Yes --> N_228DispositionCodeErrorHandling_Node0_action N_228DispositionCodeErrorHandling_Node0_action --> E_228DispositionCodeErrorHandling S_228DispositionCodeErrorHandling --> N_228DispositionCodeErrorHandling_Node0 N_228DispositionCodeErrorHandling_Node0 -- No --> E_228DispositionCodeErrorHandling
in GCSTBRT table"}:::decision N_228DispositionCodeErrorHandling_Node0_action["The system generates an error
message and stops processing for
this disposition code"]:::main N_228DispositionCodeErrorHandling_Node0 -- Yes --> N_228DispositionCodeErrorHandling_Node0_action N_228DispositionCodeErrorHandling_Node0_action --> E_228DispositionCodeErrorHandling S_228DispositionCodeErrorHandling --> N_228DispositionCodeErrorHandling_Node0 N_228DispositionCodeErrorHandling_Node0 -- No --> E_228DispositionCodeErrorHandling
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
A disposition code lookup has failed in the disposition code table
WHEN:
The disposition code is not found in GCSTBRT table
THEN:
- The system generates an error message
- Stops processing for this disposition code
β Consolidated Acceptance Criteria
- The system encounters an error during processing → error handling procedures are invoked including error logging, notification generation, and appropriate error status setting
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_228DispositionCodeErrorHandling(["Start Step"])
E_228DispositionCodeErrorHandling(["End Step"])
N_228DispositionCodeErrorHandling_Node0{"The system encounters an error
during processing"}:::decision N_228DispositionCodeErrorHandling_Node0_action["Error handling procedures are
invoked including error logging,
notification generation, and
appropriate error status setting"]:::exclusion N_228DispositionCodeErrorHandling_Node0 -- Yes -->|Alternative| N_228DispositionCodeErrorHandling_Node0_action N_228DispositionCodeErrorHandling_Node0_action --> E_228DispositionCodeErrorHandling S_228DispositionCodeErrorHandling --> N_228DispositionCodeErrorHandling_Node0 N_228DispositionCodeErrorHandling_Node0 -- No --> E_228DispositionCodeErrorHandling
during processing"}:::decision N_228DispositionCodeErrorHandling_Node0_action["Error handling procedures are
invoked including error logging,
notification generation, and
appropriate error status setting"]:::exclusion N_228DispositionCodeErrorHandling_Node0 -- Yes -->|Alternative| N_228DispositionCodeErrorHandling_Node0_action N_228DispositionCodeErrorHandling_Node0_action --> E_228DispositionCodeErrorHandling S_228DispositionCodeErrorHandling --> N_228DispositionCodeErrorHandling_Node0 N_228DispositionCodeErrorHandling_Node0 -- No --> E_228DispositionCodeErrorHandling
File: GCX016.cbl
GIVEN:
A disposition code 88, 89, or 90 cannot be found in the system or fails validation
WHEN:
The system encounters an error during processing
THEN:
Error handling procedures are invoked including error logging, notification generation, and appropriate error status setting
β Consolidated Acceptance Criteria
- The system processes the ARL disposition code → the system re-evaluates the entire status array and applies auto release logic without adding the code to the array
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_232ARLAutoReleaseArrayReevaluation(["Start Step"])
E_232ARLAutoReleaseArrayReevaluation(["End Step"])
N_232ARLAutoReleaseArrayReevaluation_Node0{"The system processes the ARL
disposition code"}:::decision N_232ARLAutoReleaseArrayReevaluation_Node0_action["The system re-evaluates the entire
status array and applies auto
release logic without adding the
code to the array"]:::main N_232ARLAutoReleaseArrayReevaluation_Node0 -- Yes --> N_232ARLAutoReleaseArrayReevaluation_Node0_action N_232ARLAutoReleaseArrayReevaluation_Node0_action --> E_232ARLAutoReleaseArrayReevaluation S_232ARLAutoReleaseArrayReevaluation --> N_232ARLAutoReleaseArrayReevaluation_Node0 N_232ARLAutoReleaseArrayReevaluation_Node0 -- No --> E_232ARLAutoReleaseArrayReevaluation
disposition code"}:::decision N_232ARLAutoReleaseArrayReevaluation_Node0_action["The system re-evaluates the entire
status array and applies auto
release logic without adding the
code to the array"]:::main N_232ARLAutoReleaseArrayReevaluation_Node0 -- Yes --> N_232ARLAutoReleaseArrayReevaluation_Node0_action N_232ARLAutoReleaseArrayReevaluation_Node0_action --> E_232ARLAutoReleaseArrayReevaluation S_232ARLAutoReleaseArrayReevaluation --> N_232ARLAutoReleaseArrayReevaluation_Node0 N_232ARLAutoReleaseArrayReevaluation_Node0 -- No --> E_232ARLAutoReleaseArrayReevaluation
File: GCX016.cbl
GIVEN:
A disposition code is classified as ARL (Auto Release) type
WHEN:
The system processes the ARL disposition code
THEN:
- The system re-evaluates the entire status array
- Applies auto release logic without adding the code to the array
β Consolidated Acceptance Criteria
- The system processes the MRL disposition code → the system processes the manual release without adding the disposition code to the status array and updates cargo status accordingly
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_233ManualReleaseProcessingforCPRS(["Start Step"])
E_233ManualReleaseProcessingforCPRS(["End Step"])
N_233ManualReleaseProcessingforCPRS_Node0{"The system processes the MRL
disposition code"}:::decision N_233ManualReleaseProcessingforCPRS_Node0_action["The system processes the manual
release without adding the
disposition code to the status array
and updates cargo status accordingly"]:::main N_233ManualReleaseProcessingforCPRS_Node0 -- Yes --> N_233ManualReleaseProcessingforCPRS_Node0_action N_233ManualReleaseProcessingforCPRS_Node0_action --> E_233ManualReleaseProcessingforCPRS S_233ManualReleaseProcessingforCPRS --> N_233ManualReleaseProcessingforCPRS_Node0 N_233ManualReleaseProcessingforCPRS_Node0 -- No --> E_233ManualReleaseProcessingforCPRS
disposition code"}:::decision N_233ManualReleaseProcessingforCPRS_Node0_action["The system processes the manual
release without adding the
disposition code to the status array
and updates cargo status accordingly"]:::main N_233ManualReleaseProcessingforCPRS_Node0 -- Yes --> N_233ManualReleaseProcessingforCPRS_Node0_action N_233ManualReleaseProcessingforCPRS_Node0_action --> E_233ManualReleaseProcessingforCPRS S_233ManualReleaseProcessingforCPRS --> N_233ManualReleaseProcessingforCPRS_Node0 N_233ManualReleaseProcessingforCPRS_Node0 -- No --> E_233ManualReleaseProcessingforCPRS
File: GCX016.cbl
GIVEN:
A disposition code is classified as MRL (Manual Release) type for CPRS cargo
WHEN:
The system processes the MRL disposition code
THEN:
- The system processes the manual release without adding the disposition code to the status array
- Updates cargo status accordingly
β Consolidated Acceptance Criteria
- The system processes the release disposition code with counterpart removal → the system removes counterpart codes from status array and adds the release code with release flags
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_235ReleaseCodewithCounterpartRemoval(["Start Step"])
E_235ReleaseCodewithCounterpartRemoval(["End Step"])
N_235ReleaseCodewithCounterpartRemoval_Node0{"The system processes the release
disposition code with counterpart
removal"}:::decision N_235ReleaseCodewithCounterpartRemoval_Node0_action["The system removes counterpart
codes from status array and adds the
release code with release flags"]:::main N_235ReleaseCodewithCounterpartRemoval_Node0 -- Yes --> N_235ReleaseCodewithCounterpartRemoval_Node0_action N_235ReleaseCodewithCounterpartRemoval_Node0_action --> E_235ReleaseCodewithCounterpartRemoval S_235ReleaseCodewithCounterpartRemoval --> N_235ReleaseCodewithCounterpartRemoval_Node0 N_235ReleaseCodewithCounterpartRemoval_Node0 -- No --> E_235ReleaseCodewithCounterpartRemoval
disposition code with counterpart
removal"}:::decision N_235ReleaseCodewithCounterpartRemoval_Node0_action["The system removes counterpart
codes from status array and adds the
release code with release flags"]:::main N_235ReleaseCodewithCounterpartRemoval_Node0 -- Yes --> N_235ReleaseCodewithCounterpartRemoval_Node0_action N_235ReleaseCodewithCounterpartRemoval_Node0_action --> E_235ReleaseCodewithCounterpartRemoval S_235ReleaseCodewithCounterpartRemoval --> N_235ReleaseCodewithCounterpartRemoval_Node0 N_235ReleaseCodewithCounterpartRemoval_Node0 -- No --> E_235ReleaseCodewithCounterpartRemoval
File: GCX016.cbl
GIVEN:
A disposition code is classified as release with counterpart removal type
WHEN:
The system processes the release disposition code with counterpart removal
THEN:
- The system removes counterpart codes from status array
- Adds the release code with release flags
β Consolidated Acceptance Criteria
- The system processes the information disposition code with counterpart removal → the system removes counterpart codes from status array and adds the information code with status info flags
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_236InformationCodewithCounterpartRemoval(["Start Step"])
E_236InformationCodewithCounterpartRemoval(["End Step"])
N_236InformationCodewithCounterpartRemoval_Node0{"The system processes the
information disposition code with
counterpart removal"}:::decision N_236InformationCodewithCounterpartRemoval_Node0_action["The system removes counterpart
codes from status array and adds the
information code with status info
flags"]:::main N_236InformationCodewithCounterpartRemoval_Node0 -- Yes --> N_236InformationCodewithCounterpartRemoval_Node0_action N_236InformationCodewithCounterpartRemoval_Node0_action --> E_236InformationCodewithCounterpartRemoval S_236InformationCodewithCounterpartRemoval --> N_236InformationCodewithCounterpartRemoval_Node0 N_236InformationCodewithCounterpartRemoval_Node0 -- No --> E_236InformationCodewithCounterpartRemoval
information disposition code with
counterpart removal"}:::decision N_236InformationCodewithCounterpartRemoval_Node0_action["The system removes counterpart
codes from status array and adds the
information code with status info
flags"]:::main N_236InformationCodewithCounterpartRemoval_Node0 -- Yes --> N_236InformationCodewithCounterpartRemoval_Node0_action N_236InformationCodewithCounterpartRemoval_Node0_action --> E_236InformationCodewithCounterpartRemoval S_236InformationCodewithCounterpartRemoval --> N_236InformationCodewithCounterpartRemoval_Node0 N_236InformationCodewithCounterpartRemoval_Node0 -- No --> E_236InformationCodewithCounterpartRemoval
File: GCX016.cbl
GIVEN:
A disposition code is classified as information with counterpart removal type
WHEN:
The system processes the information disposition code with counterpart removal
THEN:
- The system removes counterpart codes from status array
- Adds the information code with status info flags
β Consolidated Acceptance Criteria
- If if the disposition code affects release quantities → the system determines whether to add, subtract, or leave release quantities unchanged based on the code type
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_238QuantityActionProcessingforReleaseCodes(["Start Step"])
E_238QuantityActionProcessingforReleaseCodes(["End Step"])
N_238QuantityActionProcessingforReleaseCodes_Node0{"The system evaluates if the
disposition code affects release
quantities"}:::decision N_238QuantityActionProcessingforReleaseCodes_Node0_action["The system determines whether to
add, subtract, or leave release
quantities unchanged based on the
code type"]:::main N_238QuantityActionProcessingforReleaseCodes_Node0 -- Yes --> N_238QuantityActionProcessingforReleaseCodes_Node0_action N_238QuantityActionProcessingforReleaseCodes_Node0_action --> E_238QuantityActionProcessingforReleaseCodes S_238QuantityActionProcessingforReleaseCodes --> N_238QuantityActionProcessingforReleaseCodes_Node0 N_238QuantityActionProcessingforReleaseCodes_Node0 -- No --> E_238QuantityActionProcessingforReleaseCodes
disposition code affects release
quantities"}:::decision N_238QuantityActionProcessingforReleaseCodes_Node0_action["The system determines whether to
add, subtract, or leave release
quantities unchanged based on the
code type"]:::main N_238QuantityActionProcessingforReleaseCodes_Node0 -- Yes --> N_238QuantityActionProcessingforReleaseCodes_Node0_action N_238QuantityActionProcessingforReleaseCodes_Node0_action --> E_238QuantityActionProcessingforReleaseCodes S_238QuantityActionProcessingforReleaseCodes --> N_238QuantityActionProcessingforReleaseCodes_Node0 N_238QuantityActionProcessingforReleaseCodes_Node0 -- No --> E_238QuantityActionProcessingforReleaseCodes
File: GCX016.cbl
GIVEN:
A disposition code has been added to the status array
WHEN:
The system evaluates if the disposition code affects release quantities
THEN:
The system determines whether to add, subtract, or leave release quantities unchanged based on the code type
β Consolidated Acceptance Criteria
- Multiple status conditions exist → the system applies priority logic with Manual Release as highest priority, followed by FDA Hold, PTT status, Acknowledge status, Proceed status, Hold statuses, Release status, and Export/Arrival statuses
- Status transition is evaluated based on quantity thresholds → the system preserves PTT status when quantity thresholds are met and logs changes for Canadian manifest processing
- Release quantities are compared to total quantities → the system sets partial release status when released quantity is less than total quantity, and full release status when released quantity equals or exceeds total quantity
- The system updates release quantities → the system adds the specified quantity to the existing release quantity
- The system updates release quantities → the system subtracts the specified quantity from existing release quantity with minimum value of zero
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_257CargoStatusTransitionManagement(["Start Step"])
E_257CargoStatusTransitionManagement(["End Step"])
N_257CargoStatusTransitionManagement_Node0{"Multiple status conditions exist"}:::decision
N_257CargoStatusTransitionManagement_Node0_action["The system applies priority logic
with Manual Release as highest
priority, followed by FDA Hold, PTT
status, Acknowledge status, Proceed
status, Hold statuses, Release
status, and ExportArrival statuses"]:::main N_257CargoStatusTransitionManagement_Node0 -- Yes --> N_257CargoStatusTransitionManagement_Node0_action N_257CargoStatusTransitionManagement_Node0_action --> E_257CargoStatusTransitionManagement S_257CargoStatusTransitionManagement --> N_257CargoStatusTransitionManagement_Node0 N_257CargoStatusTransitionManagement_Node1{"Status transition is evaluated
based on quantity thresholds"}:::decision N_257CargoStatusTransitionManagement_Node1_action["The system preserves PTT status
when quantity thresholds are met and
logs changes for Canadian manifest
processing"]:::main N_257CargoStatusTransitionManagement_Node1 -- Yes --> N_257CargoStatusTransitionManagement_Node1_action N_257CargoStatusTransitionManagement_Node1_action --> E_257CargoStatusTransitionManagement N_257CargoStatusTransitionManagement_Node0 -- No --> N_257CargoStatusTransitionManagement_Node1 N_257CargoStatusTransitionManagement_Node2{"Release quantities are compared to
total quantities"}:::decision N_257CargoStatusTransitionManagement_Node2_action["The system sets partial release
status when released quantity is
less than total quantity, and full
release status when released
quantity equals or exceeds total
quantity"]:::main N_257CargoStatusTransitionManagement_Node2 -- Yes --> N_257CargoStatusTransitionManagement_Node2_action N_257CargoStatusTransitionManagement_Node2_action --> E_257CargoStatusTransitionManagement N_257CargoStatusTransitionManagement_Node1 -- No --> N_257CargoStatusTransitionManagement_Node2 N_257CargoStatusTransitionManagement_Node3{"The system updates release
quantities"}:::decision N_257CargoStatusTransitionManagement_Node3_action["The system adds the specified
quantity to the existing release
quantity"]:::main N_257CargoStatusTransitionManagement_Node3 -- Yes --> N_257CargoStatusTransitionManagement_Node3_action N_257CargoStatusTransitionManagement_Node3_action --> E_257CargoStatusTransitionManagement N_257CargoStatusTransitionManagement_Node2 -- No --> N_257CargoStatusTransitionManagement_Node3 N_257CargoStatusTransitionManagement_Node4{"The system updates release
quantities"}:::decision N_257CargoStatusTransitionManagement_Node4_action["The system subtracts the specified
quantity from existing release
quantity with minimum value of zero"]:::main N_257CargoStatusTransitionManagement_Node4 -- Yes --> N_257CargoStatusTransitionManagement_Node4_action N_257CargoStatusTransitionManagement_Node4_action --> E_257CargoStatusTransitionManagement N_257CargoStatusTransitionManagement_Node3 -- No --> N_257CargoStatusTransitionManagement_Node4 N_257CargoStatusTransitionManagement_Node4 -- No --> E_257CargoStatusTransitionManagement
with Manual Release as highest
priority, followed by FDA Hold, PTT
status, Acknowledge status, Proceed
status, Hold statuses, Release
status, and ExportArrival statuses"]:::main N_257CargoStatusTransitionManagement_Node0 -- Yes --> N_257CargoStatusTransitionManagement_Node0_action N_257CargoStatusTransitionManagement_Node0_action --> E_257CargoStatusTransitionManagement S_257CargoStatusTransitionManagement --> N_257CargoStatusTransitionManagement_Node0 N_257CargoStatusTransitionManagement_Node1{"Status transition is evaluated
based on quantity thresholds"}:::decision N_257CargoStatusTransitionManagement_Node1_action["The system preserves PTT status
when quantity thresholds are met and
logs changes for Canadian manifest
processing"]:::main N_257CargoStatusTransitionManagement_Node1 -- Yes --> N_257CargoStatusTransitionManagement_Node1_action N_257CargoStatusTransitionManagement_Node1_action --> E_257CargoStatusTransitionManagement N_257CargoStatusTransitionManagement_Node0 -- No --> N_257CargoStatusTransitionManagement_Node1 N_257CargoStatusTransitionManagement_Node2{"Release quantities are compared to
total quantities"}:::decision N_257CargoStatusTransitionManagement_Node2_action["The system sets partial release
status when released quantity is
less than total quantity, and full
release status when released
quantity equals or exceeds total
quantity"]:::main N_257CargoStatusTransitionManagement_Node2 -- Yes --> N_257CargoStatusTransitionManagement_Node2_action N_257CargoStatusTransitionManagement_Node2_action --> E_257CargoStatusTransitionManagement N_257CargoStatusTransitionManagement_Node1 -- No --> N_257CargoStatusTransitionManagement_Node2 N_257CargoStatusTransitionManagement_Node3{"The system updates release
quantities"}:::decision N_257CargoStatusTransitionManagement_Node3_action["The system adds the specified
quantity to the existing release
quantity"]:::main N_257CargoStatusTransitionManagement_Node3 -- Yes --> N_257CargoStatusTransitionManagement_Node3_action N_257CargoStatusTransitionManagement_Node3_action --> E_257CargoStatusTransitionManagement N_257CargoStatusTransitionManagement_Node2 -- No --> N_257CargoStatusTransitionManagement_Node3 N_257CargoStatusTransitionManagement_Node4{"The system updates release
quantities"}:::decision N_257CargoStatusTransitionManagement_Node4_action["The system subtracts the specified
quantity from existing release
quantity with minimum value of zero"]:::main N_257CargoStatusTransitionManagement_Node4 -- Yes --> N_257CargoStatusTransitionManagement_Node4_action N_257CargoStatusTransitionManagement_Node4_action --> E_257CargoStatusTransitionManagement N_257CargoStatusTransitionManagement_Node3 -- No --> N_257CargoStatusTransitionManagement_Node4 N_257CargoStatusTransitionManagement_Node4 -- No --> E_257CargoStatusTransitionManagement
File: GCX016.cbl
GIVEN:
Cargo status analysis is performed
WHEN:
Multiple status conditions exist
THEN:
The system applies priority logic with Manual Release as highest priority, followed by FDA Hold, PTT status, Acknowledge status, Proceed status, Hold statuses, Release status, and Export/Arrival statuses
File: GCX016.cbl
GIVEN:
Cargo has PTT status
WHEN:
Status transition is evaluated based on quantity thresholds
THEN:
- The system preserves ptt status when quantity thresholds are met
- Logs changes for canadian manifest processing
File: GCX016.cbl
GIVEN:
Cargo release processing is performed
WHEN:
Release quantities are compared to total quantities
THEN:
The system sets partial release status when released quantity is less than total quantity, and full release status when released quantity equals or exceeds total quantity
File: GCX016.cbl
GIVEN:
A disposition code with ADD_QUANTITY action is processed
WHEN:
The system updates release quantities
THEN:
The system adds the specified quantity to the existing release quantity
File: GCX016.cbl
GIVEN:
A disposition code with SUBTRACT_QUANTITY action is processed
WHEN:
The system updates release quantities
THEN:
The system subtracts the specified quantity from existing release quantity with minimum value of zero
β Consolidated Acceptance Criteria
- The system processes cargo status determination → the system clears the destination index and processes Canadian manifest coordination
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_258ManualReleaseProcessing(["Start Step"])
E_258ManualReleaseProcessing(["End Step"])
N_258ManualReleaseProcessing_Node0{"The system processes cargo status
determination"}:::decision N_258ManualReleaseProcessing_Node0_action["The system clears the destination
index and processes Canadian
manifest coordination"]:::main N_258ManualReleaseProcessing_Node0 -- Yes --> N_258ManualReleaseProcessing_Node0_action N_258ManualReleaseProcessing_Node0_action --> E_258ManualReleaseProcessing S_258ManualReleaseProcessing --> N_258ManualReleaseProcessing_Node0 N_258ManualReleaseProcessing_Node0 -- No --> E_258ManualReleaseProcessing
determination"}:::decision N_258ManualReleaseProcessing_Node0_action["The system clears the destination
index and processes Canadian
manifest coordination"]:::main N_258ManualReleaseProcessing_Node0 -- Yes --> N_258ManualReleaseProcessing_Node0_action N_258ManualReleaseProcessing_Node0_action --> E_258ManualReleaseProcessing S_258ManualReleaseProcessing --> N_258ManualReleaseProcessing_Node0 N_258ManualReleaseProcessing_Node0 -- No --> E_258ManualReleaseProcessing
File: GCX016.cbl
GIVEN:
A cargo record exists with manual release flag set
WHEN:
The system processes cargo status determination
THEN:
- The system clears the destination index
- Processes canadian manifest coordination
β Consolidated Acceptance Criteria
- If cargo status requirements → the system sets FDA hold status with specific FDA codes
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_259FDAHoldStatusProcessing(["Start Step"])
E_259FDAHoldStatusProcessing(["End Step"])
N_259FDAHoldStatusProcessing_Node0{"The system evaluates cargo status
requirements"}:::decision N_259FDAHoldStatusProcessing_Node0_action["The system sets FDA hold status
with specific FDA codes"]:::main N_259FDAHoldStatusProcessing_Node0 -- Yes --> N_259FDAHoldStatusProcessing_Node0_action N_259FDAHoldStatusProcessing_Node0_action --> E_259FDAHoldStatusProcessing S_259FDAHoldStatusProcessing --> N_259FDAHoldStatusProcessing_Node0 N_259FDAHoldStatusProcessing_Node0 -- No --> E_259FDAHoldStatusProcessing
requirements"}:::decision N_259FDAHoldStatusProcessing_Node0_action["The system sets FDA hold status
with specific FDA codes"]:::main N_259FDAHoldStatusProcessing_Node0 -- Yes --> N_259FDAHoldStatusProcessing_Node0_action N_259FDAHoldStatusProcessing_Node0_action --> E_259FDAHoldStatusProcessing S_259FDAHoldStatusProcessing --> N_259FDAHoldStatusProcessing_Node0 N_259FDAHoldStatusProcessing_Node0 -- No --> E_259FDAHoldStatusProcessing
File: GCX016.cbl
GIVEN:
A cargo record exists and FDA hold conditions are detected at destination
WHEN:
The system evaluates cargo status requirements
THEN:
The system sets FDA hold status with specific FDA codes
β Consolidated Acceptance Criteria
- The system determines if PTT status is required → the system validates PTT quantities and saves or restores PTT status accordingly
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_260PTTStatusManagement(["Start Step"])
E_260PTTStatusManagement(["End Step"])
N_260PTTStatusManagement_Node0{"The system determines if PTT status
is required"}:::decision N_260PTTStatusManagement_Node0_action["The system validates PTT quantities
and saves or restores PTT status
accordingly"]:::main N_260PTTStatusManagement_Node0 -- Yes --> N_260PTTStatusManagement_Node0_action N_260PTTStatusManagement_Node0_action --> E_260PTTStatusManagement S_260PTTStatusManagement --> N_260PTTStatusManagement_Node0 N_260PTTStatusManagement_Node0 -- No --> E_260PTTStatusManagement
is required"}:::decision N_260PTTStatusManagement_Node0_action["The system validates PTT quantities
and saves or restores PTT status
accordingly"]:::main N_260PTTStatusManagement_Node0 -- Yes --> N_260PTTStatusManagement_Node0_action N_260PTTStatusManagement_Node0_action --> E_260PTTStatusManagement S_260PTTStatusManagement --> N_260PTTStatusManagement_Node0 N_260PTTStatusManagement_Node0 -- No --> E_260PTTStatusManagement
File: GCX016.cbl
GIVEN:
A cargo record exists with quantity information and PTT status requirements
WHEN:
The system determines if PTT status is required
THEN:
- The system validates ptt quantities
- Saves or restores ptt status accordingly
β Consolidated Acceptance Criteria
- If partial release conditions → the system sets hold on piece counts status
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_261PartialReleaseHoldProcessing(["Start Step"])
E_261PartialReleaseHoldProcessing(["End Step"])
N_261PartialReleaseHoldProcessing_Node0{"The system evaluates partial
release conditions"}:::decision N_261PartialReleaseHoldProcessing_Node0_action["The system sets hold on piece
counts status"]:::main N_261PartialReleaseHoldProcessing_Node0 -- Yes --> N_261PartialReleaseHoldProcessing_Node0_action N_261PartialReleaseHoldProcessing_Node0_action --> E_261PartialReleaseHoldProcessing S_261PartialReleaseHoldProcessing --> N_261PartialReleaseHoldProcessing_Node0 N_261PartialReleaseHoldProcessing_Node0 -- No --> E_261PartialReleaseHoldProcessing
release conditions"}:::decision N_261PartialReleaseHoldProcessing_Node0_action["The system sets hold on piece
counts status"]:::main N_261PartialReleaseHoldProcessing_Node0 -- Yes --> N_261PartialReleaseHoldProcessing_Node0_action N_261PartialReleaseHoldProcessing_Node0_action --> E_261PartialReleaseHoldProcessing S_261PartialReleaseHoldProcessing --> N_261PartialReleaseHoldProcessing_Node0 N_261PartialReleaseHoldProcessing_Node0 -- No --> E_261PartialReleaseHoldProcessing
File: GCX016.cbl
GIVEN:
A cargo record exists with released quantity less than total quantity
WHEN:
The system evaluates partial release conditions
THEN:
The system sets hold on piece counts status
β Consolidated Acceptance Criteria
- If full release conditions → the system clears destination index and matches released versus total quantities
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_262FullReleaseProcessing(["Start Step"])
E_262FullReleaseProcessing(["End Step"])
N_262FullReleaseProcessing_Node0{"The system evaluates full release
conditions"}:::decision N_262FullReleaseProcessing_Node0_action["The system clears destination index
and matches released versus total
quantities"]:::main N_262FullReleaseProcessing_Node0 -- Yes --> N_262FullReleaseProcessing_Node0_action N_262FullReleaseProcessing_Node0_action --> E_262FullReleaseProcessing S_262FullReleaseProcessing --> N_262FullReleaseProcessing_Node0 N_262FullReleaseProcessing_Node0 -- No --> E_262FullReleaseProcessing
conditions"}:::decision N_262FullReleaseProcessing_Node0_action["The system clears destination index
and matches released versus total
quantities"]:::main N_262FullReleaseProcessing_Node0 -- Yes --> N_262FullReleaseProcessing_Node0_action N_262FullReleaseProcessing_Node0_action --> E_262FullReleaseProcessing S_262FullReleaseProcessing --> N_262FullReleaseProcessing_Node0 N_262FullReleaseProcessing_Node0 -- No --> E_262FullReleaseProcessing
File: GCX016.cbl
GIVEN:
A cargo record exists with released quantity equal to or greater than total quantity
WHEN:
The system evaluates full release conditions
THEN:
- The system clears destination index
- Matches released versus total quantities
β Consolidated Acceptance Criteria
- The system compares current status with previous release status → the system generates unrelease notifications
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_263CargoUnreleaseDetection(["Start Step"])
E_263CargoUnreleaseDetection(["End Step"])
N_263CargoUnreleaseDetection_Node0{"The system compares current status
with previous release status"}:::decision N_263CargoUnreleaseDetection_Node0_action["The system generates unrelease
notifications"]:::main N_263CargoUnreleaseDetection_Node0 -- Yes --> N_263CargoUnreleaseDetection_Node0_action N_263CargoUnreleaseDetection_Node0_action --> E_263CargoUnreleaseDetection S_263CargoUnreleaseDetection --> N_263CargoUnreleaseDetection_Node0 N_263CargoUnreleaseDetection_Node0 -- No --> E_263CargoUnreleaseDetection
with previous release status"}:::decision N_263CargoUnreleaseDetection_Node0_action["The system generates unrelease
notifications"]:::main N_263CargoUnreleaseDetection_Node0 -- Yes --> N_263CargoUnreleaseDetection_Node0_action N_263CargoUnreleaseDetection_Node0_action --> E_263CargoUnreleaseDetection S_263CargoUnreleaseDetection --> N_263CargoUnreleaseDetection_Node0 N_263CargoUnreleaseDetection_Node0 -- No --> E_263CargoUnreleaseDetection
File: GCX016.cbl
GIVEN:
A cargo record exists that was previously released but now shows unreleased status
WHEN:
The system compares current status with previous release status
THEN:
The system generates unrelease notifications
β Consolidated Acceptance Criteria
- The system determines index update is required → the system updates RT076 destination index and manages bond dates for arrival or export
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_264DestinationIndexReestablishment(["Start Step"])
E_264DestinationIndexReestablishment(["End Step"])
N_264DestinationIndexReestablishment_Node0{"The system determines index update
is required"}:::decision N_264DestinationIndexReestablishment_Node0_action["The system updates RT076
destination index and manages bond
dates for arrival or export"]:::main N_264DestinationIndexReestablishment_Node0 -- Yes --> N_264DestinationIndexReestablishment_Node0_action N_264DestinationIndexReestablishment_Node0_action --> E_264DestinationIndexReestablishment S_264DestinationIndexReestablishment --> N_264DestinationIndexReestablishment_Node0 N_264DestinationIndexReestablishment_Node0 -- No --> E_264DestinationIndexReestablishment
is required"}:::decision N_264DestinationIndexReestablishment_Node0_action["The system updates RT076
destination index and manages bond
dates for arrival or export"]:::main N_264DestinationIndexReestablishment_Node0 -- Yes --> N_264DestinationIndexReestablishment_Node0_action N_264DestinationIndexReestablishment_Node0_action --> E_264DestinationIndexReestablishment S_264DestinationIndexReestablishment --> N_264DestinationIndexReestablishment_Node0 N_264DestinationIndexReestablishment_Node0 -- No --> E_264DestinationIndexReestablishment
File: GCX016.cbl
GIVEN:
A cargo record exists with status changes that require destination index updates
WHEN:
The system determines index update is required
THEN:
- The system updates rt076 destination index
- Manages bond dates for arrival or export
β Consolidated Acceptance Criteria
- The system determines age calculation is required → the system converts Julian dates for bond start dates to calculate cargo age
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_265AgeCalculationforCargo(["Start Step"])
E_265AgeCalculationforCargo(["End Step"])
N_265AgeCalculationforCargo_Node0{"The system determines age
calculation is required"}:::decision N_265AgeCalculationforCargo_Node0_action["The system converts Julian dates
for bond start dates to calculate
cargo age"]:::main N_265AgeCalculationforCargo_Node0 -- Yes --> N_265AgeCalculationforCargo_Node0_action N_265AgeCalculationforCargo_Node0_action --> E_265AgeCalculationforCargo S_265AgeCalculationforCargo --> N_265AgeCalculationforCargo_Node0 N_265AgeCalculationforCargo_Node0 -- No --> E_265AgeCalculationforCargo
calculation is required"}:::decision N_265AgeCalculationforCargo_Node0_action["The system converts Julian dates
for bond start dates to calculate
cargo age"]:::main N_265AgeCalculationforCargo_Node0 -- Yes --> N_265AgeCalculationforCargo_Node0_action N_265AgeCalculationforCargo_Node0_action --> E_265AgeCalculationforCargo S_265AgeCalculationforCargo --> N_265AgeCalculationforCargo_Node0 N_265AgeCalculationforCargo_Node0 -- No --> E_265AgeCalculationforCargo
File: GCX016.cbl
GIVEN:
A cargo record exists with bond start dates requiring age calculation
WHEN:
The system determines age calculation is required
THEN:
The system converts Julian dates for bond start dates to calculate cargo age
β Consolidated Acceptance Criteria
- The system determines integration service call is required → the system calls GCCIIS for hold or release notifications and sends status change notifications
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_266CargoRecordIntegrationServiceCalls(["Start Step"])
E_266CargoRecordIntegrationServiceCalls(["End Step"])
N_266CargoRecordIntegrationServiceCalls_Node0{"The system determines integration
service call is required"}:::decision N_266CargoRecordIntegrationServiceCalls_Node0_action["The system calls GCCIIS for hold or
release notifications and sends
status change notifications"]:::main N_266CargoRecordIntegrationServiceCalls_Node0 -- Yes --> N_266CargoRecordIntegrationServiceCalls_Node0_action N_266CargoRecordIntegrationServiceCalls_Node0_action --> E_266CargoRecordIntegrationServiceCalls S_266CargoRecordIntegrationServiceCalls --> N_266CargoRecordIntegrationServiceCalls_Node0 N_266CargoRecordIntegrationServiceCalls_Node0 -- No --> E_266CargoRecordIntegrationServiceCalls
service call is required"}:::decision N_266CargoRecordIntegrationServiceCalls_Node0_action["The system calls GCCIIS for hold or
release notifications and sends
status change notifications"]:::main N_266CargoRecordIntegrationServiceCalls_Node0 -- Yes --> N_266CargoRecordIntegrationServiceCalls_Node0_action N_266CargoRecordIntegrationServiceCalls_Node0_action --> E_266CargoRecordIntegrationServiceCalls S_266CargoRecordIntegrationServiceCalls --> N_266CargoRecordIntegrationServiceCalls_Node0 N_266CargoRecordIntegrationServiceCalls_Node0 -- No --> E_266CargoRecordIntegrationServiceCalls
File: GCX016.cbl
GIVEN:
A cargo record exists with status changes requiring integration service calls
WHEN:
The system determines integration service call is required
THEN:
- The system calls gcciis for hold or release notifications
- Sends status change notifications
β Consolidated Acceptance Criteria
- The system needs to verify multi-cargo release status → the system verifies all cargo with same car ID and waybill and checks release eligibility
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_267MulticargoReleaseVerification(["Start Step"])
E_267MulticargoReleaseVerification(["End Step"])
N_267MulticargoReleaseVerification_Node0{"The system needs to verify
multi-cargo release status"}:::decision N_267MulticargoReleaseVerification_Node0_action["The system verifies all cargo with
same car ID and waybill and checks
release eligibility"]:::main N_267MulticargoReleaseVerification_Node0 -- Yes --> N_267MulticargoReleaseVerification_Node0_action N_267MulticargoReleaseVerification_Node0_action --> E_267MulticargoReleaseVerification S_267MulticargoReleaseVerification --> N_267MulticargoReleaseVerification_Node0 N_267MulticargoReleaseVerification_Node0 -- No --> E_267MulticargoReleaseVerification
multi-cargo release status"}:::decision N_267MulticargoReleaseVerification_Node0_action["The system verifies all cargo with
same car ID and waybill and checks
release eligibility"]:::main N_267MulticargoReleaseVerification_Node0 -- Yes --> N_267MulticargoReleaseVerification_Node0_action N_267MulticargoReleaseVerification_Node0_action --> E_267MulticargoReleaseVerification S_267MulticargoReleaseVerification --> N_267MulticargoReleaseVerification_Node0 N_267MulticargoReleaseVerification_Node0 -- No --> E_267MulticargoReleaseVerification
File: GCX016.cbl
GIVEN:
Multiple cargo records exist with the same car ID and waybill combination
WHEN:
The system needs to verify multi-cargo release status
THEN:
- The system verifies all cargo with same car id
- Waybill
- Checks release eligibility
β Consolidated Acceptance Criteria
- The system determines release message should be generated → the system creates detailed release messages including cargo status and quantities
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_268ReleaseMessageGeneration(["Start Step"])
E_268ReleaseMessageGeneration(["End Step"])
N_268ReleaseMessageGeneration_Node0{"The system determines release
message should be generated"}:::decision N_268ReleaseMessageGeneration_Node0_action["The system creates detailed release
messages including cargo status and
quantities"]:::main N_268ReleaseMessageGeneration_Node0 -- Yes --> N_268ReleaseMessageGeneration_Node0_action N_268ReleaseMessageGeneration_Node0_action --> E_268ReleaseMessageGeneration S_268ReleaseMessageGeneration --> N_268ReleaseMessageGeneration_Node0 N_268ReleaseMessageGeneration_Node0 -- No --> E_268ReleaseMessageGeneration
message should be generated"}:::decision N_268ReleaseMessageGeneration_Node0_action["The system creates detailed release
messages including cargo status and
quantities"]:::main N_268ReleaseMessageGeneration_Node0 -- Yes --> N_268ReleaseMessageGeneration_Node0_action N_268ReleaseMessageGeneration_Node0_action --> E_268ReleaseMessageGeneration S_268ReleaseMessageGeneration --> N_268ReleaseMessageGeneration_Node0 N_268ReleaseMessageGeneration_Node0 -- No --> E_268ReleaseMessageGeneration
File: GCX016.cbl
GIVEN:
A cargo record exists with conditions requiring release message generation
WHEN:
The system determines release message should be generated
THEN:
- The system creates detailed release messages including cargo status
- Quantities
β Consolidated Acceptance Criteria
- The system determines export message is required → the system generates USCS export operations message and handles export cancellation scenarios
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_269ExportMessageGeneration(["Start Step"])
E_269ExportMessageGeneration(["End Step"])
N_269ExportMessageGeneration_Node0{"The system determines export
message is required"}:::decision N_269ExportMessageGeneration_Node0_action["The system generates USCS export
operations message and handles
export cancellation scenarios"]:::main N_269ExportMessageGeneration_Node0 -- Yes --> N_269ExportMessageGeneration_Node0_action N_269ExportMessageGeneration_Node0_action --> E_269ExportMessageGeneration S_269ExportMessageGeneration --> N_269ExportMessageGeneration_Node0 N_269ExportMessageGeneration_Node0 -- No --> E_269ExportMessageGeneration
message is required"}:::decision N_269ExportMessageGeneration_Node0_action["The system generates USCS export
operations message and handles
export cancellation scenarios"]:::main N_269ExportMessageGeneration_Node0 -- Yes --> N_269ExportMessageGeneration_Node0_action N_269ExportMessageGeneration_Node0_action --> E_269ExportMessageGeneration S_269ExportMessageGeneration --> N_269ExportMessageGeneration_Node0 N_269ExportMessageGeneration_Node0 -- No --> E_269ExportMessageGeneration
File: GCX016.cbl
GIVEN:
A cargo record exists with conditions requiring export message generation
WHEN:
The system determines export message is required
THEN:
- The system generates uscs export operations message
- Handles export cancellation scenarios
β Consolidated Acceptance Criteria
- The system determines arrival message is required → the system generates USCS arrival operations message and handles arrival cancellation scenarios
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_270ArrivalMessageGeneration(["Start Step"])
E_270ArrivalMessageGeneration(["End Step"])
N_270ArrivalMessageGeneration_Node0{"The system determines arrival
message is required"}:::decision N_270ArrivalMessageGeneration_Node0_action["The system generates USCS arrival
operations message and handles
arrival cancellation scenarios"]:::main N_270ArrivalMessageGeneration_Node0 -- Yes --> N_270ArrivalMessageGeneration_Node0_action N_270ArrivalMessageGeneration_Node0_action --> E_270ArrivalMessageGeneration S_270ArrivalMessageGeneration --> N_270ArrivalMessageGeneration_Node0 N_270ArrivalMessageGeneration_Node0 -- No --> E_270ArrivalMessageGeneration
message is required"}:::decision N_270ArrivalMessageGeneration_Node0_action["The system generates USCS arrival
operations message and handles
arrival cancellation scenarios"]:::main N_270ArrivalMessageGeneration_Node0 -- Yes --> N_270ArrivalMessageGeneration_Node0_action N_270ArrivalMessageGeneration_Node0_action --> E_270ArrivalMessageGeneration S_270ArrivalMessageGeneration --> N_270ArrivalMessageGeneration_Node0 N_270ArrivalMessageGeneration_Node0 -- No --> E_270ArrivalMessageGeneration
File: GCX016.cbl
GIVEN:
A cargo record exists with conditions requiring arrival message generation
WHEN:
The system determines arrival message is required
THEN:
- The system generates uscs arrival operations message
- Handles arrival cancellation scenarios
β Consolidated Acceptance Criteria
- The system reaches the end of complex status determination → the system saves current status information to preserve cargo state
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_277CargoStatusPreservation(["Start Step"])
E_277CargoStatusPreservation(["End Step"])
N_277CargoStatusPreservation_Node0{"The system reaches the end of
complex status determination"}:::decision N_277CargoStatusPreservation_Node0_action["The system saves current status
information to preserve cargo state"]:::main N_277CargoStatusPreservation_Node0 -- Yes --> N_277CargoStatusPreservation_Node0_action N_277CargoStatusPreservation_Node0_action --> E_277CargoStatusPreservation S_277CargoStatusPreservation --> N_277CargoStatusPreservation_Node0 N_277CargoStatusPreservation_Node0 -- No --> E_277CargoStatusPreservation
complex status determination"}:::decision N_277CargoStatusPreservation_Node0_action["The system saves current status
information to preserve cargo state"]:::main N_277CargoStatusPreservation_Node0 -- Yes --> N_277CargoStatusPreservation_Node0_action N_277CargoStatusPreservation_Node0_action --> E_277CargoStatusPreservation S_277CargoStatusPreservation --> N_277CargoStatusPreservation_Node0 N_277CargoStatusPreservation_Node0 -- No --> E_277CargoStatusPreservation
File: GCX016.cbl
GIVEN:
A cargo record exists that has completed complex status logic processing
WHEN:
The system reaches the end of complex status determination
THEN:
The system saves current status information to preserve cargo state
β Consolidated Acceptance Criteria
- Transaction spawning is required → the system spawns KCSM transaction with copied message data
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_312KCSMTransactionSpawning(["Start Step"])
E_312KCSMTransactionSpawning(["End Step"])
N_312KCSMTransactionSpawning_Node0{"Transaction spawning is required"}:::decision
N_312KCSMTransactionSpawning_Node0_action["The system spawns KCSM transaction
with copied message data"]:::main N_312KCSMTransactionSpawning_Node0 -- Yes --> N_312KCSMTransactionSpawning_Node0_action N_312KCSMTransactionSpawning_Node0_action --> E_312KCSMTransactionSpawning S_312KCSMTransactionSpawning --> N_312KCSMTransactionSpawning_Node0 N_312KCSMTransactionSpawning_Node0 -- No --> E_312KCSMTransactionSpawning
with copied message data"]:::main N_312KCSMTransactionSpawning_Node0 -- Yes --> N_312KCSMTransactionSpawning_Node0_action N_312KCSMTransactionSpawning_Node0_action --> E_312KCSMTransactionSpawning S_312KCSMTransactionSpawning --> N_312KCSMTransactionSpawning_Node0 N_312KCSMTransactionSpawning_Node0 -- No --> E_312KCSMTransactionSpawning
File: GCX016.cbl
GIVEN:
KCSM message copying is completed
WHEN:
Transaction spawning is required
THEN:
The system spawns KCSM transaction with copied message data
β Consolidated Acceptance Criteria
- The system begins initialization process → all working storage fields are set to their initial default values including counters, flags, and data areas
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_InitializeWorkingStorageFields(["Start Step"])
E_InitializeWorkingStorageFields(["End Step"])
N_InitializeWorkingStorageFields_Node0{"The system begins initialization
process"}:::decision N_InitializeWorkingStorageFields_Node0_action["All working storage fields are set
to their initial default values
including counters, flags, and data
areas"]:::main N_InitializeWorkingStorageFields_Node0 -- Yes --> N_InitializeWorkingStorageFields_Node0_action N_InitializeWorkingStorageFields_Node0_action --> E_InitializeWorkingStorageFields S_InitializeWorkingStorageFields --> N_InitializeWorkingStorageFields_Node0 N_InitializeWorkingStorageFields_Node0 -- No --> E_InitializeWorkingStorageFields
process"}:::decision N_InitializeWorkingStorageFields_Node0_action["All working storage fields are set
to their initial default values
including counters, flags, and data
areas"]:::main N_InitializeWorkingStorageFields_Node0 -- Yes --> N_InitializeWorkingStorageFields_Node0_action N_InitializeWorkingStorageFields_Node0_action --> E_InitializeWorkingStorageFields S_InitializeWorkingStorageFields --> N_InitializeWorkingStorageFields_Node0 N_InitializeWorkingStorageFields_Node0 -- No --> E_InitializeWorkingStorageFields
File: GCX016.cbl
GIVEN:
The program GCX016 has started
WHEN:
The system begins initialization process
THEN:
All working storage fields are set to their initial default values including counters, flags, and data areas
β Consolidated Acceptance Criteria
- The system prepares for MQ message processing → mQ message arrays are initialized with proper structure and capacity for message handling
- The system processes the queue-based message → the system initializes MQ message arrays for train and cargo processing
- The system begins message queue initialization → message queue arrays are cleared and prepared for train segment processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_InitializeMQMessageArrays(["Start Step"])
E_InitializeMQMessageArrays(["End Step"])
N_InitializeMQMessageArrays_Node0{"The system prepares for MQ message
processing"}:::decision N_InitializeMQMessageArrays_Node0_action["MQ message arrays are initialized
with proper structure and capacity
for message handling"]:::main N_InitializeMQMessageArrays_Node0 -- Yes --> N_InitializeMQMessageArrays_Node0_action N_InitializeMQMessageArrays_Node0_action --> E_InitializeMQMessageArrays S_InitializeMQMessageArrays --> N_InitializeMQMessageArrays_Node0 N_InitializeMQMessageArrays_Node1{"The system processes the
queue-based message"}:::decision N_InitializeMQMessageArrays_Node1_action["The system initializes MQ message
arrays for train and cargo
processing"]:::main N_InitializeMQMessageArrays_Node1 -- Yes --> N_InitializeMQMessageArrays_Node1_action N_InitializeMQMessageArrays_Node1_action --> E_InitializeMQMessageArrays N_InitializeMQMessageArrays_Node0 -- No --> N_InitializeMQMessageArrays_Node1 N_InitializeMQMessageArrays_Node2{"The system begins message queue
initialization"}:::decision N_InitializeMQMessageArrays_Node2_action["Message queue arrays are cleared
and prepared for train segment
processing"]:::main N_InitializeMQMessageArrays_Node2 -- Yes --> N_InitializeMQMessageArrays_Node2_action N_InitializeMQMessageArrays_Node2_action --> E_InitializeMQMessageArrays N_InitializeMQMessageArrays_Node1 -- No --> N_InitializeMQMessageArrays_Node2 N_InitializeMQMessageArrays_Node2 -- No --> E_InitializeMQMessageArrays
processing"}:::decision N_InitializeMQMessageArrays_Node0_action["MQ message arrays are initialized
with proper structure and capacity
for message handling"]:::main N_InitializeMQMessageArrays_Node0 -- Yes --> N_InitializeMQMessageArrays_Node0_action N_InitializeMQMessageArrays_Node0_action --> E_InitializeMQMessageArrays S_InitializeMQMessageArrays --> N_InitializeMQMessageArrays_Node0 N_InitializeMQMessageArrays_Node1{"The system processes the
queue-based message"}:::decision N_InitializeMQMessageArrays_Node1_action["The system initializes MQ message
arrays for train and cargo
processing"]:::main N_InitializeMQMessageArrays_Node1 -- Yes --> N_InitializeMQMessageArrays_Node1_action N_InitializeMQMessageArrays_Node1_action --> E_InitializeMQMessageArrays N_InitializeMQMessageArrays_Node0 -- No --> N_InitializeMQMessageArrays_Node1 N_InitializeMQMessageArrays_Node2{"The system begins message queue
initialization"}:::decision N_InitializeMQMessageArrays_Node2_action["Message queue arrays are cleared
and prepared for train segment
processing"]:::main N_InitializeMQMessageArrays_Node2 -- Yes --> N_InitializeMQMessageArrays_Node2_action N_InitializeMQMessageArrays_Node2_action --> E_InitializeMQMessageArrays N_InitializeMQMessageArrays_Node1 -- No --> N_InitializeMQMessageArrays_Node2 N_InitializeMQMessageArrays_Node2 -- No --> E_InitializeMQMessageArrays
File: GCX016.cbl
GIVEN:
Working storage fields have been initialized
WHEN:
The system prepares for MQ message processing
THEN:
- Mq message arrays are initialized with proper structure
- Capacity for message handling
File: GCX016.cbl
GIVEN:
A train message is identified as coming from MQ Queue source
WHEN:
The system processes the queue-based message
THEN:
- The system initializes mq message arrays for train
- Cargo processing
File: GCX016.cbl
GIVEN:
A train operation requires message processing
WHEN:
The system begins message queue initialization
THEN:
- Message queue arrays are cleared
- Prepared for train segment processing
β Consolidated Acceptance Criteria
- The system determines the message source type → processing parameters are configured appropriately for the specific input method
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetProcessingParameters(["Start Step"])
E_SetProcessingParameters(["End Step"])
N_SetProcessingParameters_Node0{"The system determines the message
source type"}:::decision N_SetProcessingParameters_Node0_action["Processing parameters are
configured appropriately for the
specific input method"]:::main N_SetProcessingParameters_Node0 -- Yes --> N_SetProcessingParameters_Node0_action N_SetProcessingParameters_Node0_action --> E_SetProcessingParameters S_SetProcessingParameters --> N_SetProcessingParameters_Node0 N_SetProcessingParameters_Node0 -- No --> E_SetProcessingParameters
source type"}:::decision N_SetProcessingParameters_Node0_action["Processing parameters are
configured appropriately for the
specific input method"]:::main N_SetProcessingParameters_Node0 -- Yes --> N_SetProcessingParameters_Node0_action N_SetProcessingParameters_Node0_action --> E_SetProcessingParameters S_SetProcessingParameters --> N_SetProcessingParameters_Node0 N_SetProcessingParameters_Node0 -- No --> E_SetProcessingParameters
File: GCX016.cbl
GIVEN:
MQ message arrays have been initialized
WHEN:
The system determines the message source type
THEN:
Processing parameters are configured appropriately for the specific input method
β Consolidated Acceptance Criteria
- The system checks the message source indicator → the system routes to either MQ queue processing or direct GCW016 input processing based on the message source type
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MessageSourceType(["Start Step"])
E_MessageSourceType(["End Step"])
N_MessageSourceType_Node0{"The system checks the message
source indicator"}:::decision N_MessageSourceType_Node0_action["The system routes to either MQ
queue processing or direct GCW016
input processing based on the
message source type"]:::main N_MessageSourceType_Node0 -- Yes --> N_MessageSourceType_Node0_action N_MessageSourceType_Node0_action --> E_MessageSourceType S_MessageSourceType --> N_MessageSourceType_Node0 N_MessageSourceType_Node0 -- No --> E_MessageSourceType
source indicator"}:::decision N_MessageSourceType_Node0_action["The system routes to either MQ
queue processing or direct GCW016
input processing based on the
message source type"]:::main N_MessageSourceType_Node0 -- Yes --> N_MessageSourceType_Node0_action N_MessageSourceType_Node0_action --> E_MessageSourceType S_MessageSourceType --> N_MessageSourceType_Node0 N_MessageSourceType_Node0 -- No --> E_MessageSourceType
File: GCX016.cbl
GIVEN:
Processing parameters have been set
WHEN:
The system checks the message source indicator
THEN:
The system routes to either MQ queue processing or direct GCW016 input processing based on the message source type
β Consolidated Acceptance Criteria
- The system initializes MQ queue processing → mQ-specific configuration parameters are set including queue names, connection settings, and message handling options
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_InitializeforMQQueueProcessing(["Start Step"])
E_InitializeforMQQueueProcessing(["End Step"])
N_InitializeforMQQueueProcessing_Node0{"The system initializes MQ queue
processing"}:::decision N_InitializeforMQQueueProcessing_Node0_action["MQ-specific configuration
parameters are set including queue
names, connection settings, and
message handling options"]:::main N_InitializeforMQQueueProcessing_Node0 -- Yes --> N_InitializeforMQQueueProcessing_Node0_action N_InitializeforMQQueueProcessing_Node0_action --> E_InitializeforMQQueueProcessing S_InitializeforMQQueueProcessing --> N_InitializeforMQQueueProcessing_Node0 N_InitializeforMQQueueProcessing_Node0 -- No --> E_InitializeforMQQueueProcessing
processing"}:::decision N_InitializeforMQQueueProcessing_Node0_action["MQ-specific configuration
parameters are set including queue
names, connection settings, and
message handling options"]:::main N_InitializeforMQQueueProcessing_Node0 -- Yes --> N_InitializeforMQQueueProcessing_Node0_action N_InitializeforMQQueueProcessing_Node0_action --> E_InitializeforMQQueueProcessing S_InitializeforMQQueueProcessing --> N_InitializeforMQQueueProcessing_Node0 N_InitializeforMQQueueProcessing_Node0 -- No --> E_InitializeforMQQueueProcessing
File: GCX016.cbl
GIVEN:
Message source type is determined as MQ Queue
WHEN:
The system initializes MQ queue processing
THEN:
MQ-specific configuration parameters are set including queue names, connection settings, and message handling options
β Consolidated Acceptance Criteria
- The system initializes direct GCW016 input processing → direct input configuration parameters are set for handling GCW016 message format
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_InitializeforDirectGCW016Input(["Start Step"])
E_InitializeforDirectGCW016Input(["End Step"])
N_InitializeforDirectGCW016Input_Node0{"The system initializes direct
GCW016 input processing"}:::decision N_InitializeforDirectGCW016Input_Node0_action["Direct input configuration
parameters are set for handling
GCW016 message format"]:::main N_InitializeforDirectGCW016Input_Node0 -- Yes --> N_InitializeforDirectGCW016Input_Node0_action N_InitializeforDirectGCW016Input_Node0_action --> E_InitializeforDirectGCW016Input S_InitializeforDirectGCW016Input --> N_InitializeforDirectGCW016Input_Node0 N_InitializeforDirectGCW016Input_Node0 -- No --> E_InitializeforDirectGCW016Input
GCW016 input processing"}:::decision N_InitializeforDirectGCW016Input_Node0_action["Direct input configuration
parameters are set for handling
GCW016 message format"]:::main N_InitializeforDirectGCW016Input_Node0 -- Yes --> N_InitializeforDirectGCW016Input_Node0_action N_InitializeforDirectGCW016Input_Node0_action --> E_InitializeforDirectGCW016Input S_InitializeforDirectGCW016Input --> N_InitializeforDirectGCW016Input_Node0 N_InitializeforDirectGCW016Input_Node0 -- No --> E_InitializeforDirectGCW016Input
File: GCX016.cbl
GIVEN:
Message source type is determined as Direct Input
WHEN:
The system initializes direct GCW016 input processing
THEN:
Direct input configuration parameters are set for handling GCW016 message format
β Consolidated Acceptance Criteria
- The system loads system tables → all required reference tables including disposition codes, broker information, and validation tables are loaded into memory
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LoadSystemTables(["Start Step"])
E_LoadSystemTables(["End Step"])
N_LoadSystemTables_Node0{"The system loads system tables"}:::decision
N_LoadSystemTables_Node0_action["All required reference tables
including disposition codes, broker
information, and validation tables
are loaded into memory"]:::main N_LoadSystemTables_Node0 -- Yes --> N_LoadSystemTables_Node0_action N_LoadSystemTables_Node0_action --> E_LoadSystemTables S_LoadSystemTables --> N_LoadSystemTables_Node0 N_LoadSystemTables_Node0 -- No --> E_LoadSystemTables
including disposition codes, broker
information, and validation tables
are loaded into memory"]:::main N_LoadSystemTables_Node0 -- Yes --> N_LoadSystemTables_Node0_action N_LoadSystemTables_Node0_action --> E_LoadSystemTables S_LoadSystemTables --> N_LoadSystemTables_Node0 N_LoadSystemTables_Node0 -- No --> E_LoadSystemTables
File: GCX016.cbl
GIVEN:
Message source initialization is complete
WHEN:
The system loads system tables
THEN:
All required reference tables including disposition codes, broker information, and validation tables are loaded into memory
β Consolidated Acceptance Criteria
- The system establishes database connections → connections to cargo database, train database, and reference data sources are established and verified
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_EstablishDatabaseConnections(["Start Step"])
E_EstablishDatabaseConnections(["End Step"])
N_EstablishDatabaseConnections_Node0{"The system establishes database
connections"}:::decision N_EstablishDatabaseConnections_Node0_action["Connections to cargo database,
train database, and reference data
sources are established and verified"]:::main N_EstablishDatabaseConnections_Node0 -- Yes --> N_EstablishDatabaseConnections_Node0_action N_EstablishDatabaseConnections_Node0_action --> E_EstablishDatabaseConnections S_EstablishDatabaseConnections --> N_EstablishDatabaseConnections_Node0 N_EstablishDatabaseConnections_Node0 -- No --> E_EstablishDatabaseConnections
connections"}:::decision N_EstablishDatabaseConnections_Node0_action["Connections to cargo database,
train database, and reference data
sources are established and verified"]:::main N_EstablishDatabaseConnections_Node0 -- Yes --> N_EstablishDatabaseConnections_Node0_action N_EstablishDatabaseConnections_Node0_action --> E_EstablishDatabaseConnections S_EstablishDatabaseConnections --> N_EstablishDatabaseConnections_Node0 N_EstablishDatabaseConnections_Node0 -- No --> E_EstablishDatabaseConnections
File: GCX016.cbl
GIVEN:
System tables have been loaded
WHEN:
The system establishes database connections
THEN:
- Connections to cargo database, train database, and reference data sources are established
- Verified
β Consolidated Acceptance Criteria
- The system initializes error handling → error handling framework is configured including error logging, Merlin messaging, and error recovery procedures
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_InitializeErrorHandling(["Start Step"])
E_InitializeErrorHandling(["End Step"])
N_InitializeErrorHandling_Node0{"The system initializes error
handling"}:::decision N_InitializeErrorHandling_Node0_action["Error handling framework is
configured including error logging,
Merlin messaging, and error recovery
procedures"]:::exclusion N_InitializeErrorHandling_Node0 -- Yes -->|Alternative| N_InitializeErrorHandling_Node0_action N_InitializeErrorHandling_Node0_action --> E_InitializeErrorHandling S_InitializeErrorHandling --> N_InitializeErrorHandling_Node0 N_InitializeErrorHandling_Node0 -- No --> E_InitializeErrorHandling
handling"}:::decision N_InitializeErrorHandling_Node0_action["Error handling framework is
configured including error logging,
Merlin messaging, and error recovery
procedures"]:::exclusion N_InitializeErrorHandling_Node0 -- Yes -->|Alternative| N_InitializeErrorHandling_Node0_action N_InitializeErrorHandling_Node0_action --> E_InitializeErrorHandling S_InitializeErrorHandling --> N_InitializeErrorHandling_Node0 N_InitializeErrorHandling_Node0 -- No --> E_InitializeErrorHandling
File: GCX016.cbl
GIVEN:
Database connections have been established
WHEN:
The system initializes error handling
THEN:
Error handling framework is configured including error logging, Merlin messaging, and error recovery procedures
β Consolidated Acceptance Criteria
- The system sets transaction counters → all counters for processed messages, errors, warnings, and cargo records are set to zero
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetTransactionCounters(["Start Step"])
E_SetTransactionCounters(["End Step"])
N_SetTransactionCounters_Node0{"The system sets transaction
counters"}:::decision N_SetTransactionCounters_Node0_action["All counters for processed
messages, errors, warnings, and
cargo records are set to zero"]:::main N_SetTransactionCounters_Node0 -- Yes --> N_SetTransactionCounters_Node0_action N_SetTransactionCounters_Node0_action --> E_SetTransactionCounters S_SetTransactionCounters --> N_SetTransactionCounters_Node0 N_SetTransactionCounters_Node0 -- No --> E_SetTransactionCounters
counters"}:::decision N_SetTransactionCounters_Node0_action["All counters for processed
messages, errors, warnings, and
cargo records are set to zero"]:::main N_SetTransactionCounters_Node0 -- Yes --> N_SetTransactionCounters_Node0_action N_SetTransactionCounters_Node0_action --> E_SetTransactionCounters S_SetTransactionCounters --> N_SetTransactionCounters_Node0 N_SetTransactionCounters_Node0 -- No --> E_SetTransactionCounters
File: GCX016.cbl
GIVEN:
Error handling has been initialized
WHEN:
The system sets transaction counters
THEN:
All counters for processed messages, errors, warnings, and cargo records are set to zero
β Consolidated Acceptance Criteria
- The system initializes status flags → all processing control flags including end-of-file, error conditions, and processing states are set to their initial values
- The status array analysis process begins → all status flags (hold, release, PTT, proceed, arrival, export, FDA hold) are set to false and quantity counters are reset to zero
- The system begins status array analysis → all status flags (hold, release, PTT, proceed, arrival, export, FDA hold) are set to false and quantity counters are reset to zero
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_InitializeStatusFlags(["Start Step"])
E_InitializeStatusFlags(["End Step"])
N_InitializeStatusFlags_Node0{"The system initializes status flags"}:::decision
N_InitializeStatusFlags_Node0_action["All processing control flags
including end-of-file, error
conditions, and processing states
are set to their initial values"]:::main N_InitializeStatusFlags_Node0 -- Yes --> N_InitializeStatusFlags_Node0_action N_InitializeStatusFlags_Node0_action --> E_InitializeStatusFlags S_InitializeStatusFlags --> N_InitializeStatusFlags_Node0 N_InitializeStatusFlags_Node1{"The status array analysis process
begins"}:::decision N_InitializeStatusFlags_Node1_action["All status flags hold, release,
PTT, proceed, arrival, export, FDA
hold are set to false and quantity
counters are reset to zero"]:::main N_InitializeStatusFlags_Node1 -- Yes --> N_InitializeStatusFlags_Node1_action N_InitializeStatusFlags_Node1_action --> E_InitializeStatusFlags N_InitializeStatusFlags_Node0 -- No --> N_InitializeStatusFlags_Node1 N_InitializeStatusFlags_Node2{"The system begins status array
analysis"}:::decision N_InitializeStatusFlags_Node2_action["All status flags hold, release,
PTT, proceed, arrival, export, FDA
hold are set to false and quantity
counters are reset to zero"]:::main N_InitializeStatusFlags_Node2 -- Yes --> N_InitializeStatusFlags_Node2_action N_InitializeStatusFlags_Node2_action --> E_InitializeStatusFlags N_InitializeStatusFlags_Node1 -- No --> N_InitializeStatusFlags_Node2 N_InitializeStatusFlags_Node2 -- No --> E_InitializeStatusFlags
including end-of-file, error
conditions, and processing states
are set to their initial values"]:::main N_InitializeStatusFlags_Node0 -- Yes --> N_InitializeStatusFlags_Node0_action N_InitializeStatusFlags_Node0_action --> E_InitializeStatusFlags S_InitializeStatusFlags --> N_InitializeStatusFlags_Node0 N_InitializeStatusFlags_Node1{"The status array analysis process
begins"}:::decision N_InitializeStatusFlags_Node1_action["All status flags hold, release,
PTT, proceed, arrival, export, FDA
hold are set to false and quantity
counters are reset to zero"]:::main N_InitializeStatusFlags_Node1 -- Yes --> N_InitializeStatusFlags_Node1_action N_InitializeStatusFlags_Node1_action --> E_InitializeStatusFlags N_InitializeStatusFlags_Node0 -- No --> N_InitializeStatusFlags_Node1 N_InitializeStatusFlags_Node2{"The system begins status array
analysis"}:::decision N_InitializeStatusFlags_Node2_action["All status flags hold, release,
PTT, proceed, arrival, export, FDA
hold are set to false and quantity
counters are reset to zero"]:::main N_InitializeStatusFlags_Node2 -- Yes --> N_InitializeStatusFlags_Node2_action N_InitializeStatusFlags_Node2_action --> E_InitializeStatusFlags N_InitializeStatusFlags_Node1 -- No --> N_InitializeStatusFlags_Node2 N_InitializeStatusFlags_Node2 -- No --> E_InitializeStatusFlags
File: GCX016.cbl
GIVEN:
Transaction counters have been set
WHEN:
The system initializes status flags
THEN:
All processing control flags including end-of-file, error conditions, and processing states are set to their initial values
File: GCX016.cbl
GIVEN:
A cargo record requires status analysis
WHEN:
The status array analysis process begins
THEN:
- All status flags (hold, release, ptt, proceed, arrival, export, fda hold) are set to false
- Quantity counters are reset to zero
File: GCX016.cbl
GIVEN:
A cargo status transition analysis is starting
WHEN:
The system begins status array analysis
THEN:
- All status flags (hold, release, ptt, proceed, arrival, export, fda hold) are set to false
- Quantity counters are reset to zero
β Consolidated Acceptance Criteria
- The system completes initialization sequence → the system is ready to begin processing messages with all components properly initialized and configured
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ReadyforMessageProcessing(["Start Step"])
E_ReadyforMessageProcessing(["End Step"])
N_ReadyforMessageProcessing_Node0{"The system completes initialization
sequence"}:::decision N_ReadyforMessageProcessing_Node0_action["The system is ready to begin
processing messages with all
components properly initialized and
configured"]:::main N_ReadyforMessageProcessing_Node0 -- Yes --> N_ReadyforMessageProcessing_Node0_action N_ReadyforMessageProcessing_Node0_action --> E_ReadyforMessageProcessing S_ReadyforMessageProcessing --> N_ReadyforMessageProcessing_Node0 N_ReadyforMessageProcessing_Node0 -- No --> E_ReadyforMessageProcessing
sequence"}:::decision N_ReadyforMessageProcessing_Node0_action["The system is ready to begin
processing messages with all
components properly initialized and
configured"]:::main N_ReadyforMessageProcessing_Node0 -- Yes --> N_ReadyforMessageProcessing_Node0_action N_ReadyforMessageProcessing_Node0_action --> E_ReadyforMessageProcessing S_ReadyforMessageProcessing --> N_ReadyforMessageProcessing_Node0 N_ReadyforMessageProcessing_Node0 -- No --> E_ReadyforMessageProcessing
File: GCX016.cbl
GIVEN:
All status flags have been initialized
WHEN:
The system completes initialization sequence
THEN:
- The system is ready to begin processing messages with all components properly initialized
- Configured
β Consolidated Acceptance Criteria
- The system processes the ST segment header → the system should set the header found flag and initialize transaction set processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_STSegmentReceived(["Start Step"])
E_STSegmentReceived(["End Step"])
N_STSegmentReceived_Node0{"The system processes the ST segment
header"}:::decision N_STSegmentReceived_Node0_action["The system should set the header
found flag and initialize
transaction set processing"]:::main N_STSegmentReceived_Node0 -- Yes --> N_STSegmentReceived_Node0_action N_STSegmentReceived_Node0_action --> E_STSegmentReceived S_STSegmentReceived --> N_STSegmentReceived_Node0 N_STSegmentReceived_Node0 -- No --> E_STSegmentReceived
header"}:::decision N_STSegmentReceived_Node0_action["The system should set the header
found flag and initialize
transaction set processing"]:::main N_STSegmentReceived_Node0 -- Yes --> N_STSegmentReceived_Node0_action N_STSegmentReceived_Node0_action --> E_STSegmentReceived S_STSegmentReceived --> N_STSegmentReceived_Node0 N_STSegmentReceived_Node0 -- No --> E_STSegmentReceived
File: GCX016.cbl
GIVEN:
An ST segment is received from the message queue
WHEN:
The system processes the ST segment header
THEN:
- The system should set the header found flag
- Initialize transaction set processing
β Consolidated Acceptance Criteria
- The system extracts the control number from the segment → the control number should be stored for transaction boundary validation
- The system extracts the transaction set control number → the control number is captured for comparison with the corresponding ST segment
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExtractTransactionSetControlNumber(["Start Step"])
E_ExtractTransactionSetControlNumber(["End Step"])
N_ExtractTransactionSetControlNumber_Node0{"The system extracts the control
number from the segment"}:::decision N_ExtractTransactionSetControlNumber_Node0_action["The control number should be stored
for transaction boundary validation"]:::main N_ExtractTransactionSetControlNumber_Node0 -- Yes --> N_ExtractTransactionSetControlNumber_Node0_action N_ExtractTransactionSetControlNumber_Node0_action --> E_ExtractTransactionSetControlNumber S_ExtractTransactionSetControlNumber --> N_ExtractTransactionSetControlNumber_Node0 N_ExtractTransactionSetControlNumber_Node1{"The system extracts the transaction
set control number"}:::decision N_ExtractTransactionSetControlNumber_Node1_action["The control number is captured for
comparison with the corresponding ST
segment"]:::main N_ExtractTransactionSetControlNumber_Node1 -- Yes --> N_ExtractTransactionSetControlNumber_Node1_action N_ExtractTransactionSetControlNumber_Node1_action --> E_ExtractTransactionSetControlNumber N_ExtractTransactionSetControlNumber_Node0 -- No --> N_ExtractTransactionSetControlNumber_Node1 N_ExtractTransactionSetControlNumber_Node1 -- No --> E_ExtractTransactionSetControlNumber
number from the segment"}:::decision N_ExtractTransactionSetControlNumber_Node0_action["The control number should be stored
for transaction boundary validation"]:::main N_ExtractTransactionSetControlNumber_Node0 -- Yes --> N_ExtractTransactionSetControlNumber_Node0_action N_ExtractTransactionSetControlNumber_Node0_action --> E_ExtractTransactionSetControlNumber S_ExtractTransactionSetControlNumber --> N_ExtractTransactionSetControlNumber_Node0 N_ExtractTransactionSetControlNumber_Node1{"The system extracts the transaction
set control number"}:::decision N_ExtractTransactionSetControlNumber_Node1_action["The control number is captured for
comparison with the corresponding ST
segment"]:::main N_ExtractTransactionSetControlNumber_Node1 -- Yes --> N_ExtractTransactionSetControlNumber_Node1_action N_ExtractTransactionSetControlNumber_Node1_action --> E_ExtractTransactionSetControlNumber N_ExtractTransactionSetControlNumber_Node0 -- No --> N_ExtractTransactionSetControlNumber_Node1 N_ExtractTransactionSetControlNumber_Node1 -- No --> E_ExtractTransactionSetControlNumber
File: GCX016.cbl
GIVEN:
An ST segment with transaction set control number is being processed
WHEN:
The system extracts the control number from the segment
THEN:
The control number should be stored for transaction boundary validation
File: GCX016.cbl
GIVEN:
A valid SE segment is being processed
WHEN:
The system extracts the transaction set control number
THEN:
The control number is captured for comparison with the corresponding ST segment
β Consolidated Acceptance Criteria
- The system validates the transaction set identifier → the system should accept valid EDI 350 transaction types and reject invalid identifier codes
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ValidTransactionSetID(["Start Step"])
E_ValidTransactionSetID(["End Step"])
N_ValidTransactionSetID_Node0{"The system validates the
transaction set identifier"}:::decision N_ValidTransactionSetID_Node0_action["The system should accept valid EDI
350 transaction types and reject
invalid identifier codes"]:::exclusion N_ValidTransactionSetID_Node0 -- Yes -->|Alternative| N_ValidTransactionSetID_Node0_action N_ValidTransactionSetID_Node0_action --> E_ValidTransactionSetID S_ValidTransactionSetID --> N_ValidTransactionSetID_Node0 N_ValidTransactionSetID_Node0 -- No --> E_ValidTransactionSetID
transaction set identifier"}:::decision N_ValidTransactionSetID_Node0_action["The system should accept valid EDI
350 transaction types and reject
invalid identifier codes"]:::exclusion N_ValidTransactionSetID_Node0 -- Yes -->|Alternative| N_ValidTransactionSetID_Node0_action N_ValidTransactionSetID_Node0_action --> E_ValidTransactionSetID S_ValidTransactionSetID --> N_ValidTransactionSetID_Node0 N_ValidTransactionSetID_Node0 -- No --> E_ValidTransactionSetID
File: GCX016.cbl
GIVEN:
A transaction set identifier code is extracted from the ST segment
WHEN:
The system validates the transaction set identifier
THEN:
- The system should accept valid edi 350 transaction types
- Reject invalid identifier codes
β Consolidated Acceptance Criteria
- The system initializes transaction set processing → the system should set up the transaction boundary and enable segment validation
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_InitializeTransactionSetProcessing(["Start Step"])
E_InitializeTransactionSetProcessing(["End Step"])
N_InitializeTransactionSetProcessing_Node0{"The system initializes transaction
set processing"}:::decision N_InitializeTransactionSetProcessing_Node0_action["The system should set up the
transaction boundary and enable
segment validation"]:::main N_InitializeTransactionSetProcessing_Node0 -- Yes --> N_InitializeTransactionSetProcessing_Node0_action N_InitializeTransactionSetProcessing_Node0_action --> E_InitializeTransactionSetProcessing S_InitializeTransactionSetProcessing --> N_InitializeTransactionSetProcessing_Node0 N_InitializeTransactionSetProcessing_Node0 -- No --> E_InitializeTransactionSetProcessing
set processing"}:::decision N_InitializeTransactionSetProcessing_Node0_action["The system should set up the
transaction boundary and enable
segment validation"]:::main N_InitializeTransactionSetProcessing_Node0 -- Yes --> N_InitializeTransactionSetProcessing_Node0_action N_InitializeTransactionSetProcessing_Node0_action --> E_InitializeTransactionSetProcessing S_InitializeTransactionSetProcessing --> N_InitializeTransactionSetProcessing_Node0 N_InitializeTransactionSetProcessing_Node0 -- No --> E_InitializeTransactionSetProcessing
File: GCX016.cbl
GIVEN:
A valid transaction set identifier has been validated
WHEN:
The system initializes transaction set processing
THEN:
- The system should set up the transaction boundary
- Enable segment validation
β Consolidated Acceptance Criteria
- The system sets the transaction set active flag → the active flag should be set to enable subsequent segment processing within the transaction boundary
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetTransactionSetActiveFlag(["Start Step"])
E_SetTransactionSetActiveFlag(["End Step"])
N_SetTransactionSetActiveFlag_Node0{"The system sets the transaction set
active flag"}:::decision N_SetTransactionSetActiveFlag_Node0_action["The active flag should be set to
enable subsequent segment processing
within the transaction boundary"]:::main N_SetTransactionSetActiveFlag_Node0 -- Yes --> N_SetTransactionSetActiveFlag_Node0_action N_SetTransactionSetActiveFlag_Node0_action --> E_SetTransactionSetActiveFlag S_SetTransactionSetActiveFlag --> N_SetTransactionSetActiveFlag_Node0 N_SetTransactionSetActiveFlag_Node0 -- No --> E_SetTransactionSetActiveFlag
active flag"}:::decision N_SetTransactionSetActiveFlag_Node0_action["The active flag should be set to
enable subsequent segment processing
within the transaction boundary"]:::main N_SetTransactionSetActiveFlag_Node0 -- Yes --> N_SetTransactionSetActiveFlag_Node0_action N_SetTransactionSetActiveFlag_Node0_action --> E_SetTransactionSetActiveFlag S_SetTransactionSetActiveFlag --> N_SetTransactionSetActiveFlag_Node0 N_SetTransactionSetActiveFlag_Node0 -- No --> E_SetTransactionSetActiveFlag
File: GCX016.cbl
GIVEN:
Transaction set processing has been successfully initialized
WHEN:
The system sets the transaction set active flag
THEN:
The active flag should be set to enable subsequent segment processing within the transaction boundary
β Consolidated Acceptance Criteria
- The system processes the invalid identifier → the system should generate an error message and skip the transaction set processing
- The system cannot find the EDI code in the recognized code list → the system generates an error message indicating the EDI code is invalid or unrecognized
- The system processes the rejection → an error message is generated indicating the FDA reference validation failure with specific details
- The system processes the validation failure → an error message is generated indicating the invalid disposition code
- System generates error notification → system creates error message indicating bond processing failure with cargo details and reason code
- The system detects invalid message structure or missing required data → the system generates appropriate error message describing the validation failure
- The system generates error notifications → an error message is created indicating bond number validation failure and appropriate corrective actions
- An error message is generated → the message indicates that disposition code could not be added due to array capacity limits
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GenerateErrorMessage(["Start Step"])
E_GenerateErrorMessage(["End Step"])
N_GenerateErrorMessage_Node0{"The system processes the invalid
identifier"}:::decision N_GenerateErrorMessage_Node0_action["The system should generate an error
message and skip the transaction set
processing"]:::exclusion N_GenerateErrorMessage_Node0 -- Yes -->|Alternative| N_GenerateErrorMessage_Node0_action N_GenerateErrorMessage_Node0_action --> E_GenerateErrorMessage S_GenerateErrorMessage --> N_GenerateErrorMessage_Node0 N_GenerateErrorMessage_Node1{"The system cannot find the EDI code
in the recognized code list"}:::decision N_GenerateErrorMessage_Node1_action["The system generates an error
message indicating the EDI code is
invalid or unrecognized"]:::main N_GenerateErrorMessage_Node1 -- Yes --> N_GenerateErrorMessage_Node1_action N_GenerateErrorMessage_Node1_action --> E_GenerateErrorMessage N_GenerateErrorMessage_Node0 -- No --> N_GenerateErrorMessage_Node1 N_GenerateErrorMessage_Node2{"The system processes the rejection"}:::decision N_GenerateErrorMessage_Node2_action["An error message is generated
indicating the FDA reference
validation failure with specific
details"]:::main N_GenerateErrorMessage_Node2 -- Yes --> N_GenerateErrorMessage_Node2_action N_GenerateErrorMessage_Node2_action --> E_GenerateErrorMessage N_GenerateErrorMessage_Node1 -- No --> N_GenerateErrorMessage_Node2 N_GenerateErrorMessage_Node3{"The system processes the validation
failure"}:::decision N_GenerateErrorMessage_Node3_action["An error message is generated
indicating the invalid disposition
code"]:::main N_GenerateErrorMessage_Node3 -- Yes --> N_GenerateErrorMessage_Node3_action N_GenerateErrorMessage_Node3_action --> E_GenerateErrorMessage N_GenerateErrorMessage_Node2 -- No --> N_GenerateErrorMessage_Node3 N_GenerateErrorMessage_Node4{"System generates error notification"}:::decision N_GenerateErrorMessage_Node4_action["System creates error message
indicating bond processing failure
with cargo details and reason code"]:::exclusion N_GenerateErrorMessage_Node4 -- Yes -->|Alternative| N_GenerateErrorMessage_Node4_action N_GenerateErrorMessage_Node4_action --> E_GenerateErrorMessage N_GenerateErrorMessage_Node3 -- No --> N_GenerateErrorMessage_Node4 N_GenerateErrorMessage_Node5{"The system detects invalid message
structure or missing required data"}:::decision N_GenerateErrorMessage_Node5_action["The system generates appropriate
error message describing the
validation failure"]:::exclusion N_GenerateErrorMessage_Node5 -- Yes -->|Alternative| N_GenerateErrorMessage_Node5_action N_GenerateErrorMessage_Node5_action --> E_GenerateErrorMessage N_GenerateErrorMessage_Node4 -- No --> N_GenerateErrorMessage_Node5 N_GenerateErrorMessage_Node6{"The system generates error
notifications"}:::decision N_GenerateErrorMessage_Node6_action["An error message is created
indicating bond number validation
failure and appropriate corrective
actions"]:::exclusion N_GenerateErrorMessage_Node6 -- Yes -->|Alternative| N_GenerateErrorMessage_Node6_action N_GenerateErrorMessage_Node6_action --> E_GenerateErrorMessage N_GenerateErrorMessage_Node5 -- No --> N_GenerateErrorMessage_Node6 N_GenerateErrorMessage_Node7{"An error message is generated"}:::decision N_GenerateErrorMessage_Node7_action["The message indicates that
disposition code could not be added
due to array capacity limits"]:::exclusion N_GenerateErrorMessage_Node7 -- Yes -->|Alternative| N_GenerateErrorMessage_Node7_action N_GenerateErrorMessage_Node7_action --> E_GenerateErrorMessage N_GenerateErrorMessage_Node6 -- No --> N_GenerateErrorMessage_Node7 N_GenerateErrorMessage_Node7 -- No --> E_GenerateErrorMessage
identifier"}:::decision N_GenerateErrorMessage_Node0_action["The system should generate an error
message and skip the transaction set
processing"]:::exclusion N_GenerateErrorMessage_Node0 -- Yes -->|Alternative| N_GenerateErrorMessage_Node0_action N_GenerateErrorMessage_Node0_action --> E_GenerateErrorMessage S_GenerateErrorMessage --> N_GenerateErrorMessage_Node0 N_GenerateErrorMessage_Node1{"The system cannot find the EDI code
in the recognized code list"}:::decision N_GenerateErrorMessage_Node1_action["The system generates an error
message indicating the EDI code is
invalid or unrecognized"]:::main N_GenerateErrorMessage_Node1 -- Yes --> N_GenerateErrorMessage_Node1_action N_GenerateErrorMessage_Node1_action --> E_GenerateErrorMessage N_GenerateErrorMessage_Node0 -- No --> N_GenerateErrorMessage_Node1 N_GenerateErrorMessage_Node2{"The system processes the rejection"}:::decision N_GenerateErrorMessage_Node2_action["An error message is generated
indicating the FDA reference
validation failure with specific
details"]:::main N_GenerateErrorMessage_Node2 -- Yes --> N_GenerateErrorMessage_Node2_action N_GenerateErrorMessage_Node2_action --> E_GenerateErrorMessage N_GenerateErrorMessage_Node1 -- No --> N_GenerateErrorMessage_Node2 N_GenerateErrorMessage_Node3{"The system processes the validation
failure"}:::decision N_GenerateErrorMessage_Node3_action["An error message is generated
indicating the invalid disposition
code"]:::main N_GenerateErrorMessage_Node3 -- Yes --> N_GenerateErrorMessage_Node3_action N_GenerateErrorMessage_Node3_action --> E_GenerateErrorMessage N_GenerateErrorMessage_Node2 -- No --> N_GenerateErrorMessage_Node3 N_GenerateErrorMessage_Node4{"System generates error notification"}:::decision N_GenerateErrorMessage_Node4_action["System creates error message
indicating bond processing failure
with cargo details and reason code"]:::exclusion N_GenerateErrorMessage_Node4 -- Yes -->|Alternative| N_GenerateErrorMessage_Node4_action N_GenerateErrorMessage_Node4_action --> E_GenerateErrorMessage N_GenerateErrorMessage_Node3 -- No --> N_GenerateErrorMessage_Node4 N_GenerateErrorMessage_Node5{"The system detects invalid message
structure or missing required data"}:::decision N_GenerateErrorMessage_Node5_action["The system generates appropriate
error message describing the
validation failure"]:::exclusion N_GenerateErrorMessage_Node5 -- Yes -->|Alternative| N_GenerateErrorMessage_Node5_action N_GenerateErrorMessage_Node5_action --> E_GenerateErrorMessage N_GenerateErrorMessage_Node4 -- No --> N_GenerateErrorMessage_Node5 N_GenerateErrorMessage_Node6{"The system generates error
notifications"}:::decision N_GenerateErrorMessage_Node6_action["An error message is created
indicating bond number validation
failure and appropriate corrective
actions"]:::exclusion N_GenerateErrorMessage_Node6 -- Yes -->|Alternative| N_GenerateErrorMessage_Node6_action N_GenerateErrorMessage_Node6_action --> E_GenerateErrorMessage N_GenerateErrorMessage_Node5 -- No --> N_GenerateErrorMessage_Node6 N_GenerateErrorMessage_Node7{"An error message is generated"}:::decision N_GenerateErrorMessage_Node7_action["The message indicates that
disposition code could not be added
due to array capacity limits"]:::exclusion N_GenerateErrorMessage_Node7 -- Yes -->|Alternative| N_GenerateErrorMessage_Node7_action N_GenerateErrorMessage_Node7_action --> E_GenerateErrorMessage N_GenerateErrorMessage_Node6 -- No --> N_GenerateErrorMessage_Node7 N_GenerateErrorMessage_Node7 -- No --> E_GenerateErrorMessage
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
An invalid transaction set identifier code is detected
WHEN:
The system processes the invalid identifier
THEN:
- The system should generate an error message
- Skip the transaction set processing
File: GCX016.cbl
GIVEN:
An EDI in-bond type code fails validation
WHEN:
The system cannot find the EDI code in the recognized code list
THEN:
The system generates an error message indicating the EDI code is invalid or unrecognized
File: GCX016.cbl
GIVEN:
An invalid FDA reference has been rejected
WHEN:
The system processes the rejection
THEN:
An error message is generated indicating the FDA reference validation failure with specific details
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
A disposition code is not found in the DC table
WHEN:
The system processes the validation failure
THEN:
An error message is generated indicating the invalid disposition code
File: GCX016.cbl
GIVEN:
Failed bond validation or missing bond information for proceed code
WHEN:
System generates error notification
THEN:
- System creates error message indicating bond processing failure with cargo details
- Reason code
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
Train message structure validation fails
WHEN:
The system detects invalid message structure or missing required data
THEN:
The system generates appropriate error message describing the validation failure
File: GCX016.cbl
GIVEN:
A bond validation error has been logged
WHEN:
The system generates error notifications
THEN:
- An error message is created indicating bond number validation failure
- Appropriate corrective actions
File: GCX016.cbl
GIVEN:
New code addition has been skipped due to overflow
WHEN:
An error message is generated
THEN:
The message indicates that disposition code could not be added due to array capacity limits
β Consolidated Acceptance Criteria
- The system processes the M10 segment → the system extracts SCAC code from M10-02, equipment initial from M10-03, and equipment number from M10-04 to build the train identification key
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExtractTrainInformationfromM10(["Start Step"])
E_ExtractTrainInformationfromM10(["End Step"])
N_ExtractTrainInformationfromM10_Node0{"The system processes the M10
segment"}:::decision N_ExtractTrainInformationfromM10_Node0_action["The system extracts SCAC code from
M10-02, equipment initial from
M10-03, and equipment number from
M10-04 to build the train
identification key"]:::main N_ExtractTrainInformationfromM10_Node0 -- Yes --> N_ExtractTrainInformationfromM10_Node0_action N_ExtractTrainInformationfromM10_Node0_action --> E_ExtractTrainInformationfromM10 S_ExtractTrainInformationfromM10 --> N_ExtractTrainInformationfromM10_Node0 N_ExtractTrainInformationfromM10_Node0 -- No --> E_ExtractTrainInformationfromM10
segment"}:::decision N_ExtractTrainInformationfromM10_Node0_action["The system extracts SCAC code from
M10-02, equipment initial from
M10-03, and equipment number from
M10-04 to build the train
identification key"]:::main N_ExtractTrainInformationfromM10_Node0 -- Yes --> N_ExtractTrainInformationfromM10_Node0_action N_ExtractTrainInformationfromM10_Node0_action --> E_ExtractTrainInformationfromM10 S_ExtractTrainInformationfromM10 --> N_ExtractTrainInformationfromM10_Node0 N_ExtractTrainInformationfromM10_Node0 -- No --> E_ExtractTrainInformationfromM10
File: GCX016.cbl
GIVEN:
An M10 manifest segment is received with train information
WHEN:
The system processes the M10 segment
THEN:
The system extracts SCAC code from M10-02, equipment initial from M10-03, and equipment number from M10-04 to build the train identification key
β Consolidated Acceptance Criteria
- The system searches the train list database → the system determines if the train exists in the GCWTL-TRAIN-LIST database and sets appropriate found/not found flags
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SearchTrainListDatabase(["Start Step"])
E_SearchTrainListDatabase(["End Step"])
N_SearchTrainListDatabase_Node0{"The system searches the train list
database"}:::decision N_SearchTrainListDatabase_Node0_action["The system determines if the train
exists in the GCWTL-TRAIN-LIST
database and sets appropriate
foundnot found flags"]:::main N_SearchTrainListDatabase_Node0 -- Yes --> N_SearchTrainListDatabase_Node0_action N_SearchTrainListDatabase_Node0_action --> E_SearchTrainListDatabase S_SearchTrainListDatabase --> N_SearchTrainListDatabase_Node0 N_SearchTrainListDatabase_Node0 -- No --> E_SearchTrainListDatabase
database"}:::decision N_SearchTrainListDatabase_Node0_action["The system determines if the train
exists in the GCWTL-TRAIN-LIST
database and sets appropriate
foundnot found flags"]:::main N_SearchTrainListDatabase_Node0 -- Yes --> N_SearchTrainListDatabase_Node0_action N_SearchTrainListDatabase_Node0_action --> E_SearchTrainListDatabase S_SearchTrainListDatabase --> N_SearchTrainListDatabase_Node0 N_SearchTrainListDatabase_Node0 -- No --> E_SearchTrainListDatabase
File: GCX016.cbl
GIVEN:
A train identification key has been built from M10 segment data
WHEN:
The system searches the train list database
THEN:
- The system determines if the train exists in the gcwtl-train-list database
- Sets appropriate found/not found flags
β Consolidated Acceptance Criteria
- If the search results → if the train is found, the system proceeds to validate train status; if not found, the system generates a train not found error
- If the train validation result → if train is found, continue with train operations; if train is not found, generate train not found error
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_TrainFoundinSystem(["Start Step"])
E_TrainFoundinSystem(["End Step"])
N_TrainFoundinSystem_Node0{"The system evaluates the search
results"}:::decision N_TrainFoundinSystem_Node0_action["If the train is found, the system
proceeds to validate train status if
not found, the system generates a
train not found error"]:::main N_TrainFoundinSystem_Node0 -- Yes --> N_TrainFoundinSystem_Node0_action N_TrainFoundinSystem_Node0_action --> E_TrainFoundinSystem S_TrainFoundinSystem --> N_TrainFoundinSystem_Node0 N_TrainFoundinSystem_Node1{"The system evaluates the train
validation result"}:::decision N_TrainFoundinSystem_Node1_action["If train is found, continue with
train operations if train is not
found, generate train not found
error"]:::main N_TrainFoundinSystem_Node1 -- Yes --> N_TrainFoundinSystem_Node1_action N_TrainFoundinSystem_Node1_action --> E_TrainFoundinSystem N_TrainFoundinSystem_Node0 -- No --> N_TrainFoundinSystem_Node1 N_TrainFoundinSystem_Node1 -- No --> E_TrainFoundinSystem
results"}:::decision N_TrainFoundinSystem_Node0_action["If the train is found, the system
proceeds to validate train status if
not found, the system generates a
train not found error"]:::main N_TrainFoundinSystem_Node0 -- Yes --> N_TrainFoundinSystem_Node0_action N_TrainFoundinSystem_Node0_action --> E_TrainFoundinSystem S_TrainFoundinSystem --> N_TrainFoundinSystem_Node0 N_TrainFoundinSystem_Node1{"The system evaluates the train
validation result"}:::decision N_TrainFoundinSystem_Node1_action["If train is found, continue with
train operations if train is not
found, generate train not found
error"]:::main N_TrainFoundinSystem_Node1 -- Yes --> N_TrainFoundinSystem_Node1_action N_TrainFoundinSystem_Node1_action --> E_TrainFoundinSystem N_TrainFoundinSystem_Node0 -- No --> N_TrainFoundinSystem_Node1 N_TrainFoundinSystem_Node1 -- No --> E_TrainFoundinSystem
File: GCX016.cbl
GIVEN:
The train database search has been completed
WHEN:
The system evaluates the search results
THEN:
If the train is found, the system proceeds to validate train status; if not found, the system generates a train not found error
File: GCX016.cbl
GIVEN:
Train validation has been completed against GCWTL-TRAIN-LIST database
WHEN:
The system evaluates the train validation result
THEN:
If train is found, continue with train operations; if train is not found, generate train not found error
β Consolidated Acceptance Criteria
- The system validates the train status → the system verifies the train is in an acceptable operational state for processing manifest information
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ValidateTrainStatus(["Start Step"])
E_ValidateTrainStatus(["End Step"])
N_ValidateTrainStatus_Node0{"The system validates the train
status"}:::decision N_ValidateTrainStatus_Node0_action["The system verifies the train is in
an acceptable operational state for
processing manifest information"]:::main N_ValidateTrainStatus_Node0 -- Yes --> N_ValidateTrainStatus_Node0_action N_ValidateTrainStatus_Node0_action --> E_ValidateTrainStatus S_ValidateTrainStatus --> N_ValidateTrainStatus_Node0 N_ValidateTrainStatus_Node0 -- No --> E_ValidateTrainStatus
status"}:::decision N_ValidateTrainStatus_Node0_action["The system verifies the train is in
an acceptable operational state for
processing manifest information"]:::main N_ValidateTrainStatus_Node0 -- Yes --> N_ValidateTrainStatus_Node0_action N_ValidateTrainStatus_Node0_action --> E_ValidateTrainStatus S_ValidateTrainStatus --> N_ValidateTrainStatus_Node0 N_ValidateTrainStatus_Node0 -- No --> E_ValidateTrainStatus
File: GCX016.cbl
GIVEN:
A train has been found in the train list database
WHEN:
The system validates the train status
THEN:
The system verifies the train is in an acceptable operational state for processing manifest information
β Consolidated Acceptance Criteria
- The system completes train validation → the system sets the train processing flag to indicate the train is ready for manifest processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetTrainProcessingFlag(["Start Step"])
E_SetTrainProcessingFlag(["End Step"])
N_SetTrainProcessingFlag_Node0{"The system completes train
validation"}:::decision N_SetTrainProcessingFlag_Node0_action["The system sets the train
processing flag to indicate the
train is ready for manifest
processing"]:::main N_SetTrainProcessingFlag_Node0 -- Yes --> N_SetTrainProcessingFlag_Node0_action N_SetTrainProcessingFlag_Node0_action --> E_SetTrainProcessingFlag S_SetTrainProcessingFlag --> N_SetTrainProcessingFlag_Node0 N_SetTrainProcessingFlag_Node0 -- No --> E_SetTrainProcessingFlag
validation"}:::decision N_SetTrainProcessingFlag_Node0_action["The system sets the train
processing flag to indicate the
train is ready for manifest
processing"]:::main N_SetTrainProcessingFlag_Node0 -- Yes --> N_SetTrainProcessingFlag_Node0_action N_SetTrainProcessingFlag_Node0_action --> E_SetTrainProcessingFlag S_SetTrainProcessingFlag --> N_SetTrainProcessingFlag_Node0 N_SetTrainProcessingFlag_Node0 -- No --> E_SetTrainProcessingFlag
File: GCX016.cbl
GIVEN:
A train has been successfully validated
WHEN:
The system completes train validation
THEN:
The system sets the train processing flag to indicate the train is ready for manifest processing
β Consolidated Acceptance Criteria
- The system processes the not found condition → the system generates a train not found error and initiates error notification procedures
- The system processes the train not found condition → generate train not found error message and prepare error notification for operations
- Train validation fails → the system generates a 'Train Not Found' error with relevant train identifier
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GenerateTrainNotFoundError(["Start Step"])
E_GenerateTrainNotFoundError(["End Step"])
N_GenerateTrainNotFoundError_Node0{"The system processes the not found
condition"}:::decision N_GenerateTrainNotFoundError_Node0_action["The system generates a train not
found error and initiates error
notification procedures"]:::main N_GenerateTrainNotFoundError_Node0 -- Yes --> N_GenerateTrainNotFoundError_Node0_action N_GenerateTrainNotFoundError_Node0_action --> E_GenerateTrainNotFoundError S_GenerateTrainNotFoundError --> N_GenerateTrainNotFoundError_Node0 N_GenerateTrainNotFoundError_Node1{"The system processes the train not
found condition"}:::decision N_GenerateTrainNotFoundError_Node1_action["Generate train not found error
message and prepare error
notification for operations"]:::main N_GenerateTrainNotFoundError_Node1 -- Yes --> N_GenerateTrainNotFoundError_Node1_action N_GenerateTrainNotFoundError_Node1_action --> E_GenerateTrainNotFoundError N_GenerateTrainNotFoundError_Node0 -- No --> N_GenerateTrainNotFoundError_Node1 N_GenerateTrainNotFoundError_Node2{"Train validation fails"}:::decision N_GenerateTrainNotFoundError_Node2_action["The system generates a Train Not
Found error with relevant train
identifier"]:::main N_GenerateTrainNotFoundError_Node2 -- Yes --> N_GenerateTrainNotFoundError_Node2_action N_GenerateTrainNotFoundError_Node2_action --> E_GenerateTrainNotFoundError N_GenerateTrainNotFoundError_Node1 -- No --> N_GenerateTrainNotFoundError_Node2 N_GenerateTrainNotFoundError_Node2 -- No --> E_GenerateTrainNotFoundError
condition"}:::decision N_GenerateTrainNotFoundError_Node0_action["The system generates a train not
found error and initiates error
notification procedures"]:::main N_GenerateTrainNotFoundError_Node0 -- Yes --> N_GenerateTrainNotFoundError_Node0_action N_GenerateTrainNotFoundError_Node0_action --> E_GenerateTrainNotFoundError S_GenerateTrainNotFoundError --> N_GenerateTrainNotFoundError_Node0 N_GenerateTrainNotFoundError_Node1{"The system processes the train not
found condition"}:::decision N_GenerateTrainNotFoundError_Node1_action["Generate train not found error
message and prepare error
notification for operations"]:::main N_GenerateTrainNotFoundError_Node1 -- Yes --> N_GenerateTrainNotFoundError_Node1_action N_GenerateTrainNotFoundError_Node1_action --> E_GenerateTrainNotFoundError N_GenerateTrainNotFoundError_Node0 -- No --> N_GenerateTrainNotFoundError_Node1 N_GenerateTrainNotFoundError_Node2{"Train validation fails"}:::decision N_GenerateTrainNotFoundError_Node2_action["The system generates a Train Not
Found error with relevant train
identifier"]:::main N_GenerateTrainNotFoundError_Node2 -- Yes --> N_GenerateTrainNotFoundError_Node2_action N_GenerateTrainNotFoundError_Node2_action --> E_GenerateTrainNotFoundError N_GenerateTrainNotFoundError_Node1 -- No --> N_GenerateTrainNotFoundError_Node2 N_GenerateTrainNotFoundError_Node2 -- No --> E_GenerateTrainNotFoundError
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
A train search has been completed and the train was not found
WHEN:
The system processes the not found condition
THEN:
- The system generates a train not found error
- Initiates error notification procedures
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
Train validation has failed and train is not found in GCWTL-TRAIN-LIST database
WHEN:
The system processes the train not found condition
THEN:
- Generate train not found error message
- Prepare error notification for operations
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
A train arrival event references a train that does not exist in the system
WHEN:
Train validation fails
THEN:
The system generates a 'Train Not Found' error with relevant train identifier
β Consolidated Acceptance Criteria
- The system formats the error message → the system includes the SCAC code, equipment initial, equipment number, and other relevant train details in the error message using data from GCSTBRT error tables
- The system formats the warning message → the message includes instructions to re-arrive the train or contact USCS with train identification details
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_FormatErrorMessagewithTrainDetails(["Start Step"])
E_FormatErrorMessagewithTrainDetails(["End Step"])
N_FormatErrorMessagewithTrainDetails_Node0{"The system formats the error
message"}:::decision N_FormatErrorMessagewithTrainDetails_Node0_action["The system includes the SCAC code,
equipment initial, equipment number,
and other relevant train details in
the error message using data from
GCSTBRT error tables"]:::exclusion N_FormatErrorMessagewithTrainDetails_Node0 -- Yes -->|Alternative| N_FormatErrorMessagewithTrainDetails_Node0_action N_FormatErrorMessagewithTrainDetails_Node0_action --> E_FormatErrorMessagewithTrainDetails S_FormatErrorMessagewithTrainDetails --> N_FormatErrorMessagewithTrainDetails_Node0 N_FormatErrorMessagewithTrainDetails_Node1{"The system formats the warning
message"}:::decision N_FormatErrorMessagewithTrainDetails_Node1_action["The message includes instructions
to re-arrive the train or contact
USCS with train identification
details"]:::main N_FormatErrorMessagewithTrainDetails_Node1 -- Yes --> N_FormatErrorMessagewithTrainDetails_Node1_action N_FormatErrorMessagewithTrainDetails_Node1_action --> E_FormatErrorMessagewithTrainDetails N_FormatErrorMessagewithTrainDetails_Node0 -- No --> N_FormatErrorMessagewithTrainDetails_Node1 N_FormatErrorMessagewithTrainDetails_Node1 -- No --> E_FormatErrorMessagewithTrainDetails
message"}:::decision N_FormatErrorMessagewithTrainDetails_Node0_action["The system includes the SCAC code,
equipment initial, equipment number,
and other relevant train details in
the error message using data from
GCSTBRT error tables"]:::exclusion N_FormatErrorMessagewithTrainDetails_Node0 -- Yes -->|Alternative| N_FormatErrorMessagewithTrainDetails_Node0_action N_FormatErrorMessagewithTrainDetails_Node0_action --> E_FormatErrorMessagewithTrainDetails S_FormatErrorMessagewithTrainDetails --> N_FormatErrorMessagewithTrainDetails_Node0 N_FormatErrorMessagewithTrainDetails_Node1{"The system formats the warning
message"}:::decision N_FormatErrorMessagewithTrainDetails_Node1_action["The message includes instructions
to re-arrive the train or contact
USCS with train identification
details"]:::main N_FormatErrorMessagewithTrainDetails_Node1 -- Yes --> N_FormatErrorMessagewithTrainDetails_Node1_action N_FormatErrorMessagewithTrainDetails_Node1_action --> E_FormatErrorMessagewithTrainDetails N_FormatErrorMessagewithTrainDetails_Node0 -- No --> N_FormatErrorMessagewithTrainDetails_Node1 N_FormatErrorMessagewithTrainDetails_Node1 -- No --> E_FormatErrorMessagewithTrainDetails
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
A train not found error has been generated
WHEN:
The system formats the error message
THEN:
The system includes the SCAC code, equipment initial, equipment number, and other relevant train details in the error message using data from GCSTBRT error tables
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
A train not arrived condition has been identified for OCA processing
WHEN:
The system formats the warning message
THEN:
The message includes instructions to re-arrive the train or contact USCS with train identification details
β Consolidated Acceptance Criteria
- The system sends the error notification → the system delivers the error notification to operations personnel through the designated notification channels
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SendErrorNotificationtoOperations(["Start Step"])
E_SendErrorNotificationtoOperations(["End Step"])
N_SendErrorNotificationtoOperations_Node0{"The system sends the error
notification"}:::decision N_SendErrorNotificationtoOperations_Node0_action["The system delivers the error
notification to operations personnel
through the designated notification
channels"]:::exclusion N_SendErrorNotificationtoOperations_Node0 -- Yes -->|Alternative| N_SendErrorNotificationtoOperations_Node0_action N_SendErrorNotificationtoOperations_Node0_action --> E_SendErrorNotificationtoOperations S_SendErrorNotificationtoOperations --> N_SendErrorNotificationtoOperations_Node0 N_SendErrorNotificationtoOperations_Node0 -- No --> E_SendErrorNotificationtoOperations
notification"}:::decision N_SendErrorNotificationtoOperations_Node0_action["The system delivers the error
notification to operations personnel
through the designated notification
channels"]:::exclusion N_SendErrorNotificationtoOperations_Node0 -- Yes -->|Alternative| N_SendErrorNotificationtoOperations_Node0_action N_SendErrorNotificationtoOperations_Node0_action --> E_SendErrorNotificationtoOperations S_SendErrorNotificationtoOperations --> N_SendErrorNotificationtoOperations_Node0 N_SendErrorNotificationtoOperations_Node0 -- No --> E_SendErrorNotificationtoOperations
File: GCX016.cbl
GIVEN:
An error message has been formatted with train details
WHEN:
The system sends the error notification
THEN:
The system delivers the error notification to operations personnel through the designated notification channels
β Consolidated Acceptance Criteria
- The system logs the validation failure → the system records the train validation failure details in the system audit log for future reference and analysis
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogTrainValidationFailure(["Start Step"])
E_LogTrainValidationFailure(["End Step"])
N_LogTrainValidationFailure_Node0{"The system logs the validation
failure"}:::decision N_LogTrainValidationFailure_Node0_action["The system records the train
validation failure details in the
system audit log for future
reference and analysis"]:::main N_LogTrainValidationFailure_Node0 -- Yes --> N_LogTrainValidationFailure_Node0_action N_LogTrainValidationFailure_Node0_action --> E_LogTrainValidationFailure S_LogTrainValidationFailure --> N_LogTrainValidationFailure_Node0 N_LogTrainValidationFailure_Node0 -- No --> E_LogTrainValidationFailure
failure"}:::decision N_LogTrainValidationFailure_Node0_action["The system records the train
validation failure details in the
system audit log for future
reference and analysis"]:::main N_LogTrainValidationFailure_Node0 -- Yes --> N_LogTrainValidationFailure_Node0_action N_LogTrainValidationFailure_Node0_action --> E_LogTrainValidationFailure S_LogTrainValidationFailure --> N_LogTrainValidationFailure_Node0 N_LogTrainValidationFailure_Node0 -- No --> E_LogTrainValidationFailure
File: GCX016.cbl
GIVEN:
An error notification has been sent to operations
WHEN:
The system logs the validation failure
THEN:
- The system records the train validation failure details in the system audit log for future reference
- Analysis
β Consolidated Acceptance Criteria
- The system processes the successful validation → the system marks the train processing as successful and prepares to continue processing other manifest segments
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ProcessTrainInformationSuccessfully(["Start Step"])
E_ProcessTrainInformationSuccessfully(["End Step"])
N_ProcessTrainInformationSuccessfully_Node0{"The system processes the successful
validation"}:::decision N_ProcessTrainInformationSuccessfully_Node0_action["The system marks the train
processing as successful and
prepares to continue processing
other manifest segments"]:::main N_ProcessTrainInformationSuccessfully_Node0 -- Yes --> N_ProcessTrainInformationSuccessfully_Node0_action N_ProcessTrainInformationSuccessfully_Node0_action --> E_ProcessTrainInformationSuccessfully S_ProcessTrainInformationSuccessfully --> N_ProcessTrainInformationSuccessfully_Node0 N_ProcessTrainInformationSuccessfully_Node0 -- No --> E_ProcessTrainInformationSuccessfully
validation"}:::decision N_ProcessTrainInformationSuccessfully_Node0_action["The system marks the train
processing as successful and
prepares to continue processing
other manifest segments"]:::main N_ProcessTrainInformationSuccessfully_Node0 -- Yes --> N_ProcessTrainInformationSuccessfully_Node0_action N_ProcessTrainInformationSuccessfully_Node0_action --> E_ProcessTrainInformationSuccessfully S_ProcessTrainInformationSuccessfully --> N_ProcessTrainInformationSuccessfully_Node0 N_ProcessTrainInformationSuccessfully_Node0 -- No --> E_ProcessTrainInformationSuccessfully
File: GCX016.cbl
GIVEN:
Train validation and status checks have been completed successfully
WHEN:
The system processes the successful validation
THEN:
- The system marks the train processing as successful
- Prepares to continue processing other manifest segments
β Consolidated Acceptance Criteria
- The system continues manifest processing → the system proceeds to process other segments in the manifest message to ensure complete message handling
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ContinueProcessingOtherSegments(["Start Step"])
E_ContinueProcessingOtherSegments(["End Step"])
N_ContinueProcessingOtherSegments_Node0{"The system continues manifest
processing"}:::decision N_ContinueProcessingOtherSegments_Node0_action["The system proceeds to process
other segments in the manifest
message to ensure complete message
handling"]:::main N_ContinueProcessingOtherSegments_Node0 -- Yes --> N_ContinueProcessingOtherSegments_Node0_action N_ContinueProcessingOtherSegments_Node0_action --> E_ContinueProcessingOtherSegments S_ContinueProcessingOtherSegments --> N_ContinueProcessingOtherSegments_Node0 N_ContinueProcessingOtherSegments_Node0 -- No --> E_ContinueProcessingOtherSegments
processing"}:::decision N_ContinueProcessingOtherSegments_Node0_action["The system proceeds to process
other segments in the manifest
message to ensure complete message
handling"]:::main N_ContinueProcessingOtherSegments_Node0 -- Yes --> N_ContinueProcessingOtherSegments_Node0_action N_ContinueProcessingOtherSegments_Node0_action --> E_ContinueProcessingOtherSegments S_ContinueProcessingOtherSegments --> N_ContinueProcessingOtherSegments_Node0 N_ContinueProcessingOtherSegments_Node0 -- No --> E_ContinueProcessingOtherSegments
File: GCX016.cbl
GIVEN:
Train processing has been completed (either successfully or with errors logged)
WHEN:
The system continues manifest processing
THEN:
The system proceeds to process other segments in the manifest message to ensure complete message handling
β Consolidated Acceptance Criteria
- The system searches the GCWTL-TRAIN-LIST database for the train → the system determines if the train exists and sets appropriate validation flags
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SearchGCWTLTRAINLISTDatabase(["Start Step"])
E_SearchGCWTLTRAINLISTDatabase(["End Step"])
N_SearchGCWTLTRAINLISTDatabase_Node0{"The system searches the
GCWTL-TRAIN-LIST database for the
train"}:::decision N_SearchGCWTLTRAINLISTDatabase_Node0_action["The system determines if the train
exists and sets appropriate
validation flags"]:::main N_SearchGCWTLTRAINLISTDatabase_Node0 -- Yes --> N_SearchGCWTLTRAINLISTDatabase_Node0_action N_SearchGCWTLTRAINLISTDatabase_Node0_action --> E_SearchGCWTLTRAINLISTDatabase S_SearchGCWTLTRAINLISTDatabase --> N_SearchGCWTLTRAINLISTDatabase_Node0 N_SearchGCWTLTRAINLISTDatabase_Node0 -- No --> E_SearchGCWTLTRAINLISTDatabase
GCWTL-TRAIN-LIST database for the
train"}:::decision N_SearchGCWTLTRAINLISTDatabase_Node0_action["The system determines if the train
exists and sets appropriate
validation flags"]:::main N_SearchGCWTLTRAINLISTDatabase_Node0 -- Yes --> N_SearchGCWTLTRAINLISTDatabase_Node0_action N_SearchGCWTLTRAINLISTDatabase_Node0_action --> E_SearchGCWTLTRAINLISTDatabase S_SearchGCWTLTRAINLISTDatabase --> N_SearchGCWTLTRAINLISTDatabase_Node0 N_SearchGCWTLTRAINLISTDatabase_Node0 -- No --> E_SearchGCWTLTRAINLISTDatabase
File: GCX016.cbl
GIVEN:
A train identifier is extracted from M10 manifest segment
WHEN:
The system searches the GCWTL-TRAIN-LIST database for the train
THEN:
- The system determines if the train exists
- Sets appropriate validation flags
β Consolidated Acceptance Criteria
- The system processes the successful validation result → set train validation successful status and continue with normal train operations
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_TrainValidationSuccessful(["Start Step"])
E_TrainValidationSuccessful(["End Step"])
N_TrainValidationSuccessful_Node0{"The system processes the successful
validation result"}:::decision N_TrainValidationSuccessful_Node0_action["Set train validation successful
status and continue with normal
train operations"]:::main N_TrainValidationSuccessful_Node0 -- Yes --> N_TrainValidationSuccessful_Node0_action N_TrainValidationSuccessful_Node0_action --> E_TrainValidationSuccessful S_TrainValidationSuccessful --> N_TrainValidationSuccessful_Node0 N_TrainValidationSuccessful_Node0 -- No --> E_TrainValidationSuccessful
validation result"}:::decision N_TrainValidationSuccessful_Node0_action["Set train validation successful
status and continue with normal
train operations"]:::main N_TrainValidationSuccessful_Node0 -- Yes --> N_TrainValidationSuccessful_Node0_action N_TrainValidationSuccessful_Node0_action --> E_TrainValidationSuccessful S_TrainValidationSuccessful --> N_TrainValidationSuccessful_Node0 N_TrainValidationSuccessful_Node0 -- No --> E_TrainValidationSuccessful
File: GCX016.cbl
GIVEN:
Train has been successfully found in GCWTL-TRAIN-LIST database
WHEN:
The system processes the successful validation result
THEN:
- Set train validation successful status
- Continue with normal train operations
β Consolidated Acceptance Criteria
- The system processes the error notification requirement → send error message to operations team with train identification details
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SendErrorMessagetoOperations(["Start Step"])
E_SendErrorMessagetoOperations(["End Step"])
N_SendErrorMessagetoOperations_Node0{"The system processes the error
notification requirement"}:::decision N_SendErrorMessagetoOperations_Node0_action["Send error message to operations
team with train identification
details"]:::exclusion N_SendErrorMessagetoOperations_Node0 -- Yes -->|Alternative| N_SendErrorMessagetoOperations_Node0_action N_SendErrorMessagetoOperations_Node0_action --> E_SendErrorMessagetoOperations S_SendErrorMessagetoOperations --> N_SendErrorMessagetoOperations_Node0 N_SendErrorMessagetoOperations_Node0 -- No --> E_SendErrorMessagetoOperations
notification requirement"}:::decision N_SendErrorMessagetoOperations_Node0_action["Send error message to operations
team with train identification
details"]:::exclusion N_SendErrorMessagetoOperations_Node0 -- Yes -->|Alternative| N_SendErrorMessagetoOperations_Node0_action N_SendErrorMessagetoOperations_Node0_action --> E_SendErrorMessagetoOperations S_SendErrorMessagetoOperations --> N_SendErrorMessagetoOperations_Node0 N_SendErrorMessagetoOperations_Node0 -- No --> E_SendErrorMessagetoOperations
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
Train not found error has been generated
WHEN:
The system processes the error notification requirement
THEN:
Send error message to operations team with train identification details
β Consolidated Acceptance Criteria
- The system processes the logging requirement → log the train not found event with timestamp and train identification details
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogTrainNotFoundEvent(["Start Step"])
E_LogTrainNotFoundEvent(["End Step"])
N_LogTrainNotFoundEvent_Node0{"The system processes the logging
requirement"}:::decision N_LogTrainNotFoundEvent_Node0_action["Log the train not found event with
timestamp and train identification
details"]:::main N_LogTrainNotFoundEvent_Node0 -- Yes --> N_LogTrainNotFoundEvent_Node0_action N_LogTrainNotFoundEvent_Node0_action --> E_LogTrainNotFoundEvent S_LogTrainNotFoundEvent --> N_LogTrainNotFoundEvent_Node0 N_LogTrainNotFoundEvent_Node0 -- No --> E_LogTrainNotFoundEvent
requirement"}:::decision N_LogTrainNotFoundEvent_Node0_action["Log the train not found event with
timestamp and train identification
details"]:::main N_LogTrainNotFoundEvent_Node0 -- Yes --> N_LogTrainNotFoundEvent_Node0_action N_LogTrainNotFoundEvent_Node0_action --> E_LogTrainNotFoundEvent S_LogTrainNotFoundEvent --> N_LogTrainNotFoundEvent_Node0 N_LogTrainNotFoundEvent_Node0 -- No --> E_LogTrainNotFoundEvent
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
Train not found error message has been sent to operations
WHEN:
The system processes the logging requirement
THEN:
- Log the train not found event with timestamp
- Train identification details
β Consolidated Acceptance Criteria
- The system determines next processing step → skip all subsequent train processing operations and terminate the train workflow
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SkipTrainProcessing(["Start Step"])
E_SkipTrainProcessing(["End Step"])
N_SkipTrainProcessing_Node0{"The system determines next
processing step"}:::decision N_SkipTrainProcessing_Node0_action["Skip all subsequent train
processing operations and terminate
the train workflow"]:::exclusion N_SkipTrainProcessing_Node0 -- Yes -->|Alternative| N_SkipTrainProcessing_Node0_action N_SkipTrainProcessing_Node0_action --> E_SkipTrainProcessing S_SkipTrainProcessing --> N_SkipTrainProcessing_Node0 N_SkipTrainProcessing_Node0 -- No --> E_SkipTrainProcessing
processing step"}:::decision N_SkipTrainProcessing_Node0_action["Skip all subsequent train
processing operations and terminate
the train workflow"]:::exclusion N_SkipTrainProcessing_Node0 -- Yes -->|Alternative| N_SkipTrainProcessing_Node0_action N_SkipTrainProcessing_Node0_action --> E_SkipTrainProcessing S_SkipTrainProcessing --> N_SkipTrainProcessing_Node0 N_SkipTrainProcessing_Node0 -- No --> E_SkipTrainProcessing
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
Train not found event has been logged
WHEN:
The system determines next processing step
THEN:
- Skip all subsequent train processing operations
- Terminate the train workflow
β Consolidated Acceptance Criteria
- The system processes message segments → the system calls B200-PROCESS-P4-SEGMENT to handle port information processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_P4SegmentReceived(["Start Step"])
E_P4SegmentReceived(["End Step"])
N_P4SegmentReceived_Node0{"The system processes message
segments"}:::decision N_P4SegmentReceived_Node0_action["The system calls
B200-PROCESS-P4-SEGMENT to handle
port information processing"]:::main N_P4SegmentReceived_Node0 -- Yes --> N_P4SegmentReceived_Node0_action N_P4SegmentReceived_Node0_action --> E_P4SegmentReceived S_P4SegmentReceived --> N_P4SegmentReceived_Node0 N_P4SegmentReceived_Node0 -- No --> E_P4SegmentReceived
segments"}:::decision N_P4SegmentReceived_Node0_action["The system calls
B200-PROCESS-P4-SEGMENT to handle
port information processing"]:::main N_P4SegmentReceived_Node0 -- Yes --> N_P4SegmentReceived_Node0_action N_P4SegmentReceived_Node0_action --> E_P4SegmentReceived S_P4SegmentReceived --> N_P4SegmentReceived_Node0 N_P4SegmentReceived_Node0 -- No --> E_P4SegmentReceived
File: GCX016.cbl
GIVEN:
A message contains a P4 segment type
WHEN:
The system processes message segments
THEN:
The system calls B200-PROCESS-P4-SEGMENT to handle port information processing
β Consolidated Acceptance Criteria
- The system processes the HMI disposition code → the train status is updated to HELD and VID segments are processed for equipment holds
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_HMITrainHoldOperations(["Start Step"])
E_HMITrainHoldOperations(["End Step"])
N_HMITrainHoldOperations_Node0{"The system processes the HMI
disposition code"}:::decision N_HMITrainHoldOperations_Node0_action["The train status is updated to HELD
and VID segments are processed for
equipment holds"]:::main N_HMITrainHoldOperations_Node0 -- Yes --> N_HMITrainHoldOperations_Node0_action N_HMITrainHoldOperations_Node0_action --> E_HMITrainHoldOperations S_HMITrainHoldOperations --> N_HMITrainHoldOperations_Node0 N_HMITrainHoldOperations_Node0 -- No --> E_HMITrainHoldOperations
disposition code"}:::decision N_HMITrainHoldOperations_Node0_action["The train status is updated to HELD
and VID segments are processed for
equipment holds"]:::main N_HMITrainHoldOperations_Node0 -- Yes --> N_HMITrainHoldOperations_Node0_action N_HMITrainHoldOperations_Node0_action --> E_HMITrainHoldOperations S_HMITrainHoldOperations --> N_HMITrainHoldOperations_Node0 N_HMITrainHoldOperations_Node0 -- No --> E_HMITrainHoldOperations
File: GCX016.cbl
GIVEN:
A V9 event detail segment is received with disposition code HMI
WHEN:
The system processes the HMI disposition code
THEN:
- The train status is updated to held
- Vid segments are processed for equipment holds
β Consolidated Acceptance Criteria
- The system processes the HRE disposition code → the train status is updated to RELEASED and VID segments are processed for equipment releases
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_HRETrainReleaseOperations(["Start Step"])
E_HRETrainReleaseOperations(["End Step"])
N_HRETrainReleaseOperations_Node0{"The system processes the HRE
disposition code"}:::decision N_HRETrainReleaseOperations_Node0_action["The train status is updated to
RELEASED and VID segments are
processed for equipment releases"]:::main N_HRETrainReleaseOperations_Node0 -- Yes --> N_HRETrainReleaseOperations_Node0_action N_HRETrainReleaseOperations_Node0_action --> E_HRETrainReleaseOperations S_HRETrainReleaseOperations --> N_HRETrainReleaseOperations_Node0 N_HRETrainReleaseOperations_Node0 -- No --> E_HRETrainReleaseOperations
disposition code"}:::decision N_HRETrainReleaseOperations_Node0_action["The train status is updated to
RELEASED and VID segments are
processed for equipment releases"]:::main N_HRETrainReleaseOperations_Node0 -- Yes --> N_HRETrainReleaseOperations_Node0_action N_HRETrainReleaseOperations_Node0_action --> E_HRETrainReleaseOperations S_HRETrainReleaseOperations --> N_HRETrainReleaseOperations_Node0 N_HRETrainReleaseOperations_Node0 -- No --> E_HRETrainReleaseOperations
File: GCX016.cbl
GIVEN:
A V9 event detail segment is received with disposition code HRE
WHEN:
The system processes the HRE disposition code
THEN:
- The train status is updated to released
- Vid segments are processed for equipment releases
β Consolidated Acceptance Criteria
- The system processes the POD disposition code → the train status is set to ARRIVED and arrival date and location are updated
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_PODTrainArrivalatPortofDischarge(["Start Step"])
E_PODTrainArrivalatPortofDischarge(["End Step"])
N_PODTrainArrivalatPortofDischarge_Node0{"The system processes the POD
disposition code"}:::decision N_PODTrainArrivalatPortofDischarge_Node0_action["The train status is set to ARRIVED
and arrival date and location are
updated"]:::main N_PODTrainArrivalatPortofDischarge_Node0 -- Yes --> N_PODTrainArrivalatPortofDischarge_Node0_action N_PODTrainArrivalatPortofDischarge_Node0_action --> E_PODTrainArrivalatPortofDischarge S_PODTrainArrivalatPortofDischarge --> N_PODTrainArrivalatPortofDischarge_Node0 N_PODTrainArrivalatPortofDischarge_Node0 -- No --> E_PODTrainArrivalatPortofDischarge
disposition code"}:::decision N_PODTrainArrivalatPortofDischarge_Node0_action["The train status is set to ARRIVED
and arrival date and location are
updated"]:::main N_PODTrainArrivalatPortofDischarge_Node0 -- Yes --> N_PODTrainArrivalatPortofDischarge_Node0_action N_PODTrainArrivalatPortofDischarge_Node0_action --> E_PODTrainArrivalatPortofDischarge S_PODTrainArrivalatPortofDischarge --> N_PODTrainArrivalatPortofDischarge_Node0 N_PODTrainArrivalatPortofDischarge_Node0 -- No --> E_PODTrainArrivalatPortofDischarge
File: GCX016.cbl
GIVEN:
A V9 event detail segment is received with disposition code POD
WHEN:
The system processes the POD disposition code
THEN:
- The train status is set to arrived
- Arrival date
- Location are updated
β Consolidated Acceptance Criteria
- The system processes the AAD disposition code → the train status is set to ARRIVED and arrival date and location are updated
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AADTrainArrivalatDestination(["Start Step"])
E_AADTrainArrivalatDestination(["End Step"])
N_AADTrainArrivalatDestination_Node0{"The system processes the AAD
disposition code"}:::decision N_AADTrainArrivalatDestination_Node0_action["The train status is set to ARRIVED
and arrival date and location are
updated"]:::main N_AADTrainArrivalatDestination_Node0 -- Yes --> N_AADTrainArrivalatDestination_Node0_action N_AADTrainArrivalatDestination_Node0_action --> E_AADTrainArrivalatDestination S_AADTrainArrivalatDestination --> N_AADTrainArrivalatDestination_Node0 N_AADTrainArrivalatDestination_Node0 -- No --> E_AADTrainArrivalatDestination
disposition code"}:::decision N_AADTrainArrivalatDestination_Node0_action["The train status is set to ARRIVED
and arrival date and location are
updated"]:::main N_AADTrainArrivalatDestination_Node0 -- Yes --> N_AADTrainArrivalatDestination_Node0_action N_AADTrainArrivalatDestination_Node0_action --> E_AADTrainArrivalatDestination S_AADTrainArrivalatDestination --> N_AADTrainArrivalatDestination_Node0 N_AADTrainArrivalatDestination_Node0 -- No --> E_AADTrainArrivalatDestination
File: GCX016.cbl
GIVEN:
A V9 event detail segment is received with disposition code AAD
WHEN:
The system processes the AAD disposition code
THEN:
- The train status is set to arrived
- Arrival date
- Location are updated
β Consolidated Acceptance Criteria
- The system processes the RC disposition code → the export manifest is marked as reviewed and the train record is updated
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RCExportManifestReviewComplete(["Start Step"])
E_RCExportManifestReviewComplete(["End Step"])
N_RCExportManifestReviewComplete_Node0{"The system processes the RC
disposition code"}:::decision N_RCExportManifestReviewComplete_Node0_action["The export manifest is marked as
reviewed and the train record is
updated"]:::main N_RCExportManifestReviewComplete_Node0 -- Yes --> N_RCExportManifestReviewComplete_Node0_action N_RCExportManifestReviewComplete_Node0_action --> E_RCExportManifestReviewComplete S_RCExportManifestReviewComplete --> N_RCExportManifestReviewComplete_Node0 N_RCExportManifestReviewComplete_Node0 -- No --> E_RCExportManifestReviewComplete
disposition code"}:::decision N_RCExportManifestReviewComplete_Node0_action["The export manifest is marked as
reviewed and the train record is
updated"]:::main N_RCExportManifestReviewComplete_Node0 -- Yes --> N_RCExportManifestReviewComplete_Node0_action N_RCExportManifestReviewComplete_Node0_action --> E_RCExportManifestReviewComplete S_RCExportManifestReviewComplete --> N_RCExportManifestReviewComplete_Node0 N_RCExportManifestReviewComplete_Node0 -- No --> E_RCExportManifestReviewComplete
File: GCX016.cbl
GIVEN:
A V9 event detail segment is received with disposition code RC
WHEN:
The system processes the RC disposition code
THEN:
- The export manifest is marked as reviewed
- The train record is updated
β Consolidated Acceptance Criteria
- The system processes the OCA disposition code → a train not arrived warning is generated with instructions to re-arrive the train or contact USCS
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_OCATrainNotArrivedNotification(["Start Step"])
E_OCATrainNotArrivedNotification(["End Step"])
N_OCATrainNotArrivedNotification_Node0{"The system processes the OCA
disposition code"}:::decision N_OCATrainNotArrivedNotification_Node0_action["A train not arrived warning is
generated with instructions to
re-arrive the train or contact USCS"]:::main N_OCATrainNotArrivedNotification_Node0 -- Yes --> N_OCATrainNotArrivedNotification_Node0_action N_OCATrainNotArrivedNotification_Node0_action --> E_OCATrainNotArrivedNotification S_OCATrainNotArrivedNotification --> N_OCATrainNotArrivedNotification_Node0 N_OCATrainNotArrivedNotification_Node0 -- No --> E_OCATrainNotArrivedNotification
disposition code"}:::decision N_OCATrainNotArrivedNotification_Node0_action["A train not arrived warning is
generated with instructions to
re-arrive the train or contact USCS"]:::main N_OCATrainNotArrivedNotification_Node0 -- Yes --> N_OCATrainNotArrivedNotification_Node0_action N_OCATrainNotArrivedNotification_Node0_action --> E_OCATrainNotArrivedNotification S_OCATrainNotArrivedNotification --> N_OCATrainNotArrivedNotification_Node0 N_OCATrainNotArrivedNotification_Node0 -- No --> E_OCATrainNotArrivedNotification
File: GCX016.cbl
GIVEN:
A V9 event detail segment is received with disposition code OCA
WHEN:
The system processes the OCA disposition code
THEN:
A train not arrived warning is generated with instructions to re-arrive the train or contact USCS
β Consolidated Acceptance Criteria
- The system processes the COC disposition code → the previous arrival status is cancelled and the train record is updated with cancellation details
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_COCTrainArrivalCancellation(["Start Step"])
E_COCTrainArrivalCancellation(["End Step"])
N_COCTrainArrivalCancellation_Node0{"The system processes the COC
disposition code"}:::decision N_COCTrainArrivalCancellation_Node0_action["The previous arrival status is
cancelled and the train record is
updated with cancellation details"]:::main N_COCTrainArrivalCancellation_Node0 -- Yes --> N_COCTrainArrivalCancellation_Node0_action N_COCTrainArrivalCancellation_Node0_action --> E_COCTrainArrivalCancellation S_COCTrainArrivalCancellation --> N_COCTrainArrivalCancellation_Node0 N_COCTrainArrivalCancellation_Node0 -- No --> E_COCTrainArrivalCancellation
disposition code"}:::decision N_COCTrainArrivalCancellation_Node0_action["The previous arrival status is
cancelled and the train record is
updated with cancellation details"]:::main N_COCTrainArrivalCancellation_Node0 -- Yes --> N_COCTrainArrivalCancellation_Node0_action N_COCTrainArrivalCancellation_Node0_action --> E_COCTrainArrivalCancellation S_COCTrainArrivalCancellation --> N_COCTrainArrivalCancellation_Node0 N_COCTrainArrivalCancellation_Node0 -- No --> E_COCTrainArrivalCancellation
File: GCX016.cbl
GIVEN:
A V9 event detail segment is received with disposition code COC
WHEN:
The system processes the COC disposition code
THEN:
- The previous arrival status is cancelled
- The train record is updated with cancellation details
β Consolidated Acceptance Criteria
- The system processes the LCK disposition code → the train lock status is set and the train record is updated to prevent modifications
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LCKTrainLockOperations(["Start Step"])
E_LCKTrainLockOperations(["End Step"])
N_LCKTrainLockOperations_Node0{"The system processes the LCK
disposition code"}:::decision N_LCKTrainLockOperations_Node0_action["The train lock status is set and
the train record is updated to
prevent modifications"]:::main N_LCKTrainLockOperations_Node0 -- Yes --> N_LCKTrainLockOperations_Node0_action N_LCKTrainLockOperations_Node0_action --> E_LCKTrainLockOperations S_LCKTrainLockOperations --> N_LCKTrainLockOperations_Node0 N_LCKTrainLockOperations_Node0 -- No --> E_LCKTrainLockOperations
disposition code"}:::decision N_LCKTrainLockOperations_Node0_action["The train lock status is set and
the train record is updated to
prevent modifications"]:::main N_LCKTrainLockOperations_Node0 -- Yes --> N_LCKTrainLockOperations_Node0_action N_LCKTrainLockOperations_Node0_action --> E_LCKTrainLockOperations S_LCKTrainLockOperations --> N_LCKTrainLockOperations_Node0 N_LCKTrainLockOperations_Node0 -- No --> E_LCKTrainLockOperations
File: GCX016.cbl
GIVEN:
A V9 event detail segment is received with disposition code LCK
WHEN:
The system processes the LCK disposition code
THEN:
- The train lock status is set
- The train record is updated to prevent modifications
β Consolidated Acceptance Criteria
- The system processes the ULC disposition code → the train lock status is removed and the train record is updated to allow modifications
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ULCTrainUnlockOperations(["Start Step"])
E_ULCTrainUnlockOperations(["End Step"])
N_ULCTrainUnlockOperations_Node0{"The system processes the ULC
disposition code"}:::decision N_ULCTrainUnlockOperations_Node0_action["The train lock status is removed
and the train record is updated to
allow modifications"]:::main N_ULCTrainUnlockOperations_Node0 -- Yes --> N_ULCTrainUnlockOperations_Node0_action N_ULCTrainUnlockOperations_Node0_action --> E_ULCTrainUnlockOperations S_ULCTrainUnlockOperations --> N_ULCTrainUnlockOperations_Node0 N_ULCTrainUnlockOperations_Node0 -- No --> E_ULCTrainUnlockOperations
disposition code"}:::decision N_ULCTrainUnlockOperations_Node0_action["The train lock status is removed
and the train record is updated to
allow modifications"]:::main N_ULCTrainUnlockOperations_Node0 -- Yes --> N_ULCTrainUnlockOperations_Node0_action N_ULCTrainUnlockOperations_Node0_action --> E_ULCTrainUnlockOperations S_ULCTrainUnlockOperations --> N_ULCTrainUnlockOperations_Node0 N_ULCTrainUnlockOperations_Node0 -- No --> E_ULCTrainUnlockOperations
File: GCX016.cbl
GIVEN:
A V9 event detail segment is received with disposition code ULC
WHEN:
The system processes the ULC disposition code
THEN:
- The train lock status is removed
- The train record is updated to allow modifications
β Consolidated Acceptance Criteria
- The system processes the SEI disposition code → the train seizure status is set by customs, VID segments are processed for equipment seizure, and the train record is updated
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SEITrainSeizurebyCustoms(["Start Step"])
E_SEITrainSeizurebyCustoms(["End Step"])
N_SEITrainSeizurebyCustoms_Node0{"The system processes the SEI
disposition code"}:::decision N_SEITrainSeizurebyCustoms_Node0_action["The train seizure status is set by
customs, VID segments are processed
for equipment seizure, and the train
record is updated"]:::main N_SEITrainSeizurebyCustoms_Node0 -- Yes --> N_SEITrainSeizurebyCustoms_Node0_action N_SEITrainSeizurebyCustoms_Node0_action --> E_SEITrainSeizurebyCustoms S_SEITrainSeizurebyCustoms --> N_SEITrainSeizurebyCustoms_Node0 N_SEITrainSeizurebyCustoms_Node0 -- No --> E_SEITrainSeizurebyCustoms
disposition code"}:::decision N_SEITrainSeizurebyCustoms_Node0_action["The train seizure status is set by
customs, VID segments are processed
for equipment seizure, and the train
record is updated"]:::main N_SEITrainSeizurebyCustoms_Node0 -- Yes --> N_SEITrainSeizurebyCustoms_Node0_action N_SEITrainSeizurebyCustoms_Node0_action --> E_SEITrainSeizurebyCustoms S_SEITrainSeizurebyCustoms --> N_SEITrainSeizurebyCustoms_Node0 N_SEITrainSeizurebyCustoms_Node0 -- No --> E_SEITrainSeizurebyCustoms
File: GCX016.cbl
GIVEN:
A V9 event detail segment is received with disposition code SEI
WHEN:
The system processes the SEI disposition code
THEN:
The train seizure status is set by customs, VID segments are processed for equipment seizure, and the train record is updated
β Consolidated Acceptance Criteria
- The system processes the SER disposition code → the train seizure status is removed, VID segments are processed for equipment release from seizure, and the train record is updated
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SERTrainSeizureRelease(["Start Step"])
E_SERTrainSeizureRelease(["End Step"])
N_SERTrainSeizureRelease_Node0{"The system processes the SER
disposition code"}:::decision N_SERTrainSeizureRelease_Node0_action["The train seizure status is
removed, VID segments are processed
for equipment release from seizure,
and the train record is updated"]:::main N_SERTrainSeizureRelease_Node0 -- Yes --> N_SERTrainSeizureRelease_Node0_action N_SERTrainSeizureRelease_Node0_action --> E_SERTrainSeizureRelease S_SERTrainSeizureRelease --> N_SERTrainSeizureRelease_Node0 N_SERTrainSeizureRelease_Node0 -- No --> E_SERTrainSeizureRelease
disposition code"}:::decision N_SERTrainSeizureRelease_Node0_action["The train seizure status is
removed, VID segments are processed
for equipment release from seizure,
and the train record is updated"]:::main N_SERTrainSeizureRelease_Node0 -- Yes --> N_SERTrainSeizureRelease_Node0_action N_SERTrainSeizureRelease_Node0_action --> E_SERTrainSeizureRelease S_SERTrainSeizureRelease --> N_SERTrainSeizureRelease_Node0 N_SERTrainSeizureRelease_Node0 -- No --> E_SERTrainSeizureRelease
File: GCX016.cbl
GIVEN:
A V9 event detail segment is received with disposition code SER
WHEN:
The system processes the SER disposition code
THEN:
The train seizure status is removed, VID segments are processed for equipment release from seizure, and the train record is updated
β Consolidated Acceptance Criteria
- The system extracts the disposition code from V9-02 field → the disposition code is evaluated to determine which train operation to perform (HMI, HRE, POD, AAD, RC, OCA, COC, LCK, ULC, SEI, or SER)
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExtractDispositionCodefromV902(["Start Step"])
E_ExtractDispositionCodefromV902(["End Step"])
N_ExtractDispositionCodefromV902_Node0{"The system extracts the disposition
code from V9-02 field"}:::decision N_ExtractDispositionCodefromV902_Node0_action["The disposition code is evaluated
to determine which train operation
to perform HMI, HRE, POD, AAD, RC,
OCA, COC, LCK, ULC, SEI, or SER"]:::main N_ExtractDispositionCodefromV902_Node0 -- Yes --> N_ExtractDispositionCodefromV902_Node0_action N_ExtractDispositionCodefromV902_Node0_action --> E_ExtractDispositionCodefromV902 S_ExtractDispositionCodefromV902 --> N_ExtractDispositionCodefromV902_Node0 N_ExtractDispositionCodefromV902_Node0 -- No --> E_ExtractDispositionCodefromV902
code from V9-02 field"}:::decision N_ExtractDispositionCodefromV902_Node0_action["The disposition code is evaluated
to determine which train operation
to perform HMI, HRE, POD, AAD, RC,
OCA, COC, LCK, ULC, SEI, or SER"]:::main N_ExtractDispositionCodefromV902_Node0 -- Yes --> N_ExtractDispositionCodefromV902_Node0_action N_ExtractDispositionCodefromV902_Node0_action --> E_ExtractDispositionCodefromV902 S_ExtractDispositionCodefromV902 --> N_ExtractDispositionCodefromV902_Node0 N_ExtractDispositionCodefromV902_Node0 -- No --> E_ExtractDispositionCodefromV902
File: GCX016.cbl
GIVEN:
A V9 event detail segment is received
WHEN:
The system extracts the disposition code from V9-02 field
THEN:
The disposition code is evaluated to determine which train operation to perform (HMI, HRE, POD, AAD, RC, OCA, COC, LCK, ULC, SEI, or SER)
β Consolidated Acceptance Criteria
- The system checks if more V9 segments exist in the message → if more V9 segments exist, processing continues with the next segment, otherwise V9 processing is completed
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MoreV9Segments(["Start Step"])
E_MoreV9Segments(["End Step"])
N_MoreV9Segments_Node0{"The system checks if more V9
segments exist in the message"}:::decision N_MoreV9Segments_Node0_action["If more V9 segments exist,
processing continues with the next
segment, otherwise V9 processing is
completed"]:::main N_MoreV9Segments_Node0 -- Yes --> N_MoreV9Segments_Node0_action N_MoreV9Segments_Node0_action --> E_MoreV9Segments S_MoreV9Segments --> N_MoreV9Segments_Node0 N_MoreV9Segments_Node0 -- No --> E_MoreV9Segments
segments exist in the message"}:::decision N_MoreV9Segments_Node0_action["If more V9 segments exist,
processing continues with the next
segment, otherwise V9 processing is
completed"]:::main N_MoreV9Segments_Node0 -- Yes --> N_MoreV9Segments_Node0_action N_MoreV9Segments_Node0_action --> E_MoreV9Segments S_MoreV9Segments --> N_MoreV9Segments_Node0 N_MoreV9Segments_Node0 -- No --> E_MoreV9Segments
File: GCX016.cbl
GIVEN:
V9 segments are being processed and status notification messages have been generated
WHEN:
The system checks if more V9 segments exist in the message
THEN:
If more V9 segments exist, processing continues with the next segment, otherwise V9 processing is completed
β Consolidated Acceptance Criteria
- The system processes the message segments in sequence → vID segment processing is initiated for equipment hold operations
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_VIDSegmentFollowingHMICodeReceived(["Start Step"])
E_VIDSegmentFollowingHMICodeReceived(["End Step"])
N_VIDSegmentFollowingHMICodeReceived_Node0{"The system processes the message
segments in sequence"}:::decision N_VIDSegmentFollowingHMICodeReceived_Node0_action["VID segment processing is initiated
for equipment hold operations"]:::main N_VIDSegmentFollowingHMICodeReceived_Node0 -- Yes --> N_VIDSegmentFollowingHMICodeReceived_Node0_action N_VIDSegmentFollowingHMICodeReceived_Node0_action --> E_VIDSegmentFollowingHMICodeReceived S_VIDSegmentFollowingHMICodeReceived --> N_VIDSegmentFollowingHMICodeReceived_Node0 N_VIDSegmentFollowingHMICodeReceived_Node0 -- No --> E_VIDSegmentFollowingHMICodeReceived
segments in sequence"}:::decision N_VIDSegmentFollowingHMICodeReceived_Node0_action["VID segment processing is initiated
for equipment hold operations"]:::main N_VIDSegmentFollowingHMICodeReceived_Node0 -- Yes --> N_VIDSegmentFollowingHMICodeReceived_Node0_action N_VIDSegmentFollowingHMICodeReceived_Node0_action --> E_VIDSegmentFollowingHMICodeReceived S_VIDSegmentFollowingHMICodeReceived --> N_VIDSegmentFollowingHMICodeReceived_Node0 N_VIDSegmentFollowingHMICodeReceived_Node0 -- No --> E_VIDSegmentFollowingHMICodeReceived
File: GCX016.cbl
GIVEN:
A message contains HMI disposition code followed by VID segments
WHEN:
The system processes the message segments in sequence
THEN:
VID segment processing is initiated for equipment hold operations
β Consolidated Acceptance Criteria
- The system reads the VID segment data → equipment ID is extracted from the VID segment for further processing
- The system processes the VID segment content → the equipment ID is extracted from the VID segment data
- The system processes the VID segment → the equipment ID is extracted from the VID segment for seizure processing
- The system processes the VID segment → the equipment ID is extracted from the VID segment data
- The system processes the VID segment to extract equipment information → the equipment ID is extracted from the VID segment data for further processing
- The system reads the VID segment data → the equipment ID is extracted from the VID segment
- The system processes the VID segment → the equipment ID is extracted from the VID segment data for further validation and processing
- The system processes the VID segment content → extract the equipment ID information from the VID segment data
- The system processes the VID segment → equipment ID is extracted from the VID segment for further processing
- The system processes the VID segment → extract the equipment ID from the VID segment data for validation and seizure processing
- The system processes the VID segment → extract the equipment ID from the VID segment data
- The system processes the VID segment for equipment hold or release → the equipment ID is extracted from the VID segment data
- The system processes the VID segment → the equipment ID is extracted from the VID segment data
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExtractEquipmentIDfromVIDSegment(["Start Step"])
E_ExtractEquipmentIDfromVIDSegment(["End Step"])
N_ExtractEquipmentIDfromVIDSegment_Node0{"The system reads the VID segment
data"}:::decision N_ExtractEquipmentIDfromVIDSegment_Node0_action["Equipment ID is extracted from the
VID segment for further processing"]:::main N_ExtractEquipmentIDfromVIDSegment_Node0 -- Yes --> N_ExtractEquipmentIDfromVIDSegment_Node0_action N_ExtractEquipmentIDfromVIDSegment_Node0_action --> E_ExtractEquipmentIDfromVIDSegment S_ExtractEquipmentIDfromVIDSegment --> N_ExtractEquipmentIDfromVIDSegment_Node0 N_ExtractEquipmentIDfromVIDSegment_Node1{"The system processes the VID
segment content"}:::decision N_ExtractEquipmentIDfromVIDSegment_Node1_action["The equipment ID is extracted from
the VID segment data"]:::main N_ExtractEquipmentIDfromVIDSegment_Node1 -- Yes --> N_ExtractEquipmentIDfromVIDSegment_Node1_action N_ExtractEquipmentIDfromVIDSegment_Node1_action --> E_ExtractEquipmentIDfromVIDSegment N_ExtractEquipmentIDfromVIDSegment_Node0 -- No --> N_ExtractEquipmentIDfromVIDSegment_Node1 N_ExtractEquipmentIDfromVIDSegment_Node2{"The system processes the VID
segment"}:::decision N_ExtractEquipmentIDfromVIDSegment_Node2_action["The equipment ID is extracted from
the VID segment for seizure
processing"]:::main N_ExtractEquipmentIDfromVIDSegment_Node2 -- Yes --> N_ExtractEquipmentIDfromVIDSegment_Node2_action N_ExtractEquipmentIDfromVIDSegment_Node2_action --> E_ExtractEquipmentIDfromVIDSegment N_ExtractEquipmentIDfromVIDSegment_Node1 -- No --> N_ExtractEquipmentIDfromVIDSegment_Node2 N_ExtractEquipmentIDfromVIDSegment_Node3{"The system processes the VID
segment"}:::decision N_ExtractEquipmentIDfromVIDSegment_Node3_action["The equipment ID is extracted from
the VID segment data"]:::main N_ExtractEquipmentIDfromVIDSegment_Node3 -- Yes --> N_ExtractEquipmentIDfromVIDSegment_Node3_action N_ExtractEquipmentIDfromVIDSegment_Node3_action --> E_ExtractEquipmentIDfromVIDSegment N_ExtractEquipmentIDfromVIDSegment_Node2 -- No --> N_ExtractEquipmentIDfromVIDSegment_Node3 N_ExtractEquipmentIDfromVIDSegment_Node4{"The system processes the VID
segment to extract equipment
information"}:::decision N_ExtractEquipmentIDfromVIDSegment_Node4_action["The equipment ID is extracted from
the VID segment data for further
processing"]:::main N_ExtractEquipmentIDfromVIDSegment_Node4 -- Yes --> N_ExtractEquipmentIDfromVIDSegment_Node4_action N_ExtractEquipmentIDfromVIDSegment_Node4_action --> E_ExtractEquipmentIDfromVIDSegment N_ExtractEquipmentIDfromVIDSegment_Node3 -- No --> N_ExtractEquipmentIDfromVIDSegment_Node4 N_ExtractEquipmentIDfromVIDSegment_Node5{"The system reads the VID segment
data"}:::decision N_ExtractEquipmentIDfromVIDSegment_Node5_action["The equipment ID is extracted from
the VID segment"]:::main N_ExtractEquipmentIDfromVIDSegment_Node5 -- Yes --> N_ExtractEquipmentIDfromVIDSegment_Node5_action N_ExtractEquipmentIDfromVIDSegment_Node5_action --> E_ExtractEquipmentIDfromVIDSegment N_ExtractEquipmentIDfromVIDSegment_Node4 -- No --> N_ExtractEquipmentIDfromVIDSegment_Node5 N_ExtractEquipmentIDfromVIDSegment_Node6{"The system processes the VID
segment"}:::decision N_ExtractEquipmentIDfromVIDSegment_Node6_action["The equipment ID is extracted from
the VID segment data for further
validation and processing"]:::main N_ExtractEquipmentIDfromVIDSegment_Node6 -- Yes --> N_ExtractEquipmentIDfromVIDSegment_Node6_action N_ExtractEquipmentIDfromVIDSegment_Node6_action --> E_ExtractEquipmentIDfromVIDSegment N_ExtractEquipmentIDfromVIDSegment_Node5 -- No --> N_ExtractEquipmentIDfromVIDSegment_Node6 N_ExtractEquipmentIDfromVIDSegment_Node7{"The system processes the VID
segment content"}:::decision N_ExtractEquipmentIDfromVIDSegment_Node7_action["Extract the equipment ID
information from the VID segment
data"]:::main N_ExtractEquipmentIDfromVIDSegment_Node7 -- Yes --> N_ExtractEquipmentIDfromVIDSegment_Node7_action N_ExtractEquipmentIDfromVIDSegment_Node7_action --> E_ExtractEquipmentIDfromVIDSegment N_ExtractEquipmentIDfromVIDSegment_Node6 -- No --> N_ExtractEquipmentIDfromVIDSegment_Node7 N_ExtractEquipmentIDfromVIDSegment_Node8{"The system processes the VID
segment"}:::decision N_ExtractEquipmentIDfromVIDSegment_Node8_action["Equipment ID is extracted from the
VID segment for further processing"]:::main N_ExtractEquipmentIDfromVIDSegment_Node8 -- Yes --> N_ExtractEquipmentIDfromVIDSegment_Node8_action N_ExtractEquipmentIDfromVIDSegment_Node8_action --> E_ExtractEquipmentIDfromVIDSegment N_ExtractEquipmentIDfromVIDSegment_Node7 -- No --> N_ExtractEquipmentIDfromVIDSegment_Node8 N_ExtractEquipmentIDfromVIDSegment_Node9{"The system processes the VID
segment"}:::decision N_ExtractEquipmentIDfromVIDSegment_Node9_action["Extract the equipment ID from the
VID segment data for validation and
seizure processing"]:::main N_ExtractEquipmentIDfromVIDSegment_Node9 -- Yes --> N_ExtractEquipmentIDfromVIDSegment_Node9_action N_ExtractEquipmentIDfromVIDSegment_Node9_action --> E_ExtractEquipmentIDfromVIDSegment N_ExtractEquipmentIDfromVIDSegment_Node8 -- No --> N_ExtractEquipmentIDfromVIDSegment_Node9 N_ExtractEquipmentIDfromVIDSegment_Node10{"The system processes the VID
segment"}:::decision N_ExtractEquipmentIDfromVIDSegment_Node10_action["Extract the equipment ID from the
VID segment data"]:::main N_ExtractEquipmentIDfromVIDSegment_Node10 -- Yes --> N_ExtractEquipmentIDfromVIDSegment_Node10_action N_ExtractEquipmentIDfromVIDSegment_Node10_action --> E_ExtractEquipmentIDfromVIDSegment N_ExtractEquipmentIDfromVIDSegment_Node9 -- No --> N_ExtractEquipmentIDfromVIDSegment_Node10 N_ExtractEquipmentIDfromVIDSegment_Node11{"The system processes the VID
segment for equipment hold or
release"}:::decision N_ExtractEquipmentIDfromVIDSegment_Node11_action["The equipment ID is extracted from
the VID segment data"]:::main N_ExtractEquipmentIDfromVIDSegment_Node11 -- Yes --> N_ExtractEquipmentIDfromVIDSegment_Node11_action N_ExtractEquipmentIDfromVIDSegment_Node11_action --> E_ExtractEquipmentIDfromVIDSegment N_ExtractEquipmentIDfromVIDSegment_Node10 -- No --> N_ExtractEquipmentIDfromVIDSegment_Node11 N_ExtractEquipmentIDfromVIDSegment_Node12{"The system processes the VID
segment"}:::decision N_ExtractEquipmentIDfromVIDSegment_Node12_action["The equipment ID is extracted from
the VID segment data"]:::main N_ExtractEquipmentIDfromVIDSegment_Node12 -- Yes --> N_ExtractEquipmentIDfromVIDSegment_Node12_action N_ExtractEquipmentIDfromVIDSegment_Node12_action --> E_ExtractEquipmentIDfromVIDSegment N_ExtractEquipmentIDfromVIDSegment_Node11 -- No --> N_ExtractEquipmentIDfromVIDSegment_Node12 N_ExtractEquipmentIDfromVIDSegment_Node12 -- No --> E_ExtractEquipmentIDfromVIDSegment
data"}:::decision N_ExtractEquipmentIDfromVIDSegment_Node0_action["Equipment ID is extracted from the
VID segment for further processing"]:::main N_ExtractEquipmentIDfromVIDSegment_Node0 -- Yes --> N_ExtractEquipmentIDfromVIDSegment_Node0_action N_ExtractEquipmentIDfromVIDSegment_Node0_action --> E_ExtractEquipmentIDfromVIDSegment S_ExtractEquipmentIDfromVIDSegment --> N_ExtractEquipmentIDfromVIDSegment_Node0 N_ExtractEquipmentIDfromVIDSegment_Node1{"The system processes the VID
segment content"}:::decision N_ExtractEquipmentIDfromVIDSegment_Node1_action["The equipment ID is extracted from
the VID segment data"]:::main N_ExtractEquipmentIDfromVIDSegment_Node1 -- Yes --> N_ExtractEquipmentIDfromVIDSegment_Node1_action N_ExtractEquipmentIDfromVIDSegment_Node1_action --> E_ExtractEquipmentIDfromVIDSegment N_ExtractEquipmentIDfromVIDSegment_Node0 -- No --> N_ExtractEquipmentIDfromVIDSegment_Node1 N_ExtractEquipmentIDfromVIDSegment_Node2{"The system processes the VID
segment"}:::decision N_ExtractEquipmentIDfromVIDSegment_Node2_action["The equipment ID is extracted from
the VID segment for seizure
processing"]:::main N_ExtractEquipmentIDfromVIDSegment_Node2 -- Yes --> N_ExtractEquipmentIDfromVIDSegment_Node2_action N_ExtractEquipmentIDfromVIDSegment_Node2_action --> E_ExtractEquipmentIDfromVIDSegment N_ExtractEquipmentIDfromVIDSegment_Node1 -- No --> N_ExtractEquipmentIDfromVIDSegment_Node2 N_ExtractEquipmentIDfromVIDSegment_Node3{"The system processes the VID
segment"}:::decision N_ExtractEquipmentIDfromVIDSegment_Node3_action["The equipment ID is extracted from
the VID segment data"]:::main N_ExtractEquipmentIDfromVIDSegment_Node3 -- Yes --> N_ExtractEquipmentIDfromVIDSegment_Node3_action N_ExtractEquipmentIDfromVIDSegment_Node3_action --> E_ExtractEquipmentIDfromVIDSegment N_ExtractEquipmentIDfromVIDSegment_Node2 -- No --> N_ExtractEquipmentIDfromVIDSegment_Node3 N_ExtractEquipmentIDfromVIDSegment_Node4{"The system processes the VID
segment to extract equipment
information"}:::decision N_ExtractEquipmentIDfromVIDSegment_Node4_action["The equipment ID is extracted from
the VID segment data for further
processing"]:::main N_ExtractEquipmentIDfromVIDSegment_Node4 -- Yes --> N_ExtractEquipmentIDfromVIDSegment_Node4_action N_ExtractEquipmentIDfromVIDSegment_Node4_action --> E_ExtractEquipmentIDfromVIDSegment N_ExtractEquipmentIDfromVIDSegment_Node3 -- No --> N_ExtractEquipmentIDfromVIDSegment_Node4 N_ExtractEquipmentIDfromVIDSegment_Node5{"The system reads the VID segment
data"}:::decision N_ExtractEquipmentIDfromVIDSegment_Node5_action["The equipment ID is extracted from
the VID segment"]:::main N_ExtractEquipmentIDfromVIDSegment_Node5 -- Yes --> N_ExtractEquipmentIDfromVIDSegment_Node5_action N_ExtractEquipmentIDfromVIDSegment_Node5_action --> E_ExtractEquipmentIDfromVIDSegment N_ExtractEquipmentIDfromVIDSegment_Node4 -- No --> N_ExtractEquipmentIDfromVIDSegment_Node5 N_ExtractEquipmentIDfromVIDSegment_Node6{"The system processes the VID
segment"}:::decision N_ExtractEquipmentIDfromVIDSegment_Node6_action["The equipment ID is extracted from
the VID segment data for further
validation and processing"]:::main N_ExtractEquipmentIDfromVIDSegment_Node6 -- Yes --> N_ExtractEquipmentIDfromVIDSegment_Node6_action N_ExtractEquipmentIDfromVIDSegment_Node6_action --> E_ExtractEquipmentIDfromVIDSegment N_ExtractEquipmentIDfromVIDSegment_Node5 -- No --> N_ExtractEquipmentIDfromVIDSegment_Node6 N_ExtractEquipmentIDfromVIDSegment_Node7{"The system processes the VID
segment content"}:::decision N_ExtractEquipmentIDfromVIDSegment_Node7_action["Extract the equipment ID
information from the VID segment
data"]:::main N_ExtractEquipmentIDfromVIDSegment_Node7 -- Yes --> N_ExtractEquipmentIDfromVIDSegment_Node7_action N_ExtractEquipmentIDfromVIDSegment_Node7_action --> E_ExtractEquipmentIDfromVIDSegment N_ExtractEquipmentIDfromVIDSegment_Node6 -- No --> N_ExtractEquipmentIDfromVIDSegment_Node7 N_ExtractEquipmentIDfromVIDSegment_Node8{"The system processes the VID
segment"}:::decision N_ExtractEquipmentIDfromVIDSegment_Node8_action["Equipment ID is extracted from the
VID segment for further processing"]:::main N_ExtractEquipmentIDfromVIDSegment_Node8 -- Yes --> N_ExtractEquipmentIDfromVIDSegment_Node8_action N_ExtractEquipmentIDfromVIDSegment_Node8_action --> E_ExtractEquipmentIDfromVIDSegment N_ExtractEquipmentIDfromVIDSegment_Node7 -- No --> N_ExtractEquipmentIDfromVIDSegment_Node8 N_ExtractEquipmentIDfromVIDSegment_Node9{"The system processes the VID
segment"}:::decision N_ExtractEquipmentIDfromVIDSegment_Node9_action["Extract the equipment ID from the
VID segment data for validation and
seizure processing"]:::main N_ExtractEquipmentIDfromVIDSegment_Node9 -- Yes --> N_ExtractEquipmentIDfromVIDSegment_Node9_action N_ExtractEquipmentIDfromVIDSegment_Node9_action --> E_ExtractEquipmentIDfromVIDSegment N_ExtractEquipmentIDfromVIDSegment_Node8 -- No --> N_ExtractEquipmentIDfromVIDSegment_Node9 N_ExtractEquipmentIDfromVIDSegment_Node10{"The system processes the VID
segment"}:::decision N_ExtractEquipmentIDfromVIDSegment_Node10_action["Extract the equipment ID from the
VID segment data"]:::main N_ExtractEquipmentIDfromVIDSegment_Node10 -- Yes --> N_ExtractEquipmentIDfromVIDSegment_Node10_action N_ExtractEquipmentIDfromVIDSegment_Node10_action --> E_ExtractEquipmentIDfromVIDSegment N_ExtractEquipmentIDfromVIDSegment_Node9 -- No --> N_ExtractEquipmentIDfromVIDSegment_Node10 N_ExtractEquipmentIDfromVIDSegment_Node11{"The system processes the VID
segment for equipment hold or
release"}:::decision N_ExtractEquipmentIDfromVIDSegment_Node11_action["The equipment ID is extracted from
the VID segment data"]:::main N_ExtractEquipmentIDfromVIDSegment_Node11 -- Yes --> N_ExtractEquipmentIDfromVIDSegment_Node11_action N_ExtractEquipmentIDfromVIDSegment_Node11_action --> E_ExtractEquipmentIDfromVIDSegment N_ExtractEquipmentIDfromVIDSegment_Node10 -- No --> N_ExtractEquipmentIDfromVIDSegment_Node11 N_ExtractEquipmentIDfromVIDSegment_Node12{"The system processes the VID
segment"}:::decision N_ExtractEquipmentIDfromVIDSegment_Node12_action["The equipment ID is extracted from
the VID segment data"]:::main N_ExtractEquipmentIDfromVIDSegment_Node12 -- Yes --> N_ExtractEquipmentIDfromVIDSegment_Node12_action N_ExtractEquipmentIDfromVIDSegment_Node12_action --> E_ExtractEquipmentIDfromVIDSegment N_ExtractEquipmentIDfromVIDSegment_Node11 -- No --> N_ExtractEquipmentIDfromVIDSegment_Node12 N_ExtractEquipmentIDfromVIDSegment_Node12 -- No --> E_ExtractEquipmentIDfromVIDSegment
File: GCX016.cbl
GIVEN:
A VID segment is being processed for equipment hold
WHEN:
The system reads the VID segment data
THEN:
Equipment ID is extracted from the VID segment for further processing
File: GCX016.cbl
GIVEN:
A valid VID segment has been found
WHEN:
The system processes the VID segment content
THEN:
The equipment ID is extracted from the VID segment data
File: GCX016.cbl
GIVEN:
A VID segment is received following an SEI disposition code
WHEN:
The system processes the VID segment
THEN:
The equipment ID is extracted from the VID segment for seizure processing
File: GCX016.cbl
GIVEN:
A VID segment is being processed for equipment seizure release
WHEN:
The system processes the VID segment
THEN:
The equipment ID is extracted from the VID segment data
File: GCX016.cbl
GIVEN:
A VID segment is received after an HMI (Hold train) event code
WHEN:
The system processes the VID segment to extract equipment information
THEN:
The equipment ID is extracted from the VID segment data for further processing
File: GCX016.cbl
GIVEN:
A VID segment is being processed for equipment release
WHEN:
The system reads the VID segment data
THEN:
The equipment ID is extracted from the VID segment
File: GCX016.cbl
GIVEN:
A VID segment is available in the message
WHEN:
The system processes the VID segment
THEN:
- The equipment id is extracted from the vid segment data for further validation
- Processing
File: GCX016.cbl
GIVEN:
A VID segment has been read from the message
WHEN:
The system processes the VID segment content
THEN:
Extract the equipment ID information from the VID segment data
File: GCX016.cbl
GIVEN:
A VID segment contains equipment identification data
WHEN:
The system processes the VID segment
THEN:
Equipment ID is extracted from the VID segment for further processing
File: GCX016.cbl
GIVEN:
A VID segment is available in the message
WHEN:
The system processes the VID segment
THEN:
- Extract the equipment id from the vid segment data for validation
- Seizure processing
File: GCX016.cbl
GIVEN:
A VID segment is available for processing
WHEN:
The system processes the VID segment
THEN:
Extract the equipment ID from the VID segment data
File: GCX016.cbl
GIVEN:
A VID segment contains equipment information
WHEN:
The system processes the VID segment for equipment hold or release
THEN:
The equipment ID is extracted from the VID segment data
File: GCX016.cbl
GIVEN:
A VID segment contains equipment information
WHEN:
The system processes the VID segment
THEN:
The equipment ID is extracted from the VID segment data
β Consolidated Acceptance Criteria
- The system validates the equipment ID format → equipment ID format is checked against validation criteria
- The system validates the equipment ID format → the equipment ID is confirmed as valid or invalid based on format requirements
- The system validates the equipment ID format → the system determines if the equipment ID format is valid or invalid
- The system validates the equipment ID format → the equipment ID is confirmed as valid format for seizure processing or marked as invalid
- The system validates the equipment ID format → verify the equipment ID conforms to standard format requirements for train equipment identification
- The system validates the equipment ID format → the equipment ID format is checked against validation criteria
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ValidateEquipmentIDFormat(["Start Step"])
E_ValidateEquipmentIDFormat(["End Step"])
N_ValidateEquipmentIDFormat_Node0{"The system validates the equipment
ID format"}:::decision N_ValidateEquipmentIDFormat_Node0_action["Equipment ID format is checked
against validation criteria"]:::main N_ValidateEquipmentIDFormat_Node0 -- Yes --> N_ValidateEquipmentIDFormat_Node0_action N_ValidateEquipmentIDFormat_Node0_action --> E_ValidateEquipmentIDFormat S_ValidateEquipmentIDFormat --> N_ValidateEquipmentIDFormat_Node0 N_ValidateEquipmentIDFormat_Node1{"The system validates the equipment
ID format"}:::decision N_ValidateEquipmentIDFormat_Node1_action["The equipment ID is confirmed as
valid or invalid based on format
requirements"]:::main N_ValidateEquipmentIDFormat_Node1 -- Yes --> N_ValidateEquipmentIDFormat_Node1_action N_ValidateEquipmentIDFormat_Node1_action --> E_ValidateEquipmentIDFormat N_ValidateEquipmentIDFormat_Node0 -- No --> N_ValidateEquipmentIDFormat_Node1 N_ValidateEquipmentIDFormat_Node2{"The system validates the equipment
ID format"}:::decision N_ValidateEquipmentIDFormat_Node2_action["The system determines if the
equipment ID format is valid or
invalid"]:::main N_ValidateEquipmentIDFormat_Node2 -- Yes --> N_ValidateEquipmentIDFormat_Node2_action N_ValidateEquipmentIDFormat_Node2_action --> E_ValidateEquipmentIDFormat N_ValidateEquipmentIDFormat_Node1 -- No --> N_ValidateEquipmentIDFormat_Node2 N_ValidateEquipmentIDFormat_Node3{"The system validates the equipment
ID format"}:::decision N_ValidateEquipmentIDFormat_Node3_action["The equipment ID is confirmed as
valid format for seizure processing
or marked as invalid"]:::main N_ValidateEquipmentIDFormat_Node3 -- Yes --> N_ValidateEquipmentIDFormat_Node3_action N_ValidateEquipmentIDFormat_Node3_action --> E_ValidateEquipmentIDFormat N_ValidateEquipmentIDFormat_Node2 -- No --> N_ValidateEquipmentIDFormat_Node3 N_ValidateEquipmentIDFormat_Node4{"The system validates the equipment
ID format"}:::decision N_ValidateEquipmentIDFormat_Node4_action["Verify the equipment ID conforms to
standard format requirements for
train equipment identification"]:::main N_ValidateEquipmentIDFormat_Node4 -- Yes --> N_ValidateEquipmentIDFormat_Node4_action N_ValidateEquipmentIDFormat_Node4_action --> E_ValidateEquipmentIDFormat N_ValidateEquipmentIDFormat_Node3 -- No --> N_ValidateEquipmentIDFormat_Node4 N_ValidateEquipmentIDFormat_Node5{"The system validates the equipment
ID format"}:::decision N_ValidateEquipmentIDFormat_Node5_action["The equipment ID format is checked
against validation criteria"]:::main N_ValidateEquipmentIDFormat_Node5 -- Yes --> N_ValidateEquipmentIDFormat_Node5_action N_ValidateEquipmentIDFormat_Node5_action --> E_ValidateEquipmentIDFormat N_ValidateEquipmentIDFormat_Node4 -- No --> N_ValidateEquipmentIDFormat_Node5 N_ValidateEquipmentIDFormat_Node5 -- No --> E_ValidateEquipmentIDFormat
ID format"}:::decision N_ValidateEquipmentIDFormat_Node0_action["Equipment ID format is checked
against validation criteria"]:::main N_ValidateEquipmentIDFormat_Node0 -- Yes --> N_ValidateEquipmentIDFormat_Node0_action N_ValidateEquipmentIDFormat_Node0_action --> E_ValidateEquipmentIDFormat S_ValidateEquipmentIDFormat --> N_ValidateEquipmentIDFormat_Node0 N_ValidateEquipmentIDFormat_Node1{"The system validates the equipment
ID format"}:::decision N_ValidateEquipmentIDFormat_Node1_action["The equipment ID is confirmed as
valid or invalid based on format
requirements"]:::main N_ValidateEquipmentIDFormat_Node1 -- Yes --> N_ValidateEquipmentIDFormat_Node1_action N_ValidateEquipmentIDFormat_Node1_action --> E_ValidateEquipmentIDFormat N_ValidateEquipmentIDFormat_Node0 -- No --> N_ValidateEquipmentIDFormat_Node1 N_ValidateEquipmentIDFormat_Node2{"The system validates the equipment
ID format"}:::decision N_ValidateEquipmentIDFormat_Node2_action["The system determines if the
equipment ID format is valid or
invalid"]:::main N_ValidateEquipmentIDFormat_Node2 -- Yes --> N_ValidateEquipmentIDFormat_Node2_action N_ValidateEquipmentIDFormat_Node2_action --> E_ValidateEquipmentIDFormat N_ValidateEquipmentIDFormat_Node1 -- No --> N_ValidateEquipmentIDFormat_Node2 N_ValidateEquipmentIDFormat_Node3{"The system validates the equipment
ID format"}:::decision N_ValidateEquipmentIDFormat_Node3_action["The equipment ID is confirmed as
valid format for seizure processing
or marked as invalid"]:::main N_ValidateEquipmentIDFormat_Node3 -- Yes --> N_ValidateEquipmentIDFormat_Node3_action N_ValidateEquipmentIDFormat_Node3_action --> E_ValidateEquipmentIDFormat N_ValidateEquipmentIDFormat_Node2 -- No --> N_ValidateEquipmentIDFormat_Node3 N_ValidateEquipmentIDFormat_Node4{"The system validates the equipment
ID format"}:::decision N_ValidateEquipmentIDFormat_Node4_action["Verify the equipment ID conforms to
standard format requirements for
train equipment identification"]:::main N_ValidateEquipmentIDFormat_Node4 -- Yes --> N_ValidateEquipmentIDFormat_Node4_action N_ValidateEquipmentIDFormat_Node4_action --> E_ValidateEquipmentIDFormat N_ValidateEquipmentIDFormat_Node3 -- No --> N_ValidateEquipmentIDFormat_Node4 N_ValidateEquipmentIDFormat_Node5{"The system validates the equipment
ID format"}:::decision N_ValidateEquipmentIDFormat_Node5_action["The equipment ID format is checked
against validation criteria"]:::main N_ValidateEquipmentIDFormat_Node5 -- Yes --> N_ValidateEquipmentIDFormat_Node5_action N_ValidateEquipmentIDFormat_Node5_action --> E_ValidateEquipmentIDFormat N_ValidateEquipmentIDFormat_Node4 -- No --> N_ValidateEquipmentIDFormat_Node5 N_ValidateEquipmentIDFormat_Node5 -- No --> E_ValidateEquipmentIDFormat
File: GCX016.cbl
GIVEN:
An equipment ID has been extracted from VID segment
WHEN:
The system validates the equipment ID format
THEN:
Equipment ID format is checked against validation criteria
File: GCX016.cbl
GIVEN:
An equipment ID has been extracted from a VID segment
WHEN:
The system validates the equipment ID format
THEN:
The equipment ID is confirmed as valid or invalid based on format requirements
File: GCX016.cbl
GIVEN:
An equipment ID has been extracted from a VID segment
WHEN:
The system validates the equipment ID format
THEN:
The system determines if the equipment ID format is valid or invalid
File: GCX016.cbl
GIVEN:
An equipment ID has been extracted from a VID segment
WHEN:
The system validates the equipment ID format
THEN:
The equipment ID is confirmed as valid format for seizure processing or marked as invalid
File: GCX016.cbl
GIVEN:
An equipment ID has been extracted from a VID segment
WHEN:
The system validates the equipment ID format
THEN:
Verify the equipment ID conforms to standard format requirements for train equipment identification
File: GCX016.cbl
GIVEN:
An equipment ID has been extracted from VID segment
WHEN:
The system validates the equipment ID format
THEN:
The equipment ID format is checked against validation criteria
β Consolidated Acceptance Criteria
- If validation results → system determines if equipment ID is valid for hold processing or requires error handling
- The system validates the formatted equipment ID → if equipment ID is valid, proceed with equipment lookup, otherwise log invalid equipment ID error and continue to next VID segment
- If the equipment ID validity → if the equipment ID is valid, proceed with hold processing; if invalid, skip this equipment ID
- The system validates the equipment ID → equipment ID is accepted if valid or rejected if invalid with appropriate error handling
- The system validates the equipment ID → if equipment ID is valid, proceed to hold the equipment, otherwise skip this equipment and continue to next VID segment
- The system validates the equipment ID → equipment ID is accepted if valid or rejected if invalid with appropriate error logging
- If the validation results → if the equipment ID is valid, proceed with seizure marking, otherwise skip the invalid equipment and log an error
- The system validates the equipment ID format → if the equipment ID format is valid, proceed to find equipment in seized list, otherwise skip this invalid equipment ID
- The system validates the equipment ID → iF the equipment ID is valid THEN continue with hold/release processing ELSE skip the invalid equipment
- The system checks equipment ID validity → if equipment ID is valid, proceed with seizure processing, otherwise generate error for invalid equipment ID
- The system checks equipment ID validity for release → if equipment ID is valid, proceed with seizure release processing, otherwise generate error for invalid equipment ID
- The system validates the equipment ID → equipment ID is confirmed as valid or invalid based on business validation rules
- The system checks the validity of the formatted equipment ID → the equipment ID is determined to be either valid or invalid based on formatting standards
- The system checks if the equipment ID is valid → if equipment ID is valid, proceed to retrieve cargo records, otherwise log equipment ID error
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_EquipmentIDValid(["Start Step"])
E_EquipmentIDValid(["End Step"])
N_EquipmentIDValid_Node0{"The system evaluates validation
results"}:::decision N_EquipmentIDValid_Node0_action["System determines if equipment ID
is valid for hold processing or
requires error handling"]:::main N_EquipmentIDValid_Node0 -- Yes --> N_EquipmentIDValid_Node0_action N_EquipmentIDValid_Node0_action --> E_EquipmentIDValid S_EquipmentIDValid --> N_EquipmentIDValid_Node0 N_EquipmentIDValid_Node1{"The system validates the formatted
equipment ID"}:::decision N_EquipmentIDValid_Node1_action["If equipment ID is valid, proceed
with equipment lookup, otherwise log
invalid equipment ID error and
continue to next VID segment"]:::main N_EquipmentIDValid_Node1 -- Yes --> N_EquipmentIDValid_Node1_action N_EquipmentIDValid_Node1_action --> E_EquipmentIDValid N_EquipmentIDValid_Node0 -- No --> N_EquipmentIDValid_Node1 N_EquipmentIDValid_Node2{"The system evaluates the equipment
ID validity"}:::decision N_EquipmentIDValid_Node2_action["If the equipment ID is valid,
proceed with hold processing if
invalid, skip this equipment ID"]:::main N_EquipmentIDValid_Node2 -- Yes --> N_EquipmentIDValid_Node2_action N_EquipmentIDValid_Node2_action --> E_EquipmentIDValid N_EquipmentIDValid_Node1 -- No --> N_EquipmentIDValid_Node2 N_EquipmentIDValid_Node3{"The system validates the equipment
ID"}:::decision N_EquipmentIDValid_Node3_action["Equipment ID is accepted if valid
or rejected if invalid with
appropriate error handling"]:::exclusion N_EquipmentIDValid_Node3 -- Yes -->|Alternative| N_EquipmentIDValid_Node3_action N_EquipmentIDValid_Node3_action --> E_EquipmentIDValid N_EquipmentIDValid_Node2 -- No --> N_EquipmentIDValid_Node3 N_EquipmentIDValid_Node4{"The system validates the equipment
ID"}:::decision N_EquipmentIDValid_Node4_action["If equipment ID is valid, proceed
to hold the equipment, otherwise
skip this equipment and continue to
next VID segment"]:::main N_EquipmentIDValid_Node4 -- Yes --> N_EquipmentIDValid_Node4_action N_EquipmentIDValid_Node4_action --> E_EquipmentIDValid N_EquipmentIDValid_Node3 -- No --> N_EquipmentIDValid_Node4 N_EquipmentIDValid_Node5{"The system validates the equipment
ID"}:::decision N_EquipmentIDValid_Node5_action["Equipment ID is accepted if valid
or rejected if invalid with
appropriate error logging"]:::exclusion N_EquipmentIDValid_Node5 -- Yes -->|Alternative| N_EquipmentIDValid_Node5_action N_EquipmentIDValid_Node5_action --> E_EquipmentIDValid N_EquipmentIDValid_Node4 -- No --> N_EquipmentIDValid_Node5 N_EquipmentIDValid_Node6{"The system evaluates the validation
results"}:::decision N_EquipmentIDValid_Node6_action["If the equipment ID is valid,
proceed with seizure marking,
otherwise skip the invalid equipment
and log an error"]:::main N_EquipmentIDValid_Node6 -- Yes --> N_EquipmentIDValid_Node6_action N_EquipmentIDValid_Node6_action --> E_EquipmentIDValid N_EquipmentIDValid_Node5 -- No --> N_EquipmentIDValid_Node6 N_EquipmentIDValid_Node7{"The system validates the equipment
ID format"}:::decision N_EquipmentIDValid_Node7_action["If the equipment ID format is
valid, proceed to find equipment in
seized list, otherwise skip this
invalid equipment ID"]:::main N_EquipmentIDValid_Node7 -- Yes --> N_EquipmentIDValid_Node7_action N_EquipmentIDValid_Node7_action --> E_EquipmentIDValid N_EquipmentIDValid_Node6 -- No --> N_EquipmentIDValid_Node7 N_EquipmentIDValid_Node8{"The system validates the equipment
ID"}:::decision N_EquipmentIDValid_Node8_action["IF the equipment ID is valid THEN
continue with holdrelease processing
ELSE skip the invalid equipment"]:::main N_EquipmentIDValid_Node8 -- Yes --> N_EquipmentIDValid_Node8_action N_EquipmentIDValid_Node8_action --> E_EquipmentIDValid N_EquipmentIDValid_Node7 -- No --> N_EquipmentIDValid_Node8 N_EquipmentIDValid_Node9{"The system checks equipment ID
validity"}:::decision N_EquipmentIDValid_Node9_action["If equipment ID is valid, proceed
with seizure processing, otherwise
generate error for invalid equipment
ID"]:::main N_EquipmentIDValid_Node9 -- Yes --> N_EquipmentIDValid_Node9_action N_EquipmentIDValid_Node9_action --> E_EquipmentIDValid N_EquipmentIDValid_Node8 -- No --> N_EquipmentIDValid_Node9 N_EquipmentIDValid_Node10{"The system checks equipment ID
validity for release"}:::decision N_EquipmentIDValid_Node10_action["If equipment ID is valid, proceed
with seizure release processing,
otherwise generate error for invalid
equipment ID"]:::main N_EquipmentIDValid_Node10 -- Yes --> N_EquipmentIDValid_Node10_action N_EquipmentIDValid_Node10_action --> E_EquipmentIDValid N_EquipmentIDValid_Node9 -- No --> N_EquipmentIDValid_Node10 N_EquipmentIDValid_Node11{"The system validates the equipment
ID"}:::decision N_EquipmentIDValid_Node11_action["Equipment ID is confirmed as valid
or invalid based on business
validation rules"]:::main N_EquipmentIDValid_Node11 -- Yes --> N_EquipmentIDValid_Node11_action N_EquipmentIDValid_Node11_action --> E_EquipmentIDValid N_EquipmentIDValid_Node10 -- No --> N_EquipmentIDValid_Node11 N_EquipmentIDValid_Node12{"The system checks the validity of
the formatted equipment ID"}:::decision N_EquipmentIDValid_Node12_action["The equipment ID is determined to
be either valid or invalid based on
formatting standards"]:::main N_EquipmentIDValid_Node12 -- Yes --> N_EquipmentIDValid_Node12_action N_EquipmentIDValid_Node12_action --> E_EquipmentIDValid N_EquipmentIDValid_Node11 -- No --> N_EquipmentIDValid_Node12 N_EquipmentIDValid_Node13{"The system checks if the equipment
ID is valid"}:::decision N_EquipmentIDValid_Node13_action["If equipment ID is valid, proceed
to retrieve cargo records, otherwise
log equipment ID error"]:::main N_EquipmentIDValid_Node13 -- Yes --> N_EquipmentIDValid_Node13_action N_EquipmentIDValid_Node13_action --> E_EquipmentIDValid N_EquipmentIDValid_Node12 -- No --> N_EquipmentIDValid_Node13 N_EquipmentIDValid_Node13 -- No --> E_EquipmentIDValid
results"}:::decision N_EquipmentIDValid_Node0_action["System determines if equipment ID
is valid for hold processing or
requires error handling"]:::main N_EquipmentIDValid_Node0 -- Yes --> N_EquipmentIDValid_Node0_action N_EquipmentIDValid_Node0_action --> E_EquipmentIDValid S_EquipmentIDValid --> N_EquipmentIDValid_Node0 N_EquipmentIDValid_Node1{"The system validates the formatted
equipment ID"}:::decision N_EquipmentIDValid_Node1_action["If equipment ID is valid, proceed
with equipment lookup, otherwise log
invalid equipment ID error and
continue to next VID segment"]:::main N_EquipmentIDValid_Node1 -- Yes --> N_EquipmentIDValid_Node1_action N_EquipmentIDValid_Node1_action --> E_EquipmentIDValid N_EquipmentIDValid_Node0 -- No --> N_EquipmentIDValid_Node1 N_EquipmentIDValid_Node2{"The system evaluates the equipment
ID validity"}:::decision N_EquipmentIDValid_Node2_action["If the equipment ID is valid,
proceed with hold processing if
invalid, skip this equipment ID"]:::main N_EquipmentIDValid_Node2 -- Yes --> N_EquipmentIDValid_Node2_action N_EquipmentIDValid_Node2_action --> E_EquipmentIDValid N_EquipmentIDValid_Node1 -- No --> N_EquipmentIDValid_Node2 N_EquipmentIDValid_Node3{"The system validates the equipment
ID"}:::decision N_EquipmentIDValid_Node3_action["Equipment ID is accepted if valid
or rejected if invalid with
appropriate error handling"]:::exclusion N_EquipmentIDValid_Node3 -- Yes -->|Alternative| N_EquipmentIDValid_Node3_action N_EquipmentIDValid_Node3_action --> E_EquipmentIDValid N_EquipmentIDValid_Node2 -- No --> N_EquipmentIDValid_Node3 N_EquipmentIDValid_Node4{"The system validates the equipment
ID"}:::decision N_EquipmentIDValid_Node4_action["If equipment ID is valid, proceed
to hold the equipment, otherwise
skip this equipment and continue to
next VID segment"]:::main N_EquipmentIDValid_Node4 -- Yes --> N_EquipmentIDValid_Node4_action N_EquipmentIDValid_Node4_action --> E_EquipmentIDValid N_EquipmentIDValid_Node3 -- No --> N_EquipmentIDValid_Node4 N_EquipmentIDValid_Node5{"The system validates the equipment
ID"}:::decision N_EquipmentIDValid_Node5_action["Equipment ID is accepted if valid
or rejected if invalid with
appropriate error logging"]:::exclusion N_EquipmentIDValid_Node5 -- Yes -->|Alternative| N_EquipmentIDValid_Node5_action N_EquipmentIDValid_Node5_action --> E_EquipmentIDValid N_EquipmentIDValid_Node4 -- No --> N_EquipmentIDValid_Node5 N_EquipmentIDValid_Node6{"The system evaluates the validation
results"}:::decision N_EquipmentIDValid_Node6_action["If the equipment ID is valid,
proceed with seizure marking,
otherwise skip the invalid equipment
and log an error"]:::main N_EquipmentIDValid_Node6 -- Yes --> N_EquipmentIDValid_Node6_action N_EquipmentIDValid_Node6_action --> E_EquipmentIDValid N_EquipmentIDValid_Node5 -- No --> N_EquipmentIDValid_Node6 N_EquipmentIDValid_Node7{"The system validates the equipment
ID format"}:::decision N_EquipmentIDValid_Node7_action["If the equipment ID format is
valid, proceed to find equipment in
seized list, otherwise skip this
invalid equipment ID"]:::main N_EquipmentIDValid_Node7 -- Yes --> N_EquipmentIDValid_Node7_action N_EquipmentIDValid_Node7_action --> E_EquipmentIDValid N_EquipmentIDValid_Node6 -- No --> N_EquipmentIDValid_Node7 N_EquipmentIDValid_Node8{"The system validates the equipment
ID"}:::decision N_EquipmentIDValid_Node8_action["IF the equipment ID is valid THEN
continue with holdrelease processing
ELSE skip the invalid equipment"]:::main N_EquipmentIDValid_Node8 -- Yes --> N_EquipmentIDValid_Node8_action N_EquipmentIDValid_Node8_action --> E_EquipmentIDValid N_EquipmentIDValid_Node7 -- No --> N_EquipmentIDValid_Node8 N_EquipmentIDValid_Node9{"The system checks equipment ID
validity"}:::decision N_EquipmentIDValid_Node9_action["If equipment ID is valid, proceed
with seizure processing, otherwise
generate error for invalid equipment
ID"]:::main N_EquipmentIDValid_Node9 -- Yes --> N_EquipmentIDValid_Node9_action N_EquipmentIDValid_Node9_action --> E_EquipmentIDValid N_EquipmentIDValid_Node8 -- No --> N_EquipmentIDValid_Node9 N_EquipmentIDValid_Node10{"The system checks equipment ID
validity for release"}:::decision N_EquipmentIDValid_Node10_action["If equipment ID is valid, proceed
with seizure release processing,
otherwise generate error for invalid
equipment ID"]:::main N_EquipmentIDValid_Node10 -- Yes --> N_EquipmentIDValid_Node10_action N_EquipmentIDValid_Node10_action --> E_EquipmentIDValid N_EquipmentIDValid_Node9 -- No --> N_EquipmentIDValid_Node10 N_EquipmentIDValid_Node11{"The system validates the equipment
ID"}:::decision N_EquipmentIDValid_Node11_action["Equipment ID is confirmed as valid
or invalid based on business
validation rules"]:::main N_EquipmentIDValid_Node11 -- Yes --> N_EquipmentIDValid_Node11_action N_EquipmentIDValid_Node11_action --> E_EquipmentIDValid N_EquipmentIDValid_Node10 -- No --> N_EquipmentIDValid_Node11 N_EquipmentIDValid_Node12{"The system checks the validity of
the formatted equipment ID"}:::decision N_EquipmentIDValid_Node12_action["The equipment ID is determined to
be either valid or invalid based on
formatting standards"]:::main N_EquipmentIDValid_Node12 -- Yes --> N_EquipmentIDValid_Node12_action N_EquipmentIDValid_Node12_action --> E_EquipmentIDValid N_EquipmentIDValid_Node11 -- No --> N_EquipmentIDValid_Node12 N_EquipmentIDValid_Node13{"The system checks if the equipment
ID is valid"}:::decision N_EquipmentIDValid_Node13_action["If equipment ID is valid, proceed
to retrieve cargo records, otherwise
log equipment ID error"]:::main N_EquipmentIDValid_Node13 -- Yes --> N_EquipmentIDValid_Node13_action N_EquipmentIDValid_Node13_action --> E_EquipmentIDValid N_EquipmentIDValid_Node12 -- No --> N_EquipmentIDValid_Node13 N_EquipmentIDValid_Node13 -- No --> E_EquipmentIDValid
File: GCX016.cbl
GIVEN:
Equipment ID format validation has been performed
WHEN:
The system evaluates validation results
THEN:
System determines if equipment ID is valid for hold processing or requires error handling
File: GCX016.cbl
GIVEN:
An equipment ID has been formatted using GCCCARFM
WHEN:
The system validates the formatted equipment ID
THEN:
- If equipment id is valid, proceed with equipment lookup, otherwise log invalid equipment id error
- Continue to next vid segment
File: GCX016.cbl
GIVEN:
An equipment ID has been formatted using GCCCARFM
WHEN:
The system evaluates the equipment ID validity
THEN:
If the equipment ID is valid, proceed with hold processing; if invalid, skip this equipment ID
File: GCX016.cbl
GIVEN:
Equipment ID has been formatted using GCCCARFM utility
WHEN:
The system validates the equipment ID
THEN:
Equipment ID is accepted if valid or rejected if invalid with appropriate error handling
File: GCX016.cbl
GIVEN:
Equipment ID has been formatted using GCCCARFM
WHEN:
The system validates the equipment ID
THEN:
- If equipment id is valid, proceed to hold the equipment, otherwise skip this equipment
- Continue to next vid segment
File: GCX016.cbl
GIVEN:
An equipment ID has been formatted
WHEN:
The system validates the equipment ID
THEN:
Equipment ID is accepted if valid or rejected if invalid with appropriate error logging
File: GCX016.cbl
GIVEN:
An equipment ID has been validated for format compliance
WHEN:
The system evaluates the validation results
THEN:
- If the equipment id is valid, proceed with seizure marking, otherwise skip the invalid equipment
- Log an error
File: GCX016.cbl
GIVEN:
An equipment ID has been extracted from a VID segment
WHEN:
The system validates the equipment ID format
THEN:
If the equipment ID format is valid, proceed to find equipment in seized list, otherwise skip this invalid equipment ID
File: GCX016.cbl
GIVEN:
An equipment ID has been formatted using GCCCARFM
WHEN:
The system validates the equipment ID
THEN:
IF the equipment ID is valid THEN continue with hold/release processing ELSE skip the invalid equipment
File: GCX016.cbl
GIVEN:
An equipment ID has been validated for format
WHEN:
The system checks equipment ID validity
THEN:
If equipment ID is valid, proceed with seizure processing, otherwise generate error for invalid equipment ID
File: GCX016.cbl
GIVEN:
An equipment ID has been validated for format during release processing
WHEN:
The system checks equipment ID validity for release
THEN:
If equipment ID is valid, proceed with seizure release processing, otherwise generate error for invalid equipment ID
File: GCX016.cbl
GIVEN:
Equipment ID has been formatted using GCCCARFM utility
WHEN:
The system validates the equipment ID
THEN:
Equipment ID is confirmed as valid or invalid based on business validation rules
File: GCX016.cbl
GIVEN:
An equipment ID has been processed through the GCCCARFM formatting utility
WHEN:
The system checks the validity of the formatted equipment ID
THEN:
The equipment ID is determined to be either valid or invalid based on formatting standards
File: GCX016.cbl
GIVEN:
An equipment ID has been formatted using GCCCARFM utility
WHEN:
The system checks if the equipment ID is valid
THEN:
If equipment ID is valid, proceed to retrieve cargo records, otherwise log equipment ID error
β Consolidated Acceptance Criteria
- The system processes the validation failure → validation error is logged with equipment ID details for audit purposes
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogEquipmentIDValidationError(["Start Step"])
E_LogEquipmentIDValidationError(["End Step"])
N_LogEquipmentIDValidationError_Node0{"The system processes the validation
failure"}:::decision N_LogEquipmentIDValidationError_Node0_action["Validation error is logged with
equipment ID details for audit
purposes"]:::main N_LogEquipmentIDValidationError_Node0 -- Yes --> N_LogEquipmentIDValidationError_Node0_action N_LogEquipmentIDValidationError_Node0_action --> E_LogEquipmentIDValidationError S_LogEquipmentIDValidationError --> N_LogEquipmentIDValidationError_Node0 N_LogEquipmentIDValidationError_Node0 -- No --> E_LogEquipmentIDValidationError
failure"}:::decision N_LogEquipmentIDValidationError_Node0_action["Validation error is logged with
equipment ID details for audit
purposes"]:::main N_LogEquipmentIDValidationError_Node0 -- Yes --> N_LogEquipmentIDValidationError_Node0_action N_LogEquipmentIDValidationError_Node0_action --> E_LogEquipmentIDValidationError S_LogEquipmentIDValidationError --> N_LogEquipmentIDValidationError_Node0 N_LogEquipmentIDValidationError_Node0 -- No --> E_LogEquipmentIDValidationError
File: GCX016.cbl
GIVEN:
Equipment ID validation has failed
WHEN:
The system processes the validation failure
THEN:
Validation error is logged with equipment ID details for audit purposes
β Consolidated Acceptance Criteria
- The system continues VID segment processing → invalid equipment is skipped and processing continues with next VID segment
- The system encounters invalid equipment → the invalid equipment is skipped AND processing continues with the next VID segment
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SkipInvalidEquipment(["Start Step"])
E_SkipInvalidEquipment(["End Step"])
N_SkipInvalidEquipment_Node0{"The system continues VID segment
processing"}:::decision N_SkipInvalidEquipment_Node0_action["Invalid equipment is skipped and
processing continues with next VID
segment"]:::main N_SkipInvalidEquipment_Node0 -- Yes --> N_SkipInvalidEquipment_Node0_action N_SkipInvalidEquipment_Node0_action --> E_SkipInvalidEquipment S_SkipInvalidEquipment --> N_SkipInvalidEquipment_Node0 N_SkipInvalidEquipment_Node1{"The system encounters invalid
equipment"}:::decision N_SkipInvalidEquipment_Node1_action["The invalid equipment is skipped
AND processing continues with the
next VID segment"]:::exclusion N_SkipInvalidEquipment_Node1 -- Yes -->|Alternative| N_SkipInvalidEquipment_Node1_action N_SkipInvalidEquipment_Node1_action --> E_SkipInvalidEquipment N_SkipInvalidEquipment_Node0 -- No --> N_SkipInvalidEquipment_Node1 N_SkipInvalidEquipment_Node1 -- No --> E_SkipInvalidEquipment
processing"}:::decision N_SkipInvalidEquipment_Node0_action["Invalid equipment is skipped and
processing continues with next VID
segment"]:::main N_SkipInvalidEquipment_Node0 -- Yes --> N_SkipInvalidEquipment_Node0_action N_SkipInvalidEquipment_Node0_action --> E_SkipInvalidEquipment S_SkipInvalidEquipment --> N_SkipInvalidEquipment_Node0 N_SkipInvalidEquipment_Node1{"The system encounters invalid
equipment"}:::decision N_SkipInvalidEquipment_Node1_action["The invalid equipment is skipped
AND processing continues with the
next VID segment"]:::exclusion N_SkipInvalidEquipment_Node1 -- Yes -->|Alternative| N_SkipInvalidEquipment_Node1_action N_SkipInvalidEquipment_Node1_action --> E_SkipInvalidEquipment N_SkipInvalidEquipment_Node0 -- No --> N_SkipInvalidEquipment_Node1 N_SkipInvalidEquipment_Node1 -- No --> E_SkipInvalidEquipment
File: GCX016.cbl
GIVEN:
Equipment ID validation has failed and error has been logged
WHEN:
The system continues VID segment processing
THEN:
- Invalid equipment is skipped
- Processing continues with next vid segment
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
Equipment ID validation fails
WHEN:
The system encounters invalid equipment
THEN:
- The invalid equipment is skipped
- Processing continues with the next vid segment
β Consolidated Acceptance Criteria
- The system processes the valid equipment for hold → equipment is added to the train's hold list for tracking purposes
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AddEquipmenttoTrainHoldList(["Start Step"])
E_AddEquipmenttoTrainHoldList(["End Step"])
N_AddEquipmenttoTrainHoldList_Node0{"The system processes the valid
equipment for hold"}:::decision N_AddEquipmenttoTrainHoldList_Node0_action["Equipment is added to the train s
hold list for tracking purposes"]:::main N_AddEquipmenttoTrainHoldList_Node0 -- Yes --> N_AddEquipmenttoTrainHoldList_Node0_action N_AddEquipmenttoTrainHoldList_Node0_action --> E_AddEquipmenttoTrainHoldList S_AddEquipmenttoTrainHoldList --> N_AddEquipmenttoTrainHoldList_Node0 N_AddEquipmenttoTrainHoldList_Node0 -- No --> E_AddEquipmenttoTrainHoldList
equipment for hold"}:::decision N_AddEquipmenttoTrainHoldList_Node0_action["Equipment is added to the train s
hold list for tracking purposes"]:::main N_AddEquipmenttoTrainHoldList_Node0 -- Yes --> N_AddEquipmenttoTrainHoldList_Node0_action N_AddEquipmenttoTrainHoldList_Node0_action --> E_AddEquipmenttoTrainHoldList S_AddEquipmenttoTrainHoldList --> N_AddEquipmenttoTrainHoldList_Node0 N_AddEquipmenttoTrainHoldList_Node0 -- No --> E_AddEquipmenttoTrainHoldList
File: GCX016.cbl
GIVEN:
Equipment ID has passed validation checks
WHEN:
The system processes the valid equipment for hold
THEN:
Equipment is added to the train's hold list for tracking purposes
β Consolidated Acceptance Criteria
- The system updates hold tracking counters → held equipment counter is incremented by one
- The system updates hold statistics → increment the held equipment counter by one
- The system updates the held equipment count → the held equipment counter is incremented by one
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IncrementHeldEquipmentCounter(["Start Step"])
E_IncrementHeldEquipmentCounter(["End Step"])
N_IncrementHeldEquipmentCounter_Node0{"The system updates hold tracking
counters"}:::decision N_IncrementHeldEquipmentCounter_Node0_action["Held equipment counter is
incremented by one"]:::main N_IncrementHeldEquipmentCounter_Node0 -- Yes --> N_IncrementHeldEquipmentCounter_Node0_action N_IncrementHeldEquipmentCounter_Node0_action --> E_IncrementHeldEquipmentCounter S_IncrementHeldEquipmentCounter --> N_IncrementHeldEquipmentCounter_Node0 N_IncrementHeldEquipmentCounter_Node1{"The system updates hold statistics"}:::decision N_IncrementHeldEquipmentCounter_Node1_action["Increment the held equipment
counter by one"]:::main N_IncrementHeldEquipmentCounter_Node1 -- Yes --> N_IncrementHeldEquipmentCounter_Node1_action N_IncrementHeldEquipmentCounter_Node1_action --> E_IncrementHeldEquipmentCounter N_IncrementHeldEquipmentCounter_Node0 -- No --> N_IncrementHeldEquipmentCounter_Node1 N_IncrementHeldEquipmentCounter_Node2{"The system updates the held
equipment count"}:::decision N_IncrementHeldEquipmentCounter_Node2_action["The held equipment counter is
incremented by one"]:::main N_IncrementHeldEquipmentCounter_Node2 -- Yes --> N_IncrementHeldEquipmentCounter_Node2_action N_IncrementHeldEquipmentCounter_Node2_action --> E_IncrementHeldEquipmentCounter N_IncrementHeldEquipmentCounter_Node1 -- No --> N_IncrementHeldEquipmentCounter_Node2 N_IncrementHeldEquipmentCounter_Node2 -- No --> E_IncrementHeldEquipmentCounter
counters"}:::decision N_IncrementHeldEquipmentCounter_Node0_action["Held equipment counter is
incremented by one"]:::main N_IncrementHeldEquipmentCounter_Node0 -- Yes --> N_IncrementHeldEquipmentCounter_Node0_action N_IncrementHeldEquipmentCounter_Node0_action --> E_IncrementHeldEquipmentCounter S_IncrementHeldEquipmentCounter --> N_IncrementHeldEquipmentCounter_Node0 N_IncrementHeldEquipmentCounter_Node1{"The system updates hold statistics"}:::decision N_IncrementHeldEquipmentCounter_Node1_action["Increment the held equipment
counter by one"]:::main N_IncrementHeldEquipmentCounter_Node1 -- Yes --> N_IncrementHeldEquipmentCounter_Node1_action N_IncrementHeldEquipmentCounter_Node1_action --> E_IncrementHeldEquipmentCounter N_IncrementHeldEquipmentCounter_Node0 -- No --> N_IncrementHeldEquipmentCounter_Node1 N_IncrementHeldEquipmentCounter_Node2{"The system updates the held
equipment count"}:::decision N_IncrementHeldEquipmentCounter_Node2_action["The held equipment counter is
incremented by one"]:::main N_IncrementHeldEquipmentCounter_Node2 -- Yes --> N_IncrementHeldEquipmentCounter_Node2_action N_IncrementHeldEquipmentCounter_Node2_action --> E_IncrementHeldEquipmentCounter N_IncrementHeldEquipmentCounter_Node1 -- No --> N_IncrementHeldEquipmentCounter_Node2 N_IncrementHeldEquipmentCounter_Node2 -- No --> E_IncrementHeldEquipmentCounter
File: GCX016.cbl
GIVEN:
Equipment has been added to train hold list
WHEN:
The system updates hold tracking counters
THEN:
Held equipment counter is incremented by one
File: GCX016.cbl
GIVEN:
Specific equipment has been successfully held on the train
WHEN:
The system updates hold statistics
THEN:
Increment the held equipment counter by one
File: GCX016.cbl
GIVEN:
Equipment has been added to the hold list
WHEN:
The system updates the held equipment count
THEN:
The held equipment counter is incremented by one
β Consolidated Acceptance Criteria
- The system updates equipment status → equipment record is marked as held in the system database
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MarkEquipmentasHeldinSystem(["Start Step"])
E_MarkEquipmentasHeldinSystem(["End Step"])
N_MarkEquipmentasHeldinSystem_Node0{"The system updates equipment status"}:::decision
N_MarkEquipmentasHeldinSystem_Node0_action["Equipment record is marked as held
in the system database"]:::main N_MarkEquipmentasHeldinSystem_Node0 -- Yes --> N_MarkEquipmentasHeldinSystem_Node0_action N_MarkEquipmentasHeldinSystem_Node0_action --> E_MarkEquipmentasHeldinSystem S_MarkEquipmentasHeldinSystem --> N_MarkEquipmentasHeldinSystem_Node0 N_MarkEquipmentasHeldinSystem_Node0 -- No --> E_MarkEquipmentasHeldinSystem
in the system database"]:::main N_MarkEquipmentasHeldinSystem_Node0 -- Yes --> N_MarkEquipmentasHeldinSystem_Node0_action N_MarkEquipmentasHeldinSystem_Node0_action --> E_MarkEquipmentasHeldinSystem S_MarkEquipmentasHeldinSystem --> N_MarkEquipmentasHeldinSystem_Node0 N_MarkEquipmentasHeldinSystem_Node0 -- No --> E_MarkEquipmentasHeldinSystem
File: GCX016.cbl
GIVEN:
Equipment has been added to hold list and counter incremented
WHEN:
The system updates equipment status
THEN:
Equipment record is marked as held in the system database
β Consolidated Acceptance Criteria
- The system processes hold notification requirements → hold notification is generated for the equipment
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GenerateEquipmentHoldNotification(["Start Step"])
E_GenerateEquipmentHoldNotification(["End Step"])
N_GenerateEquipmentHoldNotification_Node0{"The system processes hold
notification requirements"}:::decision N_GenerateEquipmentHoldNotification_Node0_action["Hold notification is generated for
the equipment"]:::main N_GenerateEquipmentHoldNotification_Node0 -- Yes --> N_GenerateEquipmentHoldNotification_Node0_action N_GenerateEquipmentHoldNotification_Node0_action --> E_GenerateEquipmentHoldNotification S_GenerateEquipmentHoldNotification --> N_GenerateEquipmentHoldNotification_Node0 N_GenerateEquipmentHoldNotification_Node0 -- No --> E_GenerateEquipmentHoldNotification
notification requirements"}:::decision N_GenerateEquipmentHoldNotification_Node0_action["Hold notification is generated for
the equipment"]:::main N_GenerateEquipmentHoldNotification_Node0 -- Yes --> N_GenerateEquipmentHoldNotification_Node0_action N_GenerateEquipmentHoldNotification_Node0_action --> E_GenerateEquipmentHoldNotification S_GenerateEquipmentHoldNotification --> N_GenerateEquipmentHoldNotification_Node0 N_GenerateEquipmentHoldNotification_Node0 -- No --> E_GenerateEquipmentHoldNotification
File: GCX016.cbl
GIVEN:
Equipment has been marked as held in system
WHEN:
The system processes hold notification requirements
THEN:
Hold notification is generated for the equipment
β Consolidated Acceptance Criteria
- The system updates train-level hold information → train record is updated with current equipment hold count
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UpdateEquipmentHoldCountonTrain(["Start Step"])
E_UpdateEquipmentHoldCountonTrain(["End Step"])
N_UpdateEquipmentHoldCountonTrain_Node0{"The system updates train-level hold
information"}:::decision N_UpdateEquipmentHoldCountonTrain_Node0_action["Train record is updated with
current equipment hold count"]:::main N_UpdateEquipmentHoldCountonTrain_Node0 -- Yes --> N_UpdateEquipmentHoldCountonTrain_Node0_action N_UpdateEquipmentHoldCountonTrain_Node0_action --> E_UpdateEquipmentHoldCountonTrain S_UpdateEquipmentHoldCountonTrain --> N_UpdateEquipmentHoldCountonTrain_Node0 N_UpdateEquipmentHoldCountonTrain_Node0 -- No --> E_UpdateEquipmentHoldCountonTrain
information"}:::decision N_UpdateEquipmentHoldCountonTrain_Node0_action["Train record is updated with
current equipment hold count"]:::main N_UpdateEquipmentHoldCountonTrain_Node0 -- Yes --> N_UpdateEquipmentHoldCountonTrain_Node0_action N_UpdateEquipmentHoldCountonTrain_Node0_action --> E_UpdateEquipmentHoldCountonTrain S_UpdateEquipmentHoldCountonTrain --> N_UpdateEquipmentHoldCountonTrain_Node0 N_UpdateEquipmentHoldCountonTrain_Node0 -- No --> E_UpdateEquipmentHoldCountonTrain
File: GCX016.cbl
GIVEN:
Equipment hold notification has been generated
WHEN:
The system updates train-level hold information
THEN:
Train record is updated with current equipment hold count
β Consolidated Acceptance Criteria
- If train hold status → train hold status is updated to reflect current hold conditions
- If the train's overall hold status → the train hold status is updated based on remaining held equipment count
- The system finalizes equipment hold processing → update the train hold status based on the number of equipment units held
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UpdateTrainHoldStatus(["Start Step"])
E_UpdateTrainHoldStatus(["End Step"])
N_UpdateTrainHoldStatus_Node0{"The system evaluates train hold
status"}:::decision N_UpdateTrainHoldStatus_Node0_action["Train hold status is updated to
reflect current hold conditions"]:::main N_UpdateTrainHoldStatus_Node0 -- Yes --> N_UpdateTrainHoldStatus_Node0_action N_UpdateTrainHoldStatus_Node0_action --> E_UpdateTrainHoldStatus S_UpdateTrainHoldStatus --> N_UpdateTrainHoldStatus_Node0 N_UpdateTrainHoldStatus_Node1{"The system evaluates the train s
overall hold status"}:::decision N_UpdateTrainHoldStatus_Node1_action["The train hold status is updated
based on remaining held equipment
count"]:::main N_UpdateTrainHoldStatus_Node1 -- Yes --> N_UpdateTrainHoldStatus_Node1_action N_UpdateTrainHoldStatus_Node1_action --> E_UpdateTrainHoldStatus N_UpdateTrainHoldStatus_Node0 -- No --> N_UpdateTrainHoldStatus_Node1 N_UpdateTrainHoldStatus_Node2{"The system finalizes equipment hold
processing"}:::decision N_UpdateTrainHoldStatus_Node2_action["Update the train hold status based
on the number of equipment units
held"]:::main N_UpdateTrainHoldStatus_Node2 -- Yes --> N_UpdateTrainHoldStatus_Node2_action N_UpdateTrainHoldStatus_Node2_action --> E_UpdateTrainHoldStatus N_UpdateTrainHoldStatus_Node1 -- No --> N_UpdateTrainHoldStatus_Node2 N_UpdateTrainHoldStatus_Node2 -- No --> E_UpdateTrainHoldStatus
status"}:::decision N_UpdateTrainHoldStatus_Node0_action["Train hold status is updated to
reflect current hold conditions"]:::main N_UpdateTrainHoldStatus_Node0 -- Yes --> N_UpdateTrainHoldStatus_Node0_action N_UpdateTrainHoldStatus_Node0_action --> E_UpdateTrainHoldStatus S_UpdateTrainHoldStatus --> N_UpdateTrainHoldStatus_Node0 N_UpdateTrainHoldStatus_Node1{"The system evaluates the train s
overall hold status"}:::decision N_UpdateTrainHoldStatus_Node1_action["The train hold status is updated
based on remaining held equipment
count"]:::main N_UpdateTrainHoldStatus_Node1 -- Yes --> N_UpdateTrainHoldStatus_Node1_action N_UpdateTrainHoldStatus_Node1_action --> E_UpdateTrainHoldStatus N_UpdateTrainHoldStatus_Node0 -- No --> N_UpdateTrainHoldStatus_Node1 N_UpdateTrainHoldStatus_Node2{"The system finalizes equipment hold
processing"}:::decision N_UpdateTrainHoldStatus_Node2_action["Update the train hold status based
on the number of equipment units
held"]:::main N_UpdateTrainHoldStatus_Node2 -- Yes --> N_UpdateTrainHoldStatus_Node2_action N_UpdateTrainHoldStatus_Node2_action --> E_UpdateTrainHoldStatus N_UpdateTrainHoldStatus_Node1 -- No --> N_UpdateTrainHoldStatus_Node2 N_UpdateTrainHoldStatus_Node2 -- No --> E_UpdateTrainHoldStatus
File: GCX016.cbl
GIVEN:
Equipment hold count has been updated on train
WHEN:
The system evaluates train hold status
THEN:
Train hold status is updated to reflect current hold conditions
File: GCX016.cbl
GIVEN:
All VID segments have been processed for equipment releases
WHEN:
The system evaluates the train's overall hold status
THEN:
The train hold status is updated based on remaining held equipment count
File: GCX016.cbl
GIVEN:
All VID segments have been processed
WHEN:
The system finalizes equipment hold processing
THEN:
Update the train hold status based on the number of equipment units held
β Consolidated Acceptance Criteria
- The system checks for remaining VID segments → system determines if more VID segments need processing or if hold processing is complete
- The system checks for more VID segments in the message → the system determines if additional VID segments exist and continues processing or proceeds to train record update
- The system checks for additional VID segments in the message → the system either continues processing more VID segments or proceeds to train status update
- The system checks for additional VID segments in the message → if more VID segments exist, continue processing; if no more segments, proceed to train status determination
- The system checks for additional VID segments in the message → the system continues processing if more VID segments exist or proceeds to finalize seizure processing
- The system checks for remaining VID segments → if more VID segments exist, continue processing the next VID segment, otherwise proceed to update train seizure status
- The system checks for remaining VID segments → if more VID segments exist, continue processing next segment, otherwise proceed to update train hold status
- If VID segment availability → if more VID segments exist, continue processing them, otherwise proceed to update overall train seizure status
- The system checks for additional VID segments → if more VID segments exist, continue processing the next VID segment, otherwise proceed to check train overall seizure status
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MoreVIDSegments(["Start Step"])
E_MoreVIDSegments(["End Step"])
N_MoreVIDSegments_Node0{"The system checks for remaining VID
segments"}:::decision N_MoreVIDSegments_Node0_action["System determines if more VID
segments need processing or if hold
processing is complete"]:::main N_MoreVIDSegments_Node0 -- Yes --> N_MoreVIDSegments_Node0_action N_MoreVIDSegments_Node0_action --> E_MoreVIDSegments S_MoreVIDSegments --> N_MoreVIDSegments_Node0 N_MoreVIDSegments_Node1{"The system checks for more VID
segments in the message"}:::decision N_MoreVIDSegments_Node1_action["The system determines if additional
VID segments exist and continues
processing or proceeds to train
record update"]:::main N_MoreVIDSegments_Node1 -- Yes --> N_MoreVIDSegments_Node1_action N_MoreVIDSegments_Node1_action --> E_MoreVIDSegments N_MoreVIDSegments_Node0 -- No --> N_MoreVIDSegments_Node1 N_MoreVIDSegments_Node2{"The system checks for additional
VID segments in the message"}:::decision N_MoreVIDSegments_Node2_action["The system either continues
processing more VID segments or
proceeds to train status update"]:::main N_MoreVIDSegments_Node2 -- Yes --> N_MoreVIDSegments_Node2_action N_MoreVIDSegments_Node2_action --> E_MoreVIDSegments N_MoreVIDSegments_Node1 -- No --> N_MoreVIDSegments_Node2 N_MoreVIDSegments_Node3{"The system checks for additional
VID segments in the message"}:::decision N_MoreVIDSegments_Node3_action["If more VID segments exist,
continue processing if no more
segments, proceed to train status
determination"]:::main N_MoreVIDSegments_Node3 -- Yes --> N_MoreVIDSegments_Node3_action N_MoreVIDSegments_Node3_action --> E_MoreVIDSegments N_MoreVIDSegments_Node2 -- No --> N_MoreVIDSegments_Node3 N_MoreVIDSegments_Node4{"The system checks for additional
VID segments in the message"}:::decision N_MoreVIDSegments_Node4_action["The system continues processing if
more VID segments exist or proceeds
to finalize seizure processing"]:::main N_MoreVIDSegments_Node4 -- Yes --> N_MoreVIDSegments_Node4_action N_MoreVIDSegments_Node4_action --> E_MoreVIDSegments N_MoreVIDSegments_Node3 -- No --> N_MoreVIDSegments_Node4 N_MoreVIDSegments_Node5{"The system checks for remaining VID
segments"}:::decision N_MoreVIDSegments_Node5_action["If more VID segments exist,
continue processing the next VID
segment, otherwise proceed to update
train seizure status"]:::main N_MoreVIDSegments_Node5 -- Yes --> N_MoreVIDSegments_Node5_action N_MoreVIDSegments_Node5_action --> E_MoreVIDSegments N_MoreVIDSegments_Node4 -- No --> N_MoreVIDSegments_Node5 N_MoreVIDSegments_Node6{"The system checks for remaining VID
segments"}:::decision N_MoreVIDSegments_Node6_action["If more VID segments exist,
continue processing next segment,
otherwise proceed to update train
hold status"]:::main N_MoreVIDSegments_Node6 -- Yes --> N_MoreVIDSegments_Node6_action N_MoreVIDSegments_Node6_action --> E_MoreVIDSegments N_MoreVIDSegments_Node5 -- No --> N_MoreVIDSegments_Node6 N_MoreVIDSegments_Node7{"The system evaluates VID segment
availability"}:::decision N_MoreVIDSegments_Node7_action["If more VID segments exist,
continue processing them, otherwise
proceed to update overall train
seizure status"]:::main N_MoreVIDSegments_Node7 -- Yes --> N_MoreVIDSegments_Node7_action N_MoreVIDSegments_Node7_action --> E_MoreVIDSegments N_MoreVIDSegments_Node6 -- No --> N_MoreVIDSegments_Node7 N_MoreVIDSegments_Node8{"The system checks for additional
VID segments"}:::decision N_MoreVIDSegments_Node8_action["If more VID segments exist,
continue processing the next VID
segment, otherwise proceed to check
train overall seizure status"]:::main N_MoreVIDSegments_Node8 -- Yes --> N_MoreVIDSegments_Node8_action N_MoreVIDSegments_Node8_action --> E_MoreVIDSegments N_MoreVIDSegments_Node7 -- No --> N_MoreVIDSegments_Node8 N_MoreVIDSegments_Node8 -- No --> E_MoreVIDSegments
segments"}:::decision N_MoreVIDSegments_Node0_action["System determines if more VID
segments need processing or if hold
processing is complete"]:::main N_MoreVIDSegments_Node0 -- Yes --> N_MoreVIDSegments_Node0_action N_MoreVIDSegments_Node0_action --> E_MoreVIDSegments S_MoreVIDSegments --> N_MoreVIDSegments_Node0 N_MoreVIDSegments_Node1{"The system checks for more VID
segments in the message"}:::decision N_MoreVIDSegments_Node1_action["The system determines if additional
VID segments exist and continues
processing or proceeds to train
record update"]:::main N_MoreVIDSegments_Node1 -- Yes --> N_MoreVIDSegments_Node1_action N_MoreVIDSegments_Node1_action --> E_MoreVIDSegments N_MoreVIDSegments_Node0 -- No --> N_MoreVIDSegments_Node1 N_MoreVIDSegments_Node2{"The system checks for additional
VID segments in the message"}:::decision N_MoreVIDSegments_Node2_action["The system either continues
processing more VID segments or
proceeds to train status update"]:::main N_MoreVIDSegments_Node2 -- Yes --> N_MoreVIDSegments_Node2_action N_MoreVIDSegments_Node2_action --> E_MoreVIDSegments N_MoreVIDSegments_Node1 -- No --> N_MoreVIDSegments_Node2 N_MoreVIDSegments_Node3{"The system checks for additional
VID segments in the message"}:::decision N_MoreVIDSegments_Node3_action["If more VID segments exist,
continue processing if no more
segments, proceed to train status
determination"]:::main N_MoreVIDSegments_Node3 -- Yes --> N_MoreVIDSegments_Node3_action N_MoreVIDSegments_Node3_action --> E_MoreVIDSegments N_MoreVIDSegments_Node2 -- No --> N_MoreVIDSegments_Node3 N_MoreVIDSegments_Node4{"The system checks for additional
VID segments in the message"}:::decision N_MoreVIDSegments_Node4_action["The system continues processing if
more VID segments exist or proceeds
to finalize seizure processing"]:::main N_MoreVIDSegments_Node4 -- Yes --> N_MoreVIDSegments_Node4_action N_MoreVIDSegments_Node4_action --> E_MoreVIDSegments N_MoreVIDSegments_Node3 -- No --> N_MoreVIDSegments_Node4 N_MoreVIDSegments_Node5{"The system checks for remaining VID
segments"}:::decision N_MoreVIDSegments_Node5_action["If more VID segments exist,
continue processing the next VID
segment, otherwise proceed to update
train seizure status"]:::main N_MoreVIDSegments_Node5 -- Yes --> N_MoreVIDSegments_Node5_action N_MoreVIDSegments_Node5_action --> E_MoreVIDSegments N_MoreVIDSegments_Node4 -- No --> N_MoreVIDSegments_Node5 N_MoreVIDSegments_Node6{"The system checks for remaining VID
segments"}:::decision N_MoreVIDSegments_Node6_action["If more VID segments exist,
continue processing next segment,
otherwise proceed to update train
hold status"]:::main N_MoreVIDSegments_Node6 -- Yes --> N_MoreVIDSegments_Node6_action N_MoreVIDSegments_Node6_action --> E_MoreVIDSegments N_MoreVIDSegments_Node5 -- No --> N_MoreVIDSegments_Node6 N_MoreVIDSegments_Node7{"The system evaluates VID segment
availability"}:::decision N_MoreVIDSegments_Node7_action["If more VID segments exist,
continue processing them, otherwise
proceed to update overall train
seizure status"]:::main N_MoreVIDSegments_Node7 -- Yes --> N_MoreVIDSegments_Node7_action N_MoreVIDSegments_Node7_action --> E_MoreVIDSegments N_MoreVIDSegments_Node6 -- No --> N_MoreVIDSegments_Node7 N_MoreVIDSegments_Node8{"The system checks for additional
VID segments"}:::decision N_MoreVIDSegments_Node8_action["If more VID segments exist,
continue processing the next VID
segment, otherwise proceed to check
train overall seizure status"]:::main N_MoreVIDSegments_Node8 -- Yes --> N_MoreVIDSegments_Node8_action N_MoreVIDSegments_Node8_action --> E_MoreVIDSegments N_MoreVIDSegments_Node7 -- No --> N_MoreVIDSegments_Node8 N_MoreVIDSegments_Node8 -- No --> E_MoreVIDSegments
File: GCX016.cbl
GIVEN:
Current VID segment processing is complete
WHEN:
The system checks for remaining VID segments
THEN:
System determines if more VID segments need processing or if hold processing is complete
File: GCX016.cbl
GIVEN:
One VID segment has been processed and equipment hold counter updated
WHEN:
The system checks for more VID segments in the message
THEN:
- The system determines if additional vid segments exist
- Continues processing or proceeds to train record update
File: GCX016.cbl
GIVEN:
One VID segment has been processed for equipment seizure
WHEN:
The system checks for additional VID segments in the message
THEN:
The system either continues processing more VID segments or proceeds to train status update
File: GCX016.cbl
GIVEN:
A VID segment has been processed (either held or skipped)
WHEN:
The system checks for additional VID segments in the message
THEN:
If more VID segments exist, continue processing; if no more segments, proceed to train status determination
File: GCX016.cbl
GIVEN:
One VID segment has been processed for equipment seizure
WHEN:
The system checks for additional VID segments in the message
THEN:
The system continues processing if more VID segments exist or proceeds to finalize seizure processing
File: GCX016.cbl
GIVEN:
Current VID segment processing is complete
WHEN:
The system checks for remaining VID segments
THEN:
If more VID segments exist, continue processing the next VID segment, otherwise proceed to update train seizure status
File: GCX016.cbl
GIVEN:
Current VID segment has been processed (either held or skipped)
WHEN:
The system checks for remaining VID segments
THEN:
If more VID segments exist, continue processing next segment, otherwise proceed to update train hold status
File: GCX016.cbl
GIVEN:
The system has checked for additional VID segments
WHEN:
The system evaluates VID segment availability
THEN:
If more VID segments exist, continue processing them, otherwise proceed to update overall train seizure status
File: GCX016.cbl
GIVEN:
One VID segment has been processed for equipment seizure release
WHEN:
The system checks for additional VID segments
THEN:
If more VID segments exist, continue processing the next VID segment, otherwise proceed to check train overall seizure status
β Consolidated Acceptance Criteria
- The system finalizes hold processing → equipment hold processing is marked as complete
- The system finalizes equipment hold processing → complete the equipment hold processing workflow
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_EquipmentHoldProcessingComplete(["Start Step"])
E_EquipmentHoldProcessingComplete(["End Step"])
N_EquipmentHoldProcessingComplete_Node0{"The system finalizes hold
processing"}:::decision N_EquipmentHoldProcessingComplete_Node0_action["Equipment hold processing is marked
as complete"]:::main N_EquipmentHoldProcessingComplete_Node0 -- Yes --> N_EquipmentHoldProcessingComplete_Node0_action N_EquipmentHoldProcessingComplete_Node0_action --> E_EquipmentHoldProcessingComplete S_EquipmentHoldProcessingComplete --> N_EquipmentHoldProcessingComplete_Node0 N_EquipmentHoldProcessingComplete_Node1{"The system finalizes equipment hold
processing"}:::decision N_EquipmentHoldProcessingComplete_Node1_action["Complete the equipment hold
processing workflow"]:::main N_EquipmentHoldProcessingComplete_Node1 -- Yes --> N_EquipmentHoldProcessingComplete_Node1_action N_EquipmentHoldProcessingComplete_Node1_action --> E_EquipmentHoldProcessingComplete N_EquipmentHoldProcessingComplete_Node0 -- No --> N_EquipmentHoldProcessingComplete_Node1 N_EquipmentHoldProcessingComplete_Node1 -- No --> E_EquipmentHoldProcessingComplete
processing"}:::decision N_EquipmentHoldProcessingComplete_Node0_action["Equipment hold processing is marked
as complete"]:::main N_EquipmentHoldProcessingComplete_Node0 -- Yes --> N_EquipmentHoldProcessingComplete_Node0_action N_EquipmentHoldProcessingComplete_Node0_action --> E_EquipmentHoldProcessingComplete S_EquipmentHoldProcessingComplete --> N_EquipmentHoldProcessingComplete_Node0 N_EquipmentHoldProcessingComplete_Node1{"The system finalizes equipment hold
processing"}:::decision N_EquipmentHoldProcessingComplete_Node1_action["Complete the equipment hold
processing workflow"]:::main N_EquipmentHoldProcessingComplete_Node1 -- Yes --> N_EquipmentHoldProcessingComplete_Node1_action N_EquipmentHoldProcessingComplete_Node1_action --> E_EquipmentHoldProcessingComplete N_EquipmentHoldProcessingComplete_Node0 -- No --> N_EquipmentHoldProcessingComplete_Node1 N_EquipmentHoldProcessingComplete_Node1 -- No --> E_EquipmentHoldProcessingComplete
File: GCX016.cbl
GIVEN:
All VID segments have been processed for equipment holds
WHEN:
The system finalizes hold processing
THEN:
Equipment hold processing is marked as complete
File: GCX016.cbl
GIVEN:
Train hold status has been set (either complete or partial hold)
WHEN:
The system finalizes equipment hold processing
THEN:
Complete the equipment hold processing workflow
β Consolidated Acceptance Criteria
- The system reads the next VID segment in the message → the VID segment is retrieved and made available for equipment processing
- The system processes VID segments sequentially → read the next VID segment from the message queue
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ReadNextVIDSegment(["Start Step"])
E_ReadNextVIDSegment(["End Step"])
N_ReadNextVIDSegment_Node0{"The system reads the next VID
segment in the message"}:::decision N_ReadNextVIDSegment_Node0_action["The VID segment is retrieved and
made available for equipment
processing"]:::main N_ReadNextVIDSegment_Node0 -- Yes --> N_ReadNextVIDSegment_Node0_action N_ReadNextVIDSegment_Node0_action --> E_ReadNextVIDSegment S_ReadNextVIDSegment --> N_ReadNextVIDSegment_Node0 N_ReadNextVIDSegment_Node1{"The system processes VID segments
sequentially"}:::decision N_ReadNextVIDSegment_Node1_action["Read the next VID segment from the
message queue"]:::main N_ReadNextVIDSegment_Node1 -- Yes --> N_ReadNextVIDSegment_Node1_action N_ReadNextVIDSegment_Node1_action --> E_ReadNextVIDSegment N_ReadNextVIDSegment_Node0 -- No --> N_ReadNextVIDSegment_Node1 N_ReadNextVIDSegment_Node1 -- No --> E_ReadNextVIDSegment
segment in the message"}:::decision N_ReadNextVIDSegment_Node0_action["The VID segment is retrieved and
made available for equipment
processing"]:::main N_ReadNextVIDSegment_Node0 -- Yes --> N_ReadNextVIDSegment_Node0_action N_ReadNextVIDSegment_Node0_action --> E_ReadNextVIDSegment S_ReadNextVIDSegment --> N_ReadNextVIDSegment_Node0 N_ReadNextVIDSegment_Node1{"The system processes VID segments
sequentially"}:::decision N_ReadNextVIDSegment_Node1_action["Read the next VID segment from the
message queue"]:::main N_ReadNextVIDSegment_Node1 -- Yes --> N_ReadNextVIDSegment_Node1_action N_ReadNextVIDSegment_Node1_action --> E_ReadNextVIDSegment N_ReadNextVIDSegment_Node0 -- No --> N_ReadNextVIDSegment_Node1 N_ReadNextVIDSegment_Node1 -- No --> E_ReadNextVIDSegment
File: GCX016.cbl
GIVEN:
An HRE train release disposition code has been processed
WHEN:
The system reads the next VID segment in the message
THEN:
- The vid segment is retrieved
- Made available for equipment processing
File: GCX016.cbl
GIVEN:
VID segments are available for processing
WHEN:
The system processes VID segments sequentially
THEN:
Read the next VID segment from the message queue
β Consolidated Acceptance Criteria
- The system checks for the presence of a VID segment → if VID segment is found, continue with equipment processing, otherwise complete equipment release processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_VIDSegmentFound(["Start Step"])
E_VIDSegmentFound(["End Step"])
N_VIDSegmentFound_Node0{"The system checks for the presence
of a VID segment"}:::decision N_VIDSegmentFound_Node0_action["If VID segment is found, continue
with equipment processing, otherwise
complete equipment release
processing"]:::main N_VIDSegmentFound_Node0 -- Yes --> N_VIDSegmentFound_Node0_action N_VIDSegmentFound_Node0_action --> E_VIDSegmentFound S_VIDSegmentFound --> N_VIDSegmentFound_Node0 N_VIDSegmentFound_Node0 -- No --> E_VIDSegmentFound
of a VID segment"}:::decision N_VIDSegmentFound_Node0_action["If VID segment is found, continue
with equipment processing, otherwise
complete equipment release
processing"]:::main N_VIDSegmentFound_Node0 -- Yes --> N_VIDSegmentFound_Node0_action N_VIDSegmentFound_Node0_action --> E_VIDSegmentFound S_VIDSegmentFound --> N_VIDSegmentFound_Node0 N_VIDSegmentFound_Node0 -- No --> E_VIDSegmentFound
File: GCX016.cbl
GIVEN:
The system is processing equipment release following HRE disposition code
WHEN:
The system checks for the presence of a VID segment
THEN:
If VID segment is found, continue with equipment processing, otherwise complete equipment release processing
β Consolidated Acceptance Criteria
- The system calls GCCCARFM formatting routine → the equipment ID is formatted according to standard business rules for equipment identification
- The system needs to search for cargo by car ID → the system should format the equipment ID using GCCCARFM formatting rules before search
- The system needs to search for cargo by car and waybill → the car ID is formatted using standard equipment formatting rules to ensure consistent search keys
- The system needs to format the equipment ID for database operations → the GCCCARFM utility is called to format the car ID into standard equipment format
- The system needs to format the equipment ID for validation → call GCCCARFM to format the equipment ID into standard format
- The system needs to format the equipment ID → gCCCARFM utility is called to format the equipment ID to standard format
- The system needs to format the equipment ID for database operations → the GCCCARFM formatting routine is called to standardize the equipment ID format
- The system calls GCCCARFM utility to format the equipment ID → the equipment ID is formatted according to standard rules and validation status is determined
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_FormatEquipmentIDusingGCCCARFM(["Start Step"])
E_FormatEquipmentIDusingGCCCARFM(["End Step"])
N_FormatEquipmentIDusingGCCCARFM_Node0{"The system calls GCCCARFM
formatting routine"}:::decision N_FormatEquipmentIDusingGCCCARFM_Node0_action["The equipment ID is formatted
according to standard business rules
for equipment identification"]:::main N_FormatEquipmentIDusingGCCCARFM_Node0 -- Yes --> N_FormatEquipmentIDusingGCCCARFM_Node0_action N_FormatEquipmentIDusingGCCCARFM_Node0_action --> E_FormatEquipmentIDusingGCCCARFM S_FormatEquipmentIDusingGCCCARFM --> N_FormatEquipmentIDusingGCCCARFM_Node0 N_FormatEquipmentIDusingGCCCARFM_Node1{"The system needs to search for
cargo by car ID"}:::decision N_FormatEquipmentIDusingGCCCARFM_Node1_action["The system should format the
equipment ID using GCCCARFM
formatting rules before search"]:::main N_FormatEquipmentIDusingGCCCARFM_Node1 -- Yes --> N_FormatEquipmentIDusingGCCCARFM_Node1_action N_FormatEquipmentIDusingGCCCARFM_Node1_action --> E_FormatEquipmentIDusingGCCCARFM N_FormatEquipmentIDusingGCCCARFM_Node0 -- No --> N_FormatEquipmentIDusingGCCCARFM_Node1 N_FormatEquipmentIDusingGCCCARFM_Node2{"The system needs to search for
cargo by car and waybill"}:::decision N_FormatEquipmentIDusingGCCCARFM_Node2_action["The car ID is formatted using
standard equipment formatting rules
to ensure consistent search keys"]:::main N_FormatEquipmentIDusingGCCCARFM_Node2 -- Yes --> N_FormatEquipmentIDusingGCCCARFM_Node2_action N_FormatEquipmentIDusingGCCCARFM_Node2_action --> E_FormatEquipmentIDusingGCCCARFM N_FormatEquipmentIDusingGCCCARFM_Node1 -- No --> N_FormatEquipmentIDusingGCCCARFM_Node2 N_FormatEquipmentIDusingGCCCARFM_Node3{"The system needs to format the
equipment ID for database operations"}:::decision N_FormatEquipmentIDusingGCCCARFM_Node3_action["The GCCCARFM utility is called to
format the car ID into standard
equipment format"]:::main N_FormatEquipmentIDusingGCCCARFM_Node3 -- Yes --> N_FormatEquipmentIDusingGCCCARFM_Node3_action N_FormatEquipmentIDusingGCCCARFM_Node3_action --> E_FormatEquipmentIDusingGCCCARFM N_FormatEquipmentIDusingGCCCARFM_Node2 -- No --> N_FormatEquipmentIDusingGCCCARFM_Node3 N_FormatEquipmentIDusingGCCCARFM_Node4{"The system needs to format the
equipment ID for validation"}:::decision N_FormatEquipmentIDusingGCCCARFM_Node4_action["Call GCCCARFM to format the
equipment ID into standard format"]:::main N_FormatEquipmentIDusingGCCCARFM_Node4 -- Yes --> N_FormatEquipmentIDusingGCCCARFM_Node4_action N_FormatEquipmentIDusingGCCCARFM_Node4_action --> E_FormatEquipmentIDusingGCCCARFM N_FormatEquipmentIDusingGCCCARFM_Node3 -- No --> N_FormatEquipmentIDusingGCCCARFM_Node4 N_FormatEquipmentIDusingGCCCARFM_Node5{"The system needs to format the
equipment ID"}:::decision N_FormatEquipmentIDusingGCCCARFM_Node5_action["GCCCARFM utility is called to
format the equipment ID to standard
format"]:::main N_FormatEquipmentIDusingGCCCARFM_Node5 -- Yes --> N_FormatEquipmentIDusingGCCCARFM_Node5_action N_FormatEquipmentIDusingGCCCARFM_Node5_action --> E_FormatEquipmentIDusingGCCCARFM N_FormatEquipmentIDusingGCCCARFM_Node4 -- No --> N_FormatEquipmentIDusingGCCCARFM_Node5 N_FormatEquipmentIDusingGCCCARFM_Node6{"The system needs to format the
equipment ID for database operations"}:::decision N_FormatEquipmentIDusingGCCCARFM_Node6_action["The GCCCARFM formatting routine is
called to standardize the equipment
ID format"]:::main N_FormatEquipmentIDusingGCCCARFM_Node6 -- Yes --> N_FormatEquipmentIDusingGCCCARFM_Node6_action N_FormatEquipmentIDusingGCCCARFM_Node6_action --> E_FormatEquipmentIDusingGCCCARFM N_FormatEquipmentIDusingGCCCARFM_Node5 -- No --> N_FormatEquipmentIDusingGCCCARFM_Node6 N_FormatEquipmentIDusingGCCCARFM_Node7{"The system calls GCCCARFM utility
to format the equipment ID"}:::decision N_FormatEquipmentIDusingGCCCARFM_Node7_action["The equipment ID is formatted
according to standard rules and
validation status is determined"]:::main N_FormatEquipmentIDusingGCCCARFM_Node7 -- Yes --> N_FormatEquipmentIDusingGCCCARFM_Node7_action N_FormatEquipmentIDusingGCCCARFM_Node7_action --> E_FormatEquipmentIDusingGCCCARFM N_FormatEquipmentIDusingGCCCARFM_Node6 -- No --> N_FormatEquipmentIDusingGCCCARFM_Node7 N_FormatEquipmentIDusingGCCCARFM_Node7 -- No --> E_FormatEquipmentIDusingGCCCARFM
formatting routine"}:::decision N_FormatEquipmentIDusingGCCCARFM_Node0_action["The equipment ID is formatted
according to standard business rules
for equipment identification"]:::main N_FormatEquipmentIDusingGCCCARFM_Node0 -- Yes --> N_FormatEquipmentIDusingGCCCARFM_Node0_action N_FormatEquipmentIDusingGCCCARFM_Node0_action --> E_FormatEquipmentIDusingGCCCARFM S_FormatEquipmentIDusingGCCCARFM --> N_FormatEquipmentIDusingGCCCARFM_Node0 N_FormatEquipmentIDusingGCCCARFM_Node1{"The system needs to search for
cargo by car ID"}:::decision N_FormatEquipmentIDusingGCCCARFM_Node1_action["The system should format the
equipment ID using GCCCARFM
formatting rules before search"]:::main N_FormatEquipmentIDusingGCCCARFM_Node1 -- Yes --> N_FormatEquipmentIDusingGCCCARFM_Node1_action N_FormatEquipmentIDusingGCCCARFM_Node1_action --> E_FormatEquipmentIDusingGCCCARFM N_FormatEquipmentIDusingGCCCARFM_Node0 -- No --> N_FormatEquipmentIDusingGCCCARFM_Node1 N_FormatEquipmentIDusingGCCCARFM_Node2{"The system needs to search for
cargo by car and waybill"}:::decision N_FormatEquipmentIDusingGCCCARFM_Node2_action["The car ID is formatted using
standard equipment formatting rules
to ensure consistent search keys"]:::main N_FormatEquipmentIDusingGCCCARFM_Node2 -- Yes --> N_FormatEquipmentIDusingGCCCARFM_Node2_action N_FormatEquipmentIDusingGCCCARFM_Node2_action --> E_FormatEquipmentIDusingGCCCARFM N_FormatEquipmentIDusingGCCCARFM_Node1 -- No --> N_FormatEquipmentIDusingGCCCARFM_Node2 N_FormatEquipmentIDusingGCCCARFM_Node3{"The system needs to format the
equipment ID for database operations"}:::decision N_FormatEquipmentIDusingGCCCARFM_Node3_action["The GCCCARFM utility is called to
format the car ID into standard
equipment format"]:::main N_FormatEquipmentIDusingGCCCARFM_Node3 -- Yes --> N_FormatEquipmentIDusingGCCCARFM_Node3_action N_FormatEquipmentIDusingGCCCARFM_Node3_action --> E_FormatEquipmentIDusingGCCCARFM N_FormatEquipmentIDusingGCCCARFM_Node2 -- No --> N_FormatEquipmentIDusingGCCCARFM_Node3 N_FormatEquipmentIDusingGCCCARFM_Node4{"The system needs to format the
equipment ID for validation"}:::decision N_FormatEquipmentIDusingGCCCARFM_Node4_action["Call GCCCARFM to format the
equipment ID into standard format"]:::main N_FormatEquipmentIDusingGCCCARFM_Node4 -- Yes --> N_FormatEquipmentIDusingGCCCARFM_Node4_action N_FormatEquipmentIDusingGCCCARFM_Node4_action --> E_FormatEquipmentIDusingGCCCARFM N_FormatEquipmentIDusingGCCCARFM_Node3 -- No --> N_FormatEquipmentIDusingGCCCARFM_Node4 N_FormatEquipmentIDusingGCCCARFM_Node5{"The system needs to format the
equipment ID"}:::decision N_FormatEquipmentIDusingGCCCARFM_Node5_action["GCCCARFM utility is called to
format the equipment ID to standard
format"]:::main N_FormatEquipmentIDusingGCCCARFM_Node5 -- Yes --> N_FormatEquipmentIDusingGCCCARFM_Node5_action N_FormatEquipmentIDusingGCCCARFM_Node5_action --> E_FormatEquipmentIDusingGCCCARFM N_FormatEquipmentIDusingGCCCARFM_Node4 -- No --> N_FormatEquipmentIDusingGCCCARFM_Node5 N_FormatEquipmentIDusingGCCCARFM_Node6{"The system needs to format the
equipment ID for database operations"}:::decision N_FormatEquipmentIDusingGCCCARFM_Node6_action["The GCCCARFM formatting routine is
called to standardize the equipment
ID format"]:::main N_FormatEquipmentIDusingGCCCARFM_Node6 -- Yes --> N_FormatEquipmentIDusingGCCCARFM_Node6_action N_FormatEquipmentIDusingGCCCARFM_Node6_action --> E_FormatEquipmentIDusingGCCCARFM N_FormatEquipmentIDusingGCCCARFM_Node5 -- No --> N_FormatEquipmentIDusingGCCCARFM_Node6 N_FormatEquipmentIDusingGCCCARFM_Node7{"The system calls GCCCARFM utility
to format the equipment ID"}:::decision N_FormatEquipmentIDusingGCCCARFM_Node7_action["The equipment ID is formatted
according to standard rules and
validation status is determined"]:::main N_FormatEquipmentIDusingGCCCARFM_Node7 -- Yes --> N_FormatEquipmentIDusingGCCCARFM_Node7_action N_FormatEquipmentIDusingGCCCARFM_Node7_action --> E_FormatEquipmentIDusingGCCCARFM N_FormatEquipmentIDusingGCCCARFM_Node6 -- No --> N_FormatEquipmentIDusingGCCCARFM_Node7 N_FormatEquipmentIDusingGCCCARFM_Node7 -- No --> E_FormatEquipmentIDusingGCCCARFM
File: GCX016.cbl
GIVEN:
An equipment ID has been extracted from the VID segment
WHEN:
The system calls GCCCARFM formatting routine
THEN:
The equipment ID is formatted according to standard business rules for equipment identification
File: GCX016.cbl
GIVEN:
A raw car ID or equipment identifier is provided
WHEN:
The system needs to search for cargo by car ID
THEN:
The system should format the equipment ID using GCCCARFM formatting rules before search
File: GCX016.cbl
GIVEN:
A car ID exists in the N7 segment data
WHEN:
- The system needs to search for cargo by car
- Waybill
THEN:
The car ID is formatted using standard equipment formatting rules to ensure consistent search keys
File: GCX016.cbl
GIVEN:
Car initial and car number are available from N7 segment
WHEN:
The system needs to format the equipment ID for database operations
THEN:
The GCCCARFM utility is called to format the car ID into standard equipment format
File: GCX016.cbl
GIVEN:
Equipment ID has been extracted from the VID segment
WHEN:
The system needs to format the equipment ID for validation
THEN:
Call GCCCARFM to format the equipment ID into standard format
File: GCX016.cbl
GIVEN:
An equipment ID has been extracted from VID segment
WHEN:
The system needs to format the equipment ID
THEN:
GCCCARFM utility is called to format the equipment ID to standard format
File: GCX016.cbl
GIVEN:
Car initial and car number have been extracted from N7 segment
WHEN:
The system needs to format the equipment ID for database operations
THEN:
The GCCCARFM formatting routine is called to standardize the equipment ID format
File: GCX016.cbl
GIVEN:
An equipment ID has been extracted from N7-02 field
WHEN:
The system calls GCCCARFM utility to format the equipment ID
THEN:
- The equipment id is formatted according to standard rules
- Validation status is determined
β Consolidated Acceptance Criteria
- The system searches the train hold list for the equipment → the equipment record is located in the train hold list if it exists
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_FindEquipmentinTrainHoldList(["Start Step"])
E_FindEquipmentinTrainHoldList(["End Step"])
N_FindEquipmentinTrainHoldList_Node0{"The system searches the train hold
list for the equipment"}:::decision N_FindEquipmentinTrainHoldList_Node0_action["The equipment record is located in
the train hold list if it exists"]:::main N_FindEquipmentinTrainHoldList_Node0 -- Yes --> N_FindEquipmentinTrainHoldList_Node0_action N_FindEquipmentinTrainHoldList_Node0_action --> E_FindEquipmentinTrainHoldList S_FindEquipmentinTrainHoldList --> N_FindEquipmentinTrainHoldList_Node0 N_FindEquipmentinTrainHoldList_Node0 -- No --> E_FindEquipmentinTrainHoldList
list for the equipment"}:::decision N_FindEquipmentinTrainHoldList_Node0_action["The equipment record is located in
the train hold list if it exists"]:::main N_FindEquipmentinTrainHoldList_Node0 -- Yes --> N_FindEquipmentinTrainHoldList_Node0_action N_FindEquipmentinTrainHoldList_Node0_action --> E_FindEquipmentinTrainHoldList S_FindEquipmentinTrainHoldList --> N_FindEquipmentinTrainHoldList_Node0 N_FindEquipmentinTrainHoldList_Node0 -- No --> E_FindEquipmentinTrainHoldList
File: GCX016.cbl
GIVEN:
A valid equipment ID has been formatted and validated
WHEN:
The system searches the train hold list for the equipment
THEN:
The equipment record is located in the train hold list if it exists
β Consolidated Acceptance Criteria
- The system checks the equipment's current hold status → if equipment is currently held, proceed with release processing, otherwise log equipment not found warning and continue to next VID segment
- If if the equipment is currently held → the system determines whether the equipment can be released or is already released
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_EquipmentCurrentlyHeld(["Start Step"])
E_EquipmentCurrentlyHeld(["End Step"])
N_EquipmentCurrentlyHeld_Node0{"The system checks the equipment s
current hold status"}:::decision N_EquipmentCurrentlyHeld_Node0_action["If equipment is currently held,
proceed with release processing,
otherwise log equipment not found
warning and continue to next VID
segment"]:::main N_EquipmentCurrentlyHeld_Node0 -- Yes --> N_EquipmentCurrentlyHeld_Node0_action N_EquipmentCurrentlyHeld_Node0_action --> E_EquipmentCurrentlyHeld S_EquipmentCurrentlyHeld --> N_EquipmentCurrentlyHeld_Node0 N_EquipmentCurrentlyHeld_Node1{"The system evaluates if the
equipment is currently held"}:::decision N_EquipmentCurrentlyHeld_Node1_action["The system determines whether the
equipment can be released or is
already released"]:::main N_EquipmentCurrentlyHeld_Node1 -- Yes --> N_EquipmentCurrentlyHeld_Node1_action N_EquipmentCurrentlyHeld_Node1_action --> E_EquipmentCurrentlyHeld N_EquipmentCurrentlyHeld_Node0 -- No --> N_EquipmentCurrentlyHeld_Node1 N_EquipmentCurrentlyHeld_Node1 -- No --> E_EquipmentCurrentlyHeld
current hold status"}:::decision N_EquipmentCurrentlyHeld_Node0_action["If equipment is currently held,
proceed with release processing,
otherwise log equipment not found
warning and continue to next VID
segment"]:::main N_EquipmentCurrentlyHeld_Node0 -- Yes --> N_EquipmentCurrentlyHeld_Node0_action N_EquipmentCurrentlyHeld_Node0_action --> E_EquipmentCurrentlyHeld S_EquipmentCurrentlyHeld --> N_EquipmentCurrentlyHeld_Node0 N_EquipmentCurrentlyHeld_Node1{"The system evaluates if the
equipment is currently held"}:::decision N_EquipmentCurrentlyHeld_Node1_action["The system determines whether the
equipment can be released or is
already released"]:::main N_EquipmentCurrentlyHeld_Node1 -- Yes --> N_EquipmentCurrentlyHeld_Node1_action N_EquipmentCurrentlyHeld_Node1_action --> E_EquipmentCurrentlyHeld N_EquipmentCurrentlyHeld_Node0 -- No --> N_EquipmentCurrentlyHeld_Node1 N_EquipmentCurrentlyHeld_Node1 -- No --> E_EquipmentCurrentlyHeld
File: GCX016.cbl
GIVEN:
Equipment has been located in the train hold list
WHEN:
The system checks the equipment's current hold status
THEN:
- If equipment is currently held, proceed with release processing, otherwise log equipment not found warning
- Continue to next vid segment
File: GCX016.cbl
GIVEN:
Equipment has been found and its hold status checked
WHEN:
The system evaluates if the equipment is currently held
THEN:
The system determines whether the equipment can be released or is already released
β Consolidated Acceptance Criteria
- The system processes the equipment release request → the equipment is removed from hold status and marked as released
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RemoveEquipmentfromHoldStatus(["Start Step"])
E_RemoveEquipmentfromHoldStatus(["End Step"])
N_RemoveEquipmentfromHoldStatus_Node0{"The system processes the equipment
release request"}:::decision N_RemoveEquipmentfromHoldStatus_Node0_action["The equipment is removed from hold
status and marked as released"]:::main N_RemoveEquipmentfromHoldStatus_Node0 -- Yes --> N_RemoveEquipmentfromHoldStatus_Node0_action N_RemoveEquipmentfromHoldStatus_Node0_action --> E_RemoveEquipmentfromHoldStatus S_RemoveEquipmentfromHoldStatus --> N_RemoveEquipmentfromHoldStatus_Node0 N_RemoveEquipmentfromHoldStatus_Node0 -- No --> E_RemoveEquipmentfromHoldStatus
release request"}:::decision N_RemoveEquipmentfromHoldStatus_Node0_action["The equipment is removed from hold
status and marked as released"]:::main N_RemoveEquipmentfromHoldStatus_Node0 -- Yes --> N_RemoveEquipmentfromHoldStatus_Node0_action N_RemoveEquipmentfromHoldStatus_Node0_action --> E_RemoveEquipmentfromHoldStatus S_RemoveEquipmentfromHoldStatus --> N_RemoveEquipmentfromHoldStatus_Node0 N_RemoveEquipmentfromHoldStatus_Node0 -- No --> E_RemoveEquipmentfromHoldStatus
File: GCX016.cbl
GIVEN:
Equipment is currently in hold status and eligible for release
WHEN:
The system processes the equipment release request
THEN:
- The equipment is removed from hold status
- Marked as released
β Consolidated Acceptance Criteria
- The system updates train statistics → the train's held equipment count is decremented by one
- The system updates train statistics → the train's held equipment count is decremented by one
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_DecrementTrainHeldEquipmentCount(["Start Step"])
E_DecrementTrainHeldEquipmentCount(["End Step"])
N_DecrementTrainHeldEquipmentCount_Node0{"The system updates train statistics"}:::decision
N_DecrementTrainHeldEquipmentCount_Node0_action["The train s held equipment count is
decremented by one"]:::main N_DecrementTrainHeldEquipmentCount_Node0 -- Yes --> N_DecrementTrainHeldEquipmentCount_Node0_action N_DecrementTrainHeldEquipmentCount_Node0_action --> E_DecrementTrainHeldEquipmentCount S_DecrementTrainHeldEquipmentCount --> N_DecrementTrainHeldEquipmentCount_Node0 N_DecrementTrainHeldEquipmentCount_Node1{"The system updates train statistics"}:::decision N_DecrementTrainHeldEquipmentCount_Node1_action["The train s held equipment count is
decremented by one"]:::main N_DecrementTrainHeldEquipmentCount_Node1 -- Yes --> N_DecrementTrainHeldEquipmentCount_Node1_action N_DecrementTrainHeldEquipmentCount_Node1_action --> E_DecrementTrainHeldEquipmentCount N_DecrementTrainHeldEquipmentCount_Node0 -- No --> N_DecrementTrainHeldEquipmentCount_Node1 N_DecrementTrainHeldEquipmentCount_Node1 -- No --> E_DecrementTrainHeldEquipmentCount
decremented by one"]:::main N_DecrementTrainHeldEquipmentCount_Node0 -- Yes --> N_DecrementTrainHeldEquipmentCount_Node0_action N_DecrementTrainHeldEquipmentCount_Node0_action --> E_DecrementTrainHeldEquipmentCount S_DecrementTrainHeldEquipmentCount --> N_DecrementTrainHeldEquipmentCount_Node0 N_DecrementTrainHeldEquipmentCount_Node1{"The system updates train statistics"}:::decision N_DecrementTrainHeldEquipmentCount_Node1_action["The train s held equipment count is
decremented by one"]:::main N_DecrementTrainHeldEquipmentCount_Node1 -- Yes --> N_DecrementTrainHeldEquipmentCount_Node1_action N_DecrementTrainHeldEquipmentCount_Node1_action --> E_DecrementTrainHeldEquipmentCount N_DecrementTrainHeldEquipmentCount_Node0 -- No --> N_DecrementTrainHeldEquipmentCount_Node1 N_DecrementTrainHeldEquipmentCount_Node1 -- No --> E_DecrementTrainHeldEquipmentCount
File: GCX016.cbl
GIVEN:
Equipment has been successfully removed from hold status
WHEN:
The system updates train statistics
THEN:
The train's held equipment count is decremented by one
File: GCX016.cbl
GIVEN:
Equipment hold status has been removed
WHEN:
The system updates train statistics
THEN:
The train's held equipment count is decremented by one
β Consolidated Acceptance Criteria
- The system logs the release action → the equipment release action is recorded with equipment ID, timestamp, and release details
- The system completes the release processing → the equipment release action is logged
- The system completes the release process → equipment release action is logged with relevant details for audit purposes
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogEquipmentReleaseAction(["Start Step"])
E_LogEquipmentReleaseAction(["End Step"])
N_LogEquipmentReleaseAction_Node0{"The system logs the release action"}:::decision
N_LogEquipmentReleaseAction_Node0_action["The equipment release action is
recorded with equipment ID,
timestamp, and release details"]:::main N_LogEquipmentReleaseAction_Node0 -- Yes --> N_LogEquipmentReleaseAction_Node0_action N_LogEquipmentReleaseAction_Node0_action --> E_LogEquipmentReleaseAction S_LogEquipmentReleaseAction --> N_LogEquipmentReleaseAction_Node0 N_LogEquipmentReleaseAction_Node1{"The system completes the release
processing"}:::decision N_LogEquipmentReleaseAction_Node1_action["The equipment release action is
logged"]:::main N_LogEquipmentReleaseAction_Node1 -- Yes --> N_LogEquipmentReleaseAction_Node1_action N_LogEquipmentReleaseAction_Node1_action --> E_LogEquipmentReleaseAction N_LogEquipmentReleaseAction_Node0 -- No --> N_LogEquipmentReleaseAction_Node1 N_LogEquipmentReleaseAction_Node2{"The system completes the release
process"}:::decision N_LogEquipmentReleaseAction_Node2_action["Equipment release action is logged
with relevant details for audit
purposes"]:::main N_LogEquipmentReleaseAction_Node2 -- Yes --> N_LogEquipmentReleaseAction_Node2_action N_LogEquipmentReleaseAction_Node2_action --> E_LogEquipmentReleaseAction N_LogEquipmentReleaseAction_Node1 -- No --> N_LogEquipmentReleaseAction_Node2 N_LogEquipmentReleaseAction_Node2 -- No --> E_LogEquipmentReleaseAction
recorded with equipment ID,
timestamp, and release details"]:::main N_LogEquipmentReleaseAction_Node0 -- Yes --> N_LogEquipmentReleaseAction_Node0_action N_LogEquipmentReleaseAction_Node0_action --> E_LogEquipmentReleaseAction S_LogEquipmentReleaseAction --> N_LogEquipmentReleaseAction_Node0 N_LogEquipmentReleaseAction_Node1{"The system completes the release
processing"}:::decision N_LogEquipmentReleaseAction_Node1_action["The equipment release action is
logged"]:::main N_LogEquipmentReleaseAction_Node1 -- Yes --> N_LogEquipmentReleaseAction_Node1_action N_LogEquipmentReleaseAction_Node1_action --> E_LogEquipmentReleaseAction N_LogEquipmentReleaseAction_Node0 -- No --> N_LogEquipmentReleaseAction_Node1 N_LogEquipmentReleaseAction_Node2{"The system completes the release
process"}:::decision N_LogEquipmentReleaseAction_Node2_action["Equipment release action is logged
with relevant details for audit
purposes"]:::main N_LogEquipmentReleaseAction_Node2 -- Yes --> N_LogEquipmentReleaseAction_Node2_action N_LogEquipmentReleaseAction_Node2_action --> E_LogEquipmentReleaseAction N_LogEquipmentReleaseAction_Node1 -- No --> N_LogEquipmentReleaseAction_Node2 N_LogEquipmentReleaseAction_Node2 -- No --> E_LogEquipmentReleaseAction
File: GCX016.cbl
GIVEN:
Equipment has been released from hold status and train count updated
WHEN:
The system logs the release action
THEN:
The equipment release action is recorded with equipment ID, timestamp, and release details
File: GCX016.cbl
GIVEN:
Equipment has been successfully released and train status updated
WHEN:
The system completes the release processing
THEN:
The equipment release action is logged
File: GCX016.cbl
GIVEN:
Equipment has been successfully released from hold
WHEN:
The system completes the release process
THEN:
Equipment release action is logged with relevant details for audit purposes
β Consolidated Acceptance Criteria
- The system checks for additional VID segments in the message → if more VID segments exist, continue processing next VID segment, otherwise proceed to update train hold status
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MoreEquipmenttoProcess(["Start Step"])
E_MoreEquipmenttoProcess(["End Step"])
N_MoreEquipmenttoProcess_Node0{"The system checks for additional
VID segments in the message"}:::decision N_MoreEquipmenttoProcess_Node0_action["If more VID segments exist,
continue processing next VID
segment, otherwise proceed to update
train hold status"]:::main N_MoreEquipmenttoProcess_Node0 -- Yes --> N_MoreEquipmenttoProcess_Node0_action N_MoreEquipmenttoProcess_Node0_action --> E_MoreEquipmenttoProcess S_MoreEquipmenttoProcess --> N_MoreEquipmenttoProcess_Node0 N_MoreEquipmenttoProcess_Node0 -- No --> E_MoreEquipmenttoProcess
VID segments in the message"}:::decision N_MoreEquipmenttoProcess_Node0_action["If more VID segments exist,
continue processing next VID
segment, otherwise proceed to update
train hold status"]:::main N_MoreEquipmenttoProcess_Node0 -- Yes --> N_MoreEquipmenttoProcess_Node0_action N_MoreEquipmenttoProcess_Node0_action --> E_MoreEquipmenttoProcess S_MoreEquipmenttoProcess --> N_MoreEquipmenttoProcess_Node0 N_MoreEquipmenttoProcess_Node0 -- No --> E_MoreEquipmenttoProcess
File: GCX016.cbl
GIVEN:
Current equipment has been processed (released or logged as error)
WHEN:
The system checks for additional VID segments in the message
THEN:
If more VID segments exist, continue processing next VID segment, otherwise proceed to update train hold status
β Consolidated Acceptance Criteria
- The system checks if any equipment is still held on the train → if equipment is still held, keep train in hold status, otherwise release train from hold status
- The system determines the train's overall hold status → iF any equipment is still held THEN set train status to HELD ELSE set train status to RELEASED
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AnyEquipmentStillHeld(["Start Step"])
E_AnyEquipmentStillHeld(["End Step"])
N_AnyEquipmentStillHeld_Node0{"The system checks if any equipment
is still held on the train"}:::decision N_AnyEquipmentStillHeld_Node0_action["If equipment is still held, keep
train in hold status, otherwise
release train from hold status"]:::main N_AnyEquipmentStillHeld_Node0 -- Yes --> N_AnyEquipmentStillHeld_Node0_action N_AnyEquipmentStillHeld_Node0_action --> E_AnyEquipmentStillHeld S_AnyEquipmentStillHeld --> N_AnyEquipmentStillHeld_Node0 N_AnyEquipmentStillHeld_Node1{"The system determines the train s
overall hold status"}:::decision N_AnyEquipmentStillHeld_Node1_action["IF any equipment is still held THEN
set train status to HELD ELSE set
train status to RELEASED"]:::main N_AnyEquipmentStillHeld_Node1 -- Yes --> N_AnyEquipmentStillHeld_Node1_action N_AnyEquipmentStillHeld_Node1_action --> E_AnyEquipmentStillHeld N_AnyEquipmentStillHeld_Node0 -- No --> N_AnyEquipmentStillHeld_Node1 N_AnyEquipmentStillHeld_Node1 -- No --> E_AnyEquipmentStillHeld
is still held on the train"}:::decision N_AnyEquipmentStillHeld_Node0_action["If equipment is still held, keep
train in hold status, otherwise
release train from hold status"]:::main N_AnyEquipmentStillHeld_Node0 -- Yes --> N_AnyEquipmentStillHeld_Node0_action N_AnyEquipmentStillHeld_Node0_action --> E_AnyEquipmentStillHeld S_AnyEquipmentStillHeld --> N_AnyEquipmentStillHeld_Node0 N_AnyEquipmentStillHeld_Node1{"The system determines the train s
overall hold status"}:::decision N_AnyEquipmentStillHeld_Node1_action["IF any equipment is still held THEN
set train status to HELD ELSE set
train status to RELEASED"]:::main N_AnyEquipmentStillHeld_Node1 -- Yes --> N_AnyEquipmentStillHeld_Node1_action N_AnyEquipmentStillHeld_Node1_action --> E_AnyEquipmentStillHeld N_AnyEquipmentStillHeld_Node0 -- No --> N_AnyEquipmentStillHeld_Node1 N_AnyEquipmentStillHeld_Node1 -- No --> E_AnyEquipmentStillHeld
File: GCX016.cbl
GIVEN:
Train hold status has been updated after processing all equipment releases
WHEN:
The system checks if any equipment is still held on the train
THEN:
If equipment is still held, keep train in hold status, otherwise release train from hold status
File: GCX016.cbl
GIVEN:
The held equipment counter has been updated
WHEN:
The system determines the train's overall hold status
THEN:
IF any equipment is still held THEN set train status to HELD ELSE set train status to RELEASED
β Consolidated Acceptance Criteria
- The system updates the train status → the train remains in hold status and equipment release processing is complete
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_KeepTraininHoldStatus(["Start Step"])
E_KeepTraininHoldStatus(["End Step"])
N_KeepTraininHoldStatus_Node0{"The system updates the train status"}:::decision
N_KeepTraininHoldStatus_Node0_action["The train remains in hold status
and equipment release processing is
complete"]:::main N_KeepTraininHoldStatus_Node0 -- Yes --> N_KeepTraininHoldStatus_Node0_action N_KeepTraininHoldStatus_Node0_action --> E_KeepTraininHoldStatus S_KeepTraininHoldStatus --> N_KeepTraininHoldStatus_Node0 N_KeepTraininHoldStatus_Node0 -- No --> E_KeepTraininHoldStatus
and equipment release processing is
complete"]:::main N_KeepTraininHoldStatus_Node0 -- Yes --> N_KeepTraininHoldStatus_Node0_action N_KeepTraininHoldStatus_Node0_action --> E_KeepTraininHoldStatus S_KeepTraininHoldStatus --> N_KeepTraininHoldStatus_Node0 N_KeepTraininHoldStatus_Node0 -- No --> E_KeepTraininHoldStatus
File: GCX016.cbl
GIVEN:
Some equipment on the train is still in hold status after processing releases
WHEN:
The system updates the train status
THEN:
- The train remains in hold status
- Equipment release processing is complete
β Consolidated Acceptance Criteria
- The system updates the train status → the train is released from hold status and equipment release processing is complete
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ReleaseTrainfromHoldStatus(["Start Step"])
E_ReleaseTrainfromHoldStatus(["End Step"])
N_ReleaseTrainfromHoldStatus_Node0{"The system updates the train status"}:::decision
N_ReleaseTrainfromHoldStatus_Node0_action["The train is released from hold
status and equipment release
processing is complete"]:::main N_ReleaseTrainfromHoldStatus_Node0 -- Yes --> N_ReleaseTrainfromHoldStatus_Node0_action N_ReleaseTrainfromHoldStatus_Node0_action --> E_ReleaseTrainfromHoldStatus S_ReleaseTrainfromHoldStatus --> N_ReleaseTrainfromHoldStatus_Node0 N_ReleaseTrainfromHoldStatus_Node0 -- No --> E_ReleaseTrainfromHoldStatus
status and equipment release
processing is complete"]:::main N_ReleaseTrainfromHoldStatus_Node0 -- Yes --> N_ReleaseTrainfromHoldStatus_Node0_action N_ReleaseTrainfromHoldStatus_Node0_action --> E_ReleaseTrainfromHoldStatus S_ReleaseTrainfromHoldStatus --> N_ReleaseTrainfromHoldStatus_Node0 N_ReleaseTrainfromHoldStatus_Node0 -- No --> E_ReleaseTrainfromHoldStatus
File: GCX016.cbl
GIVEN:
No equipment on the train is in hold status after processing releases
WHEN:
The system updates the train status
THEN:
- The train is released from hold status
- Equipment release processing is complete
β Consolidated Acceptance Criteria
- The system processes the equipment not found condition → a warning is logged indicating equipment was not found in hold list and processing continues to next VID segment
- The equipment is not found in the train equipment list → a warning is logged indicating equipment not found
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogEquipmentNotFoundWarning(["Start Step"])
E_LogEquipmentNotFoundWarning(["End Step"])
N_LogEquipmentNotFoundWarning_Node0{"The system processes the equipment
not found condition"}:::decision N_LogEquipmentNotFoundWarning_Node0_action["A warning is logged indicating
equipment was not found in hold list
and processing continues to next VID
segment"]:::main N_LogEquipmentNotFoundWarning_Node0 -- Yes --> N_LogEquipmentNotFoundWarning_Node0_action N_LogEquipmentNotFoundWarning_Node0_action --> E_LogEquipmentNotFoundWarning S_LogEquipmentNotFoundWarning --> N_LogEquipmentNotFoundWarning_Node0 N_LogEquipmentNotFoundWarning_Node1{"The equipment is not found in the
train equipment list"}:::decision N_LogEquipmentNotFoundWarning_Node1_action["A warning is logged indicating
equipment not found"]:::main N_LogEquipmentNotFoundWarning_Node1 -- Yes --> N_LogEquipmentNotFoundWarning_Node1_action N_LogEquipmentNotFoundWarning_Node1_action --> E_LogEquipmentNotFoundWarning N_LogEquipmentNotFoundWarning_Node0 -- No --> N_LogEquipmentNotFoundWarning_Node1 N_LogEquipmentNotFoundWarning_Node1 -- No --> E_LogEquipmentNotFoundWarning
not found condition"}:::decision N_LogEquipmentNotFoundWarning_Node0_action["A warning is logged indicating
equipment was not found in hold list
and processing continues to next VID
segment"]:::main N_LogEquipmentNotFoundWarning_Node0 -- Yes --> N_LogEquipmentNotFoundWarning_Node0_action N_LogEquipmentNotFoundWarning_Node0_action --> E_LogEquipmentNotFoundWarning S_LogEquipmentNotFoundWarning --> N_LogEquipmentNotFoundWarning_Node0 N_LogEquipmentNotFoundWarning_Node1{"The equipment is not found in the
train equipment list"}:::decision N_LogEquipmentNotFoundWarning_Node1_action["A warning is logged indicating
equipment not found"]:::main N_LogEquipmentNotFoundWarning_Node1 -- Yes --> N_LogEquipmentNotFoundWarning_Node1_action N_LogEquipmentNotFoundWarning_Node1_action --> E_LogEquipmentNotFoundWarning N_LogEquipmentNotFoundWarning_Node0 -- No --> N_LogEquipmentNotFoundWarning_Node1 N_LogEquipmentNotFoundWarning_Node1 -- No --> E_LogEquipmentNotFoundWarning
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
Equipment ID has been validated but equipment is not found in hold status
WHEN:
The system processes the equipment not found condition
THEN:
- A warning is logged indicating equipment was not found in hold list
- Processing continues to next vid segment
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
Equipment ID has been extracted from VID segment
WHEN:
The equipment is not found in the train equipment list
THEN:
A warning is logged indicating equipment not found
β Consolidated Acceptance Criteria
- The system processes the invalid equipment ID condition → an error is logged indicating invalid equipment ID format and processing continues to next VID segment
- The system handles the validation error → an invalid equipment ID error is logged for troubleshooting
- The equipment ID format validation fails → an error is logged indicating invalid equipment ID format
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogInvalidEquipmentIDError(["Start Step"])
E_LogInvalidEquipmentIDError(["End Step"])
N_LogInvalidEquipmentIDError_Node0{"The system processes the invalid
equipment ID condition"}:::decision N_LogInvalidEquipmentIDError_Node0_action["An error is logged indicating
invalid equipment ID format and
processing continues to next VID
segment"]:::exclusion N_LogInvalidEquipmentIDError_Node0 -- Yes -->|Alternative| N_LogInvalidEquipmentIDError_Node0_action N_LogInvalidEquipmentIDError_Node0_action --> E_LogInvalidEquipmentIDError S_LogInvalidEquipmentIDError --> N_LogInvalidEquipmentIDError_Node0 N_LogInvalidEquipmentIDError_Node1{"The system handles the validation
error"}:::decision N_LogInvalidEquipmentIDError_Node1_action["An invalid equipment ID error is
logged for troubleshooting"]:::exclusion N_LogInvalidEquipmentIDError_Node1 -- Yes -->|Alternative| N_LogInvalidEquipmentIDError_Node1_action N_LogInvalidEquipmentIDError_Node1_action --> E_LogInvalidEquipmentIDError N_LogInvalidEquipmentIDError_Node0 -- No --> N_LogInvalidEquipmentIDError_Node1 N_LogInvalidEquipmentIDError_Node2{"The equipment ID format validation
fails"}:::decision N_LogInvalidEquipmentIDError_Node2_action["An error is logged indicating
invalid equipment ID format"]:::main N_LogInvalidEquipmentIDError_Node2 -- Yes --> N_LogInvalidEquipmentIDError_Node2_action N_LogInvalidEquipmentIDError_Node2_action --> E_LogInvalidEquipmentIDError N_LogInvalidEquipmentIDError_Node1 -- No --> N_LogInvalidEquipmentIDError_Node2 N_LogInvalidEquipmentIDError_Node2 -- No --> E_LogInvalidEquipmentIDError
equipment ID condition"}:::decision N_LogInvalidEquipmentIDError_Node0_action["An error is logged indicating
invalid equipment ID format and
processing continues to next VID
segment"]:::exclusion N_LogInvalidEquipmentIDError_Node0 -- Yes -->|Alternative| N_LogInvalidEquipmentIDError_Node0_action N_LogInvalidEquipmentIDError_Node0_action --> E_LogInvalidEquipmentIDError S_LogInvalidEquipmentIDError --> N_LogInvalidEquipmentIDError_Node0 N_LogInvalidEquipmentIDError_Node1{"The system handles the validation
error"}:::decision N_LogInvalidEquipmentIDError_Node1_action["An invalid equipment ID error is
logged for troubleshooting"]:::exclusion N_LogInvalidEquipmentIDError_Node1 -- Yes -->|Alternative| N_LogInvalidEquipmentIDError_Node1_action N_LogInvalidEquipmentIDError_Node1_action --> E_LogInvalidEquipmentIDError N_LogInvalidEquipmentIDError_Node0 -- No --> N_LogInvalidEquipmentIDError_Node1 N_LogInvalidEquipmentIDError_Node2{"The equipment ID format validation
fails"}:::decision N_LogInvalidEquipmentIDError_Node2_action["An error is logged indicating
invalid equipment ID format"]:::main N_LogInvalidEquipmentIDError_Node2 -- Yes --> N_LogInvalidEquipmentIDError_Node2_action N_LogInvalidEquipmentIDError_Node2_action --> E_LogInvalidEquipmentIDError N_LogInvalidEquipmentIDError_Node1 -- No --> N_LogInvalidEquipmentIDError_Node2 N_LogInvalidEquipmentIDError_Node2 -- No --> E_LogInvalidEquipmentIDError
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
Equipment ID has been extracted and formatted but fails validation
WHEN:
The system processes the invalid equipment ID condition
THEN:
- An error is logged indicating invalid equipment id format
- Processing continues to next vid segment
File: GCX016.cbl
GIVEN:
An equipment ID fails format validation
WHEN:
The system handles the validation error
THEN:
An invalid equipment ID error is logged for troubleshooting
File: GCX016.cbl
GIVEN:
Equipment ID has been extracted from VID segment
WHEN:
The equipment ID format validation fails
THEN:
An error is logged indicating invalid equipment ID format
β Consolidated Acceptance Criteria
- The system continues with VID segment processing → processing returns to read the next VID segment in the message
- Additional VID segments exist for processing → the system continues to the next VID segment
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ContinuetoNextVIDSegment(["Start Step"])
E_ContinuetoNextVIDSegment(["End Step"])
N_ContinuetoNextVIDSegment_Node0{"The system continues with VID
segment processing"}:::decision N_ContinuetoNextVIDSegment_Node0_action["Processing returns to read the next
VID segment in the message"]:::main N_ContinuetoNextVIDSegment_Node0 -- Yes --> N_ContinuetoNextVIDSegment_Node0_action N_ContinuetoNextVIDSegment_Node0_action --> E_ContinuetoNextVIDSegment S_ContinuetoNextVIDSegment --> N_ContinuetoNextVIDSegment_Node0 N_ContinuetoNextVIDSegment_Node1{"Additional VID segments exist for
processing"}:::decision N_ContinuetoNextVIDSegment_Node1_action["The system continues to the next
VID segment"]:::main N_ContinuetoNextVIDSegment_Node1 -- Yes --> N_ContinuetoNextVIDSegment_Node1_action N_ContinuetoNextVIDSegment_Node1_action --> E_ContinuetoNextVIDSegment N_ContinuetoNextVIDSegment_Node0 -- No --> N_ContinuetoNextVIDSegment_Node1 N_ContinuetoNextVIDSegment_Node1 -- No --> E_ContinuetoNextVIDSegment
segment processing"}:::decision N_ContinuetoNextVIDSegment_Node0_action["Processing returns to read the next
VID segment in the message"]:::main N_ContinuetoNextVIDSegment_Node0 -- Yes --> N_ContinuetoNextVIDSegment_Node0_action N_ContinuetoNextVIDSegment_Node0_action --> E_ContinuetoNextVIDSegment S_ContinuetoNextVIDSegment --> N_ContinuetoNextVIDSegment_Node0 N_ContinuetoNextVIDSegment_Node1{"Additional VID segments exist for
processing"}:::decision N_ContinuetoNextVIDSegment_Node1_action["The system continues to the next
VID segment"]:::main N_ContinuetoNextVIDSegment_Node1 -- Yes --> N_ContinuetoNextVIDSegment_Node1_action N_ContinuetoNextVIDSegment_Node1_action --> E_ContinuetoNextVIDSegment N_ContinuetoNextVIDSegment_Node0 -- No --> N_ContinuetoNextVIDSegment_Node1 N_ContinuetoNextVIDSegment_Node1 -- No --> E_ContinuetoNextVIDSegment
File: GCX016.cbl
GIVEN:
An error or warning has been logged for current equipment processing
WHEN:
The system continues with VID segment processing
THEN:
Processing returns to read the next VID segment in the message
File: GCX016.cbl
GIVEN:
Current VID segment processing is complete
WHEN:
Additional VID segments exist for processing
THEN:
The system continues to the next VID segment
β Consolidated Acceptance Criteria
- The system finalizes equipment release processing → equipment release processing is marked as complete and control returns to main message processing
- No more VID segments remain → the equipment release processing is marked as complete
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_EquipmentReleaseProcessingComplete(["Start Step"])
E_EquipmentReleaseProcessingComplete(["End Step"])
N_EquipmentReleaseProcessingComplete_Node0{"The system finalizes equipment
release processing"}:::decision N_EquipmentReleaseProcessingComplete_Node0_action["Equipment release processing is
marked as complete and control
returns to main message processing"]:::main N_EquipmentReleaseProcessingComplete_Node0 -- Yes --> N_EquipmentReleaseProcessingComplete_Node0_action N_EquipmentReleaseProcessingComplete_Node0_action --> E_EquipmentReleaseProcessingComplete S_EquipmentReleaseProcessingComplete --> N_EquipmentReleaseProcessingComplete_Node0 N_EquipmentReleaseProcessingComplete_Node1{"No more VID segments remain"}:::decision N_EquipmentReleaseProcessingComplete_Node1_action["The equipment release processing is
marked as complete"]:::main N_EquipmentReleaseProcessingComplete_Node1 -- Yes --> N_EquipmentReleaseProcessingComplete_Node1_action N_EquipmentReleaseProcessingComplete_Node1_action --> E_EquipmentReleaseProcessingComplete N_EquipmentReleaseProcessingComplete_Node0 -- No --> N_EquipmentReleaseProcessingComplete_Node1 N_EquipmentReleaseProcessingComplete_Node1 -- No --> E_EquipmentReleaseProcessingComplete
release processing"}:::decision N_EquipmentReleaseProcessingComplete_Node0_action["Equipment release processing is
marked as complete and control
returns to main message processing"]:::main N_EquipmentReleaseProcessingComplete_Node0 -- Yes --> N_EquipmentReleaseProcessingComplete_Node0_action N_EquipmentReleaseProcessingComplete_Node0_action --> E_EquipmentReleaseProcessingComplete S_EquipmentReleaseProcessingComplete --> N_EquipmentReleaseProcessingComplete_Node0 N_EquipmentReleaseProcessingComplete_Node1{"No more VID segments remain"}:::decision N_EquipmentReleaseProcessingComplete_Node1_action["The equipment release processing is
marked as complete"]:::main N_EquipmentReleaseProcessingComplete_Node1 -- Yes --> N_EquipmentReleaseProcessingComplete_Node1_action N_EquipmentReleaseProcessingComplete_Node1_action --> E_EquipmentReleaseProcessingComplete N_EquipmentReleaseProcessingComplete_Node0 -- No --> N_EquipmentReleaseProcessingComplete_Node1 N_EquipmentReleaseProcessingComplete_Node1 -- No --> E_EquipmentReleaseProcessingComplete
File: GCX016.cbl
GIVEN:
All VID segments have been processed and train status has been updated
WHEN:
The system finalizes equipment release processing
THEN:
- Equipment release processing is marked as complete
- Control returns to main message processing
File: GCX016.cbl
GIVEN:
All VID segments have been processed for equipment release
WHEN:
No more VID segments remain
THEN:
The equipment release processing is marked as complete
β Consolidated Acceptance Criteria
- The system processes the seizure request → the equipment is marked as seized by customs in the system
- The SEI disposition code is applied to the equipment → the equipment is marked as seized by customs in the system
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MarkEquipmentasSeizedbyCustoms(["Start Step"])
E_MarkEquipmentasSeizedbyCustoms(["End Step"])
N_MarkEquipmentasSeizedbyCustoms_Node0{"The system processes the seizure
request"}:::decision N_MarkEquipmentasSeizedbyCustoms_Node0_action["The equipment is marked as seized
by customs in the system"]:::main N_MarkEquipmentasSeizedbyCustoms_Node0 -- Yes --> N_MarkEquipmentasSeizedbyCustoms_Node0_action N_MarkEquipmentasSeizedbyCustoms_Node0_action --> E_MarkEquipmentasSeizedbyCustoms S_MarkEquipmentasSeizedbyCustoms --> N_MarkEquipmentasSeizedbyCustoms_Node0 N_MarkEquipmentasSeizedbyCustoms_Node1{"The SEI disposition code is applied
to the equipment"}:::decision N_MarkEquipmentasSeizedbyCustoms_Node1_action["The equipment is marked as seized
by customs in the system"]:::main N_MarkEquipmentasSeizedbyCustoms_Node1 -- Yes --> N_MarkEquipmentasSeizedbyCustoms_Node1_action N_MarkEquipmentasSeizedbyCustoms_Node1_action --> E_MarkEquipmentasSeizedbyCustoms N_MarkEquipmentasSeizedbyCustoms_Node0 -- No --> N_MarkEquipmentasSeizedbyCustoms_Node1 N_MarkEquipmentasSeizedbyCustoms_Node1 -- No --> E_MarkEquipmentasSeizedbyCustoms
request"}:::decision N_MarkEquipmentasSeizedbyCustoms_Node0_action["The equipment is marked as seized
by customs in the system"]:::main N_MarkEquipmentasSeizedbyCustoms_Node0 -- Yes --> N_MarkEquipmentasSeizedbyCustoms_Node0_action N_MarkEquipmentasSeizedbyCustoms_Node0_action --> E_MarkEquipmentasSeizedbyCustoms S_MarkEquipmentasSeizedbyCustoms --> N_MarkEquipmentasSeizedbyCustoms_Node0 N_MarkEquipmentasSeizedbyCustoms_Node1{"The SEI disposition code is applied
to the equipment"}:::decision N_MarkEquipmentasSeizedbyCustoms_Node1_action["The equipment is marked as seized
by customs in the system"]:::main N_MarkEquipmentasSeizedbyCustoms_Node1 -- Yes --> N_MarkEquipmentasSeizedbyCustoms_Node1_action N_MarkEquipmentasSeizedbyCustoms_Node1_action --> E_MarkEquipmentasSeizedbyCustoms N_MarkEquipmentasSeizedbyCustoms_Node0 -- No --> N_MarkEquipmentasSeizedbyCustoms_Node1 N_MarkEquipmentasSeizedbyCustoms_Node1 -- No --> E_MarkEquipmentasSeizedbyCustoms
File: GCX016.cbl
GIVEN:
A valid equipment ID has been identified for seizure
WHEN:
The system processes the seizure request
THEN:
The equipment is marked as seized by customs in the system
File: GCX016.cbl
GIVEN:
A valid equipment ID has been identified from VID segment processing
WHEN:
The SEI disposition code is applied to the equipment
THEN:
The equipment is marked as seized by customs in the system
β Consolidated Acceptance Criteria
- The system updates equipment records → the equipment seizure status is updated in the equipment record
- The system updates equipment records → the equipment seizure status is updated to indicate active customs seizure
- The system updates equipment records → update the equipment seizure status in the database with current seizure information
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UpdateEquipmentSeizureStatus(["Start Step"])
E_UpdateEquipmentSeizureStatus(["End Step"])
N_UpdateEquipmentSeizureStatus_Node0{"The system updates equipment
records"}:::decision N_UpdateEquipmentSeizureStatus_Node0_action["The equipment seizure status is
updated in the equipment record"]:::main N_UpdateEquipmentSeizureStatus_Node0 -- Yes --> N_UpdateEquipmentSeizureStatus_Node0_action N_UpdateEquipmentSeizureStatus_Node0_action --> E_UpdateEquipmentSeizureStatus S_UpdateEquipmentSeizureStatus --> N_UpdateEquipmentSeizureStatus_Node0 N_UpdateEquipmentSeizureStatus_Node1{"The system updates equipment
records"}:::decision N_UpdateEquipmentSeizureStatus_Node1_action["The equipment seizure status is
updated to indicate active customs
seizure"]:::main N_UpdateEquipmentSeizureStatus_Node1 -- Yes --> N_UpdateEquipmentSeizureStatus_Node1_action N_UpdateEquipmentSeizureStatus_Node1_action --> E_UpdateEquipmentSeizureStatus N_UpdateEquipmentSeizureStatus_Node0 -- No --> N_UpdateEquipmentSeizureStatus_Node1 N_UpdateEquipmentSeizureStatus_Node2{"The system updates equipment
records"}:::decision N_UpdateEquipmentSeizureStatus_Node2_action["Update the equipment seizure status
in the database with current seizure
information"]:::main N_UpdateEquipmentSeizureStatus_Node2 -- Yes --> N_UpdateEquipmentSeizureStatus_Node2_action N_UpdateEquipmentSeizureStatus_Node2_action --> E_UpdateEquipmentSeizureStatus N_UpdateEquipmentSeizureStatus_Node1 -- No --> N_UpdateEquipmentSeizureStatus_Node2 N_UpdateEquipmentSeizureStatus_Node2 -- No --> E_UpdateEquipmentSeizureStatus
records"}:::decision N_UpdateEquipmentSeizureStatus_Node0_action["The equipment seizure status is
updated in the equipment record"]:::main N_UpdateEquipmentSeizureStatus_Node0 -- Yes --> N_UpdateEquipmentSeizureStatus_Node0_action N_UpdateEquipmentSeizureStatus_Node0_action --> E_UpdateEquipmentSeizureStatus S_UpdateEquipmentSeizureStatus --> N_UpdateEquipmentSeizureStatus_Node0 N_UpdateEquipmentSeizureStatus_Node1{"The system updates equipment
records"}:::decision N_UpdateEquipmentSeizureStatus_Node1_action["The equipment seizure status is
updated to indicate active customs
seizure"]:::main N_UpdateEquipmentSeizureStatus_Node1 -- Yes --> N_UpdateEquipmentSeizureStatus_Node1_action N_UpdateEquipmentSeizureStatus_Node1_action --> E_UpdateEquipmentSeizureStatus N_UpdateEquipmentSeizureStatus_Node0 -- No --> N_UpdateEquipmentSeizureStatus_Node1 N_UpdateEquipmentSeizureStatus_Node2{"The system updates equipment
records"}:::decision N_UpdateEquipmentSeizureStatus_Node2_action["Update the equipment seizure status
in the database with current seizure
information"]:::main N_UpdateEquipmentSeizureStatus_Node2 -- Yes --> N_UpdateEquipmentSeizureStatus_Node2_action N_UpdateEquipmentSeizureStatus_Node2_action --> E_UpdateEquipmentSeizureStatus N_UpdateEquipmentSeizureStatus_Node1 -- No --> N_UpdateEquipmentSeizureStatus_Node2 N_UpdateEquipmentSeizureStatus_Node2 -- No --> E_UpdateEquipmentSeizureStatus
File: GCX016.cbl
GIVEN:
Equipment has been marked as seized by customs
WHEN:
The system updates equipment records
THEN:
The equipment seizure status is updated in the equipment record
File: GCX016.cbl
GIVEN:
Equipment has been marked as seized by customs
WHEN:
The system updates equipment records
THEN:
The equipment seizure status is updated to indicate active customs seizure
File: GCX016.cbl
GIVEN:
Equipment has been marked as seized
WHEN:
The system updates equipment records
THEN:
Update the equipment seizure status in the database with current seizure information
β Consolidated Acceptance Criteria
- The system updates train seizure statistics → the train seizure count is incremented by one
- The seizure status is updated → the train's total seizure count is incremented by one
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IncrementTrainSeizureCount(["Start Step"])
E_IncrementTrainSeizureCount(["End Step"])
N_IncrementTrainSeizureCount_Node0{"The system updates train seizure
statistics"}:::decision N_IncrementTrainSeizureCount_Node0_action["The train seizure count is
incremented by one"]:::main N_IncrementTrainSeizureCount_Node0 -- Yes --> N_IncrementTrainSeizureCount_Node0_action N_IncrementTrainSeizureCount_Node0_action --> E_IncrementTrainSeizureCount S_IncrementTrainSeizureCount --> N_IncrementTrainSeizureCount_Node0 N_IncrementTrainSeizureCount_Node1{"The seizure status is updated"}:::decision N_IncrementTrainSeizureCount_Node1_action["The train s total seizure count is
incremented by one"]:::main N_IncrementTrainSeizureCount_Node1 -- Yes --> N_IncrementTrainSeizureCount_Node1_action N_IncrementTrainSeizureCount_Node1_action --> E_IncrementTrainSeizureCount N_IncrementTrainSeizureCount_Node0 -- No --> N_IncrementTrainSeizureCount_Node1 N_IncrementTrainSeizureCount_Node1 -- No --> E_IncrementTrainSeizureCount
statistics"}:::decision N_IncrementTrainSeizureCount_Node0_action["The train seizure count is
incremented by one"]:::main N_IncrementTrainSeizureCount_Node0 -- Yes --> N_IncrementTrainSeizureCount_Node0_action N_IncrementTrainSeizureCount_Node0_action --> E_IncrementTrainSeizureCount S_IncrementTrainSeizureCount --> N_IncrementTrainSeizureCount_Node0 N_IncrementTrainSeizureCount_Node1{"The seizure status is updated"}:::decision N_IncrementTrainSeizureCount_Node1_action["The train s total seizure count is
incremented by one"]:::main N_IncrementTrainSeizureCount_Node1 -- Yes --> N_IncrementTrainSeizureCount_Node1_action N_IncrementTrainSeizureCount_Node1_action --> E_IncrementTrainSeizureCount N_IncrementTrainSeizureCount_Node0 -- No --> N_IncrementTrainSeizureCount_Node1 N_IncrementTrainSeizureCount_Node1 -- No --> E_IncrementTrainSeizureCount
File: GCX016.cbl
GIVEN:
An equipment item on a train has been seized
WHEN:
The system updates train seizure statistics
THEN:
The train seizure count is incremented by one
File: GCX016.cbl
GIVEN:
Equipment on a train has been marked as seized
WHEN:
The seizure status is updated
THEN:
The train's total seizure count is incremented by one
β Consolidated Acceptance Criteria
- If total train seizure status → the system determines if all equipment on the train has been seized
- The system checks if all equipment on train is seized → if all equipment is seized, set train to fully seized status, otherwise set to partially seized status
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AllEquipmentonTrainSeized(["Start Step"])
E_AllEquipmentonTrainSeized(["End Step"])
N_AllEquipmentonTrainSeized_Node0{"The system evaluates total train
seizure status"}:::decision N_AllEquipmentonTrainSeized_Node0_action["The system determines if all
equipment on the train has been
seized"]:::main N_AllEquipmentonTrainSeized_Node0 -- Yes --> N_AllEquipmentonTrainSeized_Node0_action N_AllEquipmentonTrainSeized_Node0_action --> E_AllEquipmentonTrainSeized S_AllEquipmentonTrainSeized --> N_AllEquipmentonTrainSeized_Node0 N_AllEquipmentonTrainSeized_Node1{"The system checks if all equipment
on train is seized"}:::decision N_AllEquipmentonTrainSeized_Node1_action["If all equipment is seized, set
train to fully seized status,
otherwise set to partially seized
status"]:::main N_AllEquipmentonTrainSeized_Node1 -- Yes --> N_AllEquipmentonTrainSeized_Node1_action N_AllEquipmentonTrainSeized_Node1_action --> E_AllEquipmentonTrainSeized N_AllEquipmentonTrainSeized_Node0 -- No --> N_AllEquipmentonTrainSeized_Node1 N_AllEquipmentonTrainSeized_Node1 -- No --> E_AllEquipmentonTrainSeized
seizure status"}:::decision N_AllEquipmentonTrainSeized_Node0_action["The system determines if all
equipment on the train has been
seized"]:::main N_AllEquipmentonTrainSeized_Node0 -- Yes --> N_AllEquipmentonTrainSeized_Node0_action N_AllEquipmentonTrainSeized_Node0_action --> E_AllEquipmentonTrainSeized S_AllEquipmentonTrainSeized --> N_AllEquipmentonTrainSeized_Node0 N_AllEquipmentonTrainSeized_Node1{"The system checks if all equipment
on train is seized"}:::decision N_AllEquipmentonTrainSeized_Node1_action["If all equipment is seized, set
train to fully seized status,
otherwise set to partially seized
status"]:::main N_AllEquipmentonTrainSeized_Node1 -- Yes --> N_AllEquipmentonTrainSeized_Node1_action N_AllEquipmentonTrainSeized_Node1_action --> E_AllEquipmentonTrainSeized N_AllEquipmentonTrainSeized_Node0 -- No --> N_AllEquipmentonTrainSeized_Node1 N_AllEquipmentonTrainSeized_Node1 -- No --> E_AllEquipmentonTrainSeized
File: GCX016.cbl
GIVEN:
Equipment seizure count has been updated for a train
WHEN:
The system evaluates total train seizure status
THEN:
The system determines if all equipment on the train has been seized
File: GCX016.cbl
GIVEN:
Train seizure status has been updated
WHEN:
The system checks if all equipment on train is seized
THEN:
If all equipment is seized, set train to fully seized status, otherwise set to partially seized status
β Consolidated Acceptance Criteria
- The system updates train status → the train seizure status is set to indicate complete train seizure
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetTrainSeizureStatus(["Start Step"])
E_SetTrainSeizureStatus(["End Step"])
N_SetTrainSeizureStatus_Node0{"The system updates train status"}:::decision
N_SetTrainSeizureStatus_Node0_action["The train seizure status is set to
indicate complete train seizure"]:::main N_SetTrainSeizureStatus_Node0 -- Yes --> N_SetTrainSeizureStatus_Node0_action N_SetTrainSeizureStatus_Node0_action --> E_SetTrainSeizureStatus S_SetTrainSeizureStatus --> N_SetTrainSeizureStatus_Node0 N_SetTrainSeizureStatus_Node0 -- No --> E_SetTrainSeizureStatus
indicate complete train seizure"]:::main N_SetTrainSeizureStatus_Node0 -- Yes --> N_SetTrainSeizureStatus_Node0_action N_SetTrainSeizureStatus_Node0_action --> E_SetTrainSeizureStatus S_SetTrainSeizureStatus --> N_SetTrainSeizureStatus_Node0 N_SetTrainSeizureStatus_Node0 -- No --> E_SetTrainSeizureStatus
File: GCX016.cbl
GIVEN:
All equipment on a train has been seized
WHEN:
The system updates train status
THEN:
The train seizure status is set to indicate complete train seizure
β Consolidated Acceptance Criteria
- The system performs logging operations → the equipment seizure action is logged with relevant details
- The system finalizes the seizure action → a log entry is created documenting the equipment seizure action with relevant details
- The system performs logging operations → log the equipment seizure action with equipment ID, seizure timestamp, and related details
- The system completes seizure processing → the equipment seizure action is logged in the system
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogEquipmentSeizureAction(["Start Step"])
E_LogEquipmentSeizureAction(["End Step"])
N_LogEquipmentSeizureAction_Node0{"The system performs logging
operations"}:::decision N_LogEquipmentSeizureAction_Node0_action["The equipment seizure action is
logged with relevant details"]:::main N_LogEquipmentSeizureAction_Node0 -- Yes --> N_LogEquipmentSeizureAction_Node0_action N_LogEquipmentSeizureAction_Node0_action --> E_LogEquipmentSeizureAction S_LogEquipmentSeizureAction --> N_LogEquipmentSeizureAction_Node0 N_LogEquipmentSeizureAction_Node1{"The system finalizes the seizure
action"}:::decision N_LogEquipmentSeizureAction_Node1_action["A log entry is created documenting
the equipment seizure action with
relevant details"]:::main N_LogEquipmentSeizureAction_Node1 -- Yes --> N_LogEquipmentSeizureAction_Node1_action N_LogEquipmentSeizureAction_Node1_action --> E_LogEquipmentSeizureAction N_LogEquipmentSeizureAction_Node0 -- No --> N_LogEquipmentSeizureAction_Node1 N_LogEquipmentSeizureAction_Node2{"The system performs logging
operations"}:::decision N_LogEquipmentSeizureAction_Node2_action["Log the equipment seizure action
with equipment ID, seizure
timestamp, and related details"]:::main N_LogEquipmentSeizureAction_Node2 -- Yes --> N_LogEquipmentSeizureAction_Node2_action N_LogEquipmentSeizureAction_Node2_action --> E_LogEquipmentSeizureAction N_LogEquipmentSeizureAction_Node1 -- No --> N_LogEquipmentSeizureAction_Node2 N_LogEquipmentSeizureAction_Node3{"The system completes seizure
processing"}:::decision N_LogEquipmentSeizureAction_Node3_action["The equipment seizure action is
logged in the system"]:::main N_LogEquipmentSeizureAction_Node3 -- Yes --> N_LogEquipmentSeizureAction_Node3_action N_LogEquipmentSeizureAction_Node3_action --> E_LogEquipmentSeizureAction N_LogEquipmentSeizureAction_Node2 -- No --> N_LogEquipmentSeizureAction_Node3 N_LogEquipmentSeizureAction_Node3 -- No --> E_LogEquipmentSeizureAction
operations"}:::decision N_LogEquipmentSeizureAction_Node0_action["The equipment seizure action is
logged with relevant details"]:::main N_LogEquipmentSeizureAction_Node0 -- Yes --> N_LogEquipmentSeizureAction_Node0_action N_LogEquipmentSeizureAction_Node0_action --> E_LogEquipmentSeizureAction S_LogEquipmentSeizureAction --> N_LogEquipmentSeizureAction_Node0 N_LogEquipmentSeizureAction_Node1{"The system finalizes the seizure
action"}:::decision N_LogEquipmentSeizureAction_Node1_action["A log entry is created documenting
the equipment seizure action with
relevant details"]:::main N_LogEquipmentSeizureAction_Node1 -- Yes --> N_LogEquipmentSeizureAction_Node1_action N_LogEquipmentSeizureAction_Node1_action --> E_LogEquipmentSeizureAction N_LogEquipmentSeizureAction_Node0 -- No --> N_LogEquipmentSeizureAction_Node1 N_LogEquipmentSeizureAction_Node2{"The system performs logging
operations"}:::decision N_LogEquipmentSeizureAction_Node2_action["Log the equipment seizure action
with equipment ID, seizure
timestamp, and related details"]:::main N_LogEquipmentSeizureAction_Node2 -- Yes --> N_LogEquipmentSeizureAction_Node2_action N_LogEquipmentSeizureAction_Node2_action --> E_LogEquipmentSeizureAction N_LogEquipmentSeizureAction_Node1 -- No --> N_LogEquipmentSeizureAction_Node2 N_LogEquipmentSeizureAction_Node3{"The system completes seizure
processing"}:::decision N_LogEquipmentSeizureAction_Node3_action["The equipment seizure action is
logged in the system"]:::main N_LogEquipmentSeizureAction_Node3 -- Yes --> N_LogEquipmentSeizureAction_Node3_action N_LogEquipmentSeizureAction_Node3_action --> E_LogEquipmentSeizureAction N_LogEquipmentSeizureAction_Node2 -- No --> N_LogEquipmentSeizureAction_Node3 N_LogEquipmentSeizureAction_Node3 -- No --> E_LogEquipmentSeizureAction
File: GCX016.cbl
GIVEN:
Equipment seizure processing has been completed
WHEN:
The system performs logging operations
THEN:
The equipment seizure action is logged with relevant details
File: GCX016.cbl
GIVEN:
Equipment seizure processing has been completed for a train
WHEN:
The system finalizes the seizure action
THEN:
A log entry is created documenting the equipment seizure action with relevant details
File: GCX016.cbl
GIVEN:
Equipment has been successfully seized and status updated
WHEN:
The system performs logging operations
THEN:
Log the equipment seizure action with equipment ID, seizure timestamp, and related details
File: GCX016.cbl
GIVEN:
Equipment has been marked as seized and train status updated
WHEN:
The system completes seizure processing
THEN:
The equipment seizure action is logged in the system
β Consolidated Acceptance Criteria
- The system processes notifications → seizure notifications are generated for relevant stakeholders
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GenerateSeizureNotification(["Start Step"])
E_GenerateSeizureNotification(["End Step"])
N_GenerateSeizureNotification_Node0{"The system processes notifications"}:::decision
N_GenerateSeizureNotification_Node0_action["Seizure notifications are generated
for relevant stakeholders"]:::main N_GenerateSeizureNotification_Node0 -- Yes --> N_GenerateSeizureNotification_Node0_action N_GenerateSeizureNotification_Node0_action --> E_GenerateSeizureNotification S_GenerateSeizureNotification --> N_GenerateSeizureNotification_Node0 N_GenerateSeizureNotification_Node0 -- No --> E_GenerateSeizureNotification
for relevant stakeholders"]:::main N_GenerateSeizureNotification_Node0 -- Yes --> N_GenerateSeizureNotification_Node0_action N_GenerateSeizureNotification_Node0_action --> E_GenerateSeizureNotification S_GenerateSeizureNotification --> N_GenerateSeizureNotification_Node0 N_GenerateSeizureNotification_Node0 -- No --> E_GenerateSeizureNotification
File: GCX016.cbl
GIVEN:
Equipment seizure has been logged
WHEN:
The system processes notifications
THEN:
Seizure notifications are generated for relevant stakeholders
β Consolidated Acceptance Criteria
- The system updates train records → train equipment records are updated with current seizure information
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UpdateTrainEquipmentRecords(["Start Step"])
E_UpdateTrainEquipmentRecords(["End Step"])
N_UpdateTrainEquipmentRecords_Node0{"The system updates train records"}:::decision
N_UpdateTrainEquipmentRecords_Node0_action["Train equipment records are updated
with current seizure information"]:::main N_UpdateTrainEquipmentRecords_Node0 -- Yes --> N_UpdateTrainEquipmentRecords_Node0_action N_UpdateTrainEquipmentRecords_Node0_action --> E_UpdateTrainEquipmentRecords S_UpdateTrainEquipmentRecords --> N_UpdateTrainEquipmentRecords_Node0 N_UpdateTrainEquipmentRecords_Node0 -- No --> E_UpdateTrainEquipmentRecords
with current seizure information"]:::main N_UpdateTrainEquipmentRecords_Node0 -- Yes --> N_UpdateTrainEquipmentRecords_Node0_action N_UpdateTrainEquipmentRecords_Node0_action --> E_UpdateTrainEquipmentRecords S_UpdateTrainEquipmentRecords --> N_UpdateTrainEquipmentRecords_Node0 N_UpdateTrainEquipmentRecords_Node0 -- No --> E_UpdateTrainEquipmentRecords
File: GCX016.cbl
GIVEN:
Seizure notifications have been generated
WHEN:
The system updates train records
THEN:
Train equipment records are updated with current seizure information
β Consolidated Acceptance Criteria
- The system continues processing → equipment seizure processing is skipped for the invalid equipment ID
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SkipEquipmentProcessing(["Start Step"])
E_SkipEquipmentProcessing(["End Step"])
N_SkipEquipmentProcessing_Node0{"The system continues processing"}:::decision
N_SkipEquipmentProcessing_Node0_action["Equipment seizure processing is
skipped for the invalid equipment ID"]:::main N_SkipEquipmentProcessing_Node0 -- Yes --> N_SkipEquipmentProcessing_Node0_action N_SkipEquipmentProcessing_Node0_action --> E_SkipEquipmentProcessing S_SkipEquipmentProcessing --> N_SkipEquipmentProcessing_Node0 N_SkipEquipmentProcessing_Node0 -- No --> E_SkipEquipmentProcessing
skipped for the invalid equipment ID"]:::main N_SkipEquipmentProcessing_Node0 -- Yes --> N_SkipEquipmentProcessing_Node0_action N_SkipEquipmentProcessing_Node0_action --> E_SkipEquipmentProcessing S_SkipEquipmentProcessing --> N_SkipEquipmentProcessing_Node0 N_SkipEquipmentProcessing_Node0 -- No --> E_SkipEquipmentProcessing
File: GCX016.cbl
GIVEN:
An invalid equipment ID error has been logged
WHEN:
The system continues processing
THEN:
Equipment seizure processing is skipped for the invalid equipment ID
β Consolidated Acceptance Criteria
- The system checks for VID segments following the SER code → the system identifies whether VID segments are present for equipment processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CheckifVIDSegmentsFollowSERCode(["Start Step"])
E_CheckifVIDSegmentsFollowSERCode(["End Step"])
N_CheckifVIDSegmentsFollowSERCode_Node0{"The system checks for VID segments
following the SER code"}:::decision N_CheckifVIDSegmentsFollowSERCode_Node0_action["The system identifies whether VID
segments are present for equipment
processing"]:::main N_CheckifVIDSegmentsFollowSERCode_Node0 -- Yes --> N_CheckifVIDSegmentsFollowSERCode_Node0_action N_CheckifVIDSegmentsFollowSERCode_Node0_action --> E_CheckifVIDSegmentsFollowSERCode S_CheckifVIDSegmentsFollowSERCode --> N_CheckifVIDSegmentsFollowSERCode_Node0 N_CheckifVIDSegmentsFollowSERCode_Node0 -- No --> E_CheckifVIDSegmentsFollowSERCode
following the SER code"}:::decision N_CheckifVIDSegmentsFollowSERCode_Node0_action["The system identifies whether VID
segments are present for equipment
processing"]:::main N_CheckifVIDSegmentsFollowSERCode_Node0 -- Yes --> N_CheckifVIDSegmentsFollowSERCode_Node0_action N_CheckifVIDSegmentsFollowSERCode_Node0_action --> E_CheckifVIDSegmentsFollowSERCode S_CheckifVIDSegmentsFollowSERCode --> N_CheckifVIDSegmentsFollowSERCode_Node0 N_CheckifVIDSegmentsFollowSERCode_Node0 -- No --> E_CheckifVIDSegmentsFollowSERCode
File: GCX016.cbl
GIVEN:
A SER disposition code has been processed for a train
WHEN:
The system checks for VID segments following the SER code
THEN:
The system identifies whether VID segments are present for equipment processing
β Consolidated Acceptance Criteria
- The system searches for the equipment on the train → the system determines if the equipment is found or not found on the train
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_FindEquipmentonTrain(["Start Step"])
E_FindEquipmentonTrain(["End Step"])
N_FindEquipmentonTrain_Node0{"The system searches for the
equipment on the train"}:::decision N_FindEquipmentonTrain_Node0_action["The system determines if the
equipment is found or not found on
the train"]:::main N_FindEquipmentonTrain_Node0 -- Yes --> N_FindEquipmentonTrain_Node0_action N_FindEquipmentonTrain_Node0_action --> E_FindEquipmentonTrain S_FindEquipmentonTrain --> N_FindEquipmentonTrain_Node0 N_FindEquipmentonTrain_Node0 -- No --> E_FindEquipmentonTrain
equipment on the train"}:::decision N_FindEquipmentonTrain_Node0_action["The system determines if the
equipment is found or not found on
the train"]:::main N_FindEquipmentonTrain_Node0 -- Yes --> N_FindEquipmentonTrain_Node0_action N_FindEquipmentonTrain_Node0_action --> E_FindEquipmentonTrain S_FindEquipmentonTrain --> N_FindEquipmentonTrain_Node0 N_FindEquipmentonTrain_Node0 -- No --> E_FindEquipmentonTrain
File: GCX016.cbl
GIVEN:
A valid equipment ID has been extracted from VID segment
WHEN:
The system searches for the equipment on the train
THEN:
The system determines if the equipment is found or not found on the train
β Consolidated Acceptance Criteria
- The system checks the current equipment status → the system determines if the equipment is currently seized or not seized
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CheckCurrentEquipmentStatus(["Start Step"])
E_CheckCurrentEquipmentStatus(["End Step"])
N_CheckCurrentEquipmentStatus_Node0{"The system checks the current
equipment status"}:::decision N_CheckCurrentEquipmentStatus_Node0_action["The system determines if the
equipment is currently seized or not
seized"]:::main N_CheckCurrentEquipmentStatus_Node0 -- Yes --> N_CheckCurrentEquipmentStatus_Node0_action N_CheckCurrentEquipmentStatus_Node0_action --> E_CheckCurrentEquipmentStatus S_CheckCurrentEquipmentStatus --> N_CheckCurrentEquipmentStatus_Node0 N_CheckCurrentEquipmentStatus_Node0 -- No --> E_CheckCurrentEquipmentStatus
equipment status"}:::decision N_CheckCurrentEquipmentStatus_Node0_action["The system determines if the
equipment is currently seized or not
seized"]:::main N_CheckCurrentEquipmentStatus_Node0 -- Yes --> N_CheckCurrentEquipmentStatus_Node0_action N_CheckCurrentEquipmentStatus_Node0_action --> E_CheckCurrentEquipmentStatus S_CheckCurrentEquipmentStatus --> N_CheckCurrentEquipmentStatus_Node0 N_CheckCurrentEquipmentStatus_Node0 -- No --> E_CheckCurrentEquipmentStatus
File: GCX016.cbl
GIVEN:
Equipment has been found on the train
WHEN:
The system checks the current equipment status
THEN:
The system determines if the equipment is currently seized or not seized
β Consolidated Acceptance Criteria
- The system processes the seizure release request → the equipment seizure status is removed
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ReleaseEquipmentfromSeizure(["Start Step"])
E_ReleaseEquipmentfromSeizure(["End Step"])
N_ReleaseEquipmentfromSeizure_Node0{"The system processes the seizure
release request"}:::decision N_ReleaseEquipmentfromSeizure_Node0_action["The equipment seizure status is
removed"]:::main N_ReleaseEquipmentfromSeizure_Node0 -- Yes --> N_ReleaseEquipmentfromSeizure_Node0_action N_ReleaseEquipmentfromSeizure_Node0_action --> E_ReleaseEquipmentfromSeizure S_ReleaseEquipmentfromSeizure --> N_ReleaseEquipmentfromSeizure_Node0 N_ReleaseEquipmentfromSeizure_Node0 -- No --> E_ReleaseEquipmentfromSeizure
release request"}:::decision N_ReleaseEquipmentfromSeizure_Node0_action["The equipment seizure status is
removed"]:::main N_ReleaseEquipmentfromSeizure_Node0 -- Yes --> N_ReleaseEquipmentfromSeizure_Node0_action N_ReleaseEquipmentfromSeizure_Node0_action --> E_ReleaseEquipmentfromSeizure S_ReleaseEquipmentfromSeizure --> N_ReleaseEquipmentfromSeizure_Node0 N_ReleaseEquipmentfromSeizure_Node0 -- No --> E_ReleaseEquipmentfromSeizure
File: GCX016.cbl
GIVEN:
Equipment is currently under seizure status
WHEN:
The system processes the seizure release request
THEN:
The equipment seizure status is removed
β Consolidated Acceptance Criteria
- The system updates the equipment status → the equipment status is set to normal operational status
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UpdateEquipmentStatustoNormal(["Start Step"])
E_UpdateEquipmentStatustoNormal(["End Step"])
N_UpdateEquipmentStatustoNormal_Node0{"The system updates the equipment
status"}:::decision N_UpdateEquipmentStatustoNormal_Node0_action["The equipment status is set to
normal operational status"]:::main N_UpdateEquipmentStatustoNormal_Node0 -- Yes --> N_UpdateEquipmentStatustoNormal_Node0_action N_UpdateEquipmentStatustoNormal_Node0_action --> E_UpdateEquipmentStatustoNormal S_UpdateEquipmentStatustoNormal --> N_UpdateEquipmentStatustoNormal_Node0 N_UpdateEquipmentStatustoNormal_Node0 -- No --> E_UpdateEquipmentStatustoNormal
status"}:::decision N_UpdateEquipmentStatustoNormal_Node0_action["The equipment status is set to
normal operational status"]:::main N_UpdateEquipmentStatustoNormal_Node0 -- Yes --> N_UpdateEquipmentStatustoNormal_Node0_action N_UpdateEquipmentStatustoNormal_Node0_action --> E_UpdateEquipmentStatustoNormal S_UpdateEquipmentStatustoNormal --> N_UpdateEquipmentStatustoNormal_Node0 N_UpdateEquipmentStatustoNormal_Node0 -- No --> E_UpdateEquipmentStatustoNormal
File: GCX016.cbl
GIVEN:
Equipment seizure has been released
WHEN:
The system updates the equipment status
THEN:
The equipment status is set to normal operational status
β Consolidated Acceptance Criteria
- The system updates train seizure statistics → the train's seized equipment count is decremented by one
- The system updates train seizure statistics → decrement the train's total seized equipment count by one
- The system updates train seizure statistics → the train seized equipment count is decremented by one
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_DecrementTrainSeizedEquipmentCount(["Start Step"])
E_DecrementTrainSeizedEquipmentCount(["End Step"])
N_DecrementTrainSeizedEquipmentCount_Node0{"The system updates train seizure
statistics"}:::decision N_DecrementTrainSeizedEquipmentCount_Node0_action["The train s seized equipment count
is decremented by one"]:::main N_DecrementTrainSeizedEquipmentCount_Node0 -- Yes --> N_DecrementTrainSeizedEquipmentCount_Node0_action N_DecrementTrainSeizedEquipmentCount_Node0_action --> E_DecrementTrainSeizedEquipmentCount S_DecrementTrainSeizedEquipmentCount --> N_DecrementTrainSeizedEquipmentCount_Node0 N_DecrementTrainSeizedEquipmentCount_Node1{"The system updates train seizure
statistics"}:::decision N_DecrementTrainSeizedEquipmentCount_Node1_action["Decrement the train s total seized
equipment count by one"]:::main N_DecrementTrainSeizedEquipmentCount_Node1 -- Yes --> N_DecrementTrainSeizedEquipmentCount_Node1_action N_DecrementTrainSeizedEquipmentCount_Node1_action --> E_DecrementTrainSeizedEquipmentCount N_DecrementTrainSeizedEquipmentCount_Node0 -- No --> N_DecrementTrainSeizedEquipmentCount_Node1 N_DecrementTrainSeizedEquipmentCount_Node2{"The system updates train seizure
statistics"}:::decision N_DecrementTrainSeizedEquipmentCount_Node2_action["The train seized equipment count is
decremented by one"]:::main N_DecrementTrainSeizedEquipmentCount_Node2 -- Yes --> N_DecrementTrainSeizedEquipmentCount_Node2_action N_DecrementTrainSeizedEquipmentCount_Node2_action --> E_DecrementTrainSeizedEquipmentCount N_DecrementTrainSeizedEquipmentCount_Node1 -- No --> N_DecrementTrainSeizedEquipmentCount_Node2 N_DecrementTrainSeizedEquipmentCount_Node2 -- No --> E_DecrementTrainSeizedEquipmentCount
statistics"}:::decision N_DecrementTrainSeizedEquipmentCount_Node0_action["The train s seized equipment count
is decremented by one"]:::main N_DecrementTrainSeizedEquipmentCount_Node0 -- Yes --> N_DecrementTrainSeizedEquipmentCount_Node0_action N_DecrementTrainSeizedEquipmentCount_Node0_action --> E_DecrementTrainSeizedEquipmentCount S_DecrementTrainSeizedEquipmentCount --> N_DecrementTrainSeizedEquipmentCount_Node0 N_DecrementTrainSeizedEquipmentCount_Node1{"The system updates train seizure
statistics"}:::decision N_DecrementTrainSeizedEquipmentCount_Node1_action["Decrement the train s total seized
equipment count by one"]:::main N_DecrementTrainSeizedEquipmentCount_Node1 -- Yes --> N_DecrementTrainSeizedEquipmentCount_Node1_action N_DecrementTrainSeizedEquipmentCount_Node1_action --> E_DecrementTrainSeizedEquipmentCount N_DecrementTrainSeizedEquipmentCount_Node0 -- No --> N_DecrementTrainSeizedEquipmentCount_Node1 N_DecrementTrainSeizedEquipmentCount_Node2{"The system updates train seizure
statistics"}:::decision N_DecrementTrainSeizedEquipmentCount_Node2_action["The train seized equipment count is
decremented by one"]:::main N_DecrementTrainSeizedEquipmentCount_Node2 -- Yes --> N_DecrementTrainSeizedEquipmentCount_Node2_action N_DecrementTrainSeizedEquipmentCount_Node2_action --> E_DecrementTrainSeizedEquipmentCount N_DecrementTrainSeizedEquipmentCount_Node1 -- No --> N_DecrementTrainSeizedEquipmentCount_Node2 N_DecrementTrainSeizedEquipmentCount_Node2 -- No --> E_DecrementTrainSeizedEquipmentCount
File: GCX016.cbl
GIVEN:
Equipment has been released from seizure
WHEN:
The system updates train seizure statistics
THEN:
The train's seized equipment count is decremented by one
File: GCX016.cbl
GIVEN:
Equipment has been successfully removed from seized status
WHEN:
The system updates train seizure statistics
THEN:
Decrement the train's total seized equipment count by one
File: GCX016.cbl
GIVEN:
Equipment seizure status has been removed
WHEN:
The system updates train seizure statistics
THEN:
The train seized equipment count is decremented by one
β Consolidated Acceptance Criteria
- The system logs the seizure release activity → an audit log entry is created documenting the equipment seizure release
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogEquipmentSeizureRelease(["Start Step"])
E_LogEquipmentSeizureRelease(["End Step"])
N_LogEquipmentSeizureRelease_Node0{"The system logs the seizure release
activity"}:::decision N_LogEquipmentSeizureRelease_Node0_action["An audit log entry is created
documenting the equipment seizure
release"]:::main N_LogEquipmentSeizureRelease_Node0 -- Yes --> N_LogEquipmentSeizureRelease_Node0_action N_LogEquipmentSeizureRelease_Node0_action --> E_LogEquipmentSeizureRelease S_LogEquipmentSeizureRelease --> N_LogEquipmentSeizureRelease_Node0 N_LogEquipmentSeizureRelease_Node0 -- No --> E_LogEquipmentSeizureRelease
activity"}:::decision N_LogEquipmentSeizureRelease_Node0_action["An audit log entry is created
documenting the equipment seizure
release"]:::main N_LogEquipmentSeizureRelease_Node0 -- Yes --> N_LogEquipmentSeizureRelease_Node0_action N_LogEquipmentSeizureRelease_Node0_action --> E_LogEquipmentSeizureRelease S_LogEquipmentSeizureRelease --> N_LogEquipmentSeizureRelease_Node0 N_LogEquipmentSeizureRelease_Node0 -- No --> E_LogEquipmentSeizureRelease
File: GCX016.cbl
GIVEN:
Equipment seizure has been successfully released
WHEN:
The system logs the seizure release activity
THEN:
An audit log entry is created documenting the equipment seizure release
β Consolidated Acceptance Criteria
- The system checks the overall train seizure status → the system determines if any equipment still remains seized on the train
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CheckOverallTrainSeizureStatus(["Start Step"])
E_CheckOverallTrainSeizureStatus(["End Step"])
N_CheckOverallTrainSeizureStatus_Node0{"The system checks the overall train
seizure status"}:::decision N_CheckOverallTrainSeizureStatus_Node0_action["The system determines if any
equipment still remains seized on
the train"]:::main N_CheckOverallTrainSeizureStatus_Node0 -- Yes --> N_CheckOverallTrainSeizureStatus_Node0_action N_CheckOverallTrainSeizureStatus_Node0_action --> E_CheckOverallTrainSeizureStatus S_CheckOverallTrainSeizureStatus --> N_CheckOverallTrainSeizureStatus_Node0 N_CheckOverallTrainSeizureStatus_Node0 -- No --> E_CheckOverallTrainSeizureStatus
seizure status"}:::decision N_CheckOverallTrainSeizureStatus_Node0_action["The system determines if any
equipment still remains seized on
the train"]:::main N_CheckOverallTrainSeizureStatus_Node0 -- Yes --> N_CheckOverallTrainSeizureStatus_Node0_action N_CheckOverallTrainSeizureStatus_Node0_action --> E_CheckOverallTrainSeizureStatus S_CheckOverallTrainSeizureStatus --> N_CheckOverallTrainSeizureStatus_Node0 N_CheckOverallTrainSeizureStatus_Node0 -- No --> E_CheckOverallTrainSeizureStatus
File: GCX016.cbl
GIVEN:
All VID segments have been processed for seizure release
WHEN:
The system checks the overall train seizure status
THEN:
The system determines if any equipment still remains seized on the train
β Consolidated Acceptance Criteria
- The system updates the train seizure status → the overall train seizure status is removed
- The system updates train seizure status → remove the train seizure status since no seized equipment remains on the train
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RemoveTrainSeizureStatus(["Start Step"])
E_RemoveTrainSeizureStatus(["End Step"])
N_RemoveTrainSeizureStatus_Node0{"The system updates the train
seizure status"}:::decision N_RemoveTrainSeizureStatus_Node0_action["The overall train seizure status is
removed"]:::main N_RemoveTrainSeizureStatus_Node0 -- Yes --> N_RemoveTrainSeizureStatus_Node0_action N_RemoveTrainSeizureStatus_Node0_action --> E_RemoveTrainSeizureStatus S_RemoveTrainSeizureStatus --> N_RemoveTrainSeizureStatus_Node0 N_RemoveTrainSeizureStatus_Node1{"The system updates train seizure
status"}:::decision N_RemoveTrainSeizureStatus_Node1_action["Remove the train seizure status
since no seized equipment remains on
the train"]:::main N_RemoveTrainSeizureStatus_Node1 -- Yes --> N_RemoveTrainSeizureStatus_Node1_action N_RemoveTrainSeizureStatus_Node1_action --> E_RemoveTrainSeizureStatus N_RemoveTrainSeizureStatus_Node0 -- No --> N_RemoveTrainSeizureStatus_Node1 N_RemoveTrainSeizureStatus_Node1 -- No --> E_RemoveTrainSeizureStatus
seizure status"}:::decision N_RemoveTrainSeizureStatus_Node0_action["The overall train seizure status is
removed"]:::main N_RemoveTrainSeizureStatus_Node0 -- Yes --> N_RemoveTrainSeizureStatus_Node0_action N_RemoveTrainSeizureStatus_Node0_action --> E_RemoveTrainSeizureStatus S_RemoveTrainSeizureStatus --> N_RemoveTrainSeizureStatus_Node0 N_RemoveTrainSeizureStatus_Node1{"The system updates train seizure
status"}:::decision N_RemoveTrainSeizureStatus_Node1_action["Remove the train seizure status
since no seized equipment remains on
the train"]:::main N_RemoveTrainSeizureStatus_Node1 -- Yes --> N_RemoveTrainSeizureStatus_Node1_action N_RemoveTrainSeizureStatus_Node1_action --> E_RemoveTrainSeizureStatus N_RemoveTrainSeizureStatus_Node0 -- No --> N_RemoveTrainSeizureStatus_Node1 N_RemoveTrainSeizureStatus_Node1 -- No --> E_RemoveTrainSeizureStatus
File: GCX016.cbl
GIVEN:
No equipment remains seized on the train
WHEN:
The system updates the train seizure status
THEN:
The overall train seizure status is removed
File: GCX016.cbl
GIVEN:
No equipment on the train has seizure status
WHEN:
The system updates train seizure status
THEN:
Remove the train seizure status since no seized equipment remains on the train
β Consolidated Acceptance Criteria
- The system updates the train seizure status → the overall train seizure status is maintained
- The system updates train seizure status → maintain the train seizure status as active since seized equipment remains on the train
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_KeepTrainSeizureStatus(["Start Step"])
E_KeepTrainSeizureStatus(["End Step"])
N_KeepTrainSeizureStatus_Node0{"The system updates the train
seizure status"}:::decision N_KeepTrainSeizureStatus_Node0_action["The overall train seizure status is
maintained"]:::main N_KeepTrainSeizureStatus_Node0 -- Yes --> N_KeepTrainSeizureStatus_Node0_action N_KeepTrainSeizureStatus_Node0_action --> E_KeepTrainSeizureStatus S_KeepTrainSeizureStatus --> N_KeepTrainSeizureStatus_Node0 N_KeepTrainSeizureStatus_Node1{"The system updates train seizure
status"}:::decision N_KeepTrainSeizureStatus_Node1_action["Maintain the train seizure status
as active since seized equipment
remains on the train"]:::main N_KeepTrainSeizureStatus_Node1 -- Yes --> N_KeepTrainSeizureStatus_Node1_action N_KeepTrainSeizureStatus_Node1_action --> E_KeepTrainSeizureStatus N_KeepTrainSeizureStatus_Node0 -- No --> N_KeepTrainSeizureStatus_Node1 N_KeepTrainSeizureStatus_Node1 -- No --> E_KeepTrainSeizureStatus
seizure status"}:::decision N_KeepTrainSeizureStatus_Node0_action["The overall train seizure status is
maintained"]:::main N_KeepTrainSeizureStatus_Node0 -- Yes --> N_KeepTrainSeizureStatus_Node0_action N_KeepTrainSeizureStatus_Node0_action --> E_KeepTrainSeizureStatus S_KeepTrainSeizureStatus --> N_KeepTrainSeizureStatus_Node0 N_KeepTrainSeizureStatus_Node1{"The system updates train seizure
status"}:::decision N_KeepTrainSeizureStatus_Node1_action["Maintain the train seizure status
as active since seized equipment
remains on the train"]:::main N_KeepTrainSeizureStatus_Node1 -- Yes --> N_KeepTrainSeizureStatus_Node1_action N_KeepTrainSeizureStatus_Node1_action --> E_KeepTrainSeizureStatus N_KeepTrainSeizureStatus_Node0 -- No --> N_KeepTrainSeizureStatus_Node1 N_KeepTrainSeizureStatus_Node1 -- No --> E_KeepTrainSeizureStatus
File: GCX016.cbl
GIVEN:
Some equipment still remains seized on the train
WHEN:
The system updates the train seizure status
THEN:
The overall train seizure status is maintained
File: GCX016.cbl
GIVEN:
Some equipment on the train still has seizure status
WHEN:
The system updates train seizure status
THEN:
Maintain the train seizure status as active since seized equipment remains on the train
β Consolidated Acceptance Criteria
- The system updates the database → the train status changes are persisted to the database
- The system updates the train status → the train status is updated in the database to reflect the current seizure state
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UpdateTrainStatusinDatabase(["Start Step"])
E_UpdateTrainStatusinDatabase(["End Step"])
N_UpdateTrainStatusinDatabase_Node0{"The system updates the database"}:::decision
N_UpdateTrainStatusinDatabase_Node0_action["The train status changes are
persisted to the database"]:::main N_UpdateTrainStatusinDatabase_Node0 -- Yes --> N_UpdateTrainStatusinDatabase_Node0_action N_UpdateTrainStatusinDatabase_Node0_action --> E_UpdateTrainStatusinDatabase S_UpdateTrainStatusinDatabase --> N_UpdateTrainStatusinDatabase_Node0 N_UpdateTrainStatusinDatabase_Node1{"The system updates the train status"}:::decision N_UpdateTrainStatusinDatabase_Node1_action["The train status is updated in the
database to reflect the current
seizure state"]:::main N_UpdateTrainStatusinDatabase_Node1 -- Yes --> N_UpdateTrainStatusinDatabase_Node1_action N_UpdateTrainStatusinDatabase_Node1_action --> E_UpdateTrainStatusinDatabase N_UpdateTrainStatusinDatabase_Node0 -- No --> N_UpdateTrainStatusinDatabase_Node1 N_UpdateTrainStatusinDatabase_Node1 -- No --> E_UpdateTrainStatusinDatabase
persisted to the database"]:::main N_UpdateTrainStatusinDatabase_Node0 -- Yes --> N_UpdateTrainStatusinDatabase_Node0_action N_UpdateTrainStatusinDatabase_Node0_action --> E_UpdateTrainStatusinDatabase S_UpdateTrainStatusinDatabase --> N_UpdateTrainStatusinDatabase_Node0 N_UpdateTrainStatusinDatabase_Node1{"The system updates the train status"}:::decision N_UpdateTrainStatusinDatabase_Node1_action["The train status is updated in the
database to reflect the current
seizure state"]:::main N_UpdateTrainStatusinDatabase_Node1 -- Yes --> N_UpdateTrainStatusinDatabase_Node1_action N_UpdateTrainStatusinDatabase_Node1_action --> E_UpdateTrainStatusinDatabase N_UpdateTrainStatusinDatabase_Node0 -- No --> N_UpdateTrainStatusinDatabase_Node1 N_UpdateTrainStatusinDatabase_Node1 -- No --> E_UpdateTrainStatusinDatabase
File: GCX016.cbl
GIVEN:
Train seizure status has been determined
WHEN:
The system updates the database
THEN:
The train status changes are persisted to the database
File: GCX016.cbl
GIVEN:
Train seizure status has been determined
WHEN:
The system updates the train status
THEN:
The train status is updated in the database to reflect the current seizure state
β Consolidated Acceptance Criteria
- The system generates release notifications → equipment release notification is created and sent to appropriate recipients
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GenerateEquipmentReleaseNotification(["Start Step"])
E_GenerateEquipmentReleaseNotification(["End Step"])
N_GenerateEquipmentReleaseNotification_Node0{"The system generates release
notifications"}:::decision N_GenerateEquipmentReleaseNotification_Node0_action["Equipment release notification is
created and sent to appropriate
recipients"]:::main N_GenerateEquipmentReleaseNotification_Node0 -- Yes --> N_GenerateEquipmentReleaseNotification_Node0_action N_GenerateEquipmentReleaseNotification_Node0_action --> E_GenerateEquipmentReleaseNotification S_GenerateEquipmentReleaseNotification --> N_GenerateEquipmentReleaseNotification_Node0 N_GenerateEquipmentReleaseNotification_Node0 -- No --> E_GenerateEquipmentReleaseNotification
notifications"}:::decision N_GenerateEquipmentReleaseNotification_Node0_action["Equipment release notification is
created and sent to appropriate
recipients"]:::main N_GenerateEquipmentReleaseNotification_Node0 -- Yes --> N_GenerateEquipmentReleaseNotification_Node0_action N_GenerateEquipmentReleaseNotification_Node0_action --> E_GenerateEquipmentReleaseNotification S_GenerateEquipmentReleaseNotification --> N_GenerateEquipmentReleaseNotification_Node0 N_GenerateEquipmentReleaseNotification_Node0 -- No --> E_GenerateEquipmentReleaseNotification
File: GCX016.cbl
GIVEN:
Train status has been updated in the database
WHEN:
The system generates release notifications
THEN:
- Equipment release notification is created
- Sent to appropriate recipients
β Consolidated Acceptance Criteria
- The system processes the equipment search result → an error is logged indicating equipment not found on train
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogEquipmentNotFoundError(["Start Step"])
E_LogEquipmentNotFoundError(["End Step"])
N_LogEquipmentNotFoundError_Node0{"The system processes the equipment
search result"}:::decision N_LogEquipmentNotFoundError_Node0_action["An error is logged indicating
equipment not found on train"]:::main N_LogEquipmentNotFoundError_Node0 -- Yes --> N_LogEquipmentNotFoundError_Node0_action N_LogEquipmentNotFoundError_Node0_action --> E_LogEquipmentNotFoundError S_LogEquipmentNotFoundError --> N_LogEquipmentNotFoundError_Node0 N_LogEquipmentNotFoundError_Node0 -- No --> E_LogEquipmentNotFoundError
search result"}:::decision N_LogEquipmentNotFoundError_Node0_action["An error is logged indicating
equipment not found on train"]:::main N_LogEquipmentNotFoundError_Node0 -- Yes --> N_LogEquipmentNotFoundError_Node0_action N_LogEquipmentNotFoundError_Node0_action --> E_LogEquipmentNotFoundError S_LogEquipmentNotFoundError --> N_LogEquipmentNotFoundError_Node0 N_LogEquipmentNotFoundError_Node0 -- No --> E_LogEquipmentNotFoundError
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
Equipment ID is valid but equipment is not found on the train
WHEN:
The system processes the equipment search result
THEN:
An error is logged indicating equipment not found on train
β Consolidated Acceptance Criteria
- The system attempts to release equipment from seizure → a warning is logged indicating equipment is not currently seized
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogEquipmentNotSeizedWarning(["Start Step"])
E_LogEquipmentNotSeizedWarning(["End Step"])
N_LogEquipmentNotSeizedWarning_Node0{"The system attempts to release
equipment from seizure"}:::decision N_LogEquipmentNotSeizedWarning_Node0_action["A warning is logged indicating
equipment is not currently seized"]:::main N_LogEquipmentNotSeizedWarning_Node0 -- Yes --> N_LogEquipmentNotSeizedWarning_Node0_action N_LogEquipmentNotSeizedWarning_Node0_action --> E_LogEquipmentNotSeizedWarning S_LogEquipmentNotSeizedWarning --> N_LogEquipmentNotSeizedWarning_Node0 N_LogEquipmentNotSeizedWarning_Node0 -- No --> E_LogEquipmentNotSeizedWarning
equipment from seizure"}:::decision N_LogEquipmentNotSeizedWarning_Node0_action["A warning is logged indicating
equipment is not currently seized"]:::main N_LogEquipmentNotSeizedWarning_Node0 -- Yes --> N_LogEquipmentNotSeizedWarning_Node0_action N_LogEquipmentNotSeizedWarning_Node0_action --> E_LogEquipmentNotSeizedWarning S_LogEquipmentNotSeizedWarning --> N_LogEquipmentNotSeizedWarning_Node0 N_LogEquipmentNotSeizedWarning_Node0 -- No --> E_LogEquipmentNotSeizedWarning
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
Equipment is found on train but is not currently seized
WHEN:
The system attempts to release equipment from seizure
THEN:
A warning is logged indicating equipment is not currently seized
β Consolidated Acceptance Criteria
- The system processes the train hold request → the system validates the train exists in GCWTL-TRAIN-LIST and sets appropriate processing flags
- The system processes the M10 manifest segment to validate train existence → the system checks if the vessel name exists in GCWTL-TRAIN-LIST and sets appropriate found/not found flags
- The system processes the train validation → the system checks if the train exists in the system and sets appropriate flags
- The system validates the train existence in the GCWTL-TRAIN-LIST → the system determines if the train is found or not found and sets appropriate processing flags
- The system validates the train information from M10 segment → the system checks if the train exists in GCWTL-TRAIN-LIST table
- The system processes the ULC request and checks the train list for the specified train → the system verifies train existence in GCWTL-TRAIN-LIST and sets appropriate validation flags
- The system validates the train against the train list using vessel name → the system determines if the train exists and sets appropriate processing flags
- The system attempts to validate the train exists in the train list → the system checks the train list database and sets train found or not found status
- The system validates the train name against the train list → if train is not found in GCWTL-TRAIN-LIST, generate train not found error and route to operations
- The system validates the train existence → the system checks the train list to confirm the train is registered in the system
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ValidateTrainExistsinSystem(["Start Step"])
E_ValidateTrainExistsinSystem(["End Step"])
N_ValidateTrainExistsinSystem_Node0{"The system processes the train hold
request"}:::decision N_ValidateTrainExistsinSystem_Node0_action["The system validates the train
exists in GCWTL-TRAIN-LIST and sets
appropriate processing flags"]:::main N_ValidateTrainExistsinSystem_Node0 -- Yes --> N_ValidateTrainExistsinSystem_Node0_action N_ValidateTrainExistsinSystem_Node0_action --> E_ValidateTrainExistsinSystem S_ValidateTrainExistsinSystem --> N_ValidateTrainExistsinSystem_Node0 N_ValidateTrainExistsinSystem_Node1{"The system processes the M10
manifest segment to validate train
existence"}:::decision N_ValidateTrainExistsinSystem_Node1_action["The system checks if the vessel
name exists in GCWTL-TRAIN-LIST and
sets appropriate foundnot found
flags"]:::main N_ValidateTrainExistsinSystem_Node1 -- Yes --> N_ValidateTrainExistsinSystem_Node1_action N_ValidateTrainExistsinSystem_Node1_action --> E_ValidateTrainExistsinSystem N_ValidateTrainExistsinSystem_Node0 -- No --> N_ValidateTrainExistsinSystem_Node1 N_ValidateTrainExistsinSystem_Node2{"The system processes the train
validation"}:::decision N_ValidateTrainExistsinSystem_Node2_action["The system checks if the train
exists in the system and sets
appropriate flags"]:::main N_ValidateTrainExistsinSystem_Node2 -- Yes --> N_ValidateTrainExistsinSystem_Node2_action N_ValidateTrainExistsinSystem_Node2_action --> E_ValidateTrainExistsinSystem N_ValidateTrainExistsinSystem_Node1 -- No --> N_ValidateTrainExistsinSystem_Node2 N_ValidateTrainExistsinSystem_Node3{"The system validates the train
existence in the GCWTL-TRAIN-LIST"}:::decision N_ValidateTrainExistsinSystem_Node3_action["The system determines if the train
is found or not found and sets
appropriate processing flags"]:::main N_ValidateTrainExistsinSystem_Node3 -- Yes --> N_ValidateTrainExistsinSystem_Node3_action N_ValidateTrainExistsinSystem_Node3_action --> E_ValidateTrainExistsinSystem N_ValidateTrainExistsinSystem_Node2 -- No --> N_ValidateTrainExistsinSystem_Node3 N_ValidateTrainExistsinSystem_Node4{"The system validates the train
information from M10 segment"}:::decision N_ValidateTrainExistsinSystem_Node4_action["The system checks if the train
exists in GCWTL-TRAIN-LIST table"]:::main N_ValidateTrainExistsinSystem_Node4 -- Yes --> N_ValidateTrainExistsinSystem_Node4_action N_ValidateTrainExistsinSystem_Node4_action --> E_ValidateTrainExistsinSystem N_ValidateTrainExistsinSystem_Node3 -- No --> N_ValidateTrainExistsinSystem_Node4 N_ValidateTrainExistsinSystem_Node5{"The system processes the ULC
request and checks the train list
for the specified train"}:::decision N_ValidateTrainExistsinSystem_Node5_action["The system verifies train existence
in GCWTL-TRAIN-LIST and sets
appropriate validation flags"]:::main N_ValidateTrainExistsinSystem_Node5 -- Yes --> N_ValidateTrainExistsinSystem_Node5_action N_ValidateTrainExistsinSystem_Node5_action --> E_ValidateTrainExistsinSystem N_ValidateTrainExistsinSystem_Node4 -- No --> N_ValidateTrainExistsinSystem_Node5 N_ValidateTrainExistsinSystem_Node6{"The system validates the train
against the train list using vessel
name"}:::decision N_ValidateTrainExistsinSystem_Node6_action["The system determines if the train
exists and sets appropriate
processing flags"]:::main N_ValidateTrainExistsinSystem_Node6 -- Yes --> N_ValidateTrainExistsinSystem_Node6_action N_ValidateTrainExistsinSystem_Node6_action --> E_ValidateTrainExistsinSystem N_ValidateTrainExistsinSystem_Node5 -- No --> N_ValidateTrainExistsinSystem_Node6 N_ValidateTrainExistsinSystem_Node7{"The system attempts to validate the
train exists in the train list"}:::decision N_ValidateTrainExistsinSystem_Node7_action["The system checks the train list
database and sets train found or not
found status"]:::main N_ValidateTrainExistsinSystem_Node7 -- Yes --> N_ValidateTrainExistsinSystem_Node7_action N_ValidateTrainExistsinSystem_Node7_action --> E_ValidateTrainExistsinSystem N_ValidateTrainExistsinSystem_Node6 -- No --> N_ValidateTrainExistsinSystem_Node7 N_ValidateTrainExistsinSystem_Node8{"The system validates the train name
against the train list"}:::decision N_ValidateTrainExistsinSystem_Node8_action["If train is not found in
GCWTL-TRAIN-LIST, generate train not
found error and route to operations"]:::main N_ValidateTrainExistsinSystem_Node8 -- Yes --> N_ValidateTrainExistsinSystem_Node8_action N_ValidateTrainExistsinSystem_Node8_action --> E_ValidateTrainExistsinSystem N_ValidateTrainExistsinSystem_Node7 -- No --> N_ValidateTrainExistsinSystem_Node8 N_ValidateTrainExistsinSystem_Node9{"The system validates the train
existence"}:::decision N_ValidateTrainExistsinSystem_Node9_action["The system checks the train list to
confirm the train is registered in
the system"]:::main N_ValidateTrainExistsinSystem_Node9 -- Yes --> N_ValidateTrainExistsinSystem_Node9_action N_ValidateTrainExistsinSystem_Node9_action --> E_ValidateTrainExistsinSystem N_ValidateTrainExistsinSystem_Node8 -- No --> N_ValidateTrainExistsinSystem_Node9 N_ValidateTrainExistsinSystem_Node9 -- No --> E_ValidateTrainExistsinSystem
request"}:::decision N_ValidateTrainExistsinSystem_Node0_action["The system validates the train
exists in GCWTL-TRAIN-LIST and sets
appropriate processing flags"]:::main N_ValidateTrainExistsinSystem_Node0 -- Yes --> N_ValidateTrainExistsinSystem_Node0_action N_ValidateTrainExistsinSystem_Node0_action --> E_ValidateTrainExistsinSystem S_ValidateTrainExistsinSystem --> N_ValidateTrainExistsinSystem_Node0 N_ValidateTrainExistsinSystem_Node1{"The system processes the M10
manifest segment to validate train
existence"}:::decision N_ValidateTrainExistsinSystem_Node1_action["The system checks if the vessel
name exists in GCWTL-TRAIN-LIST and
sets appropriate foundnot found
flags"]:::main N_ValidateTrainExistsinSystem_Node1 -- Yes --> N_ValidateTrainExistsinSystem_Node1_action N_ValidateTrainExistsinSystem_Node1_action --> E_ValidateTrainExistsinSystem N_ValidateTrainExistsinSystem_Node0 -- No --> N_ValidateTrainExistsinSystem_Node1 N_ValidateTrainExistsinSystem_Node2{"The system processes the train
validation"}:::decision N_ValidateTrainExistsinSystem_Node2_action["The system checks if the train
exists in the system and sets
appropriate flags"]:::main N_ValidateTrainExistsinSystem_Node2 -- Yes --> N_ValidateTrainExistsinSystem_Node2_action N_ValidateTrainExistsinSystem_Node2_action --> E_ValidateTrainExistsinSystem N_ValidateTrainExistsinSystem_Node1 -- No --> N_ValidateTrainExistsinSystem_Node2 N_ValidateTrainExistsinSystem_Node3{"The system validates the train
existence in the GCWTL-TRAIN-LIST"}:::decision N_ValidateTrainExistsinSystem_Node3_action["The system determines if the train
is found or not found and sets
appropriate processing flags"]:::main N_ValidateTrainExistsinSystem_Node3 -- Yes --> N_ValidateTrainExistsinSystem_Node3_action N_ValidateTrainExistsinSystem_Node3_action --> E_ValidateTrainExistsinSystem N_ValidateTrainExistsinSystem_Node2 -- No --> N_ValidateTrainExistsinSystem_Node3 N_ValidateTrainExistsinSystem_Node4{"The system validates the train
information from M10 segment"}:::decision N_ValidateTrainExistsinSystem_Node4_action["The system checks if the train
exists in GCWTL-TRAIN-LIST table"]:::main N_ValidateTrainExistsinSystem_Node4 -- Yes --> N_ValidateTrainExistsinSystem_Node4_action N_ValidateTrainExistsinSystem_Node4_action --> E_ValidateTrainExistsinSystem N_ValidateTrainExistsinSystem_Node3 -- No --> N_ValidateTrainExistsinSystem_Node4 N_ValidateTrainExistsinSystem_Node5{"The system processes the ULC
request and checks the train list
for the specified train"}:::decision N_ValidateTrainExistsinSystem_Node5_action["The system verifies train existence
in GCWTL-TRAIN-LIST and sets
appropriate validation flags"]:::main N_ValidateTrainExistsinSystem_Node5 -- Yes --> N_ValidateTrainExistsinSystem_Node5_action N_ValidateTrainExistsinSystem_Node5_action --> E_ValidateTrainExistsinSystem N_ValidateTrainExistsinSystem_Node4 -- No --> N_ValidateTrainExistsinSystem_Node5 N_ValidateTrainExistsinSystem_Node6{"The system validates the train
against the train list using vessel
name"}:::decision N_ValidateTrainExistsinSystem_Node6_action["The system determines if the train
exists and sets appropriate
processing flags"]:::main N_ValidateTrainExistsinSystem_Node6 -- Yes --> N_ValidateTrainExistsinSystem_Node6_action N_ValidateTrainExistsinSystem_Node6_action --> E_ValidateTrainExistsinSystem N_ValidateTrainExistsinSystem_Node5 -- No --> N_ValidateTrainExistsinSystem_Node6 N_ValidateTrainExistsinSystem_Node7{"The system attempts to validate the
train exists in the train list"}:::decision N_ValidateTrainExistsinSystem_Node7_action["The system checks the train list
database and sets train found or not
found status"]:::main N_ValidateTrainExistsinSystem_Node7 -- Yes --> N_ValidateTrainExistsinSystem_Node7_action N_ValidateTrainExistsinSystem_Node7_action --> E_ValidateTrainExistsinSystem N_ValidateTrainExistsinSystem_Node6 -- No --> N_ValidateTrainExistsinSystem_Node7 N_ValidateTrainExistsinSystem_Node8{"The system validates the train name
against the train list"}:::decision N_ValidateTrainExistsinSystem_Node8_action["If train is not found in
GCWTL-TRAIN-LIST, generate train not
found error and route to operations"]:::main N_ValidateTrainExistsinSystem_Node8 -- Yes --> N_ValidateTrainExistsinSystem_Node8_action N_ValidateTrainExistsinSystem_Node8_action --> E_ValidateTrainExistsinSystem N_ValidateTrainExistsinSystem_Node7 -- No --> N_ValidateTrainExistsinSystem_Node8 N_ValidateTrainExistsinSystem_Node9{"The system validates the train
existence"}:::decision N_ValidateTrainExistsinSystem_Node9_action["The system checks the train list to
confirm the train is registered in
the system"]:::main N_ValidateTrainExistsinSystem_Node9 -- Yes --> N_ValidateTrainExistsinSystem_Node9_action N_ValidateTrainExistsinSystem_Node9_action --> E_ValidateTrainExistsinSystem N_ValidateTrainExistsinSystem_Node8 -- No --> N_ValidateTrainExistsinSystem_Node9 N_ValidateTrainExistsinSystem_Node9 -- No --> E_ValidateTrainExistsinSystem
File: GCX016.cbl
GIVEN:
A V9 segment with HMI disposition code is received containing train identification information
WHEN:
The system processes the train hold request
THEN:
- The system validates the train exists in gcwtl-train-list
- Sets appropriate processing flags
File: GCX016.cbl
GIVEN:
An HRE disposition code is received for train hold release
WHEN:
The system processes the M10 manifest segment to validate train existence
THEN:
- The system checks if the vessel name exists in gcwtl-train-list
- Sets appropriate found/not found flags
File: GCX016.cbl
GIVEN:
A V9 segment with RC disposition code is received for export manifest review
WHEN:
The system processes the train validation
THEN:
- The system checks if the train exists in the system
- Sets appropriate flags
File: GCX016.cbl
GIVEN:
A V9 segment with OCA disposition code is received for a specific train
WHEN:
The system validates the train existence in the GCWTL-TRAIN-LIST
THEN:
- The system determines if the train is found or not found
- Sets appropriate processing flags
File: GCX016.cbl
GIVEN:
A train lock request is being processed
WHEN:
The system validates the train information from M10 segment
THEN:
The system checks if the train exists in GCWTL-TRAIN-LIST table
File: GCX016.cbl
GIVEN:
A V9 segment with ULC disposition code is received containing train identification information
WHEN:
- The system processes the ulc request
- Checks the train list for the specified train
THEN:
- The system verifies train existence in gcwtl-train-list
- Sets appropriate validation flags
File: GCX016.cbl
GIVEN:
A V9 segment with SEI disposition code is received for train seizure
WHEN:
The system validates the train against the train list using vessel name
THEN:
- The system determines if the train exists
- Sets appropriate processing flags
File: GCX016.cbl
GIVEN:
A V9 segment with SER disposition code is received for a train
WHEN:
The system attempts to validate the train exists in the train list
THEN:
- The system checks the train list database
- Sets train found or not found status
File: GCX016.cbl
GIVEN:
A V9 segment is received with POD or AAD disposition code for train arrival
WHEN:
The system validates the train name against the train list
THEN:
- If train is not found in gcwtl-train-list, generate train not found error
- Route to operations
File: GCX016.cbl
GIVEN:
A train arrival event is being processed with a vessel name
WHEN:
The system validates the train existence
THEN:
The system checks the train list to confirm the train is registered in the system
β Consolidated Acceptance Criteria
- The train is not found in the train list system → the system generates a train not found error message and stops further hold processing
- The train is not found in the system → the system generates a train not found error message and routes it to the Merlin error system
- The train validation fails → the system generates a train not found error message AND terminates the lock processing
- The train lookup validation fails and the train is not found in the system → the system generates a train not found error message and stops ULC processing without updating any train status
- The train is not found in the system train list → the system generates a train not found error message and terminates seizure processing
- The train is not found in the system → the system generates a train not found error message and stops processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GenerateTrainNotFoundErrorMessage(["Start Step"])
E_GenerateTrainNotFoundErrorMessage(["End Step"])
N_GenerateTrainNotFoundErrorMessage_Node0{"The train is not found in the train
list system"}:::decision N_GenerateTrainNotFoundErrorMessage_Node0_action["The system generates a train not
found error message and stops
further hold processing"]:::main N_GenerateTrainNotFoundErrorMessage_Node0 -- Yes --> N_GenerateTrainNotFoundErrorMessage_Node0_action N_GenerateTrainNotFoundErrorMessage_Node0_action --> E_GenerateTrainNotFoundErrorMessage S_GenerateTrainNotFoundErrorMessage --> N_GenerateTrainNotFoundErrorMessage_Node0 N_GenerateTrainNotFoundErrorMessage_Node1{"The train is not found in the
system"}:::decision N_GenerateTrainNotFoundErrorMessage_Node1_action["The system generates a train not
found error message and routes it to
the Merlin error system"]:::main N_GenerateTrainNotFoundErrorMessage_Node1 -- Yes --> N_GenerateTrainNotFoundErrorMessage_Node1_action N_GenerateTrainNotFoundErrorMessage_Node1_action --> E_GenerateTrainNotFoundErrorMessage N_GenerateTrainNotFoundErrorMessage_Node0 -- No --> N_GenerateTrainNotFoundErrorMessage_Node1 N_GenerateTrainNotFoundErrorMessage_Node2{"The train validation fails"}:::decision N_GenerateTrainNotFoundErrorMessage_Node2_action["The system generates a train not
found error message AND terminates
the lock processing"]:::main N_GenerateTrainNotFoundErrorMessage_Node2 -- Yes --> N_GenerateTrainNotFoundErrorMessage_Node2_action N_GenerateTrainNotFoundErrorMessage_Node2_action --> E_GenerateTrainNotFoundErrorMessage N_GenerateTrainNotFoundErrorMessage_Node1 -- No --> N_GenerateTrainNotFoundErrorMessage_Node2 N_GenerateTrainNotFoundErrorMessage_Node3{"The train lookup validation fails
and the train is not found in the
system"}:::decision N_GenerateTrainNotFoundErrorMessage_Node3_action["The system generates a train not
found error message and stops ULC
processing without updating any
train status"]:::main N_GenerateTrainNotFoundErrorMessage_Node3 -- Yes --> N_GenerateTrainNotFoundErrorMessage_Node3_action N_GenerateTrainNotFoundErrorMessage_Node3_action --> E_GenerateTrainNotFoundErrorMessage N_GenerateTrainNotFoundErrorMessage_Node2 -- No --> N_GenerateTrainNotFoundErrorMessage_Node3 N_GenerateTrainNotFoundErrorMessage_Node4{"The train is not found in the
system train list"}:::decision N_GenerateTrainNotFoundErrorMessage_Node4_action["The system generates a train not
found error message and terminates
seizure processing"]:::main N_GenerateTrainNotFoundErrorMessage_Node4 -- Yes --> N_GenerateTrainNotFoundErrorMessage_Node4_action N_GenerateTrainNotFoundErrorMessage_Node4_action --> E_GenerateTrainNotFoundErrorMessage N_GenerateTrainNotFoundErrorMessage_Node3 -- No --> N_GenerateTrainNotFoundErrorMessage_Node4 N_GenerateTrainNotFoundErrorMessage_Node5{"The train is not found in the
system"}:::decision N_GenerateTrainNotFoundErrorMessage_Node5_action["The system generates a train not
found error message and stops
processing"]:::main N_GenerateTrainNotFoundErrorMessage_Node5 -- Yes --> N_GenerateTrainNotFoundErrorMessage_Node5_action N_GenerateTrainNotFoundErrorMessage_Node5_action --> E_GenerateTrainNotFoundErrorMessage N_GenerateTrainNotFoundErrorMessage_Node4 -- No --> N_GenerateTrainNotFoundErrorMessage_Node5 N_GenerateTrainNotFoundErrorMessage_Node5 -- No --> E_GenerateTrainNotFoundErrorMessage
list system"}:::decision N_GenerateTrainNotFoundErrorMessage_Node0_action["The system generates a train not
found error message and stops
further hold processing"]:::main N_GenerateTrainNotFoundErrorMessage_Node0 -- Yes --> N_GenerateTrainNotFoundErrorMessage_Node0_action N_GenerateTrainNotFoundErrorMessage_Node0_action --> E_GenerateTrainNotFoundErrorMessage S_GenerateTrainNotFoundErrorMessage --> N_GenerateTrainNotFoundErrorMessage_Node0 N_GenerateTrainNotFoundErrorMessage_Node1{"The train is not found in the
system"}:::decision N_GenerateTrainNotFoundErrorMessage_Node1_action["The system generates a train not
found error message and routes it to
the Merlin error system"]:::main N_GenerateTrainNotFoundErrorMessage_Node1 -- Yes --> N_GenerateTrainNotFoundErrorMessage_Node1_action N_GenerateTrainNotFoundErrorMessage_Node1_action --> E_GenerateTrainNotFoundErrorMessage N_GenerateTrainNotFoundErrorMessage_Node0 -- No --> N_GenerateTrainNotFoundErrorMessage_Node1 N_GenerateTrainNotFoundErrorMessage_Node2{"The train validation fails"}:::decision N_GenerateTrainNotFoundErrorMessage_Node2_action["The system generates a train not
found error message AND terminates
the lock processing"]:::main N_GenerateTrainNotFoundErrorMessage_Node2 -- Yes --> N_GenerateTrainNotFoundErrorMessage_Node2_action N_GenerateTrainNotFoundErrorMessage_Node2_action --> E_GenerateTrainNotFoundErrorMessage N_GenerateTrainNotFoundErrorMessage_Node1 -- No --> N_GenerateTrainNotFoundErrorMessage_Node2 N_GenerateTrainNotFoundErrorMessage_Node3{"The train lookup validation fails
and the train is not found in the
system"}:::decision N_GenerateTrainNotFoundErrorMessage_Node3_action["The system generates a train not
found error message and stops ULC
processing without updating any
train status"]:::main N_GenerateTrainNotFoundErrorMessage_Node3 -- Yes --> N_GenerateTrainNotFoundErrorMessage_Node3_action N_GenerateTrainNotFoundErrorMessage_Node3_action --> E_GenerateTrainNotFoundErrorMessage N_GenerateTrainNotFoundErrorMessage_Node2 -- No --> N_GenerateTrainNotFoundErrorMessage_Node3 N_GenerateTrainNotFoundErrorMessage_Node4{"The train is not found in the
system train list"}:::decision N_GenerateTrainNotFoundErrorMessage_Node4_action["The system generates a train not
found error message and terminates
seizure processing"]:::main N_GenerateTrainNotFoundErrorMessage_Node4 -- Yes --> N_GenerateTrainNotFoundErrorMessage_Node4_action N_GenerateTrainNotFoundErrorMessage_Node4_action --> E_GenerateTrainNotFoundErrorMessage N_GenerateTrainNotFoundErrorMessage_Node3 -- No --> N_GenerateTrainNotFoundErrorMessage_Node4 N_GenerateTrainNotFoundErrorMessage_Node5{"The train is not found in the
system"}:::decision N_GenerateTrainNotFoundErrorMessage_Node5_action["The system generates a train not
found error message and stops
processing"]:::main N_GenerateTrainNotFoundErrorMessage_Node5 -- Yes --> N_GenerateTrainNotFoundErrorMessage_Node5_action N_GenerateTrainNotFoundErrorMessage_Node5_action --> E_GenerateTrainNotFoundErrorMessage N_GenerateTrainNotFoundErrorMessage_Node4 -- No --> N_GenerateTrainNotFoundErrorMessage_Node5 N_GenerateTrainNotFoundErrorMessage_Node5 -- No --> E_GenerateTrainNotFoundErrorMessage
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
A train hold operation is being processed and train validation has been performed
WHEN:
The train is not found in the train list system
THEN:
- The system generates a train not found error message
- Stops further hold processing
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
A V9 segment with RC disposition code is received AND the train validation has been performed
WHEN:
The train is not found in the system
THEN:
- The system generates a train not found error message
- Routes it to the merlin error system
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
A train lock operation is requested AND the train does not exist in the system
WHEN:
The train validation fails
THEN:
- The system generates a train not found error message
- Terminates the lock processing
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
A ULC disposition code is being processed for a specific train
WHEN:
- The train lookup validation fails
- The train is not found in the system
THEN:
- The system generates a train not found error message
- Stops ulc processing without updating any train status
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
A train seizure request is being processed
WHEN:
The train is not found in the system train list
THEN:
- The system generates a train not found error message
- Terminates seizure processing
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
A train seizure release is being processed
WHEN:
The train is not found in the system
THEN:
- The system generates a train not found error message
- Stops processing
β Consolidated Acceptance Criteria
- The train validation is successful → the system sets the train hold status flag to indicate the train is being held
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetTrainHoldStatusFlag(["Start Step"])
E_SetTrainHoldStatusFlag(["End Step"])
N_SetTrainHoldStatusFlag_Node0{"The train validation is successful"}:::decision
N_SetTrainHoldStatusFlag_Node0_action["The system sets the train hold
status flag to indicate the train is
being held"]:::main N_SetTrainHoldStatusFlag_Node0 -- Yes --> N_SetTrainHoldStatusFlag_Node0_action N_SetTrainHoldStatusFlag_Node0_action --> E_SetTrainHoldStatusFlag S_SetTrainHoldStatusFlag --> N_SetTrainHoldStatusFlag_Node0 N_SetTrainHoldStatusFlag_Node0 -- No --> E_SetTrainHoldStatusFlag
status flag to indicate the train is
being held"]:::main N_SetTrainHoldStatusFlag_Node0 -- Yes --> N_SetTrainHoldStatusFlag_Node0_action N_SetTrainHoldStatusFlag_Node0_action --> E_SetTrainHoldStatusFlag S_SetTrainHoldStatusFlag --> N_SetTrainHoldStatusFlag_Node0 N_SetTrainHoldStatusFlag_Node0 -- No --> E_SetTrainHoldStatusFlag
File: GCX016.cbl
GIVEN:
A valid train exists in the system and HMI disposition code is received
WHEN:
The train validation is successful
THEN:
The system sets the train hold status flag to indicate the train is being held
β Consolidated Acceptance Criteria
- The system prepares to process equipment holds → the system initializes the equipment hold counter to zero
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_InitializeEquipmentHoldCounter(["Start Step"])
E_InitializeEquipmentHoldCounter(["End Step"])
N_InitializeEquipmentHoldCounter_Node0{"The system prepares to process
equipment holds"}:::decision N_InitializeEquipmentHoldCounter_Node0_action["The system initializes the
equipment hold counter to zero"]:::main N_InitializeEquipmentHoldCounter_Node0 -- Yes --> N_InitializeEquipmentHoldCounter_Node0_action N_InitializeEquipmentHoldCounter_Node0_action --> E_InitializeEquipmentHoldCounter S_InitializeEquipmentHoldCounter --> N_InitializeEquipmentHoldCounter_Node0 N_InitializeEquipmentHoldCounter_Node0 -- No --> E_InitializeEquipmentHoldCounter
equipment holds"}:::decision N_InitializeEquipmentHoldCounter_Node0_action["The system initializes the
equipment hold counter to zero"]:::main N_InitializeEquipmentHoldCounter_Node0 -- Yes --> N_InitializeEquipmentHoldCounter_Node0_action N_InitializeEquipmentHoldCounter_Node0_action --> E_InitializeEquipmentHoldCounter S_InitializeEquipmentHoldCounter --> N_InitializeEquipmentHoldCounter_Node0 N_InitializeEquipmentHoldCounter_Node0 -- No --> E_InitializeEquipmentHoldCounter
File: GCX016.cbl
GIVEN:
Train hold status has been set successfully
WHEN:
The system prepares to process equipment holds
THEN:
The system initializes the equipment hold counter to zero
β Consolidated Acceptance Criteria
- The system checks for additional message segments → the system determines if VID segments are present for equipment-specific hold processing
- The system checks for following VID segments in the message → the system determines whether to process individual equipment seizure or proceed with train-level seizure
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_VIDSegmentsFollow(["Start Step"])
E_VIDSegmentsFollow(["End Step"])
N_VIDSegmentsFollow_Node0{"The system checks for additional
message segments"}:::decision N_VIDSegmentsFollow_Node0_action["The system determines if VID
segments are present for
equipment-specific hold processing"]:::main N_VIDSegmentsFollow_Node0 -- Yes --> N_VIDSegmentsFollow_Node0_action N_VIDSegmentsFollow_Node0_action --> E_VIDSegmentsFollow S_VIDSegmentsFollow --> N_VIDSegmentsFollow_Node0 N_VIDSegmentsFollow_Node1{"The system checks for following VID
segments in the message"}:::decision N_VIDSegmentsFollow_Node1_action["The system determines whether to
process individual equipment seizure
or proceed with train-level seizure"]:::main N_VIDSegmentsFollow_Node1 -- Yes --> N_VIDSegmentsFollow_Node1_action N_VIDSegmentsFollow_Node1_action --> E_VIDSegmentsFollow N_VIDSegmentsFollow_Node0 -- No --> N_VIDSegmentsFollow_Node1 N_VIDSegmentsFollow_Node1 -- No --> E_VIDSegmentsFollow
message segments"}:::decision N_VIDSegmentsFollow_Node0_action["The system determines if VID
segments are present for
equipment-specific hold processing"]:::main N_VIDSegmentsFollow_Node0 -- Yes --> N_VIDSegmentsFollow_Node0_action N_VIDSegmentsFollow_Node0_action --> E_VIDSegmentsFollow S_VIDSegmentsFollow --> N_VIDSegmentsFollow_Node0 N_VIDSegmentsFollow_Node1{"The system checks for following VID
segments in the message"}:::decision N_VIDSegmentsFollow_Node1_action["The system determines whether to
process individual equipment seizure
or proceed with train-level seizure"]:::main N_VIDSegmentsFollow_Node1 -- Yes --> N_VIDSegmentsFollow_Node1_action N_VIDSegmentsFollow_Node1_action --> E_VIDSegmentsFollow N_VIDSegmentsFollow_Node0 -- No --> N_VIDSegmentsFollow_Node1 N_VIDSegmentsFollow_Node1 -- No --> E_VIDSegmentsFollow
File: GCX016.cbl
GIVEN:
Train hold processing is in progress and equipment hold counter is initialized
WHEN:
The system checks for additional message segments
THEN:
The system determines if VID segments are present for equipment-specific hold processing
File: GCX016.cbl
GIVEN:
Train seizure processing is active
WHEN:
The system checks for following VID segments in the message
THEN:
The system determines whether to process individual equipment seizure or proceed with train-level seizure
β Consolidated Acceptance Criteria
- Each VID segment is processed → the system applies hold status to the specific equipment identified in the VID segment
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ProcessVIDSegmentforEquipmentHold(["Start Step"])
E_ProcessVIDSegmentforEquipmentHold(["End Step"])
N_ProcessVIDSegmentforEquipmentHold_Node0{"Each VID segment is processed"}:::decision
N_ProcessVIDSegmentforEquipmentHold_Node0_action["The system applies hold status to
the specific equipment identified in
the VID segment"]:::main N_ProcessVIDSegmentforEquipmentHold_Node0 -- Yes --> N_ProcessVIDSegmentforEquipmentHold_Node0_action N_ProcessVIDSegmentforEquipmentHold_Node0_action --> E_ProcessVIDSegmentforEquipmentHold S_ProcessVIDSegmentforEquipmentHold --> N_ProcessVIDSegmentforEquipmentHold_Node0 N_ProcessVIDSegmentforEquipmentHold_Node0 -- No --> E_ProcessVIDSegmentforEquipmentHold
the specific equipment identified in
the VID segment"]:::main N_ProcessVIDSegmentforEquipmentHold_Node0 -- Yes --> N_ProcessVIDSegmentforEquipmentHold_Node0_action N_ProcessVIDSegmentforEquipmentHold_Node0_action --> E_ProcessVIDSegmentforEquipmentHold S_ProcessVIDSegmentforEquipmentHold --> N_ProcessVIDSegmentforEquipmentHold_Node0 N_ProcessVIDSegmentforEquipmentHold_Node0 -- No --> E_ProcessVIDSegmentforEquipmentHold
File: GCX016.cbl
GIVEN:
VID segments are available and train hold is in progress
WHEN:
Each VID segment is processed
THEN:
The system applies hold status to the specific equipment identified in the VID segment
β Consolidated Acceptance Criteria
- The equipment hold is applied → the system increments the equipment hold counter by one
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IncrementEquipmentHoldCounter(["Start Step"])
E_IncrementEquipmentHoldCounter(["End Step"])
N_IncrementEquipmentHoldCounter_Node0{"The equipment hold is applied"}:::decision
N_IncrementEquipmentHoldCounter_Node0_action["The system increments the equipment
hold counter by one"]:::main N_IncrementEquipmentHoldCounter_Node0 -- Yes --> N_IncrementEquipmentHoldCounter_Node0_action N_IncrementEquipmentHoldCounter_Node0_action --> E_IncrementEquipmentHoldCounter S_IncrementEquipmentHoldCounter --> N_IncrementEquipmentHoldCounter_Node0 N_IncrementEquipmentHoldCounter_Node0 -- No --> E_IncrementEquipmentHoldCounter
hold counter by one"]:::main N_IncrementEquipmentHoldCounter_Node0 -- Yes --> N_IncrementEquipmentHoldCounter_Node0_action N_IncrementEquipmentHoldCounter_Node0_action --> E_IncrementEquipmentHoldCounter S_IncrementEquipmentHoldCounter --> N_IncrementEquipmentHoldCounter_Node0 N_IncrementEquipmentHoldCounter_Node0 -- No --> E_IncrementEquipmentHoldCounter
File: GCX016.cbl
GIVEN:
A VID segment has been successfully processed for equipment hold
WHEN:
The equipment hold is applied
THEN:
The system increments the equipment hold counter by one
β Consolidated Acceptance Criteria
- Train hold processing is ready for database update → the system updates the train record with hold status in the GCSTBRT table
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UpdateTrainRecordwithHoldStatus(["Start Step"])
E_UpdateTrainRecordwithHoldStatus(["End Step"])
N_UpdateTrainRecordwithHoldStatus_Node0{"Train hold processing is ready for
database update"}:::decision N_UpdateTrainRecordwithHoldStatus_Node0_action["The system updates the train record
with hold status in the GCSTBRT
table"]:::main N_UpdateTrainRecordwithHoldStatus_Node0 -- Yes --> N_UpdateTrainRecordwithHoldStatus_Node0_action N_UpdateTrainRecordwithHoldStatus_Node0_action --> E_UpdateTrainRecordwithHoldStatus S_UpdateTrainRecordwithHoldStatus --> N_UpdateTrainRecordwithHoldStatus_Node0 N_UpdateTrainRecordwithHoldStatus_Node0 -- No --> E_UpdateTrainRecordwithHoldStatus
database update"}:::decision N_UpdateTrainRecordwithHoldStatus_Node0_action["The system updates the train record
with hold status in the GCSTBRT
table"]:::main N_UpdateTrainRecordwithHoldStatus_Node0 -- Yes --> N_UpdateTrainRecordwithHoldStatus_Node0_action N_UpdateTrainRecordwithHoldStatus_Node0_action --> E_UpdateTrainRecordwithHoldStatus S_UpdateTrainRecordwithHoldStatus --> N_UpdateTrainRecordwithHoldStatus_Node0 N_UpdateTrainRecordwithHoldStatus_Node0 -- No --> E_UpdateTrainRecordwithHoldStatus
File: GCX016.cbl
GIVEN:
All VID segments have been processed or no VID segments exist
WHEN:
Train hold processing is ready for database update
THEN:
The system updates the train record with hold status in the GCSTBRT table
β Consolidated Acceptance Criteria
- The system finalizes the hold operation → the system updates the train record with the total number of equipment units held
- Each equipment hold is processed and released → the system updates the count of remaining equipment holds for the train
- The system updates the equipment hold tracking → the equipment hold count for the train is incremented by one
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UpdateEquipmentHoldCount(["Start Step"])
E_UpdateEquipmentHoldCount(["End Step"])
N_UpdateEquipmentHoldCount_Node0{"The system finalizes the hold
operation"}:::decision N_UpdateEquipmentHoldCount_Node0_action["The system updates the train record
with the total number of equipment
units held"]:::main N_UpdateEquipmentHoldCount_Node0 -- Yes --> N_UpdateEquipmentHoldCount_Node0_action N_UpdateEquipmentHoldCount_Node0_action --> E_UpdateEquipmentHoldCount S_UpdateEquipmentHoldCount --> N_UpdateEquipmentHoldCount_Node0 N_UpdateEquipmentHoldCount_Node1{"Each equipment hold is processed
and released"}:::decision N_UpdateEquipmentHoldCount_Node1_action["The system updates the count of
remaining equipment holds for the
train"]:::main N_UpdateEquipmentHoldCount_Node1 -- Yes --> N_UpdateEquipmentHoldCount_Node1_action N_UpdateEquipmentHoldCount_Node1_action --> E_UpdateEquipmentHoldCount N_UpdateEquipmentHoldCount_Node0 -- No --> N_UpdateEquipmentHoldCount_Node1 N_UpdateEquipmentHoldCount_Node2{"The system updates the equipment
hold tracking"}:::decision N_UpdateEquipmentHoldCount_Node2_action["The equipment hold count for the
train is incremented by one"]:::main N_UpdateEquipmentHoldCount_Node2 -- Yes --> N_UpdateEquipmentHoldCount_Node2_action N_UpdateEquipmentHoldCount_Node2_action --> E_UpdateEquipmentHoldCount N_UpdateEquipmentHoldCount_Node1 -- No --> N_UpdateEquipmentHoldCount_Node2 N_UpdateEquipmentHoldCount_Node2 -- No --> E_UpdateEquipmentHoldCount
operation"}:::decision N_UpdateEquipmentHoldCount_Node0_action["The system updates the train record
with the total number of equipment
units held"]:::main N_UpdateEquipmentHoldCount_Node0 -- Yes --> N_UpdateEquipmentHoldCount_Node0_action N_UpdateEquipmentHoldCount_Node0_action --> E_UpdateEquipmentHoldCount S_UpdateEquipmentHoldCount --> N_UpdateEquipmentHoldCount_Node0 N_UpdateEquipmentHoldCount_Node1{"Each equipment hold is processed
and released"}:::decision N_UpdateEquipmentHoldCount_Node1_action["The system updates the count of
remaining equipment holds for the
train"]:::main N_UpdateEquipmentHoldCount_Node1 -- Yes --> N_UpdateEquipmentHoldCount_Node1_action N_UpdateEquipmentHoldCount_Node1_action --> E_UpdateEquipmentHoldCount N_UpdateEquipmentHoldCount_Node0 -- No --> N_UpdateEquipmentHoldCount_Node1 N_UpdateEquipmentHoldCount_Node2{"The system updates the equipment
hold tracking"}:::decision N_UpdateEquipmentHoldCount_Node2_action["The equipment hold count for the
train is incremented by one"]:::main N_UpdateEquipmentHoldCount_Node2 -- Yes --> N_UpdateEquipmentHoldCount_Node2_action N_UpdateEquipmentHoldCount_Node2_action --> E_UpdateEquipmentHoldCount N_UpdateEquipmentHoldCount_Node1 -- No --> N_UpdateEquipmentHoldCount_Node2 N_UpdateEquipmentHoldCount_Node2 -- No --> E_UpdateEquipmentHoldCount
File: GCX016.cbl
GIVEN:
Train record has been updated with hold status and equipment hold counter contains final count
WHEN:
The system finalizes the hold operation
THEN:
The system updates the train record with the total number of equipment units held
File: GCX016.cbl
GIVEN:
Individual equipment items are being released from hold
WHEN:
- Each equipment hold is processed
- Released
THEN:
The system updates the count of remaining equipment holds for the train
File: GCX016.cbl
GIVEN:
A specific equipment has been successfully placed on hold
WHEN:
The system updates the equipment hold tracking
THEN:
The equipment hold count for the train is incremented by one
β Consolidated Acceptance Criteria
- The hold operation is complete → the system logs the train hold operation with train identification, hold status, and equipment count
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogTrainHoldOperation(["Start Step"])
E_LogTrainHoldOperation(["End Step"])
N_LogTrainHoldOperation_Node0{"The hold operation is complete"}:::decision
N_LogTrainHoldOperation_Node0_action["The system logs the train hold
operation with train identification,
hold status, and equipment count"]:::main N_LogTrainHoldOperation_Node0 -- Yes --> N_LogTrainHoldOperation_Node0_action N_LogTrainHoldOperation_Node0_action --> E_LogTrainHoldOperation S_LogTrainHoldOperation --> N_LogTrainHoldOperation_Node0 N_LogTrainHoldOperation_Node0 -- No --> E_LogTrainHoldOperation
operation with train identification,
hold status, and equipment count"]:::main N_LogTrainHoldOperation_Node0 -- Yes --> N_LogTrainHoldOperation_Node0_action N_LogTrainHoldOperation_Node0_action --> E_LogTrainHoldOperation S_LogTrainHoldOperation --> N_LogTrainHoldOperation_Node0 N_LogTrainHoldOperation_Node0 -- No --> E_LogTrainHoldOperation
File: GCX016.cbl
GIVEN:
Train record and equipment hold count have been updated successfully
WHEN:
The hold operation is complete
THEN:
The system logs the train hold operation with train identification, hold status, and equipment count
β Consolidated Acceptance Criteria
- The system prepares notifications → the system generates a hold notification message containing train and equipment hold details
- Notification is required for the hold action → the system should generate a hold notification message including cargo details, hold type, and location information
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GenerateHoldNotificationMessage(["Start Step"])
E_GenerateHoldNotificationMessage(["End Step"])
N_GenerateHoldNotificationMessage_Node0{"The system prepares notifications"}:::decision
N_GenerateHoldNotificationMessage_Node0_action["The system generates a hold
notification message containing
train and equipment hold details"]:::main N_GenerateHoldNotificationMessage_Node0 -- Yes --> N_GenerateHoldNotificationMessage_Node0_action N_GenerateHoldNotificationMessage_Node0_action --> E_GenerateHoldNotificationMessage S_GenerateHoldNotificationMessage --> N_GenerateHoldNotificationMessage_Node0 N_GenerateHoldNotificationMessage_Node1{"Notification is required for the
hold action"}:::decision N_GenerateHoldNotificationMessage_Node1_action["The system should generate a hold
notification message including cargo
details, hold type, and location
information"]:::main N_GenerateHoldNotificationMessage_Node1 -- Yes --> N_GenerateHoldNotificationMessage_Node1_action N_GenerateHoldNotificationMessage_Node1_action --> E_GenerateHoldNotificationMessage N_GenerateHoldNotificationMessage_Node0 -- No --> N_GenerateHoldNotificationMessage_Node1 N_GenerateHoldNotificationMessage_Node1 -- No --> E_GenerateHoldNotificationMessage
notification message containing
train and equipment hold details"]:::main N_GenerateHoldNotificationMessage_Node0 -- Yes --> N_GenerateHoldNotificationMessage_Node0_action N_GenerateHoldNotificationMessage_Node0_action --> E_GenerateHoldNotificationMessage S_GenerateHoldNotificationMessage --> N_GenerateHoldNotificationMessage_Node0 N_GenerateHoldNotificationMessage_Node1{"Notification is required for the
hold action"}:::decision N_GenerateHoldNotificationMessage_Node1_action["The system should generate a hold
notification message including cargo
details, hold type, and location
information"]:::main N_GenerateHoldNotificationMessage_Node1 -- Yes --> N_GenerateHoldNotificationMessage_Node1_action N_GenerateHoldNotificationMessage_Node1_action --> E_GenerateHoldNotificationMessage N_GenerateHoldNotificationMessage_Node0 -- No --> N_GenerateHoldNotificationMessage_Node1 N_GenerateHoldNotificationMessage_Node1 -- No --> E_GenerateHoldNotificationMessage
File: GCX016.cbl
GIVEN:
Train hold operation has been logged successfully
WHEN:
The system prepares notifications
THEN:
- The system generates a hold notification message containing train
- Equipment hold details
File: GCX016.cbl
GIVEN:
A hold has been successfully applied to cargo
WHEN:
Notification is required for the hold action
THEN:
The system should generate a hold notification message including cargo details, hold type, and location information
β Consolidated Acceptance Criteria
- The system sends notifications → the system transmits the hold notification to customs authorities and affected brokers
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SendMessagetoCustomsBrokers(["Start Step"])
E_SendMessagetoCustomsBrokers(["End Step"])
N_SendMessagetoCustomsBrokers_Node0{"The system sends notifications"}:::decision
N_SendMessagetoCustomsBrokers_Node0_action["The system transmits the hold
notification to customs authorities
and affected brokers"]:::main N_SendMessagetoCustomsBrokers_Node0 -- Yes --> N_SendMessagetoCustomsBrokers_Node0_action N_SendMessagetoCustomsBrokers_Node0_action --> E_SendMessagetoCustomsBrokers S_SendMessagetoCustomsBrokers --> N_SendMessagetoCustomsBrokers_Node0 N_SendMessagetoCustomsBrokers_Node0 -- No --> E_SendMessagetoCustomsBrokers
notification to customs authorities
and affected brokers"]:::main N_SendMessagetoCustomsBrokers_Node0 -- Yes --> N_SendMessagetoCustomsBrokers_Node0_action N_SendMessagetoCustomsBrokers_Node0_action --> E_SendMessagetoCustomsBrokers S_SendMessagetoCustomsBrokers --> N_SendMessagetoCustomsBrokers_Node0 N_SendMessagetoCustomsBrokers_Node0 -- No --> E_SendMessagetoCustomsBrokers
File: GCX016.cbl
GIVEN:
Hold notification message has been generated
WHEN:
The system sends notifications
THEN:
- The system transmits the hold notification to customs authorities
- Affected brokers
β Consolidated Acceptance Criteria
- The train is not found in GCWTL-TRAIN-LIST → the system generates a train not found error message and terminates HRE processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SendTrainNotFoundErrorMessage(["Start Step"])
E_SendTrainNotFoundErrorMessage(["End Step"])
N_SendTrainNotFoundErrorMessage_Node0{"The train is not found in
GCWTL-TRAIN-LIST"}:::decision N_SendTrainNotFoundErrorMessage_Node0_action["The system generates a train not
found error message and terminates
HRE processing"]:::main N_SendTrainNotFoundErrorMessage_Node0 -- Yes --> N_SendTrainNotFoundErrorMessage_Node0_action N_SendTrainNotFoundErrorMessage_Node0_action --> E_SendTrainNotFoundErrorMessage S_SendTrainNotFoundErrorMessage --> N_SendTrainNotFoundErrorMessage_Node0 N_SendTrainNotFoundErrorMessage_Node0 -- No --> E_SendTrainNotFoundErrorMessage
GCWTL-TRAIN-LIST"}:::decision N_SendTrainNotFoundErrorMessage_Node0_action["The system generates a train not
found error message and terminates
HRE processing"]:::main N_SendTrainNotFoundErrorMessage_Node0 -- Yes --> N_SendTrainNotFoundErrorMessage_Node0_action N_SendTrainNotFoundErrorMessage_Node0_action --> E_SendTrainNotFoundErrorMessage S_SendTrainNotFoundErrorMessage --> N_SendTrainNotFoundErrorMessage_Node0 N_SendTrainNotFoundErrorMessage_Node0 -- No --> E_SendTrainNotFoundErrorMessage
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
An HRE disposition code is being processed for train hold release
WHEN:
The train is not found in GCWTL-TRAIN-LIST
THEN:
- The system generates a train not found error message
- Terminates hre processing
β Consolidated Acceptance Criteria
- The system checks the train's current status → the system determines if the train is currently held and requires release processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CheckCurrentTrainHoldStatus(["Start Step"])
E_CheckCurrentTrainHoldStatus(["End Step"])
N_CheckCurrentTrainHoldStatus_Node0{"The system checks the train s
current status"}:::decision N_CheckCurrentTrainHoldStatus_Node0_action["The system determines if the train
is currently held and requires
release processing"]:::main N_CheckCurrentTrainHoldStatus_Node0 -- Yes --> N_CheckCurrentTrainHoldStatus_Node0_action N_CheckCurrentTrainHoldStatus_Node0_action --> E_CheckCurrentTrainHoldStatus S_CheckCurrentTrainHoldStatus --> N_CheckCurrentTrainHoldStatus_Node0 N_CheckCurrentTrainHoldStatus_Node0 -- No --> E_CheckCurrentTrainHoldStatus
current status"}:::decision N_CheckCurrentTrainHoldStatus_Node0_action["The system determines if the train
is currently held and requires
release processing"]:::main N_CheckCurrentTrainHoldStatus_Node0 -- Yes --> N_CheckCurrentTrainHoldStatus_Node0_action N_CheckCurrentTrainHoldStatus_Node0_action --> E_CheckCurrentTrainHoldStatus S_CheckCurrentTrainHoldStatus --> N_CheckCurrentTrainHoldStatus_Node0 N_CheckCurrentTrainHoldStatus_Node0 -- No --> E_CheckCurrentTrainHoldStatus
File: GCX016.cbl
GIVEN:
A valid train exists in the system for HRE processing
WHEN:
The system checks the train's current status
THEN:
- The system determines if the train is currently held
- Requires release processing
β Consolidated Acceptance Criteria
- VID segments are present in the message → the system processes each VID segment to release individual equipment holds
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ProcessVIDSegmentsforEquipmentRelease(["Start Step"])
E_ProcessVIDSegmentsforEquipmentRelease(["End Step"])
N_ProcessVIDSegmentsforEquipmentRelease_Node0{"VID segments are present in the
message"}:::decision N_ProcessVIDSegmentsforEquipmentRelease_Node0_action["The system processes each VID
segment to release individual
equipment holds"]:::main N_ProcessVIDSegmentsforEquipmentRelease_Node0 -- Yes --> N_ProcessVIDSegmentsforEquipmentRelease_Node0_action N_ProcessVIDSegmentsforEquipmentRelease_Node0_action --> E_ProcessVIDSegmentsforEquipmentRelease S_ProcessVIDSegmentsforEquipmentRelease --> N_ProcessVIDSegmentsforEquipmentRelease_Node0 N_ProcessVIDSegmentsforEquipmentRelease_Node0 -- No --> E_ProcessVIDSegmentsforEquipmentRelease
message"}:::decision N_ProcessVIDSegmentsforEquipmentRelease_Node0_action["The system processes each VID
segment to release individual
equipment holds"]:::main N_ProcessVIDSegmentsforEquipmentRelease_Node0 -- Yes --> N_ProcessVIDSegmentsforEquipmentRelease_Node0_action N_ProcessVIDSegmentsforEquipmentRelease_Node0_action --> E_ProcessVIDSegmentsforEquipmentRelease S_ProcessVIDSegmentsforEquipmentRelease --> N_ProcessVIDSegmentsforEquipmentRelease_Node0 N_ProcessVIDSegmentsforEquipmentRelease_Node0 -- No --> E_ProcessVIDSegmentsforEquipmentRelease
File: GCX016.cbl
GIVEN:
A train is currently held and HRE disposition code is being processed
WHEN:
VID segments are present in the message
THEN:
The system processes each VID segment to release individual equipment holds
β Consolidated Acceptance Criteria
- The system processes each equipment item in the VID segments → the system removes hold status from each specified equipment or car
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ReleaseIndividualEquipmentCars(["Start Step"])
E_ReleaseIndividualEquipmentCars(["End Step"])
N_ReleaseIndividualEquipmentCars_Node0{"The system processes each equipment
item in the VID segments"}:::decision N_ReleaseIndividualEquipmentCars_Node0_action["The system removes hold status from
each specified equipment or car"]:::main N_ReleaseIndividualEquipmentCars_Node0 -- Yes --> N_ReleaseIndividualEquipmentCars_Node0_action N_ReleaseIndividualEquipmentCars_Node0_action --> E_ReleaseIndividualEquipmentCars S_ReleaseIndividualEquipmentCars --> N_ReleaseIndividualEquipmentCars_Node0 N_ReleaseIndividualEquipmentCars_Node0 -- No --> E_ReleaseIndividualEquipmentCars
item in the VID segments"}:::decision N_ReleaseIndividualEquipmentCars_Node0_action["The system removes hold status from
each specified equipment or car"]:::main N_ReleaseIndividualEquipmentCars_Node0 -- Yes --> N_ReleaseIndividualEquipmentCars_Node0_action N_ReleaseIndividualEquipmentCars_Node0_action --> E_ReleaseIndividualEquipmentCars S_ReleaseIndividualEquipmentCars --> N_ReleaseIndividualEquipmentCars_Node0 N_ReleaseIndividualEquipmentCars_Node0 -- No --> E_ReleaseIndividualEquipmentCars
File: GCX016.cbl
GIVEN:
VID segments are present for equipment release processing
WHEN:
The system processes each equipment item in the VID segments
THEN:
The system removes hold status from each specified equipment or car
β Consolidated Acceptance Criteria
- If the remaining hold count → the system determines if all equipment has been released (hold count equals zero)
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AllEquipmentReleased(["Start Step"])
E_AllEquipmentReleased(["End Step"])
N_AllEquipmentReleased_Node0{"The system evaluates the remaining
hold count"}:::decision N_AllEquipmentReleased_Node0_action["The system determines if all
equipment has been released hold
count equals zero"]:::main N_AllEquipmentReleased_Node0 -- Yes --> N_AllEquipmentReleased_Node0_action N_AllEquipmentReleased_Node0_action --> E_AllEquipmentReleased S_AllEquipmentReleased --> N_AllEquipmentReleased_Node0 N_AllEquipmentReleased_Node0 -- No --> E_AllEquipmentReleased
hold count"}:::decision N_AllEquipmentReleased_Node0_action["The system determines if all
equipment has been released hold
count equals zero"]:::main N_AllEquipmentReleased_Node0 -- Yes --> N_AllEquipmentReleased_Node0_action N_AllEquipmentReleased_Node0_action --> E_AllEquipmentReleased S_AllEquipmentReleased --> N_AllEquipmentReleased_Node0 N_AllEquipmentReleased_Node0 -- No --> E_AllEquipmentReleased
File: GCX016.cbl
GIVEN:
Equipment hold counts have been updated after individual releases
WHEN:
The system evaluates the remaining hold count
THEN:
The system determines if all equipment has been released (hold count equals zero)
β Consolidated Acceptance Criteria
- The system processes train-level hold removal → the system removes the train-level hold status
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RemoveTrainLevelHoldStatus(["Start Step"])
E_RemoveTrainLevelHoldStatus(["End Step"])
N_RemoveTrainLevelHoldStatus_Node0{"The system processes train-level
hold removal"}:::decision N_RemoveTrainLevelHoldStatus_Node0_action["The system removes the train-level
hold status"]:::main N_RemoveTrainLevelHoldStatus_Node0 -- Yes --> N_RemoveTrainLevelHoldStatus_Node0_action N_RemoveTrainLevelHoldStatus_Node0_action --> E_RemoveTrainLevelHoldStatus S_RemoveTrainLevelHoldStatus --> N_RemoveTrainLevelHoldStatus_Node0 N_RemoveTrainLevelHoldStatus_Node0 -- No --> E_RemoveTrainLevelHoldStatus
hold removal"}:::decision N_RemoveTrainLevelHoldStatus_Node0_action["The system removes the train-level
hold status"]:::main N_RemoveTrainLevelHoldStatus_Node0 -- Yes --> N_RemoveTrainLevelHoldStatus_Node0_action N_RemoveTrainLevelHoldStatus_Node0_action --> E_RemoveTrainLevelHoldStatus S_RemoveTrainLevelHoldStatus --> N_RemoveTrainLevelHoldStatus_Node0 N_RemoveTrainLevelHoldStatus_Node0 -- No --> E_RemoveTrainLevelHoldStatus
File: GCX016.cbl
GIVEN:
All equipment on the train has been released from hold OR no VID segments were present
WHEN:
The system processes train-level hold removal
THEN:
The system removes the train-level hold status
β Consolidated Acceptance Criteria
- The system updates train operational status → the system sets the train status to released
- The system updates train status → train status is updated to released
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UpdateTrainStatustoReleased(["Start Step"])
E_UpdateTrainStatustoReleased(["End Step"])
N_UpdateTrainStatustoReleased_Node0{"The system updates train
operational status"}:::decision N_UpdateTrainStatustoReleased_Node0_action["The system sets the train status to
released"]:::main N_UpdateTrainStatustoReleased_Node0 -- Yes --> N_UpdateTrainStatustoReleased_Node0_action N_UpdateTrainStatustoReleased_Node0_action --> E_UpdateTrainStatustoReleased S_UpdateTrainStatustoReleased --> N_UpdateTrainStatustoReleased_Node0 N_UpdateTrainStatustoReleased_Node1{"The system updates train status"}:::decision N_UpdateTrainStatustoReleased_Node1_action["Train status is updated to released"]:::main N_UpdateTrainStatustoReleased_Node1 -- Yes --> N_UpdateTrainStatustoReleased_Node1_action N_UpdateTrainStatustoReleased_Node1_action --> E_UpdateTrainStatustoReleased N_UpdateTrainStatustoReleased_Node0 -- No --> N_UpdateTrainStatustoReleased_Node1 N_UpdateTrainStatustoReleased_Node1 -- No --> E_UpdateTrainStatustoReleased
operational status"}:::decision N_UpdateTrainStatustoReleased_Node0_action["The system sets the train status to
released"]:::main N_UpdateTrainStatustoReleased_Node0 -- Yes --> N_UpdateTrainStatustoReleased_Node0_action N_UpdateTrainStatustoReleased_Node0_action --> E_UpdateTrainStatustoReleased S_UpdateTrainStatustoReleased --> N_UpdateTrainStatustoReleased_Node0 N_UpdateTrainStatustoReleased_Node1{"The system updates train status"}:::decision N_UpdateTrainStatustoReleased_Node1_action["Train status is updated to released"]:::main N_UpdateTrainStatustoReleased_Node1 -- Yes --> N_UpdateTrainStatustoReleased_Node1_action N_UpdateTrainStatustoReleased_Node1_action --> E_UpdateTrainStatustoReleased N_UpdateTrainStatustoReleased_Node0 -- No --> N_UpdateTrainStatustoReleased_Node1 N_UpdateTrainStatustoReleased_Node1 -- No --> E_UpdateTrainStatustoReleased
File: GCX016.cbl
GIVEN:
Train-level hold status has been removed
WHEN:
The system updates train operational status
THEN:
The system sets the train status to released
File: GCX016.cbl
GIVEN:
No equipment remains held on the train
WHEN:
The system updates train status
THEN:
Train status is updated to released
β Consolidated Acceptance Criteria
- The system completes the release operation → the system logs the train release operation with relevant details
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogTrainReleaseOperation(["Start Step"])
E_LogTrainReleaseOperation(["End Step"])
N_LogTrainReleaseOperation_Node0{"The system completes the release
operation"}:::decision N_LogTrainReleaseOperation_Node0_action["The system logs the train release
operation with relevant details"]:::main N_LogTrainReleaseOperation_Node0 -- Yes --> N_LogTrainReleaseOperation_Node0_action N_LogTrainReleaseOperation_Node0_action --> E_LogTrainReleaseOperation S_LogTrainReleaseOperation --> N_LogTrainReleaseOperation_Node0 N_LogTrainReleaseOperation_Node0 -- No --> E_LogTrainReleaseOperation
operation"}:::decision N_LogTrainReleaseOperation_Node0_action["The system logs the train release
operation with relevant details"]:::main N_LogTrainReleaseOperation_Node0 -- Yes --> N_LogTrainReleaseOperation_Node0_action N_LogTrainReleaseOperation_Node0_action --> E_LogTrainReleaseOperation S_LogTrainReleaseOperation --> N_LogTrainReleaseOperation_Node0 N_LogTrainReleaseOperation_Node0 -- No --> E_LogTrainReleaseOperation
File: GCX016.cbl
GIVEN:
Train status has been updated to released
WHEN:
The system completes the release operation
THEN:
The system logs the train release operation with relevant details
β Consolidated Acceptance Criteria
- The system generates notifications → the system creates a train release notification message
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GenerateTrainReleaseNotification(["Start Step"])
E_GenerateTrainReleaseNotification(["End Step"])
N_GenerateTrainReleaseNotification_Node0{"The system generates notifications"}:::decision
N_GenerateTrainReleaseNotification_Node0_action["The system creates a train release
notification message"]:::main N_GenerateTrainReleaseNotification_Node0 -- Yes --> N_GenerateTrainReleaseNotification_Node0_action N_GenerateTrainReleaseNotification_Node0_action --> E_GenerateTrainReleaseNotification S_GenerateTrainReleaseNotification --> N_GenerateTrainReleaseNotification_Node0 N_GenerateTrainReleaseNotification_Node0 -- No --> E_GenerateTrainReleaseNotification
notification message"]:::main N_GenerateTrainReleaseNotification_Node0 -- Yes --> N_GenerateTrainReleaseNotification_Node0_action N_GenerateTrainReleaseNotification_Node0_action --> E_GenerateTrainReleaseNotification S_GenerateTrainReleaseNotification --> N_GenerateTrainReleaseNotification_Node0 N_GenerateTrainReleaseNotification_Node0 -- No --> E_GenerateTrainReleaseNotification
File: GCX016.cbl
GIVEN:
Train release operation has been logged
WHEN:
The system generates notifications
THEN:
The system creates a train release notification message
β Consolidated Acceptance Criteria
- The system sends response messages → the system transmits success message to the original requestor
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SendSuccessMessagetoRequestor(["Start Step"])
E_SendSuccessMessagetoRequestor(["End Step"])
N_SendSuccessMessagetoRequestor_Node0{"The system sends response messages"}:::decision
N_SendSuccessMessagetoRequestor_Node0_action["The system transmits success
message to the original requestor"]:::main N_SendSuccessMessagetoRequestor_Node0 -- Yes --> N_SendSuccessMessagetoRequestor_Node0_action N_SendSuccessMessagetoRequestor_Node0_action --> E_SendSuccessMessagetoRequestor S_SendSuccessMessagetoRequestor --> N_SendSuccessMessagetoRequestor_Node0 N_SendSuccessMessagetoRequestor_Node0 -- No --> E_SendSuccessMessagetoRequestor
message to the original requestor"]:::main N_SendSuccessMessagetoRequestor_Node0 -- Yes --> N_SendSuccessMessagetoRequestor_Node0_action N_SendSuccessMessagetoRequestor_Node0_action --> E_SendSuccessMessagetoRequestor S_SendSuccessMessagetoRequestor --> N_SendSuccessMessagetoRequestor_Node0 N_SendSuccessMessagetoRequestor_Node0 -- No --> E_SendSuccessMessagetoRequestor
File: GCX016.cbl
GIVEN:
Train release notification has been generated
WHEN:
The system sends response messages
THEN:
The system transmits success message to the original requestor
β Consolidated Acceptance Criteria
- The train is not currently held → the system bypasses release processing and completes without action
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_NoActionRequiredTrainNotHeld(["Start Step"])
E_NoActionRequiredTrainNotHeld(["End Step"])
N_NoActionRequiredTrainNotHeld_Node0{"The train is not currently held"}:::decision
N_NoActionRequiredTrainNotHeld_Node0_action["The system bypasses release
processing and completes without
action"]:::main N_NoActionRequiredTrainNotHeld_Node0 -- Yes --> N_NoActionRequiredTrainNotHeld_Node0_action N_NoActionRequiredTrainNotHeld_Node0_action --> E_NoActionRequiredTrainNotHeld S_NoActionRequiredTrainNotHeld --> N_NoActionRequiredTrainNotHeld_Node0 N_NoActionRequiredTrainNotHeld_Node0 -- No --> E_NoActionRequiredTrainNotHeld
processing and completes without
action"]:::main N_NoActionRequiredTrainNotHeld_Node0 -- Yes --> N_NoActionRequiredTrainNotHeld_Node0_action N_NoActionRequiredTrainNotHeld_Node0_action --> E_NoActionRequiredTrainNotHeld S_NoActionRequiredTrainNotHeld --> N_NoActionRequiredTrainNotHeld_Node0 N_NoActionRequiredTrainNotHeld_Node0 -- No --> E_NoActionRequiredTrainNotHeld
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
A valid train exists in the system for HRE processing
WHEN:
The train is not currently held
THEN:
- The system bypasses release processing
- Completes without action
β Consolidated Acceptance Criteria
- The disposition code is either POD or AAD → the system routes to appropriate train arrival processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_DispositionCodeType(["Start Step"])
E_DispositionCodeType(["End Step"])
N_DispositionCodeType_Node0{"The disposition code is either POD
or AAD"}:::decision N_DispositionCodeType_Node0_action["The system routes to appropriate
train arrival processing"]:::main N_DispositionCodeType_Node0 -- Yes --> N_DispositionCodeType_Node0_action N_DispositionCodeType_Node0_action --> E_DispositionCodeType S_DispositionCodeType --> N_DispositionCodeType_Node0 N_DispositionCodeType_Node0 -- No --> E_DispositionCodeType
or AAD"}:::decision N_DispositionCodeType_Node0_action["The system routes to appropriate
train arrival processing"]:::main N_DispositionCodeType_Node0 -- Yes --> N_DispositionCodeType_Node0_action N_DispositionCodeType_Node0_action --> E_DispositionCodeType S_DispositionCodeType --> N_DispositionCodeType_Node0 N_DispositionCodeType_Node0 -- No --> E_DispositionCodeType
File: GCX016.cbl
GIVEN:
A V9 event segment is received with disposition code
WHEN:
The disposition code is either POD or AAD
THEN:
The system routes to appropriate train arrival processing
β Consolidated Acceptance Criteria
- The system checks if the train exists in the database → if train is not found, generate train not found error and stop processing
- If the train found status → if train is found, proceed with not arrived notification processing, otherwise skip processing
- The system checks the lookup result → processing continues if train is found or error is logged if train is not found
- The search results are evaluated → if train is found, proceed with pre-arrival processing; if not found, generate error message
- The system validates the train name against the train list database → if the train exists, proceed with equipment processing; if not found, generate train not found error and terminate AEI processing
- The validation result is evaluated → if train is found, proceed with arrival processing; if not found, generate error
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_TrainFound(["Start Step"])
E_TrainFound(["End Step"])
N_TrainFound_Node0{"The system checks if the train
exists in the database"}:::decision N_TrainFound_Node0_action["If train is not found, generate
train not found error and stop
processing"]:::main N_TrainFound_Node0 -- Yes --> N_TrainFound_Node0_action N_TrainFound_Node0_action --> E_TrainFound S_TrainFound --> N_TrainFound_Node0 N_TrainFound_Node1{"The system evaluates the train
found status"}:::decision N_TrainFound_Node1_action["If train is found, proceed with not
arrived notification processing,
otherwise skip processing"]:::main N_TrainFound_Node1 -- Yes --> N_TrainFound_Node1_action N_TrainFound_Node1_action --> E_TrainFound N_TrainFound_Node0 -- No --> N_TrainFound_Node1 N_TrainFound_Node2{"The system checks the lookup result"}:::decision N_TrainFound_Node2_action["Processing continues if train is
found or error is logged if train is
not found"]:::main N_TrainFound_Node2 -- Yes --> N_TrainFound_Node2_action N_TrainFound_Node2_action --> E_TrainFound N_TrainFound_Node1 -- No --> N_TrainFound_Node2 N_TrainFound_Node3{"The search results are evaluated"}:::decision N_TrainFound_Node3_action["If train is found, proceed with
pre-arrival processing if not found,
generate error message"]:::main N_TrainFound_Node3 -- Yes --> N_TrainFound_Node3_action N_TrainFound_Node3_action --> E_TrainFound N_TrainFound_Node2 -- No --> N_TrainFound_Node3 N_TrainFound_Node4{"The system validates the train name
against the train list database"}:::decision N_TrainFound_Node4_action["If the train exists, proceed with
equipment processing if not found,
generate train not found error and
terminate AEI processing"]:::exclusion N_TrainFound_Node4 -- Yes -->|Alternative| N_TrainFound_Node4_action N_TrainFound_Node4_action --> E_TrainFound N_TrainFound_Node3 -- No --> N_TrainFound_Node4 N_TrainFound_Node5{"The validation result is evaluated"}:::decision N_TrainFound_Node5_action["If train is found, proceed with
arrival processing if not found,
generate error"]:::main N_TrainFound_Node5 -- Yes --> N_TrainFound_Node5_action N_TrainFound_Node5_action --> E_TrainFound N_TrainFound_Node4 -- No --> N_TrainFound_Node5 N_TrainFound_Node5 -- No --> E_TrainFound
exists in the database"}:::decision N_TrainFound_Node0_action["If train is not found, generate
train not found error and stop
processing"]:::main N_TrainFound_Node0 -- Yes --> N_TrainFound_Node0_action N_TrainFound_Node0_action --> E_TrainFound S_TrainFound --> N_TrainFound_Node0 N_TrainFound_Node1{"The system evaluates the train
found status"}:::decision N_TrainFound_Node1_action["If train is found, proceed with not
arrived notification processing,
otherwise skip processing"]:::main N_TrainFound_Node1 -- Yes --> N_TrainFound_Node1_action N_TrainFound_Node1_action --> E_TrainFound N_TrainFound_Node0 -- No --> N_TrainFound_Node1 N_TrainFound_Node2{"The system checks the lookup result"}:::decision N_TrainFound_Node2_action["Processing continues if train is
found or error is logged if train is
not found"]:::main N_TrainFound_Node2 -- Yes --> N_TrainFound_Node2_action N_TrainFound_Node2_action --> E_TrainFound N_TrainFound_Node1 -- No --> N_TrainFound_Node2 N_TrainFound_Node3{"The search results are evaluated"}:::decision N_TrainFound_Node3_action["If train is found, proceed with
pre-arrival processing if not found,
generate error message"]:::main N_TrainFound_Node3 -- Yes --> N_TrainFound_Node3_action N_TrainFound_Node3_action --> E_TrainFound N_TrainFound_Node2 -- No --> N_TrainFound_Node3 N_TrainFound_Node4{"The system validates the train name
against the train list database"}:::decision N_TrainFound_Node4_action["If the train exists, proceed with
equipment processing if not found,
generate train not found error and
terminate AEI processing"]:::exclusion N_TrainFound_Node4 -- Yes -->|Alternative| N_TrainFound_Node4_action N_TrainFound_Node4_action --> E_TrainFound N_TrainFound_Node3 -- No --> N_TrainFound_Node4 N_TrainFound_Node5{"The validation result is evaluated"}:::decision N_TrainFound_Node5_action["If train is found, proceed with
arrival processing if not found,
generate error"]:::main N_TrainFound_Node5 -- Yes --> N_TrainFound_Node5_action N_TrainFound_Node5_action --> E_TrainFound N_TrainFound_Node4 -- No --> N_TrainFound_Node5 N_TrainFound_Node5 -- No --> E_TrainFound
File: GCX016.cbl
GIVEN:
A train arrival event is being processed
WHEN:
The system checks if the train exists in the database
THEN:
- If train is not found, generate train not found error
- Stop processing
File: GCX016.cbl
GIVEN:
Train existence validation has been completed for OCA disposition code processing
WHEN:
The system evaluates the train found status
THEN:
If train is found, proceed with not arrived notification processing, otherwise skip processing
File: GCX016.cbl
GIVEN:
A train record lookup has been performed
WHEN:
The system checks the lookup result
THEN:
Processing continues if train is found or error is logged if train is not found
File: GCX016.cbl
GIVEN:
The system has searched for the train in GCWTL-TRAIN-LIST
WHEN:
The search results are evaluated
THEN:
If train is found, proceed with pre-arrival processing; if not found, generate error message
File: GCX016.cbl
GIVEN:
A train arrival event (POD or AAD) is being processed
WHEN:
The system validates the train name against the train list database
THEN:
- If the train exists, proceed with equipment processing; if not found, generate train not found error
- Terminate aei processing
File: GCX016.cbl
GIVEN:
Train existence validation has been performed
WHEN:
The validation result is evaluated
THEN:
If train is found, proceed with arrival processing; if not found, generate error
β Consolidated Acceptance Criteria
- The port is configured for export manifest processing → set pre-arrival status for export processing instead of standard arrival status
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExportManifestPort(["Start Step"])
E_ExportManifestPort(["End Step"])
N_ExportManifestPort_Node0{"The port is configured for export
manifest processing"}:::decision N_ExportManifestPort_Node0_action["Set pre-arrival status for export
processing instead of standard
arrival status"]:::main N_ExportManifestPort_Node0 -- Yes --> N_ExportManifestPort_Node0_action N_ExportManifestPort_Node0_action --> E_ExportManifestPort S_ExportManifestPort --> N_ExportManifestPort_Node0 N_ExportManifestPort_Node0 -- No --> E_ExportManifestPort
manifest processing"}:::decision N_ExportManifestPort_Node0_action["Set pre-arrival status for export
processing instead of standard
arrival status"]:::main N_ExportManifestPort_Node0 -- Yes --> N_ExportManifestPort_Node0_action N_ExportManifestPort_Node0_action --> E_ExportManifestPort S_ExportManifestPort --> N_ExportManifestPort_Node0 N_ExportManifestPort_Node0 -- No --> E_ExportManifestPort
File: GCX016.cbl
GIVEN:
A train arrival is being processed at a specific port
WHEN:
The port is configured for export manifest processing
THEN:
Set pre-arrival status for export processing instead of standard arrival status
β Consolidated Acceptance Criteria
- The train exists and port configuration is validated → update the train record with the current arrival date and time
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UpdateTrainArrivalDate(["Start Step"])
E_UpdateTrainArrivalDate(["End Step"])
N_UpdateTrainArrivalDate_Node0{"The train exists and port
configuration is validated"}:::decision N_UpdateTrainArrivalDate_Node0_action["Update the train record with the
current arrival date and time"]:::main N_UpdateTrainArrivalDate_Node0 -- Yes --> N_UpdateTrainArrivalDate_Node0_action N_UpdateTrainArrivalDate_Node0_action --> E_UpdateTrainArrivalDate S_UpdateTrainArrivalDate --> N_UpdateTrainArrivalDate_Node0 N_UpdateTrainArrivalDate_Node0 -- No --> E_UpdateTrainArrivalDate
configuration is validated"}:::decision N_UpdateTrainArrivalDate_Node0_action["Update the train record with the
current arrival date and time"]:::main N_UpdateTrainArrivalDate_Node0 -- Yes --> N_UpdateTrainArrivalDate_Node0_action N_UpdateTrainArrivalDate_Node0_action --> E_UpdateTrainArrivalDate S_UpdateTrainArrivalDate --> N_UpdateTrainArrivalDate_Node0 N_UpdateTrainArrivalDate_Node0 -- No --> E_UpdateTrainArrivalDate
File: GCX016.cbl
GIVEN:
A valid train arrival event is being processed
WHEN:
- The train exists
- Port configuration is validated
THEN:
- Update the train record with the current arrival date
- Time
β Consolidated Acceptance Criteria
- All arrival validations pass successfully → update the train status to 'Arrived' in the system
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetTrainStatustoArrived(["Start Step"])
E_SetTrainStatustoArrived(["End Step"])
N_SetTrainStatustoArrived_Node0{"All arrival validations pass
successfully"}:::decision N_SetTrainStatustoArrived_Node0_action["Update the train status to Arrived
in the system"]:::main N_SetTrainStatustoArrived_Node0 -- Yes --> N_SetTrainStatustoArrived_Node0_action N_SetTrainStatustoArrived_Node0_action --> E_SetTrainStatustoArrived S_SetTrainStatustoArrived --> N_SetTrainStatustoArrived_Node0 N_SetTrainStatustoArrived_Node0 -- No --> E_SetTrainStatustoArrived
successfully"}:::decision N_SetTrainStatustoArrived_Node0_action["Update the train status to Arrived
in the system"]:::main N_SetTrainStatustoArrived_Node0 -- Yes --> N_SetTrainStatustoArrived_Node0_action N_SetTrainStatustoArrived_Node0_action --> E_SetTrainStatustoArrived S_SetTrainStatustoArrived --> N_SetTrainStatustoArrived_Node0 N_SetTrainStatustoArrived_Node0 -- No --> E_SetTrainStatustoArrived
File: GCX016.cbl
GIVEN:
A train arrival event has been validated and processed
WHEN:
All arrival validations pass successfully
THEN:
Update the train status to 'Arrived' in the system
β Consolidated Acceptance Criteria
- The train status is being updated to arrived → automatically unlock the train to allow normal processing operations
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AutomaticallyUnlockTrainonArrival(["Start Step"])
E_AutomaticallyUnlockTrainonArrival(["End Step"])
N_AutomaticallyUnlockTrainonArrival_Node0{"The train status is being updated
to arrived"}:::decision N_AutomaticallyUnlockTrainonArrival_Node0_action["Automatically unlock the train to
allow normal processing operations"]:::main N_AutomaticallyUnlockTrainonArrival_Node0 -- Yes --> N_AutomaticallyUnlockTrainonArrival_Node0_action N_AutomaticallyUnlockTrainonArrival_Node0_action --> E_AutomaticallyUnlockTrainonArrival S_AutomaticallyUnlockTrainonArrival --> N_AutomaticallyUnlockTrainonArrival_Node0 N_AutomaticallyUnlockTrainonArrival_Node0 -- No --> E_AutomaticallyUnlockTrainonArrival
to arrived"}:::decision N_AutomaticallyUnlockTrainonArrival_Node0_action["Automatically unlock the train to
allow normal processing operations"]:::main N_AutomaticallyUnlockTrainonArrival_Node0 -- Yes --> N_AutomaticallyUnlockTrainonArrival_Node0_action N_AutomaticallyUnlockTrainonArrival_Node0_action --> E_AutomaticallyUnlockTrainonArrival S_AutomaticallyUnlockTrainonArrival --> N_AutomaticallyUnlockTrainonArrival_Node0 N_AutomaticallyUnlockTrainonArrival_Node0 -- No --> E_AutomaticallyUnlockTrainonArrival
File: GCX016.cbl
GIVEN:
A train is arriving and has been previously locked
WHEN:
The train status is being updated to arrived
THEN:
Automatically unlock the train to allow normal processing operations
β Consolidated Acceptance Criteria
- The train arrival processing is updating equipment status → maintain the existing hold or seizure status and do not change to normal arrival status
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MaintainEquipmentStatus(["Start Step"])
E_MaintainEquipmentStatus(["End Step"])
N_MaintainEquipmentStatus_Node0{"The train arrival processing is
updating equipment status"}:::decision N_MaintainEquipmentStatus_Node0_action["Maintain the existing hold or
seizure status and do not change to
normal arrival status"]:::main N_MaintainEquipmentStatus_Node0 -- Yes --> N_MaintainEquipmentStatus_Node0_action N_MaintainEquipmentStatus_Node0_action --> E_MaintainEquipmentStatus S_MaintainEquipmentStatus --> N_MaintainEquipmentStatus_Node0 N_MaintainEquipmentStatus_Node0 -- No --> E_MaintainEquipmentStatus
updating equipment status"}:::decision N_MaintainEquipmentStatus_Node0_action["Maintain the existing hold or
seizure status and do not change to
normal arrival status"]:::main N_MaintainEquipmentStatus_Node0 -- Yes --> N_MaintainEquipmentStatus_Node0_action N_MaintainEquipmentStatus_Node0_action --> E_MaintainEquipmentStatus S_MaintainEquipmentStatus --> N_MaintainEquipmentStatus_Node0 N_MaintainEquipmentStatus_Node0 -- No --> E_MaintainEquipmentStatus
File: GCX016.cbl
GIVEN:
Equipment on an arriving train has hold or seizure status
WHEN:
The train arrival processing is updating equipment status
THEN:
- Maintain the existing hold or seizure status
- Do not change to normal arrival status
β Consolidated Acceptance Criteria
- Equipment status updates are complete → generate and send AEI arrival notifications to relevant systems
- The system prepares external notifications → generate AEI arrival notification message for transmission to external systems
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GenerateAEIArrivalNotification(["Start Step"])
E_GenerateAEIArrivalNotification(["End Step"])
N_GenerateAEIArrivalNotification_Node0{"Equipment status updates are
complete"}:::decision N_GenerateAEIArrivalNotification_Node0_action["Generate and send AEI arrival
notifications to relevant systems"]:::main N_GenerateAEIArrivalNotification_Node0 -- Yes --> N_GenerateAEIArrivalNotification_Node0_action N_GenerateAEIArrivalNotification_Node0_action --> E_GenerateAEIArrivalNotification S_GenerateAEIArrivalNotification --> N_GenerateAEIArrivalNotification_Node0 N_GenerateAEIArrivalNotification_Node1{"The system prepares external
notifications"}:::decision N_GenerateAEIArrivalNotification_Node1_action["Generate AEI arrival notification
message for transmission to external
systems"]:::main N_GenerateAEIArrivalNotification_Node1 -- Yes --> N_GenerateAEIArrivalNotification_Node1_action N_GenerateAEIArrivalNotification_Node1_action --> E_GenerateAEIArrivalNotification N_GenerateAEIArrivalNotification_Node0 -- No --> N_GenerateAEIArrivalNotification_Node1 N_GenerateAEIArrivalNotification_Node1 -- No --> E_GenerateAEIArrivalNotification
complete"}:::decision N_GenerateAEIArrivalNotification_Node0_action["Generate and send AEI arrival
notifications to relevant systems"]:::main N_GenerateAEIArrivalNotification_Node0 -- Yes --> N_GenerateAEIArrivalNotification_Node0_action N_GenerateAEIArrivalNotification_Node0_action --> E_GenerateAEIArrivalNotification S_GenerateAEIArrivalNotification --> N_GenerateAEIArrivalNotification_Node0 N_GenerateAEIArrivalNotification_Node1{"The system prepares external
notifications"}:::decision N_GenerateAEIArrivalNotification_Node1_action["Generate AEI arrival notification
message for transmission to external
systems"]:::main N_GenerateAEIArrivalNotification_Node1 -- Yes --> N_GenerateAEIArrivalNotification_Node1_action N_GenerateAEIArrivalNotification_Node1_action --> E_GenerateAEIArrivalNotification N_GenerateAEIArrivalNotification_Node0 -- No --> N_GenerateAEIArrivalNotification_Node1 N_GenerateAEIArrivalNotification_Node1 -- No --> E_GenerateAEIArrivalNotification
File: GCX016.cbl
GIVEN:
A train has successfully arrived and equipment has been processed
WHEN:
Equipment status updates are complete
THEN:
- Generate
- Send aei arrival notifications to relevant systems
File: GCX016.cbl
GIVEN:
Train arrival processing is complete and train lock has been removed if required
WHEN:
The system prepares external notifications
THEN:
Generate AEI arrival notification message for transmission to external systems
β Consolidated Acceptance Criteria
- Train arrival processing is complete → update all associated manifest records to reflect train arrival status
- The system updates manifest status → the manifest status is updated to reflect successful processing and integration
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UpdateManifestStatus(["Start Step"])
E_UpdateManifestStatus(["End Step"])
N_UpdateManifestStatus_Node0{"Train arrival processing is
complete"}:::decision N_UpdateManifestStatus_Node0_action["Update all associated manifest
records to reflect train arrival
status"]:::main N_UpdateManifestStatus_Node0 -- Yes --> N_UpdateManifestStatus_Node0_action N_UpdateManifestStatus_Node0_action --> E_UpdateManifestStatus S_UpdateManifestStatus --> N_UpdateManifestStatus_Node0 N_UpdateManifestStatus_Node1{"The system updates manifest status"}:::decision N_UpdateManifestStatus_Node1_action["The manifest status is updated to
reflect successful processing and
integration"]:::main N_UpdateManifestStatus_Node1 -- Yes --> N_UpdateManifestStatus_Node1_action N_UpdateManifestStatus_Node1_action --> E_UpdateManifestStatus N_UpdateManifestStatus_Node0 -- No --> N_UpdateManifestStatus_Node1 N_UpdateManifestStatus_Node1 -- No --> E_UpdateManifestStatus
complete"}:::decision N_UpdateManifestStatus_Node0_action["Update all associated manifest
records to reflect train arrival
status"]:::main N_UpdateManifestStatus_Node0 -- Yes --> N_UpdateManifestStatus_Node0_action N_UpdateManifestStatus_Node0_action --> E_UpdateManifestStatus S_UpdateManifestStatus --> N_UpdateManifestStatus_Node0 N_UpdateManifestStatus_Node1{"The system updates manifest status"}:::decision N_UpdateManifestStatus_Node1_action["The manifest status is updated to
reflect successful processing and
integration"]:::main N_UpdateManifestStatus_Node1 -- Yes --> N_UpdateManifestStatus_Node1_action N_UpdateManifestStatus_Node1_action --> E_UpdateManifestStatus N_UpdateManifestStatus_Node0 -- No --> N_UpdateManifestStatus_Node1 N_UpdateManifestStatus_Node1 -- No --> E_UpdateManifestStatus
File: GCX016.cbl
GIVEN:
A train with associated manifests has arrived
WHEN:
Train arrival processing is complete
THEN:
Update all associated manifest records to reflect train arrival status
File: GCX016.cbl
GIVEN:
Manifest information has been successfully integrated into cargo record
WHEN:
The system updates manifest status
THEN:
- The manifest status is updated to reflect successful processing
- Integration
β Consolidated Acceptance Criteria
- All internal processing is complete → send arrival notifications to customs authorities for regulatory compliance
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SendArrivalNotificationstoCustoms(["Start Step"])
E_SendArrivalNotificationstoCustoms(["End Step"])
N_SendArrivalNotificationstoCustoms_Node0{"All internal processing is complete"}:::decision
N_SendArrivalNotificationstoCustoms_Node0_action["Send arrival notifications to
customs authorities for regulatory
compliance"]:::main N_SendArrivalNotificationstoCustoms_Node0 -- Yes --> N_SendArrivalNotificationstoCustoms_Node0_action N_SendArrivalNotificationstoCustoms_Node0_action --> E_SendArrivalNotificationstoCustoms S_SendArrivalNotificationstoCustoms --> N_SendArrivalNotificationstoCustoms_Node0 N_SendArrivalNotificationstoCustoms_Node0 -- No --> E_SendArrivalNotificationstoCustoms
customs authorities for regulatory
compliance"]:::main N_SendArrivalNotificationstoCustoms_Node0 -- Yes --> N_SendArrivalNotificationstoCustoms_Node0_action N_SendArrivalNotificationstoCustoms_Node0_action --> E_SendArrivalNotificationstoCustoms S_SendArrivalNotificationstoCustoms --> N_SendArrivalNotificationstoCustoms_Node0 N_SendArrivalNotificationstoCustoms_Node0 -- No --> E_SendArrivalNotificationstoCustoms
File: GCX016.cbl
GIVEN:
A train arrival has been processed and manifest status updated
WHEN:
All internal processing is complete
THEN:
Send arrival notifications to customs authorities for regulatory compliance
β Consolidated Acceptance Criteria
- All notifications have been sent to customs → log the complete train arrival event with timestamp and details for audit trail
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogTrainArrivalEvent(["Start Step"])
E_LogTrainArrivalEvent(["End Step"])
N_LogTrainArrivalEvent_Node0{"All notifications have been sent to
customs"}:::decision N_LogTrainArrivalEvent_Node0_action["Log the complete train arrival
event with timestamp and details for
audit trail"]:::main N_LogTrainArrivalEvent_Node0 -- Yes --> N_LogTrainArrivalEvent_Node0_action N_LogTrainArrivalEvent_Node0_action --> E_LogTrainArrivalEvent S_LogTrainArrivalEvent --> N_LogTrainArrivalEvent_Node0 N_LogTrainArrivalEvent_Node0 -- No --> E_LogTrainArrivalEvent
customs"}:::decision N_LogTrainArrivalEvent_Node0_action["Log the complete train arrival
event with timestamp and details for
audit trail"]:::main N_LogTrainArrivalEvent_Node0 -- Yes --> N_LogTrainArrivalEvent_Node0_action N_LogTrainArrivalEvent_Node0_action --> E_LogTrainArrivalEvent S_LogTrainArrivalEvent --> N_LogTrainArrivalEvent_Node0 N_LogTrainArrivalEvent_Node0 -- No --> E_LogTrainArrivalEvent
File: GCX016.cbl
GIVEN:
A train arrival event has been completely processed
WHEN:
All notifications have been sent to customs
THEN:
- Log the complete train arrival event with timestamp
- Details for audit trail
β Consolidated Acceptance Criteria
- The system processes the RC disposition code → the system initiates export manifest review complete processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ProcessRCExportManifestReviewComplete(["Start Step"])
E_ProcessRCExportManifestReviewComplete(["End Step"])
N_ProcessRCExportManifestReviewComplete_Node0{"The system processes the RC
disposition code"}:::decision N_ProcessRCExportManifestReviewComplete_Node0_action["The system initiates export
manifest review complete processing"]:::main N_ProcessRCExportManifestReviewComplete_Node0 -- Yes --> N_ProcessRCExportManifestReviewComplete_Node0_action N_ProcessRCExportManifestReviewComplete_Node0_action --> E_ProcessRCExportManifestReviewComplete S_ProcessRCExportManifestReviewComplete --> N_ProcessRCExportManifestReviewComplete_Node0 N_ProcessRCExportManifestReviewComplete_Node0 -- No --> E_ProcessRCExportManifestReviewComplete
disposition code"}:::decision N_ProcessRCExportManifestReviewComplete_Node0_action["The system initiates export
manifest review complete processing"]:::main N_ProcessRCExportManifestReviewComplete_Node0 -- Yes --> N_ProcessRCExportManifestReviewComplete_Node0_action N_ProcessRCExportManifestReviewComplete_Node0_action --> E_ProcessRCExportManifestReviewComplete S_ProcessRCExportManifestReviewComplete --> N_ProcessRCExportManifestReviewComplete_Node0 N_ProcessRCExportManifestReviewComplete_Node0 -- No --> E_ProcessRCExportManifestReviewComplete
File: GCX016.cbl
GIVEN:
A V9 segment with RC disposition code is received AND the train exists in the system
WHEN:
The system processes the RC disposition code
THEN:
The system initiates export manifest review complete processing
β Consolidated Acceptance Criteria
- The system updates the train status → the train status is set to export review complete
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UpdateTrainStatustoExportReviewComplete(["Start Step"])
E_UpdateTrainStatustoExportReviewComplete(["End Step"])
N_UpdateTrainStatustoExportReviewComplete_Node0{"The system updates the train status"}:::decision
N_UpdateTrainStatustoExportReviewComplete_Node0_action["The train status is set to export
review complete"]:::main N_UpdateTrainStatustoExportReviewComplete_Node0 -- Yes --> N_UpdateTrainStatustoExportReviewComplete_Node0_action N_UpdateTrainStatustoExportReviewComplete_Node0_action --> E_UpdateTrainStatustoExportReviewComplete S_UpdateTrainStatustoExportReviewComplete --> N_UpdateTrainStatustoExportReviewComplete_Node0 N_UpdateTrainStatustoExportReviewComplete_Node0 -- No --> E_UpdateTrainStatustoExportReviewComplete
review complete"]:::main N_UpdateTrainStatustoExportReviewComplete_Node0 -- Yes --> N_UpdateTrainStatustoExportReviewComplete_Node0_action N_UpdateTrainStatustoExportReviewComplete_Node0_action --> E_UpdateTrainStatustoExportReviewComplete S_UpdateTrainStatustoExportReviewComplete --> N_UpdateTrainStatustoExportReviewComplete_Node0 N_UpdateTrainStatustoExportReviewComplete_Node0 -- No --> E_UpdateTrainStatustoExportReviewComplete
File: GCX016.cbl
GIVEN:
Export manifest review complete processing has been initiated AND the train exists in the system
WHEN:
The system updates the train status
THEN:
The train status is set to export review complete
β Consolidated Acceptance Criteria
- The system validates the train location → the system checks if the train is at a valid export port location
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CheckifTrainisatExportPort(["Start Step"])
E_CheckifTrainisatExportPort(["End Step"])
N_CheckifTrainisatExportPort_Node0{"The system validates the train
location"}:::decision N_CheckifTrainisatExportPort_Node0_action["The system checks if the train is
at a valid export port location"]:::main N_CheckifTrainisatExportPort_Node0 -- Yes --> N_CheckifTrainisatExportPort_Node0_action N_CheckifTrainisatExportPort_Node0_action --> E_CheckifTrainisatExportPort S_CheckifTrainisatExportPort --> N_CheckifTrainisatExportPort_Node0 N_CheckifTrainisatExportPort_Node0 -- No --> E_CheckifTrainisatExportPort
location"}:::decision N_CheckifTrainisatExportPort_Node0_action["The system checks if the train is
at a valid export port location"]:::main N_CheckifTrainisatExportPort_Node0 -- Yes --> N_CheckifTrainisatExportPort_Node0_action N_CheckifTrainisatExportPort_Node0_action --> E_CheckifTrainisatExportPort S_CheckifTrainisatExportPort --> N_CheckifTrainisatExportPort_Node0 N_CheckifTrainisatExportPort_Node0 -- No --> E_CheckifTrainisatExportPort
File: GCX016.cbl
GIVEN:
The train status has been updated to export review complete
WHEN:
The system validates the train location
THEN:
The system checks if the train is at a valid export port location
β Consolidated Acceptance Criteria
- The system processes the export port validation result → the export manifest review flag is set to indicate completion
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetExportManifestReviewFlag(["Start Step"])
E_SetExportManifestReviewFlag(["End Step"])
N_SetExportManifestReviewFlag_Node0{"The system processes the export
port validation result"}:::decision N_SetExportManifestReviewFlag_Node0_action["The export manifest review flag is
set to indicate completion"]:::main N_SetExportManifestReviewFlag_Node0 -- Yes --> N_SetExportManifestReviewFlag_Node0_action N_SetExportManifestReviewFlag_Node0_action --> E_SetExportManifestReviewFlag S_SetExportManifestReviewFlag --> N_SetExportManifestReviewFlag_Node0 N_SetExportManifestReviewFlag_Node0 -- No --> E_SetExportManifestReviewFlag
port validation result"}:::decision N_SetExportManifestReviewFlag_Node0_action["The export manifest review flag is
set to indicate completion"]:::main N_SetExportManifestReviewFlag_Node0 -- Yes --> N_SetExportManifestReviewFlag_Node0_action N_SetExportManifestReviewFlag_Node0_action --> E_SetExportManifestReviewFlag S_SetExportManifestReviewFlag --> N_SetExportManifestReviewFlag_Node0 N_SetExportManifestReviewFlag_Node0 -- No --> E_SetExportManifestReviewFlag
File: GCX016.cbl
GIVEN:
The train location has been validated AND the train is at a valid export port
WHEN:
The system processes the export port validation result
THEN:
The export manifest review flag is set to indicate completion
β Consolidated Acceptance Criteria
- The system updates the train export status → the train export status is updated to reflect the completed review
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UpdateTrainExportStatus(["Start Step"])
E_UpdateTrainExportStatus(["End Step"])
N_UpdateTrainExportStatus_Node0{"The system updates the train export
status"}:::decision N_UpdateTrainExportStatus_Node0_action["The train export status is updated
to reflect the completed review"]:::main N_UpdateTrainExportStatus_Node0 -- Yes --> N_UpdateTrainExportStatus_Node0_action N_UpdateTrainExportStatus_Node0_action --> E_UpdateTrainExportStatus S_UpdateTrainExportStatus --> N_UpdateTrainExportStatus_Node0 N_UpdateTrainExportStatus_Node0 -- No --> E_UpdateTrainExportStatus
status"}:::decision N_UpdateTrainExportStatus_Node0_action["The train export status is updated
to reflect the completed review"]:::main N_UpdateTrainExportStatus_Node0 -- Yes --> N_UpdateTrainExportStatus_Node0_action N_UpdateTrainExportStatus_Node0_action --> E_UpdateTrainExportStatus S_UpdateTrainExportStatus --> N_UpdateTrainExportStatus_Node0 N_UpdateTrainExportStatus_Node0 -- No --> E_UpdateTrainExportStatus
File: GCX016.cbl
GIVEN:
The export manifest review flag has been set
WHEN:
The system updates the train export status
THEN:
The train export status is updated to reflect the completed review
β Consolidated Acceptance Criteria
- The system generates notifications → an export review complete notification is generated and sent to appropriate recipients
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GenerateExportReviewCompleteNotification(["Start Step"])
E_GenerateExportReviewCompleteNotification(["End Step"])
N_GenerateExportReviewCompleteNotification_Node0{"The system generates notifications"}:::decision
N_GenerateExportReviewCompleteNotification_Node0_action["An export review complete
notification is generated and sent
to appropriate recipients"]:::main N_GenerateExportReviewCompleteNotification_Node0 -- Yes --> N_GenerateExportReviewCompleteNotification_Node0_action N_GenerateExportReviewCompleteNotification_Node0_action --> E_GenerateExportReviewCompleteNotification S_GenerateExportReviewCompleteNotification --> N_GenerateExportReviewCompleteNotification_Node0 N_GenerateExportReviewCompleteNotification_Node0 -- No --> E_GenerateExportReviewCompleteNotification
notification is generated and sent
to appropriate recipients"]:::main N_GenerateExportReviewCompleteNotification_Node0 -- Yes --> N_GenerateExportReviewCompleteNotification_Node0_action N_GenerateExportReviewCompleteNotification_Node0_action --> E_GenerateExportReviewCompleteNotification S_GenerateExportReviewCompleteNotification --> N_GenerateExportReviewCompleteNotification_Node0 N_GenerateExportReviewCompleteNotification_Node0 -- No --> E_GenerateExportReviewCompleteNotification
File: GCX016.cbl
GIVEN:
The train export status has been updated
WHEN:
The system generates notifications
THEN:
- An export review complete notification is generated
- Sent to appropriate recipients
β Consolidated Acceptance Criteria
- The system logs the transaction → the export manifest review transaction is logged with appropriate details
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogExportManifestReviewTransaction(["Start Step"])
E_LogExportManifestReviewTransaction(["End Step"])
N_LogExportManifestReviewTransaction_Node0{"The system logs the transaction"}:::decision
N_LogExportManifestReviewTransaction_Node0_action["The export manifest review
transaction is logged with
appropriate details"]:::main N_LogExportManifestReviewTransaction_Node0 -- Yes --> N_LogExportManifestReviewTransaction_Node0_action N_LogExportManifestReviewTransaction_Node0_action --> E_LogExportManifestReviewTransaction S_LogExportManifestReviewTransaction --> N_LogExportManifestReviewTransaction_Node0 N_LogExportManifestReviewTransaction_Node0 -- No --> E_LogExportManifestReviewTransaction
transaction is logged with
appropriate details"]:::main N_LogExportManifestReviewTransaction_Node0 -- Yes --> N_LogExportManifestReviewTransaction_Node0_action N_LogExportManifestReviewTransaction_Node0_action --> E_LogExportManifestReviewTransaction S_LogExportManifestReviewTransaction --> N_LogExportManifestReviewTransaction_Node0 N_LogExportManifestReviewTransaction_Node0 -- No --> E_LogExportManifestReviewTransaction
File: GCX016.cbl
GIVEN:
The export review complete notification has been generated
WHEN:
The system logs the transaction
THEN:
The export manifest review transaction is logged with appropriate details
β Consolidated Acceptance Criteria
- The system checks for additional segments → the system determines if more V9 segments exist for processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CheckforAdditionalV9Segments(["Start Step"])
E_CheckforAdditionalV9Segments(["End Step"])
N_CheckforAdditionalV9Segments_Node0{"The system checks for additional
segments"}:::decision N_CheckforAdditionalV9Segments_Node0_action["The system determines if more V9
segments exist for processing"]:::main N_CheckforAdditionalV9Segments_Node0 -- Yes --> N_CheckforAdditionalV9Segments_Node0_action N_CheckforAdditionalV9Segments_Node0_action --> E_CheckforAdditionalV9Segments S_CheckforAdditionalV9Segments --> N_CheckforAdditionalV9Segments_Node0 N_CheckforAdditionalV9Segments_Node0 -- No --> E_CheckforAdditionalV9Segments
segments"}:::decision N_CheckforAdditionalV9Segments_Node0_action["The system determines if more V9
segments exist for processing"]:::main N_CheckforAdditionalV9Segments_Node0 -- Yes --> N_CheckforAdditionalV9Segments_Node0_action N_CheckforAdditionalV9Segments_Node0_action --> E_CheckforAdditionalV9Segments S_CheckforAdditionalV9Segments --> N_CheckforAdditionalV9Segments_Node0 N_CheckforAdditionalV9Segments_Node0 -- No --> E_CheckforAdditionalV9Segments
File: GCX016.cbl
GIVEN:
The export manifest review transaction has been logged
WHEN:
The system checks for additional segments
THEN:
The system determines if more V9 segments exist for processing
β Consolidated Acceptance Criteria
- The system processes the next segment → the next V9 segment is processed following the same validation and processing rules
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ProcessNextV9Segment(["Start Step"])
E_ProcessNextV9Segment(["End Step"])
N_ProcessNextV9Segment_Node0{"The system processes the next
segment"}:::decision N_ProcessNextV9Segment_Node0_action["The next V9 segment is processed
following the same validation and
processing rules"]:::main N_ProcessNextV9Segment_Node0 -- Yes --> N_ProcessNextV9Segment_Node0_action N_ProcessNextV9Segment_Node0_action --> E_ProcessNextV9Segment S_ProcessNextV9Segment --> N_ProcessNextV9Segment_Node0 N_ProcessNextV9Segment_Node0 -- No --> E_ProcessNextV9Segment
segment"}:::decision N_ProcessNextV9Segment_Node0_action["The next V9 segment is processed
following the same validation and
processing rules"]:::main N_ProcessNextV9Segment_Node0 -- Yes --> N_ProcessNextV9Segment_Node0_action N_ProcessNextV9Segment_Node0_action --> E_ProcessNextV9Segment S_ProcessNextV9Segment --> N_ProcessNextV9Segment_Node0 N_ProcessNextV9Segment_Node0 -- No --> E_ProcessNextV9Segment
File: GCX016.cbl
GIVEN:
Additional V9 segments have been found
WHEN:
The system processes the next segment
THEN:
- The next v9 segment is processed following the same validation
- Processing rules
β Consolidated Acceptance Criteria
- The system finalizes the processing → the export manifest review processing is marked as complete
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CompleteExportManifestReviewProcessing(["Start Step"])
E_CompleteExportManifestReviewProcessing(["End Step"])
N_CompleteExportManifestReviewProcessing_Node0{"The system finalizes the processing"}:::decision
N_CompleteExportManifestReviewProcessing_Node0_action["The export manifest review
processing is marked as complete"]:::main N_CompleteExportManifestReviewProcessing_Node0 -- Yes --> N_CompleteExportManifestReviewProcessing_Node0_action N_CompleteExportManifestReviewProcessing_Node0_action --> E_CompleteExportManifestReviewProcessing S_CompleteExportManifestReviewProcessing --> N_CompleteExportManifestReviewProcessing_Node0 N_CompleteExportManifestReviewProcessing_Node0 -- No --> E_CompleteExportManifestReviewProcessing
processing is marked as complete"]:::main N_CompleteExportManifestReviewProcessing_Node0 -- Yes --> N_CompleteExportManifestReviewProcessing_Node0_action N_CompleteExportManifestReviewProcessing_Node0_action --> E_CompleteExportManifestReviewProcessing S_CompleteExportManifestReviewProcessing --> N_CompleteExportManifestReviewProcessing_Node0 N_CompleteExportManifestReviewProcessing_Node0 -- No --> E_CompleteExportManifestReviewProcessing
File: GCX016.cbl
GIVEN:
All V9 segments have been processed OR an error has occurred
WHEN:
The system finalizes the processing
THEN:
The export manifest review processing is marked as complete
β Consolidated Acceptance Criteria
- The system handles the error condition → the error message is sent to the Merlin system for appropriate handling
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SendErrortoMerlinSystem(["Start Step"])
E_SendErrortoMerlinSystem(["End Step"])
N_SendErrortoMerlinSystem_Node0{"The system handles the error
condition"}:::decision N_SendErrortoMerlinSystem_Node0_action["The error message is sent to the
Merlin system for appropriate
handling"]:::exclusion N_SendErrortoMerlinSystem_Node0 -- Yes -->|Alternative| N_SendErrortoMerlinSystem_Node0_action N_SendErrortoMerlinSystem_Node0_action --> E_SendErrortoMerlinSystem S_SendErrortoMerlinSystem --> N_SendErrortoMerlinSystem_Node0 N_SendErrortoMerlinSystem_Node0 -- No --> E_SendErrortoMerlinSystem
condition"}:::decision N_SendErrortoMerlinSystem_Node0_action["The error message is sent to the
Merlin system for appropriate
handling"]:::exclusion N_SendErrortoMerlinSystem_Node0 -- Yes -->|Alternative| N_SendErrortoMerlinSystem_Node0_action N_SendErrortoMerlinSystem_Node0_action --> E_SendErrortoMerlinSystem S_SendErrortoMerlinSystem --> N_SendErrortoMerlinSystem_Node0 N_SendErrortoMerlinSystem_Node0 -- No --> E_SendErrortoMerlinSystem
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
A validation error has occurred OR the train is not at a valid export port
WHEN:
The system handles the error condition
THEN:
The error message is sent to the Merlin system for appropriate handling
β Consolidated Acceptance Criteria
- The system processes the train not arrived condition → the system creates an error message indicating the train has not arrived and requires re-arrival or USCS contact
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GenerateTrainNotArrivedErrorMessage(["Start Step"])
E_GenerateTrainNotArrivedErrorMessage(["End Step"])
N_GenerateTrainNotArrivedErrorMessage_Node0{"The system processes the train not
arrived condition"}:::decision N_GenerateTrainNotArrivedErrorMessage_Node0_action["The system creates an error message
indicating the train has not arrived
and requires re-arrival or USCS
contact"]:::main N_GenerateTrainNotArrivedErrorMessage_Node0 -- Yes --> N_GenerateTrainNotArrivedErrorMessage_Node0_action N_GenerateTrainNotArrivedErrorMessage_Node0_action --> E_GenerateTrainNotArrivedErrorMessage S_GenerateTrainNotArrivedErrorMessage --> N_GenerateTrainNotArrivedErrorMessage_Node0 N_GenerateTrainNotArrivedErrorMessage_Node0 -- No --> E_GenerateTrainNotArrivedErrorMessage
arrived condition"}:::decision N_GenerateTrainNotArrivedErrorMessage_Node0_action["The system creates an error message
indicating the train has not arrived
and requires re-arrival or USCS
contact"]:::main N_GenerateTrainNotArrivedErrorMessage_Node0 -- Yes --> N_GenerateTrainNotArrivedErrorMessage_Node0_action N_GenerateTrainNotArrivedErrorMessage_Node0_action --> E_GenerateTrainNotArrivedErrorMessage S_GenerateTrainNotArrivedErrorMessage --> N_GenerateTrainNotArrivedErrorMessage_Node0 N_GenerateTrainNotArrivedErrorMessage_Node0 -- No --> E_GenerateTrainNotArrivedErrorMessage
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
A train exists in the system and OCA disposition code is being processed
WHEN:
The system processes the train not arrived condition
THEN:
- The system creates an error message indicating the train has not arrived
- Requires re-arrival or uscs contact
β Consolidated Acceptance Criteria
- The system includes manifest information in the message → the message contains manifest details associated with the train that has not arrived
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IncludeManifestInformationinMessage(["Start Step"])
E_IncludeManifestInformationinMessage(["End Step"])
N_IncludeManifestInformationinMessage_Node0{"The system includes manifest
information in the message"}:::decision N_IncludeManifestInformationinMessage_Node0_action["The message contains manifest
details associated with the train
that has not arrived"]:::main N_IncludeManifestInformationinMessage_Node0 -- Yes --> N_IncludeManifestInformationinMessage_Node0_action N_IncludeManifestInformationinMessage_Node0_action --> E_IncludeManifestInformationinMessage S_IncludeManifestInformationinMessage --> N_IncludeManifestInformationinMessage_Node0 N_IncludeManifestInformationinMessage_Node0 -- No --> E_IncludeManifestInformationinMessage
information in the message"}:::decision N_IncludeManifestInformationinMessage_Node0_action["The message contains manifest
details associated with the train
that has not arrived"]:::main N_IncludeManifestInformationinMessage_Node0 -- Yes --> N_IncludeManifestInformationinMessage_Node0_action N_IncludeManifestInformationinMessage_Node0_action --> E_IncludeManifestInformationinMessage S_IncludeManifestInformationinMessage --> N_IncludeManifestInformationinMessage_Node0 N_IncludeManifestInformationinMessage_Node0 -- No --> E_IncludeManifestInformationinMessage
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
A train not arrived error message is being formatted for OCA processing
WHEN:
The system includes manifest information in the message
THEN:
The message contains manifest details associated with the train that has not arrived
β Consolidated Acceptance Criteria
- The system routes the message to destinations → the message is sent to both 'IN' and 'USERR' destinations as configured in the message routing tables
- The system routes the error message → the system sends the message to both 'IN' destination and 'USERR' destination for comprehensive error notification
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RouteErrorMessagetoMultipleDestinations(["Start Step"])
E_RouteErrorMessagetoMultipleDestinations(["End Step"])
N_RouteErrorMessagetoMultipleDestinations_Node0{"The system routes the message to
destinations"}:::decision N_RouteErrorMessagetoMultipleDestinations_Node0_action["The message is sent to both IN and
USERR destinations as configured in
the message routing tables"]:::main N_RouteErrorMessagetoMultipleDestinations_Node0 -- Yes --> N_RouteErrorMessagetoMultipleDestinations_Node0_action N_RouteErrorMessagetoMultipleDestinations_Node0_action --> E_RouteErrorMessagetoMultipleDestinations S_RouteErrorMessagetoMultipleDestinations --> N_RouteErrorMessagetoMultipleDestinations_Node0 N_RouteErrorMessagetoMultipleDestinations_Node1{"The system routes the error message"}:::decision N_RouteErrorMessagetoMultipleDestinations_Node1_action["The system sends the message to
both IN destination and USERR
destination for comprehensive error
notification"]:::exclusion N_RouteErrorMessagetoMultipleDestinations_Node1 -- Yes -->|Alternative| N_RouteErrorMessagetoMultipleDestinations_Node1_action N_RouteErrorMessagetoMultipleDestinations_Node1_action --> E_RouteErrorMessagetoMultipleDestinations N_RouteErrorMessagetoMultipleDestinations_Node0 -- No --> N_RouteErrorMessagetoMultipleDestinations_Node1 N_RouteErrorMessagetoMultipleDestinations_Node1 -- No --> E_RouteErrorMessagetoMultipleDestinations
destinations"}:::decision N_RouteErrorMessagetoMultipleDestinations_Node0_action["The message is sent to both IN and
USERR destinations as configured in
the message routing tables"]:::main N_RouteErrorMessagetoMultipleDestinations_Node0 -- Yes --> N_RouteErrorMessagetoMultipleDestinations_Node0_action N_RouteErrorMessagetoMultipleDestinations_Node0_action --> E_RouteErrorMessagetoMultipleDestinations S_RouteErrorMessagetoMultipleDestinations --> N_RouteErrorMessagetoMultipleDestinations_Node0 N_RouteErrorMessagetoMultipleDestinations_Node1{"The system routes the error message"}:::decision N_RouteErrorMessagetoMultipleDestinations_Node1_action["The system sends the message to
both IN destination and USERR
destination for comprehensive error
notification"]:::exclusion N_RouteErrorMessagetoMultipleDestinations_Node1 -- Yes -->|Alternative| N_RouteErrorMessagetoMultipleDestinations_Node1_action N_RouteErrorMessagetoMultipleDestinations_Node1_action --> E_RouteErrorMessagetoMultipleDestinations N_RouteErrorMessagetoMultipleDestinations_Node0 -- No --> N_RouteErrorMessagetoMultipleDestinations_Node1 N_RouteErrorMessagetoMultipleDestinations_Node1 -- No --> E_RouteErrorMessagetoMultipleDestinations
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
A train not arrived error message has been formatted for OCA processing
WHEN:
The system routes the message to destinations
THEN:
The message is sent to both 'IN' and 'USERR' destinations as configured in the message routing tables
File: GCX016.cbl
GIVEN:
A CPRS error message has been classified as error type
WHEN:
The system routes the error message
THEN:
The system sends the message to both 'IN' destination and 'USERR' destination for comprehensive error notification
β Consolidated Acceptance Criteria
- The system sets message keywords → the message is tagged with appropriate keywords for OCA train not arrived categorization
- The system processes message categorization requirements → appropriate keywords are set for message categorization and proper routing
- The system prepares the message for distribution → set message keywords and categories based on message routing tables to enable proper message classification
- The system sets message categorization → the system assigns relevant keywords based on message type, cargo type, and operation type for proper filtering and processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetMessageKeywordsforCategorization(["Start Step"])
E_SetMessageKeywordsforCategorization(["End Step"])
N_SetMessageKeywordsforCategorization_Node0{"The system sets message keywords"}:::decision
N_SetMessageKeywordsforCategorization_Node0_action["The message is tagged with
appropriate keywords for OCA train
not arrived categorization"]:::main N_SetMessageKeywordsforCategorization_Node0 -- Yes --> N_SetMessageKeywordsforCategorization_Node0_action N_SetMessageKeywordsforCategorization_Node0_action --> E_SetMessageKeywordsforCategorization S_SetMessageKeywordsforCategorization --> N_SetMessageKeywordsforCategorization_Node0 N_SetMessageKeywordsforCategorization_Node1{"The system processes message
categorization requirements"}:::decision N_SetMessageKeywordsforCategorization_Node1_action["Appropriate keywords are set for
message categorization and proper
routing"]:::main N_SetMessageKeywordsforCategorization_Node1 -- Yes --> N_SetMessageKeywordsforCategorization_Node1_action N_SetMessageKeywordsforCategorization_Node1_action --> E_SetMessageKeywordsforCategorization N_SetMessageKeywordsforCategorization_Node0 -- No --> N_SetMessageKeywordsforCategorization_Node1 N_SetMessageKeywordsforCategorization_Node2{"The system prepares the message for
distribution"}:::decision N_SetMessageKeywordsforCategorization_Node2_action["Set message keywords and categories
based on message routing tables to
enable proper message classification"]:::main N_SetMessageKeywordsforCategorization_Node2 -- Yes --> N_SetMessageKeywordsforCategorization_Node2_action N_SetMessageKeywordsforCategorization_Node2_action --> E_SetMessageKeywordsforCategorization N_SetMessageKeywordsforCategorization_Node1 -- No --> N_SetMessageKeywordsforCategorization_Node2 N_SetMessageKeywordsforCategorization_Node3{"The system sets message
categorization"}:::decision N_SetMessageKeywordsforCategorization_Node3_action["The system assigns relevant
keywords based on message type,
cargo type, and operation type for
proper filtering and processing"]:::main N_SetMessageKeywordsforCategorization_Node3 -- Yes --> N_SetMessageKeywordsforCategorization_Node3_action N_SetMessageKeywordsforCategorization_Node3_action --> E_SetMessageKeywordsforCategorization N_SetMessageKeywordsforCategorization_Node2 -- No --> N_SetMessageKeywordsforCategorization_Node3 N_SetMessageKeywordsforCategorization_Node3 -- No --> E_SetMessageKeywordsforCategorization
appropriate keywords for OCA train
not arrived categorization"]:::main N_SetMessageKeywordsforCategorization_Node0 -- Yes --> N_SetMessageKeywordsforCategorization_Node0_action N_SetMessageKeywordsforCategorization_Node0_action --> E_SetMessageKeywordsforCategorization S_SetMessageKeywordsforCategorization --> N_SetMessageKeywordsforCategorization_Node0 N_SetMessageKeywordsforCategorization_Node1{"The system processes message
categorization requirements"}:::decision N_SetMessageKeywordsforCategorization_Node1_action["Appropriate keywords are set for
message categorization and proper
routing"]:::main N_SetMessageKeywordsforCategorization_Node1 -- Yes --> N_SetMessageKeywordsforCategorization_Node1_action N_SetMessageKeywordsforCategorization_Node1_action --> E_SetMessageKeywordsforCategorization N_SetMessageKeywordsforCategorization_Node0 -- No --> N_SetMessageKeywordsforCategorization_Node1 N_SetMessageKeywordsforCategorization_Node2{"The system prepares the message for
distribution"}:::decision N_SetMessageKeywordsforCategorization_Node2_action["Set message keywords and categories
based on message routing tables to
enable proper message classification"]:::main N_SetMessageKeywordsforCategorization_Node2 -- Yes --> N_SetMessageKeywordsforCategorization_Node2_action N_SetMessageKeywordsforCategorization_Node2_action --> E_SetMessageKeywordsforCategorization N_SetMessageKeywordsforCategorization_Node1 -- No --> N_SetMessageKeywordsforCategorization_Node2 N_SetMessageKeywordsforCategorization_Node3{"The system sets message
categorization"}:::decision N_SetMessageKeywordsforCategorization_Node3_action["The system assigns relevant
keywords based on message type,
cargo type, and operation type for
proper filtering and processing"]:::main N_SetMessageKeywordsforCategorization_Node3 -- Yes --> N_SetMessageKeywordsforCategorization_Node3_action N_SetMessageKeywordsforCategorization_Node3_action --> E_SetMessageKeywordsforCategorization N_SetMessageKeywordsforCategorization_Node2 -- No --> N_SetMessageKeywordsforCategorization_Node3 N_SetMessageKeywordsforCategorization_Node3 -- No --> E_SetMessageKeywordsforCategorization
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
A train not arrived error message is being prepared for routing
WHEN:
The system sets message keywords
THEN:
The message is tagged with appropriate keywords for OCA train not arrived categorization
File: GCX016.cbl
GIVEN:
All valid recipients have been identified and added to the routing list
WHEN:
The system processes message categorization requirements
THEN:
- Appropriate keywords are set for message categorization
- Proper routing
File: GCX016.cbl
GIVEN:
Configured user list has been retrieved
WHEN:
The system prepares the message for distribution
THEN:
- Set message keywords
- Categories based on message routing tables to enable proper message classification
File: GCX016.cbl
GIVEN:
A message has been routed to appropriate destinations
WHEN:
The system sets message categorization
THEN:
- The system assigns relevant keywords based on message type, cargo type, and operation type for proper filtering
- Processing
β Consolidated Acceptance Criteria
- The system sends notifications to configured users → all users configured to receive OCA train not arrived notifications receive the message
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SendNotificationtoConfiguredUsers(["Start Step"])
E_SendNotificationtoConfiguredUsers(["End Step"])
N_SendNotificationtoConfiguredUsers_Node0{"The system sends notifications to
configured users"}:::decision N_SendNotificationtoConfiguredUsers_Node0_action["All users configured to receive OCA
train not arrived notifications
receive the message"]:::main N_SendNotificationtoConfiguredUsers_Node0 -- Yes --> N_SendNotificationtoConfiguredUsers_Node0_action N_SendNotificationtoConfiguredUsers_Node0_action --> E_SendNotificationtoConfiguredUsers S_SendNotificationtoConfiguredUsers --> N_SendNotificationtoConfiguredUsers_Node0 N_SendNotificationtoConfiguredUsers_Node0 -- No --> E_SendNotificationtoConfiguredUsers
configured users"}:::decision N_SendNotificationtoConfiguredUsers_Node0_action["All users configured to receive OCA
train not arrived notifications
receive the message"]:::main N_SendNotificationtoConfiguredUsers_Node0 -- Yes --> N_SendNotificationtoConfiguredUsers_Node0_action N_SendNotificationtoConfiguredUsers_Node0_action --> E_SendNotificationtoConfiguredUsers S_SendNotificationtoConfiguredUsers --> N_SendNotificationtoConfiguredUsers_Node0 N_SendNotificationtoConfiguredUsers_Node0 -- No --> E_SendNotificationtoConfiguredUsers
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
A train not arrived message has been routed with proper keywords
WHEN:
The system sends notifications to configured users
THEN:
All users configured to receive OCA train not arrived notifications receive the message
β Consolidated Acceptance Criteria
- The system logs the event → the train not arrived event is recorded in the system logs with timestamp and train details
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogTrainNotArrivedEvent(["Start Step"])
E_LogTrainNotArrivedEvent(["End Step"])
N_LogTrainNotArrivedEvent_Node0{"The system logs the event"}:::decision
N_LogTrainNotArrivedEvent_Node0_action["The train not arrived event is
recorded in the system logs with
timestamp and train details"]:::main N_LogTrainNotArrivedEvent_Node0 -- Yes --> N_LogTrainNotArrivedEvent_Node0_action N_LogTrainNotArrivedEvent_Node0_action --> E_LogTrainNotArrivedEvent S_LogTrainNotArrivedEvent --> N_LogTrainNotArrivedEvent_Node0 N_LogTrainNotArrivedEvent_Node0 -- No --> E_LogTrainNotArrivedEvent
recorded in the system logs with
timestamp and train details"]:::main N_LogTrainNotArrivedEvent_Node0 -- Yes --> N_LogTrainNotArrivedEvent_Node0_action N_LogTrainNotArrivedEvent_Node0_action --> E_LogTrainNotArrivedEvent S_LogTrainNotArrivedEvent --> N_LogTrainNotArrivedEvent_Node0 N_LogTrainNotArrivedEvent_Node0 -- No --> E_LogTrainNotArrivedEvent
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
A train not arrived notification has been sent to configured users
WHEN:
The system logs the event
THEN:
- The train not arrived event is recorded in the system logs with timestamp
- Train details
β Consolidated Acceptance Criteria
- The system updates the train status → the train status is updated to indicate not arrived condition requiring re-arrival processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UpdateTrainStatusasNotArrived(["Start Step"])
E_UpdateTrainStatusasNotArrived(["End Step"])
N_UpdateTrainStatusasNotArrived_Node0{"The system updates the train status"}:::decision
N_UpdateTrainStatusasNotArrived_Node0_action["The train status is updated to
indicate not arrived condition
requiring re-arrival processing"]:::main N_UpdateTrainStatusasNotArrived_Node0 -- Yes --> N_UpdateTrainStatusasNotArrived_Node0_action N_UpdateTrainStatusasNotArrived_Node0_action --> E_UpdateTrainStatusasNotArrived S_UpdateTrainStatusasNotArrived --> N_UpdateTrainStatusasNotArrived_Node0 N_UpdateTrainStatusasNotArrived_Node0 -- No --> E_UpdateTrainStatusasNotArrived
indicate not arrived condition
requiring re-arrival processing"]:::main N_UpdateTrainStatusasNotArrived_Node0 -- Yes --> N_UpdateTrainStatusasNotArrived_Node0_action N_UpdateTrainStatusasNotArrived_Node0_action --> E_UpdateTrainStatusasNotArrived S_UpdateTrainStatusasNotArrived --> N_UpdateTrainStatusasNotArrived_Node0 N_UpdateTrainStatusasNotArrived_Node0 -- No --> E_UpdateTrainStatusasNotArrived
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
A train not arrived event has been logged
WHEN:
The system updates the train status
THEN:
The train status is updated to indicate not arrived condition requiring re-arrival processing
β Consolidated Acceptance Criteria
- The system checks if the train exists in GCWTL-TRAIN-LIST → if train does not exist, generate train not found error and stop processing, otherwise continue with COC validation
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_TrainExistsinSystem(["Start Step"])
E_TrainExistsinSystem(["End Step"])
N_TrainExistsinSystem_Node0{"The system checks if the train
exists in GCWTL-TRAIN-LIST"}:::decision N_TrainExistsinSystem_Node0_action["If train does not exist, generate
train not found error and stop
processing, otherwise continue with
COC validation"]:::main N_TrainExistsinSystem_Node0 -- Yes --> N_TrainExistsinSystem_Node0_action N_TrainExistsinSystem_Node0_action --> E_TrainExistsinSystem S_TrainExistsinSystem --> N_TrainExistsinSystem_Node0 N_TrainExistsinSystem_Node0 -- No --> E_TrainExistsinSystem
exists in GCWTL-TRAIN-LIST"}:::decision N_TrainExistsinSystem_Node0_action["If train does not exist, generate
train not found error and stop
processing, otherwise continue with
COC validation"]:::main N_TrainExistsinSystem_Node0 -- Yes --> N_TrainExistsinSystem_Node0_action N_TrainExistsinSystem_Node0_action --> E_TrainExistsinSystem S_TrainExistsinSystem --> N_TrainExistsinSystem_Node0 N_TrainExistsinSystem_Node0 -- No --> E_TrainExistsinSystem
File: GCX016.cbl
GIVEN:
A V9 segment with COC disposition code is received for a specific train
WHEN:
The system checks if the train exists in GCWTL-TRAIN-LIST
THEN:
- If train does not exist, generate train not found error
- Stop processing, otherwise continue with coc validation
β Consolidated Acceptance Criteria
- The system looks up the COC code in GCSTBRT disposition codes table → if COC code is valid, proceed to check train arrival status, otherwise generate invalid disposition code error
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ValidateCOCDispositionCode(["Start Step"])
E_ValidateCOCDispositionCode(["End Step"])
N_ValidateCOCDispositionCode_Node0{"The system looks up the COC code in
GCSTBRT disposition codes table"}:::decision N_ValidateCOCDispositionCode_Node0_action["If COC code is valid, proceed to
check train arrival status,
otherwise generate invalid
disposition code error"]:::main N_ValidateCOCDispositionCode_Node0 -- Yes --> N_ValidateCOCDispositionCode_Node0_action N_ValidateCOCDispositionCode_Node0_action --> E_ValidateCOCDispositionCode S_ValidateCOCDispositionCode --> N_ValidateCOCDispositionCode_Node0 N_ValidateCOCDispositionCode_Node0 -- No --> E_ValidateCOCDispositionCode
GCSTBRT disposition codes table"}:::decision N_ValidateCOCDispositionCode_Node0_action["If COC code is valid, proceed to
check train arrival status,
otherwise generate invalid
disposition code error"]:::main N_ValidateCOCDispositionCode_Node0 -- Yes --> N_ValidateCOCDispositionCode_Node0_action N_ValidateCOCDispositionCode_Node0_action --> E_ValidateCOCDispositionCode S_ValidateCOCDispositionCode --> N_ValidateCOCDispositionCode_Node0 N_ValidateCOCDispositionCode_Node0 -- No --> E_ValidateCOCDispositionCode
File: GCX016.cbl
GIVEN:
A train exists in the system and COC disposition code is provided
WHEN:
The system looks up the COC code in GCSTBRT disposition codes table
THEN:
If COC code is valid, proceed to check train arrival status, otherwise generate invalid disposition code error
β Consolidated Acceptance Criteria
- The system checks the train's current arrival status → if train has not previously arrived, generate train arrival cancellation warning and stop processing, otherwise proceed with cancellation
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_TrainPreviouslyArrived(["Start Step"])
E_TrainPreviouslyArrived(["End Step"])
N_TrainPreviouslyArrived_Node0{"The system checks the train s
current arrival status"}:::decision N_TrainPreviouslyArrived_Node0_action["If train has not previously
arrived, generate train arrival
cancellation warning and stop
processing, otherwise proceed with
cancellation"]:::main N_TrainPreviouslyArrived_Node0 -- Yes --> N_TrainPreviouslyArrived_Node0_action N_TrainPreviouslyArrived_Node0_action --> E_TrainPreviouslyArrived S_TrainPreviouslyArrived --> N_TrainPreviouslyArrived_Node0 N_TrainPreviouslyArrived_Node0 -- No --> E_TrainPreviouslyArrived
current arrival status"}:::decision N_TrainPreviouslyArrived_Node0_action["If train has not previously
arrived, generate train arrival
cancellation warning and stop
processing, otherwise proceed with
cancellation"]:::main N_TrainPreviouslyArrived_Node0 -- Yes --> N_TrainPreviouslyArrived_Node0_action N_TrainPreviouslyArrived_Node0_action --> E_TrainPreviouslyArrived S_TrainPreviouslyArrived --> N_TrainPreviouslyArrived_Node0 N_TrainPreviouslyArrived_Node0 -- No --> E_TrainPreviouslyArrived
File: GCX016.cbl
GIVEN:
A valid COC disposition code is received for an existing train
WHEN:
The system checks the train's current arrival status
THEN:
- If train has not previously arrived, generate train arrival cancellation warning
- Stop processing, otherwise proceed with cancellation
β Consolidated Acceptance Criteria
- The system detects the train arrival status is not 'arrived' → generate warning message 'Train arrival being cancelled by CBP. Contact CBP and re-arrive bonds if needed' and terminate processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GenerateTrainArrivalCancellationWarning(["Start Step"])
E_GenerateTrainArrivalCancellationWarning(["End Step"])
N_GenerateTrainArrivalCancellationWarning_Node0{"The system detects the train
arrival status is not arrived"}:::decision N_GenerateTrainArrivalCancellationWarning_Node0_action["Generate warning message Train
arrival being cancelled by CBP.
Contact CBP and re-arrive bonds if
needed and terminate processing"]:::exclusion N_GenerateTrainArrivalCancellationWarning_Node0 -- Yes -->|Alternative| N_GenerateTrainArrivalCancellationWarning_Node0_action N_GenerateTrainArrivalCancellationWarning_Node0_action --> E_GenerateTrainArrivalCancellationWarning S_GenerateTrainArrivalCancellationWarning --> N_GenerateTrainArrivalCancellationWarning_Node0 N_GenerateTrainArrivalCancellationWarning_Node0 -- No --> E_GenerateTrainArrivalCancellationWarning
arrival status is not arrived"}:::decision N_GenerateTrainArrivalCancellationWarning_Node0_action["Generate warning message Train
arrival being cancelled by CBP.
Contact CBP and re-arrive bonds if
needed and terminate processing"]:::exclusion N_GenerateTrainArrivalCancellationWarning_Node0 -- Yes -->|Alternative| N_GenerateTrainArrivalCancellationWarning_Node0_action N_GenerateTrainArrivalCancellationWarning_Node0_action --> E_GenerateTrainArrivalCancellationWarning S_GenerateTrainArrivalCancellationWarning --> N_GenerateTrainArrivalCancellationWarning_Node0 N_GenerateTrainArrivalCancellationWarning_Node0 -- No --> E_GenerateTrainArrivalCancellationWarning
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
A COC disposition code is received for a train that has not previously arrived
WHEN:
The system detects the train arrival status is not 'arrived'
THEN:
- Generate warning message 'train arrival being cancelled by cbp. contact cbp
- Re-arrive bonds if needed' and terminate processing
β Consolidated Acceptance Criteria
- The system processes the arrival cancellation → update train status to 'arrival cancelled' in the train records
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UpdateTrainStatustoCancelArrival(["Start Step"])
E_UpdateTrainStatustoCancelArrival(["End Step"])
N_UpdateTrainStatustoCancelArrival_Node0{"The system processes the arrival
cancellation"}:::decision N_UpdateTrainStatustoCancelArrival_Node0_action["Update train status to arrival
cancelled in the train records"]:::main N_UpdateTrainStatustoCancelArrival_Node0 -- Yes --> N_UpdateTrainStatustoCancelArrival_Node0_action N_UpdateTrainStatustoCancelArrival_Node0_action --> E_UpdateTrainStatustoCancelArrival S_UpdateTrainStatustoCancelArrival --> N_UpdateTrainStatustoCancelArrival_Node0 N_UpdateTrainStatustoCancelArrival_Node0 -- No --> E_UpdateTrainStatustoCancelArrival
cancellation"}:::decision N_UpdateTrainStatustoCancelArrival_Node0_action["Update train status to arrival
cancelled in the train records"]:::main N_UpdateTrainStatustoCancelArrival_Node0 -- Yes --> N_UpdateTrainStatustoCancelArrival_Node0_action N_UpdateTrainStatustoCancelArrival_Node0_action --> E_UpdateTrainStatustoCancelArrival S_UpdateTrainStatustoCancelArrival --> N_UpdateTrainStatustoCancelArrival_Node0 N_UpdateTrainStatustoCancelArrival_Node0 -- No --> E_UpdateTrainStatustoCancelArrival
File: GCX016.cbl
GIVEN:
A train has previously arrived and COC disposition code is valid
WHEN:
The system processes the arrival cancellation
THEN:
Update train status to 'arrival cancelled' in the train records
β Consolidated Acceptance Criteria
- The system processes the arrival cancellation → clear the train arrival date field and set it to null or empty
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ClearTrainArrivalDate(["Start Step"])
E_ClearTrainArrivalDate(["End Step"])
N_ClearTrainArrivalDate_Node0{"The system processes the arrival
cancellation"}:::decision N_ClearTrainArrivalDate_Node0_action["Clear the train arrival date field
and set it to null or empty"]:::main N_ClearTrainArrivalDate_Node0 -- Yes --> N_ClearTrainArrivalDate_Node0_action N_ClearTrainArrivalDate_Node0_action --> E_ClearTrainArrivalDate S_ClearTrainArrivalDate --> N_ClearTrainArrivalDate_Node0 N_ClearTrainArrivalDate_Node0 -- No --> E_ClearTrainArrivalDate
cancellation"}:::decision N_ClearTrainArrivalDate_Node0_action["Clear the train arrival date field
and set it to null or empty"]:::main N_ClearTrainArrivalDate_Node0 -- Yes --> N_ClearTrainArrivalDate_Node0_action N_ClearTrainArrivalDate_Node0_action --> E_ClearTrainArrivalDate S_ClearTrainArrivalDate --> N_ClearTrainArrivalDate_Node0 N_ClearTrainArrivalDate_Node0 -- No --> E_ClearTrainArrivalDate
File: GCX016.cbl
GIVEN:
Train status is being updated to cancel arrival
WHEN:
The system processes the arrival cancellation
THEN:
- Clear the train arrival date field
- Set it to null or empty
β Consolidated Acceptance Criteria
- The system needs to restore bond processing dates → restore all bond dates to their state prior to the cancelled arrival event
- The system needs to restore previous bond state → the system restores previous bond dates and clears current arrival information to return cargo to pre-arrival state
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RestorePreviousBondDates(["Start Step"])
E_RestorePreviousBondDates(["End Step"])
N_RestorePreviousBondDates_Node0{"The system needs to restore bond
processing dates"}:::decision N_RestorePreviousBondDates_Node0_action["Restore all bond dates to their
state prior to the cancelled arrival
event"]:::main N_RestorePreviousBondDates_Node0 -- Yes --> N_RestorePreviousBondDates_Node0_action N_RestorePreviousBondDates_Node0_action --> E_RestorePreviousBondDates S_RestorePreviousBondDates --> N_RestorePreviousBondDates_Node0 N_RestorePreviousBondDates_Node1{"The system needs to restore
previous bond state"}:::decision N_RestorePreviousBondDates_Node1_action["The system restores previous bond
dates and clears current arrival
information to return cargo to
pre-arrival state"]:::main N_RestorePreviousBondDates_Node1 -- Yes --> N_RestorePreviousBondDates_Node1_action N_RestorePreviousBondDates_Node1_action --> E_RestorePreviousBondDates N_RestorePreviousBondDates_Node0 -- No --> N_RestorePreviousBondDates_Node1 N_RestorePreviousBondDates_Node1 -- No --> E_RestorePreviousBondDates
processing dates"}:::decision N_RestorePreviousBondDates_Node0_action["Restore all bond dates to their
state prior to the cancelled arrival
event"]:::main N_RestorePreviousBondDates_Node0 -- Yes --> N_RestorePreviousBondDates_Node0_action N_RestorePreviousBondDates_Node0_action --> E_RestorePreviousBondDates S_RestorePreviousBondDates --> N_RestorePreviousBondDates_Node0 N_RestorePreviousBondDates_Node1{"The system needs to restore
previous bond state"}:::decision N_RestorePreviousBondDates_Node1_action["The system restores previous bond
dates and clears current arrival
information to return cargo to
pre-arrival state"]:::main N_RestorePreviousBondDates_Node1 -- Yes --> N_RestorePreviousBondDates_Node1_action N_RestorePreviousBondDates_Node1_action --> E_RestorePreviousBondDates N_RestorePreviousBondDates_Node0 -- No --> N_RestorePreviousBondDates_Node1 N_RestorePreviousBondDates_Node1 -- No --> E_RestorePreviousBondDates
File: GCX016.cbl
GIVEN:
Train arrival date has been cleared due to cancellation
WHEN:
The system needs to restore bond processing dates
THEN:
Restore all bond dates to their state prior to the cancelled arrival event
File: GCX016.cbl
GIVEN:
An arrival cancellation has been processed for cargo
WHEN:
The system needs to restore previous bond state
THEN:
- The system restores previous bond dates
- Clears current arrival information to return cargo to pre-arrival state
β Consolidated Acceptance Criteria
- All train data changes are ready to be persisted → update train records in the database with all cancellation-related changes
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UpdateTrainRecordsinDatabase(["Start Step"])
E_UpdateTrainRecordsinDatabase(["End Step"])
N_UpdateTrainRecordsinDatabase_Node0{"All train data changes are ready to
be persisted"}:::decision N_UpdateTrainRecordsinDatabase_Node0_action["Update train records in the
database with all
cancellation-related changes"]:::main N_UpdateTrainRecordsinDatabase_Node0 -- Yes --> N_UpdateTrainRecordsinDatabase_Node0_action N_UpdateTrainRecordsinDatabase_Node0_action --> E_UpdateTrainRecordsinDatabase S_UpdateTrainRecordsinDatabase --> N_UpdateTrainRecordsinDatabase_Node0 N_UpdateTrainRecordsinDatabase_Node0 -- No --> E_UpdateTrainRecordsinDatabase
be persisted"}:::decision N_UpdateTrainRecordsinDatabase_Node0_action["Update train records in the
database with all
cancellation-related changes"]:::main N_UpdateTrainRecordsinDatabase_Node0 -- Yes --> N_UpdateTrainRecordsinDatabase_Node0_action N_UpdateTrainRecordsinDatabase_Node0_action --> E_UpdateTrainRecordsinDatabase S_UpdateTrainRecordsinDatabase --> N_UpdateTrainRecordsinDatabase_Node0 N_UpdateTrainRecordsinDatabase_Node0 -- No --> E_UpdateTrainRecordsinDatabase
File: GCX016.cbl
GIVEN:
Train status, arrival date, and bond dates have been updated for cancellation
WHEN:
All train data changes are ready to be persisted
THEN:
Update train records in the database with all cancellation-related changes
β Consolidated Acceptance Criteria
- The system checks for associated equipment records → if equipment records exist, process equipment status changes, otherwise proceed to generate cancellation notifications
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_EquipmentRecordsExist(["Start Step"])
E_EquipmentRecordsExist(["End Step"])
N_EquipmentRecordsExist_Node0{"The system checks for associated
equipment records"}:::decision N_EquipmentRecordsExist_Node0_action["If equipment records exist, process
equipment status changes, otherwise
proceed to generate cancellation
notifications"]:::main N_EquipmentRecordsExist_Node0 -- Yes --> N_EquipmentRecordsExist_Node0_action N_EquipmentRecordsExist_Node0_action --> E_EquipmentRecordsExist S_EquipmentRecordsExist --> N_EquipmentRecordsExist_Node0 N_EquipmentRecordsExist_Node0 -- No --> E_EquipmentRecordsExist
equipment records"}:::decision N_EquipmentRecordsExist_Node0_action["If equipment records exist, process
equipment status changes, otherwise
proceed to generate cancellation
notifications"]:::main N_EquipmentRecordsExist_Node0 -- Yes --> N_EquipmentRecordsExist_Node0_action N_EquipmentRecordsExist_Node0_action --> E_EquipmentRecordsExist S_EquipmentRecordsExist --> N_EquipmentRecordsExist_Node0 N_EquipmentRecordsExist_Node0 -- No --> E_EquipmentRecordsExist
File: GCX016.cbl
GIVEN:
Train records have been updated for arrival cancellation
WHEN:
The system checks for associated equipment records
THEN:
If equipment records exist, process equipment status changes, otherwise proceed to generate cancellation notifications
β Consolidated Acceptance Criteria
- The system processes equipment status updates → update equipment status to reflect the train arrival cancellation
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ProcessEquipmentStatusChanges(["Start Step"])
E_ProcessEquipmentStatusChanges(["End Step"])
N_ProcessEquipmentStatusChanges_Node0{"The system processes equipment
status updates"}:::decision N_ProcessEquipmentStatusChanges_Node0_action["Update equipment status to reflect
the train arrival cancellation"]:::main N_ProcessEquipmentStatusChanges_Node0 -- Yes --> N_ProcessEquipmentStatusChanges_Node0_action N_ProcessEquipmentStatusChanges_Node0_action --> E_ProcessEquipmentStatusChanges S_ProcessEquipmentStatusChanges --> N_ProcessEquipmentStatusChanges_Node0 N_ProcessEquipmentStatusChanges_Node0 -- No --> E_ProcessEquipmentStatusChanges
status updates"}:::decision N_ProcessEquipmentStatusChanges_Node0_action["Update equipment status to reflect
the train arrival cancellation"]:::main N_ProcessEquipmentStatusChanges_Node0 -- Yes --> N_ProcessEquipmentStatusChanges_Node0_action N_ProcessEquipmentStatusChanges_Node0_action --> E_ProcessEquipmentStatusChanges S_ProcessEquipmentStatusChanges --> N_ProcessEquipmentStatusChanges_Node0 N_ProcessEquipmentStatusChanges_Node0 -- No --> E_ProcessEquipmentStatusChanges
File: GCX016.cbl
GIVEN:
Equipment records exist for the train with cancelled arrival
WHEN:
The system processes equipment status updates
THEN:
Update equipment status to reflect the train arrival cancellation
β Consolidated Acceptance Criteria
- The system updates individual equipment records → set equipment arrival status to cancelled or clear arrival status based on cancellation
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UpdateEquipmentArrivalStatus(["Start Step"])
E_UpdateEquipmentArrivalStatus(["End Step"])
N_UpdateEquipmentArrivalStatus_Node0{"The system updates individual
equipment records"}:::decision N_UpdateEquipmentArrivalStatus_Node0_action["Set equipment arrival status to
cancelled or clear arrival status
based on cancellation"]:::main N_UpdateEquipmentArrivalStatus_Node0 -- Yes --> N_UpdateEquipmentArrivalStatus_Node0_action N_UpdateEquipmentArrivalStatus_Node0_action --> E_UpdateEquipmentArrivalStatus S_UpdateEquipmentArrivalStatus --> N_UpdateEquipmentArrivalStatus_Node0 N_UpdateEquipmentArrivalStatus_Node0 -- No --> E_UpdateEquipmentArrivalStatus
equipment records"}:::decision N_UpdateEquipmentArrivalStatus_Node0_action["Set equipment arrival status to
cancelled or clear arrival status
based on cancellation"]:::main N_UpdateEquipmentArrivalStatus_Node0 -- Yes --> N_UpdateEquipmentArrivalStatus_Node0_action N_UpdateEquipmentArrivalStatus_Node0_action --> E_UpdateEquipmentArrivalStatus S_UpdateEquipmentArrivalStatus --> N_UpdateEquipmentArrivalStatus_Node0 N_UpdateEquipmentArrivalStatus_Node0 -- No --> E_UpdateEquipmentArrivalStatus
File: GCX016.cbl
GIVEN:
Equipment status changes are being processed for cancelled train arrival
WHEN:
The system updates individual equipment records
THEN:
Set equipment arrival status to cancelled or clear arrival status based on cancellation
β Consolidated Acceptance Criteria
- The system prepares stakeholder notifications → generate cancellation notifications containing train details and cancellation information
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GenerateCancellationNotifications(["Start Step"])
E_GenerateCancellationNotifications(["End Step"])
N_GenerateCancellationNotifications_Node0{"The system prepares stakeholder
notifications"}:::decision N_GenerateCancellationNotifications_Node0_action["Generate cancellation notifications
containing train details and
cancellation information"]:::main N_GenerateCancellationNotifications_Node0 -- Yes --> N_GenerateCancellationNotifications_Node0_action N_GenerateCancellationNotifications_Node0_action --> E_GenerateCancellationNotifications S_GenerateCancellationNotifications --> N_GenerateCancellationNotifications_Node0 N_GenerateCancellationNotifications_Node0 -- No --> E_GenerateCancellationNotifications
notifications"}:::decision N_GenerateCancellationNotifications_Node0_action["Generate cancellation notifications
containing train details and
cancellation information"]:::main N_GenerateCancellationNotifications_Node0 -- Yes --> N_GenerateCancellationNotifications_Node0_action N_GenerateCancellationNotifications_Node0_action --> E_GenerateCancellationNotifications S_GenerateCancellationNotifications --> N_GenerateCancellationNotifications_Node0 N_GenerateCancellationNotifications_Node0 -- No --> E_GenerateCancellationNotifications
File: GCX016.cbl
GIVEN:
Train and equipment records have been updated for arrival cancellation
WHEN:
The system prepares stakeholder notifications
THEN:
- Generate cancellation notifications containing train details
- Cancellation information
β Consolidated Acceptance Criteria
- The system checks KCSM integration requirements → if KCSM integration is required, copy EDI message for KCSM transmission, otherwise proceed to log cancellation
- If KCSM integration requirements → system determines if KCSM integration is required and routes processing accordingly
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_KCSMIntegrationRequired(["Start Step"])
E_KCSMIntegrationRequired(["End Step"])
N_KCSMIntegrationRequired_Node0{"The system checks KCSM integration
requirements"}:::decision N_KCSMIntegrationRequired_Node0_action["If KCSM integration is required,
copy EDI message for KCSM
transmission, otherwise proceed to
log cancellation"]:::main N_KCSMIntegrationRequired_Node0 -- Yes --> N_KCSMIntegrationRequired_Node0_action N_KCSMIntegrationRequired_Node0_action --> E_KCSMIntegrationRequired S_KCSMIntegrationRequired --> N_KCSMIntegrationRequired_Node0 N_KCSMIntegrationRequired_Node1{"The system evaluates KCSM
integration requirements"}:::decision N_KCSMIntegrationRequired_Node1_action["System determines if KCSM
integration is required and routes
processing accordingly"]:::main N_KCSMIntegrationRequired_Node1 -- Yes --> N_KCSMIntegrationRequired_Node1_action N_KCSMIntegrationRequired_Node1_action --> E_KCSMIntegrationRequired N_KCSMIntegrationRequired_Node0 -- No --> N_KCSMIntegrationRequired_Node1 N_KCSMIntegrationRequired_Node1 -- No --> E_KCSMIntegrationRequired
requirements"}:::decision N_KCSMIntegrationRequired_Node0_action["If KCSM integration is required,
copy EDI message for KCSM
transmission, otherwise proceed to
log cancellation"]:::main N_KCSMIntegrationRequired_Node0 -- Yes --> N_KCSMIntegrationRequired_Node0_action N_KCSMIntegrationRequired_Node0_action --> E_KCSMIntegrationRequired S_KCSMIntegrationRequired --> N_KCSMIntegrationRequired_Node0 N_KCSMIntegrationRequired_Node1{"The system evaluates KCSM
integration requirements"}:::decision N_KCSMIntegrationRequired_Node1_action["System determines if KCSM
integration is required and routes
processing accordingly"]:::main N_KCSMIntegrationRequired_Node1 -- Yes --> N_KCSMIntegrationRequired_Node1_action N_KCSMIntegrationRequired_Node1_action --> E_KCSMIntegrationRequired N_KCSMIntegrationRequired_Node0 -- No --> N_KCSMIntegrationRequired_Node1 N_KCSMIntegrationRequired_Node1 -- No --> E_KCSMIntegrationRequired
File: GCX016.cbl
GIVEN:
Cancellation notifications have been generated
WHEN:
The system checks KCSM integration requirements
THEN:
If KCSM integration is required, copy EDI message for KCSM transmission, otherwise proceed to log cancellation
File: GCX016.cbl
GIVEN:
Equipment type has been validated
WHEN:
The system evaluates KCSM integration requirements
THEN:
- System determines if kcsm integration is required
- Routes processing accordingly
β Consolidated Acceptance Criteria
- The system prepares KCSM transmission → copy the EDI message to A9RT/A9DP KCSM transmission tables
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CopyEDIMessageforKCSM(["Start Step"])
E_CopyEDIMessageforKCSM(["End Step"])
N_CopyEDIMessageforKCSM_Node0{"The system prepares KCSM
transmission"}:::decision N_CopyEDIMessageforKCSM_Node0_action["Copy the EDI message to A9RTA9DP
KCSM transmission tables"]:::main N_CopyEDIMessageforKCSM_Node0 -- Yes --> N_CopyEDIMessageforKCSM_Node0_action N_CopyEDIMessageforKCSM_Node0_action --> E_CopyEDIMessageforKCSM S_CopyEDIMessageforKCSM --> N_CopyEDIMessageforKCSM_Node0 N_CopyEDIMessageforKCSM_Node0 -- No --> E_CopyEDIMessageforKCSM
transmission"}:::decision N_CopyEDIMessageforKCSM_Node0_action["Copy the EDI message to A9RTA9DP
KCSM transmission tables"]:::main N_CopyEDIMessageforKCSM_Node0 -- Yes --> N_CopyEDIMessageforKCSM_Node0_action N_CopyEDIMessageforKCSM_Node0_action --> E_CopyEDIMessageforKCSM S_CopyEDIMessageforKCSM --> N_CopyEDIMessageforKCSM_Node0 N_CopyEDIMessageforKCSM_Node0 -- No --> E_CopyEDIMessageforKCSM
File: GCX016.cbl
GIVEN:
KCSM integration is required for the train arrival cancellation
WHEN:
The system prepares KCSM transmission
THEN:
Copy the EDI message to A9RT/A9DP KCSM transmission tables
β Consolidated Acceptance Criteria
- The system creates the KCSM transmission record → create KCSM transmission record in A9RT/A9DP tables with appropriate transmission parameters
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CreateKCSMTransmission(["Start Step"])
E_CreateKCSMTransmission(["End Step"])
N_CreateKCSMTransmission_Node0{"The system creates the KCSM
transmission record"}:::decision N_CreateKCSMTransmission_Node0_action["Create KCSM transmission record in
A9RTA9DP tables with appropriate
transmission parameters"]:::main N_CreateKCSMTransmission_Node0 -- Yes --> N_CreateKCSMTransmission_Node0_action N_CreateKCSMTransmission_Node0_action --> E_CreateKCSMTransmission S_CreateKCSMTransmission --> N_CreateKCSMTransmission_Node0 N_CreateKCSMTransmission_Node0 -- No --> E_CreateKCSMTransmission
transmission record"}:::decision N_CreateKCSMTransmission_Node0_action["Create KCSM transmission record in
A9RTA9DP tables with appropriate
transmission parameters"]:::main N_CreateKCSMTransmission_Node0 -- Yes --> N_CreateKCSMTransmission_Node0_action N_CreateKCSMTransmission_Node0_action --> E_CreateKCSMTransmission S_CreateKCSMTransmission --> N_CreateKCSMTransmission_Node0 N_CreateKCSMTransmission_Node0 -- No --> E_CreateKCSMTransmission
File: GCX016.cbl
GIVEN:
EDI message has been copied for KCSM transmission
WHEN:
The system creates the KCSM transmission record
THEN:
Create KCSM transmission record in A9RT/A9DP tables with appropriate transmission parameters
β Consolidated Acceptance Criteria
- The system logs the cancellation event → create log entry with train details, cancellation timestamp, and processing results
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogTrainArrivalCancellation(["Start Step"])
E_LogTrainArrivalCancellation(["End Step"])
N_LogTrainArrivalCancellation_Node0{"The system logs the cancellation
event"}:::decision N_LogTrainArrivalCancellation_Node0_action["Create log entry with train
details, cancellation timestamp, and
processing results"]:::main N_LogTrainArrivalCancellation_Node0 -- Yes --> N_LogTrainArrivalCancellation_Node0_action N_LogTrainArrivalCancellation_Node0_action --> E_LogTrainArrivalCancellation S_LogTrainArrivalCancellation --> N_LogTrainArrivalCancellation_Node0 N_LogTrainArrivalCancellation_Node0 -- No --> E_LogTrainArrivalCancellation
event"}:::decision N_LogTrainArrivalCancellation_Node0_action["Create log entry with train
details, cancellation timestamp, and
processing results"]:::main N_LogTrainArrivalCancellation_Node0 -- Yes --> N_LogTrainArrivalCancellation_Node0_action N_LogTrainArrivalCancellation_Node0_action --> E_LogTrainArrivalCancellation S_LogTrainArrivalCancellation --> N_LogTrainArrivalCancellation_Node0 N_LogTrainArrivalCancellation_Node0 -- No --> E_LogTrainArrivalCancellation
File: GCX016.cbl
GIVEN:
Train arrival cancellation processing is complete and KCSM transmission is handled if required
WHEN:
The system logs the cancellation event
THEN:
Create log entry with train details, cancellation timestamp, and processing results
β Consolidated Acceptance Criteria
- The system sends stakeholder notifications → send notifications to brokers, customs, and other stakeholders with cancellation details and required actions
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SendNotificationstoStakeholders(["Start Step"])
E_SendNotificationstoStakeholders(["End Step"])
N_SendNotificationstoStakeholders_Node0{"The system sends stakeholder
notifications"}:::decision N_SendNotificationstoStakeholders_Node0_action["Send notifications to brokers,
customs, and other stakeholders with
cancellation details and required
actions"]:::main N_SendNotificationstoStakeholders_Node0 -- Yes --> N_SendNotificationstoStakeholders_Node0_action N_SendNotificationstoStakeholders_Node0_action --> E_SendNotificationstoStakeholders S_SendNotificationstoStakeholders --> N_SendNotificationstoStakeholders_Node0 N_SendNotificationstoStakeholders_Node0 -- No --> E_SendNotificationstoStakeholders
notifications"}:::decision N_SendNotificationstoStakeholders_Node0_action["Send notifications to brokers,
customs, and other stakeholders with
cancellation details and required
actions"]:::main N_SendNotificationstoStakeholders_Node0 -- Yes --> N_SendNotificationstoStakeholders_Node0_action N_SendNotificationstoStakeholders_Node0_action --> E_SendNotificationstoStakeholders S_SendNotificationstoStakeholders --> N_SendNotificationstoStakeholders_Node0 N_SendNotificationstoStakeholders_Node0 -- No --> E_SendNotificationstoStakeholders
File: GCX016.cbl
GIVEN:
Train arrival cancellation has been logged
WHEN:
The system sends stakeholder notifications
THEN:
- Send notifications to brokers, customs, and other stakeholders with cancellation details
- Required actions
β Consolidated Acceptance Criteria
- The system processes the V9 segment → the system initiates train lock processing workflow
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_V9SegmentwithLCKDispositionCodeReceived(["Start Step"])
E_V9SegmentwithLCKDispositionCodeReceived(["End Step"])
N_V9SegmentwithLCKDispositionCodeReceived_Node0{"The system processes the V9 segment"}:::decision
N_V9SegmentwithLCKDispositionCodeReceived_Node0_action["The system initiates train lock
processing workflow"]:::main N_V9SegmentwithLCKDispositionCodeReceived_Node0 -- Yes --> N_V9SegmentwithLCKDispositionCodeReceived_Node0_action N_V9SegmentwithLCKDispositionCodeReceived_Node0_action --> E_V9SegmentwithLCKDispositionCodeReceived S_V9SegmentwithLCKDispositionCodeReceived --> N_V9SegmentwithLCKDispositionCodeReceived_Node0 N_V9SegmentwithLCKDispositionCodeReceived_Node0 -- No --> E_V9SegmentwithLCKDispositionCodeReceived
processing workflow"]:::main N_V9SegmentwithLCKDispositionCodeReceived_Node0 -- Yes --> N_V9SegmentwithLCKDispositionCodeReceived_Node0_action N_V9SegmentwithLCKDispositionCodeReceived_Node0_action --> E_V9SegmentwithLCKDispositionCodeReceived S_V9SegmentwithLCKDispositionCodeReceived --> N_V9SegmentwithLCKDispositionCodeReceived_Node0 N_V9SegmentwithLCKDispositionCodeReceived_Node0 -- No --> E_V9SegmentwithLCKDispositionCodeReceived
File: GCX016.cbl
GIVEN:
A V9 segment is received with disposition code 'LCK'
WHEN:
The system processes the V9 segment
THEN:
The system initiates train lock processing workflow
β Consolidated Acceptance Criteria
- The system processes the train lock request → the system extracts train identification and operational details from M10 segment
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExtractTrainInformationfromM10Segment(["Start Step"])
E_ExtractTrainInformationfromM10Segment(["End Step"])
N_ExtractTrainInformationfromM10Segment_Node0{"The system processes the train lock
request"}:::decision N_ExtractTrainInformationfromM10Segment_Node0_action["The system extracts train
identification and operational
details from M10 segment"]:::main N_ExtractTrainInformationfromM10Segment_Node0 -- Yes --> N_ExtractTrainInformationfromM10Segment_Node0_action N_ExtractTrainInformationfromM10Segment_Node0_action --> E_ExtractTrainInformationfromM10Segment S_ExtractTrainInformationfromM10Segment --> N_ExtractTrainInformationfromM10Segment_Node0 N_ExtractTrainInformationfromM10Segment_Node0 -- No --> E_ExtractTrainInformationfromM10Segment
request"}:::decision N_ExtractTrainInformationfromM10Segment_Node0_action["The system extracts train
identification and operational
details from M10 segment"]:::main N_ExtractTrainInformationfromM10Segment_Node0 -- Yes --> N_ExtractTrainInformationfromM10Segment_Node0_action N_ExtractTrainInformationfromM10Segment_Node0_action --> E_ExtractTrainInformationfromM10Segment S_ExtractTrainInformationfromM10Segment --> N_ExtractTrainInformationfromM10Segment_Node0 N_ExtractTrainInformationfromM10Segment_Node0 -- No --> E_ExtractTrainInformationfromM10Segment
File: GCX016.cbl
GIVEN:
A valid train exists in the system AND M10 segment is available
WHEN:
The system processes the train lock request
THEN:
- The system extracts train identification
- Operational details from m10 segment
β Consolidated Acceptance Criteria
- The system processes the disposition code → the system interprets LCK code as a train lock operation AND prepares lock parameters
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ProcessLCKDispositionCode(["Start Step"])
E_ProcessLCKDispositionCode(["End Step"])
N_ProcessLCKDispositionCode_Node0{"The system processes the
disposition code"}:::decision N_ProcessLCKDispositionCode_Node0_action["The system interprets LCK code as a
train lock operation AND prepares
lock parameters"]:::main N_ProcessLCKDispositionCode_Node0 -- Yes --> N_ProcessLCKDispositionCode_Node0_action N_ProcessLCKDispositionCode_Node0_action --> E_ProcessLCKDispositionCode S_ProcessLCKDispositionCode --> N_ProcessLCKDispositionCode_Node0 N_ProcessLCKDispositionCode_Node0 -- No --> E_ProcessLCKDispositionCode
disposition code"}:::decision N_ProcessLCKDispositionCode_Node0_action["The system interprets LCK code as a
train lock operation AND prepares
lock parameters"]:::main N_ProcessLCKDispositionCode_Node0 -- Yes --> N_ProcessLCKDispositionCode_Node0_action N_ProcessLCKDispositionCode_Node0_action --> E_ProcessLCKDispositionCode S_ProcessLCKDispositionCode --> N_ProcessLCKDispositionCode_Node0 N_ProcessLCKDispositionCode_Node0 -- No --> E_ProcessLCKDispositionCode
File: GCX016.cbl
GIVEN:
Train information has been extracted AND LCK disposition code is present
WHEN:
The system processes the disposition code
THEN:
- The system interprets lck code as a train lock operation
- Prepares lock parameters
β Consolidated Acceptance Criteria
- The system applies the lock operation → the system sets the train status to locked AND prevents unauthorized modifications
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetTrainLockStatus(["Start Step"])
E_SetTrainLockStatus(["End Step"])
N_SetTrainLockStatus_Node0{"The system applies the lock
operation"}:::decision N_SetTrainLockStatus_Node0_action["The system sets the train status to
locked AND prevents unauthorized
modifications"]:::main N_SetTrainLockStatus_Node0 -- Yes --> N_SetTrainLockStatus_Node0_action N_SetTrainLockStatus_Node0_action --> E_SetTrainLockStatus S_SetTrainLockStatus --> N_SetTrainLockStatus_Node0 N_SetTrainLockStatus_Node0 -- No --> E_SetTrainLockStatus
operation"}:::decision N_SetTrainLockStatus_Node0_action["The system sets the train status to
locked AND prevents unauthorized
modifications"]:::main N_SetTrainLockStatus_Node0 -- Yes --> N_SetTrainLockStatus_Node0_action N_SetTrainLockStatus_Node0_action --> E_SetTrainLockStatus S_SetTrainLockStatus --> N_SetTrainLockStatus_Node0 N_SetTrainLockStatus_Node0 -- No --> E_SetTrainLockStatus
File: GCX016.cbl
GIVEN:
LCK disposition code has been processed successfully
WHEN:
The system applies the lock operation
THEN:
- The system sets the train status to locked
- Prevents unauthorized modifications
β Consolidated Acceptance Criteria
- The system updates the train record → the system updates GCWTL-TRAIN-LIST table with lock status AND timestamp information
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UpdateTrainRecordinGCWTLTRAINLIST(["Start Step"])
E_UpdateTrainRecordinGCWTLTRAINLIST(["End Step"])
N_UpdateTrainRecordinGCWTLTRAINLIST_Node0{"The system updates the train record"}:::decision
N_UpdateTrainRecordinGCWTLTRAINLIST_Node0_action["The system updates GCWTL-TRAIN-LIST
table with lock status AND timestamp
information"]:::main N_UpdateTrainRecordinGCWTLTRAINLIST_Node0 -- Yes --> N_UpdateTrainRecordinGCWTLTRAINLIST_Node0_action N_UpdateTrainRecordinGCWTLTRAINLIST_Node0_action --> E_UpdateTrainRecordinGCWTLTRAINLIST S_UpdateTrainRecordinGCWTLTRAINLIST --> N_UpdateTrainRecordinGCWTLTRAINLIST_Node0 N_UpdateTrainRecordinGCWTLTRAINLIST_Node0 -- No --> E_UpdateTrainRecordinGCWTLTRAINLIST
table with lock status AND timestamp
information"]:::main N_UpdateTrainRecordinGCWTLTRAINLIST_Node0 -- Yes --> N_UpdateTrainRecordinGCWTLTRAINLIST_Node0_action N_UpdateTrainRecordinGCWTLTRAINLIST_Node0_action --> E_UpdateTrainRecordinGCWTLTRAINLIST S_UpdateTrainRecordinGCWTLTRAINLIST --> N_UpdateTrainRecordinGCWTLTRAINLIST_Node0 N_UpdateTrainRecordinGCWTLTRAINLIST_Node0 -- No --> E_UpdateTrainRecordinGCWTLTRAINLIST
File: GCX016.cbl
GIVEN:
Train lock status has been set
WHEN:
The system updates the train record
THEN:
- The system updates gcwtl-train-list table with lock status
- Timestamp information
β Consolidated Acceptance Criteria
- The system completes the lock operation → the system creates an audit log entry with train ID, lock timestamp, AND operation details
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogTrainLockOperation(["Start Step"])
E_LogTrainLockOperation(["End Step"])
N_LogTrainLockOperation_Node0{"The system completes the lock
operation"}:::decision N_LogTrainLockOperation_Node0_action["The system creates an audit log
entry with train ID, lock timestamp,
AND operation details"]:::main N_LogTrainLockOperation_Node0 -- Yes --> N_LogTrainLockOperation_Node0_action N_LogTrainLockOperation_Node0_action --> E_LogTrainLockOperation S_LogTrainLockOperation --> N_LogTrainLockOperation_Node0 N_LogTrainLockOperation_Node0 -- No --> E_LogTrainLockOperation
operation"}:::decision N_LogTrainLockOperation_Node0_action["The system creates an audit log
entry with train ID, lock timestamp,
AND operation details"]:::main N_LogTrainLockOperation_Node0 -- Yes --> N_LogTrainLockOperation_Node0_action N_LogTrainLockOperation_Node0_action --> E_LogTrainLockOperation S_LogTrainLockOperation --> N_LogTrainLockOperation_Node0 N_LogTrainLockOperation_Node0 -- No --> E_LogTrainLockOperation
File: GCX016.cbl
GIVEN:
Train record has been updated with lock status
WHEN:
The system completes the lock operation
THEN:
The system creates an audit log entry with train ID, lock timestamp, AND operation details
β Consolidated Acceptance Criteria
- The system checks for additional information → the system determines if K1 remarks segment is present in the message
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_K1RemarksPresent(["Start Step"])
E_K1RemarksPresent(["End Step"])
N_K1RemarksPresent_Node0{"The system checks for additional
information"}:::decision N_K1RemarksPresent_Node0_action["The system determines if K1 remarks
segment is present in the message"]:::main N_K1RemarksPresent_Node0 -- Yes --> N_K1RemarksPresent_Node0_action N_K1RemarksPresent_Node0_action --> E_K1RemarksPresent S_K1RemarksPresent --> N_K1RemarksPresent_Node0 N_K1RemarksPresent_Node0 -- No --> E_K1RemarksPresent
information"}:::decision N_K1RemarksPresent_Node0_action["The system determines if K1 remarks
segment is present in the message"]:::main N_K1RemarksPresent_Node0 -- Yes --> N_K1RemarksPresent_Node0_action N_K1RemarksPresent_Node0_action --> E_K1RemarksPresent S_K1RemarksPresent --> N_K1RemarksPresent_Node0 N_K1RemarksPresent_Node0 -- No --> E_K1RemarksPresent
File: GCX016.cbl
GIVEN:
Train lock operation has been logged
WHEN:
The system checks for additional information
THEN:
The system determines if K1 remarks segment is present in the message
β Consolidated Acceptance Criteria
- The system processes the remarks → the system extracts lock reason, duration, AND additional operational notes from K1 segment
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ProcessK1RemarksforTrainLock(["Start Step"])
E_ProcessK1RemarksforTrainLock(["End Step"])
N_ProcessK1RemarksforTrainLock_Node0{"The system processes the remarks"}:::decision
N_ProcessK1RemarksforTrainLock_Node0_action["The system extracts lock reason,
duration, AND additional operational
notes from K1 segment"]:::main N_ProcessK1RemarksforTrainLock_Node0 -- Yes --> N_ProcessK1RemarksforTrainLock_Node0_action N_ProcessK1RemarksforTrainLock_Node0_action --> E_ProcessK1RemarksforTrainLock S_ProcessK1RemarksforTrainLock --> N_ProcessK1RemarksforTrainLock_Node0 N_ProcessK1RemarksforTrainLock_Node0 -- No --> E_ProcessK1RemarksforTrainLock
duration, AND additional operational
notes from K1 segment"]:::main N_ProcessK1RemarksforTrainLock_Node0 -- Yes --> N_ProcessK1RemarksforTrainLock_Node0_action N_ProcessK1RemarksforTrainLock_Node0_action --> E_ProcessK1RemarksforTrainLock S_ProcessK1RemarksforTrainLock --> N_ProcessK1RemarksforTrainLock_Node0 N_ProcessK1RemarksforTrainLock_Node0 -- No --> E_ProcessK1RemarksforTrainLock
File: GCX016.cbl
GIVEN:
K1 remarks segment is present in the message
WHEN:
The system processes the remarks
THEN:
The system extracts lock reason, duration, AND additional operational notes from K1 segment
β Consolidated Acceptance Criteria
- The system generates confirmation → the system creates a train lock confirmation message with train ID, lock timestamp, AND operation status
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GenerateTrainLockConfirmationMessage(["Start Step"])
E_GenerateTrainLockConfirmationMessage(["End Step"])
N_GenerateTrainLockConfirmationMessage_Node0{"The system generates confirmation"}:::decision
N_GenerateTrainLockConfirmationMessage_Node0_action["The system creates a train lock
confirmation message with train ID,
lock timestamp, AND operation status"]:::main N_GenerateTrainLockConfirmationMessage_Node0 -- Yes --> N_GenerateTrainLockConfirmationMessage_Node0_action N_GenerateTrainLockConfirmationMessage_Node0_action --> E_GenerateTrainLockConfirmationMessage S_GenerateTrainLockConfirmationMessage --> N_GenerateTrainLockConfirmationMessage_Node0 N_GenerateTrainLockConfirmationMessage_Node0 -- No --> E_GenerateTrainLockConfirmationMessage
confirmation message with train ID,
lock timestamp, AND operation status"]:::main N_GenerateTrainLockConfirmationMessage_Node0 -- Yes --> N_GenerateTrainLockConfirmationMessage_Node0_action N_GenerateTrainLockConfirmationMessage_Node0_action --> E_GenerateTrainLockConfirmationMessage S_GenerateTrainLockConfirmationMessage --> N_GenerateTrainLockConfirmationMessage_Node0 N_GenerateTrainLockConfirmationMessage_Node0 -- No --> E_GenerateTrainLockConfirmationMessage
File: GCX016.cbl
GIVEN:
Train lock operation is completed AND K1 remarks have been processed (if present)
WHEN:
The system generates confirmation
THEN:
The system creates a train lock confirmation message with train ID, lock timestamp, AND operation status
β Consolidated Acceptance Criteria
- The system sends notifications → the system sends lock notification to operations team AND updates operational dashboards
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SendNotificationtoOperations(["Start Step"])
E_SendNotificationtoOperations(["End Step"])
N_SendNotificationtoOperations_Node0{"The system sends notifications"}:::decision
N_SendNotificationtoOperations_Node0_action["The system sends lock notification
to operations team AND updates
operational dashboards"]:::main N_SendNotificationtoOperations_Node0 -- Yes --> N_SendNotificationtoOperations_Node0_action N_SendNotificationtoOperations_Node0_action --> E_SendNotificationtoOperations S_SendNotificationtoOperations --> N_SendNotificationtoOperations_Node0 N_SendNotificationtoOperations_Node0 -- No --> E_SendNotificationtoOperations
to operations team AND updates
operational dashboards"]:::main N_SendNotificationtoOperations_Node0 -- Yes --> N_SendNotificationtoOperations_Node0_action N_SendNotificationtoOperations_Node0_action --> E_SendNotificationtoOperations S_SendNotificationtoOperations --> N_SendNotificationtoOperations_Node0 N_SendNotificationtoOperations_Node0 -- No --> E_SendNotificationtoOperations
File: GCX016.cbl
GIVEN:
Train lock confirmation message has been generated
WHEN:
The system sends notifications
THEN:
- The system sends lock notification to operations team
- Updates operational dashboards
β Consolidated Acceptance Criteria
- The unlock operation is executed → the system updates the train status records to reflect unlocked state
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UpdateTrainStatustoUnlocked(["Start Step"])
E_UpdateTrainStatustoUnlocked(["End Step"])
N_UpdateTrainStatustoUnlocked_Node0{"The unlock operation is executed"}:::decision
N_UpdateTrainStatustoUnlocked_Node0_action["The system updates the train status
records to reflect unlocked state"]:::main N_UpdateTrainStatustoUnlocked_Node0 -- Yes --> N_UpdateTrainStatustoUnlocked_Node0_action N_UpdateTrainStatustoUnlocked_Node0_action --> E_UpdateTrainStatustoUnlocked S_UpdateTrainStatustoUnlocked --> N_UpdateTrainStatustoUnlocked_Node0 N_UpdateTrainStatustoUnlocked_Node0 -- No --> E_UpdateTrainStatustoUnlocked
records to reflect unlocked state"]:::main N_UpdateTrainStatustoUnlocked_Node0 -- Yes --> N_UpdateTrainStatustoUnlocked_Node0_action N_UpdateTrainStatustoUnlocked_Node0_action --> E_UpdateTrainStatustoUnlocked S_UpdateTrainStatustoUnlocked --> N_UpdateTrainStatustoUnlocked_Node0 N_UpdateTrainStatustoUnlocked_Node0 -- No --> E_UpdateTrainStatustoUnlocked
File: GCX016.cbl
GIVEN:
A valid ULC disposition code is being processed and the train exists in the system
WHEN:
The unlock operation is executed
THEN:
The system updates the train status records to reflect unlocked state
β Consolidated Acceptance Criteria
- The train status is updated to unlocked → the system creates a log entry recording the train unlock activity with timestamp and relevant details
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogTrainUnlockActivity(["Start Step"])
E_LogTrainUnlockActivity(["End Step"])
N_LogTrainUnlockActivity_Node0{"The train status is updated to
unlocked"}:::decision N_LogTrainUnlockActivity_Node0_action["The system creates a log entry
recording the train unlock activity
with timestamp and relevant details"]:::main N_LogTrainUnlockActivity_Node0 -- Yes --> N_LogTrainUnlockActivity_Node0_action N_LogTrainUnlockActivity_Node0_action --> E_LogTrainUnlockActivity S_LogTrainUnlockActivity --> N_LogTrainUnlockActivity_Node0 N_LogTrainUnlockActivity_Node0 -- No --> E_LogTrainUnlockActivity
unlocked"}:::decision N_LogTrainUnlockActivity_Node0_action["The system creates a log entry
recording the train unlock activity
with timestamp and relevant details"]:::main N_LogTrainUnlockActivity_Node0 -- Yes --> N_LogTrainUnlockActivity_Node0_action N_LogTrainUnlockActivity_Node0_action --> E_LogTrainUnlockActivity S_LogTrainUnlockActivity --> N_LogTrainUnlockActivity_Node0 N_LogTrainUnlockActivity_Node0 -- No --> E_LogTrainUnlockActivity
File: GCX016.cbl
GIVEN:
A train unlock operation has been successfully processed
WHEN:
The train status is updated to unlocked
THEN:
- The system creates a log entry recording the train unlock activity with timestamp
- Relevant details
β Consolidated Acceptance Criteria
- The system examines the message segments for VID equipment information → the system identifies whether VID segments are present and sets appropriate processing flags
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CheckforVIDEquipmentSegments(["Start Step"])
E_CheckforVIDEquipmentSegments(["End Step"])
N_CheckforVIDEquipmentSegments_Node0{"The system examines the message
segments for VID equipment
information"}:::decision N_CheckforVIDEquipmentSegments_Node0_action["The system identifies whether VID
segments are present and sets
appropriate processing flags"]:::main N_CheckforVIDEquipmentSegments_Node0 -- Yes --> N_CheckforVIDEquipmentSegments_Node0_action N_CheckforVIDEquipmentSegments_Node0_action --> E_CheckforVIDEquipmentSegments S_CheckforVIDEquipmentSegments --> N_CheckforVIDEquipmentSegments_Node0 N_CheckforVIDEquipmentSegments_Node0 -- No --> E_CheckforVIDEquipmentSegments
segments for VID equipment
information"}:::decision N_CheckforVIDEquipmentSegments_Node0_action["The system identifies whether VID
segments are present and sets
appropriate processing flags"]:::main N_CheckforVIDEquipmentSegments_Node0 -- Yes --> N_CheckforVIDEquipmentSegments_Node0_action N_CheckforVIDEquipmentSegments_Node0_action --> E_CheckforVIDEquipmentSegments S_CheckforVIDEquipmentSegments --> N_CheckforVIDEquipmentSegments_Node0 N_CheckforVIDEquipmentSegments_Node0 -- No --> E_CheckforVIDEquipmentSegments
File: GCX016.cbl
GIVEN:
A train unlock operation is being processed
WHEN:
The system examines the message segments for VID equipment information
THEN:
- The system identifies whether vid segments are present
- Sets appropriate processing flags
β Consolidated Acceptance Criteria
- The system processes individual equipment unlock operations → the system iterates through each VID segment and processes unlock operations for the specified equipment
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ProcessIndividualEquipmentUnlock(["Start Step"])
E_ProcessIndividualEquipmentUnlock(["End Step"])
N_ProcessIndividualEquipmentUnlock_Node0{"The system processes individual
equipment unlock operations"}:::decision N_ProcessIndividualEquipmentUnlock_Node0_action["The system iterates through each
VID segment and processes unlock
operations for the specified
equipment"]:::main N_ProcessIndividualEquipmentUnlock_Node0 -- Yes --> N_ProcessIndividualEquipmentUnlock_Node0_action N_ProcessIndividualEquipmentUnlock_Node0_action --> E_ProcessIndividualEquipmentUnlock S_ProcessIndividualEquipmentUnlock --> N_ProcessIndividualEquipmentUnlock_Node0 N_ProcessIndividualEquipmentUnlock_Node0 -- No --> E_ProcessIndividualEquipmentUnlock
equipment unlock operations"}:::decision N_ProcessIndividualEquipmentUnlock_Node0_action["The system iterates through each
VID segment and processes unlock
operations for the specified
equipment"]:::main N_ProcessIndividualEquipmentUnlock_Node0 -- Yes --> N_ProcessIndividualEquipmentUnlock_Node0_action N_ProcessIndividualEquipmentUnlock_Node0_action --> E_ProcessIndividualEquipmentUnlock S_ProcessIndividualEquipmentUnlock --> N_ProcessIndividualEquipmentUnlock_Node0 N_ProcessIndividualEquipmentUnlock_Node0 -- No --> E_ProcessIndividualEquipmentUnlock
File: GCX016.cbl
GIVEN:
VID equipment segments are present in the ULC message
WHEN:
The system processes individual equipment unlock operations
THEN:
- The system iterates through each vid segment
- Processes unlock operations for the specified equipment
β Consolidated Acceptance Criteria
- Each equipment item is processed for unlock → the system updates the equipment records to reflect unlocked status for each specified equipment item
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UpdateEquipmentStatustoUnlocked(["Start Step"])
E_UpdateEquipmentStatustoUnlocked(["End Step"])
N_UpdateEquipmentStatustoUnlocked_Node0{"Each equipment item is processed
for unlock"}:::decision N_UpdateEquipmentStatustoUnlocked_Node0_action["The system updates the equipment
records to reflect unlocked status
for each specified equipment item"]:::main N_UpdateEquipmentStatustoUnlocked_Node0 -- Yes --> N_UpdateEquipmentStatustoUnlocked_Node0_action N_UpdateEquipmentStatustoUnlocked_Node0_action --> E_UpdateEquipmentStatustoUnlocked S_UpdateEquipmentStatustoUnlocked --> N_UpdateEquipmentStatustoUnlocked_Node0 N_UpdateEquipmentStatustoUnlocked_Node0 -- No --> E_UpdateEquipmentStatustoUnlocked
for unlock"}:::decision N_UpdateEquipmentStatustoUnlocked_Node0_action["The system updates the equipment
records to reflect unlocked status
for each specified equipment item"]:::main N_UpdateEquipmentStatustoUnlocked_Node0 -- Yes --> N_UpdateEquipmentStatustoUnlocked_Node0_action N_UpdateEquipmentStatustoUnlocked_Node0_action --> E_UpdateEquipmentStatustoUnlocked S_UpdateEquipmentStatustoUnlocked --> N_UpdateEquipmentStatustoUnlocked_Node0 N_UpdateEquipmentStatustoUnlocked_Node0 -- No --> E_UpdateEquipmentStatustoUnlocked
File: GCX016.cbl
GIVEN:
Individual equipment unlock processing is being performed for VID segments
WHEN:
Each equipment item is processed for unlock
THEN:
The system updates the equipment records to reflect unlocked status for each specified equipment item
β Consolidated Acceptance Criteria
- All unlock processing is finished → the system generates a confirmation message indicating successful train unlock completion
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GenerateTrainUnlockConfirmation(["Start Step"])
E_GenerateTrainUnlockConfirmation(["End Step"])
N_GenerateTrainUnlockConfirmation_Node0{"All unlock processing is finished"}:::decision
N_GenerateTrainUnlockConfirmation_Node0_action["The system generates a confirmation
message indicating successful train
unlock completion"]:::main N_GenerateTrainUnlockConfirmation_Node0 -- Yes --> N_GenerateTrainUnlockConfirmation_Node0_action N_GenerateTrainUnlockConfirmation_Node0_action --> E_GenerateTrainUnlockConfirmation S_GenerateTrainUnlockConfirmation --> N_GenerateTrainUnlockConfirmation_Node0 N_GenerateTrainUnlockConfirmation_Node0 -- No --> E_GenerateTrainUnlockConfirmation
message indicating successful train
unlock completion"]:::main N_GenerateTrainUnlockConfirmation_Node0 -- Yes --> N_GenerateTrainUnlockConfirmation_Node0_action N_GenerateTrainUnlockConfirmation_Node0_action --> E_GenerateTrainUnlockConfirmation S_GenerateTrainUnlockConfirmation --> N_GenerateTrainUnlockConfirmation_Node0 N_GenerateTrainUnlockConfirmation_Node0 -- No --> E_GenerateTrainUnlockConfirmation
File: GCX016.cbl
GIVEN:
Train unlock operations have been successfully completed including any individual equipment processing
WHEN:
All unlock processing is finished
THEN:
The system generates a confirmation message indicating successful train unlock completion
β Consolidated Acceptance Criteria
- The system processes notification distribution → the system sends unlock notification messages to relevant parties and connected systems
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SendNotificationMessages(["Start Step"])
E_SendNotificationMessages(["End Step"])
N_SendNotificationMessages_Node0{"The system processes notification
distribution"}:::decision N_SendNotificationMessages_Node0_action["The system sends unlock
notification messages to relevant
parties and connected systems"]:::main N_SendNotificationMessages_Node0 -- Yes --> N_SendNotificationMessages_Node0_action N_SendNotificationMessages_Node0_action --> E_SendNotificationMessages S_SendNotificationMessages --> N_SendNotificationMessages_Node0 N_SendNotificationMessages_Node0 -- No --> E_SendNotificationMessages
distribution"}:::decision N_SendNotificationMessages_Node0_action["The system sends unlock
notification messages to relevant
parties and connected systems"]:::main N_SendNotificationMessages_Node0 -- Yes --> N_SendNotificationMessages_Node0_action N_SendNotificationMessages_Node0_action --> E_SendNotificationMessages S_SendNotificationMessages --> N_SendNotificationMessages_Node0 N_SendNotificationMessages_Node0 -- No --> E_SendNotificationMessages
File: GCX016.cbl
GIVEN:
Train unlock confirmation has been generated
WHEN:
The system processes notification distribution
THEN:
- The system sends unlock notification messages to relevant parties
- Connected systems
β Consolidated Acceptance Criteria
- The V9 segment contains SEI disposition code → the system initiates train seizure processing and prepares for equipment seizure operations
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ProcessSEITrainSeizureCode(["Start Step"])
E_ProcessSEITrainSeizureCode(["End Step"])
N_ProcessSEITrainSeizureCode_Node0{"The V9 segment contains SEI
disposition code"}:::decision N_ProcessSEITrainSeizureCode_Node0_action["The system initiates train seizure
processing and prepares for
equipment seizure operations"]:::main N_ProcessSEITrainSeizureCode_Node0 -- Yes --> N_ProcessSEITrainSeizureCode_Node0_action N_ProcessSEITrainSeizureCode_Node0_action --> E_ProcessSEITrainSeizureCode S_ProcessSEITrainSeizureCode --> N_ProcessSEITrainSeizureCode_Node0 N_ProcessSEITrainSeizureCode_Node0 -- No --> E_ProcessSEITrainSeizureCode
disposition code"}:::decision N_ProcessSEITrainSeizureCode_Node0_action["The system initiates train seizure
processing and prepares for
equipment seizure operations"]:::main N_ProcessSEITrainSeizureCode_Node0 -- Yes --> N_ProcessSEITrainSeizureCode_Node0_action N_ProcessSEITrainSeizureCode_Node0_action --> E_ProcessSEITrainSeizureCode S_ProcessSEITrainSeizureCode --> N_ProcessSEITrainSeizureCode_Node0 N_ProcessSEITrainSeizureCode_Node0 -- No --> E_ProcessSEITrainSeizureCode
File: GCX016.cbl
GIVEN:
A valid train exists in the system
WHEN:
The V9 segment contains SEI disposition code
THEN:
- The system initiates train seizure processing
- Prepares for equipment seizure operations
β Consolidated Acceptance Criteria
- The system begins processing equipment seizure operations → the system initializes equipment seizure counter to zero
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_InitializeEquipmentSeizureCounter(["Start Step"])
E_InitializeEquipmentSeizureCounter(["End Step"])
N_InitializeEquipmentSeizureCounter_Node0{"The system begins processing
equipment seizure operations"}:::decision N_InitializeEquipmentSeizureCounter_Node0_action["The system initializes equipment
seizure counter to zero"]:::main N_InitializeEquipmentSeizureCounter_Node0 -- Yes --> N_InitializeEquipmentSeizureCounter_Node0_action N_InitializeEquipmentSeizureCounter_Node0_action --> E_InitializeEquipmentSeizureCounter S_InitializeEquipmentSeizureCounter --> N_InitializeEquipmentSeizureCounter_Node0 N_InitializeEquipmentSeizureCounter_Node0 -- No --> E_InitializeEquipmentSeizureCounter
equipment seizure operations"}:::decision N_InitializeEquipmentSeizureCounter_Node0_action["The system initializes equipment
seizure counter to zero"]:::main N_InitializeEquipmentSeizureCounter_Node0 -- Yes --> N_InitializeEquipmentSeizureCounter_Node0_action N_InitializeEquipmentSeizureCounter_Node0_action --> E_InitializeEquipmentSeizureCounter S_InitializeEquipmentSeizureCounter --> N_InitializeEquipmentSeizureCounter_Node0 N_InitializeEquipmentSeizureCounter_Node0 -- No --> E_InitializeEquipmentSeizureCounter
File: GCX016.cbl
GIVEN:
Train seizure processing has been initiated
WHEN:
The system begins processing equipment seizure operations
THEN:
The system initializes equipment seizure counter to zero
β Consolidated Acceptance Criteria
- The system processes each VID segment → the system marks the specific equipment identified in the VID segment as seized
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ProcessVIDSegmentforEquipmentSeizure(["Start Step"])
E_ProcessVIDSegmentforEquipmentSeizure(["End Step"])
N_ProcessVIDSegmentforEquipmentSeizure_Node0{"The system processes each VID
segment"}:::decision N_ProcessVIDSegmentforEquipmentSeizure_Node0_action["The system marks the specific
equipment identified in the VID
segment as seized"]:::main N_ProcessVIDSegmentforEquipmentSeizure_Node0 -- Yes --> N_ProcessVIDSegmentforEquipmentSeizure_Node0_action N_ProcessVIDSegmentforEquipmentSeizure_Node0_action --> E_ProcessVIDSegmentforEquipmentSeizure S_ProcessVIDSegmentforEquipmentSeizure --> N_ProcessVIDSegmentforEquipmentSeizure_Node0 N_ProcessVIDSegmentforEquipmentSeizure_Node0 -- No --> E_ProcessVIDSegmentforEquipmentSeizure
segment"}:::decision N_ProcessVIDSegmentforEquipmentSeizure_Node0_action["The system marks the specific
equipment identified in the VID
segment as seized"]:::main N_ProcessVIDSegmentforEquipmentSeizure_Node0 -- Yes --> N_ProcessVIDSegmentforEquipmentSeizure_Node0_action N_ProcessVIDSegmentforEquipmentSeizure_Node0_action --> E_ProcessVIDSegmentforEquipmentSeizure S_ProcessVIDSegmentforEquipmentSeizure --> N_ProcessVIDSegmentforEquipmentSeizure_Node0 N_ProcessVIDSegmentforEquipmentSeizure_Node0 -- No --> E_ProcessVIDSegmentforEquipmentSeizure
File: GCX016.cbl
GIVEN:
VID segments are present following the SEI disposition code
WHEN:
The system processes each VID segment
THEN:
The system marks the specific equipment identified in the VID segment as seized
β Consolidated Acceptance Criteria
- The system processes the equipment seizure request → the system updates the equipment status to seized in the equipment records
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MarkSpecificEquipmentasSeized(["Start Step"])
E_MarkSpecificEquipmentasSeized(["End Step"])
N_MarkSpecificEquipmentasSeized_Node0{"The system processes the equipment
seizure request"}:::decision N_MarkSpecificEquipmentasSeized_Node0_action["The system updates the equipment
status to seized in the equipment
records"]:::main N_MarkSpecificEquipmentasSeized_Node0 -- Yes --> N_MarkSpecificEquipmentasSeized_Node0_action N_MarkSpecificEquipmentasSeized_Node0_action --> E_MarkSpecificEquipmentasSeized S_MarkSpecificEquipmentasSeized --> N_MarkSpecificEquipmentasSeized_Node0 N_MarkSpecificEquipmentasSeized_Node0 -- No --> E_MarkSpecificEquipmentasSeized
seizure request"}:::decision N_MarkSpecificEquipmentasSeized_Node0_action["The system updates the equipment
status to seized in the equipment
records"]:::main N_MarkSpecificEquipmentasSeized_Node0 -- Yes --> N_MarkSpecificEquipmentasSeized_Node0_action N_MarkSpecificEquipmentasSeized_Node0_action --> E_MarkSpecificEquipmentasSeized S_MarkSpecificEquipmentasSeized --> N_MarkSpecificEquipmentasSeized_Node0 N_MarkSpecificEquipmentasSeized_Node0 -- No --> E_MarkSpecificEquipmentasSeized
File: GCX016.cbl
GIVEN:
A VID segment identifies specific equipment for seizure
WHEN:
The system processes the equipment seizure request
THEN:
The system updates the equipment status to seized in the equipment records
β Consolidated Acceptance Criteria
- The seizure operation is completed for the equipment → the system increments the equipment seizure counter by one
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IncrementEquipmentSeizureCount(["Start Step"])
E_IncrementEquipmentSeizureCount(["End Step"])
N_IncrementEquipmentSeizureCount_Node0{"The seizure operation is completed
for the equipment"}:::decision N_IncrementEquipmentSeizureCount_Node0_action["The system increments the equipment
seizure counter by one"]:::main N_IncrementEquipmentSeizureCount_Node0 -- Yes --> N_IncrementEquipmentSeizureCount_Node0_action N_IncrementEquipmentSeizureCount_Node0_action --> E_IncrementEquipmentSeizureCount S_IncrementEquipmentSeizureCount --> N_IncrementEquipmentSeizureCount_Node0 N_IncrementEquipmentSeizureCount_Node0 -- No --> E_IncrementEquipmentSeizureCount
for the equipment"}:::decision N_IncrementEquipmentSeizureCount_Node0_action["The system increments the equipment
seizure counter by one"]:::main N_IncrementEquipmentSeizureCount_Node0 -- Yes --> N_IncrementEquipmentSeizureCount_Node0_action N_IncrementEquipmentSeizureCount_Node0_action --> E_IncrementEquipmentSeizureCount S_IncrementEquipmentSeizureCount --> N_IncrementEquipmentSeizureCount_Node0 N_IncrementEquipmentSeizureCount_Node0 -- No --> E_IncrementEquipmentSeizureCount
File: GCX016.cbl
GIVEN:
An equipment item has been marked as seized
WHEN:
The seizure operation is completed for the equipment
THEN:
The system increments the equipment seizure counter by one
β Consolidated Acceptance Criteria
- If the seizure status of all equipment on the train → the system determines whether the train is fully seized or partially seized
- If total seizure coverage → if all equipment on the train is seized, set train as fully seized, otherwise set as partially seized
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AllEquipmentSeized(["Start Step"])
E_AllEquipmentSeized(["End Step"])
N_AllEquipmentSeized_Node0{"The system evaluates the seizure
status of all equipment on the train"}:::decision N_AllEquipmentSeized_Node0_action["The system determines whether the
train is fully seized or partially
seized"]:::main N_AllEquipmentSeized_Node0 -- Yes --> N_AllEquipmentSeized_Node0_action N_AllEquipmentSeized_Node0_action --> E_AllEquipmentSeized S_AllEquipmentSeized --> N_AllEquipmentSeized_Node0 N_AllEquipmentSeized_Node1{"The system evaluates total seizure
coverage"}:::decision N_AllEquipmentSeized_Node1_action["If all equipment on the train is
seized, set train as fully seized,
otherwise set as partially seized"]:::main N_AllEquipmentSeized_Node1 -- Yes --> N_AllEquipmentSeized_Node1_action N_AllEquipmentSeized_Node1_action --> E_AllEquipmentSeized N_AllEquipmentSeized_Node0 -- No --> N_AllEquipmentSeized_Node1 N_AllEquipmentSeized_Node1 -- No --> E_AllEquipmentSeized
status of all equipment on the train"}:::decision N_AllEquipmentSeized_Node0_action["The system determines whether the
train is fully seized or partially
seized"]:::main N_AllEquipmentSeized_Node0 -- Yes --> N_AllEquipmentSeized_Node0_action N_AllEquipmentSeized_Node0_action --> E_AllEquipmentSeized S_AllEquipmentSeized --> N_AllEquipmentSeized_Node0 N_AllEquipmentSeized_Node1{"The system evaluates total seizure
coverage"}:::decision N_AllEquipmentSeized_Node1_action["If all equipment on the train is
seized, set train as fully seized,
otherwise set as partially seized"]:::main N_AllEquipmentSeized_Node1 -- Yes --> N_AllEquipmentSeized_Node1_action N_AllEquipmentSeized_Node1_action --> E_AllEquipmentSeized N_AllEquipmentSeized_Node0 -- No --> N_AllEquipmentSeized_Node1 N_AllEquipmentSeized_Node1 -- No --> E_AllEquipmentSeized
File: GCX016.cbl
GIVEN:
Equipment seizure operations have been completed
WHEN:
The system evaluates the seizure status of all equipment on the train
THEN:
The system determines whether the train is fully seized or partially seized
File: GCX016.cbl
GIVEN:
Train seizure status has been updated with seized equipment count
WHEN:
The system evaluates total seizure coverage
THEN:
If all equipment on the train is seized, set train as fully seized, otherwise set as partially seized
β Consolidated Acceptance Criteria
- The system updates the train seizure status → the system sets the train status to fully seized
- The system updates train status → the train status is set to fully seized
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetTrainStatustoFullySeized(["Start Step"])
E_SetTrainStatustoFullySeized(["End Step"])
N_SetTrainStatustoFullySeized_Node0{"The system updates the train
seizure status"}:::decision N_SetTrainStatustoFullySeized_Node0_action["The system sets the train status to
fully seized"]:::main N_SetTrainStatustoFullySeized_Node0 -- Yes --> N_SetTrainStatustoFullySeized_Node0_action N_SetTrainStatustoFullySeized_Node0_action --> E_SetTrainStatustoFullySeized S_SetTrainStatustoFullySeized --> N_SetTrainStatustoFullySeized_Node0 N_SetTrainStatustoFullySeized_Node1{"The system updates train status"}:::decision N_SetTrainStatustoFullySeized_Node1_action["The train status is set to fully
seized"]:::main N_SetTrainStatustoFullySeized_Node1 -- Yes --> N_SetTrainStatustoFullySeized_Node1_action N_SetTrainStatustoFullySeized_Node1_action --> E_SetTrainStatustoFullySeized N_SetTrainStatustoFullySeized_Node0 -- No --> N_SetTrainStatustoFullySeized_Node1 N_SetTrainStatustoFullySeized_Node1 -- No --> E_SetTrainStatustoFullySeized
seizure status"}:::decision N_SetTrainStatustoFullySeized_Node0_action["The system sets the train status to
fully seized"]:::main N_SetTrainStatustoFullySeized_Node0 -- Yes --> N_SetTrainStatustoFullySeized_Node0_action N_SetTrainStatustoFullySeized_Node0_action --> E_SetTrainStatustoFullySeized S_SetTrainStatustoFullySeized --> N_SetTrainStatustoFullySeized_Node0 N_SetTrainStatustoFullySeized_Node1{"The system updates train status"}:::decision N_SetTrainStatustoFullySeized_Node1_action["The train status is set to fully
seized"]:::main N_SetTrainStatustoFullySeized_Node1 -- Yes --> N_SetTrainStatustoFullySeized_Node1_action N_SetTrainStatustoFullySeized_Node1_action --> E_SetTrainStatustoFullySeized N_SetTrainStatustoFullySeized_Node0 -- No --> N_SetTrainStatustoFullySeized_Node1 N_SetTrainStatustoFullySeized_Node1 -- No --> E_SetTrainStatustoFullySeized
File: GCX016.cbl
GIVEN:
All equipment on the train has been seized
WHEN:
The system updates the train seizure status
THEN:
The system sets the train status to fully seized
File: GCX016.cbl
GIVEN:
All equipment on the train has been seized
WHEN:
The system updates train status
THEN:
The train status is set to fully seized
β Consolidated Acceptance Criteria
- The system updates the train seizure status → the system sets the train status to partially seized
- The system updates train status → the train status is set to partially seized
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetTrainStatustoPartiallySeized(["Start Step"])
E_SetTrainStatustoPartiallySeized(["End Step"])
N_SetTrainStatustoPartiallySeized_Node0{"The system updates the train
seizure status"}:::decision N_SetTrainStatustoPartiallySeized_Node0_action["The system sets the train status to
partially seized"]:::main N_SetTrainStatustoPartiallySeized_Node0 -- Yes --> N_SetTrainStatustoPartiallySeized_Node0_action N_SetTrainStatustoPartiallySeized_Node0_action --> E_SetTrainStatustoPartiallySeized S_SetTrainStatustoPartiallySeized --> N_SetTrainStatustoPartiallySeized_Node0 N_SetTrainStatustoPartiallySeized_Node1{"The system updates train status"}:::decision N_SetTrainStatustoPartiallySeized_Node1_action["The train status is set to
partially seized"]:::main N_SetTrainStatustoPartiallySeized_Node1 -- Yes --> N_SetTrainStatustoPartiallySeized_Node1_action N_SetTrainStatustoPartiallySeized_Node1_action --> E_SetTrainStatustoPartiallySeized N_SetTrainStatustoPartiallySeized_Node0 -- No --> N_SetTrainStatustoPartiallySeized_Node1 N_SetTrainStatustoPartiallySeized_Node1 -- No --> E_SetTrainStatustoPartiallySeized
seizure status"}:::decision N_SetTrainStatustoPartiallySeized_Node0_action["The system sets the train status to
partially seized"]:::main N_SetTrainStatustoPartiallySeized_Node0 -- Yes --> N_SetTrainStatustoPartiallySeized_Node0_action N_SetTrainStatustoPartiallySeized_Node0_action --> E_SetTrainStatustoPartiallySeized S_SetTrainStatustoPartiallySeized --> N_SetTrainStatustoPartiallySeized_Node0 N_SetTrainStatustoPartiallySeized_Node1{"The system updates train status"}:::decision N_SetTrainStatustoPartiallySeized_Node1_action["The train status is set to
partially seized"]:::main N_SetTrainStatustoPartiallySeized_Node1 -- Yes --> N_SetTrainStatustoPartiallySeized_Node1_action N_SetTrainStatustoPartiallySeized_Node1_action --> E_SetTrainStatustoPartiallySeized N_SetTrainStatustoPartiallySeized_Node0 -- No --> N_SetTrainStatustoPartiallySeized_Node1 N_SetTrainStatustoPartiallySeized_Node1 -- No --> E_SetTrainStatustoPartiallySeized
File: GCX016.cbl
GIVEN:
Only some equipment on the train has been seized
WHEN:
The system updates the train seizure status
THEN:
The system sets the train status to partially seized
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
Some equipment on the train has been seized but not all equipment
WHEN:
The system updates train status
THEN:
The train status is set to partially seized
β Consolidated Acceptance Criteria
- The system completes the seizure operation → the system logs the train seizure operation with seizure details and timestamp
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogTrainSeizureOperation(["Start Step"])
E_LogTrainSeizureOperation(["End Step"])
N_LogTrainSeizureOperation_Node0{"The system completes the seizure
operation"}:::decision N_LogTrainSeizureOperation_Node0_action["The system logs the train seizure
operation with seizure details and
timestamp"]:::main N_LogTrainSeizureOperation_Node0 -- Yes --> N_LogTrainSeizureOperation_Node0_action N_LogTrainSeizureOperation_Node0_action --> E_LogTrainSeizureOperation S_LogTrainSeizureOperation --> N_LogTrainSeizureOperation_Node0 N_LogTrainSeizureOperation_Node0 -- No --> E_LogTrainSeizureOperation
operation"}:::decision N_LogTrainSeizureOperation_Node0_action["The system logs the train seizure
operation with seizure details and
timestamp"]:::main N_LogTrainSeizureOperation_Node0 -- Yes --> N_LogTrainSeizureOperation_Node0_action N_LogTrainSeizureOperation_Node0_action --> E_LogTrainSeizureOperation S_LogTrainSeizureOperation --> N_LogTrainSeizureOperation_Node0 N_LogTrainSeizureOperation_Node0 -- No --> E_LogTrainSeizureOperation
File: GCX016.cbl
GIVEN:
Train seizure status has been updated
WHEN:
The system completes the seizure operation
THEN:
- The system logs the train seizure operation with seizure details
- Timestamp
β Consolidated Acceptance Criteria
- The system prepares stakeholder notifications → the system generates seizure notification message with train and equipment details
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GenerateSeizureNotificationMessage(["Start Step"])
E_GenerateSeizureNotificationMessage(["End Step"])
N_GenerateSeizureNotificationMessage_Node0{"The system prepares stakeholder
notifications"}:::decision N_GenerateSeizureNotificationMessage_Node0_action["The system generates seizure
notification message with train and
equipment details"]:::main N_GenerateSeizureNotificationMessage_Node0 -- Yes --> N_GenerateSeizureNotificationMessage_Node0_action N_GenerateSeizureNotificationMessage_Node0_action --> E_GenerateSeizureNotificationMessage S_GenerateSeizureNotificationMessage --> N_GenerateSeizureNotificationMessage_Node0 N_GenerateSeizureNotificationMessage_Node0 -- No --> E_GenerateSeizureNotificationMessage
notifications"}:::decision N_GenerateSeizureNotificationMessage_Node0_action["The system generates seizure
notification message with train and
equipment details"]:::main N_GenerateSeizureNotificationMessage_Node0 -- Yes --> N_GenerateSeizureNotificationMessage_Node0_action N_GenerateSeizureNotificationMessage_Node0_action --> E_GenerateSeizureNotificationMessage S_GenerateSeizureNotificationMessage --> N_GenerateSeizureNotificationMessage_Node0 N_GenerateSeizureNotificationMessage_Node0 -- No --> E_GenerateSeizureNotificationMessage
File: GCX016.cbl
GIVEN:
Train seizure operation has been logged
WHEN:
The system prepares stakeholder notifications
THEN:
- The system generates seizure notification message with train
- Equipment details
β Consolidated Acceptance Criteria
- The system persists the seizure operation results → the system updates the train record in the database with the new seizure status and related information
- The system commits changes → train record is updated in the database with current status and equipment information
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UpdateTrainRecordinDatabase(["Start Step"])
E_UpdateTrainRecordinDatabase(["End Step"])
N_UpdateTrainRecordinDatabase_Node0{"The system persists the seizure
operation results"}:::decision N_UpdateTrainRecordinDatabase_Node0_action["The system updates the train record
in the database with the new seizure
status and related information"]:::main N_UpdateTrainRecordinDatabase_Node0 -- Yes --> N_UpdateTrainRecordinDatabase_Node0_action N_UpdateTrainRecordinDatabase_Node0_action --> E_UpdateTrainRecordinDatabase S_UpdateTrainRecordinDatabase --> N_UpdateTrainRecordinDatabase_Node0 N_UpdateTrainRecordinDatabase_Node1{"The system commits changes"}:::decision N_UpdateTrainRecordinDatabase_Node1_action["Train record is updated in the
database with current status and
equipment information"]:::main N_UpdateTrainRecordinDatabase_Node1 -- Yes --> N_UpdateTrainRecordinDatabase_Node1_action N_UpdateTrainRecordinDatabase_Node1_action --> E_UpdateTrainRecordinDatabase N_UpdateTrainRecordinDatabase_Node0 -- No --> N_UpdateTrainRecordinDatabase_Node1 N_UpdateTrainRecordinDatabase_Node1 -- No --> E_UpdateTrainRecordinDatabase
operation results"}:::decision N_UpdateTrainRecordinDatabase_Node0_action["The system updates the train record
in the database with the new seizure
status and related information"]:::main N_UpdateTrainRecordinDatabase_Node0 -- Yes --> N_UpdateTrainRecordinDatabase_Node0_action N_UpdateTrainRecordinDatabase_Node0_action --> E_UpdateTrainRecordinDatabase S_UpdateTrainRecordinDatabase --> N_UpdateTrainRecordinDatabase_Node0 N_UpdateTrainRecordinDatabase_Node1{"The system commits changes"}:::decision N_UpdateTrainRecordinDatabase_Node1_action["Train record is updated in the
database with current status and
equipment information"]:::main N_UpdateTrainRecordinDatabase_Node1 -- Yes --> N_UpdateTrainRecordinDatabase_Node1_action N_UpdateTrainRecordinDatabase_Node1_action --> E_UpdateTrainRecordinDatabase N_UpdateTrainRecordinDatabase_Node0 -- No --> N_UpdateTrainRecordinDatabase_Node1 N_UpdateTrainRecordinDatabase_Node1 -- No --> E_UpdateTrainRecordinDatabase
File: GCX016.cbl
GIVEN:
Seizure notification message has been generated
WHEN:
The system persists the seizure operation results
THEN:
- The system updates the train record in the database with the new seizure status
- Related information
File: GCX016.cbl
GIVEN:
Train record has been modified with equipment release information
WHEN:
The system commits changes
THEN:
- Train record is updated in the database with current status
- Equipment information
β Consolidated Acceptance Criteria
- The system processes the SER disposition code → the system initiates train seizure release processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ProcessSERTrainSeizureRelease(["Start Step"])
E_ProcessSERTrainSeizureRelease(["End Step"])
N_ProcessSERTrainSeizureRelease_Node0{"The system processes the SER
disposition code"}:::decision N_ProcessSERTrainSeizureRelease_Node0_action["The system initiates train seizure
release processing"]:::main N_ProcessSERTrainSeizureRelease_Node0 -- Yes --> N_ProcessSERTrainSeizureRelease_Node0_action N_ProcessSERTrainSeizureRelease_Node0_action --> E_ProcessSERTrainSeizureRelease S_ProcessSERTrainSeizureRelease --> N_ProcessSERTrainSeizureRelease_Node0 N_ProcessSERTrainSeizureRelease_Node0 -- No --> E_ProcessSERTrainSeizureRelease
disposition code"}:::decision N_ProcessSERTrainSeizureRelease_Node0_action["The system initiates train seizure
release processing"]:::main N_ProcessSERTrainSeizureRelease_Node0 -- Yes --> N_ProcessSERTrainSeizureRelease_Node0_action N_ProcessSERTrainSeizureRelease_Node0_action --> E_ProcessSERTrainSeizureRelease S_ProcessSERTrainSeizureRelease --> N_ProcessSERTrainSeizureRelease_Node0 N_ProcessSERTrainSeizureRelease_Node0 -- No --> E_ProcessSERTrainSeizureRelease
File: GCX016.cbl
GIVEN:
A V9 segment contains SER disposition code and train exists in system
WHEN:
The system processes the SER disposition code
THEN:
The system initiates train seizure release processing
β Consolidated Acceptance Criteria
- The system checks for VID segments following the V9 segment → the system identifies whether VID segments are present for individual equipment processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CheckforFollowingVIDSegments(["Start Step"])
E_CheckforFollowingVIDSegments(["End Step"])
N_CheckforFollowingVIDSegments_Node0{"The system checks for VID segments
following the V9 segment"}:::decision N_CheckforFollowingVIDSegments_Node0_action["The system identifies whether VID
segments are present for individual
equipment processing"]:::main N_CheckforFollowingVIDSegments_Node0 -- Yes --> N_CheckforFollowingVIDSegments_Node0_action N_CheckforFollowingVIDSegments_Node0_action --> E_CheckforFollowingVIDSegments S_CheckforFollowingVIDSegments --> N_CheckforFollowingVIDSegments_Node0 N_CheckforFollowingVIDSegments_Node0 -- No --> E_CheckforFollowingVIDSegments
following the V9 segment"}:::decision N_CheckforFollowingVIDSegments_Node0_action["The system identifies whether VID
segments are present for individual
equipment processing"]:::main N_CheckforFollowingVIDSegments_Node0 -- Yes --> N_CheckforFollowingVIDSegments_Node0_action N_CheckforFollowingVIDSegments_Node0_action --> E_CheckforFollowingVIDSegments S_CheckforFollowingVIDSegments --> N_CheckforFollowingVIDSegments_Node0 N_CheckforFollowingVIDSegments_Node0 -- No --> E_CheckforFollowingVIDSegments
File: GCX016.cbl
GIVEN:
A train seizure release is being processed
WHEN:
The system checks for VID segments following the V9 segment
THEN:
The system identifies whether VID segments are present for individual equipment processing
β Consolidated Acceptance Criteria
- The system processes each VID segment → the system releases the specified equipment from seizure and decrements the seized equipment count
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ProcessEachVIDSegmentforEquipmentRelease(["Start Step"])
E_ProcessEachVIDSegmentforEquipmentRelease(["End Step"])
N_ProcessEachVIDSegmentforEquipmentRelease_Node0{"The system processes each VID
segment"}:::decision N_ProcessEachVIDSegmentforEquipmentRelease_Node0_action["The system releases the specified
equipment from seizure and
decrements the seized equipment
count"]:::main N_ProcessEachVIDSegmentforEquipmentRelease_Node0 -- Yes --> N_ProcessEachVIDSegmentforEquipmentRelease_Node0_action N_ProcessEachVIDSegmentforEquipmentRelease_Node0_action --> E_ProcessEachVIDSegmentforEquipmentRelease S_ProcessEachVIDSegmentforEquipmentRelease --> N_ProcessEachVIDSegmentforEquipmentRelease_Node0 N_ProcessEachVIDSegmentforEquipmentRelease_Node0 -- No --> E_ProcessEachVIDSegmentforEquipmentRelease
segment"}:::decision N_ProcessEachVIDSegmentforEquipmentRelease_Node0_action["The system releases the specified
equipment from seizure and
decrements the seized equipment
count"]:::main N_ProcessEachVIDSegmentforEquipmentRelease_Node0 -- Yes --> N_ProcessEachVIDSegmentforEquipmentRelease_Node0_action N_ProcessEachVIDSegmentforEquipmentRelease_Node0_action --> E_ProcessEachVIDSegmentforEquipmentRelease S_ProcessEachVIDSegmentforEquipmentRelease --> N_ProcessEachVIDSegmentforEquipmentRelease_Node0 N_ProcessEachVIDSegmentforEquipmentRelease_Node0 -- No --> E_ProcessEachVIDSegmentforEquipmentRelease
File: GCX016.cbl
GIVEN:
VID segments are present following a SER disposition code
WHEN:
The system processes each VID segment
THEN:
- The system releases the specified equipment from seizure
- Decrements the seized equipment count
β Consolidated Acceptance Criteria
- If if any equipment is still seized on the train → if equipment remains seized, the train stays in seized status; otherwise, the entire train is released from seizure
- If the train's overall seizure status → update the train seizure status based on remaining seized equipment count
- The system updates train seizure status → update the train's overall seizure status based on the number of equipment items seized
- If train seizure status → the train seizure status is updated based on seized equipment count
- If train seizure status → the train seizure status is updated based on remaining seized equipment count
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UpdateTrainSeizureStatus(["Start Step"])
E_UpdateTrainSeizureStatus(["End Step"])
N_UpdateTrainSeizureStatus_Node0{"The system evaluates if any
equipment is still seized on the
train"}:::decision N_UpdateTrainSeizureStatus_Node0_action["If equipment remains seized, the
train stays in seized status
otherwise, the entire train is
released from seizure"]:::main N_UpdateTrainSeizureStatus_Node0 -- Yes --> N_UpdateTrainSeizureStatus_Node0_action N_UpdateTrainSeizureStatus_Node0_action --> E_UpdateTrainSeizureStatus S_UpdateTrainSeizureStatus --> N_UpdateTrainSeizureStatus_Node0 N_UpdateTrainSeizureStatus_Node1{"The system evaluates the train s
overall seizure status"}:::decision N_UpdateTrainSeizureStatus_Node1_action["Update the train seizure status
based on remaining seized equipment
count"]:::main N_UpdateTrainSeizureStatus_Node1 -- Yes --> N_UpdateTrainSeizureStatus_Node1_action N_UpdateTrainSeizureStatus_Node1_action --> E_UpdateTrainSeizureStatus N_UpdateTrainSeizureStatus_Node0 -- No --> N_UpdateTrainSeizureStatus_Node1 N_UpdateTrainSeizureStatus_Node2{"The system updates train seizure
status"}:::decision N_UpdateTrainSeizureStatus_Node2_action["Update the train s overall seizure
status based on the number of
equipment items seized"]:::main N_UpdateTrainSeizureStatus_Node2 -- Yes --> N_UpdateTrainSeizureStatus_Node2_action N_UpdateTrainSeizureStatus_Node2_action --> E_UpdateTrainSeizureStatus N_UpdateTrainSeizureStatus_Node1 -- No --> N_UpdateTrainSeizureStatus_Node2 N_UpdateTrainSeizureStatus_Node3{"The system evaluates train seizure
status"}:::decision N_UpdateTrainSeizureStatus_Node3_action["The train seizure status is updated
based on seized equipment count"]:::main N_UpdateTrainSeizureStatus_Node3 -- Yes --> N_UpdateTrainSeizureStatus_Node3_action N_UpdateTrainSeizureStatus_Node3_action --> E_UpdateTrainSeizureStatus N_UpdateTrainSeizureStatus_Node2 -- No --> N_UpdateTrainSeizureStatus_Node3 N_UpdateTrainSeizureStatus_Node4{"The system evaluates train seizure
status"}:::decision N_UpdateTrainSeizureStatus_Node4_action["The train seizure status is updated
based on remaining seized equipment
count"]:::main N_UpdateTrainSeizureStatus_Node4 -- Yes --> N_UpdateTrainSeizureStatus_Node4_action N_UpdateTrainSeizureStatus_Node4_action --> E_UpdateTrainSeizureStatus N_UpdateTrainSeizureStatus_Node3 -- No --> N_UpdateTrainSeizureStatus_Node4 N_UpdateTrainSeizureStatus_Node4 -- No --> E_UpdateTrainSeizureStatus
equipment is still seized on the
train"}:::decision N_UpdateTrainSeizureStatus_Node0_action["If equipment remains seized, the
train stays in seized status
otherwise, the entire train is
released from seizure"]:::main N_UpdateTrainSeizureStatus_Node0 -- Yes --> N_UpdateTrainSeizureStatus_Node0_action N_UpdateTrainSeizureStatus_Node0_action --> E_UpdateTrainSeizureStatus S_UpdateTrainSeizureStatus --> N_UpdateTrainSeizureStatus_Node0 N_UpdateTrainSeizureStatus_Node1{"The system evaluates the train s
overall seizure status"}:::decision N_UpdateTrainSeizureStatus_Node1_action["Update the train seizure status
based on remaining seized equipment
count"]:::main N_UpdateTrainSeizureStatus_Node1 -- Yes --> N_UpdateTrainSeizureStatus_Node1_action N_UpdateTrainSeizureStatus_Node1_action --> E_UpdateTrainSeizureStatus N_UpdateTrainSeizureStatus_Node0 -- No --> N_UpdateTrainSeizureStatus_Node1 N_UpdateTrainSeizureStatus_Node2{"The system updates train seizure
status"}:::decision N_UpdateTrainSeizureStatus_Node2_action["Update the train s overall seizure
status based on the number of
equipment items seized"]:::main N_UpdateTrainSeizureStatus_Node2 -- Yes --> N_UpdateTrainSeizureStatus_Node2_action N_UpdateTrainSeizureStatus_Node2_action --> E_UpdateTrainSeizureStatus N_UpdateTrainSeizureStatus_Node1 -- No --> N_UpdateTrainSeizureStatus_Node2 N_UpdateTrainSeizureStatus_Node3{"The system evaluates train seizure
status"}:::decision N_UpdateTrainSeizureStatus_Node3_action["The train seizure status is updated
based on seized equipment count"]:::main N_UpdateTrainSeizureStatus_Node3 -- Yes --> N_UpdateTrainSeizureStatus_Node3_action N_UpdateTrainSeizureStatus_Node3_action --> E_UpdateTrainSeizureStatus N_UpdateTrainSeizureStatus_Node2 -- No --> N_UpdateTrainSeizureStatus_Node3 N_UpdateTrainSeizureStatus_Node4{"The system evaluates train seizure
status"}:::decision N_UpdateTrainSeizureStatus_Node4_action["The train seizure status is updated
based on remaining seized equipment
count"]:::main N_UpdateTrainSeizureStatus_Node4 -- Yes --> N_UpdateTrainSeizureStatus_Node4_action N_UpdateTrainSeizureStatus_Node4_action --> E_UpdateTrainSeizureStatus N_UpdateTrainSeizureStatus_Node3 -- No --> N_UpdateTrainSeizureStatus_Node4 N_UpdateTrainSeizureStatus_Node4 -- No --> E_UpdateTrainSeizureStatus
File: GCX016.cbl
GIVEN:
Individual equipment has been processed for seizure release
WHEN:
The system evaluates if any equipment is still seized on the train
THEN:
If equipment remains seized, the train stays in seized status; otherwise, the entire train is released from seizure
File: GCX016.cbl
GIVEN:
All VID segments have been processed for equipment seizure releases
WHEN:
The system evaluates the train's overall seizure status
THEN:
Update the train seizure status based on remaining seized equipment count
File: GCX016.cbl
GIVEN:
All VID segments have been processed for equipment seizure
WHEN:
The system updates train seizure status
THEN:
Update the train's overall seizure status based on the number of equipment items seized
File: GCX016.cbl
GIVEN:
Train seized equipment count has been incremented
WHEN:
The system evaluates train seizure status
THEN:
The train seizure status is updated based on seized equipment count
File: GCX016.cbl
GIVEN:
Train seized equipment count has been decremented
WHEN:
The system evaluates train seizure status
THEN:
The train seizure status is updated based on remaining seized equipment count
β Consolidated Acceptance Criteria
- The system completes seizure release processing → the system generates a train seizure release notification message
- The system completes seizure release processing → generate notification about the completion of train seizure release processing with final status details
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GenerateTrainSeizureReleaseNotification(["Start Step"])
E_GenerateTrainSeizureReleaseNotification(["End Step"])
N_GenerateTrainSeizureReleaseNotification_Node0{"The system completes seizure
release processing"}:::decision N_GenerateTrainSeizureReleaseNotification_Node0_action["The system generates a train
seizure release notification message"]:::main N_GenerateTrainSeizureReleaseNotification_Node0 -- Yes --> N_GenerateTrainSeizureReleaseNotification_Node0_action N_GenerateTrainSeizureReleaseNotification_Node0_action --> E_GenerateTrainSeizureReleaseNotification S_GenerateTrainSeizureReleaseNotification --> N_GenerateTrainSeizureReleaseNotification_Node0 N_GenerateTrainSeizureReleaseNotification_Node1{"The system completes seizure
release processing"}:::decision N_GenerateTrainSeizureReleaseNotification_Node1_action["Generate notification about the
completion of train seizure release
processing with final status details"]:::main N_GenerateTrainSeizureReleaseNotification_Node1 -- Yes --> N_GenerateTrainSeizureReleaseNotification_Node1_action N_GenerateTrainSeizureReleaseNotification_Node1_action --> E_GenerateTrainSeizureReleaseNotification N_GenerateTrainSeizureReleaseNotification_Node0 -- No --> N_GenerateTrainSeizureReleaseNotification_Node1 N_GenerateTrainSeizureReleaseNotification_Node1 -- No --> E_GenerateTrainSeizureReleaseNotification
release processing"}:::decision N_GenerateTrainSeizureReleaseNotification_Node0_action["The system generates a train
seizure release notification message"]:::main N_GenerateTrainSeizureReleaseNotification_Node0 -- Yes --> N_GenerateTrainSeizureReleaseNotification_Node0_action N_GenerateTrainSeizureReleaseNotification_Node0_action --> E_GenerateTrainSeizureReleaseNotification S_GenerateTrainSeizureReleaseNotification --> N_GenerateTrainSeizureReleaseNotification_Node0 N_GenerateTrainSeizureReleaseNotification_Node1{"The system completes seizure
release processing"}:::decision N_GenerateTrainSeizureReleaseNotification_Node1_action["Generate notification about the
completion of train seizure release
processing with final status details"]:::main N_GenerateTrainSeizureReleaseNotification_Node1 -- Yes --> N_GenerateTrainSeizureReleaseNotification_Node1_action N_GenerateTrainSeizureReleaseNotification_Node1_action --> E_GenerateTrainSeizureReleaseNotification N_GenerateTrainSeizureReleaseNotification_Node0 -- No --> N_GenerateTrainSeizureReleaseNotification_Node1 N_GenerateTrainSeizureReleaseNotification_Node1 -- No --> E_GenerateTrainSeizureReleaseNotification
File: GCX016.cbl
GIVEN:
Train status has been updated in the database
WHEN:
The system completes seizure release processing
THEN:
The system generates a train seizure release notification message
File: GCX016.cbl
GIVEN:
Train seizure status has been updated after processing all equipment seizure releases
WHEN:
The system completes seizure release processing
THEN:
Generate notification about the completion of train seizure release processing with final status details
β Consolidated Acceptance Criteria
- The system completes the seizure release process → the system logs the train seizure release activity with relevant details
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogTrainSeizureReleaseActivity(["Start Step"])
E_LogTrainSeizureReleaseActivity(["End Step"])
N_LogTrainSeizureReleaseActivity_Node0{"The system completes the seizure
release process"}:::decision N_LogTrainSeizureReleaseActivity_Node0_action["The system logs the train seizure
release activity with relevant
details"]:::main N_LogTrainSeizureReleaseActivity_Node0 -- Yes --> N_LogTrainSeizureReleaseActivity_Node0_action N_LogTrainSeizureReleaseActivity_Node0_action --> E_LogTrainSeizureReleaseActivity S_LogTrainSeizureReleaseActivity --> N_LogTrainSeizureReleaseActivity_Node0 N_LogTrainSeizureReleaseActivity_Node0 -- No --> E_LogTrainSeizureReleaseActivity
release process"}:::decision N_LogTrainSeizureReleaseActivity_Node0_action["The system logs the train seizure
release activity with relevant
details"]:::main N_LogTrainSeizureReleaseActivity_Node0 -- Yes --> N_LogTrainSeizureReleaseActivity_Node0_action N_LogTrainSeizureReleaseActivity_Node0_action --> E_LogTrainSeizureReleaseActivity S_LogTrainSeizureReleaseActivity --> N_LogTrainSeizureReleaseActivity_Node0 N_LogTrainSeizureReleaseActivity_Node0 -- No --> E_LogTrainSeizureReleaseActivity
File: GCX016.cbl
GIVEN:
Train seizure release notification has been generated
WHEN:
The system completes the seizure release process
THEN:
The system logs the train seizure release activity with relevant details
β Consolidated Acceptance Criteria
- The system calls GCCCARFM to format the equipment ID → the equipment ID is formatted according to standard car identification rules and validated for correctness
- The system needs to format the equipment ID for processing → the GCCCARFM program is called to format the equipment ID
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_FormatEquipmentIDUsingGCCCARFM(["Start Step"])
E_FormatEquipmentIDUsingGCCCARFM(["End Step"])
N_FormatEquipmentIDUsingGCCCARFM_Node0{"The system calls GCCCARFM to format
the equipment ID"}:::decision N_FormatEquipmentIDUsingGCCCARFM_Node0_action["The equipment ID is formatted
according to standard car
identification rules and validated
for correctness"]:::main N_FormatEquipmentIDUsingGCCCARFM_Node0 -- Yes --> N_FormatEquipmentIDUsingGCCCARFM_Node0_action N_FormatEquipmentIDUsingGCCCARFM_Node0_action --> E_FormatEquipmentIDUsingGCCCARFM S_FormatEquipmentIDUsingGCCCARFM --> N_FormatEquipmentIDUsingGCCCARFM_Node0 N_FormatEquipmentIDUsingGCCCARFM_Node1{"The system needs to format the
equipment ID for processing"}:::decision N_FormatEquipmentIDUsingGCCCARFM_Node1_action["The GCCCARFM program is called to
format the equipment ID"]:::main N_FormatEquipmentIDUsingGCCCARFM_Node1 -- Yes --> N_FormatEquipmentIDUsingGCCCARFM_Node1_action N_FormatEquipmentIDUsingGCCCARFM_Node1_action --> E_FormatEquipmentIDUsingGCCCARFM N_FormatEquipmentIDUsingGCCCARFM_Node0 -- No --> N_FormatEquipmentIDUsingGCCCARFM_Node1 N_FormatEquipmentIDUsingGCCCARFM_Node1 -- No --> E_FormatEquipmentIDUsingGCCCARFM
the equipment ID"}:::decision N_FormatEquipmentIDUsingGCCCARFM_Node0_action["The equipment ID is formatted
according to standard car
identification rules and validated
for correctness"]:::main N_FormatEquipmentIDUsingGCCCARFM_Node0 -- Yes --> N_FormatEquipmentIDUsingGCCCARFM_Node0_action N_FormatEquipmentIDUsingGCCCARFM_Node0_action --> E_FormatEquipmentIDUsingGCCCARFM S_FormatEquipmentIDUsingGCCCARFM --> N_FormatEquipmentIDUsingGCCCARFM_Node0 N_FormatEquipmentIDUsingGCCCARFM_Node1{"The system needs to format the
equipment ID for processing"}:::decision N_FormatEquipmentIDUsingGCCCARFM_Node1_action["The GCCCARFM program is called to
format the equipment ID"]:::main N_FormatEquipmentIDUsingGCCCARFM_Node1 -- Yes --> N_FormatEquipmentIDUsingGCCCARFM_Node1_action N_FormatEquipmentIDUsingGCCCARFM_Node1_action --> E_FormatEquipmentIDUsingGCCCARFM N_FormatEquipmentIDUsingGCCCARFM_Node0 -- No --> N_FormatEquipmentIDUsingGCCCARFM_Node1 N_FormatEquipmentIDUsingGCCCARFM_Node1 -- No --> E_FormatEquipmentIDUsingGCCCARFM
File: GCX016.cbl
GIVEN:
An equipment ID has been extracted from a VID segment
WHEN:
The system calls GCCCARFM to format the equipment ID
THEN:
- The equipment id is formatted according to standard car identification rules
- Validated for correctness
File: GCX016.cbl
GIVEN:
An equipment ID has been extracted from a VID segment
WHEN:
The system needs to format the equipment ID for processing
THEN:
The GCCCARFM program is called to format the equipment ID
β Consolidated Acceptance Criteria
- The system processes the equipment hold request → the specific equipment/car is placed on hold status within the train
- The system processes the equipment hold request → apply hold status to the specific equipment on the train
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_HoldSpecificEquipmentonTrain(["Start Step"])
E_HoldSpecificEquipmentonTrain(["End Step"])
N_HoldSpecificEquipmentonTrain_Node0{"The system processes the equipment
hold request"}:::decision N_HoldSpecificEquipmentonTrain_Node0_action["The specific equipmentcar is placed
on hold status within the train"]:::main N_HoldSpecificEquipmentonTrain_Node0 -- Yes --> N_HoldSpecificEquipmentonTrain_Node0_action N_HoldSpecificEquipmentonTrain_Node0_action --> E_HoldSpecificEquipmentonTrain S_HoldSpecificEquipmentonTrain --> N_HoldSpecificEquipmentonTrain_Node0 N_HoldSpecificEquipmentonTrain_Node1{"The system processes the equipment
hold request"}:::decision N_HoldSpecificEquipmentonTrain_Node1_action["Apply hold status to the specific
equipment on the train"]:::main N_HoldSpecificEquipmentonTrain_Node1 -- Yes --> N_HoldSpecificEquipmentonTrain_Node1_action N_HoldSpecificEquipmentonTrain_Node1_action --> E_HoldSpecificEquipmentonTrain N_HoldSpecificEquipmentonTrain_Node0 -- No --> N_HoldSpecificEquipmentonTrain_Node1 N_HoldSpecificEquipmentonTrain_Node1 -- No --> E_HoldSpecificEquipmentonTrain
hold request"}:::decision N_HoldSpecificEquipmentonTrain_Node0_action["The specific equipmentcar is placed
on hold status within the train"]:::main N_HoldSpecificEquipmentonTrain_Node0 -- Yes --> N_HoldSpecificEquipmentonTrain_Node0_action N_HoldSpecificEquipmentonTrain_Node0_action --> E_HoldSpecificEquipmentonTrain S_HoldSpecificEquipmentonTrain --> N_HoldSpecificEquipmentonTrain_Node0 N_HoldSpecificEquipmentonTrain_Node1{"The system processes the equipment
hold request"}:::decision N_HoldSpecificEquipmentonTrain_Node1_action["Apply hold status to the specific
equipment on the train"]:::main N_HoldSpecificEquipmentonTrain_Node1 -- Yes --> N_HoldSpecificEquipmentonTrain_Node1_action N_HoldSpecificEquipmentonTrain_Node1_action --> E_HoldSpecificEquipmentonTrain N_HoldSpecificEquipmentonTrain_Node0 -- No --> N_HoldSpecificEquipmentonTrain_Node1 N_HoldSpecificEquipmentonTrain_Node1 -- No --> E_HoldSpecificEquipmentonTrain
File: GCX016.cbl
GIVEN:
A valid equipment ID has been identified for hold processing
WHEN:
The system processes the equipment hold request
THEN:
The specific equipment/car is placed on hold status within the train
File: GCX016.cbl
GIVEN:
Equipment ID has been validated as valid
WHEN:
The system processes the equipment hold request
THEN:
Apply hold status to the specific equipment on the train
β Consolidated Acceptance Criteria
- The system logs the equipment hold action → the equipment hold action is recorded with equipment ID, timestamp, and hold details
- The system completes the hold action → log the equipment hold action with equipment ID and timestamp
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogEquipmentHoldAction(["Start Step"])
E_LogEquipmentHoldAction(["End Step"])
N_LogEquipmentHoldAction_Node0{"The system logs the equipment hold
action"}:::decision N_LogEquipmentHoldAction_Node0_action["The equipment hold action is
recorded with equipment ID,
timestamp, and hold details"]:::main N_LogEquipmentHoldAction_Node0 -- Yes --> N_LogEquipmentHoldAction_Node0_action N_LogEquipmentHoldAction_Node0_action --> E_LogEquipmentHoldAction S_LogEquipmentHoldAction --> N_LogEquipmentHoldAction_Node0 N_LogEquipmentHoldAction_Node1{"The system completes the hold
action"}:::decision N_LogEquipmentHoldAction_Node1_action["Log the equipment hold action with
equipment ID and timestamp"]:::main N_LogEquipmentHoldAction_Node1 -- Yes --> N_LogEquipmentHoldAction_Node1_action N_LogEquipmentHoldAction_Node1_action --> E_LogEquipmentHoldAction N_LogEquipmentHoldAction_Node0 -- No --> N_LogEquipmentHoldAction_Node1 N_LogEquipmentHoldAction_Node1 -- No --> E_LogEquipmentHoldAction
action"}:::decision N_LogEquipmentHoldAction_Node0_action["The equipment hold action is
recorded with equipment ID,
timestamp, and hold details"]:::main N_LogEquipmentHoldAction_Node0 -- Yes --> N_LogEquipmentHoldAction_Node0_action N_LogEquipmentHoldAction_Node0_action --> E_LogEquipmentHoldAction S_LogEquipmentHoldAction --> N_LogEquipmentHoldAction_Node0 N_LogEquipmentHoldAction_Node1{"The system completes the hold
action"}:::decision N_LogEquipmentHoldAction_Node1_action["Log the equipment hold action with
equipment ID and timestamp"]:::main N_LogEquipmentHoldAction_Node1 -- Yes --> N_LogEquipmentHoldAction_Node1_action N_LogEquipmentHoldAction_Node1_action --> E_LogEquipmentHoldAction N_LogEquipmentHoldAction_Node0 -- No --> N_LogEquipmentHoldAction_Node1 N_LogEquipmentHoldAction_Node1 -- No --> E_LogEquipmentHoldAction
File: GCX016.cbl
GIVEN:
An equipment hold has been applied and the hold count updated
WHEN:
The system logs the equipment hold action
THEN:
The equipment hold action is recorded with equipment ID, timestamp, and hold details
File: GCX016.cbl
GIVEN:
Equipment has been held and counter has been incremented
WHEN:
The system completes the hold action
THEN:
- Log the equipment hold action with equipment id
- Timestamp
β Consolidated Acceptance Criteria
- The system encounters an invalid equipment ID → the invalid equipment ID is skipped and processing continues with the next VID segment
- The system encounters invalid equipment ID → the invalid equipment ID is skipped and processing continues with the next VID segment if available
- The system encounters an invalid equipment ID → skip hold processing for this equipment and continue to check for more VID segments
- The system processes the invalid equipment ID → skip seizure processing for the invalid equipment ID and continue with next VID segment
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SkipInvalidEquipmentID(["Start Step"])
E_SkipInvalidEquipmentID(["End Step"])
N_SkipInvalidEquipmentID_Node0{"The system encounters an invalid
equipment ID"}:::decision N_SkipInvalidEquipmentID_Node0_action["The invalid equipment ID is skipped
and processing continues with the
next VID segment"]:::exclusion N_SkipInvalidEquipmentID_Node0 -- Yes -->|Alternative| N_SkipInvalidEquipmentID_Node0_action N_SkipInvalidEquipmentID_Node0_action --> E_SkipInvalidEquipmentID S_SkipInvalidEquipmentID --> N_SkipInvalidEquipmentID_Node0 N_SkipInvalidEquipmentID_Node1{"The system encounters invalid
equipment ID"}:::decision N_SkipInvalidEquipmentID_Node1_action["The invalid equipment ID is skipped
and processing continues with the
next VID segment if available"]:::exclusion N_SkipInvalidEquipmentID_Node1 -- Yes -->|Alternative| N_SkipInvalidEquipmentID_Node1_action N_SkipInvalidEquipmentID_Node1_action --> E_SkipInvalidEquipmentID N_SkipInvalidEquipmentID_Node0 -- No --> N_SkipInvalidEquipmentID_Node1 N_SkipInvalidEquipmentID_Node2{"The system encounters an invalid
equipment ID"}:::decision N_SkipInvalidEquipmentID_Node2_action["Skip hold processing for this
equipment and continue to check for
more VID segments"]:::exclusion N_SkipInvalidEquipmentID_Node2 -- Yes -->|Alternative| N_SkipInvalidEquipmentID_Node2_action N_SkipInvalidEquipmentID_Node2_action --> E_SkipInvalidEquipmentID N_SkipInvalidEquipmentID_Node1 -- No --> N_SkipInvalidEquipmentID_Node2 N_SkipInvalidEquipmentID_Node3{"The system processes the invalid
equipment ID"}:::decision N_SkipInvalidEquipmentID_Node3_action["Skip seizure processing for the
invalid equipment ID and continue
with next VID segment"]:::exclusion N_SkipInvalidEquipmentID_Node3 -- Yes -->|Alternative| N_SkipInvalidEquipmentID_Node3_action N_SkipInvalidEquipmentID_Node3_action --> E_SkipInvalidEquipmentID N_SkipInvalidEquipmentID_Node2 -- No --> N_SkipInvalidEquipmentID_Node3 N_SkipInvalidEquipmentID_Node3 -- No --> E_SkipInvalidEquipmentID
equipment ID"}:::decision N_SkipInvalidEquipmentID_Node0_action["The invalid equipment ID is skipped
and processing continues with the
next VID segment"]:::exclusion N_SkipInvalidEquipmentID_Node0 -- Yes -->|Alternative| N_SkipInvalidEquipmentID_Node0_action N_SkipInvalidEquipmentID_Node0_action --> E_SkipInvalidEquipmentID S_SkipInvalidEquipmentID --> N_SkipInvalidEquipmentID_Node0 N_SkipInvalidEquipmentID_Node1{"The system encounters invalid
equipment ID"}:::decision N_SkipInvalidEquipmentID_Node1_action["The invalid equipment ID is skipped
and processing continues with the
next VID segment if available"]:::exclusion N_SkipInvalidEquipmentID_Node1 -- Yes -->|Alternative| N_SkipInvalidEquipmentID_Node1_action N_SkipInvalidEquipmentID_Node1_action --> E_SkipInvalidEquipmentID N_SkipInvalidEquipmentID_Node0 -- No --> N_SkipInvalidEquipmentID_Node1 N_SkipInvalidEquipmentID_Node2{"The system encounters an invalid
equipment ID"}:::decision N_SkipInvalidEquipmentID_Node2_action["Skip hold processing for this
equipment and continue to check for
more VID segments"]:::exclusion N_SkipInvalidEquipmentID_Node2 -- Yes -->|Alternative| N_SkipInvalidEquipmentID_Node2_action N_SkipInvalidEquipmentID_Node2_action --> E_SkipInvalidEquipmentID N_SkipInvalidEquipmentID_Node1 -- No --> N_SkipInvalidEquipmentID_Node2 N_SkipInvalidEquipmentID_Node3{"The system processes the invalid
equipment ID"}:::decision N_SkipInvalidEquipmentID_Node3_action["Skip seizure processing for the
invalid equipment ID and continue
with next VID segment"]:::exclusion N_SkipInvalidEquipmentID_Node3 -- Yes -->|Alternative| N_SkipInvalidEquipmentID_Node3_action N_SkipInvalidEquipmentID_Node3_action --> E_SkipInvalidEquipmentID N_SkipInvalidEquipmentID_Node2 -- No --> N_SkipInvalidEquipmentID_Node3 N_SkipInvalidEquipmentID_Node3 -- No --> E_SkipInvalidEquipmentID
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
An equipment ID has failed validation checks
WHEN:
The system encounters an invalid equipment ID
THEN:
- The invalid equipment id is skipped
- Processing continues with the next vid segment
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
An equipment ID extracted from VID segment fails format validation
WHEN:
The system encounters invalid equipment ID
THEN:
- The invalid equipment id is skipped
- Processing continues with the next vid segment if available
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
Equipment ID has been validated and found invalid
WHEN:
The system encounters an invalid equipment ID
THEN:
- Skip hold processing for this equipment
- Continue to check for more vid segments
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
An equipment ID has failed validation checks
WHEN:
The system processes the invalid equipment ID
THEN:
- Skip seizure processing for the invalid equipment id
- Continue with next vid segment
β Consolidated Acceptance Criteria
- The system determines the overall train hold status → the train hold status is evaluated based on the number of equipment items held and train hold policies
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_DetermineOverallTrainHoldStatus(["Start Step"])
E_DetermineOverallTrainHoldStatus(["End Step"])
N_DetermineOverallTrainHoldStatus_Node0{"The system determines the overall
train hold status"}:::decision N_DetermineOverallTrainHoldStatus_Node0_action["The train hold status is evaluated
based on the number of equipment
items held and train hold policies"]:::main N_DetermineOverallTrainHoldStatus_Node0 -- Yes --> N_DetermineOverallTrainHoldStatus_Node0_action N_DetermineOverallTrainHoldStatus_Node0_action --> E_DetermineOverallTrainHoldStatus S_DetermineOverallTrainHoldStatus --> N_DetermineOverallTrainHoldStatus_Node0 N_DetermineOverallTrainHoldStatus_Node0 -- No --> E_DetermineOverallTrainHoldStatus
train hold status"}:::decision N_DetermineOverallTrainHoldStatus_Node0_action["The train hold status is evaluated
based on the number of equipment
items held and train hold policies"]:::main N_DetermineOverallTrainHoldStatus_Node0 -- Yes --> N_DetermineOverallTrainHoldStatus_Node0_action N_DetermineOverallTrainHoldStatus_Node0_action --> E_DetermineOverallTrainHoldStatus S_DetermineOverallTrainHoldStatus --> N_DetermineOverallTrainHoldStatus_Node0 N_DetermineOverallTrainHoldStatus_Node0 -- No --> E_DetermineOverallTrainHoldStatus
File: GCX016.cbl
GIVEN:
All VID segments have been processed for equipment holds
WHEN:
The system determines the overall train hold status
THEN:
- The train hold status is evaluated based on the number of equipment items held
- Train hold policies
β Consolidated Acceptance Criteria
- The system updates the train hold status → the train hold status is updated in the train list records based on the equipment hold count and business rules
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UpdateTrainHoldStatusBasedonEquipmentCount(["Start Step"])
E_UpdateTrainHoldStatusBasedonEquipmentCount(["End Step"])
N_UpdateTrainHoldStatusBasedonEquipmentCount_Node0{"The system updates the train hold
status"}:::decision N_UpdateTrainHoldStatusBasedonEquipmentCount_Node0_action["The train hold status is updated in
the train list records based on the
equipment hold count and business
rules"]:::main N_UpdateTrainHoldStatusBasedonEquipmentCount_Node0 -- Yes --> N_UpdateTrainHoldStatusBasedonEquipmentCount_Node0_action N_UpdateTrainHoldStatusBasedonEquipmentCount_Node0_action --> E_UpdateTrainHoldStatusBasedonEquipmentCount S_UpdateTrainHoldStatusBasedonEquipmentCount --> N_UpdateTrainHoldStatusBasedonEquipmentCount_Node0 N_UpdateTrainHoldStatusBasedonEquipmentCount_Node0 -- No --> E_UpdateTrainHoldStatusBasedonEquipmentCount
status"}:::decision N_UpdateTrainHoldStatusBasedonEquipmentCount_Node0_action["The train hold status is updated in
the train list records based on the
equipment hold count and business
rules"]:::main N_UpdateTrainHoldStatusBasedonEquipmentCount_Node0 -- Yes --> N_UpdateTrainHoldStatusBasedonEquipmentCount_Node0_action N_UpdateTrainHoldStatusBasedonEquipmentCount_Node0_action --> E_UpdateTrainHoldStatusBasedonEquipmentCount S_UpdateTrainHoldStatusBasedonEquipmentCount --> N_UpdateTrainHoldStatusBasedonEquipmentCount_Node0 N_UpdateTrainHoldStatusBasedonEquipmentCount_Node0 -- No --> E_UpdateTrainHoldStatusBasedonEquipmentCount
File: GCX016.cbl
GIVEN:
The overall train hold status has been determined based on equipment hold counts
WHEN:
The system updates the train hold status
THEN:
- The train hold status is updated in the train list records based on the equipment hold count
- Business rules
β Consolidated Acceptance Criteria
- The system begins equipment release processing → the equipment release workflow is initiated
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_EquipmentReleaseProcessingStart(["Start Step"])
E_EquipmentReleaseProcessingStart(["End Step"])
N_EquipmentReleaseProcessingStart_Node0{"The system begins equipment release
processing"}:::decision N_EquipmentReleaseProcessingStart_Node0_action["The equipment release workflow is
initiated"]:::main N_EquipmentReleaseProcessingStart_Node0 -- Yes --> N_EquipmentReleaseProcessingStart_Node0_action N_EquipmentReleaseProcessingStart_Node0_action --> E_EquipmentReleaseProcessingStart S_EquipmentReleaseProcessingStart --> N_EquipmentReleaseProcessingStart_Node0 N_EquipmentReleaseProcessingStart_Node0 -- No --> E_EquipmentReleaseProcessingStart
processing"}:::decision N_EquipmentReleaseProcessingStart_Node0_action["The equipment release workflow is
initiated"]:::main N_EquipmentReleaseProcessingStart_Node0 -- Yes --> N_EquipmentReleaseProcessingStart_Node0_action N_EquipmentReleaseProcessingStart_Node0_action --> E_EquipmentReleaseProcessingStart S_EquipmentReleaseProcessingStart --> N_EquipmentReleaseProcessingStart_Node0 N_EquipmentReleaseProcessingStart_Node0 -- No --> E_EquipmentReleaseProcessingStart
File: GCX016.cbl
GIVEN:
A train hold release event (HRE) is being processed
WHEN:
The system begins equipment release processing
THEN:
The equipment release workflow is initiated
β Consolidated Acceptance Criteria
- VID segments are present in the message → each VID segment is processed for equipment release
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ReceiveVIDSegmentforHRE(["Start Step"])
E_ReceiveVIDSegmentforHRE(["End Step"])
N_ReceiveVIDSegmentforHRE_Node0{"VID segments are present in the
message"}:::decision N_ReceiveVIDSegmentforHRE_Node0_action["Each VID segment is processed for
equipment release"]:::main N_ReceiveVIDSegmentforHRE_Node0 -- Yes --> N_ReceiveVIDSegmentforHRE_Node0_action N_ReceiveVIDSegmentforHRE_Node0_action --> E_ReceiveVIDSegmentforHRE S_ReceiveVIDSegmentforHRE --> N_ReceiveVIDSegmentforHRE_Node0 N_ReceiveVIDSegmentforHRE_Node0 -- No --> E_ReceiveVIDSegmentforHRE
message"}:::decision N_ReceiveVIDSegmentforHRE_Node0_action["Each VID segment is processed for
equipment release"]:::main N_ReceiveVIDSegmentforHRE_Node0 -- Yes --> N_ReceiveVIDSegmentforHRE_Node0_action N_ReceiveVIDSegmentforHRE_Node0_action --> E_ReceiveVIDSegmentforHRE S_ReceiveVIDSegmentforHRE --> N_ReceiveVIDSegmentforHRE_Node0 N_ReceiveVIDSegmentforHRE_Node0 -- No --> E_ReceiveVIDSegmentforHRE
File: GCX016.cbl
GIVEN:
An HRE event is being processed
WHEN:
VID segments are present in the message
THEN:
Each VID segment is processed for equipment release
β Consolidated Acceptance Criteria
- The system searches the train equipment list → the system attempts to locate the equipment in the train list
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LocateEquipmentinTrainEquipmentList(["Start Step"])
E_LocateEquipmentinTrainEquipmentList(["End Step"])
N_LocateEquipmentinTrainEquipmentList_Node0{"The system searches the train
equipment list"}:::decision N_LocateEquipmentinTrainEquipmentList_Node0_action["The system attempts to locate the
equipment in the train list"]:::main N_LocateEquipmentinTrainEquipmentList_Node0 -- Yes --> N_LocateEquipmentinTrainEquipmentList_Node0_action N_LocateEquipmentinTrainEquipmentList_Node0_action --> E_LocateEquipmentinTrainEquipmentList S_LocateEquipmentinTrainEquipmentList --> N_LocateEquipmentinTrainEquipmentList_Node0 N_LocateEquipmentinTrainEquipmentList_Node0 -- No --> E_LocateEquipmentinTrainEquipmentList
equipment list"}:::decision N_LocateEquipmentinTrainEquipmentList_Node0_action["The system attempts to locate the
equipment in the train list"]:::main N_LocateEquipmentinTrainEquipmentList_Node0 -- Yes --> N_LocateEquipmentinTrainEquipmentList_Node0_action N_LocateEquipmentinTrainEquipmentList_Node0_action --> E_LocateEquipmentinTrainEquipmentList S_LocateEquipmentinTrainEquipmentList --> N_LocateEquipmentinTrainEquipmentList_Node0 N_LocateEquipmentinTrainEquipmentList_Node0 -- No --> E_LocateEquipmentinTrainEquipmentList
File: GCX016.cbl
GIVEN:
An equipment ID has been extracted from a VID segment
WHEN:
The system searches the train equipment list
THEN:
The system attempts to locate the equipment in the train list
β Consolidated Acceptance Criteria
- The equipment search is completed → the system determines if the equipment exists in the train or not
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_EquipmentFoundinTrain(["Start Step"])
E_EquipmentFoundinTrain(["End Step"])
N_EquipmentFoundinTrain_Node0{"The equipment search is completed"}:::decision
N_EquipmentFoundinTrain_Node0_action["The system determines if the
equipment exists in the train or not"]:::main N_EquipmentFoundinTrain_Node0 -- Yes --> N_EquipmentFoundinTrain_Node0_action N_EquipmentFoundinTrain_Node0_action --> E_EquipmentFoundinTrain S_EquipmentFoundinTrain --> N_EquipmentFoundinTrain_Node0 N_EquipmentFoundinTrain_Node0 -- No --> E_EquipmentFoundinTrain
equipment exists in the train or not"]:::main N_EquipmentFoundinTrain_Node0 -- Yes --> N_EquipmentFoundinTrain_Node0_action N_EquipmentFoundinTrain_Node0_action --> E_EquipmentFoundinTrain S_EquipmentFoundinTrain --> N_EquipmentFoundinTrain_Node0 N_EquipmentFoundinTrain_Node0 -- No --> E_EquipmentFoundinTrain
File: GCX016.cbl
GIVEN:
The system is searching for equipment in the train list
WHEN:
The equipment search is completed
THEN:
The system determines if the equipment exists in the train or not
β Consolidated Acceptance Criteria
- The system checks the equipment's current status → the current hold status of the equipment is determined
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CheckCurrentEquipmentHoldStatus(["Start Step"])
E_CheckCurrentEquipmentHoldStatus(["End Step"])
N_CheckCurrentEquipmentHoldStatus_Node0{"The system checks the equipment s
current status"}:::decision N_CheckCurrentEquipmentHoldStatus_Node0_action["The current hold status of the
equipment is determined"]:::main N_CheckCurrentEquipmentHoldStatus_Node0 -- Yes --> N_CheckCurrentEquipmentHoldStatus_Node0_action N_CheckCurrentEquipmentHoldStatus_Node0_action --> E_CheckCurrentEquipmentHoldStatus S_CheckCurrentEquipmentHoldStatus --> N_CheckCurrentEquipmentHoldStatus_Node0 N_CheckCurrentEquipmentHoldStatus_Node0 -- No --> E_CheckCurrentEquipmentHoldStatus
current status"}:::decision N_CheckCurrentEquipmentHoldStatus_Node0_action["The current hold status of the
equipment is determined"]:::main N_CheckCurrentEquipmentHoldStatus_Node0 -- Yes --> N_CheckCurrentEquipmentHoldStatus_Node0_action N_CheckCurrentEquipmentHoldStatus_Node0_action --> E_CheckCurrentEquipmentHoldStatus S_CheckCurrentEquipmentHoldStatus --> N_CheckCurrentEquipmentHoldStatus_Node0 N_CheckCurrentEquipmentHoldStatus_Node0 -- No --> E_CheckCurrentEquipmentHoldStatus
File: GCX016.cbl
GIVEN:
Equipment has been found in the train equipment list
WHEN:
The system checks the equipment's current status
THEN:
The current hold status of the equipment is determined
β Consolidated Acceptance Criteria
- The system processes the equipment release → the hold status is removed from the equipment
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RemoveHoldStatusfromEquipment(["Start Step"])
E_RemoveHoldStatusfromEquipment(["End Step"])
N_RemoveHoldStatusfromEquipment_Node0{"The system processes the equipment
release"}:::decision N_RemoveHoldStatusfromEquipment_Node0_action["The hold status is removed from the
equipment"]:::main N_RemoveHoldStatusfromEquipment_Node0 -- Yes --> N_RemoveHoldStatusfromEquipment_Node0_action N_RemoveHoldStatusfromEquipment_Node0_action --> E_RemoveHoldStatusfromEquipment S_RemoveHoldStatusfromEquipment --> N_RemoveHoldStatusfromEquipment_Node0 N_RemoveHoldStatusfromEquipment_Node0 -- No --> E_RemoveHoldStatusfromEquipment
release"}:::decision N_RemoveHoldStatusfromEquipment_Node0_action["The hold status is removed from the
equipment"]:::main N_RemoveHoldStatusfromEquipment_Node0 -- Yes --> N_RemoveHoldStatusfromEquipment_Node0_action N_RemoveHoldStatusfromEquipment_Node0_action --> E_RemoveHoldStatusfromEquipment S_RemoveHoldStatusfromEquipment --> N_RemoveHoldStatusfromEquipment_Node0 N_RemoveHoldStatusfromEquipment_Node0 -- No --> E_RemoveHoldStatusfromEquipment
File: GCX016.cbl
GIVEN:
Equipment is currently held and eligible for release
WHEN:
The system processes the equipment release
THEN:
The hold status is removed from the equipment
β Consolidated Acceptance Criteria
- The system updates the train equipment list → the equipment's status is updated to reflect the release
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UpdateEquipmentStatusinTrainList(["Start Step"])
E_UpdateEquipmentStatusinTrainList(["End Step"])
N_UpdateEquipmentStatusinTrainList_Node0{"The system updates the train
equipment list"}:::decision N_UpdateEquipmentStatusinTrainList_Node0_action["The equipment s status is updated
to reflect the release"]:::main N_UpdateEquipmentStatusinTrainList_Node0 -- Yes --> N_UpdateEquipmentStatusinTrainList_Node0_action N_UpdateEquipmentStatusinTrainList_Node0_action --> E_UpdateEquipmentStatusinTrainList S_UpdateEquipmentStatusinTrainList --> N_UpdateEquipmentStatusinTrainList_Node0 N_UpdateEquipmentStatusinTrainList_Node0 -- No --> E_UpdateEquipmentStatusinTrainList
equipment list"}:::decision N_UpdateEquipmentStatusinTrainList_Node0_action["The equipment s status is updated
to reflect the release"]:::main N_UpdateEquipmentStatusinTrainList_Node0 -- Yes --> N_UpdateEquipmentStatusinTrainList_Node0_action N_UpdateEquipmentStatusinTrainList_Node0_action --> E_UpdateEquipmentStatusinTrainList S_UpdateEquipmentStatusinTrainList --> N_UpdateEquipmentStatusinTrainList_Node0 N_UpdateEquipmentStatusinTrainList_Node0 -- No --> E_UpdateEquipmentStatusinTrainList
File: GCX016.cbl
GIVEN:
Equipment hold has been removed and count decremented
WHEN:
The system updates the train equipment list
THEN:
The equipment's status is updated to reflect the release
β Consolidated Acceptance Criteria
- The system checks remaining held equipment on the train → the system determines if any equipment is still held on the train
- The system checks remaining held equipment count → train status is determined based on whether any equipment remains held
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AnyEquipmentStillHeldonTrain(["Start Step"])
E_AnyEquipmentStillHeldonTrain(["End Step"])
N_AnyEquipmentStillHeldonTrain_Node0{"The system checks remaining held
equipment on the train"}:::decision N_AnyEquipmentStillHeldonTrain_Node0_action["The system determines if any
equipment is still held on the train"]:::main N_AnyEquipmentStillHeldonTrain_Node0 -- Yes --> N_AnyEquipmentStillHeldonTrain_Node0_action N_AnyEquipmentStillHeldonTrain_Node0_action --> E_AnyEquipmentStillHeldonTrain S_AnyEquipmentStillHeldonTrain --> N_AnyEquipmentStillHeldonTrain_Node0 N_AnyEquipmentStillHeldonTrain_Node1{"The system checks remaining held
equipment count"}:::decision N_AnyEquipmentStillHeldonTrain_Node1_action["Train status is determined based on
whether any equipment remains held"]:::main N_AnyEquipmentStillHeldonTrain_Node1 -- Yes --> N_AnyEquipmentStillHeldonTrain_Node1_action N_AnyEquipmentStillHeldonTrain_Node1_action --> E_AnyEquipmentStillHeldonTrain N_AnyEquipmentStillHeldonTrain_Node0 -- No --> N_AnyEquipmentStillHeldonTrain_Node1 N_AnyEquipmentStillHeldonTrain_Node1 -- No --> E_AnyEquipmentStillHeldonTrain
equipment on the train"}:::decision N_AnyEquipmentStillHeldonTrain_Node0_action["The system determines if any
equipment is still held on the train"]:::main N_AnyEquipmentStillHeldonTrain_Node0 -- Yes --> N_AnyEquipmentStillHeldonTrain_Node0_action N_AnyEquipmentStillHeldonTrain_Node0_action --> E_AnyEquipmentStillHeldonTrain S_AnyEquipmentStillHeldonTrain --> N_AnyEquipmentStillHeldonTrain_Node0 N_AnyEquipmentStillHeldonTrain_Node1{"The system checks remaining held
equipment count"}:::decision N_AnyEquipmentStillHeldonTrain_Node1_action["Train status is determined based on
whether any equipment remains held"]:::main N_AnyEquipmentStillHeldonTrain_Node1 -- Yes --> N_AnyEquipmentStillHeldonTrain_Node1_action N_AnyEquipmentStillHeldonTrain_Node1_action --> E_AnyEquipmentStillHeldonTrain N_AnyEquipmentStillHeldonTrain_Node0 -- No --> N_AnyEquipmentStillHeldonTrain_Node1 N_AnyEquipmentStillHeldonTrain_Node1 -- No --> E_AnyEquipmentStillHeldonTrain
File: GCX016.cbl
GIVEN:
Equipment has been released and train statistics updated
WHEN:
The system checks remaining held equipment on the train
THEN:
The system determines if any equipment is still held on the train
File: GCX016.cbl
GIVEN:
Equipment has been released and count has been decremented
WHEN:
The system checks remaining held equipment count
THEN:
Train status is determined based on whether any equipment remains held
β Consolidated Acceptance Criteria
- The system updates the train status → the train status is set to partially held
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetTrainStatustoPartiallyHeld(["Start Step"])
E_SetTrainStatustoPartiallyHeld(["End Step"])
N_SetTrainStatustoPartiallyHeld_Node0{"The system updates the train status"}:::decision
N_SetTrainStatustoPartiallyHeld_Node0_action["The train status is set to
partially held"]:::main N_SetTrainStatustoPartiallyHeld_Node0 -- Yes --> N_SetTrainStatustoPartiallyHeld_Node0_action N_SetTrainStatustoPartiallyHeld_Node0_action --> E_SetTrainStatustoPartiallyHeld S_SetTrainStatustoPartiallyHeld --> N_SetTrainStatustoPartiallyHeld_Node0 N_SetTrainStatustoPartiallyHeld_Node0 -- No --> E_SetTrainStatustoPartiallyHeld
partially held"]:::main N_SetTrainStatustoPartiallyHeld_Node0 -- Yes --> N_SetTrainStatustoPartiallyHeld_Node0_action N_SetTrainStatustoPartiallyHeld_Node0_action --> E_SetTrainStatustoPartiallyHeld S_SetTrainStatustoPartiallyHeld --> N_SetTrainStatustoPartiallyHeld_Node0 N_SetTrainStatustoPartiallyHeld_Node0 -- No --> E_SetTrainStatustoPartiallyHeld
File: GCX016.cbl
GIVEN:
Some equipment on the train is still held after release processing
WHEN:
The system updates the train status
THEN:
The train status is set to partially held
β Consolidated Acceptance Criteria
- The system updates the train status → the train status is set to fully released
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetTrainStatustoFullyReleased(["Start Step"])
E_SetTrainStatustoFullyReleased(["End Step"])
N_SetTrainStatustoFullyReleased_Node0{"The system updates the train status"}:::decision
N_SetTrainStatustoFullyReleased_Node0_action["The train status is set to fully
released"]:::main N_SetTrainStatustoFullyReleased_Node0 -- Yes --> N_SetTrainStatustoFullyReleased_Node0_action N_SetTrainStatustoFullyReleased_Node0_action --> E_SetTrainStatustoFullyReleased S_SetTrainStatustoFullyReleased --> N_SetTrainStatustoFullyReleased_Node0 N_SetTrainStatustoFullyReleased_Node0 -- No --> E_SetTrainStatustoFullyReleased
released"]:::main N_SetTrainStatustoFullyReleased_Node0 -- Yes --> N_SetTrainStatustoFullyReleased_Node0_action N_SetTrainStatustoFullyReleased_Node0_action --> E_SetTrainStatustoFullyReleased S_SetTrainStatustoFullyReleased --> N_SetTrainStatustoFullyReleased_Node0 N_SetTrainStatustoFullyReleased_Node0 -- No --> E_SetTrainStatustoFullyReleased
File: GCX016.cbl
GIVEN:
No equipment on the train is held after release processing
WHEN:
The system updates the train status
THEN:
The train status is set to fully released
β Consolidated Acceptance Criteria
- The equipment is not currently held → a warning is logged indicating equipment is already released
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogEquipmentAlreadyReleasedWarning(["Start Step"])
E_LogEquipmentAlreadyReleasedWarning(["End Step"])
N_LogEquipmentAlreadyReleasedWarning_Node0{"The equipment is not currently held"}:::decision
N_LogEquipmentAlreadyReleasedWarning_Node0_action["A warning is logged indicating
equipment is already released"]:::main N_LogEquipmentAlreadyReleasedWarning_Node0 -- Yes --> N_LogEquipmentAlreadyReleasedWarning_Node0_action N_LogEquipmentAlreadyReleasedWarning_Node0_action --> E_LogEquipmentAlreadyReleasedWarning S_LogEquipmentAlreadyReleasedWarning --> N_LogEquipmentAlreadyReleasedWarning_Node0 N_LogEquipmentAlreadyReleasedWarning_Node0 -- No --> E_LogEquipmentAlreadyReleasedWarning
equipment is already released"]:::main N_LogEquipmentAlreadyReleasedWarning_Node0 -- Yes --> N_LogEquipmentAlreadyReleasedWarning_Node0_action N_LogEquipmentAlreadyReleasedWarning_Node0_action --> E_LogEquipmentAlreadyReleasedWarning S_LogEquipmentAlreadyReleasedWarning --> N_LogEquipmentAlreadyReleasedWarning_Node0 N_LogEquipmentAlreadyReleasedWarning_Node0 -- No --> E_LogEquipmentAlreadyReleasedWarning
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
Equipment has been found in the train equipment list
WHEN:
The equipment is not currently held
THEN:
A warning is logged indicating equipment is already released
β Consolidated Acceptance Criteria
- The system processes the message segments following the SEI code → all VID segments in the message are identified and processed for equipment seizure
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ProcessVIDSegmentsFollowingSEI(["Start Step"])
E_ProcessVIDSegmentsFollowingSEI(["End Step"])
N_ProcessVIDSegmentsFollowingSEI_Node0{"The system processes the message
segments following the SEI code"}:::decision N_ProcessVIDSegmentsFollowingSEI_Node0_action["All VID segments in the message are
identified and processed for
equipment seizure"]:::main N_ProcessVIDSegmentsFollowingSEI_Node0 -- Yes --> N_ProcessVIDSegmentsFollowingSEI_Node0_action N_ProcessVIDSegmentsFollowingSEI_Node0_action --> E_ProcessVIDSegmentsFollowingSEI S_ProcessVIDSegmentsFollowingSEI --> N_ProcessVIDSegmentsFollowingSEI_Node0 N_ProcessVIDSegmentsFollowingSEI_Node0 -- No --> E_ProcessVIDSegmentsFollowingSEI
segments following the SEI code"}:::decision N_ProcessVIDSegmentsFollowingSEI_Node0_action["All VID segments in the message are
identified and processed for
equipment seizure"]:::main N_ProcessVIDSegmentsFollowingSEI_Node0 -- Yes --> N_ProcessVIDSegmentsFollowingSEI_Node0_action N_ProcessVIDSegmentsFollowingSEI_Node0_action --> E_ProcessVIDSegmentsFollowingSEI S_ProcessVIDSegmentsFollowingSEI --> N_ProcessVIDSegmentsFollowingSEI_Node0 N_ProcessVIDSegmentsFollowingSEI_Node0 -- No --> E_ProcessVIDSegmentsFollowingSEI
File: GCX016.cbl
GIVEN:
A SEI disposition code has been received for a train
WHEN:
The system processes the message segments following the SEI code
THEN:
- All vid segments in the message are identified
- Processed for equipment seizure
β Consolidated Acceptance Criteria
- The system searches for VID segments in the message → the system determines if VID segments are available for processing or if no equipment identification is provided
- The system checks for VID segments in the message → if VID segments are present, proceed to extract equipment information, otherwise complete seizure processing without equipment-specific actions
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_VIDSegmentAvailable(["Start Step"])
E_VIDSegmentAvailable(["End Step"])
N_VIDSegmentAvailable_Node0{"The system searches for VID
segments in the message"}:::decision N_VIDSegmentAvailable_Node0_action["The system determines if VID
segments are available for
processing or if no equipment
identification is provided"]:::main N_VIDSegmentAvailable_Node0 -- Yes --> N_VIDSegmentAvailable_Node0_action N_VIDSegmentAvailable_Node0_action --> E_VIDSegmentAvailable S_VIDSegmentAvailable --> N_VIDSegmentAvailable_Node0 N_VIDSegmentAvailable_Node1{"The system checks for VID segments
in the message"}:::decision N_VIDSegmentAvailable_Node1_action["If VID segments are present,
proceed to extract equipment
information, otherwise complete
seizure processing without
equipment-specific actions"]:::main N_VIDSegmentAvailable_Node1 -- Yes --> N_VIDSegmentAvailable_Node1_action N_VIDSegmentAvailable_Node1_action --> E_VIDSegmentAvailable N_VIDSegmentAvailable_Node0 -- No --> N_VIDSegmentAvailable_Node1 N_VIDSegmentAvailable_Node1 -- No --> E_VIDSegmentAvailable
segments in the message"}:::decision N_VIDSegmentAvailable_Node0_action["The system determines if VID
segments are available for
processing or if no equipment
identification is provided"]:::main N_VIDSegmentAvailable_Node0 -- Yes --> N_VIDSegmentAvailable_Node0_action N_VIDSegmentAvailable_Node0_action --> E_VIDSegmentAvailable S_VIDSegmentAvailable --> N_VIDSegmentAvailable_Node0 N_VIDSegmentAvailable_Node1{"The system checks for VID segments
in the message"}:::decision N_VIDSegmentAvailable_Node1_action["If VID segments are present,
proceed to extract equipment
information, otherwise complete
seizure processing without
equipment-specific actions"]:::main N_VIDSegmentAvailable_Node1 -- Yes --> N_VIDSegmentAvailable_Node1_action N_VIDSegmentAvailable_Node1_action --> E_VIDSegmentAvailable N_VIDSegmentAvailable_Node0 -- No --> N_VIDSegmentAvailable_Node1 N_VIDSegmentAvailable_Node1 -- No --> E_VIDSegmentAvailable
File: GCX016.cbl
GIVEN:
A message contains SEI disposition code for equipment seizure
WHEN:
The system searches for VID segments in the message
THEN:
The system determines if VID segments are available for processing or if no equipment identification is provided
File: GCX016.cbl
GIVEN:
A SEI disposition code has been processed for a train
WHEN:
The system checks for VID segments in the message
THEN:
If VID segments are present, proceed to extract equipment information, otherwise complete seizure processing without equipment-specific actions
β Consolidated Acceptance Criteria
- The system finalizes seizure processing for the train → the overall train seizure status is updated to reflect the seizure of equipment
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UpdateOverallTrainSeizureStatus(["Start Step"])
E_UpdateOverallTrainSeizureStatus(["End Step"])
N_UpdateOverallTrainSeizureStatus_Node0{"The system finalizes seizure
processing for the train"}:::decision N_UpdateOverallTrainSeizureStatus_Node0_action["The overall train seizure status is
updated to reflect the seizure of
equipment"]:::main N_UpdateOverallTrainSeizureStatus_Node0 -- Yes --> N_UpdateOverallTrainSeizureStatus_Node0_action N_UpdateOverallTrainSeizureStatus_Node0_action --> E_UpdateOverallTrainSeizureStatus S_UpdateOverallTrainSeizureStatus --> N_UpdateOverallTrainSeizureStatus_Node0 N_UpdateOverallTrainSeizureStatus_Node0 -- No --> E_UpdateOverallTrainSeizureStatus
processing for the train"}:::decision N_UpdateOverallTrainSeizureStatus_Node0_action["The overall train seizure status is
updated to reflect the seizure of
equipment"]:::main N_UpdateOverallTrainSeizureStatus_Node0 -- Yes --> N_UpdateOverallTrainSeizureStatus_Node0_action N_UpdateOverallTrainSeizureStatus_Node0_action --> E_UpdateOverallTrainSeizureStatus S_UpdateOverallTrainSeizureStatus --> N_UpdateOverallTrainSeizureStatus_Node0 N_UpdateOverallTrainSeizureStatus_Node0 -- No --> E_UpdateOverallTrainSeizureStatus
File: GCX016.cbl
GIVEN:
All VID segments have been processed for equipment seizure
WHEN:
The system finalizes seizure processing for the train
THEN:
The overall train seizure status is updated to reflect the seizure of equipment
β Consolidated Acceptance Criteria
- If the disposition code → if disposition code is 'SER', initiate equipment seizure release processing, otherwise skip seizure release processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SERDispositionCodePresent(["Start Step"])
E_SERDispositionCodePresent(["End Step"])
N_SERDispositionCodePresent_Node0{"The system evaluates the
disposition code"}:::decision N_SERDispositionCodePresent_Node0_action["If disposition code is SER ,
initiate equipment seizure release
processing, otherwise skip seizure
release processing"]:::main N_SERDispositionCodePresent_Node0 -- Yes --> N_SERDispositionCodePresent_Node0_action N_SERDispositionCodePresent_Node0_action --> E_SERDispositionCodePresent S_SERDispositionCodePresent --> N_SERDispositionCodePresent_Node0 N_SERDispositionCodePresent_Node0 -- No --> E_SERDispositionCodePresent
disposition code"}:::decision N_SERDispositionCodePresent_Node0_action["If disposition code is SER ,
initiate equipment seizure release
processing, otherwise skip seizure
release processing"]:::main N_SERDispositionCodePresent_Node0 -- Yes --> N_SERDispositionCodePresent_Node0_action N_SERDispositionCodePresent_Node0_action --> E_SERDispositionCodePresent S_SERDispositionCodePresent --> N_SERDispositionCodePresent_Node0 N_SERDispositionCodePresent_Node0 -- No --> E_SERDispositionCodePresent
File: GCX016.cbl
GIVEN:
A message with disposition code is being processed
WHEN:
The system evaluates the disposition code
THEN:
If disposition code is 'SER', initiate equipment seizure release processing, otherwise skip seizure release processing
β Consolidated Acceptance Criteria
- The system begins equipment seizure release processing → initialize equipment counter to track the number of equipment items currently under seizure on the train
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_InitializeEquipmentCounter(["Start Step"])
E_InitializeEquipmentCounter(["End Step"])
N_InitializeEquipmentCounter_Node0{"The system begins equipment seizure
release processing"}:::decision N_InitializeEquipmentCounter_Node0_action["Initialize equipment counter to
track the number of equipment items
currently under seizure on the train"]:::main N_InitializeEquipmentCounter_Node0 -- Yes --> N_InitializeEquipmentCounter_Node0_action N_InitializeEquipmentCounter_Node0_action --> E_InitializeEquipmentCounter S_InitializeEquipmentCounter --> N_InitializeEquipmentCounter_Node0 N_InitializeEquipmentCounter_Node0 -- No --> E_InitializeEquipmentCounter
release processing"}:::decision N_InitializeEquipmentCounter_Node0_action["Initialize equipment counter to
track the number of equipment items
currently under seizure on the train"]:::main N_InitializeEquipmentCounter_Node0 -- Yes --> N_InitializeEquipmentCounter_Node0_action N_InitializeEquipmentCounter_Node0_action --> E_InitializeEquipmentCounter S_InitializeEquipmentCounter --> N_InitializeEquipmentCounter_Node0 N_InitializeEquipmentCounter_Node0 -- No --> E_InitializeEquipmentCounter
File: GCX016.cbl
GIVEN:
SER disposition code is present and seizure release processing is initiated
WHEN:
The system begins equipment seizure release processing
THEN:
Initialize equipment counter to track the number of equipment items currently under seizure on the train
β Consolidated Acceptance Criteria
- The system checks for VID segments in the message → if VID segments are available, proceed to process each VID segment, otherwise update train seizure status directly
- The system checks for available VID segments in the message → if VID segments are available, proceed to read VID segments, otherwise complete equipment hold processing
- The system checks for available VID segments to process equipment seizure release → if VID segments are available, proceed to process equipment seizure release, otherwise complete the seizure release process
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_VIDSegmentsAvailable(["Start Step"])
E_VIDSegmentsAvailable(["End Step"])
N_VIDSegmentsAvailable_Node0{"The system checks for VID segments
in the message"}:::decision N_VIDSegmentsAvailable_Node0_action["If VID segments are available,
proceed to process each VID segment,
otherwise update train seizure
status directly"]:::main N_VIDSegmentsAvailable_Node0 -- Yes --> N_VIDSegmentsAvailable_Node0_action N_VIDSegmentsAvailable_Node0_action --> E_VIDSegmentsAvailable S_VIDSegmentsAvailable --> N_VIDSegmentsAvailable_Node0 N_VIDSegmentsAvailable_Node1{"The system checks for available VID
segments in the message"}:::decision N_VIDSegmentsAvailable_Node1_action["If VID segments are available,
proceed to read VID segments,
otherwise complete equipment hold
processing"]:::main N_VIDSegmentsAvailable_Node1 -- Yes --> N_VIDSegmentsAvailable_Node1_action N_VIDSegmentsAvailable_Node1_action --> E_VIDSegmentsAvailable N_VIDSegmentsAvailable_Node0 -- No --> N_VIDSegmentsAvailable_Node1 N_VIDSegmentsAvailable_Node2{"The system checks for available VID
segments to process equipment
seizure release"}:::decision N_VIDSegmentsAvailable_Node2_action["If VID segments are available,
proceed to process equipment seizure
release, otherwise complete the
seizure release process"]:::main N_VIDSegmentsAvailable_Node2 -- Yes --> N_VIDSegmentsAvailable_Node2_action N_VIDSegmentsAvailable_Node2_action --> E_VIDSegmentsAvailable N_VIDSegmentsAvailable_Node1 -- No --> N_VIDSegmentsAvailable_Node2 N_VIDSegmentsAvailable_Node2 -- No --> E_VIDSegmentsAvailable
in the message"}:::decision N_VIDSegmentsAvailable_Node0_action["If VID segments are available,
proceed to process each VID segment,
otherwise update train seizure
status directly"]:::main N_VIDSegmentsAvailable_Node0 -- Yes --> N_VIDSegmentsAvailable_Node0_action N_VIDSegmentsAvailable_Node0_action --> E_VIDSegmentsAvailable S_VIDSegmentsAvailable --> N_VIDSegmentsAvailable_Node0 N_VIDSegmentsAvailable_Node1{"The system checks for available VID
segments in the message"}:::decision N_VIDSegmentsAvailable_Node1_action["If VID segments are available,
proceed to read VID segments,
otherwise complete equipment hold
processing"]:::main N_VIDSegmentsAvailable_Node1 -- Yes --> N_VIDSegmentsAvailable_Node1_action N_VIDSegmentsAvailable_Node1_action --> E_VIDSegmentsAvailable N_VIDSegmentsAvailable_Node0 -- No --> N_VIDSegmentsAvailable_Node1 N_VIDSegmentsAvailable_Node2{"The system checks for available VID
segments to process equipment
seizure release"}:::decision N_VIDSegmentsAvailable_Node2_action["If VID segments are available,
proceed to process equipment seizure
release, otherwise complete the
seizure release process"]:::main N_VIDSegmentsAvailable_Node2 -- Yes --> N_VIDSegmentsAvailable_Node2_action N_VIDSegmentsAvailable_Node2_action --> E_VIDSegmentsAvailable N_VIDSegmentsAvailable_Node1 -- No --> N_VIDSegmentsAvailable_Node2 N_VIDSegmentsAvailable_Node2 -- No --> E_VIDSegmentsAvailable
File: GCX016.cbl
GIVEN:
Equipment counter is initialized for seizure release processing
WHEN:
The system checks for VID segments in the message
THEN:
If VID segments are available, proceed to process each VID segment, otherwise update train seizure status directly
File: GCX016.cbl
GIVEN:
An HMI train hold disposition code has been processed
WHEN:
The system checks for available VID segments in the message
THEN:
If VID segments are available, proceed to read VID segments, otherwise complete equipment hold processing
File: GCX016.cbl
GIVEN:
A SER disposition code has been processed for a train
WHEN:
The system checks for available VID segments to process equipment seizure release
THEN:
If VID segments are available, proceed to process equipment seizure release, otherwise complete the seizure release process
β Consolidated Acceptance Criteria
- The system processes VID segments sequentially → retrieve the next available VID segment containing equipment identification information
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GetNextVIDSegment(["Start Step"])
E_GetNextVIDSegment(["End Step"])
N_GetNextVIDSegment_Node0{"The system processes VID segments
sequentially"}:::decision N_GetNextVIDSegment_Node0_action["Retrieve the next available VID
segment containing equipment
identification information"]:::main N_GetNextVIDSegment_Node0 -- Yes --> N_GetNextVIDSegment_Node0_action N_GetNextVIDSegment_Node0_action --> E_GetNextVIDSegment S_GetNextVIDSegment --> N_GetNextVIDSegment_Node0 N_GetNextVIDSegment_Node0 -- No --> E_GetNextVIDSegment
sequentially"}:::decision N_GetNextVIDSegment_Node0_action["Retrieve the next available VID
segment containing equipment
identification information"]:::main N_GetNextVIDSegment_Node0 -- Yes --> N_GetNextVIDSegment_Node0_action N_GetNextVIDSegment_Node0_action --> E_GetNextVIDSegment S_GetNextVIDSegment --> N_GetNextVIDSegment_Node0 N_GetNextVIDSegment_Node0 -- No --> E_GetNextVIDSegment
File: GCX016.cbl
GIVEN:
VID segments are available for processing
WHEN:
The system processes VID segments sequentially
THEN:
Retrieve the next available VID segment containing equipment identification information
β Consolidated Acceptance Criteria
- The system processes the VID segment → extract the equipment identification information from the VID segment data
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExtractEquipmentIDfromVID(["Start Step"])
E_ExtractEquipmentIDfromVID(["End Step"])
N_ExtractEquipmentIDfromVID_Node0{"The system processes the VID
segment"}:::decision N_ExtractEquipmentIDfromVID_Node0_action["Extract the equipment
identification information from the
VID segment data"]:::main N_ExtractEquipmentIDfromVID_Node0 -- Yes --> N_ExtractEquipmentIDfromVID_Node0_action N_ExtractEquipmentIDfromVID_Node0_action --> E_ExtractEquipmentIDfromVID S_ExtractEquipmentIDfromVID --> N_ExtractEquipmentIDfromVID_Node0 N_ExtractEquipmentIDfromVID_Node0 -- No --> E_ExtractEquipmentIDfromVID
segment"}:::decision N_ExtractEquipmentIDfromVID_Node0_action["Extract the equipment
identification information from the
VID segment data"]:::main N_ExtractEquipmentIDfromVID_Node0 -- Yes --> N_ExtractEquipmentIDfromVID_Node0_action N_ExtractEquipmentIDfromVID_Node0_action --> E_ExtractEquipmentIDfromVID S_ExtractEquipmentIDfromVID --> N_ExtractEquipmentIDfromVID_Node0 N_ExtractEquipmentIDfromVID_Node0 -- No --> E_ExtractEquipmentIDfromVID
File: GCX016.cbl
GIVEN:
A VID segment is retrieved for processing
WHEN:
The system processes the VID segment
THEN:
Extract the equipment identification information from the VID segment data
β Consolidated Acceptance Criteria
- The system processes the equipment ID → format the equipment ID according to standard equipment identification format for train registry lookup
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_FormatEquipmentID(["Start Step"])
E_FormatEquipmentID(["End Step"])
N_FormatEquipmentID_Node0{"The system processes the equipment
ID"}:::decision N_FormatEquipmentID_Node0_action["Format the equipment ID according
to standard equipment identification
format for train registry lookup"]:::main N_FormatEquipmentID_Node0 -- Yes --> N_FormatEquipmentID_Node0_action N_FormatEquipmentID_Node0_action --> E_FormatEquipmentID S_FormatEquipmentID --> N_FormatEquipmentID_Node0 N_FormatEquipmentID_Node0 -- No --> E_FormatEquipmentID
ID"}:::decision N_FormatEquipmentID_Node0_action["Format the equipment ID according
to standard equipment identification
format for train registry lookup"]:::main N_FormatEquipmentID_Node0 -- Yes --> N_FormatEquipmentID_Node0_action N_FormatEquipmentID_Node0_action --> E_FormatEquipmentID S_FormatEquipmentID --> N_FormatEquipmentID_Node0 N_FormatEquipmentID_Node0 -- No --> E_FormatEquipmentID
File: GCX016.cbl
GIVEN:
Equipment ID is extracted from VID segment
WHEN:
The system processes the equipment ID
THEN:
Format the equipment ID according to standard equipment identification format for train registry lookup
β Consolidated Acceptance Criteria
- The system searches for the equipment on the train → if equipment is found on the train, proceed with seizure release, otherwise generate equipment not found warning
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_EquipmentFoundonTrain(["Start Step"])
E_EquipmentFoundonTrain(["End Step"])
N_EquipmentFoundonTrain_Node0{"The system searches for the
equipment on the train"}:::decision N_EquipmentFoundonTrain_Node0_action["If equipment is found on the train,
proceed with seizure release,
otherwise generate equipment not
found warning"]:::main N_EquipmentFoundonTrain_Node0 -- Yes --> N_EquipmentFoundonTrain_Node0_action N_EquipmentFoundonTrain_Node0_action --> E_EquipmentFoundonTrain S_EquipmentFoundonTrain --> N_EquipmentFoundonTrain_Node0 N_EquipmentFoundonTrain_Node0 -- No --> E_EquipmentFoundonTrain
equipment on the train"}:::decision N_EquipmentFoundonTrain_Node0_action["If equipment is found on the train,
proceed with seizure release,
otherwise generate equipment not
found warning"]:::main N_EquipmentFoundonTrain_Node0 -- Yes --> N_EquipmentFoundonTrain_Node0_action N_EquipmentFoundonTrain_Node0_action --> E_EquipmentFoundonTrain S_EquipmentFoundonTrain --> N_EquipmentFoundonTrain_Node0 N_EquipmentFoundonTrain_Node0 -- No --> E_EquipmentFoundonTrain
File: GCX016.cbl
GIVEN:
Equipment ID is formatted for lookup
WHEN:
The system searches for the equipment on the train
THEN:
If equipment is found on the train, proceed with seizure release, otherwise generate equipment not found warning
β Consolidated Acceptance Criteria
- The system processes seizure release for the equipment → remove the seizure status from the equipment record
- The system processes SER disposition code → the seizure status is removed from the equipment in the system
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RemoveSeizureStatusfromEquipment(["Start Step"])
E_RemoveSeizureStatusfromEquipment(["End Step"])
N_RemoveSeizureStatusfromEquipment_Node0{"The system processes seizure
release for the equipment"}:::decision N_RemoveSeizureStatusfromEquipment_Node0_action["Remove the seizure status from the
equipment record"]:::main N_RemoveSeizureStatusfromEquipment_Node0 -- Yes --> N_RemoveSeizureStatusfromEquipment_Node0_action N_RemoveSeizureStatusfromEquipment_Node0_action --> E_RemoveSeizureStatusfromEquipment S_RemoveSeizureStatusfromEquipment --> N_RemoveSeizureStatusfromEquipment_Node0 N_RemoveSeizureStatusfromEquipment_Node1{"The system processes SER
disposition code"}:::decision N_RemoveSeizureStatusfromEquipment_Node1_action["The seizure status is removed from
the equipment in the system"]:::main N_RemoveSeizureStatusfromEquipment_Node1 -- Yes --> N_RemoveSeizureStatusfromEquipment_Node1_action N_RemoveSeizureStatusfromEquipment_Node1_action --> E_RemoveSeizureStatusfromEquipment N_RemoveSeizureStatusfromEquipment_Node0 -- No --> N_RemoveSeizureStatusfromEquipment_Node1 N_RemoveSeizureStatusfromEquipment_Node1 -- No --> E_RemoveSeizureStatusfromEquipment
release for the equipment"}:::decision N_RemoveSeizureStatusfromEquipment_Node0_action["Remove the seizure status from the
equipment record"]:::main N_RemoveSeizureStatusfromEquipment_Node0 -- Yes --> N_RemoveSeizureStatusfromEquipment_Node0_action N_RemoveSeizureStatusfromEquipment_Node0_action --> E_RemoveSeizureStatusfromEquipment S_RemoveSeizureStatusfromEquipment --> N_RemoveSeizureStatusfromEquipment_Node0 N_RemoveSeizureStatusfromEquipment_Node1{"The system processes SER
disposition code"}:::decision N_RemoveSeizureStatusfromEquipment_Node1_action["The seizure status is removed from
the equipment in the system"]:::main N_RemoveSeizureStatusfromEquipment_Node1 -- Yes --> N_RemoveSeizureStatusfromEquipment_Node1_action N_RemoveSeizureStatusfromEquipment_Node1_action --> E_RemoveSeizureStatusfromEquipment N_RemoveSeizureStatusfromEquipment_Node0 -- No --> N_RemoveSeizureStatusfromEquipment_Node1 N_RemoveSeizureStatusfromEquipment_Node1 -- No --> E_RemoveSeizureStatusfromEquipment
File: GCX016.cbl
GIVEN:
Equipment is found on the train and has seizure status
WHEN:
The system processes seizure release for the equipment
THEN:
Remove the seizure status from the equipment record
File: GCX016.cbl
GIVEN:
Equipment ID is valid for seizure release processing
WHEN:
The system processes SER disposition code
THEN:
The seizure status is removed from the equipment in the system
β Consolidated Acceptance Criteria
- The system updates equipment seizure tracking → decrement the total count of seized equipment on the train by one
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_DecrementSeizedEquipmentCount(["Start Step"])
E_DecrementSeizedEquipmentCount(["End Step"])
N_DecrementSeizedEquipmentCount_Node0{"The system updates equipment
seizure tracking"}:::decision N_DecrementSeizedEquipmentCount_Node0_action["Decrement the total count of seized
equipment on the train by one"]:::main N_DecrementSeizedEquipmentCount_Node0 -- Yes --> N_DecrementSeizedEquipmentCount_Node0_action N_DecrementSeizedEquipmentCount_Node0_action --> E_DecrementSeizedEquipmentCount S_DecrementSeizedEquipmentCount --> N_DecrementSeizedEquipmentCount_Node0 N_DecrementSeizedEquipmentCount_Node0 -- No --> E_DecrementSeizedEquipmentCount
seizure tracking"}:::decision N_DecrementSeizedEquipmentCount_Node0_action["Decrement the total count of seized
equipment on the train by one"]:::main N_DecrementSeizedEquipmentCount_Node0 -- Yes --> N_DecrementSeizedEquipmentCount_Node0_action N_DecrementSeizedEquipmentCount_Node0_action --> E_DecrementSeizedEquipmentCount S_DecrementSeizedEquipmentCount --> N_DecrementSeizedEquipmentCount_Node0 N_DecrementSeizedEquipmentCount_Node0 -- No --> E_DecrementSeizedEquipmentCount
File: GCX016.cbl
GIVEN:
Seizure status is removed from an equipment item
WHEN:
The system updates equipment seizure tracking
THEN:
Decrement the total count of seized equipment on the train by one
β Consolidated Acceptance Criteria
- The system completes seizure release for an equipment item → log the equipment seizure release event with equipment ID, timestamp, and release details
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogEquipmentReleasefromSeizure(["Start Step"])
E_LogEquipmentReleasefromSeizure(["End Step"])
N_LogEquipmentReleasefromSeizure_Node0{"The system completes seizure
release for an equipment item"}:::decision N_LogEquipmentReleasefromSeizure_Node0_action["Log the equipment seizure release
event with equipment ID, timestamp,
and release details"]:::main N_LogEquipmentReleasefromSeizure_Node0 -- Yes --> N_LogEquipmentReleasefromSeizure_Node0_action N_LogEquipmentReleasefromSeizure_Node0_action --> E_LogEquipmentReleasefromSeizure S_LogEquipmentReleasefromSeizure --> N_LogEquipmentReleasefromSeizure_Node0 N_LogEquipmentReleasefromSeizure_Node0 -- No --> E_LogEquipmentReleasefromSeizure
release for an equipment item"}:::decision N_LogEquipmentReleasefromSeizure_Node0_action["Log the equipment seizure release
event with equipment ID, timestamp,
and release details"]:::main N_LogEquipmentReleasefromSeizure_Node0 -- Yes --> N_LogEquipmentReleasefromSeizure_Node0_action N_LogEquipmentReleasefromSeizure_Node0_action --> E_LogEquipmentReleasefromSeizure S_LogEquipmentReleasefromSeizure --> N_LogEquipmentReleasefromSeizure_Node0 N_LogEquipmentReleasefromSeizure_Node0 -- No --> E_LogEquipmentReleasefromSeizure
File: GCX016.cbl
GIVEN:
Equipment seizure status is removed and count is decremented
WHEN:
The system completes seizure release for an equipment item
THEN:
Log the equipment seizure release event with equipment ID, timestamp, and release details
β Consolidated Acceptance Criteria
- The system cannot locate the equipment on the train → generate a warning message indicating the equipment was not found on the train and continue processing remaining VID segments
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_EquipmentNotFoundWarning(["Start Step"])
E_EquipmentNotFoundWarning(["End Step"])
N_EquipmentNotFoundWarning_Node0{"The system cannot locate the
equipment on the train"}:::decision N_EquipmentNotFoundWarning_Node0_action["Generate a warning message
indicating the equipment was not
found on the train and continue
processing remaining VID segments"]:::main N_EquipmentNotFoundWarning_Node0 -- Yes --> N_EquipmentNotFoundWarning_Node0_action N_EquipmentNotFoundWarning_Node0_action --> E_EquipmentNotFoundWarning S_EquipmentNotFoundWarning --> N_EquipmentNotFoundWarning_Node0 N_EquipmentNotFoundWarning_Node0 -- No --> E_EquipmentNotFoundWarning
equipment on the train"}:::decision N_EquipmentNotFoundWarning_Node0_action["Generate a warning message
indicating the equipment was not
found on the train and continue
processing remaining VID segments"]:::main N_EquipmentNotFoundWarning_Node0 -- Yes --> N_EquipmentNotFoundWarning_Node0_action N_EquipmentNotFoundWarning_Node0_action --> E_EquipmentNotFoundWarning S_EquipmentNotFoundWarning --> N_EquipmentNotFoundWarning_Node0 N_EquipmentNotFoundWarning_Node0 -- No --> E_EquipmentNotFoundWarning
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
Equipment ID is formatted but not found on the train
WHEN:
The system cannot locate the equipment on the train
THEN:
- Generate a warning message indicating the equipment was not found on the train
- Continue processing remaining vid segments
β Consolidated Acceptance Criteria
- If the seized equipment count → if any equipment still has seizure status, keep train seizure status active, otherwise remove train seizure status
- If the train's overall seizure status → if any equipment is still seized, keep train in seized status, otherwise release train from seizure status
- The system checks if any equipment on train is still seized → if any equipment remains seized, set train to partially seized status, otherwise set to not seized status
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AnyEquipmentStillSeized(["Start Step"])
E_AnyEquipmentStillSeized(["End Step"])
N_AnyEquipmentStillSeized_Node0{"The system evaluates the seized
equipment count"}:::decision N_AnyEquipmentStillSeized_Node0_action["If any equipment still has seizure
status, keep train seizure status
active, otherwise remove train
seizure status"]:::main N_AnyEquipmentStillSeized_Node0 -- Yes --> N_AnyEquipmentStillSeized_Node0_action N_AnyEquipmentStillSeized_Node0_action --> E_AnyEquipmentStillSeized S_AnyEquipmentStillSeized --> N_AnyEquipmentStillSeized_Node0 N_AnyEquipmentStillSeized_Node1{"The system evaluates the train s
overall seizure status"}:::decision N_AnyEquipmentStillSeized_Node1_action["If any equipment is still seized,
keep train in seized status,
otherwise release train from seizure
status"]:::main N_AnyEquipmentStillSeized_Node1 -- Yes --> N_AnyEquipmentStillSeized_Node1_action N_AnyEquipmentStillSeized_Node1_action --> E_AnyEquipmentStillSeized N_AnyEquipmentStillSeized_Node0 -- No --> N_AnyEquipmentStillSeized_Node1 N_AnyEquipmentStillSeized_Node2{"The system checks if any equipment
on train is still seized"}:::decision N_AnyEquipmentStillSeized_Node2_action["If any equipment remains seized,
set train to partially seized
status, otherwise set to not seized
status"]:::main N_AnyEquipmentStillSeized_Node2 -- Yes --> N_AnyEquipmentStillSeized_Node2_action N_AnyEquipmentStillSeized_Node2_action --> E_AnyEquipmentStillSeized N_AnyEquipmentStillSeized_Node1 -- No --> N_AnyEquipmentStillSeized_Node2 N_AnyEquipmentStillSeized_Node2 -- No --> E_AnyEquipmentStillSeized
equipment count"}:::decision N_AnyEquipmentStillSeized_Node0_action["If any equipment still has seizure
status, keep train seizure status
active, otherwise remove train
seizure status"]:::main N_AnyEquipmentStillSeized_Node0 -- Yes --> N_AnyEquipmentStillSeized_Node0_action N_AnyEquipmentStillSeized_Node0_action --> E_AnyEquipmentStillSeized S_AnyEquipmentStillSeized --> N_AnyEquipmentStillSeized_Node0 N_AnyEquipmentStillSeized_Node1{"The system evaluates the train s
overall seizure status"}:::decision N_AnyEquipmentStillSeized_Node1_action["If any equipment is still seized,
keep train in seized status,
otherwise release train from seizure
status"]:::main N_AnyEquipmentStillSeized_Node1 -- Yes --> N_AnyEquipmentStillSeized_Node1_action N_AnyEquipmentStillSeized_Node1_action --> E_AnyEquipmentStillSeized N_AnyEquipmentStillSeized_Node0 -- No --> N_AnyEquipmentStillSeized_Node1 N_AnyEquipmentStillSeized_Node2{"The system checks if any equipment
on train is still seized"}:::decision N_AnyEquipmentStillSeized_Node2_action["If any equipment remains seized,
set train to partially seized
status, otherwise set to not seized
status"]:::main N_AnyEquipmentStillSeized_Node2 -- Yes --> N_AnyEquipmentStillSeized_Node2_action N_AnyEquipmentStillSeized_Node2_action --> E_AnyEquipmentStillSeized N_AnyEquipmentStillSeized_Node1 -- No --> N_AnyEquipmentStillSeized_Node2 N_AnyEquipmentStillSeized_Node2 -- No --> E_AnyEquipmentStillSeized
File: GCX016.cbl
GIVEN:
Train seizure status is being updated
WHEN:
The system evaluates the seized equipment count
THEN:
If any equipment still has seizure status, keep train seizure status active, otherwise remove train seizure status
File: GCX016.cbl
GIVEN:
All VID segments have been processed for equipment seizure release
WHEN:
The system evaluates the train's overall seizure status
THEN:
If any equipment is still seized, keep train in seized status, otherwise release train from seizure status
File: GCX016.cbl
GIVEN:
Train seizure status has been updated after equipment release
WHEN:
The system checks if any equipment on train is still seized
THEN:
If any equipment remains seized, set train to partially seized status, otherwise set to not seized status
β Consolidated Acceptance Criteria
- The disposition code is not 'SER' → skip all equipment seizure release processing and complete the seizure release workflow
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SkipNoSERCode(["Start Step"])
E_SkipNoSERCode(["End Step"])
N_SkipNoSERCode_Node0{"The disposition code is not SER"}:::decision
N_SkipNoSERCode_Node0_action["Skip all equipment seizure release
processing and complete the seizure
release workflow"]:::main N_SkipNoSERCode_Node0 -- Yes --> N_SkipNoSERCode_Node0_action N_SkipNoSERCode_Node0_action --> E_SkipNoSERCode S_SkipNoSERCode --> N_SkipNoSERCode_Node0 N_SkipNoSERCode_Node0 -- No --> E_SkipNoSERCode
processing and complete the seizure
release workflow"]:::main N_SkipNoSERCode_Node0 -- Yes --> N_SkipNoSERCode_Node0_action N_SkipNoSERCode_Node0_action --> E_SkipNoSERCode S_SkipNoSERCode --> N_SkipNoSERCode_Node0 N_SkipNoSERCode_Node0 -- No --> E_SkipNoSERCode
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
A message is being processed for disposition codes
WHEN:
The disposition code is not 'SER'
THEN:
- Skip all equipment seizure release processing
- Complete the seizure release workflow
β Consolidated Acceptance Criteria
- If the current processing context → the system routes K1 remarks to either train-level processing or cargo-level processing based on the active context
- If the current processing context → the system routes K1 processing to either train-level operations or cargo-level operations based on the context
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ProcessingContext(["Start Step"])
E_ProcessingContext(["End Step"])
N_ProcessingContext_Node0{"The system evaluates the current
processing context"}:::decision N_ProcessingContext_Node0_action["The system routes K1 remarks to
either train-level processing or
cargo-level processing based on the
active context"]:::main N_ProcessingContext_Node0 -- Yes --> N_ProcessingContext_Node0_action N_ProcessingContext_Node0_action --> E_ProcessingContext S_ProcessingContext --> N_ProcessingContext_Node0 N_ProcessingContext_Node1{"The system evaluates the current
processing context"}:::decision N_ProcessingContext_Node1_action["The system routes K1 processing to
either train-level operations or
cargo-level operations based on the
context"]:::main N_ProcessingContext_Node1 -- Yes --> N_ProcessingContext_Node1_action N_ProcessingContext_Node1_action --> E_ProcessingContext N_ProcessingContext_Node0 -- No --> N_ProcessingContext_Node1 N_ProcessingContext_Node1 -- No --> E_ProcessingContext
processing context"}:::decision N_ProcessingContext_Node0_action["The system routes K1 remarks to
either train-level processing or
cargo-level processing based on the
active context"]:::main N_ProcessingContext_Node0 -- Yes --> N_ProcessingContext_Node0_action N_ProcessingContext_Node0_action --> E_ProcessingContext S_ProcessingContext --> N_ProcessingContext_Node0 N_ProcessingContext_Node1{"The system evaluates the current
processing context"}:::decision N_ProcessingContext_Node1_action["The system routes K1 processing to
either train-level operations or
cargo-level operations based on the
context"]:::main N_ProcessingContext_Node1 -- Yes --> N_ProcessingContext_Node1_action N_ProcessingContext_Node1_action --> E_ProcessingContext N_ProcessingContext_Node0 -- No --> N_ProcessingContext_Node1 N_ProcessingContext_Node1 -- No --> E_ProcessingContext
File: GCX016.cbl
GIVEN:
A K1 segment is received for processing
WHEN:
The system evaluates the current processing context
THEN:
The system routes K1 remarks to either train-level processing or cargo-level processing based on the active context
File: GCX016.cbl
GIVEN:
A K1 comment segment is received for processing
WHEN:
The system evaluates the current processing context
THEN:
The system routes K1 processing to either train-level operations or cargo-level operations based on the context
β Consolidated Acceptance Criteria
- The system checks if the maximum limit of 4 comments has been reached → iF the comment array has fewer than 4 comments THEN the system adds the new K1 comment to the array ELSE the system skips additional comments beyond the 4-comment limit
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_Maximum4CommentsReached(["Start Step"])
E_Maximum4CommentsReached(["End Step"])
N_Maximum4CommentsReached_Node0{"The system checks if the maximum
limit of 4 comments has been reached"}:::decision N_Maximum4CommentsReached_Node0_action["IF the comment array has fewer than
4 comments THEN the system adds the
new K1 comment to the array ELSE the
system skips additional comments
beyond the 4-comment limit"]:::main N_Maximum4CommentsReached_Node0 -- Yes --> N_Maximum4CommentsReached_Node0_action N_Maximum4CommentsReached_Node0_action --> E_Maximum4CommentsReached S_Maximum4CommentsReached --> N_Maximum4CommentsReached_Node0 N_Maximum4CommentsReached_Node0 -- No --> E_Maximum4CommentsReached
limit of 4 comments has been reached"}:::decision N_Maximum4CommentsReached_Node0_action["IF the comment array has fewer than
4 comments THEN the system adds the
new K1 comment to the array ELSE the
system skips additional comments
beyond the 4-comment limit"]:::main N_Maximum4CommentsReached_Node0 -- Yes --> N_Maximum4CommentsReached_Node0_action N_Maximum4CommentsReached_Node0_action --> E_Maximum4CommentsReached S_Maximum4CommentsReached --> N_Maximum4CommentsReached_Node0 N_Maximum4CommentsReached_Node0 -- No --> E_Maximum4CommentsReached
File: GCX016.cbl
GIVEN:
K1 comments are being added to the comment array
WHEN:
The system checks if the maximum limit of 4 comments has been reached
THEN:
IF the comment array has fewer than 4 comments THEN the system adds the new K1 comment to the array ELSE the system skips additional comments beyond the 4-comment limit
β Consolidated Acceptance Criteria
- The system processes the K1 comment for storage → the system adds the K1 comment to the next available position in the comment array AND increments the comment counter
- The system processes the K1 comment → the K1 comment is added to the comment array for inclusion in messages
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AddK1CommenttoArray(["Start Step"])
E_AddK1CommenttoArray(["End Step"])
N_AddK1CommenttoArray_Node0{"The system processes the K1 comment
for storage"}:::decision N_AddK1CommenttoArray_Node0_action["The system adds the K1 comment to
the next available position in the
comment array AND increments the
comment counter"]:::main N_AddK1CommenttoArray_Node0 -- Yes --> N_AddK1CommenttoArray_Node0_action N_AddK1CommenttoArray_Node0_action --> E_AddK1CommenttoArray S_AddK1CommenttoArray --> N_AddK1CommenttoArray_Node0 N_AddK1CommenttoArray_Node1{"The system processes the K1 comment"}:::decision N_AddK1CommenttoArray_Node1_action["The K1 comment is added to the
comment array for inclusion in
messages"]:::main N_AddK1CommenttoArray_Node1 -- Yes --> N_AddK1CommenttoArray_Node1_action N_AddK1CommenttoArray_Node1_action --> E_AddK1CommenttoArray N_AddK1CommenttoArray_Node0 -- No --> N_AddK1CommenttoArray_Node1 N_AddK1CommenttoArray_Node1 -- No --> E_AddK1CommenttoArray
for storage"}:::decision N_AddK1CommenttoArray_Node0_action["The system adds the K1 comment to
the next available position in the
comment array AND increments the
comment counter"]:::main N_AddK1CommenttoArray_Node0 -- Yes --> N_AddK1CommenttoArray_Node0_action N_AddK1CommenttoArray_Node0_action --> E_AddK1CommenttoArray S_AddK1CommenttoArray --> N_AddK1CommenttoArray_Node0 N_AddK1CommenttoArray_Node1{"The system processes the K1 comment"}:::decision N_AddK1CommenttoArray_Node1_action["The K1 comment is added to the
comment array for inclusion in
messages"]:::main N_AddK1CommenttoArray_Node1 -- Yes --> N_AddK1CommenttoArray_Node1_action N_AddK1CommenttoArray_Node1_action --> E_AddK1CommenttoArray N_AddK1CommenttoArray_Node0 -- No --> N_AddK1CommenttoArray_Node1 N_AddK1CommenttoArray_Node1 -- No --> E_AddK1CommenttoArray
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
A K1 comment needs to be stored AND the comment array has not reached the maximum limit of 4 comments
WHEN:
The system processes the K1 comment for storage
THEN:
- The system adds the k1 comment to the next available position in the comment array
- Increments the comment counter
File: GCX016.cbl
GIVEN:
A K1 comment segment is received and comment count is less than 4
WHEN:
The system processes the K1 comment
THEN:
The K1 comment is added to the comment array for inclusion in messages
β Consolidated Acceptance Criteria
- The system attempts to process additional K1 comments → the system skips the additional K1 comments without adding them to the array AND continues processing without error
- If the comment for processing → the additional K1 comment is skipped and not included in the comment array
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SkipAdditionalComments(["Start Step"])
E_SkipAdditionalComments(["End Step"])
N_SkipAdditionalComments_Node0{"The system attempts to process
additional K1 comments"}:::decision N_SkipAdditionalComments_Node0_action["The system skips the additional K1
comments without adding them to the
array AND continues processing
without error"]:::main N_SkipAdditionalComments_Node0 -- Yes --> N_SkipAdditionalComments_Node0_action N_SkipAdditionalComments_Node0_action --> E_SkipAdditionalComments S_SkipAdditionalComments --> N_SkipAdditionalComments_Node0 N_SkipAdditionalComments_Node1{"The system evaluates the comment
for processing"}:::decision N_SkipAdditionalComments_Node1_action["The additional K1 comment is
skipped and not included in the
comment array"]:::main N_SkipAdditionalComments_Node1 -- Yes --> N_SkipAdditionalComments_Node1_action N_SkipAdditionalComments_Node1_action --> E_SkipAdditionalComments N_SkipAdditionalComments_Node0 -- No --> N_SkipAdditionalComments_Node1 N_SkipAdditionalComments_Node1 -- No --> E_SkipAdditionalComments
additional K1 comments"}:::decision N_SkipAdditionalComments_Node0_action["The system skips the additional K1
comments without adding them to the
array AND continues processing
without error"]:::main N_SkipAdditionalComments_Node0 -- Yes --> N_SkipAdditionalComments_Node0_action N_SkipAdditionalComments_Node0_action --> E_SkipAdditionalComments S_SkipAdditionalComments --> N_SkipAdditionalComments_Node0 N_SkipAdditionalComments_Node1{"The system evaluates the comment
for processing"}:::decision N_SkipAdditionalComments_Node1_action["The additional K1 comment is
skipped and not included in the
comment array"]:::main N_SkipAdditionalComments_Node1 -- Yes --> N_SkipAdditionalComments_Node1_action N_SkipAdditionalComments_Node1_action --> E_SkipAdditionalComments N_SkipAdditionalComments_Node0 -- No --> N_SkipAdditionalComments_Node1 N_SkipAdditionalComments_Node1 -- No --> E_SkipAdditionalComments
File: GCX016.cbl
GIVEN:
A K1 comment needs to be stored AND the comment array has already reached the maximum limit of 4 comments
WHEN:
The system attempts to process additional K1 comments
THEN:
- The system skips the additional k1 comments without adding them to the array
- Continues processing without error
File: GCX016.cbl
GIVEN:
A K1 comment segment is received and comment count is already 4 or more
WHEN:
The system evaluates the comment for processing
THEN:
- The additional k1 comment is skipped
- Not included in the comment array
β Consolidated Acceptance Criteria
- The system formats the Merlin message → the system includes all available K1 comments in the Merlin message AND formats them appropriately for Merlin message standards
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IncludeCommentsinMerlinMessages(["Start Step"])
E_IncludeCommentsinMerlinMessages(["End Step"])
N_IncludeCommentsinMerlinMessages_Node0{"The system formats the Merlin
message"}:::decision N_IncludeCommentsinMerlinMessages_Node0_action["The system includes all available
K1 comments in the Merlin message
AND formats them appropriately for
Merlin message standards"]:::main N_IncludeCommentsinMerlinMessages_Node0 -- Yes --> N_IncludeCommentsinMerlinMessages_Node0_action N_IncludeCommentsinMerlinMessages_Node0_action --> E_IncludeCommentsinMerlinMessages S_IncludeCommentsinMerlinMessages --> N_IncludeCommentsinMerlinMessages_Node0 N_IncludeCommentsinMerlinMessages_Node0 -- No --> E_IncludeCommentsinMerlinMessages
message"}:::decision N_IncludeCommentsinMerlinMessages_Node0_action["The system includes all available
K1 comments in the Merlin message
AND formats them appropriately for
Merlin message standards"]:::main N_IncludeCommentsinMerlinMessages_Node0 -- Yes --> N_IncludeCommentsinMerlinMessages_Node0_action N_IncludeCommentsinMerlinMessages_Node0_action --> E_IncludeCommentsinMerlinMessages S_IncludeCommentsinMerlinMessages --> N_IncludeCommentsinMerlinMessages_Node0 N_IncludeCommentsinMerlinMessages_Node0 -- No --> E_IncludeCommentsinMerlinMessages
File: GCX016.cbl
GIVEN:
K1 comments are available in the comment array AND a Merlin message is being prepared
WHEN:
The system formats the Merlin message
THEN:
- The system includes all available k1 comments in the merlin message
- Formats them appropriately for merlin message standards
β Consolidated Acceptance Criteria
- The system formats the release message → the system includes all available K1 comments in the release message AND ensures comments are properly formatted for release message recipients
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IncludeCommentsinReleaseMessages(["Start Step"])
E_IncludeCommentsinReleaseMessages(["End Step"])
N_IncludeCommentsinReleaseMessages_Node0{"The system formats the release
message"}:::decision N_IncludeCommentsinReleaseMessages_Node0_action["The system includes all available
K1 comments in the release message
AND ensures comments are properly
formatted for release message
recipients"]:::main N_IncludeCommentsinReleaseMessages_Node0 -- Yes --> N_IncludeCommentsinReleaseMessages_Node0_action N_IncludeCommentsinReleaseMessages_Node0_action --> E_IncludeCommentsinReleaseMessages S_IncludeCommentsinReleaseMessages --> N_IncludeCommentsinReleaseMessages_Node0 N_IncludeCommentsinReleaseMessages_Node0 -- No --> E_IncludeCommentsinReleaseMessages
message"}:::decision N_IncludeCommentsinReleaseMessages_Node0_action["The system includes all available
K1 comments in the release message
AND ensures comments are properly
formatted for release message
recipients"]:::main N_IncludeCommentsinReleaseMessages_Node0 -- Yes --> N_IncludeCommentsinReleaseMessages_Node0_action N_IncludeCommentsinReleaseMessages_Node0_action --> E_IncludeCommentsinReleaseMessages S_IncludeCommentsinReleaseMessages --> N_IncludeCommentsinReleaseMessages_Node0 N_IncludeCommentsinReleaseMessages_Node0 -- No --> E_IncludeCommentsinReleaseMessages
File: GCX016.cbl
GIVEN:
K1 comments are available in the comment array AND a release message is being prepared
WHEN:
The system formats the release message
THEN:
- The system includes all available k1 comments in the release message
- Ensures comments are properly formatted for release message recipients
β Consolidated Acceptance Criteria
- The system formats the broker notification → the system includes all available K1 comments in the broker notification AND ensures comments are formatted appropriately for broker communication standards
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IncludeCommentsinBrokerNotifications(["Start Step"])
E_IncludeCommentsinBrokerNotifications(["End Step"])
N_IncludeCommentsinBrokerNotifications_Node0{"The system formats the broker
notification"}:::decision N_IncludeCommentsinBrokerNotifications_Node0_action["The system includes all available
K1 comments in the broker
notification AND ensures comments
are formatted appropriately for
broker communication standards"]:::main N_IncludeCommentsinBrokerNotifications_Node0 -- Yes --> N_IncludeCommentsinBrokerNotifications_Node0_action N_IncludeCommentsinBrokerNotifications_Node0_action --> E_IncludeCommentsinBrokerNotifications S_IncludeCommentsinBrokerNotifications --> N_IncludeCommentsinBrokerNotifications_Node0 N_IncludeCommentsinBrokerNotifications_Node0 -- No --> E_IncludeCommentsinBrokerNotifications
notification"}:::decision N_IncludeCommentsinBrokerNotifications_Node0_action["The system includes all available
K1 comments in the broker
notification AND ensures comments
are formatted appropriately for
broker communication standards"]:::main N_IncludeCommentsinBrokerNotifications_Node0 -- Yes --> N_IncludeCommentsinBrokerNotifications_Node0_action N_IncludeCommentsinBrokerNotifications_Node0_action --> E_IncludeCommentsinBrokerNotifications S_IncludeCommentsinBrokerNotifications --> N_IncludeCommentsinBrokerNotifications_Node0 N_IncludeCommentsinBrokerNotifications_Node0 -- No --> E_IncludeCommentsinBrokerNotifications
File: GCX016.cbl
GIVEN:
K1 comments are available in the comment array AND a broker notification is being prepared
WHEN:
The system formats the broker notification
THEN:
- The system includes all available k1 comments in the broker notification
- Ensures comments are formatted appropriately for broker communication standards
β Consolidated Acceptance Criteria
- The system validates the X4 segment structure and required fields → the segment is accepted for processing if valid, otherwise an error is generated
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_X4SegmentValid(["Start Step"])
E_X4SegmentValid(["End Step"])
N_X4SegmentValid_Node0{"The system validates the X4 segment
structure and required fields"}:::decision N_X4SegmentValid_Node0_action["The segment is accepted for
processing if valid, otherwise an
error is generated"]:::main N_X4SegmentValid_Node0 -- Yes --> N_X4SegmentValid_Node0_action N_X4SegmentValid_Node0_action --> E_X4SegmentValid S_X4SegmentValid --> N_X4SegmentValid_Node0 N_X4SegmentValid_Node0 -- No --> E_X4SegmentValid
structure and required fields"}:::decision N_X4SegmentValid_Node0_action["The segment is accepted for
processing if valid, otherwise an
error is generated"]:::main N_X4SegmentValid_Node0 -- Yes --> N_X4SegmentValid_Node0_action N_X4SegmentValid_Node0_action --> E_X4SegmentValid S_X4SegmentValid --> N_X4SegmentValid_Node0 N_X4SegmentValid_Node0 -- No --> E_X4SegmentValid
File: GCX016.cbl
GIVEN:
An X4 segment is received for processing
WHEN:
- The system validates the x4 segment structure
- Required fields
THEN:
The segment is accepted for processing if valid, otherwise an error is generated
β Consolidated Acceptance Criteria
- The system processes the X4 segment → all customs release information including disposition code, entry number, release quantity, bond number, car ID, and waybill are extracted and stored
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExtractCustomsReleaseInformation(["Start Step"])
E_ExtractCustomsReleaseInformation(["End Step"])
N_ExtractCustomsReleaseInformation_Node0{"The system processes the X4 segment"}:::decision
N_ExtractCustomsReleaseInformation_Node0_action["All customs release information
including disposition code, entry
number, release quantity, bond
number, car ID, and waybill are
extracted and stored"]:::main N_ExtractCustomsReleaseInformation_Node0 -- Yes --> N_ExtractCustomsReleaseInformation_Node0_action N_ExtractCustomsReleaseInformation_Node0_action --> E_ExtractCustomsReleaseInformation S_ExtractCustomsReleaseInformation --> N_ExtractCustomsReleaseInformation_Node0 N_ExtractCustomsReleaseInformation_Node0 -- No --> E_ExtractCustomsReleaseInformation
including disposition code, entry
number, release quantity, bond
number, car ID, and waybill are
extracted and stored"]:::main N_ExtractCustomsReleaseInformation_Node0 -- Yes --> N_ExtractCustomsReleaseInformation_Node0_action N_ExtractCustomsReleaseInformation_Node0_action --> E_ExtractCustomsReleaseInformation S_ExtractCustomsReleaseInformation --> N_ExtractCustomsReleaseInformation_Node0 N_ExtractCustomsReleaseInformation_Node0 -- No --> E_ExtractCustomsReleaseInformation
File: GCX016.cbl
GIVEN:
A valid X4 segment is available for processing
WHEN:
The system processes the X4 segment
THEN:
- All customs release information including disposition code, entry number, release quantity, bond number, car id, and waybill are extracted
- Stored
β Consolidated Acceptance Criteria
- The system checks for the presence of a bond number → if bond number is present, process all cargo with the same bond number; otherwise check for car ID and waybill combination
- The system checks for bond control number presence in the X4 segment → if bond control number is empty or spaces, log bond validation error and skip bond-based processing, otherwise proceed to bond format validation
- The system checks for the presence of a bond control number → processing continues to bond validation if bond number exists, otherwise bond number error processing is triggered
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_BondNumberPresent(["Start Step"])
E_BondNumberPresent(["End Step"])
N_BondNumberPresent_Node0{"The system checks for the presence
of a bond number"}:::decision N_BondNumberPresent_Node0_action["If bond number is present, process
all cargo with the same bond number
otherwise check for car ID and
waybill combination"]:::main N_BondNumberPresent_Node0 -- Yes --> N_BondNumberPresent_Node0_action N_BondNumberPresent_Node0_action --> E_BondNumberPresent S_BondNumberPresent --> N_BondNumberPresent_Node0 N_BondNumberPresent_Node1{"The system checks for bond control
number presence in the X4 segment"}:::decision N_BondNumberPresent_Node1_action["If bond control number is empty or
spaces, log bond validation error
and skip bond-based processing,
otherwise proceed to bond format
validation"]:::main N_BondNumberPresent_Node1 -- Yes --> N_BondNumberPresent_Node1_action N_BondNumberPresent_Node1_action --> E_BondNumberPresent N_BondNumberPresent_Node0 -- No --> N_BondNumberPresent_Node1 N_BondNumberPresent_Node2{"The system checks for the presence
of a bond control number"}:::decision N_BondNumberPresent_Node2_action["Processing continues to bond
validation if bond number exists,
otherwise bond number error
processing is triggered"]:::main N_BondNumberPresent_Node2 -- Yes --> N_BondNumberPresent_Node2_action N_BondNumberPresent_Node2_action --> E_BondNumberPresent N_BondNumberPresent_Node1 -- No --> N_BondNumberPresent_Node2 N_BondNumberPresent_Node2 -- No --> E_BondNumberPresent
of a bond number"}:::decision N_BondNumberPresent_Node0_action["If bond number is present, process
all cargo with the same bond number
otherwise check for car ID and
waybill combination"]:::main N_BondNumberPresent_Node0 -- Yes --> N_BondNumberPresent_Node0_action N_BondNumberPresent_Node0_action --> E_BondNumberPresent S_BondNumberPresent --> N_BondNumberPresent_Node0 N_BondNumberPresent_Node1{"The system checks for bond control
number presence in the X4 segment"}:::decision N_BondNumberPresent_Node1_action["If bond control number is empty or
spaces, log bond validation error
and skip bond-based processing,
otherwise proceed to bond format
validation"]:::main N_BondNumberPresent_Node1 -- Yes --> N_BondNumberPresent_Node1_action N_BondNumberPresent_Node1_action --> E_BondNumberPresent N_BondNumberPresent_Node0 -- No --> N_BondNumberPresent_Node1 N_BondNumberPresent_Node2{"The system checks for the presence
of a bond control number"}:::decision N_BondNumberPresent_Node2_action["Processing continues to bond
validation if bond number exists,
otherwise bond number error
processing is triggered"]:::main N_BondNumberPresent_Node2 -- Yes --> N_BondNumberPresent_Node2_action N_BondNumberPresent_Node2_action --> E_BondNumberPresent N_BondNumberPresent_Node1 -- No --> N_BondNumberPresent_Node2 N_BondNumberPresent_Node2 -- No --> E_BondNumberPresent
File: GCX016.cbl
GIVEN:
An X4 segment with extracted customs release information
WHEN:
The system checks for the presence of a bond number
THEN:
- If bond number is present, process all cargo with the same bond number; otherwise check for car id
- Waybill combination
File: GCX016.cbl
GIVEN:
An X4 segment is received for cargo processing
WHEN:
The system checks for bond control number presence in the X4 segment
THEN:
- If bond control number is empty or spaces, log bond validation error
- Skip bond-based processing, otherwise proceed to bond format validation
File: GCX016.cbl
GIVEN:
An X4 segment has been processed for bond number extraction
WHEN:
The system checks for the presence of a bond control number
THEN:
Processing continues to bond validation if bond number exists, otherwise bond number error processing is triggered
β Consolidated Acceptance Criteria
- The system checks for car ID and waybill information → if both car ID and waybill are present, process cargo by car/waybill combination; otherwise process using US-CCN directly
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CarIDandWaybillPresent(["Start Step"])
E_CarIDandWaybillPresent(["End Step"])
N_CarIDandWaybillPresent_Node0{"The system checks for car ID and
waybill information"}:::decision N_CarIDandWaybillPresent_Node0_action["If both car ID and waybill are
present, process cargo by carwaybill
combination otherwise process using
US-CCN directly"]:::main N_CarIDandWaybillPresent_Node0 -- Yes --> N_CarIDandWaybillPresent_Node0_action N_CarIDandWaybillPresent_Node0_action --> E_CarIDandWaybillPresent S_CarIDandWaybillPresent --> N_CarIDandWaybillPresent_Node0 N_CarIDandWaybillPresent_Node0 -- No --> E_CarIDandWaybillPresent
waybill information"}:::decision N_CarIDandWaybillPresent_Node0_action["If both car ID and waybill are
present, process cargo by carwaybill
combination otherwise process using
US-CCN directly"]:::main N_CarIDandWaybillPresent_Node0 -- Yes --> N_CarIDandWaybillPresent_Node0_action N_CarIDandWaybillPresent_Node0_action --> E_CarIDandWaybillPresent S_CarIDandWaybillPresent --> N_CarIDandWaybillPresent_Node0 N_CarIDandWaybillPresent_Node0 -- No --> E_CarIDandWaybillPresent
File: GCX016.cbl
GIVEN:
An X4 segment without a bond number
WHEN:
- The system checks for car id
- Waybill information
THEN:
- If both car id
- Waybill are present, process cargo by car/waybill combination; otherwise process using us-ccn directly
β Consolidated Acceptance Criteria
- The system searches for existing cargo records using the appropriate key → if cargo is found, proceed with disposition processing; if not found, create new foreign bill record or generate error
- If search results → proceeds to cargo processing if records found, otherwise moves to bond processing summary
- If search results → if cargo is found, proceed to retrieve records; if not found, initiate fallback search by car ID only
- If the search results → processing continues to cargo processing if records found, otherwise proceeds to bond processing summary
- If the search results → the system determines if cargo records were found and sets appropriate processing flags
- If the search results → the system determines if cargo records were found and sets appropriate processing flags
- If the search results → if cargo records are found, processing continues; if no cargo records exist, bond processing is completed
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CargoFound(["Start Step"])
E_CargoFound(["End Step"])
N_CargoFound_Node0{"The system searches for existing
cargo records using the appropriate
key"}:::decision N_CargoFound_Node0_action["If cargo is found, proceed with
disposition processing if not found,
create new foreign bill record or
generate error"]:::main N_CargoFound_Node0 -- Yes --> N_CargoFound_Node0_action N_CargoFound_Node0_action --> E_CargoFound S_CargoFound --> N_CargoFound_Node0 N_CargoFound_Node1{"The system evaluates search results"}:::decision N_CargoFound_Node1_action["Proceeds to cargo processing if
records found, otherwise moves to
bond processing summary"]:::main N_CargoFound_Node1 -- Yes --> N_CargoFound_Node1_action N_CargoFound_Node1_action --> E_CargoFound N_CargoFound_Node0 -- No --> N_CargoFound_Node1 N_CargoFound_Node2{"The system evaluates search results"}:::decision N_CargoFound_Node2_action["If cargo is found, proceed to
retrieve records if not found,
initiate fallback search by car ID
only"]:::main N_CargoFound_Node2 -- Yes --> N_CargoFound_Node2_action N_CargoFound_Node2_action --> E_CargoFound N_CargoFound_Node1 -- No --> N_CargoFound_Node2 N_CargoFound_Node3{"The system evaluates the search
results"}:::decision N_CargoFound_Node3_action["Processing continues to cargo
processing if records found,
otherwise proceeds to bond
processing summary"]:::main N_CargoFound_Node3 -- Yes --> N_CargoFound_Node3_action N_CargoFound_Node3_action --> E_CargoFound N_CargoFound_Node2 -- No --> N_CargoFound_Node3 N_CargoFound_Node4{"The system evaluates the search
results"}:::decision N_CargoFound_Node4_action["The system determines if cargo
records were found and sets
appropriate processing flags"]:::main N_CargoFound_Node4 -- Yes --> N_CargoFound_Node4_action N_CargoFound_Node4_action --> E_CargoFound N_CargoFound_Node3 -- No --> N_CargoFound_Node4 N_CargoFound_Node5{"The system evaluates the search
results"}:::decision N_CargoFound_Node5_action["The system determines if cargo
records were found and sets
appropriate processing flags"]:::main N_CargoFound_Node5 -- Yes --> N_CargoFound_Node5_action N_CargoFound_Node5_action --> E_CargoFound N_CargoFound_Node4 -- No --> N_CargoFound_Node5 N_CargoFound_Node6{"The system evaluates the search
results"}:::decision N_CargoFound_Node6_action["If cargo records are found,
processing continues if no cargo
records exist, bond processing is
completed"]:::main N_CargoFound_Node6 -- Yes --> N_CargoFound_Node6_action N_CargoFound_Node6_action --> E_CargoFound N_CargoFound_Node5 -- No --> N_CargoFound_Node6 N_CargoFound_Node6 -- No --> E_CargoFound
cargo records using the appropriate
key"}:::decision N_CargoFound_Node0_action["If cargo is found, proceed with
disposition processing if not found,
create new foreign bill record or
generate error"]:::main N_CargoFound_Node0 -- Yes --> N_CargoFound_Node0_action N_CargoFound_Node0_action --> E_CargoFound S_CargoFound --> N_CargoFound_Node0 N_CargoFound_Node1{"The system evaluates search results"}:::decision N_CargoFound_Node1_action["Proceeds to cargo processing if
records found, otherwise moves to
bond processing summary"]:::main N_CargoFound_Node1 -- Yes --> N_CargoFound_Node1_action N_CargoFound_Node1_action --> E_CargoFound N_CargoFound_Node0 -- No --> N_CargoFound_Node1 N_CargoFound_Node2{"The system evaluates search results"}:::decision N_CargoFound_Node2_action["If cargo is found, proceed to
retrieve records if not found,
initiate fallback search by car ID
only"]:::main N_CargoFound_Node2 -- Yes --> N_CargoFound_Node2_action N_CargoFound_Node2_action --> E_CargoFound N_CargoFound_Node1 -- No --> N_CargoFound_Node2 N_CargoFound_Node3{"The system evaluates the search
results"}:::decision N_CargoFound_Node3_action["Processing continues to cargo
processing if records found,
otherwise proceeds to bond
processing summary"]:::main N_CargoFound_Node3 -- Yes --> N_CargoFound_Node3_action N_CargoFound_Node3_action --> E_CargoFound N_CargoFound_Node2 -- No --> N_CargoFound_Node3 N_CargoFound_Node4{"The system evaluates the search
results"}:::decision N_CargoFound_Node4_action["The system determines if cargo
records were found and sets
appropriate processing flags"]:::main N_CargoFound_Node4 -- Yes --> N_CargoFound_Node4_action N_CargoFound_Node4_action --> E_CargoFound N_CargoFound_Node3 -- No --> N_CargoFound_Node4 N_CargoFound_Node5{"The system evaluates the search
results"}:::decision N_CargoFound_Node5_action["The system determines if cargo
records were found and sets
appropriate processing flags"]:::main N_CargoFound_Node5 -- Yes --> N_CargoFound_Node5_action N_CargoFound_Node5_action --> E_CargoFound N_CargoFound_Node4 -- No --> N_CargoFound_Node5 N_CargoFound_Node6{"The system evaluates the search
results"}:::decision N_CargoFound_Node6_action["If cargo records are found,
processing continues if no cargo
records exist, bond processing is
completed"]:::main N_CargoFound_Node6 -- Yes --> N_CargoFound_Node6_action N_CargoFound_Node6_action --> E_CargoFound N_CargoFound_Node5 -- No --> N_CargoFound_Node6 N_CargoFound_Node6 -- No --> E_CargoFound
File: GCX016.cbl
GIVEN:
Processing method determined (bond, car/waybill, or US-CCN)
WHEN:
The system searches for existing cargo records using the appropriate key
THEN:
If cargo is found, proceed with disposition processing; if not found, create new foreign bill record or generate error
File: GCX016.cbl
GIVEN:
A search for cargo records by bond number has been executed
WHEN:
The system evaluates search results
THEN:
Proceeds to cargo processing if records found, otherwise moves to bond processing summary
File: GCX016.cbl
GIVEN:
Car/waybill index search has been completed
WHEN:
The system evaluates search results
THEN:
If cargo is found, proceed to retrieve records; if not found, initiate fallback search by car ID only
File: GCX016.cbl
GIVEN:
A search for cargo records by bond number has been executed
WHEN:
The system evaluates the search results
THEN:
Processing continues to cargo processing if records found, otherwise proceeds to bond processing summary
File: GCX016.cbl
GIVEN:
A cargo search operation has been executed
WHEN:
The system evaluates the search results
THEN:
- The system determines if cargo records were found
- Sets appropriate processing flags
File: GCX016.cbl
GIVEN:
A database search has been performed using car ID and waybill
WHEN:
The system evaluates the search results
THEN:
- The system determines if cargo records were found
- Sets appropriate processing flags
File: GCX016.cbl
GIVEN:
A database search for cargo records by bond number has been executed
WHEN:
The system evaluates the search results
THEN:
If cargo records are found, processing continues; if no cargo records exist, bond processing is completed
β Consolidated Acceptance Criteria
- The system determines a new record is needed → a new foreign bill record is created with information from the X4 segment and default status values
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CreateNewForeignBillRecord(["Start Step"])
E_CreateNewForeignBillRecord(["End Step"])
N_CreateNewForeignBillRecord_Node0{"The system determines a new record
is needed"}:::decision N_CreateNewForeignBillRecord_Node0_action["A new foreign bill record is
created with information from the X4
segment and default status values"]:::main N_CreateNewForeignBillRecord_Node0 -- Yes --> N_CreateNewForeignBillRecord_Node0_action N_CreateNewForeignBillRecord_Node0_action --> E_CreateNewForeignBillRecord S_CreateNewForeignBillRecord --> N_CreateNewForeignBillRecord_Node0 N_CreateNewForeignBillRecord_Node0 -- No --> E_CreateNewForeignBillRecord
is needed"}:::decision N_CreateNewForeignBillRecord_Node0_action["A new foreign bill record is
created with information from the X4
segment and default status values"]:::main N_CreateNewForeignBillRecord_Node0 -- Yes --> N_CreateNewForeignBillRecord_Node0_action N_CreateNewForeignBillRecord_Node0_action --> E_CreateNewForeignBillRecord S_CreateNewForeignBillRecord --> N_CreateNewForeignBillRecord_Node0 N_CreateNewForeignBillRecord_Node0 -- No --> E_CreateNewForeignBillRecord
File: GCX016.cbl
GIVEN:
No existing cargo record found for the processing key
WHEN:
The system determines a new record is needed
THEN:
- A new foreign bill record is created with information from the x4 segment
- Default status values
β Consolidated Acceptance Criteria
- The system validates the disposition code against the DC table → if the disposition code is valid and authorized, proceed with processing; otherwise generate an error
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ValidDispositionCode(["Start Step"])
E_ValidDispositionCode(["End Step"])
N_ValidDispositionCode_Node0{"The system validates the
disposition code against the DC
table"}:::decision N_ValidDispositionCode_Node0_action["If the disposition code is valid
and authorized, proceed with
processing otherwise generate an
error"]:::main N_ValidDispositionCode_Node0 -- Yes --> N_ValidDispositionCode_Node0_action N_ValidDispositionCode_Node0_action --> E_ValidDispositionCode S_ValidDispositionCode --> N_ValidDispositionCode_Node0 N_ValidDispositionCode_Node0 -- No --> E_ValidDispositionCode
disposition code against the DC
table"}:::decision N_ValidDispositionCode_Node0_action["If the disposition code is valid
and authorized, proceed with
processing otherwise generate an
error"]:::main N_ValidDispositionCode_Node0 -- Yes --> N_ValidDispositionCode_Node0_action N_ValidDispositionCode_Node0_action --> E_ValidDispositionCode S_ValidDispositionCode --> N_ValidDispositionCode_Node0 N_ValidDispositionCode_Node0 -- No --> E_ValidDispositionCode
File: GCX016.cbl
GIVEN:
A disposition code extracted from the X4 segment
WHEN:
The system validates the disposition code against the DC table
THEN:
- If the disposition code is valid
- Authorized, proceed with processing; otherwise generate an error
β Consolidated Acceptance Criteria
- The system processes the disposition code → the status array is updated with the disposition code, location information, quantities, and processing flags
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UpdateStatusArraywithDisposition(["Start Step"])
E_UpdateStatusArraywithDisposition(["End Step"])
N_UpdateStatusArraywithDisposition_Node0{"The system processes the
disposition code"}:::decision N_UpdateStatusArraywithDisposition_Node0_action["The status array is updated with
the disposition code, location
information, quantities, and
processing flags"]:::main N_UpdateStatusArraywithDisposition_Node0 -- Yes --> N_UpdateStatusArraywithDisposition_Node0_action N_UpdateStatusArraywithDisposition_Node0_action --> E_UpdateStatusArraywithDisposition S_UpdateStatusArraywithDisposition --> N_UpdateStatusArraywithDisposition_Node0 N_UpdateStatusArraywithDisposition_Node0 -- No --> E_UpdateStatusArraywithDisposition
disposition code"}:::decision N_UpdateStatusArraywithDisposition_Node0_action["The status array is updated with
the disposition code, location
information, quantities, and
processing flags"]:::main N_UpdateStatusArraywithDisposition_Node0 -- Yes --> N_UpdateStatusArraywithDisposition_Node0_action N_UpdateStatusArraywithDisposition_Node0_action --> E_UpdateStatusArraywithDisposition S_UpdateStatusArraywithDisposition --> N_UpdateStatusArraywithDisposition_Node0 N_UpdateStatusArraywithDisposition_Node0 -- No --> E_UpdateStatusArraywithDisposition
File: GCX016.cbl
GIVEN:
A valid disposition code and existing or new cargo record
WHEN:
The system processes the disposition code
THEN:
The status array is updated with the disposition code, location information, quantities, and processing flags
β Consolidated Acceptance Criteria
- The system identifies FDA requirements → fDA notifications are generated and special FDA hold status is applied to the cargo
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ProcessFDARequirements(["Start Step"])
E_ProcessFDARequirements(["End Step"])
N_ProcessFDARequirements_Node0{"The system identifies FDA
requirements"}:::decision N_ProcessFDARequirements_Node0_action["FDA notifications are generated and
special FDA hold status is applied
to the cargo"]:::main N_ProcessFDARequirements_Node0 -- Yes --> N_ProcessFDARequirements_Node0_action N_ProcessFDARequirements_Node0_action --> E_ProcessFDARequirements S_ProcessFDARequirements --> N_ProcessFDARequirements_Node0 N_ProcessFDARequirements_Node0 -- No --> E_ProcessFDARequirements
requirements"}:::decision N_ProcessFDARequirements_Node0_action["FDA notifications are generated and
special FDA hold status is applied
to the cargo"]:::main N_ProcessFDARequirements_Node0 -- Yes --> N_ProcessFDARequirements_Node0_action N_ProcessFDARequirements_Node0_action --> E_ProcessFDARequirements S_ProcessFDARequirements --> N_ProcessFDARequirements_Node0 N_ProcessFDARequirements_Node0 -- No --> E_ProcessFDARequirements
File: GCX016.cbl
GIVEN:
A disposition code that requires FDA processing (A1 or A3)
WHEN:
The system identifies FDA requirements
THEN:
- Fda notifications are generated
- Special fda hold status is applied to the cargo
β Consolidated Acceptance Criteria
- The system processes entry types (61-Immediate Transport, 62-Transport Export, 63-Immediate Export, 69-US-Canada-US, 00-Border Processing) → appropriate in-bond processing is applied based on the entry type with correct bond dates and destination handling
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ProcessInBondEntryTypes(["Start Step"])
E_ProcessInBondEntryTypes(["End Step"])
N_ProcessInBondEntryTypes_Node0{"The system processes entry types
61-Immediate Transport, 62-Transport
Export, 63-Immediate Export,
69-US-Canada-US, 00-Border
Processing"}:::decision N_ProcessInBondEntryTypes_Node0_action["Appropriate in-bond processing is
applied based on the entry type with
correct bond dates and destination
handling"]:::main N_ProcessInBondEntryTypes_Node0 -- Yes --> N_ProcessInBondEntryTypes_Node0_action N_ProcessInBondEntryTypes_Node0_action --> E_ProcessInBondEntryTypes S_ProcessInBondEntryTypes --> N_ProcessInBondEntryTypes_Node0 N_ProcessInBondEntryTypes_Node0 -- No --> E_ProcessInBondEntryTypes
61-Immediate Transport, 62-Transport
Export, 63-Immediate Export,
69-US-Canada-US, 00-Border
Processing"}:::decision N_ProcessInBondEntryTypes_Node0_action["Appropriate in-bond processing is
applied based on the entry type with
correct bond dates and destination
handling"]:::main N_ProcessInBondEntryTypes_Node0 -- Yes --> N_ProcessInBondEntryTypes_Node0_action N_ProcessInBondEntryTypes_Node0_action --> E_ProcessInBondEntryTypes S_ProcessInBondEntryTypes --> N_ProcessInBondEntryTypes_Node0 N_ProcessInBondEntryTypes_Node0 -- No --> E_ProcessInBondEntryTypes
File: GCX016.cbl
GIVEN:
A disposition code requiring in-bond processing
WHEN:
The system processes entry types (61-Immediate Transport, 62-Transport Export, 63-Immediate Export, 69-US-Canada-US, 00-Border Processing)
THEN:
- Appropriate in-bond processing is applied based on the entry type with correct bond dates
- Destination handling
β Consolidated Acceptance Criteria
- The system processes the master in-bond requirement → master in-bond flag is set, appropriate entry type processing is applied, and broker information is processed from K1 segments
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ProcessMasterInBondEntries(["Start Step"])
E_ProcessMasterInBondEntries(["End Step"])
N_ProcessMasterInBondEntries_Node0{"The system processes the master
in-bond requirement"}:::decision N_ProcessMasterInBondEntries_Node0_action["Master in-bond flag is set,
appropriate entry type processing is
applied, and broker information is
processed from K1 segments"]:::main N_ProcessMasterInBondEntries_Node0 -- Yes --> N_ProcessMasterInBondEntries_Node0_action N_ProcessMasterInBondEntries_Node0_action --> E_ProcessMasterInBondEntries S_ProcessMasterInBondEntries --> N_ProcessMasterInBondEntries_Node0 N_ProcessMasterInBondEntries_Node0 -- No --> E_ProcessMasterInBondEntries
in-bond requirement"}:::decision N_ProcessMasterInBondEntries_Node0_action["Master in-bond flag is set,
appropriate entry type processing is
applied, and broker information is
processed from K1 segments"]:::main N_ProcessMasterInBondEntries_Node0 -- Yes --> N_ProcessMasterInBondEntries_Node0_action N_ProcessMasterInBondEntries_Node0_action --> E_ProcessMasterInBondEntries S_ProcessMasterInBondEntries --> N_ProcessMasterInBondEntries_Node0 N_ProcessMasterInBondEntries_Node0 -- No --> E_ProcessMasterInBondEntries
File: GCX016.cbl
GIVEN:
A disposition code that creates master in-bond entries (1J, 69, 55)
WHEN:
The system processes the master in-bond requirement
THEN:
Master in-bond flag is set, appropriate entry type processing is applied, and broker information is processed from K1 segments
β Consolidated Acceptance Criteria
- The system applies DC 95 processing → existing bond information is cleared and proceed status is set with appropriate border arrival date
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ClearBondInformationforDC95(["Start Step"])
E_ClearBondInformationforDC95(["End Step"])
N_ClearBondInformationforDC95_Node0{"The system applies DC 95 processing"}:::decision
N_ClearBondInformationforDC95_Node0_action["Existing bond information is
cleared and proceed status is set
with appropriate border arrival date"]:::main N_ClearBondInformationforDC95_Node0 -- Yes --> N_ClearBondInformationforDC95_Node0_action N_ClearBondInformationforDC95_Node0_action --> E_ClearBondInformationforDC95 S_ClearBondInformationforDC95 --> N_ClearBondInformationforDC95_Node0 N_ClearBondInformationforDC95_Node0 -- No --> E_ClearBondInformationforDC95
cleared and proceed status is set
with appropriate border arrival date"]:::main N_ClearBondInformationforDC95_Node0 -- Yes --> N_ClearBondInformationforDC95_Node0_action N_ClearBondInformationforDC95_Node0_action --> E_ClearBondInformationforDC95 S_ClearBondInformationforDC95 --> N_ClearBondInformationforDC95_Node0 N_ClearBondInformationforDC95_Node0 -- No --> E_ClearBondInformationforDC95
File: GCX016.cbl
GIVEN:
A disposition code 95 (Proceed) is being processed
WHEN:
The system applies DC 95 processing
THEN:
- Existing bond information is cleared
- Proceed status is set with appropriate border arrival date
β Consolidated Acceptance Criteria
- The system updates release quantities → release quantities are added or subtracted based on disposition action, with validation to prevent negative values
- The disposition code affects release quantities → the system adds or subtracts the specified quantity from cargo release quantities with minimum value of zero
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UpdateCargoReleaseQuantities(["Start Step"])
E_UpdateCargoReleaseQuantities(["End Step"])
N_UpdateCargoReleaseQuantities_Node0{"The system updates release
quantities"}:::decision N_UpdateCargoReleaseQuantities_Node0_action["Release quantities are added or
subtracted based on disposition
action, with validation to prevent
negative values"]:::main N_UpdateCargoReleaseQuantities_Node0 -- Yes --> N_UpdateCargoReleaseQuantities_Node0_action N_UpdateCargoReleaseQuantities_Node0_action --> E_UpdateCargoReleaseQuantities S_UpdateCargoReleaseQuantities --> N_UpdateCargoReleaseQuantities_Node0 N_UpdateCargoReleaseQuantities_Node1{"The disposition code affects
release quantities"}:::decision N_UpdateCargoReleaseQuantities_Node1_action["The system adds or subtracts the
specified quantity from cargo
release quantities with minimum
value of zero"]:::main N_UpdateCargoReleaseQuantities_Node1 -- Yes --> N_UpdateCargoReleaseQuantities_Node1_action N_UpdateCargoReleaseQuantities_Node1_action --> E_UpdateCargoReleaseQuantities N_UpdateCargoReleaseQuantities_Node0 -- No --> N_UpdateCargoReleaseQuantities_Node1 N_UpdateCargoReleaseQuantities_Node1 -- No --> E_UpdateCargoReleaseQuantities
quantities"}:::decision N_UpdateCargoReleaseQuantities_Node0_action["Release quantities are added or
subtracted based on disposition
action, with validation to prevent
negative values"]:::main N_UpdateCargoReleaseQuantities_Node0 -- Yes --> N_UpdateCargoReleaseQuantities_Node0_action N_UpdateCargoReleaseQuantities_Node0_action --> E_UpdateCargoReleaseQuantities S_UpdateCargoReleaseQuantities --> N_UpdateCargoReleaseQuantities_Node0 N_UpdateCargoReleaseQuantities_Node1{"The disposition code affects
release quantities"}:::decision N_UpdateCargoReleaseQuantities_Node1_action["The system adds or subtracts the
specified quantity from cargo
release quantities with minimum
value of zero"]:::main N_UpdateCargoReleaseQuantities_Node1 -- Yes --> N_UpdateCargoReleaseQuantities_Node1_action N_UpdateCargoReleaseQuantities_Node1_action --> E_UpdateCargoReleaseQuantities N_UpdateCargoReleaseQuantities_Node0 -- No --> N_UpdateCargoReleaseQuantities_Node1 N_UpdateCargoReleaseQuantities_Node1 -- No --> E_UpdateCargoReleaseQuantities
File: GCX016.cbl
GIVEN:
A processed disposition code with quantity information
WHEN:
The system updates release quantities
THEN:
Release quantities are added or subtracted based on disposition action, with validation to prevent negative values
File: GCX016.cbl
GIVEN:
A release disposition code is being processed with quantity information
WHEN:
The disposition code affects release quantities
THEN:
The system adds or subtracts the specified quantity from cargo release quantities with minimum value of zero
β Consolidated Acceptance Criteria
- If release conditions → if release quantity equals or exceeds total quantity and no holds exist, release conditions are met; otherwise hold processing is required
- If release eligibility → release conditions are validated based on hold status, quantities, and regulatory requirements
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ReleaseConditionsMet(["Start Step"])
E_ReleaseConditionsMet(["End Step"])
N_ReleaseConditionsMet_Node0{"The system evaluates release
conditions"}:::decision N_ReleaseConditionsMet_Node0_action["If release quantity equals or
exceeds total quantity and no holds
exist, release conditions are met
otherwise hold processing is
required"]:::main N_ReleaseConditionsMet_Node0 -- Yes --> N_ReleaseConditionsMet_Node0_action N_ReleaseConditionsMet_Node0_action --> E_ReleaseConditionsMet S_ReleaseConditionsMet --> N_ReleaseConditionsMet_Node0 N_ReleaseConditionsMet_Node1{"The system evaluates release
eligibility"}:::decision N_ReleaseConditionsMet_Node1_action["Release conditions are validated
based on hold status, quantities,
and regulatory requirements"]:::main N_ReleaseConditionsMet_Node1 -- Yes --> N_ReleaseConditionsMet_Node1_action N_ReleaseConditionsMet_Node1_action --> E_ReleaseConditionsMet N_ReleaseConditionsMet_Node0 -- No --> N_ReleaseConditionsMet_Node1 N_ReleaseConditionsMet_Node1 -- No --> E_ReleaseConditionsMet
conditions"}:::decision N_ReleaseConditionsMet_Node0_action["If release quantity equals or
exceeds total quantity and no holds
exist, release conditions are met
otherwise hold processing is
required"]:::main N_ReleaseConditionsMet_Node0 -- Yes --> N_ReleaseConditionsMet_Node0_action N_ReleaseConditionsMet_Node0_action --> E_ReleaseConditionsMet S_ReleaseConditionsMet --> N_ReleaseConditionsMet_Node0 N_ReleaseConditionsMet_Node1{"The system evaluates release
eligibility"}:::decision N_ReleaseConditionsMet_Node1_action["Release conditions are validated
based on hold status, quantities,
and regulatory requirements"]:::main N_ReleaseConditionsMet_Node1 -- Yes --> N_ReleaseConditionsMet_Node1_action N_ReleaseConditionsMet_Node1_action --> E_ReleaseConditionsMet N_ReleaseConditionsMet_Node0 -- No --> N_ReleaseConditionsMet_Node1 N_ReleaseConditionsMet_Node1 -- No --> E_ReleaseConditionsMet
File: GCX016.cbl
GIVEN:
Updated cargo with disposition processing completed
WHEN:
The system evaluates release conditions
THEN:
- If release quantity equals or exceeds total quantity
- No holds exist, release conditions are met; otherwise hold processing is required
File: GCX016.cbl
GIVEN:
Existing status codes have been analyzed
WHEN:
The system evaluates release eligibility
THEN:
Release conditions are validated based on hold status, quantities, and regulatory requirements
β Consolidated Acceptance Criteria
- The system processes the release → release notifications are sent to brokers and Merlin system with cargo details, quantities, and release information
- The system generates notifications → release notifications are created and routed to appropriate destinations
- The system completes the status update process → the system generates release notification messages to inform relevant parties of the manual release completion
- Notification generation is triggered → the system shall generate release notification messages AND send notifications to relevant parties AND include cargo details and release timestamp
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GenerateReleaseNotification(["Start Step"])
E_GenerateReleaseNotification(["End Step"])
N_GenerateReleaseNotification_Node0{"The system processes the release"}:::decision
N_GenerateReleaseNotification_Node0_action["Release notifications are sent to
brokers and Merlin system with cargo
details, quantities, and release
information"]:::main N_GenerateReleaseNotification_Node0 -- Yes --> N_GenerateReleaseNotification_Node0_action N_GenerateReleaseNotification_Node0_action --> E_GenerateReleaseNotification S_GenerateReleaseNotification --> N_GenerateReleaseNotification_Node0 N_GenerateReleaseNotification_Node1{"The system generates notifications"}:::decision N_GenerateReleaseNotification_Node1_action["Release notifications are created
and routed to appropriate
destinations"]:::main N_GenerateReleaseNotification_Node1 -- Yes --> N_GenerateReleaseNotification_Node1_action N_GenerateReleaseNotification_Node1_action --> E_GenerateReleaseNotification N_GenerateReleaseNotification_Node0 -- No --> N_GenerateReleaseNotification_Node1 N_GenerateReleaseNotification_Node2{"The system completes the status
update process"}:::decision N_GenerateReleaseNotification_Node2_action["The system generates release
notification messages to inform
relevant parties of the manual
release completion"]:::main N_GenerateReleaseNotification_Node2 -- Yes --> N_GenerateReleaseNotification_Node2_action N_GenerateReleaseNotification_Node2_action --> E_GenerateReleaseNotification N_GenerateReleaseNotification_Node1 -- No --> N_GenerateReleaseNotification_Node2 N_GenerateReleaseNotification_Node3{"Notification generation is
triggered"}:::decision N_GenerateReleaseNotification_Node3_action["The system shall generate release
notification messages AND send
notifications to relevant parties
AND include cargo details and
release timestamp"]:::main N_GenerateReleaseNotification_Node3 -- Yes --> N_GenerateReleaseNotification_Node3_action N_GenerateReleaseNotification_Node3_action --> E_GenerateReleaseNotification N_GenerateReleaseNotification_Node2 -- No --> N_GenerateReleaseNotification_Node3 N_GenerateReleaseNotification_Node3 -- No --> E_GenerateReleaseNotification
brokers and Merlin system with cargo
details, quantities, and release
information"]:::main N_GenerateReleaseNotification_Node0 -- Yes --> N_GenerateReleaseNotification_Node0_action N_GenerateReleaseNotification_Node0_action --> E_GenerateReleaseNotification S_GenerateReleaseNotification --> N_GenerateReleaseNotification_Node0 N_GenerateReleaseNotification_Node1{"The system generates notifications"}:::decision N_GenerateReleaseNotification_Node1_action["Release notifications are created
and routed to appropriate
destinations"]:::main N_GenerateReleaseNotification_Node1 -- Yes --> N_GenerateReleaseNotification_Node1_action N_GenerateReleaseNotification_Node1_action --> E_GenerateReleaseNotification N_GenerateReleaseNotification_Node0 -- No --> N_GenerateReleaseNotification_Node1 N_GenerateReleaseNotification_Node2{"The system completes the status
update process"}:::decision N_GenerateReleaseNotification_Node2_action["The system generates release
notification messages to inform
relevant parties of the manual
release completion"]:::main N_GenerateReleaseNotification_Node2 -- Yes --> N_GenerateReleaseNotification_Node2_action N_GenerateReleaseNotification_Node2_action --> E_GenerateReleaseNotification N_GenerateReleaseNotification_Node1 -- No --> N_GenerateReleaseNotification_Node2 N_GenerateReleaseNotification_Node3{"Notification generation is
triggered"}:::decision N_GenerateReleaseNotification_Node3_action["The system shall generate release
notification messages AND send
notifications to relevant parties
AND include cargo details and
release timestamp"]:::main N_GenerateReleaseNotification_Node3 -- Yes --> N_GenerateReleaseNotification_Node3_action N_GenerateReleaseNotification_Node3_action --> E_GenerateReleaseNotification N_GenerateReleaseNotification_Node2 -- No --> N_GenerateReleaseNotification_Node3 N_GenerateReleaseNotification_Node3 -- No --> E_GenerateReleaseNotification
File: GCX016.cbl
GIVEN:
Cargo that meets release conditions
WHEN:
The system processes the release
THEN:
- Release notifications are sent to brokers
- Merlin system with cargo details, quantities, and release information
File: GCX016.cbl
GIVEN:
ARL processing is complete with or without manual override
WHEN:
The system generates notifications
THEN:
- Release notifications are created
- Routed to appropriate destinations
File: GCX016.cbl
GIVEN:
Cargo status has been updated to released for manual release
WHEN:
The system completes the status update process
THEN:
The system generates release notification messages to inform relevant parties of the manual release completion
File: GCX016.cbl
GIVEN:
Manual release processing is complete AND all status updates are finalized
WHEN:
Notification generation is triggered
THEN:
- The system shall generate release notification messages
- Send notifications to relevant parties
- Include cargo details
- Release timestamp
β Consolidated Acceptance Criteria
- If hold requirements → if disposition code or cargo conditions require hold, hold processing is initiated; otherwise cargo status is updated without hold
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_HoldRequired(["Start Step"])
E_HoldRequired(["End Step"])
N_HoldRequired_Node0{"The system evaluates hold
requirements"}:::decision N_HoldRequired_Node0_action["If disposition code or cargo
conditions require hold, hold
processing is initiated otherwise
cargo status is updated without hold"]:::main N_HoldRequired_Node0 -- Yes --> N_HoldRequired_Node0_action N_HoldRequired_Node0_action --> E_HoldRequired S_HoldRequired --> N_HoldRequired_Node0 N_HoldRequired_Node0 -- No --> E_HoldRequired
requirements"}:::decision N_HoldRequired_Node0_action["If disposition code or cargo
conditions require hold, hold
processing is initiated otherwise
cargo status is updated without hold"]:::main N_HoldRequired_Node0 -- Yes --> N_HoldRequired_Node0_action N_HoldRequired_Node0_action --> E_HoldRequired S_HoldRequired --> N_HoldRequired_Node0 N_HoldRequired_Node0 -- No --> E_HoldRequired
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
Cargo that does not meet release conditions
WHEN:
The system evaluates hold requirements
THEN:
If disposition code or cargo conditions require hold, hold processing is initiated; otherwise cargo status is updated without hold
β Consolidated Acceptance Criteria
- The system applies hold processing → hold notifications are sent to brokers and Merlin system with hold reason, location, and cargo details
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GenerateHoldNotification(["Start Step"])
E_GenerateHoldNotification(["End Step"])
N_GenerateHoldNotification_Node0{"The system applies hold processing"}:::decision
N_GenerateHoldNotification_Node0_action["Hold notifications are sent to
brokers and Merlin system with hold
reason, location, and cargo details"]:::main N_GenerateHoldNotification_Node0 -- Yes --> N_GenerateHoldNotification_Node0_action N_GenerateHoldNotification_Node0_action --> E_GenerateHoldNotification S_GenerateHoldNotification --> N_GenerateHoldNotification_Node0 N_GenerateHoldNotification_Node0 -- No --> E_GenerateHoldNotification
brokers and Merlin system with hold
reason, location, and cargo details"]:::main N_GenerateHoldNotification_Node0 -- Yes --> N_GenerateHoldNotification_Node0_action N_GenerateHoldNotification_Node0_action --> E_GenerateHoldNotification S_GenerateHoldNotification --> N_GenerateHoldNotification_Node0 N_GenerateHoldNotification_Node0 -- No --> E_GenerateHoldNotification
File: GCX016.cbl
GIVEN:
Cargo that requires hold status
WHEN:
The system applies hold processing
THEN:
- Hold notifications are sent to brokers
- Merlin system with hold reason, location, and cargo details
β Consolidated Acceptance Criteria
- The system finalizes cargo status → cargo status is updated to reflect current condition (released, held, proceed, etc.) and database records are updated
- The system updates the cargo record → cargo status is updated in the database and processing is marked complete
- The system updates the cargo status → the cargo status should be updated to reflect the removal of bonding requirements
- The system updates cargo status → cargo status is updated to reflect automatic release processing results
- The system updates cargo status → the system sets appropriate cargo status based on cancellation type and updates cargo record with new status information
- The system updates the cargo status → the cargo status is updated in the GCSUSS09 status segments and the cargo record is saved to the database
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UpdateCargoStatus(["Start Step"])
E_UpdateCargoStatus(["End Step"])
N_UpdateCargoStatus_Node0{"The system finalizes cargo status"}:::decision
N_UpdateCargoStatus_Node0_action["Cargo status is updated to reflect
current condition released, held,
proceed, etc. and database records
are updated"]:::main N_UpdateCargoStatus_Node0 -- Yes --> N_UpdateCargoStatus_Node0_action N_UpdateCargoStatus_Node0_action --> E_UpdateCargoStatus S_UpdateCargoStatus --> N_UpdateCargoStatus_Node0 N_UpdateCargoStatus_Node1{"The system updates the cargo record"}:::decision N_UpdateCargoStatus_Node1_action["Cargo status is updated in the
database and processing is marked
complete"]:::main N_UpdateCargoStatus_Node1 -- Yes --> N_UpdateCargoStatus_Node1_action N_UpdateCargoStatus_Node1_action --> E_UpdateCargoStatus N_UpdateCargoStatus_Node0 -- No --> N_UpdateCargoStatus_Node1 N_UpdateCargoStatus_Node2{"The system updates the cargo status"}:::decision N_UpdateCargoStatus_Node2_action["The cargo status should be updated
to reflect the removal of bonding
requirements"]:::main N_UpdateCargoStatus_Node2 -- Yes --> N_UpdateCargoStatus_Node2_action N_UpdateCargoStatus_Node2_action --> E_UpdateCargoStatus N_UpdateCargoStatus_Node1 -- No --> N_UpdateCargoStatus_Node2 N_UpdateCargoStatus_Node3{"The system updates cargo status"}:::decision N_UpdateCargoStatus_Node3_action["Cargo status is updated to reflect
automatic release processing results"]:::main N_UpdateCargoStatus_Node3 -- Yes --> N_UpdateCargoStatus_Node3_action N_UpdateCargoStatus_Node3_action --> E_UpdateCargoStatus N_UpdateCargoStatus_Node2 -- No --> N_UpdateCargoStatus_Node3 N_UpdateCargoStatus_Node4{"The system updates cargo status"}:::decision N_UpdateCargoStatus_Node4_action["The system sets appropriate cargo
status based on cancellation type
and updates cargo record with new
status information"]:::main N_UpdateCargoStatus_Node4 -- Yes --> N_UpdateCargoStatus_Node4_action N_UpdateCargoStatus_Node4_action --> E_UpdateCargoStatus N_UpdateCargoStatus_Node3 -- No --> N_UpdateCargoStatus_Node4 N_UpdateCargoStatus_Node5{"The system updates the cargo status"}:::decision N_UpdateCargoStatus_Node5_action["The cargo status is updated in the
GCSUSS09 status segments and the
cargo record is saved to the
database"]:::main N_UpdateCargoStatus_Node5 -- Yes --> N_UpdateCargoStatus_Node5_action N_UpdateCargoStatus_Node5_action --> E_UpdateCargoStatus N_UpdateCargoStatus_Node4 -- No --> N_UpdateCargoStatus_Node5 N_UpdateCargoStatus_Node5 -- No --> E_UpdateCargoStatus
current condition released, held,
proceed, etc. and database records
are updated"]:::main N_UpdateCargoStatus_Node0 -- Yes --> N_UpdateCargoStatus_Node0_action N_UpdateCargoStatus_Node0_action --> E_UpdateCargoStatus S_UpdateCargoStatus --> N_UpdateCargoStatus_Node0 N_UpdateCargoStatus_Node1{"The system updates the cargo record"}:::decision N_UpdateCargoStatus_Node1_action["Cargo status is updated in the
database and processing is marked
complete"]:::main N_UpdateCargoStatus_Node1 -- Yes --> N_UpdateCargoStatus_Node1_action N_UpdateCargoStatus_Node1_action --> E_UpdateCargoStatus N_UpdateCargoStatus_Node0 -- No --> N_UpdateCargoStatus_Node1 N_UpdateCargoStatus_Node2{"The system updates the cargo status"}:::decision N_UpdateCargoStatus_Node2_action["The cargo status should be updated
to reflect the removal of bonding
requirements"]:::main N_UpdateCargoStatus_Node2 -- Yes --> N_UpdateCargoStatus_Node2_action N_UpdateCargoStatus_Node2_action --> E_UpdateCargoStatus N_UpdateCargoStatus_Node1 -- No --> N_UpdateCargoStatus_Node2 N_UpdateCargoStatus_Node3{"The system updates cargo status"}:::decision N_UpdateCargoStatus_Node3_action["Cargo status is updated to reflect
automatic release processing results"]:::main N_UpdateCargoStatus_Node3 -- Yes --> N_UpdateCargoStatus_Node3_action N_UpdateCargoStatus_Node3_action --> E_UpdateCargoStatus N_UpdateCargoStatus_Node2 -- No --> N_UpdateCargoStatus_Node3 N_UpdateCargoStatus_Node4{"The system updates cargo status"}:::decision N_UpdateCargoStatus_Node4_action["The system sets appropriate cargo
status based on cancellation type
and updates cargo record with new
status information"]:::main N_UpdateCargoStatus_Node4 -- Yes --> N_UpdateCargoStatus_Node4_action N_UpdateCargoStatus_Node4_action --> E_UpdateCargoStatus N_UpdateCargoStatus_Node3 -- No --> N_UpdateCargoStatus_Node4 N_UpdateCargoStatus_Node5{"The system updates the cargo status"}:::decision N_UpdateCargoStatus_Node5_action["The cargo status is updated in the
GCSUSS09 status segments and the
cargo record is saved to the
database"]:::main N_UpdateCargoStatus_Node5 -- Yes --> N_UpdateCargoStatus_Node5_action N_UpdateCargoStatus_Node5_action --> E_UpdateCargoStatus N_UpdateCargoStatus_Node4 -- No --> N_UpdateCargoStatus_Node5 N_UpdateCargoStatus_Node5 -- No --> E_UpdateCargoStatus
File: GCX016.cbl
GIVEN:
Completed disposition processing with all notifications sent
WHEN:
The system finalizes cargo status
THEN:
Cargo status is updated to reflect current condition (released, held, proceed, etc.) and database records are updated
File: GCX016.cbl
GIVEN:
Disposition codes have been processed and status changes determined
WHEN:
The system updates the cargo record
THEN:
- Cargo status is updated in the database
- Processing is marked complete
File: GCX016.cbl
GIVEN:
All bond information has been cleared from the cargo record
WHEN:
The system updates the cargo status
THEN:
The cargo status should be updated to reflect the removal of bonding requirements
File: GCX016.cbl
GIVEN:
Release quantities are calculated and auto release flag is set
WHEN:
The system updates cargo status
THEN:
Cargo status is updated to reflect automatic release processing results
File: GCX016.cbl
GIVEN:
Cancellation processing has been completed and previous dates/indexes restored
WHEN:
The system updates cargo status
THEN:
- The system sets appropriate cargo status based on cancellation type
- Updates cargo record with new status information
File: GCX016.cbl
GIVEN:
A disposition code has been applied to a cargo record
WHEN:
The system updates the cargo status
THEN:
- The cargo status is updated in the gcsuss09 status segments
- The cargo record is saved to the database
β Consolidated Acceptance Criteria
- The system logs processing information → all status changes, notifications sent, and processing actions are logged to GCX105 system for audit trail
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogProcessingInformation(["Start Step"])
E_LogProcessingInformation(["End Step"])
N_LogProcessingInformation_Node0{"The system logs processing
information"}:::decision N_LogProcessingInformation_Node0_action["All status changes, notifications
sent, and processing actions are
logged to GCX105 system for audit
trail"]:::main N_LogProcessingInformation_Node0 -- Yes --> N_LogProcessingInformation_Node0_action N_LogProcessingInformation_Node0_action --> E_LogProcessingInformation S_LogProcessingInformation --> N_LogProcessingInformation_Node0 N_LogProcessingInformation_Node0 -- No --> E_LogProcessingInformation
information"}:::decision N_LogProcessingInformation_Node0_action["All status changes, notifications
sent, and processing actions are
logged to GCX105 system for audit
trail"]:::main N_LogProcessingInformation_Node0 -- Yes --> N_LogProcessingInformation_Node0_action N_LogProcessingInformation_Node0_action --> E_LogProcessingInformation S_LogProcessingInformation --> N_LogProcessingInformation_Node0 N_LogProcessingInformation_Node0 -- No --> E_LogProcessingInformation
File: GCX016.cbl
GIVEN:
Completed X4 segment processing
WHEN:
The system logs processing information
THEN:
All status changes, notifications sent, and processing actions are logged to GCX105 system for audit trail
β Consolidated Acceptance Criteria
- The system checks for bond number availability in the X4 segment → processing continues to bond extraction if bond number exists, otherwise skips bond processing
- The system checks for bond number availability in the X4 segment → processing continues to bond extraction if bond number exists, otherwise generates bond error message
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_BondNumberAvailable(["Start Step"])
E_BondNumberAvailable(["End Step"])
N_BondNumberAvailable_Node0{"The system checks for bond number
availability in the X4 segment"}:::decision N_BondNumberAvailable_Node0_action["Processing continues to bond
extraction if bond number exists,
otherwise skips bond processing"]:::main N_BondNumberAvailable_Node0 -- Yes --> N_BondNumberAvailable_Node0_action N_BondNumberAvailable_Node0_action --> E_BondNumberAvailable S_BondNumberAvailable --> N_BondNumberAvailable_Node0 N_BondNumberAvailable_Node1{"The system checks for bond number
availability in the X4 segment"}:::decision N_BondNumberAvailable_Node1_action["Processing continues to bond
extraction if bond number exists,
otherwise generates bond error
message"]:::main N_BondNumberAvailable_Node1 -- Yes --> N_BondNumberAvailable_Node1_action N_BondNumberAvailable_Node1_action --> E_BondNumberAvailable N_BondNumberAvailable_Node0 -- No --> N_BondNumberAvailable_Node1 N_BondNumberAvailable_Node1 -- No --> E_BondNumberAvailable
availability in the X4 segment"}:::decision N_BondNumberAvailable_Node0_action["Processing continues to bond
extraction if bond number exists,
otherwise skips bond processing"]:::main N_BondNumberAvailable_Node0 -- Yes --> N_BondNumberAvailable_Node0_action N_BondNumberAvailable_Node0_action --> E_BondNumberAvailable S_BondNumberAvailable --> N_BondNumberAvailable_Node0 N_BondNumberAvailable_Node1{"The system checks for bond number
availability in the X4 segment"}:::decision N_BondNumberAvailable_Node1_action["Processing continues to bond
extraction if bond number exists,
otherwise generates bond error
message"]:::main N_BondNumberAvailable_Node1 -- Yes --> N_BondNumberAvailable_Node1_action N_BondNumberAvailable_Node1_action --> E_BondNumberAvailable N_BondNumberAvailable_Node0 -- No --> N_BondNumberAvailable_Node1 N_BondNumberAvailable_Node1 -- No --> E_BondNumberAvailable
File: GCX016.cbl
GIVEN:
An X4 segment is being processed for bond-based cargo operations
WHEN:
The system checks for bond number availability in the X4 segment
THEN:
Processing continues to bond extraction if bond number exists, otherwise skips bond processing
File: GCX016.cbl
GIVEN:
An X4 segment is being processed for bond-based cargo operations
WHEN:
The system checks for bond number availability in the X4 segment
THEN:
Processing continues to bond extraction if bond number exists, otherwise generates bond error message
β Consolidated Acceptance Criteria
- The system processes the X4 segment for bond-based operations → the bond control number is extracted and stored for subsequent cargo processing
- The system extracts the bond control number from the X4 segment → the bond control number is captured and made available for validation and processing
- The system processes the X4 segment for bond-based cargo fetching → the bond control number is extracted from the X4 segment and prepared as search key
- The system needs to process cargo by bond number → the bond control number is extracted from the X4 segment and stored for cargo lookup operations
- The system processes the X4 segment for bond number information → the bond control number is extracted from the X4 segment and made available for cargo grouping operations
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExtractBondControlNumberfromX4Segment(["Start Step"])
E_ExtractBondControlNumberfromX4Segment(["End Step"])
N_ExtractBondControlNumberfromX4Segment_Node0{"The system processes the X4 segment
for bond-based operations"}:::decision N_ExtractBondControlNumberfromX4Segment_Node0_action["The bond control number is
extracted and stored for subsequent
cargo processing"]:::main N_ExtractBondControlNumberfromX4Segment_Node0 -- Yes --> N_ExtractBondControlNumberfromX4Segment_Node0_action N_ExtractBondControlNumberfromX4Segment_Node0_action --> E_ExtractBondControlNumberfromX4Segment S_ExtractBondControlNumberfromX4Segment --> N_ExtractBondControlNumberfromX4Segment_Node0 N_ExtractBondControlNumberfromX4Segment_Node1{"The system extracts the bond
control number from the X4 segment"}:::decision N_ExtractBondControlNumberfromX4Segment_Node1_action["The bond control number is captured
and made available for validation
and processing"]:::main N_ExtractBondControlNumberfromX4Segment_Node1 -- Yes --> N_ExtractBondControlNumberfromX4Segment_Node1_action N_ExtractBondControlNumberfromX4Segment_Node1_action --> E_ExtractBondControlNumberfromX4Segment N_ExtractBondControlNumberfromX4Segment_Node0 -- No --> N_ExtractBondControlNumberfromX4Segment_Node1 N_ExtractBondControlNumberfromX4Segment_Node2{"The system processes the X4 segment
for bond-based cargo fetching"}:::decision N_ExtractBondControlNumberfromX4Segment_Node2_action["The bond control number is
extracted from the X4 segment and
prepared as search key"]:::main N_ExtractBondControlNumberfromX4Segment_Node2 -- Yes --> N_ExtractBondControlNumberfromX4Segment_Node2_action N_ExtractBondControlNumberfromX4Segment_Node2_action --> E_ExtractBondControlNumberfromX4Segment N_ExtractBondControlNumberfromX4Segment_Node1 -- No --> N_ExtractBondControlNumberfromX4Segment_Node2 N_ExtractBondControlNumberfromX4Segment_Node3{"The system needs to process cargo
by bond number"}:::decision N_ExtractBondControlNumberfromX4Segment_Node3_action["The bond control number is
extracted from the X4 segment and
stored for cargo lookup operations"]:::main N_ExtractBondControlNumberfromX4Segment_Node3 -- Yes --> N_ExtractBondControlNumberfromX4Segment_Node3_action N_ExtractBondControlNumberfromX4Segment_Node3_action --> E_ExtractBondControlNumberfromX4Segment N_ExtractBondControlNumberfromX4Segment_Node2 -- No --> N_ExtractBondControlNumberfromX4Segment_Node3 N_ExtractBondControlNumberfromX4Segment_Node4{"The system processes the X4 segment
for bond number information"}:::decision N_ExtractBondControlNumberfromX4Segment_Node4_action["The bond control number is
extracted from the X4 segment and
made available for cargo grouping
operations"]:::main N_ExtractBondControlNumberfromX4Segment_Node4 -- Yes --> N_ExtractBondControlNumberfromX4Segment_Node4_action N_ExtractBondControlNumberfromX4Segment_Node4_action --> E_ExtractBondControlNumberfromX4Segment N_ExtractBondControlNumberfromX4Segment_Node3 -- No --> N_ExtractBondControlNumberfromX4Segment_Node4 N_ExtractBondControlNumberfromX4Segment_Node4 -- No --> E_ExtractBondControlNumberfromX4Segment
for bond-based operations"}:::decision N_ExtractBondControlNumberfromX4Segment_Node0_action["The bond control number is
extracted and stored for subsequent
cargo processing"]:::main N_ExtractBondControlNumberfromX4Segment_Node0 -- Yes --> N_ExtractBondControlNumberfromX4Segment_Node0_action N_ExtractBondControlNumberfromX4Segment_Node0_action --> E_ExtractBondControlNumberfromX4Segment S_ExtractBondControlNumberfromX4Segment --> N_ExtractBondControlNumberfromX4Segment_Node0 N_ExtractBondControlNumberfromX4Segment_Node1{"The system extracts the bond
control number from the X4 segment"}:::decision N_ExtractBondControlNumberfromX4Segment_Node1_action["The bond control number is captured
and made available for validation
and processing"]:::main N_ExtractBondControlNumberfromX4Segment_Node1 -- Yes --> N_ExtractBondControlNumberfromX4Segment_Node1_action N_ExtractBondControlNumberfromX4Segment_Node1_action --> E_ExtractBondControlNumberfromX4Segment N_ExtractBondControlNumberfromX4Segment_Node0 -- No --> N_ExtractBondControlNumberfromX4Segment_Node1 N_ExtractBondControlNumberfromX4Segment_Node2{"The system processes the X4 segment
for bond-based cargo fetching"}:::decision N_ExtractBondControlNumberfromX4Segment_Node2_action["The bond control number is
extracted from the X4 segment and
prepared as search key"]:::main N_ExtractBondControlNumberfromX4Segment_Node2 -- Yes --> N_ExtractBondControlNumberfromX4Segment_Node2_action N_ExtractBondControlNumberfromX4Segment_Node2_action --> E_ExtractBondControlNumberfromX4Segment N_ExtractBondControlNumberfromX4Segment_Node1 -- No --> N_ExtractBondControlNumberfromX4Segment_Node2 N_ExtractBondControlNumberfromX4Segment_Node3{"The system needs to process cargo
by bond number"}:::decision N_ExtractBondControlNumberfromX4Segment_Node3_action["The bond control number is
extracted from the X4 segment and
stored for cargo lookup operations"]:::main N_ExtractBondControlNumberfromX4Segment_Node3 -- Yes --> N_ExtractBondControlNumberfromX4Segment_Node3_action N_ExtractBondControlNumberfromX4Segment_Node3_action --> E_ExtractBondControlNumberfromX4Segment N_ExtractBondControlNumberfromX4Segment_Node2 -- No --> N_ExtractBondControlNumberfromX4Segment_Node3 N_ExtractBondControlNumberfromX4Segment_Node4{"The system processes the X4 segment
for bond number information"}:::decision N_ExtractBondControlNumberfromX4Segment_Node4_action["The bond control number is
extracted from the X4 segment and
made available for cargo grouping
operations"]:::main N_ExtractBondControlNumberfromX4Segment_Node4 -- Yes --> N_ExtractBondControlNumberfromX4Segment_Node4_action N_ExtractBondControlNumberfromX4Segment_Node4_action --> E_ExtractBondControlNumberfromX4Segment N_ExtractBondControlNumberfromX4Segment_Node3 -- No --> N_ExtractBondControlNumberfromX4Segment_Node4 N_ExtractBondControlNumberfromX4Segment_Node4 -- No --> E_ExtractBondControlNumberfromX4Segment
File: GCX016.cbl
GIVEN:
An X4 segment contains bond information
WHEN:
The system processes the X4 segment for bond-based operations
THEN:
- The bond control number is extracted
- Stored for subsequent cargo processing
File: GCX016.cbl
GIVEN:
A valid X4 segment contains bond information
WHEN:
The system extracts the bond control number from the X4 segment
THEN:
- The bond control number is captured
- Made available for validation
- Processing
File: GCX016.cbl
GIVEN:
An X4 segment is available for processing
WHEN:
The system processes the X4 segment for bond-based cargo fetching
THEN:
- The bond control number is extracted from the x4 segment
- Prepared as search key
File: GCX016.cbl
GIVEN:
An X4 customs release segment is being processed
WHEN:
The system needs to process cargo by bond number
THEN:
- The bond control number is extracted from the x4 segment
- Stored for cargo lookup operations
File: GCX016.cbl
GIVEN:
An X4 customs release segment is being processed
WHEN:
The system processes the X4 segment for bond number information
THEN:
- The bond control number is extracted from the x4 segment
- Made available for cargo grouping operations
β Consolidated Acceptance Criteria
- The system validates the bond number format → processing continues if format is valid, otherwise generates validation error
- The system validates the bond number format → processing continues if format is valid, otherwise generates bond error message
- The system validates the bond number format → the bond number must be non-blank and meet format requirements to proceed with processing
- The system validates the bond number format against customs requirements → processing continues to cargo search if format is valid, otherwise bond number error processing is triggered
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ValidateBondNumberFormat(["Start Step"])
E_ValidateBondNumberFormat(["End Step"])
N_ValidateBondNumberFormat_Node0{"The system validates the bond
number format"}:::decision N_ValidateBondNumberFormat_Node0_action["Processing continues if format is
valid, otherwise generates
validation error"]:::main N_ValidateBondNumberFormat_Node0 -- Yes --> N_ValidateBondNumberFormat_Node0_action N_ValidateBondNumberFormat_Node0_action --> E_ValidateBondNumberFormat S_ValidateBondNumberFormat --> N_ValidateBondNumberFormat_Node0 N_ValidateBondNumberFormat_Node1{"The system validates the bond
number format"}:::decision N_ValidateBondNumberFormat_Node1_action["Processing continues if format is
valid, otherwise generates bond
error message"]:::main N_ValidateBondNumberFormat_Node1 -- Yes --> N_ValidateBondNumberFormat_Node1_action N_ValidateBondNumberFormat_Node1_action --> E_ValidateBondNumberFormat N_ValidateBondNumberFormat_Node0 -- No --> N_ValidateBondNumberFormat_Node1 N_ValidateBondNumberFormat_Node2{"The system validates the bond
number format"}:::decision N_ValidateBondNumberFormat_Node2_action["The bond number must be non-blank
and meet format requirements to
proceed with processing"]:::main N_ValidateBondNumberFormat_Node2 -- Yes --> N_ValidateBondNumberFormat_Node2_action N_ValidateBondNumberFormat_Node2_action --> E_ValidateBondNumberFormat N_ValidateBondNumberFormat_Node1 -- No --> N_ValidateBondNumberFormat_Node2 N_ValidateBondNumberFormat_Node3{"The system validates the bond
number format against customs
requirements"}:::decision N_ValidateBondNumberFormat_Node3_action["Processing continues to cargo
search if format is valid, otherwise
bond number error processing is
triggered"]:::main N_ValidateBondNumberFormat_Node3 -- Yes --> N_ValidateBondNumberFormat_Node3_action N_ValidateBondNumberFormat_Node3_action --> E_ValidateBondNumberFormat N_ValidateBondNumberFormat_Node2 -- No --> N_ValidateBondNumberFormat_Node3 N_ValidateBondNumberFormat_Node3 -- No --> E_ValidateBondNumberFormat
number format"}:::decision N_ValidateBondNumberFormat_Node0_action["Processing continues if format is
valid, otherwise generates
validation error"]:::main N_ValidateBondNumberFormat_Node0 -- Yes --> N_ValidateBondNumberFormat_Node0_action N_ValidateBondNumberFormat_Node0_action --> E_ValidateBondNumberFormat S_ValidateBondNumberFormat --> N_ValidateBondNumberFormat_Node0 N_ValidateBondNumberFormat_Node1{"The system validates the bond
number format"}:::decision N_ValidateBondNumberFormat_Node1_action["Processing continues if format is
valid, otherwise generates bond
error message"]:::main N_ValidateBondNumberFormat_Node1 -- Yes --> N_ValidateBondNumberFormat_Node1_action N_ValidateBondNumberFormat_Node1_action --> E_ValidateBondNumberFormat N_ValidateBondNumberFormat_Node0 -- No --> N_ValidateBondNumberFormat_Node1 N_ValidateBondNumberFormat_Node2{"The system validates the bond
number format"}:::decision N_ValidateBondNumberFormat_Node2_action["The bond number must be non-blank
and meet format requirements to
proceed with processing"]:::main N_ValidateBondNumberFormat_Node2 -- Yes --> N_ValidateBondNumberFormat_Node2_action N_ValidateBondNumberFormat_Node2_action --> E_ValidateBondNumberFormat N_ValidateBondNumberFormat_Node1 -- No --> N_ValidateBondNumberFormat_Node2 N_ValidateBondNumberFormat_Node3{"The system validates the bond
number format against customs
requirements"}:::decision N_ValidateBondNumberFormat_Node3_action["Processing continues to cargo
search if format is valid, otherwise
bond number error processing is
triggered"]:::main N_ValidateBondNumberFormat_Node3 -- Yes --> N_ValidateBondNumberFormat_Node3_action N_ValidateBondNumberFormat_Node3_action --> E_ValidateBondNumberFormat N_ValidateBondNumberFormat_Node2 -- No --> N_ValidateBondNumberFormat_Node3 N_ValidateBondNumberFormat_Node3 -- No --> E_ValidateBondNumberFormat
File: GCX016.cbl
GIVEN:
A bond control number has been extracted from the X4 segment
WHEN:
The system validates the bond number format
THEN:
Processing continues if format is valid, otherwise generates validation error
File: GCX016.cbl
GIVEN:
A bond control number has been extracted from the X4 segment
WHEN:
The system validates the bond number format
THEN:
Processing continues if format is valid, otherwise generates bond error message
File: GCX016.cbl
GIVEN:
A bond control number has been extracted from the X4 segment
WHEN:
The system validates the bond number format
THEN:
- The bond number must be non-blank
- Meet format requirements to proceed with processing
File: GCX016.cbl
GIVEN:
A bond control number has been extracted from the X4 segment
WHEN:
The system validates the bond number format against customs requirements
THEN:
Processing continues to cargo search if format is valid, otherwise bond number error processing is triggered
β Consolidated Acceptance Criteria
- If bond number validity → sets bond processing flag if valid, otherwise generates bond validation error
- The system validates the bond number → if bond number is empty or invalid, processing stops with error; if valid, processing continues
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_BondNumberValid(["Start Step"])
E_BondNumberValid(["End Step"])
N_BondNumberValid_Node0{"The system evaluates bond number
validity"}:::decision N_BondNumberValid_Node0_action["Sets bond processing flag if valid,
otherwise generates bond validation
error"]:::main N_BondNumberValid_Node0 -- Yes --> N_BondNumberValid_Node0_action N_BondNumberValid_Node0_action --> E_BondNumberValid S_BondNumberValid --> N_BondNumberValid_Node0 N_BondNumberValid_Node1{"The system validates the bond
number"}:::decision N_BondNumberValid_Node1_action["If bond number is empty or invalid,
processing stops with error if
valid, processing continues"]:::main N_BondNumberValid_Node1 -- Yes --> N_BondNumberValid_Node1_action N_BondNumberValid_Node1_action --> E_BondNumberValid N_BondNumberValid_Node0 -- No --> N_BondNumberValid_Node1 N_BondNumberValid_Node1 -- No --> E_BondNumberValid
validity"}:::decision N_BondNumberValid_Node0_action["Sets bond processing flag if valid,
otherwise generates bond validation
error"]:::main N_BondNumberValid_Node0 -- Yes --> N_BondNumberValid_Node0_action N_BondNumberValid_Node0_action --> E_BondNumberValid S_BondNumberValid --> N_BondNumberValid_Node0 N_BondNumberValid_Node1{"The system validates the bond
number"}:::decision N_BondNumberValid_Node1_action["If bond number is empty or invalid,
processing stops with error if
valid, processing continues"]:::main N_BondNumberValid_Node1 -- Yes --> N_BondNumberValid_Node1_action N_BondNumberValid_Node1_action --> E_BondNumberValid N_BondNumberValid_Node0 -- No --> N_BondNumberValid_Node1 N_BondNumberValid_Node1 -- No --> E_BondNumberValid
File: GCX016.cbl
GIVEN:
A bond number has undergone format validation
WHEN:
The system evaluates bond number validity
THEN:
Sets bond processing flag if valid, otherwise generates bond validation error
File: GCX016.cbl
GIVEN:
A bond control number has been extracted from X4 segment
WHEN:
The system validates the bond number
THEN:
If bond number is empty or invalid, processing stops with error; if valid, processing continues
β Consolidated Acceptance Criteria
- The system prepares for bond-based cargo processing → bond processing flag is set to enable bond-specific cargo operations
- The system initializes bond processing mode → bond processing flag is set and cargo counter is initialized for bond-based operations
- The system prepares for bond-based processing → the bond processing flag is set to enable group processing mode
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetBondProcessingFlag(["Start Step"])
E_SetBondProcessingFlag(["End Step"])
N_SetBondProcessingFlag_Node0{"The system prepares for bond-based
cargo processing"}:::decision N_SetBondProcessingFlag_Node0_action["Bond processing flag is set to
enable bond-specific cargo
operations"]:::main N_SetBondProcessingFlag_Node0 -- Yes --> N_SetBondProcessingFlag_Node0_action N_SetBondProcessingFlag_Node0_action --> E_SetBondProcessingFlag S_SetBondProcessingFlag --> N_SetBondProcessingFlag_Node0 N_SetBondProcessingFlag_Node1{"The system initializes bond
processing mode"}:::decision N_SetBondProcessingFlag_Node1_action["Bond processing flag is set and
cargo counter is initialized for
bond-based operations"]:::main N_SetBondProcessingFlag_Node1 -- Yes --> N_SetBondProcessingFlag_Node1_action N_SetBondProcessingFlag_Node1_action --> E_SetBondProcessingFlag N_SetBondProcessingFlag_Node0 -- No --> N_SetBondProcessingFlag_Node1 N_SetBondProcessingFlag_Node2{"The system prepares for bond-based
processing"}:::decision N_SetBondProcessingFlag_Node2_action["The bond processing flag is set to
enable group processing mode"]:::main N_SetBondProcessingFlag_Node2 -- Yes --> N_SetBondProcessingFlag_Node2_action N_SetBondProcessingFlag_Node2_action --> E_SetBondProcessingFlag N_SetBondProcessingFlag_Node1 -- No --> N_SetBondProcessingFlag_Node2 N_SetBondProcessingFlag_Node2 -- No --> E_SetBondProcessingFlag
cargo processing"}:::decision N_SetBondProcessingFlag_Node0_action["Bond processing flag is set to
enable bond-specific cargo
operations"]:::main N_SetBondProcessingFlag_Node0 -- Yes --> N_SetBondProcessingFlag_Node0_action N_SetBondProcessingFlag_Node0_action --> E_SetBondProcessingFlag S_SetBondProcessingFlag --> N_SetBondProcessingFlag_Node0 N_SetBondProcessingFlag_Node1{"The system initializes bond
processing mode"}:::decision N_SetBondProcessingFlag_Node1_action["Bond processing flag is set and
cargo counter is initialized for
bond-based operations"]:::main N_SetBondProcessingFlag_Node1 -- Yes --> N_SetBondProcessingFlag_Node1_action N_SetBondProcessingFlag_Node1_action --> E_SetBondProcessingFlag N_SetBondProcessingFlag_Node0 -- No --> N_SetBondProcessingFlag_Node1 N_SetBondProcessingFlag_Node2{"The system prepares for bond-based
processing"}:::decision N_SetBondProcessingFlag_Node2_action["The bond processing flag is set to
enable group processing mode"]:::main N_SetBondProcessingFlag_Node2 -- Yes --> N_SetBondProcessingFlag_Node2_action N_SetBondProcessingFlag_Node2_action --> E_SetBondProcessingFlag N_SetBondProcessingFlag_Node1 -- No --> N_SetBondProcessingFlag_Node2 N_SetBondProcessingFlag_Node2 -- No --> E_SetBondProcessingFlag
File: GCX016.cbl
GIVEN:
A valid bond number has been confirmed
WHEN:
The system prepares for bond-based cargo processing
THEN:
Bond processing flag is set to enable bond-specific cargo operations
File: GCX016.cbl
GIVEN:
A valid bond number has been extracted and validated
WHEN:
The system initializes bond processing mode
THEN:
- Bond processing flag is set
- Cargo counter is initialized for bond-based operations
File: GCX016.cbl
GIVEN:
A valid bond control number has been identified
WHEN:
The system prepares for bond-based processing
THEN:
The bond processing flag is set to enable group processing mode
β Consolidated Acceptance Criteria
- The system prepares to process cargo records by bond → cargo counter is initialized to zero for tracking processed records
- The system prepares to process cargo records by bond number → cargo counter is initialized to zero to track processing progress
- The system begins processing cargo records for a bond → the cargo counter is initialized to zero to track processing progress
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_InitializeCargoCounter(["Start Step"])
E_InitializeCargoCounter(["End Step"])
N_InitializeCargoCounter_Node0{"The system prepares to process
cargo records by bond"}:::decision N_InitializeCargoCounter_Node0_action["Cargo counter is initialized to
zero for tracking processed records"]:::main N_InitializeCargoCounter_Node0 -- Yes --> N_InitializeCargoCounter_Node0_action N_InitializeCargoCounter_Node0_action --> E_InitializeCargoCounter S_InitializeCargoCounter --> N_InitializeCargoCounter_Node0 N_InitializeCargoCounter_Node1{"The system prepares to process
cargo records by bond number"}:::decision N_InitializeCargoCounter_Node1_action["Cargo counter is initialized to
zero to track processing progress"]:::main N_InitializeCargoCounter_Node1 -- Yes --> N_InitializeCargoCounter_Node1_action N_InitializeCargoCounter_Node1_action --> E_InitializeCargoCounter N_InitializeCargoCounter_Node0 -- No --> N_InitializeCargoCounter_Node1 N_InitializeCargoCounter_Node2{"The system begins processing cargo
records for a bond"}:::decision N_InitializeCargoCounter_Node2_action["The cargo counter is initialized to
zero to track processing progress"]:::main N_InitializeCargoCounter_Node2 -- Yes --> N_InitializeCargoCounter_Node2_action N_InitializeCargoCounter_Node2_action --> E_InitializeCargoCounter N_InitializeCargoCounter_Node1 -- No --> N_InitializeCargoCounter_Node2 N_InitializeCargoCounter_Node2 -- No --> E_InitializeCargoCounter
cargo records by bond"}:::decision N_InitializeCargoCounter_Node0_action["Cargo counter is initialized to
zero for tracking processed records"]:::main N_InitializeCargoCounter_Node0 -- Yes --> N_InitializeCargoCounter_Node0_action N_InitializeCargoCounter_Node0_action --> E_InitializeCargoCounter S_InitializeCargoCounter --> N_InitializeCargoCounter_Node0 N_InitializeCargoCounter_Node1{"The system prepares to process
cargo records by bond number"}:::decision N_InitializeCargoCounter_Node1_action["Cargo counter is initialized to
zero to track processing progress"]:::main N_InitializeCargoCounter_Node1 -- Yes --> N_InitializeCargoCounter_Node1_action N_InitializeCargoCounter_Node1_action --> E_InitializeCargoCounter N_InitializeCargoCounter_Node0 -- No --> N_InitializeCargoCounter_Node1 N_InitializeCargoCounter_Node2{"The system begins processing cargo
records for a bond"}:::decision N_InitializeCargoCounter_Node2_action["The cargo counter is initialized to
zero to track processing progress"]:::main N_InitializeCargoCounter_Node2 -- Yes --> N_InitializeCargoCounter_Node2_action N_InitializeCargoCounter_Node2_action --> E_InitializeCargoCounter N_InitializeCargoCounter_Node1 -- No --> N_InitializeCargoCounter_Node2 N_InitializeCargoCounter_Node2 -- No --> E_InitializeCargoCounter
File: GCX016.cbl
GIVEN:
Bond processing flag has been set
WHEN:
The system prepares to process cargo records by bond
THEN:
Cargo counter is initialized to zero for tracking processed records
File: GCX016.cbl
GIVEN:
Bond processing flag has been set
WHEN:
The system prepares to process cargo records by bond number
THEN:
Cargo counter is initialized to zero to track processing progress
File: GCX016.cbl
GIVEN:
Bond processing mode has been activated
WHEN:
The system begins processing cargo records for a bond
THEN:
The cargo counter is initialized to zero to track processing progress
β Consolidated Acceptance Criteria
- The system searches for cargo records by bond number → first cargo record matching the bond number is retrieved from cargo database
- The system searches for cargo records using the bond number as index → first cargo record matching the bond number is retrieved if exists, otherwise no cargo found flag is set
- The system searches for cargo records associated with the bond → the first cargo record matching the bond number is retrieved from the GCCC-CARGO-ROOT database
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_FetchFirstCargoRecordbyBondNumber(["Start Step"])
E_FetchFirstCargoRecordbyBondNumber(["End Step"])
N_FetchFirstCargoRecordbyBondNumber_Node0{"The system searches for cargo
records by bond number"}:::decision N_FetchFirstCargoRecordbyBondNumber_Node0_action["First cargo record matching the
bond number is retrieved from cargo
database"]:::main N_FetchFirstCargoRecordbyBondNumber_Node0 -- Yes --> N_FetchFirstCargoRecordbyBondNumber_Node0_action N_FetchFirstCargoRecordbyBondNumber_Node0_action --> E_FetchFirstCargoRecordbyBondNumber S_FetchFirstCargoRecordbyBondNumber --> N_FetchFirstCargoRecordbyBondNumber_Node0 N_FetchFirstCargoRecordbyBondNumber_Node1{"The system searches for cargo
records using the bond number as
index"}:::decision N_FetchFirstCargoRecordbyBondNumber_Node1_action["First cargo record matching the
bond number is retrieved if exists,
otherwise no cargo found flag is set"]:::main N_FetchFirstCargoRecordbyBondNumber_Node1 -- Yes --> N_FetchFirstCargoRecordbyBondNumber_Node1_action N_FetchFirstCargoRecordbyBondNumber_Node1_action --> E_FetchFirstCargoRecordbyBondNumber N_FetchFirstCargoRecordbyBondNumber_Node0 -- No --> N_FetchFirstCargoRecordbyBondNumber_Node1 N_FetchFirstCargoRecordbyBondNumber_Node2{"The system searches for cargo
records associated with the bond"}:::decision N_FetchFirstCargoRecordbyBondNumber_Node2_action["The first cargo record matching the
bond number is retrieved from the
GCCC-CARGO-ROOT database"]:::main N_FetchFirstCargoRecordbyBondNumber_Node2 -- Yes --> N_FetchFirstCargoRecordbyBondNumber_Node2_action N_FetchFirstCargoRecordbyBondNumber_Node2_action --> E_FetchFirstCargoRecordbyBondNumber N_FetchFirstCargoRecordbyBondNumber_Node1 -- No --> N_FetchFirstCargoRecordbyBondNumber_Node2 N_FetchFirstCargoRecordbyBondNumber_Node2 -- No --> E_FetchFirstCargoRecordbyBondNumber
records by bond number"}:::decision N_FetchFirstCargoRecordbyBondNumber_Node0_action["First cargo record matching the
bond number is retrieved from cargo
database"]:::main N_FetchFirstCargoRecordbyBondNumber_Node0 -- Yes --> N_FetchFirstCargoRecordbyBondNumber_Node0_action N_FetchFirstCargoRecordbyBondNumber_Node0_action --> E_FetchFirstCargoRecordbyBondNumber S_FetchFirstCargoRecordbyBondNumber --> N_FetchFirstCargoRecordbyBondNumber_Node0 N_FetchFirstCargoRecordbyBondNumber_Node1{"The system searches for cargo
records using the bond number as
index"}:::decision N_FetchFirstCargoRecordbyBondNumber_Node1_action["First cargo record matching the
bond number is retrieved if exists,
otherwise no cargo found flag is set"]:::main N_FetchFirstCargoRecordbyBondNumber_Node1 -- Yes --> N_FetchFirstCargoRecordbyBondNumber_Node1_action N_FetchFirstCargoRecordbyBondNumber_Node1_action --> E_FetchFirstCargoRecordbyBondNumber N_FetchFirstCargoRecordbyBondNumber_Node0 -- No --> N_FetchFirstCargoRecordbyBondNumber_Node1 N_FetchFirstCargoRecordbyBondNumber_Node2{"The system searches for cargo
records associated with the bond"}:::decision N_FetchFirstCargoRecordbyBondNumber_Node2_action["The first cargo record matching the
bond number is retrieved from the
GCCC-CARGO-ROOT database"]:::main N_FetchFirstCargoRecordbyBondNumber_Node2 -- Yes --> N_FetchFirstCargoRecordbyBondNumber_Node2_action N_FetchFirstCargoRecordbyBondNumber_Node2_action --> E_FetchFirstCargoRecordbyBondNumber N_FetchFirstCargoRecordbyBondNumber_Node1 -- No --> N_FetchFirstCargoRecordbyBondNumber_Node2 N_FetchFirstCargoRecordbyBondNumber_Node2 -- No --> E_FetchFirstCargoRecordbyBondNumber
File: GCX016.cbl
GIVEN:
A valid bond number and initialized cargo counter
WHEN:
The system searches for cargo records by bond number
THEN:
First cargo record matching the bond number is retrieved from cargo database
File: GCX016.cbl
GIVEN:
A valid bond number and initialized cargo counter
WHEN:
The system searches for cargo records using the bond number as index
THEN:
First cargo record matching the bond number is retrieved if exists, otherwise no cargo found flag is set
File: GCX016.cbl
GIVEN:
A valid bond control number is available for processing
WHEN:
The system searches for cargo records associated with the bond
THEN:
The first cargo record matching the bond number is retrieved from the GCCC-CARGO-ROOT database
β Consolidated Acceptance Criteria
- The system prepares to process the cargo → complete cargo information including status, quantities, and identifiers is loaded
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LoadCargoInformation(["Start Step"])
E_LoadCargoInformation(["End Step"])
N_LoadCargoInformation_Node0{"The system prepares to process the
cargo"}:::decision N_LoadCargoInformation_Node0_action["Complete cargo information
including status, quantities, and
identifiers is loaded"]:::main N_LoadCargoInformation_Node0 -- Yes --> N_LoadCargoInformation_Node0_action N_LoadCargoInformation_Node0_action --> E_LoadCargoInformation S_LoadCargoInformation --> N_LoadCargoInformation_Node0 N_LoadCargoInformation_Node0 -- No --> E_LoadCargoInformation
cargo"}:::decision N_LoadCargoInformation_Node0_action["Complete cargo information
including status, quantities, and
identifiers is loaded"]:::main N_LoadCargoInformation_Node0 -- Yes --> N_LoadCargoInformation_Node0_action N_LoadCargoInformation_Node0_action --> E_LoadCargoInformation S_LoadCargoInformation --> N_LoadCargoInformation_Node0 N_LoadCargoInformation_Node0 -- No --> E_LoadCargoInformation
File: GCX016.cbl
GIVEN:
A cargo record has been found for the bond number
WHEN:
The system prepares to process the cargo
THEN:
Complete cargo information including status, quantities, and identifiers is loaded
β Consolidated Acceptance Criteria
- The system processes disposition code for the cargo → disposition code is validated and appropriate cargo actions are determined
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ProcessDispositionCodeforCargo(["Start Step"])
E_ProcessDispositionCodeforCargo(["End Step"])
N_ProcessDispositionCodeforCargo_Node0{"The system processes disposition
code for the cargo"}:::decision N_ProcessDispositionCodeforCargo_Node0_action["Disposition code is validated and
appropriate cargo actions are
determined"]:::main N_ProcessDispositionCodeforCargo_Node0 -- Yes --> N_ProcessDispositionCodeforCargo_Node0_action N_ProcessDispositionCodeforCargo_Node0_action --> E_ProcessDispositionCodeforCargo S_ProcessDispositionCodeforCargo --> N_ProcessDispositionCodeforCargo_Node0 N_ProcessDispositionCodeforCargo_Node0 -- No --> E_ProcessDispositionCodeforCargo
code for the cargo"}:::decision N_ProcessDispositionCodeforCargo_Node0_action["Disposition code is validated and
appropriate cargo actions are
determined"]:::main N_ProcessDispositionCodeforCargo_Node0 -- Yes --> N_ProcessDispositionCodeforCargo_Node0_action N_ProcessDispositionCodeforCargo_Node0_action --> E_ProcessDispositionCodeforCargo S_ProcessDispositionCodeforCargo --> N_ProcessDispositionCodeforCargo_Node0 N_ProcessDispositionCodeforCargo_Node0 -- No --> E_ProcessDispositionCodeforCargo
File: GCX016.cbl
GIVEN:
Cargo information has been loaded and X4 segment contains disposition code
WHEN:
The system processes disposition code for the cargo
THEN:
- Disposition code is validated
- Appropriate cargo actions are determined
β Consolidated Acceptance Criteria
- The system updates cargo status information → status array is modified to reflect new disposition code and associated status changes
- The system updates the cargo status array → status array is modified to reflect new disposition code and associated status changes
- The system updates cargo status information → the cargo status array is updated with new status codes, removing counterpart codes as needed and maintaining status history
- The system updates cargo status information → the GCSUSS09 status array is updated with the new customs requirement status and related information
- The system processes the special customs handling → the system adds the disposition code 95 status to the cargo status array with appropriate sequence and occurrence numbers
- The system updates the cargo status array → the system adds arrival status codes and information to the cargo status array
- The system updates the cargo status array → the system should record the new release quantities and status in the S09A status array
- The system updates cargo status array → the cargo status array is updated with FDA hold status information
- The system updates the cargo status array → the status array is updated with the partial release hold information
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UpdateCargoStatusArray(["Start Step"])
E_UpdateCargoStatusArray(["End Step"])
N_UpdateCargoStatusArray_Node0{"The system updates cargo status
information"}:::decision N_UpdateCargoStatusArray_Node0_action["Status array is modified to reflect
new disposition code and associated
status changes"]:::main N_UpdateCargoStatusArray_Node0 -- Yes --> N_UpdateCargoStatusArray_Node0_action N_UpdateCargoStatusArray_Node0_action --> E_UpdateCargoStatusArray S_UpdateCargoStatusArray --> N_UpdateCargoStatusArray_Node0 N_UpdateCargoStatusArray_Node1{"The system updates the cargo status
array"}:::decision N_UpdateCargoStatusArray_Node1_action["Status array is modified to reflect
new disposition code and associated
status changes"]:::main N_UpdateCargoStatusArray_Node1 -- Yes --> N_UpdateCargoStatusArray_Node1_action N_UpdateCargoStatusArray_Node1_action --> E_UpdateCargoStatusArray N_UpdateCargoStatusArray_Node0 -- No --> N_UpdateCargoStatusArray_Node1 N_UpdateCargoStatusArray_Node2{"The system updates cargo status
information"}:::decision N_UpdateCargoStatusArray_Node2_action["The cargo status array is updated
with new status codes, removing
counterpart codes as needed and
maintaining status history"]:::main N_UpdateCargoStatusArray_Node2 -- Yes --> N_UpdateCargoStatusArray_Node2_action N_UpdateCargoStatusArray_Node2_action --> E_UpdateCargoStatusArray N_UpdateCargoStatusArray_Node1 -- No --> N_UpdateCargoStatusArray_Node2 N_UpdateCargoStatusArray_Node3{"The system updates cargo status
information"}:::decision N_UpdateCargoStatusArray_Node3_action["The GCSUSS09 status array is
updated with the new customs
requirement status and related
information"]:::main N_UpdateCargoStatusArray_Node3 -- Yes --> N_UpdateCargoStatusArray_Node3_action N_UpdateCargoStatusArray_Node3_action --> E_UpdateCargoStatusArray N_UpdateCargoStatusArray_Node2 -- No --> N_UpdateCargoStatusArray_Node3 N_UpdateCargoStatusArray_Node4{"The system processes the special
customs handling"}:::decision N_UpdateCargoStatusArray_Node4_action["The system adds the disposition
code 95 status to the cargo status
array with appropriate sequence and
occurrence numbers"]:::main N_UpdateCargoStatusArray_Node4 -- Yes --> N_UpdateCargoStatusArray_Node4_action N_UpdateCargoStatusArray_Node4_action --> E_UpdateCargoStatusArray N_UpdateCargoStatusArray_Node3 -- No --> N_UpdateCargoStatusArray_Node4 N_UpdateCargoStatusArray_Node5{"The system updates the cargo status
array"}:::decision N_UpdateCargoStatusArray_Node5_action["The system adds arrival status
codes and information to the cargo
status array"]:::main N_UpdateCargoStatusArray_Node5 -- Yes --> N_UpdateCargoStatusArray_Node5_action N_UpdateCargoStatusArray_Node5_action --> E_UpdateCargoStatusArray N_UpdateCargoStatusArray_Node4 -- No --> N_UpdateCargoStatusArray_Node5 N_UpdateCargoStatusArray_Node6{"The system updates the cargo status
array"}:::decision N_UpdateCargoStatusArray_Node6_action["The system should record the new
release quantities and status in the
S09A status array"]:::main N_UpdateCargoStatusArray_Node6 -- Yes --> N_UpdateCargoStatusArray_Node6_action N_UpdateCargoStatusArray_Node6_action --> E_UpdateCargoStatusArray N_UpdateCargoStatusArray_Node5 -- No --> N_UpdateCargoStatusArray_Node6 N_UpdateCargoStatusArray_Node7{"The system updates cargo status
array"}:::decision N_UpdateCargoStatusArray_Node7_action["The cargo status array is updated
with FDA hold status information"]:::main N_UpdateCargoStatusArray_Node7 -- Yes --> N_UpdateCargoStatusArray_Node7_action N_UpdateCargoStatusArray_Node7_action --> E_UpdateCargoStatusArray N_UpdateCargoStatusArray_Node6 -- No --> N_UpdateCargoStatusArray_Node7 N_UpdateCargoStatusArray_Node8{"The system updates the cargo status
array"}:::decision N_UpdateCargoStatusArray_Node8_action["The status array is updated with
the partial release hold information"]:::main N_UpdateCargoStatusArray_Node8 -- Yes --> N_UpdateCargoStatusArray_Node8_action N_UpdateCargoStatusArray_Node8_action --> E_UpdateCargoStatusArray N_UpdateCargoStatusArray_Node7 -- No --> N_UpdateCargoStatusArray_Node8 N_UpdateCargoStatusArray_Node8 -- No --> E_UpdateCargoStatusArray
information"}:::decision N_UpdateCargoStatusArray_Node0_action["Status array is modified to reflect
new disposition code and associated
status changes"]:::main N_UpdateCargoStatusArray_Node0 -- Yes --> N_UpdateCargoStatusArray_Node0_action N_UpdateCargoStatusArray_Node0_action --> E_UpdateCargoStatusArray S_UpdateCargoStatusArray --> N_UpdateCargoStatusArray_Node0 N_UpdateCargoStatusArray_Node1{"The system updates the cargo status
array"}:::decision N_UpdateCargoStatusArray_Node1_action["Status array is modified to reflect
new disposition code and associated
status changes"]:::main N_UpdateCargoStatusArray_Node1 -- Yes --> N_UpdateCargoStatusArray_Node1_action N_UpdateCargoStatusArray_Node1_action --> E_UpdateCargoStatusArray N_UpdateCargoStatusArray_Node0 -- No --> N_UpdateCargoStatusArray_Node1 N_UpdateCargoStatusArray_Node2{"The system updates cargo status
information"}:::decision N_UpdateCargoStatusArray_Node2_action["The cargo status array is updated
with new status codes, removing
counterpart codes as needed and
maintaining status history"]:::main N_UpdateCargoStatusArray_Node2 -- Yes --> N_UpdateCargoStatusArray_Node2_action N_UpdateCargoStatusArray_Node2_action --> E_UpdateCargoStatusArray N_UpdateCargoStatusArray_Node1 -- No --> N_UpdateCargoStatusArray_Node2 N_UpdateCargoStatusArray_Node3{"The system updates cargo status
information"}:::decision N_UpdateCargoStatusArray_Node3_action["The GCSUSS09 status array is
updated with the new customs
requirement status and related
information"]:::main N_UpdateCargoStatusArray_Node3 -- Yes --> N_UpdateCargoStatusArray_Node3_action N_UpdateCargoStatusArray_Node3_action --> E_UpdateCargoStatusArray N_UpdateCargoStatusArray_Node2 -- No --> N_UpdateCargoStatusArray_Node3 N_UpdateCargoStatusArray_Node4{"The system processes the special
customs handling"}:::decision N_UpdateCargoStatusArray_Node4_action["The system adds the disposition
code 95 status to the cargo status
array with appropriate sequence and
occurrence numbers"]:::main N_UpdateCargoStatusArray_Node4 -- Yes --> N_UpdateCargoStatusArray_Node4_action N_UpdateCargoStatusArray_Node4_action --> E_UpdateCargoStatusArray N_UpdateCargoStatusArray_Node3 -- No --> N_UpdateCargoStatusArray_Node4 N_UpdateCargoStatusArray_Node5{"The system updates the cargo status
array"}:::decision N_UpdateCargoStatusArray_Node5_action["The system adds arrival status
codes and information to the cargo
status array"]:::main N_UpdateCargoStatusArray_Node5 -- Yes --> N_UpdateCargoStatusArray_Node5_action N_UpdateCargoStatusArray_Node5_action --> E_UpdateCargoStatusArray N_UpdateCargoStatusArray_Node4 -- No --> N_UpdateCargoStatusArray_Node5 N_UpdateCargoStatusArray_Node6{"The system updates the cargo status
array"}:::decision N_UpdateCargoStatusArray_Node6_action["The system should record the new
release quantities and status in the
S09A status array"]:::main N_UpdateCargoStatusArray_Node6 -- Yes --> N_UpdateCargoStatusArray_Node6_action N_UpdateCargoStatusArray_Node6_action --> E_UpdateCargoStatusArray N_UpdateCargoStatusArray_Node5 -- No --> N_UpdateCargoStatusArray_Node6 N_UpdateCargoStatusArray_Node7{"The system updates cargo status
array"}:::decision N_UpdateCargoStatusArray_Node7_action["The cargo status array is updated
with FDA hold status information"]:::main N_UpdateCargoStatusArray_Node7 -- Yes --> N_UpdateCargoStatusArray_Node7_action N_UpdateCargoStatusArray_Node7_action --> E_UpdateCargoStatusArray N_UpdateCargoStatusArray_Node6 -- No --> N_UpdateCargoStatusArray_Node7 N_UpdateCargoStatusArray_Node8{"The system updates the cargo status
array"}:::decision N_UpdateCargoStatusArray_Node8_action["The status array is updated with
the partial release hold information"]:::main N_UpdateCargoStatusArray_Node8 -- Yes --> N_UpdateCargoStatusArray_Node8_action N_UpdateCargoStatusArray_Node8_action --> E_UpdateCargoStatusArray N_UpdateCargoStatusArray_Node7 -- No --> N_UpdateCargoStatusArray_Node8 N_UpdateCargoStatusArray_Node8 -- No --> E_UpdateCargoStatusArray
File: GCX016.cbl
GIVEN:
Disposition code has been processed for the cargo
WHEN:
The system updates cargo status information
THEN:
- Status array is modified to reflect new disposition code
- Associated status changes
File: GCX016.cbl
GIVEN:
A disposition code has been applied to cargo
WHEN:
The system updates the cargo status array
THEN:
- Status array is modified to reflect new disposition code
- Associated status changes
File: GCX016.cbl
GIVEN:
Disposition codes have been processed
WHEN:
The system updates cargo status information
THEN:
- The cargo status array is updated with new status codes, removing counterpart codes as needed
- Maintaining status history
File: GCX016.cbl
GIVEN:
New customs requirement disposition code has been processed
WHEN:
The system updates cargo status information
THEN:
- The gcsuss09 status array is updated with the new customs requirement status
- Related information
File: GCX016.cbl
GIVEN:
A cargo record with disposition code 95 and existing status array
WHEN:
The system processes the special customs handling
THEN:
- The system adds the disposition code 95 status to the cargo status array with appropriate sequence
- Occurrence numbers
File: GCX016.cbl
GIVEN:
Cargo arrival processing is complete with arrival flags and dates set
WHEN:
The system updates the cargo status array
THEN:
- The system adds arrival status codes
- Information to the cargo status array
File: GCX016.cbl
GIVEN:
Release status and quantities have been determined
WHEN:
The system updates the cargo status array
THEN:
- The system should record the new release quantities
- Status in the s09a status array
File: GCX016.cbl
GIVEN:
Hold location has been set as destination
WHEN:
The system updates cargo status array
THEN:
The cargo status array is updated with FDA hold status information
File: GCX016.cbl
GIVEN:
Hold on piece counts status has been determined for partial release cargo
WHEN:
The system updates the cargo status array
THEN:
The status array is updated with the partial release hold information
β Consolidated Acceptance Criteria
- The system applies business rules to the cargo → cargo processing rules are executed based on cargo characteristics and disposition requirements
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ApplyBusinessRulestoCargo(["Start Step"])
E_ApplyBusinessRulestoCargo(["End Step"])
N_ApplyBusinessRulestoCargo_Node0{"The system applies business rules
to the cargo"}:::decision N_ApplyBusinessRulestoCargo_Node0_action["Cargo processing rules are executed
based on cargo characteristics and
disposition requirements"]:::main N_ApplyBusinessRulestoCargo_Node0 -- Yes --> N_ApplyBusinessRulestoCargo_Node0_action N_ApplyBusinessRulestoCargo_Node0_action --> E_ApplyBusinessRulestoCargo S_ApplyBusinessRulestoCargo --> N_ApplyBusinessRulestoCargo_Node0 N_ApplyBusinessRulestoCargo_Node0 -- No --> E_ApplyBusinessRulestoCargo
to the cargo"}:::decision N_ApplyBusinessRulestoCargo_Node0_action["Cargo processing rules are executed
based on cargo characteristics and
disposition requirements"]:::main N_ApplyBusinessRulestoCargo_Node0 -- Yes --> N_ApplyBusinessRulestoCargo_Node0_action N_ApplyBusinessRulestoCargo_Node0_action --> E_ApplyBusinessRulestoCargo S_ApplyBusinessRulestoCargo --> N_ApplyBusinessRulestoCargo_Node0 N_ApplyBusinessRulestoCargo_Node0 -- No --> E_ApplyBusinessRulestoCargo
File: GCX016.cbl
GIVEN:
Cargo status array has been updated with disposition code information
WHEN:
The system applies business rules to the cargo
THEN:
- Cargo processing rules are executed based on cargo characteristics
- Disposition requirements
β Consolidated Acceptance Criteria
- The system determines final cargo release status → cargo release status is updated to reflect hold, release, or other appropriate status conditions
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UpdateCargoReleaseStatus(["Start Step"])
E_UpdateCargoReleaseStatus(["End Step"])
N_UpdateCargoReleaseStatus_Node0{"The system determines final cargo
release status"}:::decision N_UpdateCargoReleaseStatus_Node0_action["Cargo release status is updated to
reflect hold, release, or other
appropriate status conditions"]:::main N_UpdateCargoReleaseStatus_Node0 -- Yes --> N_UpdateCargoReleaseStatus_Node0_action N_UpdateCargoReleaseStatus_Node0_action --> E_UpdateCargoReleaseStatus S_UpdateCargoReleaseStatus --> N_UpdateCargoReleaseStatus_Node0 N_UpdateCargoReleaseStatus_Node0 -- No --> E_UpdateCargoReleaseStatus
release status"}:::decision N_UpdateCargoReleaseStatus_Node0_action["Cargo release status is updated to
reflect hold, release, or other
appropriate status conditions"]:::main N_UpdateCargoReleaseStatus_Node0 -- Yes --> N_UpdateCargoReleaseStatus_Node0_action N_UpdateCargoReleaseStatus_Node0_action --> E_UpdateCargoReleaseStatus S_UpdateCargoReleaseStatus --> N_UpdateCargoReleaseStatus_Node0 N_UpdateCargoReleaseStatus_Node0 -- No --> E_UpdateCargoReleaseStatus
File: GCX016.cbl
GIVEN:
Business rules have been applied to the cargo
WHEN:
The system determines final cargo release status
THEN:
Cargo release status is updated to reflect hold, release, or other appropriate status conditions
β Consolidated Acceptance Criteria
- If message generation requirements → appropriate cargo messages are generated if status changes require notification
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GenerateCargoMessagesifRequired(["Start Step"])
E_GenerateCargoMessagesifRequired(["End Step"])
N_GenerateCargoMessagesifRequired_Node0{"The system evaluates message
generation requirements"}:::decision N_GenerateCargoMessagesifRequired_Node0_action["Appropriate cargo messages are
generated if status changes require
notification"]:::main N_GenerateCargoMessagesifRequired_Node0 -- Yes --> N_GenerateCargoMessagesifRequired_Node0_action N_GenerateCargoMessagesifRequired_Node0_action --> E_GenerateCargoMessagesifRequired S_GenerateCargoMessagesifRequired --> N_GenerateCargoMessagesifRequired_Node0 N_GenerateCargoMessagesifRequired_Node0 -- No --> E_GenerateCargoMessagesifRequired
generation requirements"}:::decision N_GenerateCargoMessagesifRequired_Node0_action["Appropriate cargo messages are
generated if status changes require
notification"]:::main N_GenerateCargoMessagesifRequired_Node0 -- Yes --> N_GenerateCargoMessagesifRequired_Node0_action N_GenerateCargoMessagesifRequired_Node0_action --> E_GenerateCargoMessagesifRequired S_GenerateCargoMessagesifRequired --> N_GenerateCargoMessagesifRequired_Node0 N_GenerateCargoMessagesifRequired_Node0 -- No --> E_GenerateCargoMessagesifRequired
File: GCX016.cbl
GIVEN:
Cargo release status has been updated
WHEN:
The system evaluates message generation requirements
THEN:
Appropriate cargo messages are generated if status changes require notification
β Consolidated Acceptance Criteria
- The system completes cargo processing → cargo counter is incremented by one to track processed records
- The system updates processing statistics → the cargo counter is incremented by one to reflect the completed processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IncrementCargoCounter(["Start Step"])
E_IncrementCargoCounter(["End Step"])
N_IncrementCargoCounter_Node0{"The system completes cargo
processing"}:::decision N_IncrementCargoCounter_Node0_action["Cargo counter is incremented by one
to track processed records"]:::main N_IncrementCargoCounter_Node0 -- Yes --> N_IncrementCargoCounter_Node0_action N_IncrementCargoCounter_Node0_action --> E_IncrementCargoCounter S_IncrementCargoCounter --> N_IncrementCargoCounter_Node0 N_IncrementCargoCounter_Node1{"The system updates processing
statistics"}:::decision N_IncrementCargoCounter_Node1_action["The cargo counter is incremented by
one to reflect the completed
processing"]:::main N_IncrementCargoCounter_Node1 -- Yes --> N_IncrementCargoCounter_Node1_action N_IncrementCargoCounter_Node1_action --> E_IncrementCargoCounter N_IncrementCargoCounter_Node0 -- No --> N_IncrementCargoCounter_Node1 N_IncrementCargoCounter_Node1 -- No --> E_IncrementCargoCounter
processing"}:::decision N_IncrementCargoCounter_Node0_action["Cargo counter is incremented by one
to track processed records"]:::main N_IncrementCargoCounter_Node0 -- Yes --> N_IncrementCargoCounter_Node0_action N_IncrementCargoCounter_Node0_action --> E_IncrementCargoCounter S_IncrementCargoCounter --> N_IncrementCargoCounter_Node0 N_IncrementCargoCounter_Node1{"The system updates processing
statistics"}:::decision N_IncrementCargoCounter_Node1_action["The cargo counter is incremented by
one to reflect the completed
processing"]:::main N_IncrementCargoCounter_Node1 -- Yes --> N_IncrementCargoCounter_Node1_action N_IncrementCargoCounter_Node1_action --> E_IncrementCargoCounter N_IncrementCargoCounter_Node0 -- No --> N_IncrementCargoCounter_Node1 N_IncrementCargoCounter_Node1 -- No --> E_IncrementCargoCounter
File: GCX016.cbl
GIVEN:
A cargo record has been successfully processed
WHEN:
The system completes cargo processing
THEN:
Cargo counter is incremented by one to track processed records
File: GCX016.cbl
GIVEN:
A cargo record has been successfully processed within a bond group
WHEN:
The system updates processing statistics
THEN:
The cargo counter is incremented by one to reflect the completed processing
β Consolidated Acceptance Criteria
- The system searches for additional cargo records with the same bond number → next cargo record matching the bond number is retrieved if available
- The system searches for the next cargo record with the same bond number → the next cargo record matching the bond number is retrieved from the database if it exists
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_FetchNextCargoRecordwithSameBond(["Start Step"])
E_FetchNextCargoRecordwithSameBond(["End Step"])
N_FetchNextCargoRecordwithSameBond_Node0{"The system searches for additional
cargo records with the same bond
number"}:::decision N_FetchNextCargoRecordwithSameBond_Node0_action["Next cargo record matching the bond
number is retrieved if available"]:::main N_FetchNextCargoRecordwithSameBond_Node0 -- Yes --> N_FetchNextCargoRecordwithSameBond_Node0_action N_FetchNextCargoRecordwithSameBond_Node0_action --> E_FetchNextCargoRecordwithSameBond S_FetchNextCargoRecordwithSameBond --> N_FetchNextCargoRecordwithSameBond_Node0 N_FetchNextCargoRecordwithSameBond_Node1{"The system searches for the next
cargo record with the same bond
number"}:::decision N_FetchNextCargoRecordwithSameBond_Node1_action["The next cargo record matching the
bond number is retrieved from the
database if it exists"]:::main N_FetchNextCargoRecordwithSameBond_Node1 -- Yes --> N_FetchNextCargoRecordwithSameBond_Node1_action N_FetchNextCargoRecordwithSameBond_Node1_action --> E_FetchNextCargoRecordwithSameBond N_FetchNextCargoRecordwithSameBond_Node0 -- No --> N_FetchNextCargoRecordwithSameBond_Node1 N_FetchNextCargoRecordwithSameBond_Node1 -- No --> E_FetchNextCargoRecordwithSameBond
cargo records with the same bond
number"}:::decision N_FetchNextCargoRecordwithSameBond_Node0_action["Next cargo record matching the bond
number is retrieved if available"]:::main N_FetchNextCargoRecordwithSameBond_Node0 -- Yes --> N_FetchNextCargoRecordwithSameBond_Node0_action N_FetchNextCargoRecordwithSameBond_Node0_action --> E_FetchNextCargoRecordwithSameBond S_FetchNextCargoRecordwithSameBond --> N_FetchNextCargoRecordwithSameBond_Node0 N_FetchNextCargoRecordwithSameBond_Node1{"The system searches for the next
cargo record with the same bond
number"}:::decision N_FetchNextCargoRecordwithSameBond_Node1_action["The next cargo record matching the
bond number is retrieved from the
database if it exists"]:::main N_FetchNextCargoRecordwithSameBond_Node1 -- Yes --> N_FetchNextCargoRecordwithSameBond_Node1_action N_FetchNextCargoRecordwithSameBond_Node1_action --> E_FetchNextCargoRecordwithSameBond N_FetchNextCargoRecordwithSameBond_Node0 -- No --> N_FetchNextCargoRecordwithSameBond_Node1 N_FetchNextCargoRecordwithSameBond_Node1 -- No --> E_FetchNextCargoRecordwithSameBond
File: GCX016.cbl
GIVEN:
Current cargo record has been processed and cargo counter incremented
WHEN:
The system searches for additional cargo records with the same bond number
THEN:
Next cargo record matching the bond number is retrieved if available
File: GCX016.cbl
GIVEN:
A cargo record has been processed and more records may exist for the same bond
WHEN:
The system searches for the next cargo record with the same bond number
THEN:
The next cargo record matching the bond number is retrieved from the database if it exists
β Consolidated Acceptance Criteria
- If if more cargo records exist → continues cargo processing loop if more records found, otherwise proceeds to bond processing summary
- If if more cargo records exist → processing loops back to cargo processing if more records exist, otherwise proceeds to bond processing summary
- The system checks for remaining unprocessed cargo records → if more cargo records exist, processing continues with the next record, otherwise the verification analysis phase begins
- If if more cargo records exist → if more cargo records exist, processing continues with the next record; if no more records exist, bond processing moves to completion
- The system checks if more cargo records in the bond group need processing → processing continues with the next cargo record if more exist, otherwise proceeds to message generation
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MoreCargoRecords(["Start Step"])
E_MoreCargoRecords(["End Step"])
N_MoreCargoRecords_Node0{"The system evaluates if more cargo
records exist"}:::decision N_MoreCargoRecords_Node0_action["Continues cargo processing loop if
more records found, otherwise
proceeds to bond processing summary"]:::main N_MoreCargoRecords_Node0 -- Yes --> N_MoreCargoRecords_Node0_action N_MoreCargoRecords_Node0_action --> E_MoreCargoRecords S_MoreCargoRecords --> N_MoreCargoRecords_Node0 N_MoreCargoRecords_Node1{"The system evaluates if more cargo
records exist"}:::decision N_MoreCargoRecords_Node1_action["Processing loops back to cargo
processing if more records exist,
otherwise proceeds to bond
processing summary"]:::main N_MoreCargoRecords_Node1 -- Yes --> N_MoreCargoRecords_Node1_action N_MoreCargoRecords_Node1_action --> E_MoreCargoRecords N_MoreCargoRecords_Node0 -- No --> N_MoreCargoRecords_Node1 N_MoreCargoRecords_Node2{"The system checks for remaining
unprocessed cargo records"}:::decision N_MoreCargoRecords_Node2_action["If more cargo records exist,
processing continues with the next
record, otherwise the verification
analysis phase begins"]:::main N_MoreCargoRecords_Node2 -- Yes --> N_MoreCargoRecords_Node2_action N_MoreCargoRecords_Node2_action --> E_MoreCargoRecords N_MoreCargoRecords_Node1 -- No --> N_MoreCargoRecords_Node2 N_MoreCargoRecords_Node3{"The system evaluates if more cargo
records exist"}:::decision N_MoreCargoRecords_Node3_action["If more cargo records exist,
processing continues with the next
record if no more records exist,
bond processing moves to completion"]:::main N_MoreCargoRecords_Node3 -- Yes --> N_MoreCargoRecords_Node3_action N_MoreCargoRecords_Node3_action --> E_MoreCargoRecords N_MoreCargoRecords_Node2 -- No --> N_MoreCargoRecords_Node3 N_MoreCargoRecords_Node4{"The system checks if more cargo
records in the bond group need
processing"}:::decision N_MoreCargoRecords_Node4_action["Processing continues with the next
cargo record if more exist,
otherwise proceeds to message
generation"]:::main N_MoreCargoRecords_Node4 -- Yes --> N_MoreCargoRecords_Node4_action N_MoreCargoRecords_Node4_action --> E_MoreCargoRecords N_MoreCargoRecords_Node3 -- No --> N_MoreCargoRecords_Node4 N_MoreCargoRecords_Node4 -- No --> E_MoreCargoRecords
records exist"}:::decision N_MoreCargoRecords_Node0_action["Continues cargo processing loop if
more records found, otherwise
proceeds to bond processing summary"]:::main N_MoreCargoRecords_Node0 -- Yes --> N_MoreCargoRecords_Node0_action N_MoreCargoRecords_Node0_action --> E_MoreCargoRecords S_MoreCargoRecords --> N_MoreCargoRecords_Node0 N_MoreCargoRecords_Node1{"The system evaluates if more cargo
records exist"}:::decision N_MoreCargoRecords_Node1_action["Processing loops back to cargo
processing if more records exist,
otherwise proceeds to bond
processing summary"]:::main N_MoreCargoRecords_Node1 -- Yes --> N_MoreCargoRecords_Node1_action N_MoreCargoRecords_Node1_action --> E_MoreCargoRecords N_MoreCargoRecords_Node0 -- No --> N_MoreCargoRecords_Node1 N_MoreCargoRecords_Node2{"The system checks for remaining
unprocessed cargo records"}:::decision N_MoreCargoRecords_Node2_action["If more cargo records exist,
processing continues with the next
record, otherwise the verification
analysis phase begins"]:::main N_MoreCargoRecords_Node2 -- Yes --> N_MoreCargoRecords_Node2_action N_MoreCargoRecords_Node2_action --> E_MoreCargoRecords N_MoreCargoRecords_Node1 -- No --> N_MoreCargoRecords_Node2 N_MoreCargoRecords_Node3{"The system evaluates if more cargo
records exist"}:::decision N_MoreCargoRecords_Node3_action["If more cargo records exist,
processing continues with the next
record if no more records exist,
bond processing moves to completion"]:::main N_MoreCargoRecords_Node3 -- Yes --> N_MoreCargoRecords_Node3_action N_MoreCargoRecords_Node3_action --> E_MoreCargoRecords N_MoreCargoRecords_Node2 -- No --> N_MoreCargoRecords_Node3 N_MoreCargoRecords_Node4{"The system checks if more cargo
records in the bond group need
processing"}:::decision N_MoreCargoRecords_Node4_action["Processing continues with the next
cargo record if more exist,
otherwise proceeds to message
generation"]:::main N_MoreCargoRecords_Node4 -- Yes --> N_MoreCargoRecords_Node4_action N_MoreCargoRecords_Node4_action --> E_MoreCargoRecords N_MoreCargoRecords_Node3 -- No --> N_MoreCargoRecords_Node4 N_MoreCargoRecords_Node4 -- No --> E_MoreCargoRecords
File: GCX016.cbl
GIVEN:
A search for next cargo record with same bond has been executed
WHEN:
The system evaluates if more cargo records exist
THEN:
Continues cargo processing loop if more records found, otherwise proceeds to bond processing summary
File: GCX016.cbl
GIVEN:
A search for next cargo record by bond number has been executed
WHEN:
The system evaluates if more cargo records exist
THEN:
Processing loops back to cargo processing if more records exist, otherwise proceeds to bond processing summary
File: GCX016.cbl
GIVEN:
Cargo records are being scanned for release verification
WHEN:
The system checks for remaining unprocessed cargo records
THEN:
If more cargo records exist, processing continues with the next record, otherwise the verification analysis phase begins
File: GCX016.cbl
GIVEN:
The system has attempted to retrieve the next cargo record for a bond number
WHEN:
The system evaluates if more cargo records exist
THEN:
If more cargo records exist, processing continues with the next record; if no more records exist, bond processing moves to completion
File: GCX016.cbl
GIVEN:
A cargo record in the bond group has been processed
WHEN:
The system checks if more cargo records in the bond group need processing
THEN:
Processing continues with the next cargo record if more exist, otherwise proceeds to message generation
β Consolidated Acceptance Criteria
- The system completes bond-based cargo processing → bond processing summary is generated including cargo count and processing results
- The system generates bond processing summary → summary includes total cargo count, processing results, and status changes for the bond
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GenerateBondProcessingSummary(["Start Step"])
E_GenerateBondProcessingSummary(["End Step"])
N_GenerateBondProcessingSummary_Node0{"The system completes bond-based
cargo processing"}:::decision N_GenerateBondProcessingSummary_Node0_action["Bond processing summary is
generated including cargo count and
processing results"]:::main N_GenerateBondProcessingSummary_Node0 -- Yes --> N_GenerateBondProcessingSummary_Node0_action N_GenerateBondProcessingSummary_Node0_action --> E_GenerateBondProcessingSummary S_GenerateBondProcessingSummary --> N_GenerateBondProcessingSummary_Node0 N_GenerateBondProcessingSummary_Node1{"The system generates bond
processing summary"}:::decision N_GenerateBondProcessingSummary_Node1_action["Summary includes total cargo count,
processing results, and status
changes for the bond"]:::main N_GenerateBondProcessingSummary_Node1 -- Yes --> N_GenerateBondProcessingSummary_Node1_action N_GenerateBondProcessingSummary_Node1_action --> E_GenerateBondProcessingSummary N_GenerateBondProcessingSummary_Node0 -- No --> N_GenerateBondProcessingSummary_Node1 N_GenerateBondProcessingSummary_Node1 -- No --> E_GenerateBondProcessingSummary
cargo processing"}:::decision N_GenerateBondProcessingSummary_Node0_action["Bond processing summary is
generated including cargo count and
processing results"]:::main N_GenerateBondProcessingSummary_Node0 -- Yes --> N_GenerateBondProcessingSummary_Node0_action N_GenerateBondProcessingSummary_Node0_action --> E_GenerateBondProcessingSummary S_GenerateBondProcessingSummary --> N_GenerateBondProcessingSummary_Node0 N_GenerateBondProcessingSummary_Node1{"The system generates bond
processing summary"}:::decision N_GenerateBondProcessingSummary_Node1_action["Summary includes total cargo count,
processing results, and status
changes for the bond"]:::main N_GenerateBondProcessingSummary_Node1 -- Yes --> N_GenerateBondProcessingSummary_Node1_action N_GenerateBondProcessingSummary_Node1_action --> E_GenerateBondProcessingSummary N_GenerateBondProcessingSummary_Node0 -- No --> N_GenerateBondProcessingSummary_Node1 N_GenerateBondProcessingSummary_Node1 -- No --> E_GenerateBondProcessingSummary
File: GCX016.cbl
GIVEN:
All cargo records for the bond number have been processed or no cargo records were found
WHEN:
The system completes bond-based cargo processing
THEN:
- Bond processing summary is generated including cargo count
- Processing results
File: GCX016.cbl
GIVEN:
All cargo records for the bond number have been processed
WHEN:
The system generates bond processing summary
THEN:
Summary includes total cargo count, processing results, and status changes for the bond
β Consolidated Acceptance Criteria
- The system finalizes bond processing → bond processing results are logged to appropriate system logs for audit trail
- The system logs bond processing results → processing results, cargo counts, and status changes are logged for audit trail and system monitoring
- The system logs the bond processing results → all bond processing activities and results are recorded in the system logs for audit trail purposes
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogBondProcessingResults(["Start Step"])
E_LogBondProcessingResults(["End Step"])
N_LogBondProcessingResults_Node0{"The system finalizes bond
processing"}:::decision N_LogBondProcessingResults_Node0_action["Bond processing results are logged
to appropriate system logs for audit
trail"]:::main N_LogBondProcessingResults_Node0 -- Yes --> N_LogBondProcessingResults_Node0_action N_LogBondProcessingResults_Node0_action --> E_LogBondProcessingResults S_LogBondProcessingResults --> N_LogBondProcessingResults_Node0 N_LogBondProcessingResults_Node1{"The system logs bond processing
results"}:::decision N_LogBondProcessingResults_Node1_action["Processing results, cargo counts,
and status changes are logged for
audit trail and system monitoring"]:::main N_LogBondProcessingResults_Node1 -- Yes --> N_LogBondProcessingResults_Node1_action N_LogBondProcessingResults_Node1_action --> E_LogBondProcessingResults N_LogBondProcessingResults_Node0 -- No --> N_LogBondProcessingResults_Node1 N_LogBondProcessingResults_Node2{"The system logs the bond processing
results"}:::decision N_LogBondProcessingResults_Node2_action["All bond processing activities and
results are recorded in the system
logs for audit trail purposes"]:::main N_LogBondProcessingResults_Node2 -- Yes --> N_LogBondProcessingResults_Node2_action N_LogBondProcessingResults_Node2_action --> E_LogBondProcessingResults N_LogBondProcessingResults_Node1 -- No --> N_LogBondProcessingResults_Node2 N_LogBondProcessingResults_Node2 -- No --> E_LogBondProcessingResults
processing"}:::decision N_LogBondProcessingResults_Node0_action["Bond processing results are logged
to appropriate system logs for audit
trail"]:::main N_LogBondProcessingResults_Node0 -- Yes --> N_LogBondProcessingResults_Node0_action N_LogBondProcessingResults_Node0_action --> E_LogBondProcessingResults S_LogBondProcessingResults --> N_LogBondProcessingResults_Node0 N_LogBondProcessingResults_Node1{"The system logs bond processing
results"}:::decision N_LogBondProcessingResults_Node1_action["Processing results, cargo counts,
and status changes are logged for
audit trail and system monitoring"]:::main N_LogBondProcessingResults_Node1 -- Yes --> N_LogBondProcessingResults_Node1_action N_LogBondProcessingResults_Node1_action --> E_LogBondProcessingResults N_LogBondProcessingResults_Node0 -- No --> N_LogBondProcessingResults_Node1 N_LogBondProcessingResults_Node2{"The system logs the bond processing
results"}:::decision N_LogBondProcessingResults_Node2_action["All bond processing activities and
results are recorded in the system
logs for audit trail purposes"]:::main N_LogBondProcessingResults_Node2 -- Yes --> N_LogBondProcessingResults_Node2_action N_LogBondProcessingResults_Node2_action --> E_LogBondProcessingResults N_LogBondProcessingResults_Node1 -- No --> N_LogBondProcessingResults_Node2 N_LogBondProcessingResults_Node2 -- No --> E_LogBondProcessingResults
File: GCX016.cbl
GIVEN:
Bond processing summary has been generated
WHEN:
The system finalizes bond processing
THEN:
Bond processing results are logged to appropriate system logs for audit trail
File: GCX016.cbl
GIVEN:
Broker notifications have been sent for the bond
WHEN:
The system logs bond processing results
THEN:
- Processing results, cargo counts, and status changes are logged for audit trail
- System monitoring
File: GCX016.cbl
GIVEN:
Bond processing messages have been generated
WHEN:
The system logs the bond processing results
THEN:
- All bond processing activities
- Results are recorded in the system logs for audit trail purposes
β Consolidated Acceptance Criteria
- The system encounters invalid bond number → bond validation error is generated with appropriate error details
- Bond validation error is generated → an error message is created indicating invalid or inactive bond number and processing is directed to error handling
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GenerateBondValidationError(["Start Step"])
E_GenerateBondValidationError(["End Step"])
N_GenerateBondValidationError_Node0{"The system encounters invalid bond
number"}:::decision N_GenerateBondValidationError_Node0_action["Bond validation error is generated
with appropriate error details"]:::exclusion N_GenerateBondValidationError_Node0 -- Yes -->|Alternative| N_GenerateBondValidationError_Node0_action N_GenerateBondValidationError_Node0_action --> E_GenerateBondValidationError S_GenerateBondValidationError --> N_GenerateBondValidationError_Node0 N_GenerateBondValidationError_Node1{"Bond validation error is generated"}:::decision N_GenerateBondValidationError_Node1_action["An error message is created
indicating invalid or inactive bond
number and processing is directed to
error handling"]:::exclusion N_GenerateBondValidationError_Node1 -- Yes -->|Alternative| N_GenerateBondValidationError_Node1_action N_GenerateBondValidationError_Node1_action --> E_GenerateBondValidationError N_GenerateBondValidationError_Node0 -- No --> N_GenerateBondValidationError_Node1 N_GenerateBondValidationError_Node1 -- No --> E_GenerateBondValidationError
number"}:::decision N_GenerateBondValidationError_Node0_action["Bond validation error is generated
with appropriate error details"]:::exclusion N_GenerateBondValidationError_Node0 -- Yes -->|Alternative| N_GenerateBondValidationError_Node0_action N_GenerateBondValidationError_Node0_action --> E_GenerateBondValidationError S_GenerateBondValidationError --> N_GenerateBondValidationError_Node0 N_GenerateBondValidationError_Node1{"Bond validation error is generated"}:::decision N_GenerateBondValidationError_Node1_action["An error message is created
indicating invalid or inactive bond
number and processing is directed to
error handling"]:::exclusion N_GenerateBondValidationError_Node1 -- Yes -->|Alternative| N_GenerateBondValidationError_Node1_action N_GenerateBondValidationError_Node1_action --> E_GenerateBondValidationError N_GenerateBondValidationError_Node0 -- No --> N_GenerateBondValidationError_Node1 N_GenerateBondValidationError_Node1 -- No --> E_GenerateBondValidationError
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
Bond number has failed format or validity validation
WHEN:
The system encounters invalid bond number
THEN:
Bond validation error is generated with appropriate error details
File: GCX016.cbl
GIVEN:
Bond control number validation has failed
WHEN:
Bond validation error is generated
THEN:
- An error message is created indicating invalid or inactive bond number
- Processing is directed to error handling
β Consolidated Acceptance Criteria
- The system handles bond validation failure → bond error details are logged to error logs for analysis and resolution
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogBondError(["Start Step"])
E_LogBondError(["End Step"])
N_LogBondError_Node0{"The system handles bond validation
failure"}:::decision N_LogBondError_Node0_action["Bond error details are logged to
error logs for analysis and
resolution"]:::main N_LogBondError_Node0 -- Yes --> N_LogBondError_Node0_action N_LogBondError_Node0_action --> E_LogBondError S_LogBondError --> N_LogBondError_Node0 N_LogBondError_Node0 -- No --> E_LogBondError
failure"}:::decision N_LogBondError_Node0_action["Bond error details are logged to
error logs for analysis and
resolution"]:::main N_LogBondError_Node0 -- Yes --> N_LogBondError_Node0_action N_LogBondError_Node0_action --> E_LogBondError S_LogBondError --> N_LogBondError_Node0 N_LogBondError_Node0 -- No --> E_LogBondError
File: GCX016.cbl
GIVEN:
Bond validation error has been generated
WHEN:
The system handles bond validation failure
THEN:
- Bond error details are logged to error logs for analysis
- Resolution
β Consolidated Acceptance Criteria
- The system cannot proceed with bond-based processing → bond processing is skipped and system proceeds to completion
- The system determines next processing steps → bond processing is skipped and the system continues with other available processing options
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SkipBondProcessing(["Start Step"])
E_SkipBondProcessing(["End Step"])
N_SkipBondProcessing_Node0{"The system cannot proceed with
bond-based processing"}:::decision N_SkipBondProcessing_Node0_action["Bond processing is skipped and
system proceeds to completion"]:::main N_SkipBondProcessing_Node0 -- Yes --> N_SkipBondProcessing_Node0_action N_SkipBondProcessing_Node0_action --> E_SkipBondProcessing S_SkipBondProcessing --> N_SkipBondProcessing_Node0 N_SkipBondProcessing_Node1{"The system determines next
processing steps"}:::decision N_SkipBondProcessing_Node1_action["Bond processing is skipped and the
system continues with other
available processing options"]:::main N_SkipBondProcessing_Node1 -- Yes --> N_SkipBondProcessing_Node1_action N_SkipBondProcessing_Node1_action --> E_SkipBondProcessing N_SkipBondProcessing_Node0 -- No --> N_SkipBondProcessing_Node1 N_SkipBondProcessing_Node1 -- No --> E_SkipBondProcessing
bond-based processing"}:::decision N_SkipBondProcessing_Node0_action["Bond processing is skipped and
system proceeds to completion"]:::main N_SkipBondProcessing_Node0 -- Yes --> N_SkipBondProcessing_Node0_action N_SkipBondProcessing_Node0_action --> E_SkipBondProcessing S_SkipBondProcessing --> N_SkipBondProcessing_Node0 N_SkipBondProcessing_Node1{"The system determines next
processing steps"}:::decision N_SkipBondProcessing_Node1_action["Bond processing is skipped and the
system continues with other
available processing options"]:::main N_SkipBondProcessing_Node1 -- Yes --> N_SkipBondProcessing_Node1_action N_SkipBondProcessing_Node1_action --> E_SkipBondProcessing N_SkipBondProcessing_Node0 -- No --> N_SkipBondProcessing_Node1 N_SkipBondProcessing_Node1 -- No --> E_SkipBondProcessing
File: GCX016.cbl
GIVEN:
Bond number is unavailable or bond validation has failed
WHEN:
The system cannot proceed with bond-based processing
THEN:
- Bond processing is skipped
- System proceeds to completion
File: GCX016.cbl
GIVEN:
Bond number validation has failed and error messages have been generated
WHEN:
The system determines next processing steps
THEN:
- Bond processing is skipped
- The system continues with other available processing options
β Consolidated Acceptance Criteria
- The system performs a disposition code table lookup using the provided disposition code → the system retrieves all associated disposition code information including counterpart codes, quantity action flags, location requirements, and processing instructions from the DC table and sets appropriate availability flags
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_DispositionCodeTableLookupRetrievedispositioncodeinformationfromDCtableincludingcounterpartcodesquantityactionflagslocationrequirementsandprocessinginstructions(["Start Step"])
E_DispositionCodeTableLookupRetrievedispositioncodeinformationfromDCtableincludingcounterpartcodesquantityactionflagslocationrequirementsandprocessinginstructions(["End Step"])
N_DispositionCodeTableLookupRetrievedispositioncodeinformationfromDCtableincludingcounterpartcodesquantityactionflagslocationrequirementsandprocessinginstructions_Node0{"The system performs a disposition
code table lookup using the provided
disposition code"}:::decision N_DispositionCodeTableLookupRetrievedispositioncodeinformationfromDCtableincludingcounterpartcodesquantityactionflagslocationrequirementsandprocessinginstructions_Node0_action["The system retrieves all associated
disposition code information
including counterpart codes,
quantity action flags, location
requirements, and processing
instructions from the DC table and
sets appropriate availability flags"]:::main N_DispositionCodeTableLookupRetrievedispositioncodeinformationfromDCtableincludingcounterpartcodesquantityactionflagslocationrequirementsandprocessinginstructions_Node0 -- Yes --> N_DispositionCodeTableLookupRetrievedispositioncodeinformationfromDCtableincludingcounterpartcodesquantityactionflagslocationrequirementsandprocessinginstructions_Node0_action N_DispositionCodeTableLookupRetrievedispositioncodeinformationfromDCtableincludingcounterpartcodesquantityactionflagslocationrequirementsandprocessinginstructions_Node0_action --> E_DispositionCodeTableLookupRetrievedispositioncodeinformationfromDCtableincludingcounterpartcodesquantityactionflagslocationrequirementsandprocessinginstructions S_DispositionCodeTableLookupRetrievedispositioncodeinformationfromDCtableincludingcounterpartcodesquantityactionflagslocationrequirementsandprocessinginstructions --> N_DispositionCodeTableLookupRetrievedispositioncodeinformationfromDCtableincludingcounterpartcodesquantityactionflagslocationrequirementsandprocessinginstructions_Node0 N_DispositionCodeTableLookupRetrievedispositioncodeinformationfromDCtableincludingcounterpartcodesquantityactionflagslocationrequirementsandprocessinginstructions_Node0 -- No --> E_DispositionCodeTableLookupRetrievedispositioncodeinformationfromDCtableincludingcounterpartcodesquantityactionflagslocationrequirementsandprocessinginstructions
code table lookup using the provided
disposition code"}:::decision N_DispositionCodeTableLookupRetrievedispositioncodeinformationfromDCtableincludingcounterpartcodesquantityactionflagslocationrequirementsandprocessinginstructions_Node0_action["The system retrieves all associated
disposition code information
including counterpart codes,
quantity action flags, location
requirements, and processing
instructions from the DC table and
sets appropriate availability flags"]:::main N_DispositionCodeTableLookupRetrievedispositioncodeinformationfromDCtableincludingcounterpartcodesquantityactionflagslocationrequirementsandprocessinginstructions_Node0 -- Yes --> N_DispositionCodeTableLookupRetrievedispositioncodeinformationfromDCtableincludingcounterpartcodesquantityactionflagslocationrequirementsandprocessinginstructions_Node0_action N_DispositionCodeTableLookupRetrievedispositioncodeinformationfromDCtableincludingcounterpartcodesquantityactionflagslocationrequirementsandprocessinginstructions_Node0_action --> E_DispositionCodeTableLookupRetrievedispositioncodeinformationfromDCtableincludingcounterpartcodesquantityactionflagslocationrequirementsandprocessinginstructions S_DispositionCodeTableLookupRetrievedispositioncodeinformationfromDCtableincludingcounterpartcodesquantityactionflagslocationrequirementsandprocessinginstructions --> N_DispositionCodeTableLookupRetrievedispositioncodeinformationfromDCtableincludingcounterpartcodesquantityactionflagslocationrequirementsandprocessinginstructions_Node0 N_DispositionCodeTableLookupRetrievedispositioncodeinformationfromDCtableincludingcounterpartcodesquantityactionflagslocationrequirementsandprocessinginstructions_Node0 -- No --> E_DispositionCodeTableLookupRetrievedispositioncodeinformationfromDCtableincludingcounterpartcodesquantityactionflagslocationrequirementsandprocessinginstructions
File: GCX016.cbl
GIVEN:
A disposition code needs to be validated and processed for cargo operations
WHEN:
The system performs a disposition code table lookup using the provided disposition code
THEN:
- The system retrieves all associated disposition code information including counterpart codes, quantity action flags, location requirements, and processing instructions from the dc table
- Sets appropriate availability flags
β Consolidated Acceptance Criteria
- The system prepares to read the DC table → the system initializes the DC table key with the disposition code value
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_InitializeDCTableKeywithDispositionCode(["Start Step"])
E_InitializeDCTableKeywithDispositionCode(["End Step"])
N_InitializeDCTableKeywithDispositionCode_Node0{"The system prepares to read the DC
table"}:::decision N_InitializeDCTableKeywithDispositionCode_Node0_action["The system initializes the DC table
key with the disposition code value"]:::main N_InitializeDCTableKeywithDispositionCode_Node0 -- Yes --> N_InitializeDCTableKeywithDispositionCode_Node0_action N_InitializeDCTableKeywithDispositionCode_Node0_action --> E_InitializeDCTableKeywithDispositionCode S_InitializeDCTableKeywithDispositionCode --> N_InitializeDCTableKeywithDispositionCode_Node0 N_InitializeDCTableKeywithDispositionCode_Node0 -- No --> E_InitializeDCTableKeywithDispositionCode
table"}:::decision N_InitializeDCTableKeywithDispositionCode_Node0_action["The system initializes the DC table
key with the disposition code value"]:::main N_InitializeDCTableKeywithDispositionCode_Node0 -- Yes --> N_InitializeDCTableKeywithDispositionCode_Node0_action N_InitializeDCTableKeywithDispositionCode_Node0_action --> E_InitializeDCTableKeywithDispositionCode S_InitializeDCTableKeywithDispositionCode --> N_InitializeDCTableKeywithDispositionCode_Node0 N_InitializeDCTableKeywithDispositionCode_Node0 -- No --> E_InitializeDCTableKeywithDispositionCode
File: GCX016.cbl
GIVEN:
A disposition code is available for table lookup
WHEN:
The system prepares to read the DC table
THEN:
The system initializes the DC table key with the disposition code value
β Consolidated Acceptance Criteria
- If the table read results → if the DC table record is found, the system proceeds to extract disposition code information, otherwise it sets the disposition code not found error flag
- The system checks if a matching record was found in the table → the system sets success status if record found or error status if record not found
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_DCTableRecordFound(["Start Step"])
E_DCTableRecordFound(["End Step"])
N_DCTableRecordFound_Node0{"The system evaluates the table read
results"}:::decision N_DCTableRecordFound_Node0_action["If the DC table record is found,
the system proceeds to extract
disposition code information,
otherwise it sets the disposition
code not found error flag"]:::main N_DCTableRecordFound_Node0 -- Yes --> N_DCTableRecordFound_Node0_action N_DCTableRecordFound_Node0_action --> E_DCTableRecordFound S_DCTableRecordFound --> N_DCTableRecordFound_Node0 N_DCTableRecordFound_Node1{"The system checks if a matching
record was found in the table"}:::decision N_DCTableRecordFound_Node1_action["The system sets success status if
record found or error status if
record not found"]:::main N_DCTableRecordFound_Node1 -- Yes --> N_DCTableRecordFound_Node1_action N_DCTableRecordFound_Node1_action --> E_DCTableRecordFound N_DCTableRecordFound_Node0 -- No --> N_DCTableRecordFound_Node1 N_DCTableRecordFound_Node1 -- No --> E_DCTableRecordFound
results"}:::decision N_DCTableRecordFound_Node0_action["If the DC table record is found,
the system proceeds to extract
disposition code information,
otherwise it sets the disposition
code not found error flag"]:::main N_DCTableRecordFound_Node0 -- Yes --> N_DCTableRecordFound_Node0_action N_DCTableRecordFound_Node0_action --> E_DCTableRecordFound S_DCTableRecordFound --> N_DCTableRecordFound_Node0 N_DCTableRecordFound_Node1{"The system checks if a matching
record was found in the table"}:::decision N_DCTableRecordFound_Node1_action["The system sets success status if
record found or error status if
record not found"]:::main N_DCTableRecordFound_Node1 -- Yes --> N_DCTableRecordFound_Node1_action N_DCTableRecordFound_Node1_action --> E_DCTableRecordFound N_DCTableRecordFound_Node0 -- No --> N_DCTableRecordFound_Node1 N_DCTableRecordFound_Node1 -- No --> E_DCTableRecordFound
File: GCX016.cbl
GIVEN:
A DC table lookup has been performed for a disposition code
WHEN:
The system evaluates the table read results
THEN:
If the DC table record is found, the system proceeds to extract disposition code information, otherwise it sets the disposition code not found error flag
File: GCX016.cbl
GIVEN:
A disposition code lookup has been performed against the DC table
WHEN:
The system checks if a matching record was found in the table
THEN:
The system sets success status if record found or error status if record not found
β Consolidated Acceptance Criteria
- The system processes the DC table record information → the system extracts the counterpart code value from the DC-COUNTERPART-CODE field
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExtractCounterpartCodefromDCCOUNTERPARTCODE(["Start Step"])
E_ExtractCounterpartCodefromDCCOUNTERPARTCODE(["End Step"])
N_ExtractCounterpartCodefromDCCOUNTERPARTCODE_Node0{"The system processes the DC table
record information"}:::decision N_ExtractCounterpartCodefromDCCOUNTERPARTCODE_Node0_action["The system extracts the counterpart
code value from the
DC-COUNTERPART-CODE field"]:::main N_ExtractCounterpartCodefromDCCOUNTERPARTCODE_Node0 -- Yes --> N_ExtractCounterpartCodefromDCCOUNTERPARTCODE_Node0_action N_ExtractCounterpartCodefromDCCOUNTERPARTCODE_Node0_action --> E_ExtractCounterpartCodefromDCCOUNTERPARTCODE S_ExtractCounterpartCodefromDCCOUNTERPARTCODE --> N_ExtractCounterpartCodefromDCCOUNTERPARTCODE_Node0 N_ExtractCounterpartCodefromDCCOUNTERPARTCODE_Node0 -- No --> E_ExtractCounterpartCodefromDCCOUNTERPARTCODE
record information"}:::decision N_ExtractCounterpartCodefromDCCOUNTERPARTCODE_Node0_action["The system extracts the counterpart
code value from the
DC-COUNTERPART-CODE field"]:::main N_ExtractCounterpartCodefromDCCOUNTERPARTCODE_Node0 -- Yes --> N_ExtractCounterpartCodefromDCCOUNTERPARTCODE_Node0_action N_ExtractCounterpartCodefromDCCOUNTERPARTCODE_Node0_action --> E_ExtractCounterpartCodefromDCCOUNTERPARTCODE S_ExtractCounterpartCodefromDCCOUNTERPARTCODE --> N_ExtractCounterpartCodefromDCCOUNTERPARTCODE_Node0 N_ExtractCounterpartCodefromDCCOUNTERPARTCODE_Node0 -- No --> E_ExtractCounterpartCodefromDCCOUNTERPARTCODE
File: GCX016.cbl
GIVEN:
A valid DC table record has been retrieved for a disposition code
WHEN:
The system processes the DC table record information
THEN:
The system extracts the counterpart code value from the DC-COUNTERPART-CODE field
β Consolidated Acceptance Criteria
- The system processes the DC table record information → the system extracts the quantity action flag from the DC-QTY-ACTION field to determine quantity processing requirements
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExtractQuantityActionFlagfromDCQTYACTION(["Start Step"])
E_ExtractQuantityActionFlagfromDCQTYACTION(["End Step"])
N_ExtractQuantityActionFlagfromDCQTYACTION_Node0{"The system processes the DC table
record information"}:::decision N_ExtractQuantityActionFlagfromDCQTYACTION_Node0_action["The system extracts the quantity
action flag from the DC-QTY-ACTION
field to determine quantity
processing requirements"]:::main N_ExtractQuantityActionFlagfromDCQTYACTION_Node0 -- Yes --> N_ExtractQuantityActionFlagfromDCQTYACTION_Node0_action N_ExtractQuantityActionFlagfromDCQTYACTION_Node0_action --> E_ExtractQuantityActionFlagfromDCQTYACTION S_ExtractQuantityActionFlagfromDCQTYACTION --> N_ExtractQuantityActionFlagfromDCQTYACTION_Node0 N_ExtractQuantityActionFlagfromDCQTYACTION_Node0 -- No --> E_ExtractQuantityActionFlagfromDCQTYACTION
record information"}:::decision N_ExtractQuantityActionFlagfromDCQTYACTION_Node0_action["The system extracts the quantity
action flag from the DC-QTY-ACTION
field to determine quantity
processing requirements"]:::main N_ExtractQuantityActionFlagfromDCQTYACTION_Node0 -- Yes --> N_ExtractQuantityActionFlagfromDCQTYACTION_Node0_action N_ExtractQuantityActionFlagfromDCQTYACTION_Node0_action --> E_ExtractQuantityActionFlagfromDCQTYACTION S_ExtractQuantityActionFlagfromDCQTYACTION --> N_ExtractQuantityActionFlagfromDCQTYACTION_Node0 N_ExtractQuantityActionFlagfromDCQTYACTION_Node0 -- No --> E_ExtractQuantityActionFlagfromDCQTYACTION
File: GCX016.cbl
GIVEN:
A valid DC table record has been retrieved for a disposition code
WHEN:
The system processes the DC table record information
THEN:
The system extracts the quantity action flag from the DC-QTY-ACTION field to determine quantity processing requirements
β Consolidated Acceptance Criteria
- The system processes the DC table record information → the system extracts location requirements from the DC-LOCATION-INFO field
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExtractLocationRequirementsfromDCLOCATIONINFO(["Start Step"])
E_ExtractLocationRequirementsfromDCLOCATIONINFO(["End Step"])
N_ExtractLocationRequirementsfromDCLOCATIONINFO_Node0{"The system processes the DC table
record information"}:::decision N_ExtractLocationRequirementsfromDCLOCATIONINFO_Node0_action["The system extracts location
requirements from the
DC-LOCATION-INFO field"]:::main N_ExtractLocationRequirementsfromDCLOCATIONINFO_Node0 -- Yes --> N_ExtractLocationRequirementsfromDCLOCATIONINFO_Node0_action N_ExtractLocationRequirementsfromDCLOCATIONINFO_Node0_action --> E_ExtractLocationRequirementsfromDCLOCATIONINFO S_ExtractLocationRequirementsfromDCLOCATIONINFO --> N_ExtractLocationRequirementsfromDCLOCATIONINFO_Node0 N_ExtractLocationRequirementsfromDCLOCATIONINFO_Node0 -- No --> E_ExtractLocationRequirementsfromDCLOCATIONINFO
record information"}:::decision N_ExtractLocationRequirementsfromDCLOCATIONINFO_Node0_action["The system extracts location
requirements from the
DC-LOCATION-INFO field"]:::main N_ExtractLocationRequirementsfromDCLOCATIONINFO_Node0 -- Yes --> N_ExtractLocationRequirementsfromDCLOCATIONINFO_Node0_action N_ExtractLocationRequirementsfromDCLOCATIONINFO_Node0_action --> E_ExtractLocationRequirementsfromDCLOCATIONINFO S_ExtractLocationRequirementsfromDCLOCATIONINFO --> N_ExtractLocationRequirementsfromDCLOCATIONINFO_Node0 N_ExtractLocationRequirementsfromDCLOCATIONINFO_Node0 -- No --> E_ExtractLocationRequirementsfromDCLOCATIONINFO
File: GCX016.cbl
GIVEN:
A valid DC table record has been retrieved for a disposition code
WHEN:
The system processes the DC table record information
THEN:
The system extracts location requirements from the DC-LOCATION-INFO field
β Consolidated Acceptance Criteria
- The system processes the DC table record information → the system extracts processing instructions from the DC-PROCESS-TYPE field
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExtractProcessingInstructionsfromDCPROCESSTYPE(["Start Step"])
E_ExtractProcessingInstructionsfromDCPROCESSTYPE(["End Step"])
N_ExtractProcessingInstructionsfromDCPROCESSTYPE_Node0{"The system processes the DC table
record information"}:::decision N_ExtractProcessingInstructionsfromDCPROCESSTYPE_Node0_action["The system extracts processing
instructions from the
DC-PROCESS-TYPE field"]:::main N_ExtractProcessingInstructionsfromDCPROCESSTYPE_Node0 -- Yes --> N_ExtractProcessingInstructionsfromDCPROCESSTYPE_Node0_action N_ExtractProcessingInstructionsfromDCPROCESSTYPE_Node0_action --> E_ExtractProcessingInstructionsfromDCPROCESSTYPE S_ExtractProcessingInstructionsfromDCPROCESSTYPE --> N_ExtractProcessingInstructionsfromDCPROCESSTYPE_Node0 N_ExtractProcessingInstructionsfromDCPROCESSTYPE_Node0 -- No --> E_ExtractProcessingInstructionsfromDCPROCESSTYPE
record information"}:::decision N_ExtractProcessingInstructionsfromDCPROCESSTYPE_Node0_action["The system extracts processing
instructions from the
DC-PROCESS-TYPE field"]:::main N_ExtractProcessingInstructionsfromDCPROCESSTYPE_Node0 -- Yes --> N_ExtractProcessingInstructionsfromDCPROCESSTYPE_Node0_action N_ExtractProcessingInstructionsfromDCPROCESSTYPE_Node0_action --> E_ExtractProcessingInstructionsfromDCPROCESSTYPE S_ExtractProcessingInstructionsfromDCPROCESSTYPE --> N_ExtractProcessingInstructionsfromDCPROCESSTYPE_Node0 N_ExtractProcessingInstructionsfromDCPROCESSTYPE_Node0 -- No --> E_ExtractProcessingInstructionsfromDCPROCESSTYPE
File: GCX016.cbl
GIVEN:
A valid DC table record has been retrieved for a disposition code
WHEN:
The system processes the DC table record information
THEN:
The system extracts processing instructions from the DC-PROCESS-TYPE field
β Consolidated Acceptance Criteria
- The system completes the information extraction process → the system sets the disposition code information available flag to indicate successful retrieval
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetDispositionCodeInformationAvailableFlag(["Start Step"])
E_SetDispositionCodeInformationAvailableFlag(["End Step"])
N_SetDispositionCodeInformationAvailableFlag_Node0{"The system completes the
information extraction process"}:::decision N_SetDispositionCodeInformationAvailableFlag_Node0_action["The system sets the disposition
code information available flag to
indicate successful retrieval"]:::main N_SetDispositionCodeInformationAvailableFlag_Node0 -- Yes --> N_SetDispositionCodeInformationAvailableFlag_Node0_action N_SetDispositionCodeInformationAvailableFlag_Node0_action --> E_SetDispositionCodeInformationAvailableFlag S_SetDispositionCodeInformationAvailableFlag --> N_SetDispositionCodeInformationAvailableFlag_Node0 N_SetDispositionCodeInformationAvailableFlag_Node0 -- No --> E_SetDispositionCodeInformationAvailableFlag
information extraction process"}:::decision N_SetDispositionCodeInformationAvailableFlag_Node0_action["The system sets the disposition
code information available flag to
indicate successful retrieval"]:::main N_SetDispositionCodeInformationAvailableFlag_Node0 -- Yes --> N_SetDispositionCodeInformationAvailableFlag_Node0_action N_SetDispositionCodeInformationAvailableFlag_Node0_action --> E_SetDispositionCodeInformationAvailableFlag S_SetDispositionCodeInformationAvailableFlag --> N_SetDispositionCodeInformationAvailableFlag_Node0 N_SetDispositionCodeInformationAvailableFlag_Node0 -- No --> E_SetDispositionCodeInformationAvailableFlag
File: GCX016.cbl
GIVEN:
All disposition code information has been successfully extracted from the DC table record
WHEN:
The system completes the information extraction process
THEN:
The system sets the disposition code information available flag to indicate successful retrieval
β Consolidated Acceptance Criteria
- The DC table record is not found for the specified disposition code → the system sets the disposition code not found error flag
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetDispositionCodeNotFoundErrorFlag(["Start Step"])
E_SetDispositionCodeNotFoundErrorFlag(["End Step"])
N_SetDispositionCodeNotFoundErrorFlag_Node0{"The DC table record is not found
for the specified disposition code"}:::decision N_SetDispositionCodeNotFoundErrorFlag_Node0_action["The system sets the disposition
code not found error flag"]:::main N_SetDispositionCodeNotFoundErrorFlag_Node0 -- Yes --> N_SetDispositionCodeNotFoundErrorFlag_Node0_action N_SetDispositionCodeNotFoundErrorFlag_Node0_action --> E_SetDispositionCodeNotFoundErrorFlag S_SetDispositionCodeNotFoundErrorFlag --> N_SetDispositionCodeNotFoundErrorFlag_Node0 N_SetDispositionCodeNotFoundErrorFlag_Node0 -- No --> E_SetDispositionCodeNotFoundErrorFlag
for the specified disposition code"}:::decision N_SetDispositionCodeNotFoundErrorFlag_Node0_action["The system sets the disposition
code not found error flag"]:::main N_SetDispositionCodeNotFoundErrorFlag_Node0 -- Yes --> N_SetDispositionCodeNotFoundErrorFlag_Node0_action N_SetDispositionCodeNotFoundErrorFlag_Node0_action --> E_SetDispositionCodeNotFoundErrorFlag S_SetDispositionCodeNotFoundErrorFlag --> N_SetDispositionCodeNotFoundErrorFlag_Node0 N_SetDispositionCodeNotFoundErrorFlag_Node0 -- No --> E_SetDispositionCodeNotFoundErrorFlag
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
A disposition code lookup has been performed against the DC table
WHEN:
The DC table record is not found for the specified disposition code
THEN:
The system sets the disposition code not found error flag
β Consolidated Acceptance Criteria
- The system prepares to read disposition code information → the table type is set to 'DC' to identify the disposition code table
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetTableTypetoDC(["Start Step"])
E_SetTableTypetoDC(["End Step"])
N_SetTableTypetoDC_Node0{"The system prepares to read
disposition code information"}:::decision N_SetTableTypetoDC_Node0_action["The table type is set to DC to
identify the disposition code table"]:::main N_SetTableTypetoDC_Node0 -- Yes --> N_SetTableTypetoDC_Node0_action N_SetTableTypetoDC_Node0_action --> E_SetTableTypetoDC S_SetTableTypetoDC --> N_SetTableTypetoDC_Node0 N_SetTableTypetoDC_Node0 -- No --> E_SetTableTypetoDC
disposition code information"}:::decision N_SetTableTypetoDC_Node0_action["The table type is set to DC to
identify the disposition code table"]:::main N_SetTableTypetoDC_Node0 -- Yes --> N_SetTableTypetoDC_Node0_action N_SetTableTypetoDC_Node0_action --> E_SetTableTypetoDC S_SetTableTypetoDC --> N_SetTableTypetoDC_Node0 N_SetTableTypetoDC_Node0 -- No --> E_SetTableTypetoDC
File: GCX016.cbl
GIVEN:
A disposition code lookup is required
WHEN:
The system prepares to read disposition code information
THEN:
The table type is set to 'DC' to identify the disposition code table
β Consolidated Acceptance Criteria
- The system prepares the table lookup key → the disposition code value is assigned as the search key
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetKeytoDispositionCode(["Start Step"])
E_SetKeytoDispositionCode(["End Step"])
N_SetKeytoDispositionCode_Node0{"The system prepares the table
lookup key"}:::decision N_SetKeytoDispositionCode_Node0_action["The disposition code value is
assigned as the search key"]:::main N_SetKeytoDispositionCode_Node0 -- Yes --> N_SetKeytoDispositionCode_Node0_action N_SetKeytoDispositionCode_Node0_action --> E_SetKeytoDispositionCode S_SetKeytoDispositionCode --> N_SetKeytoDispositionCode_Node0 N_SetKeytoDispositionCode_Node0 -- No --> E_SetKeytoDispositionCode
lookup key"}:::decision N_SetKeytoDispositionCode_Node0_action["The disposition code value is
assigned as the search key"]:::main N_SetKeytoDispositionCode_Node0 -- Yes --> N_SetKeytoDispositionCode_Node0_action N_SetKeytoDispositionCode_Node0_action --> E_SetKeytoDispositionCode S_SetKeytoDispositionCode --> N_SetKeytoDispositionCode_Node0 N_SetKeytoDispositionCode_Node0 -- No --> E_SetKeytoDispositionCode
File: GCX016.cbl
GIVEN:
A specific disposition code needs to be looked up
WHEN:
The system prepares the table lookup key
THEN:
The disposition code value is assigned as the search key
β Consolidated Acceptance Criteria
- The system needs to retrieve disposition code details → gCCTBIO service is called to read from the DC table
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CallGCCTBIOforDCTableRead(["Start Step"])
E_CallGCCTBIOforDCTableRead(["End Step"])
N_CallGCCTBIOforDCTableRead_Node0{"The system needs to retrieve
disposition code details"}:::decision N_CallGCCTBIOforDCTableRead_Node0_action["GCCTBIO service is called to read
from the DC table"]:::main N_CallGCCTBIOforDCTableRead_Node0 -- Yes --> N_CallGCCTBIOforDCTableRead_Node0_action N_CallGCCTBIOforDCTableRead_Node0_action --> E_CallGCCTBIOforDCTableRead S_CallGCCTBIOforDCTableRead --> N_CallGCCTBIOforDCTableRead_Node0 N_CallGCCTBIOforDCTableRead_Node0 -- No --> E_CallGCCTBIOforDCTableRead
disposition code details"}:::decision N_CallGCCTBIOforDCTableRead_Node0_action["GCCTBIO service is called to read
from the DC table"]:::main N_CallGCCTBIOforDCTableRead_Node0 -- Yes --> N_CallGCCTBIOforDCTableRead_Node0_action N_CallGCCTBIOforDCTableRead_Node0_action --> E_CallGCCTBIOforDCTableRead S_CallGCCTBIOforDCTableRead --> N_CallGCCTBIOforDCTableRead_Node0 N_CallGCCTBIOforDCTableRead_Node0 -- No --> E_CallGCCTBIOforDCTableRead
File: GCX016.cbl
GIVEN:
Table type is set to 'DC' and key is assigned
WHEN:
The system needs to retrieve disposition code details
THEN:
GCCTBIO service is called to read from the DC table
β Consolidated Acceptance Criteria
- The system checks the operation result → the operation is validated as successful or failed based on return status
- The system checks the database call completion status → iF the database call was successful THEN proceed to validate cargo record ELSE log database error and set error status
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_DatabaseCallSuccessful(["Start Step"])
E_DatabaseCallSuccessful(["End Step"])
N_DatabaseCallSuccessful_Node0{"The system checks the operation
result"}:::decision N_DatabaseCallSuccessful_Node0_action["The operation is validated as
successful or failed based on return
status"]:::main N_DatabaseCallSuccessful_Node0 -- Yes --> N_DatabaseCallSuccessful_Node0_action N_DatabaseCallSuccessful_Node0_action --> E_DatabaseCallSuccessful S_DatabaseCallSuccessful --> N_DatabaseCallSuccessful_Node0 N_DatabaseCallSuccessful_Node1{"The system checks the database call
completion status"}:::decision N_DatabaseCallSuccessful_Node1_action["IF the database call was successful
THEN proceed to validate cargo
record ELSE log database error and
set error status"]:::main N_DatabaseCallSuccessful_Node1 -- Yes --> N_DatabaseCallSuccessful_Node1_action N_DatabaseCallSuccessful_Node1_action --> E_DatabaseCallSuccessful N_DatabaseCallSuccessful_Node0 -- No --> N_DatabaseCallSuccessful_Node1 N_DatabaseCallSuccessful_Node1 -- No --> E_DatabaseCallSuccessful
result"}:::decision N_DatabaseCallSuccessful_Node0_action["The operation is validated as
successful or failed based on return
status"]:::main N_DatabaseCallSuccessful_Node0 -- Yes --> N_DatabaseCallSuccessful_Node0_action N_DatabaseCallSuccessful_Node0_action --> E_DatabaseCallSuccessful S_DatabaseCallSuccessful --> N_DatabaseCallSuccessful_Node0 N_DatabaseCallSuccessful_Node1{"The system checks the database call
completion status"}:::decision N_DatabaseCallSuccessful_Node1_action["IF the database call was successful
THEN proceed to validate cargo
record ELSE log database error and
set error status"]:::main N_DatabaseCallSuccessful_Node1 -- Yes --> N_DatabaseCallSuccessful_Node1_action N_DatabaseCallSuccessful_Node1_action --> E_DatabaseCallSuccessful N_DatabaseCallSuccessful_Node0 -- No --> N_DatabaseCallSuccessful_Node1 N_DatabaseCallSuccessful_Node1 -- No --> E_DatabaseCallSuccessful
File: GCX016.cbl
GIVEN:
A database call has been executed
WHEN:
The system checks the operation result
THEN:
The operation is validated as successful or failed based on return status
File: GCX016.cbl
GIVEN:
A database call to GCCUSIO has been executed
WHEN:
The system checks the database call completion status
THEN:
- If the database call was successful then proceed to validate cargo record else log database error
- Set error status
β Consolidated Acceptance Criteria
- The system checks for record existence → the system determines whether the disposition code record was found or not found
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RecordFound(["Start Step"])
E_RecordFound(["End Step"])
N_RecordFound_Node0{"The system checks for record
existence"}:::decision N_RecordFound_Node0_action["The system determines whether the
disposition code record was found or
not found"]:::main N_RecordFound_Node0 -- Yes --> N_RecordFound_Node0_action N_RecordFound_Node0_action --> E_RecordFound S_RecordFound --> N_RecordFound_Node0 N_RecordFound_Node0 -- No --> E_RecordFound
existence"}:::decision N_RecordFound_Node0_action["The system determines whether the
disposition code record was found or
not found"]:::main N_RecordFound_Node0 -- Yes --> N_RecordFound_Node0_action N_RecordFound_Node0_action --> E_RecordFound S_RecordFound --> N_RecordFound_Node0 N_RecordFound_Node0 -- No --> E_RecordFound
File: GCX016.cbl
GIVEN:
A successful database operation has completed
WHEN:
The system checks for record existence
THEN:
The system determines whether the disposition code record was found or not found
β Consolidated Acceptance Criteria
- The system processes the retrieved record → disposition code details including description and processing attributes are extracted
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExtractDispositionCodeDetails(["Start Step"])
E_ExtractDispositionCodeDetails(["End Step"])
N_ExtractDispositionCodeDetails_Node0{"The system processes the retrieved
record"}:::decision N_ExtractDispositionCodeDetails_Node0_action["Disposition code details including
description and processing
attributes are extracted"]:::main N_ExtractDispositionCodeDetails_Node0 -- Yes --> N_ExtractDispositionCodeDetails_Node0_action N_ExtractDispositionCodeDetails_Node0_action --> E_ExtractDispositionCodeDetails S_ExtractDispositionCodeDetails --> N_ExtractDispositionCodeDetails_Node0 N_ExtractDispositionCodeDetails_Node0 -- No --> E_ExtractDispositionCodeDetails
record"}:::decision N_ExtractDispositionCodeDetails_Node0_action["Disposition code details including
description and processing
attributes are extracted"]:::main N_ExtractDispositionCodeDetails_Node0 -- Yes --> N_ExtractDispositionCodeDetails_Node0_action N_ExtractDispositionCodeDetails_Node0_action --> E_ExtractDispositionCodeDetails S_ExtractDispositionCodeDetails --> N_ExtractDispositionCodeDetails_Node0 N_ExtractDispositionCodeDetails_Node0 -- No --> E_ExtractDispositionCodeDetails
File: GCX016.cbl
GIVEN:
A disposition code record has been found in the table
WHEN:
The system processes the retrieved record
THEN:
- Disposition code details including description
- Processing attributes are extracted
β Consolidated Acceptance Criteria
- The system processes counterpart relationships → related counterpart disposition codes are identified and retrieved
- The system processes counterpart code relationships → counterpart code information is retrieved to support removal of conflicting or superseded disposition codes
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GetCounterpartCodeInformation(["Start Step"])
E_GetCounterpartCodeInformation(["End Step"])
N_GetCounterpartCodeInformation_Node0{"The system processes counterpart
relationships"}:::decision N_GetCounterpartCodeInformation_Node0_action["Related counterpart disposition
codes are identified and retrieved"]:::main N_GetCounterpartCodeInformation_Node0 -- Yes --> N_GetCounterpartCodeInformation_Node0_action N_GetCounterpartCodeInformation_Node0_action --> E_GetCounterpartCodeInformation S_GetCounterpartCodeInformation --> N_GetCounterpartCodeInformation_Node0 N_GetCounterpartCodeInformation_Node1{"The system processes counterpart
code relationships"}:::decision N_GetCounterpartCodeInformation_Node1_action["Counterpart code information is
retrieved to support removal of
conflicting or superseded
disposition codes"]:::main N_GetCounterpartCodeInformation_Node1 -- Yes --> N_GetCounterpartCodeInformation_Node1_action N_GetCounterpartCodeInformation_Node1_action --> E_GetCounterpartCodeInformation N_GetCounterpartCodeInformation_Node0 -- No --> N_GetCounterpartCodeInformation_Node1 N_GetCounterpartCodeInformation_Node1 -- No --> E_GetCounterpartCodeInformation
relationships"}:::decision N_GetCounterpartCodeInformation_Node0_action["Related counterpart disposition
codes are identified and retrieved"]:::main N_GetCounterpartCodeInformation_Node0 -- Yes --> N_GetCounterpartCodeInformation_Node0_action N_GetCounterpartCodeInformation_Node0_action --> E_GetCounterpartCodeInformation S_GetCounterpartCodeInformation --> N_GetCounterpartCodeInformation_Node0 N_GetCounterpartCodeInformation_Node1{"The system processes counterpart
code relationships"}:::decision N_GetCounterpartCodeInformation_Node1_action["Counterpart code information is
retrieved to support removal of
conflicting or superseded
disposition codes"]:::main N_GetCounterpartCodeInformation_Node1 -- Yes --> N_GetCounterpartCodeInformation_Node1_action N_GetCounterpartCodeInformation_Node1_action --> E_GetCounterpartCodeInformation N_GetCounterpartCodeInformation_Node0 -- No --> N_GetCounterpartCodeInformation_Node1 N_GetCounterpartCodeInformation_Node1 -- No --> E_GetCounterpartCodeInformation
File: GCX016.cbl
GIVEN:
Disposition code details have been extracted
WHEN:
The system processes counterpart relationships
THEN:
- Related counterpart disposition codes are identified
- Retrieved
File: GCX016.cbl
GIVEN:
A disposition code record contains counterpart code information
WHEN:
The system processes counterpart code relationships
THEN:
Counterpart code information is retrieved to support removal of conflicting or superseded disposition codes
β Consolidated Acceptance Criteria
- The system needs processing guidance → specific processing instructions for the disposition code are obtained
- The system needs to determine processing behavior → processing instructions are retrieved including hold/release flags, removal requirements, and status update methods
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GetProcessingInstructions(["Start Step"])
E_GetProcessingInstructions(["End Step"])
N_GetProcessingInstructions_Node0{"The system needs processing
guidance"}:::decision N_GetProcessingInstructions_Node0_action["Specific processing instructions
for the disposition code are
obtained"]:::main N_GetProcessingInstructions_Node0 -- Yes --> N_GetProcessingInstructions_Node0_action N_GetProcessingInstructions_Node0_action --> E_GetProcessingInstructions S_GetProcessingInstructions --> N_GetProcessingInstructions_Node0 N_GetProcessingInstructions_Node1{"The system needs to determine
processing behavior"}:::decision N_GetProcessingInstructions_Node1_action["Processing instructions are
retrieved including holdrelease
flags, removal requirements, and
status update methods"]:::main N_GetProcessingInstructions_Node1 -- Yes --> N_GetProcessingInstructions_Node1_action N_GetProcessingInstructions_Node1_action --> E_GetProcessingInstructions N_GetProcessingInstructions_Node0 -- No --> N_GetProcessingInstructions_Node1 N_GetProcessingInstructions_Node1 -- No --> E_GetProcessingInstructions
guidance"}:::decision N_GetProcessingInstructions_Node0_action["Specific processing instructions
for the disposition code are
obtained"]:::main N_GetProcessingInstructions_Node0 -- Yes --> N_GetProcessingInstructions_Node0_action N_GetProcessingInstructions_Node0_action --> E_GetProcessingInstructions S_GetProcessingInstructions --> N_GetProcessingInstructions_Node0 N_GetProcessingInstructions_Node1{"The system needs to determine
processing behavior"}:::decision N_GetProcessingInstructions_Node1_action["Processing instructions are
retrieved including holdrelease
flags, removal requirements, and
status update methods"]:::main N_GetProcessingInstructions_Node1 -- Yes --> N_GetProcessingInstructions_Node1_action N_GetProcessingInstructions_Node1_action --> E_GetProcessingInstructions N_GetProcessingInstructions_Node0 -- No --> N_GetProcessingInstructions_Node1 N_GetProcessingInstructions_Node1 -- No --> E_GetProcessingInstructions
File: GCX016.cbl
GIVEN:
Counterpart code information has been retrieved
WHEN:
The system needs processing guidance
THEN:
Specific processing instructions for the disposition code are obtained
File: GCX016.cbl
GIVEN:
A disposition code record contains processing instruction flags
WHEN:
The system needs to determine processing behavior
THEN:
Processing instructions are retrieved including hold/release flags, removal requirements, and status update methods
β Consolidated Acceptance Criteria
- The lookup operation completes successfully → the found flag is set to true to indicate successful record retrieval
- The system completes the disposition code lookup process → the found flag is set to true to indicate successful disposition code processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetFoundFlagtoTrue(["Start Step"])
E_SetFoundFlagtoTrue(["End Step"])
N_SetFoundFlagtoTrue_Node0{"The lookup operation completes
successfully"}:::decision N_SetFoundFlagtoTrue_Node0_action["The found flag is set to true to
indicate successful record retrieval"]:::main N_SetFoundFlagtoTrue_Node0 -- Yes --> N_SetFoundFlagtoTrue_Node0_action N_SetFoundFlagtoTrue_Node0_action --> E_SetFoundFlagtoTrue S_SetFoundFlagtoTrue --> N_SetFoundFlagtoTrue_Node0 N_SetFoundFlagtoTrue_Node1{"The system completes the
disposition code lookup process"}:::decision N_SetFoundFlagtoTrue_Node1_action["The found flag is set to true to
indicate successful disposition code
processing"]:::main N_SetFoundFlagtoTrue_Node1 -- Yes --> N_SetFoundFlagtoTrue_Node1_action N_SetFoundFlagtoTrue_Node1_action --> E_SetFoundFlagtoTrue N_SetFoundFlagtoTrue_Node0 -- No --> N_SetFoundFlagtoTrue_Node1 N_SetFoundFlagtoTrue_Node1 -- No --> E_SetFoundFlagtoTrue
successfully"}:::decision N_SetFoundFlagtoTrue_Node0_action["The found flag is set to true to
indicate successful record retrieval"]:::main N_SetFoundFlagtoTrue_Node0 -- Yes --> N_SetFoundFlagtoTrue_Node0_action N_SetFoundFlagtoTrue_Node0_action --> E_SetFoundFlagtoTrue S_SetFoundFlagtoTrue --> N_SetFoundFlagtoTrue_Node0 N_SetFoundFlagtoTrue_Node1{"The system completes the
disposition code lookup process"}:::decision N_SetFoundFlagtoTrue_Node1_action["The found flag is set to true to
indicate successful disposition code
processing"]:::main N_SetFoundFlagtoTrue_Node1 -- Yes --> N_SetFoundFlagtoTrue_Node1_action N_SetFoundFlagtoTrue_Node1_action --> E_SetFoundFlagtoTrue N_SetFoundFlagtoTrue_Node0 -- No --> N_SetFoundFlagtoTrue_Node1 N_SetFoundFlagtoTrue_Node1 -- No --> E_SetFoundFlagtoTrue
File: GCX016.cbl
GIVEN:
Processing instructions have been successfully retrieved
WHEN:
The lookup operation completes successfully
THEN:
The found flag is set to true to indicate successful record retrieval
File: GCX016.cbl
GIVEN:
Disposition code has been successfully found in the DC table and all information extracted
WHEN:
The system completes the disposition code lookup process
THEN:
The found flag is set to true to indicate successful disposition code processing
β Consolidated Acceptance Criteria
- The lookup operation is complete → a success status is returned to the calling process
- Bond processing completes without errors → success status is returned to calling process
- The lookup process completes successfully → a success status is returned to indicate the disposition code is ready for processing
- The system returns success status → success status is returned to calling process indicating successful transmission root segment creation
- The system completes the transmission creation process → success status is returned to the calling process
- Process completion status is returned → success status is returned to indicate successful root segment creation
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ReturnSuccessStatus(["Start Step"])
E_ReturnSuccessStatus(["End Step"])
N_ReturnSuccessStatus_Node0{"The lookup operation is complete"}:::decision
N_ReturnSuccessStatus_Node0_action["A success status is returned to the
calling process"]:::main N_ReturnSuccessStatus_Node0 -- Yes --> N_ReturnSuccessStatus_Node0_action N_ReturnSuccessStatus_Node0_action --> E_ReturnSuccessStatus S_ReturnSuccessStatus --> N_ReturnSuccessStatus_Node0 N_ReturnSuccessStatus_Node1{"Bond processing completes without
errors"}:::decision N_ReturnSuccessStatus_Node1_action["Success status is returned to
calling process"]:::main N_ReturnSuccessStatus_Node1 -- Yes --> N_ReturnSuccessStatus_Node1_action N_ReturnSuccessStatus_Node1_action --> E_ReturnSuccessStatus N_ReturnSuccessStatus_Node0 -- No --> N_ReturnSuccessStatus_Node1 N_ReturnSuccessStatus_Node2{"The lookup process completes
successfully"}:::decision N_ReturnSuccessStatus_Node2_action["A success status is returned to
indicate the disposition code is
ready for processing"]:::main N_ReturnSuccessStatus_Node2 -- Yes --> N_ReturnSuccessStatus_Node2_action N_ReturnSuccessStatus_Node2_action --> E_ReturnSuccessStatus N_ReturnSuccessStatus_Node1 -- No --> N_ReturnSuccessStatus_Node2 N_ReturnSuccessStatus_Node3{"The system returns success status"}:::decision N_ReturnSuccessStatus_Node3_action["Success status is returned to
calling process indicating
successful transmission root segment
creation"]:::main N_ReturnSuccessStatus_Node3 -- Yes --> N_ReturnSuccessStatus_Node3_action N_ReturnSuccessStatus_Node3_action --> E_ReturnSuccessStatus N_ReturnSuccessStatus_Node2 -- No --> N_ReturnSuccessStatus_Node3 N_ReturnSuccessStatus_Node4{"The system completes the
transmission creation process"}:::decision N_ReturnSuccessStatus_Node4_action["Success status is returned to the
calling process"]:::main N_ReturnSuccessStatus_Node4 -- Yes --> N_ReturnSuccessStatus_Node4_action N_ReturnSuccessStatus_Node4_action --> E_ReturnSuccessStatus N_ReturnSuccessStatus_Node3 -- No --> N_ReturnSuccessStatus_Node4 N_ReturnSuccessStatus_Node5{"process completion status is
returned"}:::decision N_ReturnSuccessStatus_Node5_action["success status is returned to
indicate successful root segment
creation"]:::main N_ReturnSuccessStatus_Node5 -- Yes --> N_ReturnSuccessStatus_Node5_action N_ReturnSuccessStatus_Node5_action --> E_ReturnSuccessStatus N_ReturnSuccessStatus_Node4 -- No --> N_ReturnSuccessStatus_Node5 N_ReturnSuccessStatus_Node5 -- No --> E_ReturnSuccessStatus
calling process"]:::main N_ReturnSuccessStatus_Node0 -- Yes --> N_ReturnSuccessStatus_Node0_action N_ReturnSuccessStatus_Node0_action --> E_ReturnSuccessStatus S_ReturnSuccessStatus --> N_ReturnSuccessStatus_Node0 N_ReturnSuccessStatus_Node1{"Bond processing completes without
errors"}:::decision N_ReturnSuccessStatus_Node1_action["Success status is returned to
calling process"]:::main N_ReturnSuccessStatus_Node1 -- Yes --> N_ReturnSuccessStatus_Node1_action N_ReturnSuccessStatus_Node1_action --> E_ReturnSuccessStatus N_ReturnSuccessStatus_Node0 -- No --> N_ReturnSuccessStatus_Node1 N_ReturnSuccessStatus_Node2{"The lookup process completes
successfully"}:::decision N_ReturnSuccessStatus_Node2_action["A success status is returned to
indicate the disposition code is
ready for processing"]:::main N_ReturnSuccessStatus_Node2 -- Yes --> N_ReturnSuccessStatus_Node2_action N_ReturnSuccessStatus_Node2_action --> E_ReturnSuccessStatus N_ReturnSuccessStatus_Node1 -- No --> N_ReturnSuccessStatus_Node2 N_ReturnSuccessStatus_Node3{"The system returns success status"}:::decision N_ReturnSuccessStatus_Node3_action["Success status is returned to
calling process indicating
successful transmission root segment
creation"]:::main N_ReturnSuccessStatus_Node3 -- Yes --> N_ReturnSuccessStatus_Node3_action N_ReturnSuccessStatus_Node3_action --> E_ReturnSuccessStatus N_ReturnSuccessStatus_Node2 -- No --> N_ReturnSuccessStatus_Node3 N_ReturnSuccessStatus_Node4{"The system completes the
transmission creation process"}:::decision N_ReturnSuccessStatus_Node4_action["Success status is returned to the
calling process"]:::main N_ReturnSuccessStatus_Node4 -- Yes --> N_ReturnSuccessStatus_Node4_action N_ReturnSuccessStatus_Node4_action --> E_ReturnSuccessStatus N_ReturnSuccessStatus_Node3 -- No --> N_ReturnSuccessStatus_Node4 N_ReturnSuccessStatus_Node5{"process completion status is
returned"}:::decision N_ReturnSuccessStatus_Node5_action["success status is returned to
indicate successful root segment
creation"]:::main N_ReturnSuccessStatus_Node5 -- Yes --> N_ReturnSuccessStatus_Node5_action N_ReturnSuccessStatus_Node5_action --> E_ReturnSuccessStatus N_ReturnSuccessStatus_Node4 -- No --> N_ReturnSuccessStatus_Node5 N_ReturnSuccessStatus_Node5 -- No --> E_ReturnSuccessStatus
File: GCX016.cbl
GIVEN:
The found flag has been set to true
WHEN:
The lookup operation is complete
THEN:
A success status is returned to the calling process
File: GCX016.cbl
GIVEN:
All cargo records for the bond have been successfully processed
WHEN:
Bond processing completes without errors
THEN:
Success status is returned to calling process
File: GCX016.cbl
GIVEN:
Disposition code information has been successfully retrieved and stored
WHEN:
The lookup process completes successfully
THEN:
A success status is returned to indicate the disposition code is ready for processing
File: GCX016.cbl
GIVEN:
Transmission creation is logged successfully
WHEN:
The system returns success status
THEN:
Success status is returned to calling process indicating successful transmission root segment creation
File: GCX016.cbl
GIVEN:
Transmission creation is logged successfully
WHEN:
The system completes the transmission creation process
THEN:
Success status is returned to the calling process
File: GCX016.cbl
GIVEN:
transmission creation is logged successfully
WHEN:
process completion status is returned
THEN:
success status is returned to indicate successful root segment creation
β Consolidated Acceptance Criteria
- If retry eligibility → a decision is made whether to retry the operation based on error type and retry count
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RetryNeeded(["Start Step"])
E_RetryNeeded(["End Step"])
N_RetryNeeded_Node0{"The system evaluates retry
eligibility"}:::decision N_RetryNeeded_Node0_action["A decision is made whether to retry
the operation based on error type
and retry count"]:::main N_RetryNeeded_Node0 -- Yes --> N_RetryNeeded_Node0_action N_RetryNeeded_Node0_action --> E_RetryNeeded S_RetryNeeded --> N_RetryNeeded_Node0 N_RetryNeeded_Node0 -- No --> E_RetryNeeded
eligibility"}:::decision N_RetryNeeded_Node0_action["A decision is made whether to retry
the operation based on error type
and retry count"]:::main N_RetryNeeded_Node0 -- Yes --> N_RetryNeeded_Node0_action N_RetryNeeded_Node0_action --> E_RetryNeeded S_RetryNeeded --> N_RetryNeeded_Node0 N_RetryNeeded_Node0 -- No --> E_RetryNeeded
File: GCX016.cbl
GIVEN:
A database operation has failed
WHEN:
The system evaluates retry eligibility
THEN:
- A decision is made whether to retry the operation based on error type
- Retry count
β Consolidated Acceptance Criteria
- The system prepares for retry → the retry counter is incremented to track attempt number
- Incrementing retry counter → retry counter is increased by one
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IncrementRetryCounter(["Start Step"])
E_IncrementRetryCounter(["End Step"])
N_IncrementRetryCounter_Node0{"The system prepares for retry"}:::decision
N_IncrementRetryCounter_Node0_action["The retry counter is incremented to
track attempt number"]:::main N_IncrementRetryCounter_Node0 -- Yes --> N_IncrementRetryCounter_Node0_action N_IncrementRetryCounter_Node0_action --> E_IncrementRetryCounter S_IncrementRetryCounter --> N_IncrementRetryCounter_Node0 N_IncrementRetryCounter_Node1{"incrementing retry counter"}:::decision N_IncrementRetryCounter_Node1_action["retry counter is increased by one"]:::main N_IncrementRetryCounter_Node1 -- Yes --> N_IncrementRetryCounter_Node1_action N_IncrementRetryCounter_Node1_action --> E_IncrementRetryCounter N_IncrementRetryCounter_Node0 -- No --> N_IncrementRetryCounter_Node1 N_IncrementRetryCounter_Node1 -- No --> E_IncrementRetryCounter
track attempt number"]:::main N_IncrementRetryCounter_Node0 -- Yes --> N_IncrementRetryCounter_Node0_action N_IncrementRetryCounter_Node0_action --> E_IncrementRetryCounter S_IncrementRetryCounter --> N_IncrementRetryCounter_Node0 N_IncrementRetryCounter_Node1{"incrementing retry counter"}:::decision N_IncrementRetryCounter_Node1_action["retry counter is increased by one"]:::main N_IncrementRetryCounter_Node1 -- Yes --> N_IncrementRetryCounter_Node1_action N_IncrementRetryCounter_Node1_action --> E_IncrementRetryCounter N_IncrementRetryCounter_Node0 -- No --> N_IncrementRetryCounter_Node1 N_IncrementRetryCounter_Node1 -- No --> E_IncrementRetryCounter
File: GCX016.cbl
GIVEN:
A retry is needed for a failed operation
WHEN:
The system prepares for retry
THEN:
The retry counter is incremented to track attempt number
File: GCX016.cbl
GIVEN:
wait period before retry has completed
WHEN:
incrementing retry counter
THEN:
retry counter is increased by one
β Consolidated Acceptance Criteria
- The system checks retry limits → the system determines if maximum retry attempts have been exceeded
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MaxRetriesExceeded(["Start Step"])
E_MaxRetriesExceeded(["End Step"])
N_MaxRetriesExceeded_Node0{"The system checks retry limits"}:::decision
N_MaxRetriesExceeded_Node0_action["The system determines if maximum
retry attempts have been exceeded"]:::main N_MaxRetriesExceeded_Node0 -- Yes --> N_MaxRetriesExceeded_Node0_action N_MaxRetriesExceeded_Node0_action --> E_MaxRetriesExceeded S_MaxRetriesExceeded --> N_MaxRetriesExceeded_Node0 N_MaxRetriesExceeded_Node0 -- No --> E_MaxRetriesExceeded
retry attempts have been exceeded"]:::main N_MaxRetriesExceeded_Node0 -- Yes --> N_MaxRetriesExceeded_Node0_action N_MaxRetriesExceeded_Node0_action --> E_MaxRetriesExceeded S_MaxRetriesExceeded --> N_MaxRetriesExceeded_Node0 N_MaxRetriesExceeded_Node0 -- No --> E_MaxRetriesExceeded
File: GCX016.cbl
GIVEN:
The retry counter has been incremented
WHEN:
The system checks retry limits
THEN:
The system determines if maximum retry attempts have been exceeded
β Consolidated Acceptance Criteria
- The system handles the error condition → the database error is logged with relevant details for analysis
- The system processes the database failure → log the database error for troubleshooting AND set error status to indicate system failure
- The database operation fails → the system should log the database error with relevant details and terminate the U1 creation process
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogDatabaseError(["Start Step"])
E_LogDatabaseError(["End Step"])
N_LogDatabaseError_Node0{"The system handles the error
condition"}:::decision N_LogDatabaseError_Node0_action["The database error is logged with
relevant details for analysis"]:::exclusion N_LogDatabaseError_Node0 -- Yes -->|Alternative| N_LogDatabaseError_Node0_action N_LogDatabaseError_Node0_action --> E_LogDatabaseError S_LogDatabaseError --> N_LogDatabaseError_Node0 N_LogDatabaseError_Node1{"The system processes the database
failure"}:::decision N_LogDatabaseError_Node1_action["Log the database error for
troubleshooting AND set error status
to indicate system failure"]:::main N_LogDatabaseError_Node1 -- Yes --> N_LogDatabaseError_Node1_action N_LogDatabaseError_Node1_action --> E_LogDatabaseError N_LogDatabaseError_Node0 -- No --> N_LogDatabaseError_Node1 N_LogDatabaseError_Node2{"The database operation fails"}:::decision N_LogDatabaseError_Node2_action["The system should log the database
error with relevant details and
terminate the U1 creation process"]:::exclusion N_LogDatabaseError_Node2 -- Yes -->|Alternative| N_LogDatabaseError_Node2_action N_LogDatabaseError_Node2_action --> E_LogDatabaseError N_LogDatabaseError_Node1 -- No --> N_LogDatabaseError_Node2 N_LogDatabaseError_Node2 -- No --> E_LogDatabaseError
condition"}:::decision N_LogDatabaseError_Node0_action["The database error is logged with
relevant details for analysis"]:::exclusion N_LogDatabaseError_Node0 -- Yes -->|Alternative| N_LogDatabaseError_Node0_action N_LogDatabaseError_Node0_action --> E_LogDatabaseError S_LogDatabaseError --> N_LogDatabaseError_Node0 N_LogDatabaseError_Node1{"The system processes the database
failure"}:::decision N_LogDatabaseError_Node1_action["Log the database error for
troubleshooting AND set error status
to indicate system failure"]:::main N_LogDatabaseError_Node1 -- Yes --> N_LogDatabaseError_Node1_action N_LogDatabaseError_Node1_action --> E_LogDatabaseError N_LogDatabaseError_Node0 -- No --> N_LogDatabaseError_Node1 N_LogDatabaseError_Node2{"The database operation fails"}:::decision N_LogDatabaseError_Node2_action["The system should log the database
error with relevant details and
terminate the U1 creation process"]:::exclusion N_LogDatabaseError_Node2 -- Yes -->|Alternative| N_LogDatabaseError_Node2_action N_LogDatabaseError_Node2_action --> E_LogDatabaseError N_LogDatabaseError_Node1 -- No --> N_LogDatabaseError_Node2 N_LogDatabaseError_Node2 -- No --> E_LogDatabaseError
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
A database operation has failed and retries are exhausted or not applicable
WHEN:
The system handles the error condition
THEN:
The database error is logged with relevant details for analysis
File: GCX016.cbl
GIVEN:
A database call to GCCUSIO has failed
WHEN:
The system processes the database failure
THEN:
- Log the database error for troubleshooting
- Set error status to indicate system failure
File: GCX016.cbl
GIVEN:
A U1 segment insertion has been attempted
WHEN:
The database operation fails
THEN:
- The system should log the database error with relevant details
- Terminate the u1 creation process
β Consolidated Acceptance Criteria
- The system prepares error response → an error status is set to indicate operation failure
- Connection error is logged → error status flag is set to indicate connection failure
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetErrorStatus(["Start Step"])
E_SetErrorStatus(["End Step"])
N_SetErrorStatus_Node0{"The system prepares error response"}:::decision
N_SetErrorStatus_Node0_action["An error status is set to indicate
operation failure"]:::exclusion N_SetErrorStatus_Node0 -- Yes -->|Alternative| N_SetErrorStatus_Node0_action N_SetErrorStatus_Node0_action --> E_SetErrorStatus S_SetErrorStatus --> N_SetErrorStatus_Node0 N_SetErrorStatus_Node1{"Connection error is logged"}:::decision N_SetErrorStatus_Node1_action["Error status flag is set to
indicate connection failure"]:::exclusion N_SetErrorStatus_Node1 -- Yes -->|Alternative| N_SetErrorStatus_Node1_action N_SetErrorStatus_Node1_action --> E_SetErrorStatus N_SetErrorStatus_Node0 -- No --> N_SetErrorStatus_Node1 N_SetErrorStatus_Node1 -- No --> E_SetErrorStatus
operation failure"]:::exclusion N_SetErrorStatus_Node0 -- Yes -->|Alternative| N_SetErrorStatus_Node0_action N_SetErrorStatus_Node0_action --> E_SetErrorStatus S_SetErrorStatus --> N_SetErrorStatus_Node0 N_SetErrorStatus_Node1{"Connection error is logged"}:::decision N_SetErrorStatus_Node1_action["Error status flag is set to
indicate connection failure"]:::exclusion N_SetErrorStatus_Node1 -- Yes -->|Alternative| N_SetErrorStatus_Node1_action N_SetErrorStatus_Node1_action --> E_SetErrorStatus N_SetErrorStatus_Node0 -- No --> N_SetErrorStatus_Node1 N_SetErrorStatus_Node1 -- No --> E_SetErrorStatus
File: GCX016.cbl
GIVEN:
A database error has been logged
WHEN:
The system prepares error response
THEN:
An error status is set to indicate operation failure
File: GCX016.cbl
GIVEN:
MQ connection has failed
WHEN:
Connection error is logged
THEN:
Error status flag is set to indicate connection failure
β Consolidated Acceptance Criteria
- The lookup operation concludes with failure → an error status is returned to the calling process
- Bond processing encounters an error condition → error status is returned to calling process
- The system cannot proceed with Julian conversion → an error status is returned indicating the date conversion failure
- The system returns error status → error status is returned to calling process indicating failed transmission root segment creation with error details
- The system cannot create valid transmission root segment → error status is returned to the calling process indicating transmission creation failure
- The system needs to respond to the original processing request → an error status is returned indicating the processing could not be completed due to capacity constraints
- Error status is returned → error status is returned to indicate failure in root segment creation process
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ReturnErrorStatus(["Start Step"])
E_ReturnErrorStatus(["End Step"])
N_ReturnErrorStatus_Node0{"The lookup operation concludes with
failure"}:::decision N_ReturnErrorStatus_Node0_action["An error status is returned to the
calling process"]:::main N_ReturnErrorStatus_Node0 -- Yes --> N_ReturnErrorStatus_Node0_action N_ReturnErrorStatus_Node0_action --> E_ReturnErrorStatus S_ReturnErrorStatus --> N_ReturnErrorStatus_Node0 N_ReturnErrorStatus_Node1{"Bond processing encounters an error
condition"}:::decision N_ReturnErrorStatus_Node1_action["Error status is returned to calling
process"]:::exclusion N_ReturnErrorStatus_Node1 -- Yes -->|Alternative| N_ReturnErrorStatus_Node1_action N_ReturnErrorStatus_Node1_action --> E_ReturnErrorStatus N_ReturnErrorStatus_Node0 -- No --> N_ReturnErrorStatus_Node1 N_ReturnErrorStatus_Node2{"The system cannot proceed with
Julian conversion"}:::decision N_ReturnErrorStatus_Node2_action["An error status is returned
indicating the date conversion
failure"]:::main N_ReturnErrorStatus_Node2 -- Yes --> N_ReturnErrorStatus_Node2_action N_ReturnErrorStatus_Node2_action --> E_ReturnErrorStatus N_ReturnErrorStatus_Node1 -- No --> N_ReturnErrorStatus_Node2 N_ReturnErrorStatus_Node3{"The system returns error status"}:::decision N_ReturnErrorStatus_Node3_action["Error status is returned to calling
process indicating failed
transmission root segment creation
with error details"]:::exclusion N_ReturnErrorStatus_Node3 -- Yes -->|Alternative| N_ReturnErrorStatus_Node3_action N_ReturnErrorStatus_Node3_action --> E_ReturnErrorStatus N_ReturnErrorStatus_Node2 -- No --> N_ReturnErrorStatus_Node3 N_ReturnErrorStatus_Node4{"The system cannot create valid
transmission root segment"}:::decision N_ReturnErrorStatus_Node4_action["Error status is returned to the
calling process indicating
transmission creation failure"]:::main N_ReturnErrorStatus_Node4 -- Yes --> N_ReturnErrorStatus_Node4_action N_ReturnErrorStatus_Node4_action --> E_ReturnErrorStatus N_ReturnErrorStatus_Node3 -- No --> N_ReturnErrorStatus_Node4 N_ReturnErrorStatus_Node5{"The system needs to respond to the
original processing request"}:::decision N_ReturnErrorStatus_Node5_action["An error status is returned
indicating the processing could not
be completed due to capacity
constraints"]:::main N_ReturnErrorStatus_Node5 -- Yes --> N_ReturnErrorStatus_Node5_action N_ReturnErrorStatus_Node5_action --> E_ReturnErrorStatus N_ReturnErrorStatus_Node4 -- No --> N_ReturnErrorStatus_Node5 N_ReturnErrorStatus_Node6{"error status is returned"}:::decision N_ReturnErrorStatus_Node6_action["error status is returned to
indicate failure in root segment
creation process"]:::exclusion N_ReturnErrorStatus_Node6 -- Yes -->|Alternative| N_ReturnErrorStatus_Node6_action N_ReturnErrorStatus_Node6_action --> E_ReturnErrorStatus N_ReturnErrorStatus_Node5 -- No --> N_ReturnErrorStatus_Node6 N_ReturnErrorStatus_Node6 -- No --> E_ReturnErrorStatus
failure"}:::decision N_ReturnErrorStatus_Node0_action["An error status is returned to the
calling process"]:::main N_ReturnErrorStatus_Node0 -- Yes --> N_ReturnErrorStatus_Node0_action N_ReturnErrorStatus_Node0_action --> E_ReturnErrorStatus S_ReturnErrorStatus --> N_ReturnErrorStatus_Node0 N_ReturnErrorStatus_Node1{"Bond processing encounters an error
condition"}:::decision N_ReturnErrorStatus_Node1_action["Error status is returned to calling
process"]:::exclusion N_ReturnErrorStatus_Node1 -- Yes -->|Alternative| N_ReturnErrorStatus_Node1_action N_ReturnErrorStatus_Node1_action --> E_ReturnErrorStatus N_ReturnErrorStatus_Node0 -- No --> N_ReturnErrorStatus_Node1 N_ReturnErrorStatus_Node2{"The system cannot proceed with
Julian conversion"}:::decision N_ReturnErrorStatus_Node2_action["An error status is returned
indicating the date conversion
failure"]:::main N_ReturnErrorStatus_Node2 -- Yes --> N_ReturnErrorStatus_Node2_action N_ReturnErrorStatus_Node2_action --> E_ReturnErrorStatus N_ReturnErrorStatus_Node1 -- No --> N_ReturnErrorStatus_Node2 N_ReturnErrorStatus_Node3{"The system returns error status"}:::decision N_ReturnErrorStatus_Node3_action["Error status is returned to calling
process indicating failed
transmission root segment creation
with error details"]:::exclusion N_ReturnErrorStatus_Node3 -- Yes -->|Alternative| N_ReturnErrorStatus_Node3_action N_ReturnErrorStatus_Node3_action --> E_ReturnErrorStatus N_ReturnErrorStatus_Node2 -- No --> N_ReturnErrorStatus_Node3 N_ReturnErrorStatus_Node4{"The system cannot create valid
transmission root segment"}:::decision N_ReturnErrorStatus_Node4_action["Error status is returned to the
calling process indicating
transmission creation failure"]:::main N_ReturnErrorStatus_Node4 -- Yes --> N_ReturnErrorStatus_Node4_action N_ReturnErrorStatus_Node4_action --> E_ReturnErrorStatus N_ReturnErrorStatus_Node3 -- No --> N_ReturnErrorStatus_Node4 N_ReturnErrorStatus_Node5{"The system needs to respond to the
original processing request"}:::decision N_ReturnErrorStatus_Node5_action["An error status is returned
indicating the processing could not
be completed due to capacity
constraints"]:::main N_ReturnErrorStatus_Node5 -- Yes --> N_ReturnErrorStatus_Node5_action N_ReturnErrorStatus_Node5_action --> E_ReturnErrorStatus N_ReturnErrorStatus_Node4 -- No --> N_ReturnErrorStatus_Node5 N_ReturnErrorStatus_Node6{"error status is returned"}:::decision N_ReturnErrorStatus_Node6_action["error status is returned to
indicate failure in root segment
creation process"]:::exclusion N_ReturnErrorStatus_Node6 -- Yes -->|Alternative| N_ReturnErrorStatus_Node6_action N_ReturnErrorStatus_Node6_action --> E_ReturnErrorStatus N_ReturnErrorStatus_Node5 -- No --> N_ReturnErrorStatus_Node6 N_ReturnErrorStatus_Node6 -- No --> E_ReturnErrorStatus
File: GCX016.cbl
GIVEN:
An error status has been set
WHEN:
The lookup operation concludes with failure
THEN:
An error status is returned to the calling process
File: GCX016.cbl
GIVEN:
Bond number is invalid or no cargo records found for valid bond
WHEN:
Bond processing encounters an error condition
THEN:
Error status is returned to calling process
File: GCX016.cbl
GIVEN:
An invalid date format has been detected during validation
WHEN:
The system cannot proceed with Julian conversion
THEN:
An error status is returned indicating the date conversion failure
File: GCX016.cbl
GIVEN:
Error information is logged
WHEN:
The system returns error status
THEN:
Error status is returned to calling process indicating failed transmission root segment creation with error details
File: GCX016.cbl
GIVEN:
Validation errors are logged
WHEN:
The system cannot create valid transmission root segment
THEN:
Error status is returned to the calling process indicating transmission creation failure
File: GCX016.cbl
GIVEN:
An array overflow warning has been logged
WHEN:
The system needs to respond to the original processing request
THEN:
An error status is returned indicating the processing could not be completed due to capacity constraints
File: GCX016.cbl
GIVEN:
error details are logged
WHEN:
error status is returned
THEN:
error status is returned to indicate failure in root segment creation process
β Consolidated Acceptance Criteria
- The system processes the not found condition → the not found flag is set to indicate the disposition code does not exist
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetNotFoundFlag(["Start Step"])
E_SetNotFoundFlag(["End Step"])
N_SetNotFoundFlag_Node0{"The system processes the not found
condition"}:::decision N_SetNotFoundFlag_Node0_action["The not found flag is set to
indicate the disposition code does
not exist"]:::main N_SetNotFoundFlag_Node0 -- Yes --> N_SetNotFoundFlag_Node0_action N_SetNotFoundFlag_Node0_action --> E_SetNotFoundFlag S_SetNotFoundFlag --> N_SetNotFoundFlag_Node0 N_SetNotFoundFlag_Node0 -- No --> E_SetNotFoundFlag
condition"}:::decision N_SetNotFoundFlag_Node0_action["The not found flag is set to
indicate the disposition code does
not exist"]:::main N_SetNotFoundFlag_Node0 -- Yes --> N_SetNotFoundFlag_Node0_action N_SetNotFoundFlag_Node0_action --> E_SetNotFoundFlag S_SetNotFoundFlag --> N_SetNotFoundFlag_Node0 N_SetNotFoundFlag_Node0 -- No --> E_SetNotFoundFlag
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
A successful database operation completed but no record was found
WHEN:
The system processes the not found condition
THEN:
The not found flag is set to indicate the disposition code does not exist
β Consolidated Acceptance Criteria
- The lookup operation concludes with no record found → a not found status is returned to the calling process
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ReturnNotFoundStatus(["Start Step"])
E_ReturnNotFoundStatus(["End Step"])
N_ReturnNotFoundStatus_Node0{"The lookup operation concludes with
no record found"}:::decision N_ReturnNotFoundStatus_Node0_action["A not found status is returned to
the calling process"]:::main N_ReturnNotFoundStatus_Node0 -- Yes --> N_ReturnNotFoundStatus_Node0_action N_ReturnNotFoundStatus_Node0_action --> E_ReturnNotFoundStatus S_ReturnNotFoundStatus --> N_ReturnNotFoundStatus_Node0 N_ReturnNotFoundStatus_Node0 -- No --> E_ReturnNotFoundStatus
no record found"}:::decision N_ReturnNotFoundStatus_Node0_action["A not found status is returned to
the calling process"]:::main N_ReturnNotFoundStatus_Node0 -- Yes --> N_ReturnNotFoundStatus_Node0_action N_ReturnNotFoundStatus_Node0_action --> E_ReturnNotFoundStatus S_ReturnNotFoundStatus --> N_ReturnNotFoundStatus_Node0 N_ReturnNotFoundStatus_Node0 -- No --> E_ReturnNotFoundStatus
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
The not found flag has been set
WHEN:
The lookup operation concludes with no record found
THEN:
A not found status is returned to the calling process
β Consolidated Acceptance Criteria
- The system needs to find counterpart codes for removal → the system looks up the counterpart code from the DC table and sets the counterpart code found flag
- The system needs to find counterpart codes for removal → the counterpart disposition code is retrieved from the DC table lookup
- The system needs to identify counterpart codes for removal → the counterpart disposition code is retrieved from the DC table lookup
- The system looks up the counterpart code in the DC table → if counterpart code exists in DC table, proceed with counterpart processing, otherwise skip counterpart removal
- The system looks up the disposition code in the DC table → the counterpart code is retrieved from the DC table if it exists
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GetCounterpartCodefromDCTable(["Start Step"])
E_GetCounterpartCodefromDCTable(["End Step"])
N_GetCounterpartCodefromDCTable_Node0{"The system needs to find
counterpart codes for removal"}:::decision N_GetCounterpartCodefromDCTable_Node0_action["The system looks up the counterpart
code from the DC table and sets the
counterpart code found flag"]:::main N_GetCounterpartCodefromDCTable_Node0 -- Yes --> N_GetCounterpartCodefromDCTable_Node0_action N_GetCounterpartCodefromDCTable_Node0_action --> E_GetCounterpartCodefromDCTable S_GetCounterpartCodefromDCTable --> N_GetCounterpartCodefromDCTable_Node0 N_GetCounterpartCodefromDCTable_Node1{"The system needs to find
counterpart codes for removal"}:::decision N_GetCounterpartCodefromDCTable_Node1_action["The counterpart disposition code is
retrieved from the DC table lookup"]:::main N_GetCounterpartCodefromDCTable_Node1 -- Yes --> N_GetCounterpartCodefromDCTable_Node1_action N_GetCounterpartCodefromDCTable_Node1_action --> E_GetCounterpartCodefromDCTable N_GetCounterpartCodefromDCTable_Node0 -- No --> N_GetCounterpartCodefromDCTable_Node1 N_GetCounterpartCodefromDCTable_Node2{"The system needs to identify
counterpart codes for removal"}:::decision N_GetCounterpartCodefromDCTable_Node2_action["The counterpart disposition code is
retrieved from the DC table lookup"]:::main N_GetCounterpartCodefromDCTable_Node2 -- Yes --> N_GetCounterpartCodefromDCTable_Node2_action N_GetCounterpartCodefromDCTable_Node2_action --> E_GetCounterpartCodefromDCTable N_GetCounterpartCodefromDCTable_Node1 -- No --> N_GetCounterpartCodefromDCTable_Node2 N_GetCounterpartCodefromDCTable_Node3{"The system looks up the counterpart
code in the DC table"}:::decision N_GetCounterpartCodefromDCTable_Node3_action["If counterpart code exists in DC
table, proceed with counterpart
processing, otherwise skip
counterpart removal"]:::main N_GetCounterpartCodefromDCTable_Node3 -- Yes --> N_GetCounterpartCodefromDCTable_Node3_action N_GetCounterpartCodefromDCTable_Node3_action --> E_GetCounterpartCodefromDCTable N_GetCounterpartCodefromDCTable_Node2 -- No --> N_GetCounterpartCodefromDCTable_Node3 N_GetCounterpartCodefromDCTable_Node4{"The system looks up the disposition
code in the DC table"}:::decision N_GetCounterpartCodefromDCTable_Node4_action["The counterpart code is retrieved
from the DC table if it exists"]:::main N_GetCounterpartCodefromDCTable_Node4 -- Yes --> N_GetCounterpartCodefromDCTable_Node4_action N_GetCounterpartCodefromDCTable_Node4_action --> E_GetCounterpartCodefromDCTable N_GetCounterpartCodefromDCTable_Node3 -- No --> N_GetCounterpartCodefromDCTable_Node4 N_GetCounterpartCodefromDCTable_Node4 -- No --> E_GetCounterpartCodefromDCTable
counterpart codes for removal"}:::decision N_GetCounterpartCodefromDCTable_Node0_action["The system looks up the counterpart
code from the DC table and sets the
counterpart code found flag"]:::main N_GetCounterpartCodefromDCTable_Node0 -- Yes --> N_GetCounterpartCodefromDCTable_Node0_action N_GetCounterpartCodefromDCTable_Node0_action --> E_GetCounterpartCodefromDCTable S_GetCounterpartCodefromDCTable --> N_GetCounterpartCodefromDCTable_Node0 N_GetCounterpartCodefromDCTable_Node1{"The system needs to find
counterpart codes for removal"}:::decision N_GetCounterpartCodefromDCTable_Node1_action["The counterpart disposition code is
retrieved from the DC table lookup"]:::main N_GetCounterpartCodefromDCTable_Node1 -- Yes --> N_GetCounterpartCodefromDCTable_Node1_action N_GetCounterpartCodefromDCTable_Node1_action --> E_GetCounterpartCodefromDCTable N_GetCounterpartCodefromDCTable_Node0 -- No --> N_GetCounterpartCodefromDCTable_Node1 N_GetCounterpartCodefromDCTable_Node2{"The system needs to identify
counterpart codes for removal"}:::decision N_GetCounterpartCodefromDCTable_Node2_action["The counterpart disposition code is
retrieved from the DC table lookup"]:::main N_GetCounterpartCodefromDCTable_Node2 -- Yes --> N_GetCounterpartCodefromDCTable_Node2_action N_GetCounterpartCodefromDCTable_Node2_action --> E_GetCounterpartCodefromDCTable N_GetCounterpartCodefromDCTable_Node1 -- No --> N_GetCounterpartCodefromDCTable_Node2 N_GetCounterpartCodefromDCTable_Node3{"The system looks up the counterpart
code in the DC table"}:::decision N_GetCounterpartCodefromDCTable_Node3_action["If counterpart code exists in DC
table, proceed with counterpart
processing, otherwise skip
counterpart removal"]:::main N_GetCounterpartCodefromDCTable_Node3 -- Yes --> N_GetCounterpartCodefromDCTable_Node3_action N_GetCounterpartCodefromDCTable_Node3_action --> E_GetCounterpartCodefromDCTable N_GetCounterpartCodefromDCTable_Node2 -- No --> N_GetCounterpartCodefromDCTable_Node3 N_GetCounterpartCodefromDCTable_Node4{"The system looks up the disposition
code in the DC table"}:::decision N_GetCounterpartCodefromDCTable_Node4_action["The counterpart code is retrieved
from the DC table if it exists"]:::main N_GetCounterpartCodefromDCTable_Node4 -- Yes --> N_GetCounterpartCodefromDCTable_Node4_action N_GetCounterpartCodefromDCTable_Node4_action --> E_GetCounterpartCodefromDCTable N_GetCounterpartCodefromDCTable_Node3 -- No --> N_GetCounterpartCodefromDCTable_Node4 N_GetCounterpartCodefromDCTable_Node4 -- No --> E_GetCounterpartCodefromDCTable
File: GCX016.cbl
GIVEN:
A disposition code exists in the current processing context
WHEN:
The system needs to find counterpart codes for removal
THEN:
- The system looks up the counterpart code from the dc table
- Sets the counterpart code found flag
File: GCX016.cbl
GIVEN:
A disposition code exists in the current processing context
WHEN:
The system needs to find counterpart codes for removal
THEN:
The counterpart disposition code is retrieved from the DC table lookup
File: GCX016.cbl
GIVEN:
A disposition code exists in the current processing context
WHEN:
The system needs to identify counterpart codes for removal
THEN:
The counterpart disposition code is retrieved from the DC table lookup
File: GCX016.cbl
GIVEN:
A disposition code is being processed for counterpart removal
WHEN:
The system looks up the counterpart code in the DC table
THEN:
If counterpart code exists in DC table, proceed with counterpart processing, otherwise skip counterpart removal
File: GCX016.cbl
GIVEN:
A disposition code is being processed
WHEN:
The system looks up the disposition code in the DC table
THEN:
The counterpart code is retrieved from the DC table if it exists
β Consolidated Acceptance Criteria
- The system checks if a counterpart code was found → if counterpart code exists, proceed with status array search; otherwise, skip counterpart removal processing
- If the lookup result → if no counterpart code exists, skip counterpart removal processing, otherwise proceed with status array search
- If whether counterpart processing is required → if counterpart code exists, proceed with array search; otherwise skip counterpart processing
- The system checks if a counterpart code was found → processing continues with counterpart removal if code exists, otherwise no counterpart processing is performed
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CounterpartCodeExists(["Start Step"])
E_CounterpartCodeExists(["End Step"])
N_CounterpartCodeExists_Node0{"The system checks if a counterpart
code was found"}:::decision N_CounterpartCodeExists_Node0_action["If counterpart code exists, proceed
with status array search otherwise,
skip counterpart removal processing"]:::main N_CounterpartCodeExists_Node0 -- Yes --> N_CounterpartCodeExists_Node0_action N_CounterpartCodeExists_Node0_action --> E_CounterpartCodeExists S_CounterpartCodeExists --> N_CounterpartCodeExists_Node0 N_CounterpartCodeExists_Node1{"The system evaluates the lookup
result"}:::decision N_CounterpartCodeExists_Node1_action["If no counterpart code exists, skip
counterpart removal processing,
otherwise proceed with status array
search"]:::main N_CounterpartCodeExists_Node1 -- Yes --> N_CounterpartCodeExists_Node1_action N_CounterpartCodeExists_Node1_action --> E_CounterpartCodeExists N_CounterpartCodeExists_Node0 -- No --> N_CounterpartCodeExists_Node1 N_CounterpartCodeExists_Node2{"The system evaluates whether
counterpart processing is required"}:::decision N_CounterpartCodeExists_Node2_action["If counterpart code exists, proceed
with array search otherwise skip
counterpart processing"]:::main N_CounterpartCodeExists_Node2 -- Yes --> N_CounterpartCodeExists_Node2_action N_CounterpartCodeExists_Node2_action --> E_CounterpartCodeExists N_CounterpartCodeExists_Node1 -- No --> N_CounterpartCodeExists_Node2 N_CounterpartCodeExists_Node3{"The system checks if a counterpart
code was found"}:::decision N_CounterpartCodeExists_Node3_action["Processing continues with
counterpart removal if code exists,
otherwise no counterpart processing
is performed"]:::main N_CounterpartCodeExists_Node3 -- Yes --> N_CounterpartCodeExists_Node3_action N_CounterpartCodeExists_Node3_action --> E_CounterpartCodeExists N_CounterpartCodeExists_Node2 -- No --> N_CounterpartCodeExists_Node3 N_CounterpartCodeExists_Node3 -- No --> E_CounterpartCodeExists
code was found"}:::decision N_CounterpartCodeExists_Node0_action["If counterpart code exists, proceed
with status array search otherwise,
skip counterpart removal processing"]:::main N_CounterpartCodeExists_Node0 -- Yes --> N_CounterpartCodeExists_Node0_action N_CounterpartCodeExists_Node0_action --> E_CounterpartCodeExists S_CounterpartCodeExists --> N_CounterpartCodeExists_Node0 N_CounterpartCodeExists_Node1{"The system evaluates the lookup
result"}:::decision N_CounterpartCodeExists_Node1_action["If no counterpart code exists, skip
counterpart removal processing,
otherwise proceed with status array
search"]:::main N_CounterpartCodeExists_Node1 -- Yes --> N_CounterpartCodeExists_Node1_action N_CounterpartCodeExists_Node1_action --> E_CounterpartCodeExists N_CounterpartCodeExists_Node0 -- No --> N_CounterpartCodeExists_Node1 N_CounterpartCodeExists_Node2{"The system evaluates whether
counterpart processing is required"}:::decision N_CounterpartCodeExists_Node2_action["If counterpart code exists, proceed
with array search otherwise skip
counterpart processing"]:::main N_CounterpartCodeExists_Node2 -- Yes --> N_CounterpartCodeExists_Node2_action N_CounterpartCodeExists_Node2_action --> E_CounterpartCodeExists N_CounterpartCodeExists_Node1 -- No --> N_CounterpartCodeExists_Node2 N_CounterpartCodeExists_Node3{"The system checks if a counterpart
code was found"}:::decision N_CounterpartCodeExists_Node3_action["Processing continues with
counterpart removal if code exists,
otherwise no counterpart processing
is performed"]:::main N_CounterpartCodeExists_Node3 -- Yes --> N_CounterpartCodeExists_Node3_action N_CounterpartCodeExists_Node3_action --> E_CounterpartCodeExists N_CounterpartCodeExists_Node2 -- No --> N_CounterpartCodeExists_Node3 N_CounterpartCodeExists_Node3 -- No --> E_CounterpartCodeExists
File: GCX016.cbl
GIVEN:
The DC table lookup has been performed for counterpart codes
WHEN:
The system checks if a counterpart code was found
THEN:
If counterpart code exists, proceed with status array search; otherwise, skip counterpart removal processing
File: GCX016.cbl
GIVEN:
A DC table lookup has been performed for counterpart codes
WHEN:
The system evaluates the lookup result
THEN:
If no counterpart code exists, skip counterpart removal processing, otherwise proceed with status array search
File: GCX016.cbl
GIVEN:
A counterpart code lookup has been performed from the DC table
WHEN:
The system evaluates whether counterpart processing is required
THEN:
If counterpart code exists, proceed with array search; otherwise skip counterpart processing
File: GCX016.cbl
GIVEN:
A counterpart code lookup has been performed
WHEN:
The system checks if a counterpart code was found
THEN:
Processing continues with counterpart removal if code exists, otherwise no counterpart processing is performed
β Consolidated Acceptance Criteria
- The system searches for matching counterpart codes in the status array → the system iterates through all status array elements to find codes matching the counterpart code
- The system searches the status array for matching codes → all status array elements are examined for potential counterpart code matches
- The system searches for matching counterpart codes in the array → each array element is evaluated against the counterpart code criteria
- The system searches the status array for matching disposition codes → if matching codes are found in the status array, proceed with match validation, otherwise no action is required
- The system iterates through each element in the status array → each status array element is evaluated against the counterpart code for potential matching
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SearchStatusArrayforMatchingCodes(["Start Step"])
E_SearchStatusArrayforMatchingCodes(["End Step"])
N_SearchStatusArrayforMatchingCodes_Node0{"The system searches for matching
counterpart codes in the status
array"}:::decision N_SearchStatusArrayforMatchingCodes_Node0_action["The system iterates through all
status array elements to find codes
matching the counterpart code"]:::main N_SearchStatusArrayforMatchingCodes_Node0 -- Yes --> N_SearchStatusArrayforMatchingCodes_Node0_action N_SearchStatusArrayforMatchingCodes_Node0_action --> E_SearchStatusArrayforMatchingCodes S_SearchStatusArrayforMatchingCodes --> N_SearchStatusArrayforMatchingCodes_Node0 N_SearchStatusArrayforMatchingCodes_Node1{"The system searches the status
array for matching codes"}:::decision N_SearchStatusArrayforMatchingCodes_Node1_action["All status array elements are
examined for potential counterpart
code matches"]:::main N_SearchStatusArrayforMatchingCodes_Node1 -- Yes --> N_SearchStatusArrayforMatchingCodes_Node1_action N_SearchStatusArrayforMatchingCodes_Node1_action --> E_SearchStatusArrayforMatchingCodes N_SearchStatusArrayforMatchingCodes_Node0 -- No --> N_SearchStatusArrayforMatchingCodes_Node1 N_SearchStatusArrayforMatchingCodes_Node2{"The system searches for matching
counterpart codes in the array"}:::decision N_SearchStatusArrayforMatchingCodes_Node2_action["Each array element is evaluated
against the counterpart code
criteria"]:::main N_SearchStatusArrayforMatchingCodes_Node2 -- Yes --> N_SearchStatusArrayforMatchingCodes_Node2_action N_SearchStatusArrayforMatchingCodes_Node2_action --> E_SearchStatusArrayforMatchingCodes N_SearchStatusArrayforMatchingCodes_Node1 -- No --> N_SearchStatusArrayforMatchingCodes_Node2 N_SearchStatusArrayforMatchingCodes_Node3{"The system searches the status
array for matching disposition codes"}:::decision N_SearchStatusArrayforMatchingCodes_Node3_action["If matching codes are found in the
status array, proceed with match
validation, otherwise no action is
required"]:::main N_SearchStatusArrayforMatchingCodes_Node3 -- Yes --> N_SearchStatusArrayforMatchingCodes_Node3_action N_SearchStatusArrayforMatchingCodes_Node3_action --> E_SearchStatusArrayforMatchingCodes N_SearchStatusArrayforMatchingCodes_Node2 -- No --> N_SearchStatusArrayforMatchingCodes_Node3 N_SearchStatusArrayforMatchingCodes_Node4{"The system iterates through each
element in the status array"}:::decision N_SearchStatusArrayforMatchingCodes_Node4_action["Each status array element is
evaluated against the counterpart
code for potential matching"]:::main N_SearchStatusArrayforMatchingCodes_Node4 -- Yes --> N_SearchStatusArrayforMatchingCodes_Node4_action N_SearchStatusArrayforMatchingCodes_Node4_action --> E_SearchStatusArrayforMatchingCodes N_SearchStatusArrayforMatchingCodes_Node3 -- No --> N_SearchStatusArrayforMatchingCodes_Node4 N_SearchStatusArrayforMatchingCodes_Node4 -- No --> E_SearchStatusArrayforMatchingCodes
counterpart codes in the status
array"}:::decision N_SearchStatusArrayforMatchingCodes_Node0_action["The system iterates through all
status array elements to find codes
matching the counterpart code"]:::main N_SearchStatusArrayforMatchingCodes_Node0 -- Yes --> N_SearchStatusArrayforMatchingCodes_Node0_action N_SearchStatusArrayforMatchingCodes_Node0_action --> E_SearchStatusArrayforMatchingCodes S_SearchStatusArrayforMatchingCodes --> N_SearchStatusArrayforMatchingCodes_Node0 N_SearchStatusArrayforMatchingCodes_Node1{"The system searches the status
array for matching codes"}:::decision N_SearchStatusArrayforMatchingCodes_Node1_action["All status array elements are
examined for potential counterpart
code matches"]:::main N_SearchStatusArrayforMatchingCodes_Node1 -- Yes --> N_SearchStatusArrayforMatchingCodes_Node1_action N_SearchStatusArrayforMatchingCodes_Node1_action --> E_SearchStatusArrayforMatchingCodes N_SearchStatusArrayforMatchingCodes_Node0 -- No --> N_SearchStatusArrayforMatchingCodes_Node1 N_SearchStatusArrayforMatchingCodes_Node2{"The system searches for matching
counterpart codes in the array"}:::decision N_SearchStatusArrayforMatchingCodes_Node2_action["Each array element is evaluated
against the counterpart code
criteria"]:::main N_SearchStatusArrayforMatchingCodes_Node2 -- Yes --> N_SearchStatusArrayforMatchingCodes_Node2_action N_SearchStatusArrayforMatchingCodes_Node2_action --> E_SearchStatusArrayforMatchingCodes N_SearchStatusArrayforMatchingCodes_Node1 -- No --> N_SearchStatusArrayforMatchingCodes_Node2 N_SearchStatusArrayforMatchingCodes_Node3{"The system searches the status
array for matching disposition codes"}:::decision N_SearchStatusArrayforMatchingCodes_Node3_action["If matching codes are found in the
status array, proceed with match
validation, otherwise no action is
required"]:::main N_SearchStatusArrayforMatchingCodes_Node3 -- Yes --> N_SearchStatusArrayforMatchingCodes_Node3_action N_SearchStatusArrayforMatchingCodes_Node3_action --> E_SearchStatusArrayforMatchingCodes N_SearchStatusArrayforMatchingCodes_Node2 -- No --> N_SearchStatusArrayforMatchingCodes_Node3 N_SearchStatusArrayforMatchingCodes_Node4{"The system iterates through each
element in the status array"}:::decision N_SearchStatusArrayforMatchingCodes_Node4_action["Each status array element is
evaluated against the counterpart
code for potential matching"]:::main N_SearchStatusArrayforMatchingCodes_Node4 -- Yes --> N_SearchStatusArrayforMatchingCodes_Node4_action N_SearchStatusArrayforMatchingCodes_Node4_action --> E_SearchStatusArrayforMatchingCodes N_SearchStatusArrayforMatchingCodes_Node3 -- No --> N_SearchStatusArrayforMatchingCodes_Node4 N_SearchStatusArrayforMatchingCodes_Node4 -- No --> E_SearchStatusArrayforMatchingCodes
File: GCX016.cbl
GIVEN:
A counterpart disposition code exists and status array contains disposition codes
WHEN:
The system searches for matching counterpart codes in the status array
THEN:
The system iterates through all status array elements to find codes matching the counterpart code
File: GCX016.cbl
GIVEN:
A valid counterpart disposition code exists from the DC table
WHEN:
The system searches the status array for matching codes
THEN:
All status array elements are examined for potential counterpart code matches
File: GCX016.cbl
GIVEN:
A valid counterpart code exists and status array contains disposition codes
WHEN:
The system searches for matching counterpart codes in the array
THEN:
Each array element is evaluated against the counterpart code criteria
File: GCX016.cbl
GIVEN:
A valid counterpart code exists from the DC table
WHEN:
The system searches the status array for matching disposition codes
THEN:
If matching codes are found in the status array, proceed with match validation, otherwise no action is required
File: GCX016.cbl
GIVEN:
A counterpart code exists and status array contains disposition codes
WHEN:
The system iterates through each element in the status array
THEN:
Each status array element is evaluated against the counterpart code for potential matching
β Consolidated Acceptance Criteria
- A status array element's disposition code is compared to the counterpart code → if codes match, proceed with additional matching criteria validation; otherwise, continue to next array element
- The system compares the array element disposition code with the counterpart code → if codes match, proceed with detailed matching criteria validation; otherwise continue to next element
- The system compares the element against the counterpart matching rules → if a match is found, proceed with detailed matching criteria validation, otherwise continue searching remaining elements
- The system compares the disposition codes → a match is identified if the codes are identical, triggering further matching criteria validation
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MatchFound(["Start Step"])
E_MatchFound(["End Step"])
N_MatchFound_Node0{"A status array element s
disposition code is compared to the
counterpart code"}:::decision N_MatchFound_Node0_action["If codes match, proceed with
additional matching criteria
validation otherwise, continue to
next array element"]:::main N_MatchFound_Node0 -- Yes --> N_MatchFound_Node0_action N_MatchFound_Node0_action --> E_MatchFound S_MatchFound --> N_MatchFound_Node0 N_MatchFound_Node1{"The system compares the array
element disposition code with the
counterpart code"}:::decision N_MatchFound_Node1_action["If codes match, proceed with
detailed matching criteria
validation otherwise continue to
next element"]:::main N_MatchFound_Node1 -- Yes --> N_MatchFound_Node1_action N_MatchFound_Node1_action --> E_MatchFound N_MatchFound_Node0 -- No --> N_MatchFound_Node1 N_MatchFound_Node2{"The system compares the element
against the counterpart matching
rules"}:::decision N_MatchFound_Node2_action["If a match is found, proceed with
detailed matching criteria
validation, otherwise continue
searching remaining elements"]:::main N_MatchFound_Node2 -- Yes --> N_MatchFound_Node2_action N_MatchFound_Node2_action --> E_MatchFound N_MatchFound_Node1 -- No --> N_MatchFound_Node2 N_MatchFound_Node3{"The system compares the disposition
codes"}:::decision N_MatchFound_Node3_action["A match is identified if the codes
are identical, triggering further
matching criteria validation"]:::main N_MatchFound_Node3 -- Yes --> N_MatchFound_Node3_action N_MatchFound_Node3_action --> E_MatchFound N_MatchFound_Node2 -- No --> N_MatchFound_Node3 N_MatchFound_Node3 -- No --> E_MatchFound
disposition code is compared to the
counterpart code"}:::decision N_MatchFound_Node0_action["If codes match, proceed with
additional matching criteria
validation otherwise, continue to
next array element"]:::main N_MatchFound_Node0 -- Yes --> N_MatchFound_Node0_action N_MatchFound_Node0_action --> E_MatchFound S_MatchFound --> N_MatchFound_Node0 N_MatchFound_Node1{"The system compares the array
element disposition code with the
counterpart code"}:::decision N_MatchFound_Node1_action["If codes match, proceed with
detailed matching criteria
validation otherwise continue to
next element"]:::main N_MatchFound_Node1 -- Yes --> N_MatchFound_Node1_action N_MatchFound_Node1_action --> E_MatchFound N_MatchFound_Node0 -- No --> N_MatchFound_Node1 N_MatchFound_Node2{"The system compares the element
against the counterpart matching
rules"}:::decision N_MatchFound_Node2_action["If a match is found, proceed with
detailed matching criteria
validation, otherwise continue
searching remaining elements"]:::main N_MatchFound_Node2 -- Yes --> N_MatchFound_Node2_action N_MatchFound_Node2_action --> E_MatchFound N_MatchFound_Node1 -- No --> N_MatchFound_Node2 N_MatchFound_Node3{"The system compares the disposition
codes"}:::decision N_MatchFound_Node3_action["A match is identified if the codes
are identical, triggering further
matching criteria validation"]:::main N_MatchFound_Node3 -- Yes --> N_MatchFound_Node3_action N_MatchFound_Node3_action --> E_MatchFound N_MatchFound_Node2 -- No --> N_MatchFound_Node3 N_MatchFound_Node3 -- No --> E_MatchFound
File: GCX016.cbl
GIVEN:
The system is searching through status array elements for counterpart codes
WHEN:
A status array element's disposition code is compared to the counterpart code
THEN:
If codes match, proceed with additional matching criteria validation; otherwise, continue to next array element
File: GCX016.cbl
GIVEN:
An array element is being evaluated against counterpart code criteria
WHEN:
The system compares the array element disposition code with the counterpart code
THEN:
If codes match, proceed with detailed matching criteria validation; otherwise continue to next element
File: GCX016.cbl
GIVEN:
A status array element is being evaluated against counterpart code criteria
WHEN:
The system compares the element against the counterpart matching rules
THEN:
If a match is found, proceed with detailed matching criteria validation, otherwise continue searching remaining elements
File: GCX016.cbl
GIVEN:
A status array element is being evaluated against a counterpart code
WHEN:
The system compares the disposition codes
THEN:
A match is identified if the codes are identical, triggering further matching criteria validation
β Consolidated Acceptance Criteria
- The system validates status information compatibility → the system compares status info fields and proceeds only if they match the removal criteria
- The system compares status info between current disposition and counterpart code → if status info matches, remove the counterpart code from array, otherwise continue searching for more matches
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CheckStatusInfoMatch(["Start Step"])
E_CheckStatusInfoMatch(["End Step"])
N_CheckStatusInfoMatch_Node0{"The system validates status
information compatibility"}:::decision N_CheckStatusInfoMatch_Node0_action["The system compares status info
fields and proceeds only if they
match the removal criteria"]:::main N_CheckStatusInfoMatch_Node0 -- Yes --> N_CheckStatusInfoMatch_Node0_action N_CheckStatusInfoMatch_Node0_action --> E_CheckStatusInfoMatch S_CheckStatusInfoMatch --> N_CheckStatusInfoMatch_Node0 N_CheckStatusInfoMatch_Node1{"The system compares status info
between current disposition and
counterpart code"}:::decision N_CheckStatusInfoMatch_Node1_action["If status info matches, remove the
counterpart code from array,
otherwise continue searching for
more matches"]:::main N_CheckStatusInfoMatch_Node1 -- Yes --> N_CheckStatusInfoMatch_Node1_action N_CheckStatusInfoMatch_Node1_action --> E_CheckStatusInfoMatch N_CheckStatusInfoMatch_Node0 -- No --> N_CheckStatusInfoMatch_Node1 N_CheckStatusInfoMatch_Node1 -- No --> E_CheckStatusInfoMatch
information compatibility"}:::decision N_CheckStatusInfoMatch_Node0_action["The system compares status info
fields and proceeds only if they
match the removal criteria"]:::main N_CheckStatusInfoMatch_Node0 -- Yes --> N_CheckStatusInfoMatch_Node0_action N_CheckStatusInfoMatch_Node0_action --> E_CheckStatusInfoMatch S_CheckStatusInfoMatch --> N_CheckStatusInfoMatch_Node0 N_CheckStatusInfoMatch_Node1{"The system compares status info
between current disposition and
counterpart code"}:::decision N_CheckStatusInfoMatch_Node1_action["If status info matches, remove the
counterpart code from array,
otherwise continue searching for
more matches"]:::main N_CheckStatusInfoMatch_Node1 -- Yes --> N_CheckStatusInfoMatch_Node1_action N_CheckStatusInfoMatch_Node1_action --> E_CheckStatusInfoMatch N_CheckStatusInfoMatch_Node0 -- No --> N_CheckStatusInfoMatch_Node1 N_CheckStatusInfoMatch_Node1 -- No --> E_CheckStatusInfoMatch
File: GCX016.cbl
GIVEN:
A matching counterpart disposition code is found in the status array
WHEN:
The system validates status information compatibility
THEN:
- The system compares status info fields
- Proceeds only if they match the removal criteria
File: GCX016.cbl
GIVEN:
Either entry numbers don't match or quantities don't match between current disposition and counterpart code
WHEN:
- The system compares status info between current disposition
- Counterpart code
THEN:
If status info matches, remove the counterpart code from array, otherwise continue searching for more matches
β Consolidated Acceptance Criteria
- The system checks entry number compatibility → the system compares entry numbers and proceeds only if they match or meet the removal criteria
- The system compares the entry number values after disposition code match is confirmed → iF the entry numbers match THEN proceed to check quantity match ELSE continue searching for duplicates in remaining array elements
- The system compares entry numbers between current disposition and counterpart code → if entry numbers match, proceed to quantity validation, otherwise check status info match
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CheckEntryNumberMatch(["Start Step"])
E_CheckEntryNumberMatch(["End Step"])
N_CheckEntryNumberMatch_Node0{"The system checks entry number
compatibility"}:::decision N_CheckEntryNumberMatch_Node0_action["The system compares entry numbers
and proceeds only if they match or
meet the removal criteria"]:::main N_CheckEntryNumberMatch_Node0 -- Yes --> N_CheckEntryNumberMatch_Node0_action N_CheckEntryNumberMatch_Node0_action --> E_CheckEntryNumberMatch S_CheckEntryNumberMatch --> N_CheckEntryNumberMatch_Node0 N_CheckEntryNumberMatch_Node1{"The system compares the entry
number values after disposition code
match is confirmed"}:::decision N_CheckEntryNumberMatch_Node1_action["IF the entry numbers match THEN
proceed to check quantity match ELSE
continue searching for duplicates in
remaining array elements"]:::main N_CheckEntryNumberMatch_Node1 -- Yes --> N_CheckEntryNumberMatch_Node1_action N_CheckEntryNumberMatch_Node1_action --> E_CheckEntryNumberMatch N_CheckEntryNumberMatch_Node0 -- No --> N_CheckEntryNumberMatch_Node1 N_CheckEntryNumberMatch_Node2{"The system compares entry numbers
between current disposition and
counterpart code"}:::decision N_CheckEntryNumberMatch_Node2_action["If entry numbers match, proceed to
quantity validation, otherwise check
status info match"]:::main N_CheckEntryNumberMatch_Node2 -- Yes --> N_CheckEntryNumberMatch_Node2_action N_CheckEntryNumberMatch_Node2_action --> E_CheckEntryNumberMatch N_CheckEntryNumberMatch_Node1 -- No --> N_CheckEntryNumberMatch_Node2 N_CheckEntryNumberMatch_Node2 -- No --> E_CheckEntryNumberMatch
compatibility"}:::decision N_CheckEntryNumberMatch_Node0_action["The system compares entry numbers
and proceeds only if they match or
meet the removal criteria"]:::main N_CheckEntryNumberMatch_Node0 -- Yes --> N_CheckEntryNumberMatch_Node0_action N_CheckEntryNumberMatch_Node0_action --> E_CheckEntryNumberMatch S_CheckEntryNumberMatch --> N_CheckEntryNumberMatch_Node0 N_CheckEntryNumberMatch_Node1{"The system compares the entry
number values after disposition code
match is confirmed"}:::decision N_CheckEntryNumberMatch_Node1_action["IF the entry numbers match THEN
proceed to check quantity match ELSE
continue searching for duplicates in
remaining array elements"]:::main N_CheckEntryNumberMatch_Node1 -- Yes --> N_CheckEntryNumberMatch_Node1_action N_CheckEntryNumberMatch_Node1_action --> E_CheckEntryNumberMatch N_CheckEntryNumberMatch_Node0 -- No --> N_CheckEntryNumberMatch_Node1 N_CheckEntryNumberMatch_Node2{"The system compares entry numbers
between current disposition and
counterpart code"}:::decision N_CheckEntryNumberMatch_Node2_action["If entry numbers match, proceed to
quantity validation, otherwise check
status info match"]:::main N_CheckEntryNumberMatch_Node2 -- Yes --> N_CheckEntryNumberMatch_Node2_action N_CheckEntryNumberMatch_Node2_action --> E_CheckEntryNumberMatch N_CheckEntryNumberMatch_Node1 -- No --> N_CheckEntryNumberMatch_Node2 N_CheckEntryNumberMatch_Node2 -- No --> E_CheckEntryNumberMatch
File: GCX016.cbl
GIVEN:
Status information matching has been validated for a counterpart code
WHEN:
The system checks entry number compatibility
THEN:
- The system compares entry numbers
- Proceeds only if they match or meet the removal criteria
File: GCX016.cbl
GIVEN:
An entry number from the status array element AND an entry number from the new disposition code
WHEN:
The system compares the entry number values after disposition code match is confirmed
THEN:
IF the entry numbers match THEN proceed to check quantity match ELSE continue searching for duplicates in remaining array elements
File: GCX016.cbl
GIVEN:
A counterpart code match is found in the status array
WHEN:
- The system compares entry numbers between current disposition
- Counterpart code
THEN:
If entry numbers match, proceed to quantity validation, otherwise check status info match
β Consolidated Acceptance Criteria
- The system checks quantity compatibility → the system compares quantities and proceeds only if they match or meet the removal criteria
- The system compares the quantity values after both disposition code and entry number matches are confirmed → iF the quantities match THEN mark as exact duplicate found ELSE continue processing as non-duplicate entry
- The system compares quantities between current disposition and counterpart code → if quantities match, remove the counterpart code from array, otherwise check status info match
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CheckQuantityMatch(["Start Step"])
E_CheckQuantityMatch(["End Step"])
N_CheckQuantityMatch_Node0{"The system checks quantity
compatibility"}:::decision N_CheckQuantityMatch_Node0_action["The system compares quantities and
proceeds only if they match or meet
the removal criteria"]:::main N_CheckQuantityMatch_Node0 -- Yes --> N_CheckQuantityMatch_Node0_action N_CheckQuantityMatch_Node0_action --> E_CheckQuantityMatch S_CheckQuantityMatch --> N_CheckQuantityMatch_Node0 N_CheckQuantityMatch_Node1{"The system compares the quantity
values after both disposition code
and entry number matches are
confirmed"}:::decision N_CheckQuantityMatch_Node1_action["IF the quantities match THEN mark
as exact duplicate found ELSE
continue processing as non-duplicate
entry"]:::main N_CheckQuantityMatch_Node1 -- Yes --> N_CheckQuantityMatch_Node1_action N_CheckQuantityMatch_Node1_action --> E_CheckQuantityMatch N_CheckQuantityMatch_Node0 -- No --> N_CheckQuantityMatch_Node1 N_CheckQuantityMatch_Node2{"The system compares quantities
between current disposition and
counterpart code"}:::decision N_CheckQuantityMatch_Node2_action["If quantities match, remove the
counterpart code from array,
otherwise check status info match"]:::main N_CheckQuantityMatch_Node2 -- Yes --> N_CheckQuantityMatch_Node2_action N_CheckQuantityMatch_Node2_action --> E_CheckQuantityMatch N_CheckQuantityMatch_Node1 -- No --> N_CheckQuantityMatch_Node2 N_CheckQuantityMatch_Node2 -- No --> E_CheckQuantityMatch
compatibility"}:::decision N_CheckQuantityMatch_Node0_action["The system compares quantities and
proceeds only if they match or meet
the removal criteria"]:::main N_CheckQuantityMatch_Node0 -- Yes --> N_CheckQuantityMatch_Node0_action N_CheckQuantityMatch_Node0_action --> E_CheckQuantityMatch S_CheckQuantityMatch --> N_CheckQuantityMatch_Node0 N_CheckQuantityMatch_Node1{"The system compares the quantity
values after both disposition code
and entry number matches are
confirmed"}:::decision N_CheckQuantityMatch_Node1_action["IF the quantities match THEN mark
as exact duplicate found ELSE
continue processing as non-duplicate
entry"]:::main N_CheckQuantityMatch_Node1 -- Yes --> N_CheckQuantityMatch_Node1_action N_CheckQuantityMatch_Node1_action --> E_CheckQuantityMatch N_CheckQuantityMatch_Node0 -- No --> N_CheckQuantityMatch_Node1 N_CheckQuantityMatch_Node2{"The system compares quantities
between current disposition and
counterpart code"}:::decision N_CheckQuantityMatch_Node2_action["If quantities match, remove the
counterpart code from array,
otherwise check status info match"]:::main N_CheckQuantityMatch_Node2 -- Yes --> N_CheckQuantityMatch_Node2_action N_CheckQuantityMatch_Node2_action --> E_CheckQuantityMatch N_CheckQuantityMatch_Node1 -- No --> N_CheckQuantityMatch_Node2 N_CheckQuantityMatch_Node2 -- No --> E_CheckQuantityMatch
File: GCX016.cbl
GIVEN:
Entry number matching has been validated for a counterpart code
WHEN:
The system checks quantity compatibility
THEN:
- The system compares quantities
- Proceeds only if they match or meet the removal criteria
File: GCX016.cbl
GIVEN:
A quantity value from the status array element AND a quantity value from the new disposition code
WHEN:
- The system compares the quantity values after both disposition code
- Entry number matches are confirmed
THEN:
IF the quantities match THEN mark as exact duplicate found ELSE continue processing as non-duplicate entry
File: GCX016.cbl
GIVEN:
Entry numbers match between current disposition and counterpart code
WHEN:
- The system compares quantities between current disposition
- Counterpart code
THEN:
If quantities match, remove the counterpart code from array, otherwise check status info match
β Consolidated Acceptance Criteria
- The system checks for specific code patterns requiring special handling → the system applies pattern-specific validation rules and determines if the counterpart code qualifies for removal
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CheckSpecificCodePatterns(["Start Step"])
E_CheckSpecificCodePatterns(["End Step"])
N_CheckSpecificCodePatterns_Node0{"The system checks for specific code
patterns requiring special handling"}:::decision N_CheckSpecificCodePatterns_Node0_action["The system applies pattern-specific
validation rules and determines if
the counterpart code qualifies for
removal"]:::main N_CheckSpecificCodePatterns_Node0 -- Yes --> N_CheckSpecificCodePatterns_Node0_action N_CheckSpecificCodePatterns_Node0_action --> E_CheckSpecificCodePatterns S_CheckSpecificCodePatterns --> N_CheckSpecificCodePatterns_Node0 N_CheckSpecificCodePatterns_Node0 -- No --> E_CheckSpecificCodePatterns
patterns requiring special handling"}:::decision N_CheckSpecificCodePatterns_Node0_action["The system applies pattern-specific
validation rules and determines if
the counterpart code qualifies for
removal"]:::main N_CheckSpecificCodePatterns_Node0 -- Yes --> N_CheckSpecificCodePatterns_Node0_action N_CheckSpecificCodePatterns_Node0_action --> E_CheckSpecificCodePatterns S_CheckSpecificCodePatterns --> N_CheckSpecificCodePatterns_Node0 N_CheckSpecificCodePatterns_Node0 -- No --> E_CheckSpecificCodePatterns
File: GCX016.cbl
GIVEN:
Quantity matching has been validated for a counterpart code
WHEN:
The system checks for specific code patterns requiring special handling
THEN:
- The system applies pattern-specific validation rules
- Determines if the counterpart code qualifies for removal
β Consolidated Acceptance Criteria
- If the combined results of all matching criteria → if all criteria are met, mark the array element for removal; otherwise, continue to next array element
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AllMatchingCriteriaMet(["Start Step"])
E_AllMatchingCriteriaMet(["End Step"])
N_AllMatchingCriteriaMet_Node0{"The system evaluates the combined
results of all matching criteria"}:::decision N_AllMatchingCriteriaMet_Node0_action["If all criteria are met, mark the
array element for removal otherwise,
continue to next array element"]:::main N_AllMatchingCriteriaMet_Node0 -- Yes --> N_AllMatchingCriteriaMet_Node0_action N_AllMatchingCriteriaMet_Node0_action --> E_AllMatchingCriteriaMet S_AllMatchingCriteriaMet --> N_AllMatchingCriteriaMet_Node0 N_AllMatchingCriteriaMet_Node0 -- No --> E_AllMatchingCriteriaMet
results of all matching criteria"}:::decision N_AllMatchingCriteriaMet_Node0_action["If all criteria are met, mark the
array element for removal otherwise,
continue to next array element"]:::main N_AllMatchingCriteriaMet_Node0 -- Yes --> N_AllMatchingCriteriaMet_Node0_action N_AllMatchingCriteriaMet_Node0_action --> E_AllMatchingCriteriaMet S_AllMatchingCriteriaMet --> N_AllMatchingCriteriaMet_Node0 N_AllMatchingCriteriaMet_Node0 -- No --> E_AllMatchingCriteriaMet
File: GCX016.cbl
GIVEN:
All individual matching validations have been performed for a counterpart code
WHEN:
The system evaluates the combined results of all matching criteria
THEN:
If all criteria are met, mark the array element for removal; otherwise, continue to next array element
β Consolidated Acceptance Criteria
- The system needs to prepare the array element for removal → the system marks the array element for deletion and sets appropriate removal flags
- The system processes the validated match → the array element is marked for removal and the system continues searching for additional matches
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MarkArrayElementforRemoval(["Start Step"])
E_MarkArrayElementforRemoval(["End Step"])
N_MarkArrayElementforRemoval_Node0{"The system needs to prepare the
array element for removal"}:::decision N_MarkArrayElementforRemoval_Node0_action["The system marks the array element
for deletion and sets appropriate
removal flags"]:::main N_MarkArrayElementforRemoval_Node0 -- Yes --> N_MarkArrayElementforRemoval_Node0_action N_MarkArrayElementforRemoval_Node0_action --> E_MarkArrayElementforRemoval S_MarkArrayElementforRemoval --> N_MarkArrayElementforRemoval_Node0 N_MarkArrayElementforRemoval_Node1{"The system processes the validated
match"}:::decision N_MarkArrayElementforRemoval_Node1_action["The array element is marked for
removal and the system continues
searching for additional matches"]:::main N_MarkArrayElementforRemoval_Node1 -- Yes --> N_MarkArrayElementforRemoval_Node1_action N_MarkArrayElementforRemoval_Node1_action --> E_MarkArrayElementforRemoval N_MarkArrayElementforRemoval_Node0 -- No --> N_MarkArrayElementforRemoval_Node1 N_MarkArrayElementforRemoval_Node1 -- No --> E_MarkArrayElementforRemoval
array element for removal"}:::decision N_MarkArrayElementforRemoval_Node0_action["The system marks the array element
for deletion and sets appropriate
removal flags"]:::main N_MarkArrayElementforRemoval_Node0 -- Yes --> N_MarkArrayElementforRemoval_Node0_action N_MarkArrayElementforRemoval_Node0_action --> E_MarkArrayElementforRemoval S_MarkArrayElementforRemoval --> N_MarkArrayElementforRemoval_Node0 N_MarkArrayElementforRemoval_Node1{"The system processes the validated
match"}:::decision N_MarkArrayElementforRemoval_Node1_action["The array element is marked for
removal and the system continues
searching for additional matches"]:::main N_MarkArrayElementforRemoval_Node1 -- Yes --> N_MarkArrayElementforRemoval_Node1_action N_MarkArrayElementforRemoval_Node1_action --> E_MarkArrayElementforRemoval N_MarkArrayElementforRemoval_Node0 -- No --> N_MarkArrayElementforRemoval_Node1 N_MarkArrayElementforRemoval_Node1 -- No --> E_MarkArrayElementforRemoval
File: GCX016.cbl
GIVEN:
All matching criteria are satisfied for a counterpart disposition code
WHEN:
The system needs to prepare the array element for removal
THEN:
- The system marks the array element for deletion
- Sets appropriate removal flags
File: GCX016.cbl
GIVEN:
A counterpart code has passed all validation criteria
WHEN:
The system processes the validated match
THEN:
- The array element is marked for removal
- The system continues searching for additional matches
β Consolidated Acceptance Criteria
- The system performs the actual removal operation → the system removes the counterpart disposition code from the status array and sets removal tracking flags
- The system removes the element from the S09A status array → the matching element is marked for removal from the status array
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RemoveElementfromArray(["Start Step"])
E_RemoveElementfromArray(["End Step"])
N_RemoveElementfromArray_Node0{"The system performs the actual
removal operation"}:::decision N_RemoveElementfromArray_Node0_action["The system removes the counterpart
disposition code from the status
array and sets removal tracking
flags"]:::main N_RemoveElementfromArray_Node0 -- Yes --> N_RemoveElementfromArray_Node0_action N_RemoveElementfromArray_Node0_action --> E_RemoveElementfromArray S_RemoveElementfromArray --> N_RemoveElementfromArray_Node0 N_RemoveElementfromArray_Node1{"The system removes the element from
the S09A status array"}:::decision N_RemoveElementfromArray_Node1_action["The matching element is marked for
removal from the status array"]:::main N_RemoveElementfromArray_Node1 -- Yes --> N_RemoveElementfromArray_Node1_action N_RemoveElementfromArray_Node1_action --> E_RemoveElementfromArray N_RemoveElementfromArray_Node0 -- No --> N_RemoveElementfromArray_Node1 N_RemoveElementfromArray_Node1 -- No --> E_RemoveElementfromArray
removal operation"}:::decision N_RemoveElementfromArray_Node0_action["The system removes the counterpart
disposition code from the status
array and sets removal tracking
flags"]:::main N_RemoveElementfromArray_Node0 -- Yes --> N_RemoveElementfromArray_Node0_action N_RemoveElementfromArray_Node0_action --> E_RemoveElementfromArray S_RemoveElementfromArray --> N_RemoveElementfromArray_Node0 N_RemoveElementfromArray_Node1{"The system removes the element from
the S09A status array"}:::decision N_RemoveElementfromArray_Node1_action["The matching element is marked for
removal from the status array"]:::main N_RemoveElementfromArray_Node1 -- Yes --> N_RemoveElementfromArray_Node1_action N_RemoveElementfromArray_Node1_action --> E_RemoveElementfromArray N_RemoveElementfromArray_Node0 -- No --> N_RemoveElementfromArray_Node1 N_RemoveElementfromArray_Node1 -- No --> E_RemoveElementfromArray
File: GCX016.cbl
GIVEN:
A status array element has been marked for removal
WHEN:
The system performs the actual removal operation
THEN:
- The system removes the counterpart disposition code from the status array
- Sets removal tracking flags
File: GCX016.cbl
GIVEN:
A status array element has been identified as matching counterpart removal criteria
WHEN:
The system removes the element from the S09A status array
THEN:
The matching element is marked for removal from the status array
β Consolidated Acceptance Criteria
- The system needs to maintain array integrity → the system shifts remaining array elements to eliminate gaps and maintains sequential order
- The system compacts the array structure → remaining array elements are moved to eliminate gaps and maintain proper array structure
- The system compacts the array structure → remaining array elements are shifted to eliminate empty positions
- The system compacts the array by moving remaining elements forward → all gaps in the array are eliminated and elements are contiguous
- The system compacts the remaining array elements → all remaining elements are moved to eliminate gaps and maintain array integrity
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CompactRemainingArrayElements(["Start Step"])
E_CompactRemainingArrayElements(["End Step"])
N_CompactRemainingArrayElements_Node0{"The system needs to maintain array
integrity"}:::decision N_CompactRemainingArrayElements_Node0_action["The system shifts remaining array
elements to eliminate gaps and
maintains sequential order"]:::main N_CompactRemainingArrayElements_Node0 -- Yes --> N_CompactRemainingArrayElements_Node0_action N_CompactRemainingArrayElements_Node0_action --> E_CompactRemainingArrayElements S_CompactRemainingArrayElements --> N_CompactRemainingArrayElements_Node0 N_CompactRemainingArrayElements_Node1{"The system compacts the array
structure"}:::decision N_CompactRemainingArrayElements_Node1_action["Remaining array elements are moved
to eliminate gaps and maintain
proper array structure"]:::main N_CompactRemainingArrayElements_Node1 -- Yes --> N_CompactRemainingArrayElements_Node1_action N_CompactRemainingArrayElements_Node1_action --> E_CompactRemainingArrayElements N_CompactRemainingArrayElements_Node0 -- No --> N_CompactRemainingArrayElements_Node1 N_CompactRemainingArrayElements_Node2{"The system compacts the array
structure"}:::decision N_CompactRemainingArrayElements_Node2_action["Remaining array elements are
shifted to eliminate empty positions"]:::main N_CompactRemainingArrayElements_Node2 -- Yes --> N_CompactRemainingArrayElements_Node2_action N_CompactRemainingArrayElements_Node2_action --> E_CompactRemainingArrayElements N_CompactRemainingArrayElements_Node1 -- No --> N_CompactRemainingArrayElements_Node2 N_CompactRemainingArrayElements_Node3{"The system compacts the array by
moving remaining elements forward"}:::decision N_CompactRemainingArrayElements_Node3_action["All gaps in the array are
eliminated and elements are
contiguous"]:::main N_CompactRemainingArrayElements_Node3 -- Yes --> N_CompactRemainingArrayElements_Node3_action N_CompactRemainingArrayElements_Node3_action --> E_CompactRemainingArrayElements N_CompactRemainingArrayElements_Node2 -- No --> N_CompactRemainingArrayElements_Node3 N_CompactRemainingArrayElements_Node4{"The system compacts the remaining
array elements"}:::decision N_CompactRemainingArrayElements_Node4_action["All remaining elements are moved to
eliminate gaps and maintain array
integrity"]:::main N_CompactRemainingArrayElements_Node4 -- Yes --> N_CompactRemainingArrayElements_Node4_action N_CompactRemainingArrayElements_Node4_action --> E_CompactRemainingArrayElements N_CompactRemainingArrayElements_Node3 -- No --> N_CompactRemainingArrayElements_Node4 N_CompactRemainingArrayElements_Node4 -- No --> E_CompactRemainingArrayElements
integrity"}:::decision N_CompactRemainingArrayElements_Node0_action["The system shifts remaining array
elements to eliminate gaps and
maintains sequential order"]:::main N_CompactRemainingArrayElements_Node0 -- Yes --> N_CompactRemainingArrayElements_Node0_action N_CompactRemainingArrayElements_Node0_action --> E_CompactRemainingArrayElements S_CompactRemainingArrayElements --> N_CompactRemainingArrayElements_Node0 N_CompactRemainingArrayElements_Node1{"The system compacts the array
structure"}:::decision N_CompactRemainingArrayElements_Node1_action["Remaining array elements are moved
to eliminate gaps and maintain
proper array structure"]:::main N_CompactRemainingArrayElements_Node1 -- Yes --> N_CompactRemainingArrayElements_Node1_action N_CompactRemainingArrayElements_Node1_action --> E_CompactRemainingArrayElements N_CompactRemainingArrayElements_Node0 -- No --> N_CompactRemainingArrayElements_Node1 N_CompactRemainingArrayElements_Node2{"The system compacts the array
structure"}:::decision N_CompactRemainingArrayElements_Node2_action["Remaining array elements are
shifted to eliminate empty positions"]:::main N_CompactRemainingArrayElements_Node2 -- Yes --> N_CompactRemainingArrayElements_Node2_action N_CompactRemainingArrayElements_Node2_action --> E_CompactRemainingArrayElements N_CompactRemainingArrayElements_Node1 -- No --> N_CompactRemainingArrayElements_Node2 N_CompactRemainingArrayElements_Node3{"The system compacts the array by
moving remaining elements forward"}:::decision N_CompactRemainingArrayElements_Node3_action["All gaps in the array are
eliminated and elements are
contiguous"]:::main N_CompactRemainingArrayElements_Node3 -- Yes --> N_CompactRemainingArrayElements_Node3_action N_CompactRemainingArrayElements_Node3_action --> E_CompactRemainingArrayElements N_CompactRemainingArrayElements_Node2 -- No --> N_CompactRemainingArrayElements_Node3 N_CompactRemainingArrayElements_Node4{"The system compacts the remaining
array elements"}:::decision N_CompactRemainingArrayElements_Node4_action["All remaining elements are moved to
eliminate gaps and maintain array
integrity"]:::main N_CompactRemainingArrayElements_Node4 -- Yes --> N_CompactRemainingArrayElements_Node4_action N_CompactRemainingArrayElements_Node4_action --> E_CompactRemainingArrayElements N_CompactRemainingArrayElements_Node3 -- No --> N_CompactRemainingArrayElements_Node4 N_CompactRemainingArrayElements_Node4 -- No --> E_CompactRemainingArrayElements
File: GCX016.cbl
GIVEN:
One or more counterpart disposition codes have been removed from the status array
WHEN:
The system needs to maintain array integrity
THEN:
- The system shifts remaining array elements to eliminate gaps
- Maintains sequential order
File: GCX016.cbl
GIVEN:
Counterpart code elements have been removed from the status array
WHEN:
The system compacts the array structure
THEN:
- Remaining array elements are moved to eliminate gaps
- Maintain proper array structure
File: GCX016.cbl
GIVEN:
One or more counterpart codes have been removed from the status array
WHEN:
The system compacts the array structure
THEN:
Remaining array elements are shifted to eliminate empty positions
File: GCX016.cbl
GIVEN:
Counterpart codes have been removed from the status array
WHEN:
The system compacts the array by moving remaining elements forward
THEN:
- All gaps in the array are eliminated
- Elements are contiguous
File: GCX016.cbl
GIVEN:
One or more elements have been removed from the S09A status array
WHEN:
The system compacts the remaining array elements
THEN:
- All remaining elements are moved to eliminate gaps
- Maintain array integrity
β Consolidated Acceptance Criteria
- The system needs to maintain accurate array metadata → the system updates the array count to reflect the current number of active disposition codes
- System calculates the new array element count → array count is updated to reflect the number of valid elements remaining after compaction
- The system updates the array element count → the array count reflects the actual number of remaining elements after counterpart removal
- The system recalculates the number of active entries in the array → the array count is updated to reflect the current number of valid status entries
- The array count is updated → the count is incremented by one to reflect the new entry
- The system updates the array metadata → the total element count is decremented to reflect the number of removed counterpart codes
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UpdateArrayCount(["Start Step"])
E_UpdateArrayCount(["End Step"])
N_UpdateArrayCount_Node0{"The system needs to maintain
accurate array metadata"}:::decision N_UpdateArrayCount_Node0_action["The system updates the array count
to reflect the current number of
active disposition codes"]:::main N_UpdateArrayCount_Node0 -- Yes --> N_UpdateArrayCount_Node0_action N_UpdateArrayCount_Node0_action --> E_UpdateArrayCount S_UpdateArrayCount --> N_UpdateArrayCount_Node0 N_UpdateArrayCount_Node1{"System calculates the new array
element count"}:::decision N_UpdateArrayCount_Node1_action["Array count is updated to reflect
the number of valid elements
remaining after compaction"]:::main N_UpdateArrayCount_Node1 -- Yes --> N_UpdateArrayCount_Node1_action N_UpdateArrayCount_Node1_action --> E_UpdateArrayCount N_UpdateArrayCount_Node0 -- No --> N_UpdateArrayCount_Node1 N_UpdateArrayCount_Node2{"The system updates the array
element count"}:::decision N_UpdateArrayCount_Node2_action["The array count reflects the actual
number of remaining elements after
counterpart removal"]:::main N_UpdateArrayCount_Node2 -- Yes --> N_UpdateArrayCount_Node2_action N_UpdateArrayCount_Node2_action --> E_UpdateArrayCount N_UpdateArrayCount_Node1 -- No --> N_UpdateArrayCount_Node2 N_UpdateArrayCount_Node3{"The system recalculates the number
of active entries in the array"}:::decision N_UpdateArrayCount_Node3_action["The array count is updated to
reflect the current number of valid
status entries"]:::main N_UpdateArrayCount_Node3 -- Yes --> N_UpdateArrayCount_Node3_action N_UpdateArrayCount_Node3_action --> E_UpdateArrayCount N_UpdateArrayCount_Node2 -- No --> N_UpdateArrayCount_Node3 N_UpdateArrayCount_Node4{"The array count is updated"}:::decision N_UpdateArrayCount_Node4_action["The count is incremented by one to
reflect the new entry"]:::main N_UpdateArrayCount_Node4 -- Yes --> N_UpdateArrayCount_Node4_action N_UpdateArrayCount_Node4_action --> E_UpdateArrayCount N_UpdateArrayCount_Node3 -- No --> N_UpdateArrayCount_Node4 N_UpdateArrayCount_Node5{"The system updates the array
metadata"}:::decision N_UpdateArrayCount_Node5_action["The total element count is
decremented to reflect the number of
removed counterpart codes"]:::main N_UpdateArrayCount_Node5 -- Yes --> N_UpdateArrayCount_Node5_action N_UpdateArrayCount_Node5_action --> E_UpdateArrayCount N_UpdateArrayCount_Node4 -- No --> N_UpdateArrayCount_Node5 N_UpdateArrayCount_Node5 -- No --> E_UpdateArrayCount
accurate array metadata"}:::decision N_UpdateArrayCount_Node0_action["The system updates the array count
to reflect the current number of
active disposition codes"]:::main N_UpdateArrayCount_Node0 -- Yes --> N_UpdateArrayCount_Node0_action N_UpdateArrayCount_Node0_action --> E_UpdateArrayCount S_UpdateArrayCount --> N_UpdateArrayCount_Node0 N_UpdateArrayCount_Node1{"System calculates the new array
element count"}:::decision N_UpdateArrayCount_Node1_action["Array count is updated to reflect
the number of valid elements
remaining after compaction"]:::main N_UpdateArrayCount_Node1 -- Yes --> N_UpdateArrayCount_Node1_action N_UpdateArrayCount_Node1_action --> E_UpdateArrayCount N_UpdateArrayCount_Node0 -- No --> N_UpdateArrayCount_Node1 N_UpdateArrayCount_Node2{"The system updates the array
element count"}:::decision N_UpdateArrayCount_Node2_action["The array count reflects the actual
number of remaining elements after
counterpart removal"]:::main N_UpdateArrayCount_Node2 -- Yes --> N_UpdateArrayCount_Node2_action N_UpdateArrayCount_Node2_action --> E_UpdateArrayCount N_UpdateArrayCount_Node1 -- No --> N_UpdateArrayCount_Node2 N_UpdateArrayCount_Node3{"The system recalculates the number
of active entries in the array"}:::decision N_UpdateArrayCount_Node3_action["The array count is updated to
reflect the current number of valid
status entries"]:::main N_UpdateArrayCount_Node3 -- Yes --> N_UpdateArrayCount_Node3_action N_UpdateArrayCount_Node3_action --> E_UpdateArrayCount N_UpdateArrayCount_Node2 -- No --> N_UpdateArrayCount_Node3 N_UpdateArrayCount_Node4{"The array count is updated"}:::decision N_UpdateArrayCount_Node4_action["The count is incremented by one to
reflect the new entry"]:::main N_UpdateArrayCount_Node4 -- Yes --> N_UpdateArrayCount_Node4_action N_UpdateArrayCount_Node4_action --> E_UpdateArrayCount N_UpdateArrayCount_Node3 -- No --> N_UpdateArrayCount_Node4 N_UpdateArrayCount_Node5{"The system updates the array
metadata"}:::decision N_UpdateArrayCount_Node5_action["The total element count is
decremented to reflect the number of
removed counterpart codes"]:::main N_UpdateArrayCount_Node5 -- Yes --> N_UpdateArrayCount_Node5_action N_UpdateArrayCount_Node5_action --> E_UpdateArrayCount N_UpdateArrayCount_Node4 -- No --> N_UpdateArrayCount_Node5 N_UpdateArrayCount_Node5 -- No --> E_UpdateArrayCount
File: GCX016.cbl
GIVEN:
The status array has been compacted after counterpart code removal
WHEN:
The system needs to maintain accurate array metadata
THEN:
The system updates the array count to reflect the current number of active disposition codes
File: GCX016.cbl
GIVEN:
Array compaction and element shifting is complete
WHEN:
System calculates the new array element count
THEN:
Array count is updated to reflect the number of valid elements remaining after compaction
File: GCX016.cbl
GIVEN:
The status array has been compacted after element removal
WHEN:
The system updates the array element count
THEN:
The array count reflects the actual number of remaining elements after counterpart removal
File: GCX016.cbl
GIVEN:
The status array has been compacted after counterpart code removal
WHEN:
The system recalculates the number of active entries in the array
THEN:
The array count is updated to reflect the current number of valid status entries
File: GCX016.cbl
GIVEN:
A disposition code has been successfully added to the array
WHEN:
The array count is updated
THEN:
The count is incremented by one to reflect the new entry
File: GCX016.cbl
GIVEN:
The status array has been compacted after counterpart code removal
WHEN:
The system updates the array metadata
THEN:
The total element count is decremented to reflect the number of removed counterpart codes
β Consolidated Acceptance Criteria
- The system checks if more elements exist in the array → if more elements exist, continue processing next element; otherwise, complete counterpart removal process
- If remaining array elements → if more elements exist, continue the search process, otherwise proceed to remove marked elements
- Current element scanning is complete → system determines whether more elements remain to be checked or scanning phase is complete
- The system checks for remaining elements to evaluate → if more elements exist, continue searching; otherwise complete counterpart processing
- The system checks if more elements remain to be processed → if more elements exist, continue searching, otherwise complete the counterpart removal process
- An element has been processed → the system checks if there are more elements remaining to be evaluated and continues processing if elements remain
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MoreElementstoCheck(["Start Step"])
E_MoreElementstoCheck(["End Step"])
N_MoreElementstoCheck_Node0{"The system checks if more elements
exist in the array"}:::decision N_MoreElementstoCheck_Node0_action["If more elements exist, continue
processing next element otherwise,
complete counterpart removal process"]:::main N_MoreElementstoCheck_Node0 -- Yes --> N_MoreElementstoCheck_Node0_action N_MoreElementstoCheck_Node0_action --> E_MoreElementstoCheck S_MoreElementstoCheck --> N_MoreElementstoCheck_Node0 N_MoreElementstoCheck_Node1{"The system evaluates remaining
array elements"}:::decision N_MoreElementstoCheck_Node1_action["If more elements exist, continue
the search process, otherwise
proceed to remove marked elements"]:::main N_MoreElementstoCheck_Node1 -- Yes --> N_MoreElementstoCheck_Node1_action N_MoreElementstoCheck_Node1_action --> E_MoreElementstoCheck N_MoreElementstoCheck_Node0 -- No --> N_MoreElementstoCheck_Node1 N_MoreElementstoCheck_Node2{"Current element scanning is
complete"}:::decision N_MoreElementstoCheck_Node2_action["System determines whether more
elements remain to be checked or
scanning phase is complete"]:::main N_MoreElementstoCheck_Node2 -- Yes --> N_MoreElementstoCheck_Node2_action N_MoreElementstoCheck_Node2_action --> E_MoreElementstoCheck N_MoreElementstoCheck_Node1 -- No --> N_MoreElementstoCheck_Node2 N_MoreElementstoCheck_Node3{"The system checks for remaining
elements to evaluate"}:::decision N_MoreElementstoCheck_Node3_action["If more elements exist, continue
searching otherwise complete
counterpart processing"]:::main N_MoreElementstoCheck_Node3 -- Yes --> N_MoreElementstoCheck_Node3_action N_MoreElementstoCheck_Node3_action --> E_MoreElementstoCheck N_MoreElementstoCheck_Node2 -- No --> N_MoreElementstoCheck_Node3 N_MoreElementstoCheck_Node4{"The system checks if more elements
remain to be processed"}:::decision N_MoreElementstoCheck_Node4_action["If more elements exist, continue
searching, otherwise complete the
counterpart removal process"]:::main N_MoreElementstoCheck_Node4 -- Yes --> N_MoreElementstoCheck_Node4_action N_MoreElementstoCheck_Node4_action --> E_MoreElementstoCheck N_MoreElementstoCheck_Node3 -- No --> N_MoreElementstoCheck_Node4 N_MoreElementstoCheck_Node5{"An element has been processed"}:::decision N_MoreElementstoCheck_Node5_action["The system checks if there are more
elements remaining to be evaluated
and continues processing if elements
remain"]:::main N_MoreElementstoCheck_Node5 -- Yes --> N_MoreElementstoCheck_Node5_action N_MoreElementstoCheck_Node5_action --> E_MoreElementstoCheck N_MoreElementstoCheck_Node4 -- No --> N_MoreElementstoCheck_Node5 N_MoreElementstoCheck_Node5 -- No --> E_MoreElementstoCheck
exist in the array"}:::decision N_MoreElementstoCheck_Node0_action["If more elements exist, continue
processing next element otherwise,
complete counterpart removal process"]:::main N_MoreElementstoCheck_Node0 -- Yes --> N_MoreElementstoCheck_Node0_action N_MoreElementstoCheck_Node0_action --> E_MoreElementstoCheck S_MoreElementstoCheck --> N_MoreElementstoCheck_Node0 N_MoreElementstoCheck_Node1{"The system evaluates remaining
array elements"}:::decision N_MoreElementstoCheck_Node1_action["If more elements exist, continue
the search process, otherwise
proceed to remove marked elements"]:::main N_MoreElementstoCheck_Node1 -- Yes --> N_MoreElementstoCheck_Node1_action N_MoreElementstoCheck_Node1_action --> E_MoreElementstoCheck N_MoreElementstoCheck_Node0 -- No --> N_MoreElementstoCheck_Node1 N_MoreElementstoCheck_Node2{"Current element scanning is
complete"}:::decision N_MoreElementstoCheck_Node2_action["System determines whether more
elements remain to be checked or
scanning phase is complete"]:::main N_MoreElementstoCheck_Node2 -- Yes --> N_MoreElementstoCheck_Node2_action N_MoreElementstoCheck_Node2_action --> E_MoreElementstoCheck N_MoreElementstoCheck_Node1 -- No --> N_MoreElementstoCheck_Node2 N_MoreElementstoCheck_Node3{"The system checks for remaining
elements to evaluate"}:::decision N_MoreElementstoCheck_Node3_action["If more elements exist, continue
searching otherwise complete
counterpart processing"]:::main N_MoreElementstoCheck_Node3 -- Yes --> N_MoreElementstoCheck_Node3_action N_MoreElementstoCheck_Node3_action --> E_MoreElementstoCheck N_MoreElementstoCheck_Node2 -- No --> N_MoreElementstoCheck_Node3 N_MoreElementstoCheck_Node4{"The system checks if more elements
remain to be processed"}:::decision N_MoreElementstoCheck_Node4_action["If more elements exist, continue
searching, otherwise complete the
counterpart removal process"]:::main N_MoreElementstoCheck_Node4 -- Yes --> N_MoreElementstoCheck_Node4_action N_MoreElementstoCheck_Node4_action --> E_MoreElementstoCheck N_MoreElementstoCheck_Node3 -- No --> N_MoreElementstoCheck_Node4 N_MoreElementstoCheck_Node5{"An element has been processed"}:::decision N_MoreElementstoCheck_Node5_action["The system checks if there are more
elements remaining to be evaluated
and continues processing if elements
remain"]:::main N_MoreElementstoCheck_Node5 -- Yes --> N_MoreElementstoCheck_Node5_action N_MoreElementstoCheck_Node5_action --> E_MoreElementstoCheck N_MoreElementstoCheck_Node4 -- No --> N_MoreElementstoCheck_Node5 N_MoreElementstoCheck_Node5 -- No --> E_MoreElementstoCheck
File: GCX016.cbl
GIVEN:
The current status array element has been processed for counterpart code removal
WHEN:
The system checks if more elements exist in the array
THEN:
If more elements exist, continue processing next element; otherwise, complete counterpart removal process
File: GCX016.cbl
GIVEN:
The current status array element has been processed
WHEN:
The system evaluates remaining array elements
THEN:
If more elements exist, continue the search process, otherwise proceed to remove marked elements
File: GCX016.cbl
GIVEN:
System is scanning array elements for compaction
WHEN:
Current element scanning is complete
THEN:
System determines whether more elements remain to be checked or scanning phase is complete
File: GCX016.cbl
GIVEN:
Current array element has been processed
WHEN:
The system checks for remaining elements to evaluate
THEN:
If more elements exist, continue searching; otherwise complete counterpart processing
File: GCX016.cbl
GIVEN:
The system has processed a status array element for counterpart matching
WHEN:
The system checks if more elements remain to be processed
THEN:
If more elements exist, continue searching, otherwise complete the counterpart removal process
File: GCX016.cbl
GIVEN:
The system is processing elements in the status array for removal
WHEN:
An element has been processed
THEN:
- The system checks if there are more elements remaining to be evaluated
- Continues processing if elements remain
β Consolidated Acceptance Criteria
- The system needs to continue counterpart code removal evaluation → the system advances to the next array element and repeats the counterpart matching process
- The system needs to continue searching → the process moves to increment the array index and evaluate the next element
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ContinuetoNextElement(["Start Step"])
E_ContinuetoNextElement(["End Step"])
N_ContinuetoNextElement_Node0{"The system needs to continue
counterpart code removal evaluation"}:::decision N_ContinuetoNextElement_Node0_action["The system advances to the next
array element and repeats the
counterpart matching process"]:::main N_ContinuetoNextElement_Node0 -- Yes --> N_ContinuetoNextElement_Node0_action N_ContinuetoNextElement_Node0_action --> E_ContinuetoNextElement S_ContinuetoNextElement --> N_ContinuetoNextElement_Node0 N_ContinuetoNextElement_Node1{"The system needs to continue
searching"}:::decision N_ContinuetoNextElement_Node1_action["The process moves to increment the
array index and evaluate the next
element"]:::main N_ContinuetoNextElement_Node1 -- Yes --> N_ContinuetoNextElement_Node1_action N_ContinuetoNextElement_Node1_action --> E_ContinuetoNextElement N_ContinuetoNextElement_Node0 -- No --> N_ContinuetoNextElement_Node1 N_ContinuetoNextElement_Node1 -- No --> E_ContinuetoNextElement
counterpart code removal evaluation"}:::decision N_ContinuetoNextElement_Node0_action["The system advances to the next
array element and repeats the
counterpart matching process"]:::main N_ContinuetoNextElement_Node0 -- Yes --> N_ContinuetoNextElement_Node0_action N_ContinuetoNextElement_Node0_action --> E_ContinuetoNextElement S_ContinuetoNextElement --> N_ContinuetoNextElement_Node0 N_ContinuetoNextElement_Node1{"The system needs to continue
searching"}:::decision N_ContinuetoNextElement_Node1_action["The process moves to increment the
array index and evaluate the next
element"]:::main N_ContinuetoNextElement_Node1 -- Yes --> N_ContinuetoNextElement_Node1_action N_ContinuetoNextElement_Node1_action --> E_ContinuetoNextElement N_ContinuetoNextElement_Node0 -- No --> N_ContinuetoNextElement_Node1 N_ContinuetoNextElement_Node1 -- No --> E_ContinuetoNextElement
File: GCX016.cbl
GIVEN:
Additional status array elements exist for processing
WHEN:
The system needs to continue counterpart code removal evaluation
THEN:
- The system advances to the next array element
- Repeats the counterpart matching process
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
The current array element does not meet matching criteria
WHEN:
The system needs to continue searching
THEN:
- The process moves to increment the array index
- Evaluate the next element
β Consolidated Acceptance Criteria
- The system compares status information fields between the current disposition code and array element → the system marks the status information as matching if all status information fields are identical, otherwise marks as non-matching
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CheckStatusInfoMatchComparedispositioncodestatusinformationfieldsincludinglocationcodesentrytypesandprocessingflags(["Start Step"])
E_CheckStatusInfoMatchComparedispositioncodestatusinformationfieldsincludinglocationcodesentrytypesandprocessingflags(["End Step"])
N_CheckStatusInfoMatchComparedispositioncodestatusinformationfieldsincludinglocationcodesentrytypesandprocessingflags_Node0{"The system compares status
information fields between the
current disposition code and array
element"}:::decision N_CheckStatusInfoMatchComparedispositioncodestatusinformationfieldsincludinglocationcodesentrytypesandprocessingflags_Node0_action["The system marks the status
information as matching if all
status information fields are
identical, otherwise marks as
non-matching"]:::main N_CheckStatusInfoMatchComparedispositioncodestatusinformationfieldsincludinglocationcodesentrytypesandprocessingflags_Node0 -- Yes --> N_CheckStatusInfoMatchComparedispositioncodestatusinformationfieldsincludinglocationcodesentrytypesandprocessingflags_Node0_action N_CheckStatusInfoMatchComparedispositioncodestatusinformationfieldsincludinglocationcodesentrytypesandprocessingflags_Node0_action --> E_CheckStatusInfoMatchComparedispositioncodestatusinformationfieldsincludinglocationcodesentrytypesandprocessingflags S_CheckStatusInfoMatchComparedispositioncodestatusinformationfieldsincludinglocationcodesentrytypesandprocessingflags --> N_CheckStatusInfoMatchComparedispositioncodestatusinformationfieldsincludinglocationcodesentrytypesandprocessingflags_Node0 N_CheckStatusInfoMatchComparedispositioncodestatusinformationfieldsincludinglocationcodesentrytypesandprocessingflags_Node0 -- No --> E_CheckStatusInfoMatchComparedispositioncodestatusinformationfieldsincludinglocationcodesentrytypesandprocessingflags
information fields between the
current disposition code and array
element"}:::decision N_CheckStatusInfoMatchComparedispositioncodestatusinformationfieldsincludinglocationcodesentrytypesandprocessingflags_Node0_action["The system marks the status
information as matching if all
status information fields are
identical, otherwise marks as
non-matching"]:::main N_CheckStatusInfoMatchComparedispositioncodestatusinformationfieldsincludinglocationcodesentrytypesandprocessingflags_Node0 -- Yes --> N_CheckStatusInfoMatchComparedispositioncodestatusinformationfieldsincludinglocationcodesentrytypesandprocessingflags_Node0_action N_CheckStatusInfoMatchComparedispositioncodestatusinformationfieldsincludinglocationcodesentrytypesandprocessingflags_Node0_action --> E_CheckStatusInfoMatchComparedispositioncodestatusinformationfieldsincludinglocationcodesentrytypesandprocessingflags S_CheckStatusInfoMatchComparedispositioncodestatusinformationfieldsincludinglocationcodesentrytypesandprocessingflags --> N_CheckStatusInfoMatchComparedispositioncodestatusinformationfieldsincludinglocationcodesentrytypesandprocessingflags_Node0 N_CheckStatusInfoMatchComparedispositioncodestatusinformationfieldsincludinglocationcodesentrytypesandprocessingflags_Node0 -- No --> E_CheckStatusInfoMatchComparedispositioncodestatusinformationfieldsincludinglocationcodesentrytypesandprocessingflags
File: GCX016.cbl
GIVEN:
A current disposition code with status information fields and an array element with corresponding status information fields are available for comparison
WHEN:
- The system compares status information fields between the current disposition code
- Array element
THEN:
The system marks the status information as matching if all status information fields are identical, otherwise marks as non-matching
β Consolidated Acceptance Criteria
- The system compares the location codes between current disposition code and array element → the system proceeds to next comparison field if location codes match, otherwise continues to mark as non-matching status information
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CheckLocationCodeMatch(["Start Step"])
E_CheckLocationCodeMatch(["End Step"])
N_CheckLocationCodeMatch_Node0{"The system compares the location
codes between current disposition
code and array element"}:::decision N_CheckLocationCodeMatch_Node0_action["The system proceeds to next
comparison field if location codes
match, otherwise continues to mark
as non-matching status information"]:::main N_CheckLocationCodeMatch_Node0 -- Yes --> N_CheckLocationCodeMatch_Node0_action N_CheckLocationCodeMatch_Node0_action --> E_CheckLocationCodeMatch S_CheckLocationCodeMatch --> N_CheckLocationCodeMatch_Node0 N_CheckLocationCodeMatch_Node0 -- No --> E_CheckLocationCodeMatch
codes between current disposition
code and array element"}:::decision N_CheckLocationCodeMatch_Node0_action["The system proceeds to next
comparison field if location codes
match, otherwise continues to mark
as non-matching status information"]:::main N_CheckLocationCodeMatch_Node0 -- Yes --> N_CheckLocationCodeMatch_Node0_action N_CheckLocationCodeMatch_Node0_action --> E_CheckLocationCodeMatch S_CheckLocationCodeMatch --> N_CheckLocationCodeMatch_Node0 N_CheckLocationCodeMatch_Node0 -- No --> E_CheckLocationCodeMatch
File: GCX016.cbl
GIVEN:
A current disposition code location code and an array element location code are available for comparison
WHEN:
- The system compares the location codes between current disposition code
- Array element
THEN:
The system proceeds to next comparison field if location codes match, otherwise continues to mark as non-matching status information
β Consolidated Acceptance Criteria
- The system compares the entry types between current disposition code and array element → the system proceeds to processing flags check if entry types match, otherwise continues to mark as non-matching status information
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CheckEntryTypeMatch(["Start Step"])
E_CheckEntryTypeMatch(["End Step"])
N_CheckEntryTypeMatch_Node0{"The system compares the entry types
between current disposition code and
array element"}:::decision N_CheckEntryTypeMatch_Node0_action["The system proceeds to processing
flags check if entry types match,
otherwise continues to mark as
non-matching status information"]:::main N_CheckEntryTypeMatch_Node0 -- Yes --> N_CheckEntryTypeMatch_Node0_action N_CheckEntryTypeMatch_Node0_action --> E_CheckEntryTypeMatch S_CheckEntryTypeMatch --> N_CheckEntryTypeMatch_Node0 N_CheckEntryTypeMatch_Node0 -- No --> E_CheckEntryTypeMatch
between current disposition code and
array element"}:::decision N_CheckEntryTypeMatch_Node0_action["The system proceeds to processing
flags check if entry types match,
otherwise continues to mark as
non-matching status information"]:::main N_CheckEntryTypeMatch_Node0 -- Yes --> N_CheckEntryTypeMatch_Node0_action N_CheckEntryTypeMatch_Node0_action --> E_CheckEntryTypeMatch S_CheckEntryTypeMatch --> N_CheckEntryTypeMatch_Node0 N_CheckEntryTypeMatch_Node0 -- No --> E_CheckEntryTypeMatch
File: GCX016.cbl
GIVEN:
A current disposition code entry type and an array element entry type are available for comparison
WHEN:
- The system compares the entry types between current disposition code
- Array element
THEN:
The system proceeds to processing flags check if entry types match, otherwise continues to mark as non-matching status information
β Consolidated Acceptance Criteria
- The system compares the processing flags between current disposition code and array element → the system marks as matching status info if processing flags match, otherwise marks as non-matching status information
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CheckProcessingFlagsMatch(["Start Step"])
E_CheckProcessingFlagsMatch(["End Step"])
N_CheckProcessingFlagsMatch_Node0{"The system compares the processing
flags between current disposition
code and array element"}:::decision N_CheckProcessingFlagsMatch_Node0_action["The system marks as matching status
info if processing flags match,
otherwise marks as non-matching
status information"]:::main N_CheckProcessingFlagsMatch_Node0 -- Yes --> N_CheckProcessingFlagsMatch_Node0_action N_CheckProcessingFlagsMatch_Node0_action --> E_CheckProcessingFlagsMatch S_CheckProcessingFlagsMatch --> N_CheckProcessingFlagsMatch_Node0 N_CheckProcessingFlagsMatch_Node0 -- No --> E_CheckProcessingFlagsMatch
flags between current disposition
code and array element"}:::decision N_CheckProcessingFlagsMatch_Node0_action["The system marks as matching status
info if processing flags match,
otherwise marks as non-matching
status information"]:::main N_CheckProcessingFlagsMatch_Node0 -- Yes --> N_CheckProcessingFlagsMatch_Node0_action N_CheckProcessingFlagsMatch_Node0_action --> E_CheckProcessingFlagsMatch S_CheckProcessingFlagsMatch --> N_CheckProcessingFlagsMatch_Node0 N_CheckProcessingFlagsMatch_Node0 -- No --> E_CheckProcessingFlagsMatch
File: GCX016.cbl
GIVEN:
A current disposition code processing flags and an array element processing flags are available for comparison
WHEN:
- The system compares the processing flags between current disposition code
- Array element
THEN:
The system marks as matching status info if processing flags match, otherwise marks as non-matching status information
β Consolidated Acceptance Criteria
- The system completes the status information comparison process → the system marks the status information as matching and returns the positive match result
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MarkasMatchingStatusInfo(["Start Step"])
E_MarkasMatchingStatusInfo(["End Step"])
N_MarkasMatchingStatusInfo_Node0{"The system completes the status
information comparison process"}:::decision N_MarkasMatchingStatusInfo_Node0_action["The system marks the status
information as matching and returns
the positive match result"]:::main N_MarkasMatchingStatusInfo_Node0 -- Yes --> N_MarkasMatchingStatusInfo_Node0_action N_MarkasMatchingStatusInfo_Node0_action --> E_MarkasMatchingStatusInfo S_MarkasMatchingStatusInfo --> N_MarkasMatchingStatusInfo_Node0 N_MarkasMatchingStatusInfo_Node0 -- No --> E_MarkasMatchingStatusInfo
information comparison process"}:::decision N_MarkasMatchingStatusInfo_Node0_action["The system marks the status
information as matching and returns
the positive match result"]:::main N_MarkasMatchingStatusInfo_Node0 -- Yes --> N_MarkasMatchingStatusInfo_Node0_action N_MarkasMatchingStatusInfo_Node0_action --> E_MarkasMatchingStatusInfo S_MarkasMatchingStatusInfo --> N_MarkasMatchingStatusInfo_Node0 N_MarkasMatchingStatusInfo_Node0 -- No --> E_MarkasMatchingStatusInfo
File: GCX016.cbl
GIVEN:
All status information fields including location codes, entry types, and processing flags have been successfully matched between current disposition code and array element
WHEN:
The system completes the status information comparison process
THEN:
- The system marks the status information as matching
- Returns the positive match result
β Consolidated Acceptance Criteria
- The system completes the status information comparison process → the system marks the status information as non-matching and returns the negative match result
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MarkasNonMatchingStatusInfo(["Start Step"])
E_MarkasNonMatchingStatusInfo(["End Step"])
N_MarkasNonMatchingStatusInfo_Node0{"The system completes the status
information comparison process"}:::decision N_MarkasNonMatchingStatusInfo_Node0_action["The system marks the status
information as non-matching and
returns the negative match result"]:::main N_MarkasNonMatchingStatusInfo_Node0 -- Yes --> N_MarkasNonMatchingStatusInfo_Node0_action N_MarkasNonMatchingStatusInfo_Node0_action --> E_MarkasNonMatchingStatusInfo S_MarkasNonMatchingStatusInfo --> N_MarkasNonMatchingStatusInfo_Node0 N_MarkasNonMatchingStatusInfo_Node0 -- No --> E_MarkasNonMatchingStatusInfo
information comparison process"}:::decision N_MarkasNonMatchingStatusInfo_Node0_action["The system marks the status
information as non-matching and
returns the negative match result"]:::main N_MarkasNonMatchingStatusInfo_Node0 -- Yes --> N_MarkasNonMatchingStatusInfo_Node0_action N_MarkasNonMatchingStatusInfo_Node0_action --> E_MarkasNonMatchingStatusInfo S_MarkasNonMatchingStatusInfo --> N_MarkasNonMatchingStatusInfo_Node0 N_MarkasNonMatchingStatusInfo_Node0 -- No --> E_MarkasNonMatchingStatusInfo
File: GCX016.cbl
GIVEN:
At least one status information field including location codes, entry types, or processing flags differs between current disposition code and array element
WHEN:
The system completes the status information comparison process
THEN:
- The system marks the status information as non-matching
- Returns the negative match result
β Consolidated Acceptance Criteria
- The system checks for entry number in X4-04 field → if entry number is present, continue with entry number validation, otherwise fail validation
- The system checks for entry number presence in field X4-04 → if entry number is present, proceed to entry number validation, otherwise start in-bond broker processing directly
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_EntryNumberPresentinX404(["Start Step"])
E_EntryNumberPresentinX404(["End Step"])
N_EntryNumberPresentinX404_Node0{"The system checks for entry number
in X4-04 field"}:::decision N_EntryNumberPresentinX404_Node0_action["If entry number is present,
continue with entry number
validation, otherwise fail
validation"]:::main N_EntryNumberPresentinX404_Node0 -- Yes --> N_EntryNumberPresentinX404_Node0_action N_EntryNumberPresentinX404_Node0_action --> E_EntryNumberPresentinX404 S_EntryNumberPresentinX404 --> N_EntryNumberPresentinX404_Node0 N_EntryNumberPresentinX404_Node1{"The system checks for entry number
presence in field X4-04"}:::decision N_EntryNumberPresentinX404_Node1_action["If entry number is present, proceed
to entry number validation,
otherwise start in-bond broker
processing directly"]:::main N_EntryNumberPresentinX404_Node1 -- Yes --> N_EntryNumberPresentinX404_Node1_action N_EntryNumberPresentinX404_Node1_action --> E_EntryNumberPresentinX404 N_EntryNumberPresentinX404_Node0 -- No --> N_EntryNumberPresentinX404_Node1 N_EntryNumberPresentinX404_Node1 -- No --> E_EntryNumberPresentinX404
in X4-04 field"}:::decision N_EntryNumberPresentinX404_Node0_action["If entry number is present,
continue with entry number
validation, otherwise fail
validation"]:::main N_EntryNumberPresentinX404_Node0 -- Yes --> N_EntryNumberPresentinX404_Node0_action N_EntryNumberPresentinX404_Node0_action --> E_EntryNumberPresentinX404 S_EntryNumberPresentinX404 --> N_EntryNumberPresentinX404_Node0 N_EntryNumberPresentinX404_Node1{"The system checks for entry number
presence in field X4-04"}:::decision N_EntryNumberPresentinX404_Node1_action["If entry number is present, proceed
to entry number validation,
otherwise start in-bond broker
processing directly"]:::main N_EntryNumberPresentinX404_Node1 -- Yes --> N_EntryNumberPresentinX404_Node1_action N_EntryNumberPresentinX404_Node1_action --> E_EntryNumberPresentinX404 N_EntryNumberPresentinX404_Node0 -- No --> N_EntryNumberPresentinX404_Node1 N_EntryNumberPresentinX404_Node1 -- No --> E_EntryNumberPresentinX404
File: GCX016.cbl
GIVEN:
A cargo message with X4 segment is being processed
WHEN:
The system checks for entry number in X4-04 field
THEN:
If entry number is present, continue with entry number validation, otherwise fail validation
File: GCX016.cbl
GIVEN:
An X4 customs release segment is received for processing
WHEN:
The system checks for entry number presence in field X4-04
THEN:
If entry number is present, proceed to entry number validation, otherwise start in-bond broker processing directly
β Consolidated Acceptance Criteria
- The system extracts the entry number pattern → the entry number pattern is analyzed to determine if it is a broker entry number, bond control number, or in-bond entry reference
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExtractEntryNumberPattern(["Start Step"])
E_ExtractEntryNumberPattern(["End Step"])
N_ExtractEntryNumberPattern_Node0{"The system extracts the entry
number pattern"}:::decision N_ExtractEntryNumberPattern_Node0_action["The entry number pattern is
analyzed to determine if it is a
broker entry number, bond control
number, or in-bond entry reference"]:::main N_ExtractEntryNumberPattern_Node0 -- Yes --> N_ExtractEntryNumberPattern_Node0_action N_ExtractEntryNumberPattern_Node0_action --> E_ExtractEntryNumberPattern S_ExtractEntryNumberPattern --> N_ExtractEntryNumberPattern_Node0 N_ExtractEntryNumberPattern_Node0 -- No --> E_ExtractEntryNumberPattern
number pattern"}:::decision N_ExtractEntryNumberPattern_Node0_action["The entry number pattern is
analyzed to determine if it is a
broker entry number, bond control
number, or in-bond entry reference"]:::main N_ExtractEntryNumberPattern_Node0 -- Yes --> N_ExtractEntryNumberPattern_Node0_action N_ExtractEntryNumberPattern_Node0_action --> E_ExtractEntryNumberPattern S_ExtractEntryNumberPattern --> N_ExtractEntryNumberPattern_Node0 N_ExtractEntryNumberPattern_Node0 -- No --> E_ExtractEntryNumberPattern
File: GCX016.cbl
GIVEN:
An entry number is present in X4-04 field
WHEN:
The system extracts the entry number pattern
THEN:
The entry number pattern is analyzed to determine if it is a broker entry number, bond control number, or in-bond entry reference
β Consolidated Acceptance Criteria
- The system analyzes the entry number format → the entry number is classified as either broker entry number, bond control number, or in-bond entry reference based on its format characteristics
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_EntryNumberType(["Start Step"])
E_EntryNumberType(["End Step"])
N_EntryNumberType_Node0{"The system analyzes the entry
number format"}:::decision N_EntryNumberType_Node0_action["The entry number is classified as
either broker entry number, bond
control number, or in-bond entry
reference based on its format
characteristics"]:::main N_EntryNumberType_Node0 -- Yes --> N_EntryNumberType_Node0_action N_EntryNumberType_Node0_action --> E_EntryNumberType S_EntryNumberType --> N_EntryNumberType_Node0 N_EntryNumberType_Node0 -- No --> E_EntryNumberType
number format"}:::decision N_EntryNumberType_Node0_action["The entry number is classified as
either broker entry number, bond
control number, or in-bond entry
reference based on its format
characteristics"]:::main N_EntryNumberType_Node0 -- Yes --> N_EntryNumberType_Node0_action N_EntryNumberType_Node0_action --> E_EntryNumberType S_EntryNumberType --> N_EntryNumberType_Node0 N_EntryNumberType_Node0 -- No --> E_EntryNumberType
File: GCX016.cbl
GIVEN:
An entry number pattern has been extracted from X4-04
WHEN:
The system analyzes the entry number format
THEN:
The entry number is classified as either broker entry number, bond control number, or in-bond entry reference based on its format characteristics
β Consolidated Acceptance Criteria
- The system validates the broker entry number format → the broker entry number must conform to established format rules and pass validation checks
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ValidateBrokerEntryNumberFormat(["Start Step"])
E_ValidateBrokerEntryNumberFormat(["End Step"])
N_ValidateBrokerEntryNumberFormat_Node0{"The system validates the broker
entry number format"}:::decision N_ValidateBrokerEntryNumberFormat_Node0_action["The broker entry number must
conform to established format rules
and pass validation checks"]:::main N_ValidateBrokerEntryNumberFormat_Node0 -- Yes --> N_ValidateBrokerEntryNumberFormat_Node0_action N_ValidateBrokerEntryNumberFormat_Node0_action --> E_ValidateBrokerEntryNumberFormat S_ValidateBrokerEntryNumberFormat --> N_ValidateBrokerEntryNumberFormat_Node0 N_ValidateBrokerEntryNumberFormat_Node0 -- No --> E_ValidateBrokerEntryNumberFormat
entry number format"}:::decision N_ValidateBrokerEntryNumberFormat_Node0_action["The broker entry number must
conform to established format rules
and pass validation checks"]:::main N_ValidateBrokerEntryNumberFormat_Node0 -- Yes --> N_ValidateBrokerEntryNumberFormat_Node0_action N_ValidateBrokerEntryNumberFormat_Node0_action --> E_ValidateBrokerEntryNumberFormat S_ValidateBrokerEntryNumberFormat --> N_ValidateBrokerEntryNumberFormat_Node0 N_ValidateBrokerEntryNumberFormat_Node0 -- No --> E_ValidateBrokerEntryNumberFormat
File: GCX016.cbl
GIVEN:
An entry number has been classified as a broker entry number
WHEN:
The system validates the broker entry number format
THEN:
- The broker entry number must conform to established format rules
- Pass validation checks
β Consolidated Acceptance Criteria
- The system validates the bond control number format → the bond control number must conform to established format rules and pass validation checks
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ValidateBondControlNumberFormat(["Start Step"])
E_ValidateBondControlNumberFormat(["End Step"])
N_ValidateBondControlNumberFormat_Node0{"The system validates the bond
control number format"}:::decision N_ValidateBondControlNumberFormat_Node0_action["The bond control number must
conform to established format rules
and pass validation checks"]:::main N_ValidateBondControlNumberFormat_Node0 -- Yes --> N_ValidateBondControlNumberFormat_Node0_action N_ValidateBondControlNumberFormat_Node0_action --> E_ValidateBondControlNumberFormat S_ValidateBondControlNumberFormat --> N_ValidateBondControlNumberFormat_Node0 N_ValidateBondControlNumberFormat_Node0 -- No --> E_ValidateBondControlNumberFormat
control number format"}:::decision N_ValidateBondControlNumberFormat_Node0_action["The bond control number must
conform to established format rules
and pass validation checks"]:::main N_ValidateBondControlNumberFormat_Node0 -- Yes --> N_ValidateBondControlNumberFormat_Node0_action N_ValidateBondControlNumberFormat_Node0_action --> E_ValidateBondControlNumberFormat S_ValidateBondControlNumberFormat --> N_ValidateBondControlNumberFormat_Node0 N_ValidateBondControlNumberFormat_Node0 -- No --> E_ValidateBondControlNumberFormat
File: GCX016.cbl
GIVEN:
An entry number has been classified as a bond control number
WHEN:
The system validates the bond control number format
THEN:
- The bond control number must conform to established format rules
- Pass validation checks
β Consolidated Acceptance Criteria
- The system validates the in-bond entry reference format → the in-bond entry reference must conform to established format rules and pass validation checks
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ValidateInBondEntryReferenceFormat(["Start Step"])
E_ValidateInBondEntryReferenceFormat(["End Step"])
N_ValidateInBondEntryReferenceFormat_Node0{"The system validates the in-bond
entry reference format"}:::decision N_ValidateInBondEntryReferenceFormat_Node0_action["The in-bond entry reference must
conform to established format rules
and pass validation checks"]:::main N_ValidateInBondEntryReferenceFormat_Node0 -- Yes --> N_ValidateInBondEntryReferenceFormat_Node0_action N_ValidateInBondEntryReferenceFormat_Node0_action --> E_ValidateInBondEntryReferenceFormat S_ValidateInBondEntryReferenceFormat --> N_ValidateInBondEntryReferenceFormat_Node0 N_ValidateInBondEntryReferenceFormat_Node0 -- No --> E_ValidateInBondEntryReferenceFormat
entry reference format"}:::decision N_ValidateInBondEntryReferenceFormat_Node0_action["The in-bond entry reference must
conform to established format rules
and pass validation checks"]:::main N_ValidateInBondEntryReferenceFormat_Node0 -- Yes --> N_ValidateInBondEntryReferenceFormat_Node0_action N_ValidateInBondEntryReferenceFormat_Node0_action --> E_ValidateInBondEntryReferenceFormat S_ValidateInBondEntryReferenceFormat --> N_ValidateInBondEntryReferenceFormat_Node0 N_ValidateInBondEntryReferenceFormat_Node0 -- No --> E_ValidateInBondEntryReferenceFormat
File: GCX016.cbl
GIVEN:
An entry number has been classified as an in-bond entry reference
WHEN:
The system validates the in-bond entry reference format
THEN:
- The in-bond entry reference must conform to established format rules
- Pass validation checks
β Consolidated Acceptance Criteria
- The system applies V37 specific validation rules → the entry number must pass V37 specific validation criteria including special format and business rule requirements
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ApplySpecialV37EntryValidation(["Start Step"])
E_ApplySpecialV37EntryValidation(["End Step"])
N_ApplySpecialV37EntryValidation_Node0{"The system applies V37 specific
validation rules"}:::decision N_ApplySpecialV37EntryValidation_Node0_action["The entry number must pass V37
specific validation criteria
including special format and
business rule requirements"]:::main N_ApplySpecialV37EntryValidation_Node0 -- Yes --> N_ApplySpecialV37EntryValidation_Node0_action N_ApplySpecialV37EntryValidation_Node0_action --> E_ApplySpecialV37EntryValidation S_ApplySpecialV37EntryValidation --> N_ApplySpecialV37EntryValidation_Node0 N_ApplySpecialV37EntryValidation_Node0 -- No --> E_ApplySpecialV37EntryValidation
validation rules"}:::decision N_ApplySpecialV37EntryValidation_Node0_action["The entry number must pass V37
specific validation criteria
including special format and
business rule requirements"]:::main N_ApplySpecialV37EntryValidation_Node0 -- Yes --> N_ApplySpecialV37EntryValidation_Node0_action N_ApplySpecialV37EntryValidation_Node0_action --> E_ApplySpecialV37EntryValidation S_ApplySpecialV37EntryValidation --> N_ApplySpecialV37EntryValidation_Node0 N_ApplySpecialV37EntryValidation_Node0 -- No --> E_ApplySpecialV37EntryValidation
File: GCX016.cbl
GIVEN:
An entry number has been validated for format and identified as V37 entry type
WHEN:
The system applies V37 specific validation rules
THEN:
- The entry number must pass v37 specific validation criteria including special format
- Business rule requirements
β Consolidated Acceptance Criteria
- The system applies standard validation rules → the entry number must pass standard validation criteria including format and business rule requirements
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_StandardEntryNumberValidation(["Start Step"])
E_StandardEntryNumberValidation(["End Step"])
N_StandardEntryNumberValidation_Node0{"The system applies standard
validation rules"}:::decision N_StandardEntryNumberValidation_Node0_action["The entry number must pass standard
validation criteria including format
and business rule requirements"]:::main N_StandardEntryNumberValidation_Node0 -- Yes --> N_StandardEntryNumberValidation_Node0_action N_StandardEntryNumberValidation_Node0_action --> E_StandardEntryNumberValidation S_StandardEntryNumberValidation --> N_StandardEntryNumberValidation_Node0 N_StandardEntryNumberValidation_Node0 -- No --> E_StandardEntryNumberValidation
validation rules"}:::decision N_StandardEntryNumberValidation_Node0_action["The entry number must pass standard
validation criteria including format
and business rule requirements"]:::main N_StandardEntryNumberValidation_Node0 -- Yes --> N_StandardEntryNumberValidation_Node0_action N_StandardEntryNumberValidation_Node0_action --> E_StandardEntryNumberValidation S_StandardEntryNumberValidation --> N_StandardEntryNumberValidation_Node0 N_StandardEntryNumberValidation_Node0 -- No --> E_StandardEntryNumberValidation
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
An entry number has been validated for format and is not a V37 entry type
WHEN:
The system applies standard validation rules
THEN:
- The entry number must pass standard validation criteria including format
- Business rule requirements
β Consolidated Acceptance Criteria
- The system checks if the entry number format is valid → if format is valid, proceed to check against cargo records, otherwise fail the validation process
- The system validates the entry number format → if format is invalid, handle V37 entry specially, otherwise proceed to in-bond type code processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_EntryNumberFormatValid(["Start Step"])
E_EntryNumberFormatValid(["End Step"])
N_EntryNumberFormatValid_Node0{"The system checks if the entry
number format is valid"}:::decision N_EntryNumberFormatValid_Node0_action["If format is valid, proceed to
check against cargo records,
otherwise fail the validation
process"]:::main N_EntryNumberFormatValid_Node0 -- Yes --> N_EntryNumberFormatValid_Node0_action N_EntryNumberFormatValid_Node0_action --> E_EntryNumberFormatValid S_EntryNumberFormatValid --> N_EntryNumberFormatValid_Node0 N_EntryNumberFormatValid_Node1{"The system validates the entry
number format"}:::decision N_EntryNumberFormatValid_Node1_action["If format is invalid, handle V37
entry specially, otherwise proceed
to in-bond type code processing"]:::main N_EntryNumberFormatValid_Node1 -- Yes --> N_EntryNumberFormatValid_Node1_action N_EntryNumberFormatValid_Node1_action --> E_EntryNumberFormatValid N_EntryNumberFormatValid_Node0 -- No --> N_EntryNumberFormatValid_Node1 N_EntryNumberFormatValid_Node1 -- No --> E_EntryNumberFormatValid
number format is valid"}:::decision N_EntryNumberFormatValid_Node0_action["If format is valid, proceed to
check against cargo records,
otherwise fail the validation
process"]:::main N_EntryNumberFormatValid_Node0 -- Yes --> N_EntryNumberFormatValid_Node0_action N_EntryNumberFormatValid_Node0_action --> E_EntryNumberFormatValid S_EntryNumberFormatValid --> N_EntryNumberFormatValid_Node0 N_EntryNumberFormatValid_Node1{"The system validates the entry
number format"}:::decision N_EntryNumberFormatValid_Node1_action["If format is invalid, handle V37
entry specially, otherwise proceed
to in-bond type code processing"]:::main N_EntryNumberFormatValid_Node1 -- Yes --> N_EntryNumberFormatValid_Node1_action N_EntryNumberFormatValid_Node1_action --> E_EntryNumberFormatValid N_EntryNumberFormatValid_Node0 -- No --> N_EntryNumberFormatValid_Node1 N_EntryNumberFormatValid_Node1 -- No --> E_EntryNumberFormatValid
File: GCX016.cbl
GIVEN:
An entry number has undergone format validation (either V37 special or standard)
WHEN:
The system checks if the entry number format is valid
THEN:
If format is valid, proceed to check against cargo records, otherwise fail the validation process
File: GCX016.cbl
GIVEN:
In-bond broker processing has started with an entry number
WHEN:
The system validates the entry number format
THEN:
If format is invalid, handle V37 entry specially, otherwise proceed to in-bond type code processing
β Consolidated Acceptance Criteria
- The system checks the entry number against cargo records → the entry number is compared with existing cargo records to determine if there is a match
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CheckEntryNumberAgainstCargoRecords(["Start Step"])
E_CheckEntryNumberAgainstCargoRecords(["End Step"])
N_CheckEntryNumberAgainstCargoRecords_Node0{"The system checks the entry number
against cargo records"}:::decision N_CheckEntryNumberAgainstCargoRecords_Node0_action["The entry number is compared with
existing cargo records to determine
if there is a match"]:::main N_CheckEntryNumberAgainstCargoRecords_Node0 -- Yes --> N_CheckEntryNumberAgainstCargoRecords_Node0_action N_CheckEntryNumberAgainstCargoRecords_Node0_action --> E_CheckEntryNumberAgainstCargoRecords S_CheckEntryNumberAgainstCargoRecords --> N_CheckEntryNumberAgainstCargoRecords_Node0 N_CheckEntryNumberAgainstCargoRecords_Node0 -- No --> E_CheckEntryNumberAgainstCargoRecords
against cargo records"}:::decision N_CheckEntryNumberAgainstCargoRecords_Node0_action["The entry number is compared with
existing cargo records to determine
if there is a match"]:::main N_CheckEntryNumberAgainstCargoRecords_Node0 -- Yes --> N_CheckEntryNumberAgainstCargoRecords_Node0_action N_CheckEntryNumberAgainstCargoRecords_Node0_action --> E_CheckEntryNumberAgainstCargoRecords S_CheckEntryNumberAgainstCargoRecords --> N_CheckEntryNumberAgainstCargoRecords_Node0 N_CheckEntryNumberAgainstCargoRecords_Node0 -- No --> E_CheckEntryNumberAgainstCargoRecords
File: GCX016.cbl
GIVEN:
An entry number has passed format validation
WHEN:
The system checks the entry number against cargo records
THEN:
The entry number is compared with existing cargo records to determine if there is a match
β Consolidated Acceptance Criteria
- The system verifies if there is a match → if entry number matches cargo records, set validation success, otherwise log mismatch error
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_EntryNumberMatchesCargo(["Start Step"])
E_EntryNumberMatchesCargo(["End Step"])
N_EntryNumberMatchesCargo_Node0{"The system verifies if there is a
match"}:::decision N_EntryNumberMatchesCargo_Node0_action["If entry number matches cargo
records, set validation success,
otherwise log mismatch error"]:::main N_EntryNumberMatchesCargo_Node0 -- Yes --> N_EntryNumberMatchesCargo_Node0_action N_EntryNumberMatchesCargo_Node0_action --> E_EntryNumberMatchesCargo S_EntryNumberMatchesCargo --> N_EntryNumberMatchesCargo_Node0 N_EntryNumberMatchesCargo_Node0 -- No --> E_EntryNumberMatchesCargo
match"}:::decision N_EntryNumberMatchesCargo_Node0_action["If entry number matches cargo
records, set validation success,
otherwise log mismatch error"]:::main N_EntryNumberMatchesCargo_Node0 -- Yes --> N_EntryNumberMatchesCargo_Node0_action N_EntryNumberMatchesCargo_Node0_action --> E_EntryNumberMatchesCargo S_EntryNumberMatchesCargo --> N_EntryNumberMatchesCargo_Node0 N_EntryNumberMatchesCargo_Node0 -- No --> E_EntryNumberMatchesCargo
File: GCX016.cbl
GIVEN:
An entry number has been checked against cargo records
WHEN:
The system verifies if there is a match
THEN:
If entry number matches cargo records, set validation success, otherwise log mismatch error
β Consolidated Acceptance Criteria
- The system sets validation success status → the entry number validation success flag is set and processing continues with broker validation checks
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetEntryNumberValidationSuccess(["Start Step"])
E_SetEntryNumberValidationSuccess(["End Step"])
N_SetEntryNumberValidationSuccess_Node0{"The system sets validation success
status"}:::decision N_SetEntryNumberValidationSuccess_Node0_action["The entry number validation success
flag is set and processing continues
with broker validation checks"]:::main N_SetEntryNumberValidationSuccess_Node0 -- Yes --> N_SetEntryNumberValidationSuccess_Node0_action N_SetEntryNumberValidationSuccess_Node0_action --> E_SetEntryNumberValidationSuccess S_SetEntryNumberValidationSuccess --> N_SetEntryNumberValidationSuccess_Node0 N_SetEntryNumberValidationSuccess_Node0 -- No --> E_SetEntryNumberValidationSuccess
status"}:::decision N_SetEntryNumberValidationSuccess_Node0_action["The entry number validation success
flag is set and processing continues
with broker validation checks"]:::main N_SetEntryNumberValidationSuccess_Node0 -- Yes --> N_SetEntryNumberValidationSuccess_Node0_action N_SetEntryNumberValidationSuccess_Node0_action --> E_SetEntryNumberValidationSuccess S_SetEntryNumberValidationSuccess --> N_SetEntryNumberValidationSuccess_Node0 N_SetEntryNumberValidationSuccess_Node0 -- No --> E_SetEntryNumberValidationSuccess
File: GCX016.cbl
GIVEN:
An entry number matches the cargo records
WHEN:
The system sets validation success status
THEN:
- The entry number validation success flag is set
- Processing continues with broker validation checks
β Consolidated Acceptance Criteria
- The system logs the mismatch error → an entry number mismatch error is logged and validation process fails
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogEntryNumberMismatchError(["Start Step"])
E_LogEntryNumberMismatchError(["End Step"])
N_LogEntryNumberMismatchError_Node0{"The system logs the mismatch error"}:::decision
N_LogEntryNumberMismatchError_Node0_action["An entry number mismatch error is
logged and validation process fails"]:::exclusion N_LogEntryNumberMismatchError_Node0 -- Yes -->|Alternative| N_LogEntryNumberMismatchError_Node0_action N_LogEntryNumberMismatchError_Node0_action --> E_LogEntryNumberMismatchError S_LogEntryNumberMismatchError --> N_LogEntryNumberMismatchError_Node0 N_LogEntryNumberMismatchError_Node0 -- No --> E_LogEntryNumberMismatchError
logged and validation process fails"]:::exclusion N_LogEntryNumberMismatchError_Node0 -- Yes -->|Alternative| N_LogEntryNumberMismatchError_Node0_action N_LogEntryNumberMismatchError_Node0_action --> E_LogEntryNumberMismatchError S_LogEntryNumberMismatchError --> N_LogEntryNumberMismatchError_Node0 N_LogEntryNumberMismatchError_Node0 -- No --> E_LogEntryNumberMismatchError
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
An entry number does not match cargo records
WHEN:
The system logs the mismatch error
THEN:
- An entry number mismatch error is logged
- Validation process fails
β Consolidated Acceptance Criteria
- The system checks if it is a broker entry number → if it is a broker entry number, validate against broker tables, otherwise check if it is a bond control number
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_BrokerEntryNumber(["Start Step"])
E_BrokerEntryNumber(["End Step"])
N_BrokerEntryNumber_Node0{"The system checks if it is a broker
entry number"}:::decision N_BrokerEntryNumber_Node0_action["If it is a broker entry number,
validate against broker tables,
otherwise check if it is a bond
control number"]:::main N_BrokerEntryNumber_Node0 -- Yes --> N_BrokerEntryNumber_Node0_action N_BrokerEntryNumber_Node0_action --> E_BrokerEntryNumber S_BrokerEntryNumber --> N_BrokerEntryNumber_Node0 N_BrokerEntryNumber_Node0 -- No --> E_BrokerEntryNumber
entry number"}:::decision N_BrokerEntryNumber_Node0_action["If it is a broker entry number,
validate against broker tables,
otherwise check if it is a bond
control number"]:::main N_BrokerEntryNumber_Node0 -- Yes --> N_BrokerEntryNumber_Node0_action N_BrokerEntryNumber_Node0_action --> E_BrokerEntryNumber S_BrokerEntryNumber --> N_BrokerEntryNumber_Node0 N_BrokerEntryNumber_Node0 -- No --> E_BrokerEntryNumber
File: GCX016.cbl
GIVEN:
An entry number has been successfully validated against cargo records
WHEN:
The system checks if it is a broker entry number
THEN:
If it is a broker entry number, validate against broker tables, otherwise check if it is a bond control number
β Consolidated Acceptance Criteria
- The system validates against broker tables → the broker entry number must exist in broker tables and meet authorization requirements
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ValidateAgainstBrokerTables(["Start Step"])
E_ValidateAgainstBrokerTables(["End Step"])
N_ValidateAgainstBrokerTables_Node0{"The system validates against broker
tables"}:::decision N_ValidateAgainstBrokerTables_Node0_action["The broker entry number must exist
in broker tables and meet
authorization requirements"]:::main N_ValidateAgainstBrokerTables_Node0 -- Yes --> N_ValidateAgainstBrokerTables_Node0_action N_ValidateAgainstBrokerTables_Node0_action --> E_ValidateAgainstBrokerTables S_ValidateAgainstBrokerTables --> N_ValidateAgainstBrokerTables_Node0 N_ValidateAgainstBrokerTables_Node0 -- No --> E_ValidateAgainstBrokerTables
tables"}:::decision N_ValidateAgainstBrokerTables_Node0_action["The broker entry number must exist
in broker tables and meet
authorization requirements"]:::main N_ValidateAgainstBrokerTables_Node0 -- Yes --> N_ValidateAgainstBrokerTables_Node0_action N_ValidateAgainstBrokerTables_Node0_action --> E_ValidateAgainstBrokerTables S_ValidateAgainstBrokerTables --> N_ValidateAgainstBrokerTables_Node0 N_ValidateAgainstBrokerTables_Node0 -- No --> E_ValidateAgainstBrokerTables
File: GCX016.cbl
GIVEN:
An entry number has been identified as a broker entry number
WHEN:
The system validates against broker tables
THEN:
- The broker entry number must exist in broker tables
- Meet authorization requirements
β Consolidated Acceptance Criteria
- The system checks if it is a bond control number → if it is a bond control number, validate against bond records, otherwise check if it is an in-bond reference
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_BondControlNumber(["Start Step"])
E_BondControlNumber(["End Step"])
N_BondControlNumber_Node0{"The system checks if it is a bond
control number"}:::decision N_BondControlNumber_Node0_action["If it is a bond control number,
validate against bond records,
otherwise check if it is an in-bond
reference"]:::main N_BondControlNumber_Node0 -- Yes --> N_BondControlNumber_Node0_action N_BondControlNumber_Node0_action --> E_BondControlNumber S_BondControlNumber --> N_BondControlNumber_Node0 N_BondControlNumber_Node0 -- No --> E_BondControlNumber
control number"}:::decision N_BondControlNumber_Node0_action["If it is a bond control number,
validate against bond records,
otherwise check if it is an in-bond
reference"]:::main N_BondControlNumber_Node0 -- Yes --> N_BondControlNumber_Node0_action N_BondControlNumber_Node0_action --> E_BondControlNumber S_BondControlNumber --> N_BondControlNumber_Node0 N_BondControlNumber_Node0 -- No --> E_BondControlNumber
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
An entry number is not a broker entry number
WHEN:
The system checks if it is a bond control number
THEN:
If it is a bond control number, validate against bond records, otherwise check if it is an in-bond reference
β Consolidated Acceptance Criteria
- The system validates against bond records → the bond control number must exist in bond records and meet validity requirements
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ValidateAgainstBondRecords(["Start Step"])
E_ValidateAgainstBondRecords(["End Step"])
N_ValidateAgainstBondRecords_Node0{"The system validates against bond
records"}:::decision N_ValidateAgainstBondRecords_Node0_action["The bond control number must exist
in bond records and meet validity
requirements"]:::main N_ValidateAgainstBondRecords_Node0 -- Yes --> N_ValidateAgainstBondRecords_Node0_action N_ValidateAgainstBondRecords_Node0_action --> E_ValidateAgainstBondRecords S_ValidateAgainstBondRecords --> N_ValidateAgainstBondRecords_Node0 N_ValidateAgainstBondRecords_Node0 -- No --> E_ValidateAgainstBondRecords
records"}:::decision N_ValidateAgainstBondRecords_Node0_action["The bond control number must exist
in bond records and meet validity
requirements"]:::main N_ValidateAgainstBondRecords_Node0 -- Yes --> N_ValidateAgainstBondRecords_Node0_action N_ValidateAgainstBondRecords_Node0_action --> E_ValidateAgainstBondRecords S_ValidateAgainstBondRecords --> N_ValidateAgainstBondRecords_Node0 N_ValidateAgainstBondRecords_Node0 -- No --> E_ValidateAgainstBondRecords
File: GCX016.cbl
GIVEN:
An entry number has been identified as a bond control number
WHEN:
The system validates against bond records
THEN:
- The bond control number must exist in bond records
- Meet validity requirements
β Consolidated Acceptance Criteria
- The system checks if it is an in-bond reference → if it is an in-bond reference, validate against in-bond records, otherwise complete validation process
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_InBondReference(["Start Step"])
E_InBondReference(["End Step"])
N_InBondReference_Node0{"The system checks if it is an
in-bond reference"}:::decision N_InBondReference_Node0_action["If it is an in-bond reference,
validate against in-bond records,
otherwise complete validation
process"]:::main N_InBondReference_Node0 -- Yes --> N_InBondReference_Node0_action N_InBondReference_Node0_action --> E_InBondReference S_InBondReference --> N_InBondReference_Node0 N_InBondReference_Node0 -- No --> E_InBondReference
in-bond reference"}:::decision N_InBondReference_Node0_action["If it is an in-bond reference,
validate against in-bond records,
otherwise complete validation
process"]:::main N_InBondReference_Node0 -- Yes --> N_InBondReference_Node0_action N_InBondReference_Node0_action --> E_InBondReference S_InBondReference --> N_InBondReference_Node0 N_InBondReference_Node0 -- No --> E_InBondReference
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
An entry number is not a broker entry number or bond control number
WHEN:
The system checks if it is an in-bond reference
THEN:
If it is an in-bond reference, validate against in-bond records, otherwise complete validation process
β Consolidated Acceptance Criteria
- The system validates against in-bond records → the in-bond reference must exist in in-bond records and meet validity requirements
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ValidateAgainstInBondRecords(["Start Step"])
E_ValidateAgainstInBondRecords(["End Step"])
N_ValidateAgainstInBondRecords_Node0{"The system validates against
in-bond records"}:::decision N_ValidateAgainstInBondRecords_Node0_action["The in-bond reference must exist in
in-bond records and meet validity
requirements"]:::main N_ValidateAgainstInBondRecords_Node0 -- Yes --> N_ValidateAgainstInBondRecords_Node0_action N_ValidateAgainstInBondRecords_Node0_action --> E_ValidateAgainstInBondRecords S_ValidateAgainstInBondRecords --> N_ValidateAgainstInBondRecords_Node0 N_ValidateAgainstInBondRecords_Node0 -- No --> E_ValidateAgainstInBondRecords
in-bond records"}:::decision N_ValidateAgainstInBondRecords_Node0_action["The in-bond reference must exist in
in-bond records and meet validity
requirements"]:::main N_ValidateAgainstInBondRecords_Node0 -- Yes --> N_ValidateAgainstInBondRecords_Node0_action N_ValidateAgainstInBondRecords_Node0_action --> E_ValidateAgainstInBondRecords S_ValidateAgainstInBondRecords --> N_ValidateAgainstInBondRecords_Node0 N_ValidateAgainstInBondRecords_Node0 -- No --> E_ValidateAgainstInBondRecords
File: GCX016.cbl
GIVEN:
An entry number has been identified as an in-bond reference
WHEN:
The system validates against in-bond records
THEN:
- The in-bond reference must exist in in-bond records
- Meet validity requirements
β Consolidated Acceptance Criteria
- The system sets validation complete status → the entry number validation process is marked as complete and successful
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetEntryNumberValidationComplete(["Start Step"])
E_SetEntryNumberValidationComplete(["End Step"])
N_SetEntryNumberValidationComplete_Node0{"The system sets validation complete
status"}:::decision N_SetEntryNumberValidationComplete_Node0_action["The entry number validation process
is marked as complete and successful"]:::main N_SetEntryNumberValidationComplete_Node0 -- Yes --> N_SetEntryNumberValidationComplete_Node0_action N_SetEntryNumberValidationComplete_Node0_action --> E_SetEntryNumberValidationComplete S_SetEntryNumberValidationComplete --> N_SetEntryNumberValidationComplete_Node0 N_SetEntryNumberValidationComplete_Node0 -- No --> E_SetEntryNumberValidationComplete
status"}:::decision N_SetEntryNumberValidationComplete_Node0_action["The entry number validation process
is marked as complete and successful"]:::main N_SetEntryNumberValidationComplete_Node0 -- Yes --> N_SetEntryNumberValidationComplete_Node0_action N_SetEntryNumberValidationComplete_Node0_action --> E_SetEntryNumberValidationComplete S_SetEntryNumberValidationComplete --> N_SetEntryNumberValidationComplete_Node0 N_SetEntryNumberValidationComplete_Node0 -- No --> E_SetEntryNumberValidationComplete
File: GCX016.cbl
GIVEN:
All required entry number validations have been completed successfully
WHEN:
The system sets validation complete status
THEN:
- The entry number validation process is marked as complete
- Successful
β Consolidated Acceptance Criteria
- The system processes validation failure → the entry number validation process is marked as failed and appropriate error handling is initiated
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_EntryNumberValidationFailed(["Start Step"])
E_EntryNumberValidationFailed(["End Step"])
N_EntryNumberValidationFailed_Node0{"The system processes validation
failure"}:::decision N_EntryNumberValidationFailed_Node0_action["The entry number validation process
is marked as failed and appropriate
error handling is initiated"]:::main N_EntryNumberValidationFailed_Node0 -- Yes --> N_EntryNumberValidationFailed_Node0_action N_EntryNumberValidationFailed_Node0_action --> E_EntryNumberValidationFailed S_EntryNumberValidationFailed --> N_EntryNumberValidationFailed_Node0 N_EntryNumberValidationFailed_Node0 -- No --> E_EntryNumberValidationFailed
failure"}:::decision N_EntryNumberValidationFailed_Node0_action["The entry number validation process
is marked as failed and appropriate
error handling is initiated"]:::main N_EntryNumberValidationFailed_Node0 -- Yes --> N_EntryNumberValidationFailed_Node0_action N_EntryNumberValidationFailed_Node0_action --> E_EntryNumberValidationFailed S_EntryNumberValidationFailed --> N_EntryNumberValidationFailed_Node0 N_EntryNumberValidationFailed_Node0 -- No --> E_EntryNumberValidationFailed
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
Any entry number validation step has failed or entry number is not present
WHEN:
The system processes validation failure
THEN:
- The entry number validation process is marked as failed
- Appropriate error handling is initiated
β Consolidated Acceptance Criteria
- The system checks if the disposition code affects release quantities → the system should proceed with quantity processing only if the disposition code has quantity impact, otherwise skip quantity calculations
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_DispositionCodeAffectsQuantities(["Start Step"])
E_DispositionCodeAffectsQuantities(["End Step"])
N_DispositionCodeAffectsQuantities_Node0{"The system checks if the
disposition code affects release
quantities"}:::decision N_DispositionCodeAffectsQuantities_Node0_action["The system should proceed with
quantity processing only if the
disposition code has quantity
impact, otherwise skip quantity
calculations"]:::main N_DispositionCodeAffectsQuantities_Node0 -- Yes --> N_DispositionCodeAffectsQuantities_Node0_action N_DispositionCodeAffectsQuantities_Node0_action --> E_DispositionCodeAffectsQuantities S_DispositionCodeAffectsQuantities --> N_DispositionCodeAffectsQuantities_Node0 N_DispositionCodeAffectsQuantities_Node0 -- No --> E_DispositionCodeAffectsQuantities
disposition code affects release
quantities"}:::decision N_DispositionCodeAffectsQuantities_Node0_action["The system should proceed with
quantity processing only if the
disposition code has quantity
impact, otherwise skip quantity
calculations"]:::main N_DispositionCodeAffectsQuantities_Node0 -- Yes --> N_DispositionCodeAffectsQuantities_Node0_action N_DispositionCodeAffectsQuantities_Node0_action --> E_DispositionCodeAffectsQuantities S_DispositionCodeAffectsQuantities --> N_DispositionCodeAffectsQuantities_Node0 N_DispositionCodeAffectsQuantities_Node0 -- No --> E_DispositionCodeAffectsQuantities
File: GCX016.cbl
GIVEN:
A disposition code is being processed for cargo
WHEN:
The system checks if the disposition code affects release quantities
THEN:
The system should proceed with quantity processing only if the disposition code has quantity impact, otherwise skip quantity calculations
β Consolidated Acceptance Criteria
- The system processes the quantity addition → the system should add the X4 segment quantity to the current cargo release quantity
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AddtoReleaseQuantity(["Start Step"])
E_AddtoReleaseQuantity(["End Step"])
N_AddtoReleaseQuantity_Node0{"The system processes the quantity
addition"}:::decision N_AddtoReleaseQuantity_Node0_action["The system should add the X4
segment quantity to the current
cargo release quantity"]:::main N_AddtoReleaseQuantity_Node0 -- Yes --> N_AddtoReleaseQuantity_Node0_action N_AddtoReleaseQuantity_Node0_action --> E_AddtoReleaseQuantity S_AddtoReleaseQuantity --> N_AddtoReleaseQuantity_Node0 N_AddtoReleaseQuantity_Node0 -- No --> E_AddtoReleaseQuantity
addition"}:::decision N_AddtoReleaseQuantity_Node0_action["The system should add the X4
segment quantity to the current
cargo release quantity"]:::main N_AddtoReleaseQuantity_Node0 -- Yes --> N_AddtoReleaseQuantity_Node0_action N_AddtoReleaseQuantity_Node0_action --> E_AddtoReleaseQuantity S_AddtoReleaseQuantity --> N_AddtoReleaseQuantity_Node0 N_AddtoReleaseQuantity_Node0 -- No --> E_AddtoReleaseQuantity
File: GCX016.cbl
GIVEN:
A disposition code with ADD_QUANTITY action and a valid quantity value from X4 segment
WHEN:
The system processes the quantity addition
THEN:
The system should add the X4 segment quantity to the current cargo release quantity
β Consolidated Acceptance Criteria
- The system processes the quantity subtraction → the system should subtract the X4 segment quantity from the current cargo release quantity
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SubtractfromReleaseQuantity(["Start Step"])
E_SubtractfromReleaseQuantity(["End Step"])
N_SubtractfromReleaseQuantity_Node0{"The system processes the quantity
subtraction"}:::decision N_SubtractfromReleaseQuantity_Node0_action["The system should subtract the X4
segment quantity from the current
cargo release quantity"]:::main N_SubtractfromReleaseQuantity_Node0 -- Yes --> N_SubtractfromReleaseQuantity_Node0_action N_SubtractfromReleaseQuantity_Node0_action --> E_SubtractfromReleaseQuantity S_SubtractfromReleaseQuantity --> N_SubtractfromReleaseQuantity_Node0 N_SubtractfromReleaseQuantity_Node0 -- No --> E_SubtractfromReleaseQuantity
subtraction"}:::decision N_SubtractfromReleaseQuantity_Node0_action["The system should subtract the X4
segment quantity from the current
cargo release quantity"]:::main N_SubtractfromReleaseQuantity_Node0 -- Yes --> N_SubtractfromReleaseQuantity_Node0_action N_SubtractfromReleaseQuantity_Node0_action --> E_SubtractfromReleaseQuantity S_SubtractfromReleaseQuantity --> N_SubtractfromReleaseQuantity_Node0 N_SubtractfromReleaseQuantity_Node0 -- No --> E_SubtractfromReleaseQuantity
File: GCX016.cbl
GIVEN:
A disposition code with SUBTRACT_QUANTITY action and a valid quantity value from X4 segment
WHEN:
The system processes the quantity subtraction
THEN:
The system should subtract the X4 segment quantity from the current cargo release quantity
β Consolidated Acceptance Criteria
- The release quantity exceeds the total cargo quantity → the system should set the release quantity equal to the total cargo quantity to prevent over-release
- The system compares release quantity to total quantity → if release quantity is greater than total quantity, the system identifies this as an excessive release condition
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ReleaseQuantityTotalQuantity(["Start Step"])
E_ReleaseQuantityTotalQuantity(["End Step"])
N_ReleaseQuantityTotalQuantity_Node0{"The release quantity exceeds the
total cargo quantity"}:::decision N_ReleaseQuantityTotalQuantity_Node0_action["The system should set the release
quantity equal to the total cargo
quantity to prevent over-release"]:::main N_ReleaseQuantityTotalQuantity_Node0 -- Yes --> N_ReleaseQuantityTotalQuantity_Node0_action N_ReleaseQuantityTotalQuantity_Node0_action --> E_ReleaseQuantityTotalQuantity S_ReleaseQuantityTotalQuantity --> N_ReleaseQuantityTotalQuantity_Node0 N_ReleaseQuantityTotalQuantity_Node1{"The system compares release
quantity to total quantity"}:::decision N_ReleaseQuantityTotalQuantity_Node1_action["If release quantity is greater than
total quantity, the system
identifies this as an excessive
release condition"]:::main N_ReleaseQuantityTotalQuantity_Node1 -- Yes --> N_ReleaseQuantityTotalQuantity_Node1_action N_ReleaseQuantityTotalQuantity_Node1_action --> E_ReleaseQuantityTotalQuantity N_ReleaseQuantityTotalQuantity_Node0 -- No --> N_ReleaseQuantityTotalQuantity_Node1 N_ReleaseQuantityTotalQuantity_Node1 -- No --> E_ReleaseQuantityTotalQuantity
total cargo quantity"}:::decision N_ReleaseQuantityTotalQuantity_Node0_action["The system should set the release
quantity equal to the total cargo
quantity to prevent over-release"]:::main N_ReleaseQuantityTotalQuantity_Node0 -- Yes --> N_ReleaseQuantityTotalQuantity_Node0_action N_ReleaseQuantityTotalQuantity_Node0_action --> E_ReleaseQuantityTotalQuantity S_ReleaseQuantityTotalQuantity --> N_ReleaseQuantityTotalQuantity_Node0 N_ReleaseQuantityTotalQuantity_Node1{"The system compares release
quantity to total quantity"}:::decision N_ReleaseQuantityTotalQuantity_Node1_action["If release quantity is greater than
total quantity, the system
identifies this as an excessive
release condition"]:::main N_ReleaseQuantityTotalQuantity_Node1 -- Yes --> N_ReleaseQuantityTotalQuantity_Node1_action N_ReleaseQuantityTotalQuantity_Node1_action --> E_ReleaseQuantityTotalQuantity N_ReleaseQuantityTotalQuantity_Node0 -- No --> N_ReleaseQuantityTotalQuantity_Node1 N_ReleaseQuantityTotalQuantity_Node1 -- No --> E_ReleaseQuantityTotalQuantity
File: GCX016.cbl
GIVEN:
A calculated release quantity and the total cargo quantity
WHEN:
The release quantity exceeds the total cargo quantity
THEN:
The system should set the release quantity equal to the total cargo quantity to prevent over-release
File: GCX016.cbl
GIVEN:
A calculated release quantity and total cargo quantity
WHEN:
The system compares release quantity to total quantity
THEN:
If release quantity is greater than total quantity, the system identifies this as an excessive release condition
β Consolidated Acceptance Criteria
- The release quantity is less than zero → the system should set the release quantity to zero to prevent negative release values
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ReleaseQuantity0(["Start Step"])
E_ReleaseQuantity0(["End Step"])
N_ReleaseQuantity0_Node0{"The release quantity is less than
zero"}:::decision N_ReleaseQuantity0_Node0_action["The system should set the release
quantity to zero to prevent negative
release values"]:::main N_ReleaseQuantity0_Node0 -- Yes --> N_ReleaseQuantity0_Node0_action N_ReleaseQuantity0_Node0_action --> E_ReleaseQuantity0 S_ReleaseQuantity0 --> N_ReleaseQuantity0_Node0 N_ReleaseQuantity0_Node0 -- No --> E_ReleaseQuantity0
zero"}:::decision N_ReleaseQuantity0_Node0_action["The system should set the release
quantity to zero to prevent negative
release values"]:::main N_ReleaseQuantity0_Node0 -- Yes --> N_ReleaseQuantity0_Node0_action N_ReleaseQuantity0_Node0_action --> E_ReleaseQuantity0 S_ReleaseQuantity0 --> N_ReleaseQuantity0_Node0 N_ReleaseQuantity0_Node0 -- No --> E_ReleaseQuantity0
File: GCX016.cbl
GIVEN:
A calculated release quantity that may be negative
WHEN:
The release quantity is less than zero
THEN:
The system should set the release quantity to zero to prevent negative release values
β Consolidated Acceptance Criteria
- The broker quantity does not match the manifest quantity → the system should generate a quantity mismatch notification for broker review
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_BrokerQuantityMatchesManifest(["Start Step"])
E_BrokerQuantityMatchesManifest(["End Step"])
N_BrokerQuantityMatchesManifest_Node0{"The broker quantity does not match
the manifest quantity"}:::decision N_BrokerQuantityMatchesManifest_Node0_action["The system should generate a
quantity mismatch notification for
broker review"]:::main N_BrokerQuantityMatchesManifest_Node0 -- Yes --> N_BrokerQuantityMatchesManifest_Node0_action N_BrokerQuantityMatchesManifest_Node0_action --> E_BrokerQuantityMatchesManifest S_BrokerQuantityMatchesManifest --> N_BrokerQuantityMatchesManifest_Node0 N_BrokerQuantityMatchesManifest_Node0 -- No --> E_BrokerQuantityMatchesManifest
the manifest quantity"}:::decision N_BrokerQuantityMatchesManifest_Node0_action["The system should generate a
quantity mismatch notification for
broker review"]:::main N_BrokerQuantityMatchesManifest_Node0 -- Yes --> N_BrokerQuantityMatchesManifest_Node0_action N_BrokerQuantityMatchesManifest_Node0_action --> E_BrokerQuantityMatchesManifest S_BrokerQuantityMatchesManifest --> N_BrokerQuantityMatchesManifest_Node0 N_BrokerQuantityMatchesManifest_Node0 -- No --> E_BrokerQuantityMatchesManifest
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
A broker entry quantity and the corresponding manifest quantity
WHEN:
The broker quantity does not match the manifest quantity
THEN:
The system should generate a quantity mismatch notification for broker review
β Consolidated Acceptance Criteria
- The system processes the mismatch notification → the system should generate a detailed notification message and prepare it for broker delivery
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GenerateQuantityMismatchNotification(["Start Step"])
E_GenerateQuantityMismatchNotification(["End Step"])
N_GenerateQuantityMismatchNotification_Node0{"The system processes the mismatch
notification"}:::decision N_GenerateQuantityMismatchNotification_Node0_action["The system should generate a
detailed notification message and
prepare it for broker delivery"]:::main N_GenerateQuantityMismatchNotification_Node0 -- Yes --> N_GenerateQuantityMismatchNotification_Node0_action N_GenerateQuantityMismatchNotification_Node0_action --> E_GenerateQuantityMismatchNotification S_GenerateQuantityMismatchNotification --> N_GenerateQuantityMismatchNotification_Node0 N_GenerateQuantityMismatchNotification_Node0 -- No --> E_GenerateQuantityMismatchNotification
notification"}:::decision N_GenerateQuantityMismatchNotification_Node0_action["The system should generate a
detailed notification message and
prepare it for broker delivery"]:::main N_GenerateQuantityMismatchNotification_Node0 -- Yes --> N_GenerateQuantityMismatchNotification_Node0_action N_GenerateQuantityMismatchNotification_Node0_action --> E_GenerateQuantityMismatchNotification S_GenerateQuantityMismatchNotification --> N_GenerateQuantityMismatchNotification_Node0 N_GenerateQuantityMismatchNotification_Node0 -- No --> E_GenerateQuantityMismatchNotification
File: GCX016.cbl
GIVEN:
A detected quantity mismatch between broker entry and manifest
WHEN:
The system processes the mismatch notification
THEN:
- The system should generate a detailed notification message
- Prepare it for broker delivery
β Consolidated Acceptance Criteria
- The system sends the notification → the system should deliver the notification via email to the appropriate broker
- The system initiates email transmission to the broker → the system sends the email notification and logs the transmission status
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SendEmailtoBroker(["Start Step"])
E_SendEmailtoBroker(["End Step"])
N_SendEmailtoBroker_Node0{"The system sends the notification"}:::decision
N_SendEmailtoBroker_Node0_action["The system should deliver the
notification via email to the
appropriate broker"]:::main N_SendEmailtoBroker_Node0 -- Yes --> N_SendEmailtoBroker_Node0_action N_SendEmailtoBroker_Node0_action --> E_SendEmailtoBroker S_SendEmailtoBroker --> N_SendEmailtoBroker_Node0 N_SendEmailtoBroker_Node1{"The system initiates email
transmission to the broker"}:::decision N_SendEmailtoBroker_Node1_action["The system sends the email
notification and logs the
transmission status"]:::main N_SendEmailtoBroker_Node1 -- Yes --> N_SendEmailtoBroker_Node1_action N_SendEmailtoBroker_Node1_action --> E_SendEmailtoBroker N_SendEmailtoBroker_Node0 -- No --> N_SendEmailtoBroker_Node1 N_SendEmailtoBroker_Node1 -- No --> E_SendEmailtoBroker
notification via email to the
appropriate broker"]:::main N_SendEmailtoBroker_Node0 -- Yes --> N_SendEmailtoBroker_Node0_action N_SendEmailtoBroker_Node0_action --> E_SendEmailtoBroker S_SendEmailtoBroker --> N_SendEmailtoBroker_Node0 N_SendEmailtoBroker_Node1{"The system initiates email
transmission to the broker"}:::decision N_SendEmailtoBroker_Node1_action["The system sends the email
notification and logs the
transmission status"]:::main N_SendEmailtoBroker_Node1 -- Yes --> N_SendEmailtoBroker_Node1_action N_SendEmailtoBroker_Node1_action --> E_SendEmailtoBroker N_SendEmailtoBroker_Node0 -- No --> N_SendEmailtoBroker_Node1 N_SendEmailtoBroker_Node1 -- No --> E_SendEmailtoBroker
File: GCX016.cbl
GIVEN:
A prepared quantity mismatch notification and broker contact information
WHEN:
The system sends the notification
THEN:
The system should deliver the notification via email to the appropriate broker
File: GCX016.cbl
GIVEN:
The CIH hold email message and subject line have been formatted completely
WHEN:
The system initiates email transmission to the broker
THEN:
- The system sends the email notification
- Logs the transmission status
β Consolidated Acceptance Criteria
- The release quantity is greater than zero but less than the total quantity → the system should identify this as a partial release scenario requiring special handling
- The cargo undergoes partial release processing → the system must set hold on piece counts status (HOLDPCS) for the unreleased quantity portion
- If if this is a partial release scenario → if released quantity is less than total quantity, set PTT status with partial quantity, otherwise set full PTT release status
- The system compares released quantities against total cargo quantities → the system identifies partial release scenarios where released quantity is less than total quantity
- The released quantity is less than the total cargo quantity → the system sets hold on piece counts status to indicate partial release
- The system checks for partial release conditions → if partial release is detected, preserve PTT status for remaining quantity, otherwise clear PTT status for released portion
- If release processing type → if cargo qualifies for partial release processing, route to partial release workflow, otherwise continue with full release
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_PartialReleaseScenario(["Start Step"])
E_PartialReleaseScenario(["End Step"])
N_PartialReleaseScenario_Node0{"The release quantity is greater
than zero but less than the total
quantity"}:::decision N_PartialReleaseScenario_Node0_action["The system should identify this as
a partial release scenario requiring
special handling"]:::main N_PartialReleaseScenario_Node0 -- Yes --> N_PartialReleaseScenario_Node0_action N_PartialReleaseScenario_Node0_action --> E_PartialReleaseScenario S_PartialReleaseScenario --> N_PartialReleaseScenario_Node0 N_PartialReleaseScenario_Node1{"The cargo undergoes partial release
processing"}:::decision N_PartialReleaseScenario_Node1_action["The system must set hold on piece
counts status HOLDPCS for the
unreleased quantity portion"]:::main N_PartialReleaseScenario_Node1 -- Yes --> N_PartialReleaseScenario_Node1_action N_PartialReleaseScenario_Node1_action --> E_PartialReleaseScenario N_PartialReleaseScenario_Node0 -- No --> N_PartialReleaseScenario_Node1 N_PartialReleaseScenario_Node2{"The system evaluates if this is a
partial release scenario"}:::decision N_PartialReleaseScenario_Node2_action["If released quantity is less than
total quantity, set PTT status with
partial quantity, otherwise set full
PTT release status"]:::main N_PartialReleaseScenario_Node2 -- Yes --> N_PartialReleaseScenario_Node2_action N_PartialReleaseScenario_Node2_action --> E_PartialReleaseScenario N_PartialReleaseScenario_Node1 -- No --> N_PartialReleaseScenario_Node2 N_PartialReleaseScenario_Node3{"The system compares released
quantities against total cargo
quantities"}:::decision N_PartialReleaseScenario_Node3_action["The system identifies partial
release scenarios where released
quantity is less than total quantity"]:::main N_PartialReleaseScenario_Node3 -- Yes --> N_PartialReleaseScenario_Node3_action N_PartialReleaseScenario_Node3_action --> E_PartialReleaseScenario N_PartialReleaseScenario_Node2 -- No --> N_PartialReleaseScenario_Node3 N_PartialReleaseScenario_Node4{"The released quantity is less than
the total cargo quantity"}:::decision N_PartialReleaseScenario_Node4_action["The system sets hold on piece
counts status to indicate partial
release"]:::main N_PartialReleaseScenario_Node4 -- Yes --> N_PartialReleaseScenario_Node4_action N_PartialReleaseScenario_Node4_action --> E_PartialReleaseScenario N_PartialReleaseScenario_Node3 -- No --> N_PartialReleaseScenario_Node4 N_PartialReleaseScenario_Node5{"The system checks for partial
release conditions"}:::decision N_PartialReleaseScenario_Node5_action["If partial release is detected,
preserve PTT status for remaining
quantity, otherwise clear PTT status
for released portion"]:::main N_PartialReleaseScenario_Node5 -- Yes --> N_PartialReleaseScenario_Node5_action N_PartialReleaseScenario_Node5_action --> E_PartialReleaseScenario N_PartialReleaseScenario_Node4 -- No --> N_PartialReleaseScenario_Node5 N_PartialReleaseScenario_Node6{"The system evaluates release
processing type"}:::decision N_PartialReleaseScenario_Node6_action["If cargo qualifies for partial
release processing, route to partial
release workflow, otherwise continue
with full release"]:::main N_PartialReleaseScenario_Node6 -- Yes --> N_PartialReleaseScenario_Node6_action N_PartialReleaseScenario_Node6_action --> E_PartialReleaseScenario N_PartialReleaseScenario_Node5 -- No --> N_PartialReleaseScenario_Node6 N_PartialReleaseScenario_Node6 -- No --> E_PartialReleaseScenario
than zero but less than the total
quantity"}:::decision N_PartialReleaseScenario_Node0_action["The system should identify this as
a partial release scenario requiring
special handling"]:::main N_PartialReleaseScenario_Node0 -- Yes --> N_PartialReleaseScenario_Node0_action N_PartialReleaseScenario_Node0_action --> E_PartialReleaseScenario S_PartialReleaseScenario --> N_PartialReleaseScenario_Node0 N_PartialReleaseScenario_Node1{"The cargo undergoes partial release
processing"}:::decision N_PartialReleaseScenario_Node1_action["The system must set hold on piece
counts status HOLDPCS for the
unreleased quantity portion"]:::main N_PartialReleaseScenario_Node1 -- Yes --> N_PartialReleaseScenario_Node1_action N_PartialReleaseScenario_Node1_action --> E_PartialReleaseScenario N_PartialReleaseScenario_Node0 -- No --> N_PartialReleaseScenario_Node1 N_PartialReleaseScenario_Node2{"The system evaluates if this is a
partial release scenario"}:::decision N_PartialReleaseScenario_Node2_action["If released quantity is less than
total quantity, set PTT status with
partial quantity, otherwise set full
PTT release status"]:::main N_PartialReleaseScenario_Node2 -- Yes --> N_PartialReleaseScenario_Node2_action N_PartialReleaseScenario_Node2_action --> E_PartialReleaseScenario N_PartialReleaseScenario_Node1 -- No --> N_PartialReleaseScenario_Node2 N_PartialReleaseScenario_Node3{"The system compares released
quantities against total cargo
quantities"}:::decision N_PartialReleaseScenario_Node3_action["The system identifies partial
release scenarios where released
quantity is less than total quantity"]:::main N_PartialReleaseScenario_Node3 -- Yes --> N_PartialReleaseScenario_Node3_action N_PartialReleaseScenario_Node3_action --> E_PartialReleaseScenario N_PartialReleaseScenario_Node2 -- No --> N_PartialReleaseScenario_Node3 N_PartialReleaseScenario_Node4{"The released quantity is less than
the total cargo quantity"}:::decision N_PartialReleaseScenario_Node4_action["The system sets hold on piece
counts status to indicate partial
release"]:::main N_PartialReleaseScenario_Node4 -- Yes --> N_PartialReleaseScenario_Node4_action N_PartialReleaseScenario_Node4_action --> E_PartialReleaseScenario N_PartialReleaseScenario_Node3 -- No --> N_PartialReleaseScenario_Node4 N_PartialReleaseScenario_Node5{"The system checks for partial
release conditions"}:::decision N_PartialReleaseScenario_Node5_action["If partial release is detected,
preserve PTT status for remaining
quantity, otherwise clear PTT status
for released portion"]:::main N_PartialReleaseScenario_Node5 -- Yes --> N_PartialReleaseScenario_Node5_action N_PartialReleaseScenario_Node5_action --> E_PartialReleaseScenario N_PartialReleaseScenario_Node4 -- No --> N_PartialReleaseScenario_Node5 N_PartialReleaseScenario_Node6{"The system evaluates release
processing type"}:::decision N_PartialReleaseScenario_Node6_action["If cargo qualifies for partial
release processing, route to partial
release workflow, otherwise continue
with full release"]:::main N_PartialReleaseScenario_Node6 -- Yes --> N_PartialReleaseScenario_Node6_action N_PartialReleaseScenario_Node6_action --> E_PartialReleaseScenario N_PartialReleaseScenario_Node5 -- No --> N_PartialReleaseScenario_Node6 N_PartialReleaseScenario_Node6 -- No --> E_PartialReleaseScenario
File: GCX016.cbl
GIVEN:
A cargo with release quantity and total quantity values
WHEN:
The release quantity is greater than zero but less than the total quantity
THEN:
The system should identify this as a partial release scenario requiring special handling
File: GCX016.cbl
GIVEN:
A cargo record has total quantity greater than released quantity
WHEN:
The cargo undergoes partial release processing
THEN:
The system must set hold on piece counts status (HOLDPCS) for the unreleased quantity portion
File: GCX016.cbl
GIVEN:
Remaining quantity after PTT has been calculated
WHEN:
The system evaluates if this is a partial release scenario
THEN:
If released quantity is less than total quantity, set PTT status with partial quantity, otherwise set full PTT release status
File: GCX016.cbl
GIVEN:
A cargo record with release quantities that may be less than total quantities
WHEN:
The system compares released quantities against total cargo quantities
THEN:
The system identifies partial release scenarios where released quantity is less than total quantity
File: GCX016.cbl
GIVEN:
A cargo record with release quantity information
WHEN:
The released quantity is less than the total cargo quantity
THEN:
The system sets hold on piece counts status to indicate partial release
File: GCX016.cbl
GIVEN:
PTT quantities have been updated in the status array
WHEN:
The system checks for partial release conditions
THEN:
If partial release is detected, preserve PTT status for remaining quantity, otherwise clear PTT status for released portion
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
Cargo where released quantity does not match total quantity
WHEN:
The system evaluates release processing type
THEN:
If cargo qualifies for partial release processing, route to partial release workflow, otherwise continue with full release
β Consolidated Acceptance Criteria
- The system processes the partial release → the system should set hold status on the remaining piece counts to prevent unauthorized release
- The system processes the partial release → cargo status is set to hold on piece counts and destination index is maintained
- The system determines that some pieces are released while others remain held → the system sets HOLDPCS status to indicate hold on remaining piece counts
- The released quantity is less than the total quantity → the system sets hold status on piece counts for the unreleased portion
- The system processes partial release status → the system sets hold on piece counts status (HOLDPCS) to indicate partial hold condition
- System applies piece-level hold controls → system sets hold status on piece counts to prevent unauthorized releases
- The system processes the partial release → the system sets cargo status to 'HOLDPCS' (Hold on Piece Counts) to indicate partial release
- The system processes piece count hold requirements → set hold on piece counts status for the remaining unreleased quantity
- The system sets the cargo status → the cargo status is set to hold on piece counts to indicate partial release condition
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetHoldonPieceCountsStatus(["Start Step"])
E_SetHoldonPieceCountsStatus(["End Step"])
N_SetHoldonPieceCountsStatus_Node0{"The system processes the partial
release"}:::decision N_SetHoldonPieceCountsStatus_Node0_action["The system should set hold status
on the remaining piece counts to
prevent unauthorized release"]:::main N_SetHoldonPieceCountsStatus_Node0 -- Yes --> N_SetHoldonPieceCountsStatus_Node0_action N_SetHoldonPieceCountsStatus_Node0_action --> E_SetHoldonPieceCountsStatus S_SetHoldonPieceCountsStatus --> N_SetHoldonPieceCountsStatus_Node0 N_SetHoldonPieceCountsStatus_Node1{"The system processes the partial
release"}:::decision N_SetHoldonPieceCountsStatus_Node1_action["Cargo status is set to hold on
piece counts and destination index
is maintained"]:::main N_SetHoldonPieceCountsStatus_Node1 -- Yes --> N_SetHoldonPieceCountsStatus_Node1_action N_SetHoldonPieceCountsStatus_Node1_action --> E_SetHoldonPieceCountsStatus N_SetHoldonPieceCountsStatus_Node0 -- No --> N_SetHoldonPieceCountsStatus_Node1 N_SetHoldonPieceCountsStatus_Node2{"The system determines that some
pieces are released while others
remain held"}:::decision N_SetHoldonPieceCountsStatus_Node2_action["The system sets HOLDPCS status to
indicate hold on remaining piece
counts"]:::main N_SetHoldonPieceCountsStatus_Node2 -- Yes --> N_SetHoldonPieceCountsStatus_Node2_action N_SetHoldonPieceCountsStatus_Node2_action --> E_SetHoldonPieceCountsStatus N_SetHoldonPieceCountsStatus_Node1 -- No --> N_SetHoldonPieceCountsStatus_Node2 N_SetHoldonPieceCountsStatus_Node3{"The released quantity is less than
the total quantity"}:::decision N_SetHoldonPieceCountsStatus_Node3_action["The system sets hold status on
piece counts for the unreleased
portion"]:::main N_SetHoldonPieceCountsStatus_Node3 -- Yes --> N_SetHoldonPieceCountsStatus_Node3_action N_SetHoldonPieceCountsStatus_Node3_action --> E_SetHoldonPieceCountsStatus N_SetHoldonPieceCountsStatus_Node2 -- No --> N_SetHoldonPieceCountsStatus_Node3 N_SetHoldonPieceCountsStatus_Node4{"The system processes partial
release status"}:::decision N_SetHoldonPieceCountsStatus_Node4_action["The system sets hold on piece
counts status HOLDPCS to indicate
partial hold condition"]:::main N_SetHoldonPieceCountsStatus_Node4 -- Yes --> N_SetHoldonPieceCountsStatus_Node4_action N_SetHoldonPieceCountsStatus_Node4_action --> E_SetHoldonPieceCountsStatus N_SetHoldonPieceCountsStatus_Node3 -- No --> N_SetHoldonPieceCountsStatus_Node4 N_SetHoldonPieceCountsStatus_Node5{"System applies piece-level hold
controls"}:::decision N_SetHoldonPieceCountsStatus_Node5_action["System sets hold status on piece
counts to prevent unauthorized
releases"]:::main N_SetHoldonPieceCountsStatus_Node5 -- Yes --> N_SetHoldonPieceCountsStatus_Node5_action N_SetHoldonPieceCountsStatus_Node5_action --> E_SetHoldonPieceCountsStatus N_SetHoldonPieceCountsStatus_Node4 -- No --> N_SetHoldonPieceCountsStatus_Node5 N_SetHoldonPieceCountsStatus_Node6{"The system processes the partial
release"}:::decision N_SetHoldonPieceCountsStatus_Node6_action["The system sets cargo status to
HOLDPCS Hold on Piece Counts to
indicate partial release"]:::main N_SetHoldonPieceCountsStatus_Node6 -- Yes --> N_SetHoldonPieceCountsStatus_Node6_action N_SetHoldonPieceCountsStatus_Node6_action --> E_SetHoldonPieceCountsStatus N_SetHoldonPieceCountsStatus_Node5 -- No --> N_SetHoldonPieceCountsStatus_Node6 N_SetHoldonPieceCountsStatus_Node7{"The system processes piece count
hold requirements"}:::decision N_SetHoldonPieceCountsStatus_Node7_action["Set hold on piece counts status for
the remaining unreleased quantity"]:::main N_SetHoldonPieceCountsStatus_Node7 -- Yes --> N_SetHoldonPieceCountsStatus_Node7_action N_SetHoldonPieceCountsStatus_Node7_action --> E_SetHoldonPieceCountsStatus N_SetHoldonPieceCountsStatus_Node6 -- No --> N_SetHoldonPieceCountsStatus_Node7 N_SetHoldonPieceCountsStatus_Node8{"The system sets the cargo status"}:::decision N_SetHoldonPieceCountsStatus_Node8_action["The cargo status is set to hold on
piece counts to indicate partial
release condition"]:::main N_SetHoldonPieceCountsStatus_Node8 -- Yes --> N_SetHoldonPieceCountsStatus_Node8_action N_SetHoldonPieceCountsStatus_Node8_action --> E_SetHoldonPieceCountsStatus N_SetHoldonPieceCountsStatus_Node7 -- No --> N_SetHoldonPieceCountsStatus_Node8 N_SetHoldonPieceCountsStatus_Node8 -- No --> E_SetHoldonPieceCountsStatus
release"}:::decision N_SetHoldonPieceCountsStatus_Node0_action["The system should set hold status
on the remaining piece counts to
prevent unauthorized release"]:::main N_SetHoldonPieceCountsStatus_Node0 -- Yes --> N_SetHoldonPieceCountsStatus_Node0_action N_SetHoldonPieceCountsStatus_Node0_action --> E_SetHoldonPieceCountsStatus S_SetHoldonPieceCountsStatus --> N_SetHoldonPieceCountsStatus_Node0 N_SetHoldonPieceCountsStatus_Node1{"The system processes the partial
release"}:::decision N_SetHoldonPieceCountsStatus_Node1_action["Cargo status is set to hold on
piece counts and destination index
is maintained"]:::main N_SetHoldonPieceCountsStatus_Node1 -- Yes --> N_SetHoldonPieceCountsStatus_Node1_action N_SetHoldonPieceCountsStatus_Node1_action --> E_SetHoldonPieceCountsStatus N_SetHoldonPieceCountsStatus_Node0 -- No --> N_SetHoldonPieceCountsStatus_Node1 N_SetHoldonPieceCountsStatus_Node2{"The system determines that some
pieces are released while others
remain held"}:::decision N_SetHoldonPieceCountsStatus_Node2_action["The system sets HOLDPCS status to
indicate hold on remaining piece
counts"]:::main N_SetHoldonPieceCountsStatus_Node2 -- Yes --> N_SetHoldonPieceCountsStatus_Node2_action N_SetHoldonPieceCountsStatus_Node2_action --> E_SetHoldonPieceCountsStatus N_SetHoldonPieceCountsStatus_Node1 -- No --> N_SetHoldonPieceCountsStatus_Node2 N_SetHoldonPieceCountsStatus_Node3{"The released quantity is less than
the total quantity"}:::decision N_SetHoldonPieceCountsStatus_Node3_action["The system sets hold status on
piece counts for the unreleased
portion"]:::main N_SetHoldonPieceCountsStatus_Node3 -- Yes --> N_SetHoldonPieceCountsStatus_Node3_action N_SetHoldonPieceCountsStatus_Node3_action --> E_SetHoldonPieceCountsStatus N_SetHoldonPieceCountsStatus_Node2 -- No --> N_SetHoldonPieceCountsStatus_Node3 N_SetHoldonPieceCountsStatus_Node4{"The system processes partial
release status"}:::decision N_SetHoldonPieceCountsStatus_Node4_action["The system sets hold on piece
counts status HOLDPCS to indicate
partial hold condition"]:::main N_SetHoldonPieceCountsStatus_Node4 -- Yes --> N_SetHoldonPieceCountsStatus_Node4_action N_SetHoldonPieceCountsStatus_Node4_action --> E_SetHoldonPieceCountsStatus N_SetHoldonPieceCountsStatus_Node3 -- No --> N_SetHoldonPieceCountsStatus_Node4 N_SetHoldonPieceCountsStatus_Node5{"System applies piece-level hold
controls"}:::decision N_SetHoldonPieceCountsStatus_Node5_action["System sets hold status on piece
counts to prevent unauthorized
releases"]:::main N_SetHoldonPieceCountsStatus_Node5 -- Yes --> N_SetHoldonPieceCountsStatus_Node5_action N_SetHoldonPieceCountsStatus_Node5_action --> E_SetHoldonPieceCountsStatus N_SetHoldonPieceCountsStatus_Node4 -- No --> N_SetHoldonPieceCountsStatus_Node5 N_SetHoldonPieceCountsStatus_Node6{"The system processes the partial
release"}:::decision N_SetHoldonPieceCountsStatus_Node6_action["The system sets cargo status to
HOLDPCS Hold on Piece Counts to
indicate partial release"]:::main N_SetHoldonPieceCountsStatus_Node6 -- Yes --> N_SetHoldonPieceCountsStatus_Node6_action N_SetHoldonPieceCountsStatus_Node6_action --> E_SetHoldonPieceCountsStatus N_SetHoldonPieceCountsStatus_Node5 -- No --> N_SetHoldonPieceCountsStatus_Node6 N_SetHoldonPieceCountsStatus_Node7{"The system processes piece count
hold requirements"}:::decision N_SetHoldonPieceCountsStatus_Node7_action["Set hold on piece counts status for
the remaining unreleased quantity"]:::main N_SetHoldonPieceCountsStatus_Node7 -- Yes --> N_SetHoldonPieceCountsStatus_Node7_action N_SetHoldonPieceCountsStatus_Node7_action --> E_SetHoldonPieceCountsStatus N_SetHoldonPieceCountsStatus_Node6 -- No --> N_SetHoldonPieceCountsStatus_Node7 N_SetHoldonPieceCountsStatus_Node8{"The system sets the cargo status"}:::decision N_SetHoldonPieceCountsStatus_Node8_action["The cargo status is set to hold on
piece counts to indicate partial
release condition"]:::main N_SetHoldonPieceCountsStatus_Node8 -- Yes --> N_SetHoldonPieceCountsStatus_Node8_action N_SetHoldonPieceCountsStatus_Node8_action --> E_SetHoldonPieceCountsStatus N_SetHoldonPieceCountsStatus_Node7 -- No --> N_SetHoldonPieceCountsStatus_Node8 N_SetHoldonPieceCountsStatus_Node8 -- No --> E_SetHoldonPieceCountsStatus
File: GCX016.cbl
GIVEN:
A cargo in partial release scenario with remaining unreleased quantities
WHEN:
The system processes the partial release
THEN:
The system should set hold status on the remaining piece counts to prevent unauthorized release
File: GCX016.cbl
GIVEN:
Released quantity is less than total cargo quantity
WHEN:
The system processes the partial release
THEN:
- Cargo status is set to hold on piece counts
- Destination index is maintained
File: GCX016.cbl
GIVEN:
A cargo record with partial release quantities
WHEN:
The system determines that some pieces are released while others remain held
THEN:
The system sets HOLDPCS status to indicate hold on remaining piece counts
File: GCX016.cbl
GIVEN:
A cargo record with total quantity and released quantity values
WHEN:
The released quantity is less than the total quantity
THEN:
The system sets hold status on piece counts for the unreleased portion
File: GCX016.cbl
GIVEN:
Cargo has remaining unreleased quantity after partial release
WHEN:
The system processes partial release status
THEN:
The system sets hold on piece counts status (HOLDPCS) to indicate partial hold condition
File: GCX016.cbl
GIVEN:
Current release quantities have been preserved for cargo under FDA hold
WHEN:
System applies piece-level hold controls
THEN:
System sets hold status on piece counts to prevent unauthorized releases
File: GCX016.cbl
GIVEN:
A cargo record where released quantity is less than total quantity
WHEN:
The system processes the partial release
THEN:
The system sets cargo status to 'HOLDPCS' (Hold on Piece Counts) to indicate partial release
File: GCX016.cbl
GIVEN:
A cargo record with positive remaining quantity after partial release
WHEN:
The system processes piece count hold requirements
THEN:
Set hold on piece counts status for the remaining unreleased quantity
File: GCX016.cbl
GIVEN:
Cargo has been identified as a partial release scenario
WHEN:
The system sets the cargo status
THEN:
The cargo status is set to hold on piece counts to indicate partial release condition
β Consolidated Acceptance Criteria
- If release completeness → the system should identify this as full release achievement
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_FullReleaseAchieved(["Start Step"])
E_FullReleaseAchieved(["End Step"])
N_FullReleaseAchieved_Node0{"The system evaluates release
completeness"}:::decision N_FullReleaseAchieved_Node0_action["The system should identify this as
full release achievement"]:::main N_FullReleaseAchieved_Node0 -- Yes --> N_FullReleaseAchieved_Node0_action N_FullReleaseAchieved_Node0_action --> E_FullReleaseAchieved S_FullReleaseAchieved --> N_FullReleaseAchieved_Node0 N_FullReleaseAchieved_Node0 -- No --> E_FullReleaseAchieved
completeness"}:::decision N_FullReleaseAchieved_Node0_action["The system should identify this as
full release achievement"]:::main N_FullReleaseAchieved_Node0 -- Yes --> N_FullReleaseAchieved_Node0_action N_FullReleaseAchieved_Node0_action --> E_FullReleaseAchieved S_FullReleaseAchieved --> N_FullReleaseAchieved_Node0 N_FullReleaseAchieved_Node0 -- No --> E_FullReleaseAchieved
File: GCX016.cbl
GIVEN:
A cargo with release quantity equal to or greater than total quantity
WHEN:
The system evaluates release completeness
THEN:
The system should identify this as full release achievement
β Consolidated Acceptance Criteria
- The system processes the full release → the system should clear the destination index to indicate no further destination processing required
- Export status is set or full release is achieved → destination index information is cleared from cargo record
- The system processes export flag activation → destination index is cleared AND destination routing information is removed
- The manual release processing is initiated → the system clears the destination index to remove destination routing requirements
- The system processes the override → destination index is cleared to reflect manual release status
- The manual release flag is activated → the system clears the destination index to remove destination routing information
- Manual release processing begins → the system shall clear the destination index field AND remove any destination-based routing restrictions
- The export status is being applied → the destination index is cleared and set to blank
- The system processes the manual release → the destination index field is cleared to remove destination routing constraints
- The system processes full release conditions → the destination index is cleared to reflect released status
- The manual release flag is set to true → the system clears the destination index and initiates Canadian manifest coordination processing
- The system processes destination index requirements → the destination index is cleared to prevent destination processing
- The system processes the full release status → the system clears the destination index field to remove destination processing requirements
- The manual release flag is confirmed as set → the destination index is cleared to remove destination routing constraints
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ClearDestinationIndex(["Start Step"])
E_ClearDestinationIndex(["End Step"])
N_ClearDestinationIndex_Node0{"The system processes the full
release"}:::decision N_ClearDestinationIndex_Node0_action["The system should clear the
destination index to indicate no
further destination processing
required"]:::main N_ClearDestinationIndex_Node0 -- Yes --> N_ClearDestinationIndex_Node0_action N_ClearDestinationIndex_Node0_action --> E_ClearDestinationIndex S_ClearDestinationIndex --> N_ClearDestinationIndex_Node0 N_ClearDestinationIndex_Node1{"Export status is set or full
release is achieved"}:::decision N_ClearDestinationIndex_Node1_action["Destination index information is
cleared from cargo record"]:::main N_ClearDestinationIndex_Node1 -- Yes --> N_ClearDestinationIndex_Node1_action N_ClearDestinationIndex_Node1_action --> E_ClearDestinationIndex N_ClearDestinationIndex_Node0 -- No --> N_ClearDestinationIndex_Node1 N_ClearDestinationIndex_Node2{"The system processes export flag
activation"}:::decision N_ClearDestinationIndex_Node2_action["Destination index is cleared AND
destination routing information is
removed"]:::main N_ClearDestinationIndex_Node2 -- Yes --> N_ClearDestinationIndex_Node2_action N_ClearDestinationIndex_Node2_action --> E_ClearDestinationIndex N_ClearDestinationIndex_Node1 -- No --> N_ClearDestinationIndex_Node2 N_ClearDestinationIndex_Node3{"The manual release processing is
initiated"}:::decision N_ClearDestinationIndex_Node3_action["The system clears the destination
index to remove destination routing
requirements"]:::main N_ClearDestinationIndex_Node3 -- Yes --> N_ClearDestinationIndex_Node3_action N_ClearDestinationIndex_Node3_action --> E_ClearDestinationIndex N_ClearDestinationIndex_Node2 -- No --> N_ClearDestinationIndex_Node3 N_ClearDestinationIndex_Node4{"The system processes the override"}:::decision N_ClearDestinationIndex_Node4_action["Destination index is cleared to
reflect manual release status"]:::main N_ClearDestinationIndex_Node4 -- Yes --> N_ClearDestinationIndex_Node4_action N_ClearDestinationIndex_Node4_action --> E_ClearDestinationIndex N_ClearDestinationIndex_Node3 -- No --> N_ClearDestinationIndex_Node4 N_ClearDestinationIndex_Node5{"The manual release flag is
activated"}:::decision N_ClearDestinationIndex_Node5_action["The system clears the destination
index to remove destination routing
information"]:::main N_ClearDestinationIndex_Node5 -- Yes --> N_ClearDestinationIndex_Node5_action N_ClearDestinationIndex_Node5_action --> E_ClearDestinationIndex N_ClearDestinationIndex_Node4 -- No --> N_ClearDestinationIndex_Node5 N_ClearDestinationIndex_Node6{"Manual release processing begins"}:::decision N_ClearDestinationIndex_Node6_action["The system shall clear the
destination index field AND remove
any destination-based routing
restrictions"]:::main N_ClearDestinationIndex_Node6 -- Yes --> N_ClearDestinationIndex_Node6_action N_ClearDestinationIndex_Node6_action --> E_ClearDestinationIndex N_ClearDestinationIndex_Node5 -- No --> N_ClearDestinationIndex_Node6 N_ClearDestinationIndex_Node7{"The export status is being applied"}:::decision N_ClearDestinationIndex_Node7_action["The destination index is cleared
and set to blank"]:::main N_ClearDestinationIndex_Node7 -- Yes --> N_ClearDestinationIndex_Node7_action N_ClearDestinationIndex_Node7_action --> E_ClearDestinationIndex N_ClearDestinationIndex_Node6 -- No --> N_ClearDestinationIndex_Node7 N_ClearDestinationIndex_Node8{"The system processes the manual
release"}:::decision N_ClearDestinationIndex_Node8_action["The destination index field is
cleared to remove destination
routing constraints"]:::main N_ClearDestinationIndex_Node8 -- Yes --> N_ClearDestinationIndex_Node8_action N_ClearDestinationIndex_Node8_action --> E_ClearDestinationIndex N_ClearDestinationIndex_Node7 -- No --> N_ClearDestinationIndex_Node8 N_ClearDestinationIndex_Node9{"The system processes full release
conditions"}:::decision N_ClearDestinationIndex_Node9_action["The destination index is cleared to
reflect released status"]:::main N_ClearDestinationIndex_Node9 -- Yes --> N_ClearDestinationIndex_Node9_action N_ClearDestinationIndex_Node9_action --> E_ClearDestinationIndex N_ClearDestinationIndex_Node8 -- No --> N_ClearDestinationIndex_Node9 N_ClearDestinationIndex_Node10{"The manual release flag is set to
true"}:::decision N_ClearDestinationIndex_Node10_action["The system clears the destination
index and initiates Canadian
manifest coordination processing"]:::main N_ClearDestinationIndex_Node10 -- Yes --> N_ClearDestinationIndex_Node10_action N_ClearDestinationIndex_Node10_action --> E_ClearDestinationIndex N_ClearDestinationIndex_Node9 -- No --> N_ClearDestinationIndex_Node10 N_ClearDestinationIndex_Node11{"The system processes destination
index requirements"}:::decision N_ClearDestinationIndex_Node11_action["The destination index is cleared to
prevent destination processing"]:::main N_ClearDestinationIndex_Node11 -- Yes --> N_ClearDestinationIndex_Node11_action N_ClearDestinationIndex_Node11_action --> E_ClearDestinationIndex N_ClearDestinationIndex_Node10 -- No --> N_ClearDestinationIndex_Node11 N_ClearDestinationIndex_Node12{"The system processes the full
release status"}:::decision N_ClearDestinationIndex_Node12_action["The system clears the destination
index field to remove destination
processing requirements"]:::main N_ClearDestinationIndex_Node12 -- Yes --> N_ClearDestinationIndex_Node12_action N_ClearDestinationIndex_Node12_action --> E_ClearDestinationIndex N_ClearDestinationIndex_Node11 -- No --> N_ClearDestinationIndex_Node12 N_ClearDestinationIndex_Node13{"The manual release flag is
confirmed as set"}:::decision N_ClearDestinationIndex_Node13_action["The destination index is cleared to
remove destination routing
constraints"]:::main N_ClearDestinationIndex_Node13 -- Yes --> N_ClearDestinationIndex_Node13_action N_ClearDestinationIndex_Node13_action --> E_ClearDestinationIndex N_ClearDestinationIndex_Node12 -- No --> N_ClearDestinationIndex_Node13 N_ClearDestinationIndex_Node13 -- No --> E_ClearDestinationIndex
release"}:::decision N_ClearDestinationIndex_Node0_action["The system should clear the
destination index to indicate no
further destination processing
required"]:::main N_ClearDestinationIndex_Node0 -- Yes --> N_ClearDestinationIndex_Node0_action N_ClearDestinationIndex_Node0_action --> E_ClearDestinationIndex S_ClearDestinationIndex --> N_ClearDestinationIndex_Node0 N_ClearDestinationIndex_Node1{"Export status is set or full
release is achieved"}:::decision N_ClearDestinationIndex_Node1_action["Destination index information is
cleared from cargo record"]:::main N_ClearDestinationIndex_Node1 -- Yes --> N_ClearDestinationIndex_Node1_action N_ClearDestinationIndex_Node1_action --> E_ClearDestinationIndex N_ClearDestinationIndex_Node0 -- No --> N_ClearDestinationIndex_Node1 N_ClearDestinationIndex_Node2{"The system processes export flag
activation"}:::decision N_ClearDestinationIndex_Node2_action["Destination index is cleared AND
destination routing information is
removed"]:::main N_ClearDestinationIndex_Node2 -- Yes --> N_ClearDestinationIndex_Node2_action N_ClearDestinationIndex_Node2_action --> E_ClearDestinationIndex N_ClearDestinationIndex_Node1 -- No --> N_ClearDestinationIndex_Node2 N_ClearDestinationIndex_Node3{"The manual release processing is
initiated"}:::decision N_ClearDestinationIndex_Node3_action["The system clears the destination
index to remove destination routing
requirements"]:::main N_ClearDestinationIndex_Node3 -- Yes --> N_ClearDestinationIndex_Node3_action N_ClearDestinationIndex_Node3_action --> E_ClearDestinationIndex N_ClearDestinationIndex_Node2 -- No --> N_ClearDestinationIndex_Node3 N_ClearDestinationIndex_Node4{"The system processes the override"}:::decision N_ClearDestinationIndex_Node4_action["Destination index is cleared to
reflect manual release status"]:::main N_ClearDestinationIndex_Node4 -- Yes --> N_ClearDestinationIndex_Node4_action N_ClearDestinationIndex_Node4_action --> E_ClearDestinationIndex N_ClearDestinationIndex_Node3 -- No --> N_ClearDestinationIndex_Node4 N_ClearDestinationIndex_Node5{"The manual release flag is
activated"}:::decision N_ClearDestinationIndex_Node5_action["The system clears the destination
index to remove destination routing
information"]:::main N_ClearDestinationIndex_Node5 -- Yes --> N_ClearDestinationIndex_Node5_action N_ClearDestinationIndex_Node5_action --> E_ClearDestinationIndex N_ClearDestinationIndex_Node4 -- No --> N_ClearDestinationIndex_Node5 N_ClearDestinationIndex_Node6{"Manual release processing begins"}:::decision N_ClearDestinationIndex_Node6_action["The system shall clear the
destination index field AND remove
any destination-based routing
restrictions"]:::main N_ClearDestinationIndex_Node6 -- Yes --> N_ClearDestinationIndex_Node6_action N_ClearDestinationIndex_Node6_action --> E_ClearDestinationIndex N_ClearDestinationIndex_Node5 -- No --> N_ClearDestinationIndex_Node6 N_ClearDestinationIndex_Node7{"The export status is being applied"}:::decision N_ClearDestinationIndex_Node7_action["The destination index is cleared
and set to blank"]:::main N_ClearDestinationIndex_Node7 -- Yes --> N_ClearDestinationIndex_Node7_action N_ClearDestinationIndex_Node7_action --> E_ClearDestinationIndex N_ClearDestinationIndex_Node6 -- No --> N_ClearDestinationIndex_Node7 N_ClearDestinationIndex_Node8{"The system processes the manual
release"}:::decision N_ClearDestinationIndex_Node8_action["The destination index field is
cleared to remove destination
routing constraints"]:::main N_ClearDestinationIndex_Node8 -- Yes --> N_ClearDestinationIndex_Node8_action N_ClearDestinationIndex_Node8_action --> E_ClearDestinationIndex N_ClearDestinationIndex_Node7 -- No --> N_ClearDestinationIndex_Node8 N_ClearDestinationIndex_Node9{"The system processes full release
conditions"}:::decision N_ClearDestinationIndex_Node9_action["The destination index is cleared to
reflect released status"]:::main N_ClearDestinationIndex_Node9 -- Yes --> N_ClearDestinationIndex_Node9_action N_ClearDestinationIndex_Node9_action --> E_ClearDestinationIndex N_ClearDestinationIndex_Node8 -- No --> N_ClearDestinationIndex_Node9 N_ClearDestinationIndex_Node10{"The manual release flag is set to
true"}:::decision N_ClearDestinationIndex_Node10_action["The system clears the destination
index and initiates Canadian
manifest coordination processing"]:::main N_ClearDestinationIndex_Node10 -- Yes --> N_ClearDestinationIndex_Node10_action N_ClearDestinationIndex_Node10_action --> E_ClearDestinationIndex N_ClearDestinationIndex_Node9 -- No --> N_ClearDestinationIndex_Node10 N_ClearDestinationIndex_Node11{"The system processes destination
index requirements"}:::decision N_ClearDestinationIndex_Node11_action["The destination index is cleared to
prevent destination processing"]:::main N_ClearDestinationIndex_Node11 -- Yes --> N_ClearDestinationIndex_Node11_action N_ClearDestinationIndex_Node11_action --> E_ClearDestinationIndex N_ClearDestinationIndex_Node10 -- No --> N_ClearDestinationIndex_Node11 N_ClearDestinationIndex_Node12{"The system processes the full
release status"}:::decision N_ClearDestinationIndex_Node12_action["The system clears the destination
index field to remove destination
processing requirements"]:::main N_ClearDestinationIndex_Node12 -- Yes --> N_ClearDestinationIndex_Node12_action N_ClearDestinationIndex_Node12_action --> E_ClearDestinationIndex N_ClearDestinationIndex_Node11 -- No --> N_ClearDestinationIndex_Node12 N_ClearDestinationIndex_Node13{"The manual release flag is
confirmed as set"}:::decision N_ClearDestinationIndex_Node13_action["The destination index is cleared to
remove destination routing
constraints"]:::main N_ClearDestinationIndex_Node13 -- Yes --> N_ClearDestinationIndex_Node13_action N_ClearDestinationIndex_Node13_action --> E_ClearDestinationIndex N_ClearDestinationIndex_Node12 -- No --> N_ClearDestinationIndex_Node13 N_ClearDestinationIndex_Node13 -- No --> E_ClearDestinationIndex
File: GCX016.cbl
GIVEN:
A cargo that has achieved full release status
WHEN:
The system processes the full release
THEN:
The system should clear the destination index to indicate no further destination processing required
File: GCX016.cbl
GIVEN:
Cargo is being exported or fully released
WHEN:
Export status is set or full release is achieved
THEN:
Destination index information is cleared from cargo record
File: GCX016.cbl
GIVEN:
Export flag is set AND cargo has existing destination index information
WHEN:
The system processes export flag activation
THEN:
- Destination index is cleared
- Destination routing information is removed
File: GCX016.cbl
GIVEN:
A CPRS cargo is being processed for manual release
WHEN:
The manual release processing is initiated
THEN:
The system clears the destination index to remove destination routing requirements
File: GCX016.cbl
GIVEN:
Manual release override conditions are detected
WHEN:
The system processes the override
THEN:
Destination index is cleared to reflect manual release status
File: GCX016.cbl
GIVEN:
CPRS cargo is being processed for manual release with MRL disposition code
WHEN:
The manual release flag is activated
THEN:
The system clears the destination index to remove destination routing information
File: GCX016.cbl
GIVEN:
Cargo is confirmed to be in held status AND manual release is authorized
WHEN:
Manual release processing begins
THEN:
- The system shall clear the destination index field
- Remove any destination-based routing restrictions
File: GCX016.cbl
GIVEN:
Cargo is being set to export status
WHEN:
The export status is being applied
THEN:
- The destination index is cleared
- Set to blank
File: GCX016.cbl
GIVEN:
CPRS cargo that is currently held and approved for manual release
WHEN:
The system processes the manual release
THEN:
The destination index field is cleared to remove destination routing constraints
File: GCX016.cbl
GIVEN:
Full release status has been confirmed
WHEN:
The system processes full release conditions
THEN:
The destination index is cleared to reflect released status
File: GCX016.cbl
GIVEN:
A cargo record is being processed for status determination
WHEN:
The manual release flag is set to true
THEN:
- The system clears the destination index
- Initiates canadian manifest coordination processing
File: GCX016.cbl
GIVEN:
Cargo in partial release state requires border-only processing
WHEN:
The system processes destination index requirements
THEN:
The destination index is cleared to prevent destination processing
File: GCX016.cbl
GIVEN:
A cargo record that has been fully released
WHEN:
The system processes the full release status
THEN:
The system clears the destination index field to remove destination processing requirements
File: GCX016.cbl
GIVEN:
A cargo record undergoing manual release processing
WHEN:
The manual release flag is confirmed as set
THEN:
The destination index is cleared to remove destination routing constraints
β Consolidated Acceptance Criteria
- The system updates cargo status → the system should set the cargo status to full release
- Released quantity is greater than or equal to total cargo quantity → full release status is set for the cargo and all hold conditions are cleared
- The system processes the full release → cargo status is set to fully released and destination index is cleared
- The system processes the quantity match condition → the system sets the cargo status to full release
- Released quantity equals or exceeds total cargo quantity → system sets full release status flag for the cargo
- The system processes the full release → the system sets cargo status to indicate full release and removes any partial release indicators
- The system processes the full release condition → set the cargo status to full release and prepare for hold flag clearing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetFullReleaseStatus(["Start Step"])
E_SetFullReleaseStatus(["End Step"])
N_SetFullReleaseStatus_Node0{"The system updates cargo status"}:::decision
N_SetFullReleaseStatus_Node0_action["The system should set the cargo
status to full release"]:::main N_SetFullReleaseStatus_Node0 -- Yes --> N_SetFullReleaseStatus_Node0_action N_SetFullReleaseStatus_Node0_action --> E_SetFullReleaseStatus S_SetFullReleaseStatus --> N_SetFullReleaseStatus_Node0 N_SetFullReleaseStatus_Node1{"Released quantity is greater than
or equal to total cargo quantity"}:::decision N_SetFullReleaseStatus_Node1_action["Full release status is set for the
cargo and all hold conditions are
cleared"]:::main N_SetFullReleaseStatus_Node1 -- Yes --> N_SetFullReleaseStatus_Node1_action N_SetFullReleaseStatus_Node1_action --> E_SetFullReleaseStatus N_SetFullReleaseStatus_Node0 -- No --> N_SetFullReleaseStatus_Node1 N_SetFullReleaseStatus_Node2{"The system processes the full
release"}:::decision N_SetFullReleaseStatus_Node2_action["Cargo status is set to fully
released and destination index is
cleared"]:::main N_SetFullReleaseStatus_Node2 -- Yes --> N_SetFullReleaseStatus_Node2_action N_SetFullReleaseStatus_Node2_action --> E_SetFullReleaseStatus N_SetFullReleaseStatus_Node1 -- No --> N_SetFullReleaseStatus_Node2 N_SetFullReleaseStatus_Node3{"The system processes the quantity
match condition"}:::decision N_SetFullReleaseStatus_Node3_action["The system sets the cargo status to
full release"]:::main N_SetFullReleaseStatus_Node3 -- Yes --> N_SetFullReleaseStatus_Node3_action N_SetFullReleaseStatus_Node3_action --> E_SetFullReleaseStatus N_SetFullReleaseStatus_Node2 -- No --> N_SetFullReleaseStatus_Node3 N_SetFullReleaseStatus_Node4{"Released quantity equals or exceeds
total cargo quantity"}:::decision N_SetFullReleaseStatus_Node4_action["System sets full release status
flag for the cargo"]:::main N_SetFullReleaseStatus_Node4 -- Yes --> N_SetFullReleaseStatus_Node4_action N_SetFullReleaseStatus_Node4_action --> E_SetFullReleaseStatus N_SetFullReleaseStatus_Node3 -- No --> N_SetFullReleaseStatus_Node4 N_SetFullReleaseStatus_Node5{"The system processes the full
release"}:::decision N_SetFullReleaseStatus_Node5_action["The system sets cargo status to
indicate full release and removes
any partial release indicators"]:::main N_SetFullReleaseStatus_Node5 -- Yes --> N_SetFullReleaseStatus_Node5_action N_SetFullReleaseStatus_Node5_action --> E_SetFullReleaseStatus N_SetFullReleaseStatus_Node4 -- No --> N_SetFullReleaseStatus_Node5 N_SetFullReleaseStatus_Node6{"The system processes the full
release condition"}:::decision N_SetFullReleaseStatus_Node6_action["Set the cargo status to full
release and prepare for hold flag
clearing"]:::main N_SetFullReleaseStatus_Node6 -- Yes --> N_SetFullReleaseStatus_Node6_action N_SetFullReleaseStatus_Node6_action --> E_SetFullReleaseStatus N_SetFullReleaseStatus_Node5 -- No --> N_SetFullReleaseStatus_Node6 N_SetFullReleaseStatus_Node6 -- No --> E_SetFullReleaseStatus
status to full release"]:::main N_SetFullReleaseStatus_Node0 -- Yes --> N_SetFullReleaseStatus_Node0_action N_SetFullReleaseStatus_Node0_action --> E_SetFullReleaseStatus S_SetFullReleaseStatus --> N_SetFullReleaseStatus_Node0 N_SetFullReleaseStatus_Node1{"Released quantity is greater than
or equal to total cargo quantity"}:::decision N_SetFullReleaseStatus_Node1_action["Full release status is set for the
cargo and all hold conditions are
cleared"]:::main N_SetFullReleaseStatus_Node1 -- Yes --> N_SetFullReleaseStatus_Node1_action N_SetFullReleaseStatus_Node1_action --> E_SetFullReleaseStatus N_SetFullReleaseStatus_Node0 -- No --> N_SetFullReleaseStatus_Node1 N_SetFullReleaseStatus_Node2{"The system processes the full
release"}:::decision N_SetFullReleaseStatus_Node2_action["Cargo status is set to fully
released and destination index is
cleared"]:::main N_SetFullReleaseStatus_Node2 -- Yes --> N_SetFullReleaseStatus_Node2_action N_SetFullReleaseStatus_Node2_action --> E_SetFullReleaseStatus N_SetFullReleaseStatus_Node1 -- No --> N_SetFullReleaseStatus_Node2 N_SetFullReleaseStatus_Node3{"The system processes the quantity
match condition"}:::decision N_SetFullReleaseStatus_Node3_action["The system sets the cargo status to
full release"]:::main N_SetFullReleaseStatus_Node3 -- Yes --> N_SetFullReleaseStatus_Node3_action N_SetFullReleaseStatus_Node3_action --> E_SetFullReleaseStatus N_SetFullReleaseStatus_Node2 -- No --> N_SetFullReleaseStatus_Node3 N_SetFullReleaseStatus_Node4{"Released quantity equals or exceeds
total cargo quantity"}:::decision N_SetFullReleaseStatus_Node4_action["System sets full release status
flag for the cargo"]:::main N_SetFullReleaseStatus_Node4 -- Yes --> N_SetFullReleaseStatus_Node4_action N_SetFullReleaseStatus_Node4_action --> E_SetFullReleaseStatus N_SetFullReleaseStatus_Node3 -- No --> N_SetFullReleaseStatus_Node4 N_SetFullReleaseStatus_Node5{"The system processes the full
release"}:::decision N_SetFullReleaseStatus_Node5_action["The system sets cargo status to
indicate full release and removes
any partial release indicators"]:::main N_SetFullReleaseStatus_Node5 -- Yes --> N_SetFullReleaseStatus_Node5_action N_SetFullReleaseStatus_Node5_action --> E_SetFullReleaseStatus N_SetFullReleaseStatus_Node4 -- No --> N_SetFullReleaseStatus_Node5 N_SetFullReleaseStatus_Node6{"The system processes the full
release condition"}:::decision N_SetFullReleaseStatus_Node6_action["Set the cargo status to full
release and prepare for hold flag
clearing"]:::main N_SetFullReleaseStatus_Node6 -- Yes --> N_SetFullReleaseStatus_Node6_action N_SetFullReleaseStatus_Node6_action --> E_SetFullReleaseStatus N_SetFullReleaseStatus_Node5 -- No --> N_SetFullReleaseStatus_Node6 N_SetFullReleaseStatus_Node6 -- No --> E_SetFullReleaseStatus
File: GCX016.cbl
GIVEN:
A cargo with cleared destination index and full quantity release
WHEN:
The system updates cargo status
THEN:
The system should set the cargo status to full release
File: GCX016.cbl
GIVEN:
Cargo has release codes and quantity validation is performed
WHEN:
Released quantity is greater than or equal to total cargo quantity
THEN:
- Full release status is set for the cargo
- All hold conditions are cleared
File: GCX016.cbl
GIVEN:
Cargo meets all full release conditions
WHEN:
The system processes the full release
THEN:
- Cargo status is set to fully released
- Destination index is cleared
File: GCX016.cbl
GIVEN:
Released quantity equals total quantity
WHEN:
The system processes the quantity match condition
THEN:
The system sets the cargo status to full release
File: GCX016.cbl
GIVEN:
Release quantities have been validated
WHEN:
Released quantity equals or exceeds total cargo quantity
THEN:
System sets full release status flag for the cargo
File: GCX016.cbl
GIVEN:
A cargo record where released quantity equals or exceeds total quantity
WHEN:
The system processes the full release
THEN:
- The system sets cargo status to indicate full release
- Removes any partial release indicators
File: GCX016.cbl
GIVEN:
A cargo record where released quantity equals total quantity
WHEN:
The system processes the full release condition
THEN:
- Set the cargo status to full release
- Prepare for hold flag clearing
β Consolidated Acceptance Criteria
- If PTT requirements → the system should determine if PTT validation is necessary based on cargo type and disposition code
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_PTTValidationRequired(["Start Step"])
E_PTTValidationRequired(["End Step"])
N_PTTValidationRequired_Node0{"The system evaluates PTT
requirements"}:::decision N_PTTValidationRequired_Node0_action["The system should determine if PTT
validation is necessary based on
cargo type and disposition code"]:::main N_PTTValidationRequired_Node0 -- Yes --> N_PTTValidationRequired_Node0_action N_PTTValidationRequired_Node0_action --> E_PTTValidationRequired S_PTTValidationRequired --> N_PTTValidationRequired_Node0 N_PTTValidationRequired_Node0 -- No --> E_PTTValidationRequired
requirements"}:::decision N_PTTValidationRequired_Node0_action["The system should determine if PTT
validation is necessary based on
cargo type and disposition code"]:::main N_PTTValidationRequired_Node0 -- Yes --> N_PTTValidationRequired_Node0_action N_PTTValidationRequired_Node0_action --> E_PTTValidationRequired S_PTTValidationRequired --> N_PTTValidationRequired_Node0 N_PTTValidationRequired_Node0 -- No --> E_PTTValidationRequired
File: GCX016.cbl
GIVEN:
A cargo with updated quantities and status
WHEN:
The system evaluates PTT requirements
THEN:
- The system should determine if ptt validation is necessary based on cargo type
- Disposition code
β Consolidated Acceptance Criteria
- The system validates PTT quantities → the system should check that quantities are within established PTT limits
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ValidatePTTQuantityLimits(["Start Step"])
E_ValidatePTTQuantityLimits(["End Step"])
N_ValidatePTTQuantityLimits_Node0{"The system validates PTT quantities"}:::decision
N_ValidatePTTQuantityLimits_Node0_action["The system should check that
quantities are within established
PTT limits"]:::main N_ValidatePTTQuantityLimits_Node0 -- Yes --> N_ValidatePTTQuantityLimits_Node0_action N_ValidatePTTQuantityLimits_Node0_action --> E_ValidatePTTQuantityLimits S_ValidatePTTQuantityLimits --> N_ValidatePTTQuantityLimits_Node0 N_ValidatePTTQuantityLimits_Node0 -- No --> E_ValidatePTTQuantityLimits
quantities are within established
PTT limits"]:::main N_ValidatePTTQuantityLimits_Node0 -- Yes --> N_ValidatePTTQuantityLimits_Node0_action N_ValidatePTTQuantityLimits_Node0_action --> E_ValidatePTTQuantityLimits S_ValidatePTTQuantityLimits --> N_ValidatePTTQuantityLimits_Node0 N_ValidatePTTQuantityLimits_Node0 -- No --> E_ValidatePTTQuantityLimits
File: GCX016.cbl
GIVEN:
A cargo requiring PTT validation with specific quantity limits
WHEN:
The system validates PTT quantities
THEN:
The system should check that quantities are within established PTT limits
β Consolidated Acceptance Criteria
- The quantities meet all PTT validation criteria → the system should proceed with PTT status assignment
- The system validates the calculated PTT quantity against business rules → if PTT quantity is valid, update status array, otherwise restore previous PTT status
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_PTTQuantityValid(["Start Step"])
E_PTTQuantityValid(["End Step"])
N_PTTQuantityValid_Node0{"The quantities meet all PTT
validation criteria"}:::decision N_PTTQuantityValid_Node0_action["The system should proceed with PTT
status assignment"]:::main N_PTTQuantityValid_Node0 -- Yes --> N_PTTQuantityValid_Node0_action N_PTTQuantityValid_Node0_action --> E_PTTQuantityValid S_PTTQuantityValid --> N_PTTQuantityValid_Node0 N_PTTQuantityValid_Node1{"The system validates the calculated
PTT quantity against business rules"}:::decision N_PTTQuantityValid_Node1_action["If PTT quantity is valid, update
status array, otherwise restore
previous PTT status"]:::main N_PTTQuantityValid_Node1 -- Yes --> N_PTTQuantityValid_Node1_action N_PTTQuantityValid_Node1_action --> E_PTTQuantityValid N_PTTQuantityValid_Node0 -- No --> N_PTTQuantityValid_Node1 N_PTTQuantityValid_Node1 -- No --> E_PTTQuantityValid
validation criteria"}:::decision N_PTTQuantityValid_Node0_action["The system should proceed with PTT
status assignment"]:::main N_PTTQuantityValid_Node0 -- Yes --> N_PTTQuantityValid_Node0_action N_PTTQuantityValid_Node0_action --> E_PTTQuantityValid S_PTTQuantityValid --> N_PTTQuantityValid_Node0 N_PTTQuantityValid_Node1{"The system validates the calculated
PTT quantity against business rules"}:::decision N_PTTQuantityValid_Node1_action["If PTT quantity is valid, update
status array, otherwise restore
previous PTT status"]:::main N_PTTQuantityValid_Node1 -- Yes --> N_PTTQuantityValid_Node1_action N_PTTQuantityValid_Node1_action --> E_PTTQuantityValid N_PTTQuantityValid_Node0 -- No --> N_PTTQuantityValid_Node1 N_PTTQuantityValid_Node1 -- No --> E_PTTQuantityValid
File: GCX016.cbl
GIVEN:
PTT quantity validation results
WHEN:
The quantities meet all PTT validation criteria
THEN:
The system should proceed with PTT status assignment
File: GCX016.cbl
GIVEN:
Remaining PTT quantity has been calculated
WHEN:
The system validates the calculated PTT quantity against business rules
THEN:
If PTT quantity is valid, update status array, otherwise restore previous PTT status
β Consolidated Acceptance Criteria
- The system assigns PTT status → the system should set PTT status and record the associated quantities
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetPTTStatuswithQuantity(["Start Step"])
E_SetPTTStatuswithQuantity(["End Step"])
N_SetPTTStatuswithQuantity_Node0{"The system assigns PTT status"}:::decision
N_SetPTTStatuswithQuantity_Node0_action["The system should set PTT status
and record the associated quantities"]:::main N_SetPTTStatuswithQuantity_Node0 -- Yes --> N_SetPTTStatuswithQuantity_Node0_action N_SetPTTStatuswithQuantity_Node0_action --> E_SetPTTStatuswithQuantity S_SetPTTStatuswithQuantity --> N_SetPTTStatuswithQuantity_Node0 N_SetPTTStatuswithQuantity_Node0 -- No --> E_SetPTTStatuswithQuantity
and record the associated quantities"]:::main N_SetPTTStatuswithQuantity_Node0 -- Yes --> N_SetPTTStatuswithQuantity_Node0_action N_SetPTTStatuswithQuantity_Node0_action --> E_SetPTTStatuswithQuantity S_SetPTTStatuswithQuantity --> N_SetPTTStatuswithQuantity_Node0 N_SetPTTStatuswithQuantity_Node0 -- No --> E_SetPTTStatuswithQuantity
File: GCX016.cbl
GIVEN:
A cargo with valid PTT quantities
WHEN:
The system assigns PTT status
THEN:
- The system should set ptt status
- Record the associated quantities
β Consolidated Acceptance Criteria
- The system processes the PTT rejection → the system should reject PTT status and maintain current cargo status
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RejectPTTQuantityExceeded(["Start Step"])
E_RejectPTTQuantityExceeded(["End Step"])
N_RejectPTTQuantityExceeded_Node0{"The system processes the PTT
rejection"}:::decision N_RejectPTTQuantityExceeded_Node0_action["The system should reject PTT status
and maintain current cargo status"]:::exclusion N_RejectPTTQuantityExceeded_Node0 -- Yes -->|Alternative| N_RejectPTTQuantityExceeded_Node0_action N_RejectPTTQuantityExceeded_Node0_action --> E_RejectPTTQuantityExceeded S_RejectPTTQuantityExceeded --> N_RejectPTTQuantityExceeded_Node0 N_RejectPTTQuantityExceeded_Node0 -- No --> E_RejectPTTQuantityExceeded
rejection"}:::decision N_RejectPTTQuantityExceeded_Node0_action["The system should reject PTT status
and maintain current cargo status"]:::exclusion N_RejectPTTQuantityExceeded_Node0 -- Yes -->|Alternative| N_RejectPTTQuantityExceeded_Node0_action N_RejectPTTQuantityExceeded_Node0_action --> E_RejectPTTQuantityExceeded S_RejectPTTQuantityExceeded --> N_RejectPTTQuantityExceeded_Node0 N_RejectPTTQuantityExceeded_Node0 -- No --> E_RejectPTTQuantityExceeded
File: GCX016.cbl
GIVEN:
A cargo with PTT quantities that exceed validation limits
WHEN:
The system processes the PTT rejection
THEN:
- The system should reject ptt status
- Maintain current cargo status
β Consolidated Acceptance Criteria
- The system updates the cargo record → the system should save all new quantity values and status changes to the cargo record
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UpdateCargoRecordwithNewQuantities(["Start Step"])
E_UpdateCargoRecordwithNewQuantities(["End Step"])
N_UpdateCargoRecordwithNewQuantities_Node0{"The system updates the cargo record"}:::decision
N_UpdateCargoRecordwithNewQuantities_Node0_action["The system should save all new
quantity values and status changes
to the cargo record"]:::main N_UpdateCargoRecordwithNewQuantities_Node0 -- Yes --> N_UpdateCargoRecordwithNewQuantities_Node0_action N_UpdateCargoRecordwithNewQuantities_Node0_action --> E_UpdateCargoRecordwithNewQuantities S_UpdateCargoRecordwithNewQuantities --> N_UpdateCargoRecordwithNewQuantities_Node0 N_UpdateCargoRecordwithNewQuantities_Node0 -- No --> E_UpdateCargoRecordwithNewQuantities
quantity values and status changes
to the cargo record"]:::main N_UpdateCargoRecordwithNewQuantities_Node0 -- Yes --> N_UpdateCargoRecordwithNewQuantities_Node0_action N_UpdateCargoRecordwithNewQuantities_Node0_action --> E_UpdateCargoRecordwithNewQuantities S_UpdateCargoRecordwithNewQuantities --> N_UpdateCargoRecordwithNewQuantities_Node0 N_UpdateCargoRecordwithNewQuantities_Node0 -- No --> E_UpdateCargoRecordwithNewQuantities
File: GCX016.cbl
GIVEN:
A cargo with processed and validated quantity changes
WHEN:
The system updates the cargo record
THEN:
- The system should save all new quantity values
- Status changes to the cargo record
β Consolidated Acceptance Criteria
- The system processes the disposition code quantity action → the system retrieves current released quantity, applies the specified action (add or subtract), prevents negative results by setting to zero if needed, and updates the cargo status array with the new quantity
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ReleaseQuantityCalculationCalculateandadjustcargoreleasequantitiesbasedondispositioncodequantityactionswithaddsubtractoperationsandnegativequantityprevention(["Start Step"])
E_ReleaseQuantityCalculationCalculateandadjustcargoreleasequantitiesbasedondispositioncodequantityactionswithaddsubtractoperationsandnegativequantityprevention(["End Step"])
N_ReleaseQuantityCalculationCalculateandadjustcargoreleasequantitiesbasedondispositioncodequantityactionswithaddsubtractoperationsandnegativequantityprevention_Node0{"The system processes the
disposition code quantity action"}:::decision N_ReleaseQuantityCalculationCalculateandadjustcargoreleasequantitiesbasedondispositioncodequantityactionswithaddsubtractoperationsandnegativequantityprevention_Node0_action["The system retrieves current
released quantity, applies the
specified action add or subtract,
prevents negative results by setting
to zero if needed, and updates the
cargo status array with the new
quantity"]:::main N_ReleaseQuantityCalculationCalculateandadjustcargoreleasequantitiesbasedondispositioncodequantityactionswithaddsubtractoperationsandnegativequantityprevention_Node0 -- Yes --> N_ReleaseQuantityCalculationCalculateandadjustcargoreleasequantitiesbasedondispositioncodequantityactionswithaddsubtractoperationsandnegativequantityprevention_Node0_action N_ReleaseQuantityCalculationCalculateandadjustcargoreleasequantitiesbasedondispositioncodequantityactionswithaddsubtractoperationsandnegativequantityprevention_Node0_action --> E_ReleaseQuantityCalculationCalculateandadjustcargoreleasequantitiesbasedondispositioncodequantityactionswithaddsubtractoperationsandnegativequantityprevention S_ReleaseQuantityCalculationCalculateandadjustcargoreleasequantitiesbasedondispositioncodequantityactionswithaddsubtractoperationsandnegativequantityprevention --> N_ReleaseQuantityCalculationCalculateandadjustcargoreleasequantitiesbasedondispositioncodequantityactionswithaddsubtractoperationsandnegativequantityprevention_Node0 N_ReleaseQuantityCalculationCalculateandadjustcargoreleasequantitiesbasedondispositioncodequantityactionswithaddsubtractoperationsandnegativequantityprevention_Node0 -- No --> E_ReleaseQuantityCalculationCalculateandadjustcargoreleasequantitiesbasedondispositioncodequantityactionswithaddsubtractoperationsandnegativequantityprevention
disposition code quantity action"}:::decision N_ReleaseQuantityCalculationCalculateandadjustcargoreleasequantitiesbasedondispositioncodequantityactionswithaddsubtractoperationsandnegativequantityprevention_Node0_action["The system retrieves current
released quantity, applies the
specified action add or subtract,
prevents negative results by setting
to zero if needed, and updates the
cargo status array with the new
quantity"]:::main N_ReleaseQuantityCalculationCalculateandadjustcargoreleasequantitiesbasedondispositioncodequantityactionswithaddsubtractoperationsandnegativequantityprevention_Node0 -- Yes --> N_ReleaseQuantityCalculationCalculateandadjustcargoreleasequantitiesbasedondispositioncodequantityactionswithaddsubtractoperationsandnegativequantityprevention_Node0_action N_ReleaseQuantityCalculationCalculateandadjustcargoreleasequantitiesbasedondispositioncodequantityactionswithaddsubtractoperationsandnegativequantityprevention_Node0_action --> E_ReleaseQuantityCalculationCalculateandadjustcargoreleasequantitiesbasedondispositioncodequantityactionswithaddsubtractoperationsandnegativequantityprevention S_ReleaseQuantityCalculationCalculateandadjustcargoreleasequantitiesbasedondispositioncodequantityactionswithaddsubtractoperationsandnegativequantityprevention --> N_ReleaseQuantityCalculationCalculateandadjustcargoreleasequantitiesbasedondispositioncodequantityactionswithaddsubtractoperationsandnegativequantityprevention_Node0 N_ReleaseQuantityCalculationCalculateandadjustcargoreleasequantitiesbasedondispositioncodequantityactionswithaddsubtractoperationsandnegativequantityprevention_Node0 -- No --> E_ReleaseQuantityCalculationCalculateandadjustcargoreleasequantitiesbasedondispositioncodequantityactionswithaddsubtractoperationsandnegativequantityprevention
File: GCX016.cbl
GIVEN:
A cargo record exists with current released quantity and a disposition code contains quantity action instructions
WHEN:
The system processes the disposition code quantity action
THEN:
The system retrieves current released quantity, applies the specified action (add or subtract), prevents negative results by setting to zero if needed, and updates the cargo status array with the new quantity
β Consolidated Acceptance Criteria
- The system processes the quantity action → the system adds the disposition code quantity to the current released quantity
- The system processes the quantity addition → the system should add the disposition code quantity to the current released quantity
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AddQuantitytoReleasedAmount(["Start Step"])
E_AddQuantitytoReleasedAmount(["End Step"])
N_AddQuantitytoReleasedAmount_Node0{"The system processes the quantity
action"}:::decision N_AddQuantitytoReleasedAmount_Node0_action["The system adds the disposition
code quantity to the current
released quantity"]:::main N_AddQuantitytoReleasedAmount_Node0 -- Yes --> N_AddQuantitytoReleasedAmount_Node0_action N_AddQuantitytoReleasedAmount_Node0_action --> E_AddQuantitytoReleasedAmount S_AddQuantitytoReleasedAmount --> N_AddQuantitytoReleasedAmount_Node0 N_AddQuantitytoReleasedAmount_Node1{"The system processes the quantity
addition"}:::decision N_AddQuantitytoReleasedAmount_Node1_action["The system should add the
disposition code quantity to the
current released quantity"]:::main N_AddQuantitytoReleasedAmount_Node1 -- Yes --> N_AddQuantitytoReleasedAmount_Node1_action N_AddQuantitytoReleasedAmount_Node1_action --> E_AddQuantitytoReleasedAmount N_AddQuantitytoReleasedAmount_Node0 -- No --> N_AddQuantitytoReleasedAmount_Node1 N_AddQuantitytoReleasedAmount_Node1 -- No --> E_AddQuantitytoReleasedAmount
action"}:::decision N_AddQuantitytoReleasedAmount_Node0_action["The system adds the disposition
code quantity to the current
released quantity"]:::main N_AddQuantitytoReleasedAmount_Node0 -- Yes --> N_AddQuantitytoReleasedAmount_Node0_action N_AddQuantitytoReleasedAmount_Node0_action --> E_AddQuantitytoReleasedAmount S_AddQuantitytoReleasedAmount --> N_AddQuantitytoReleasedAmount_Node0 N_AddQuantitytoReleasedAmount_Node1{"The system processes the quantity
addition"}:::decision N_AddQuantitytoReleasedAmount_Node1_action["The system should add the
disposition code quantity to the
current released quantity"]:::main N_AddQuantitytoReleasedAmount_Node1 -- Yes --> N_AddQuantitytoReleasedAmount_Node1_action N_AddQuantitytoReleasedAmount_Node1_action --> E_AddQuantitytoReleasedAmount N_AddQuantitytoReleasedAmount_Node0 -- No --> N_AddQuantitytoReleasedAmount_Node1 N_AddQuantitytoReleasedAmount_Node1 -- No --> E_AddQuantitytoReleasedAmount
File: GCX016.cbl
GIVEN:
A disposition code has action type ADD_QUANTITY and contains a quantity value
WHEN:
The system processes the quantity action
THEN:
The system adds the disposition code quantity to the current released quantity
File: GCX016.cbl
GIVEN:
The disposition code action type is ADD_QUANTITY and current released quantity exists
WHEN:
The system processes the quantity addition
THEN:
The system should add the disposition code quantity to the current released quantity
β Consolidated Acceptance Criteria
- The system processes the quantity action → the system subtracts the disposition code quantity from the current released quantity
- The system processes the quantity subtraction → the system should subtract the disposition code quantity from the current released quantity
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SubtractQuantityfromReleasedAmount(["Start Step"])
E_SubtractQuantityfromReleasedAmount(["End Step"])
N_SubtractQuantityfromReleasedAmount_Node0{"The system processes the quantity
action"}:::decision N_SubtractQuantityfromReleasedAmount_Node0_action["The system subtracts the
disposition code quantity from the
current released quantity"]:::main N_SubtractQuantityfromReleasedAmount_Node0 -- Yes --> N_SubtractQuantityfromReleasedAmount_Node0_action N_SubtractQuantityfromReleasedAmount_Node0_action --> E_SubtractQuantityfromReleasedAmount S_SubtractQuantityfromReleasedAmount --> N_SubtractQuantityfromReleasedAmount_Node0 N_SubtractQuantityfromReleasedAmount_Node1{"The system processes the quantity
subtraction"}:::decision N_SubtractQuantityfromReleasedAmount_Node1_action["The system should subtract the
disposition code quantity from the
current released quantity"]:::main N_SubtractQuantityfromReleasedAmount_Node1 -- Yes --> N_SubtractQuantityfromReleasedAmount_Node1_action N_SubtractQuantityfromReleasedAmount_Node1_action --> E_SubtractQuantityfromReleasedAmount N_SubtractQuantityfromReleasedAmount_Node0 -- No --> N_SubtractQuantityfromReleasedAmount_Node1 N_SubtractQuantityfromReleasedAmount_Node1 -- No --> E_SubtractQuantityfromReleasedAmount
action"}:::decision N_SubtractQuantityfromReleasedAmount_Node0_action["The system subtracts the
disposition code quantity from the
current released quantity"]:::main N_SubtractQuantityfromReleasedAmount_Node0 -- Yes --> N_SubtractQuantityfromReleasedAmount_Node0_action N_SubtractQuantityfromReleasedAmount_Node0_action --> E_SubtractQuantityfromReleasedAmount S_SubtractQuantityfromReleasedAmount --> N_SubtractQuantityfromReleasedAmount_Node0 N_SubtractQuantityfromReleasedAmount_Node1{"The system processes the quantity
subtraction"}:::decision N_SubtractQuantityfromReleasedAmount_Node1_action["The system should subtract the
disposition code quantity from the
current released quantity"]:::main N_SubtractQuantityfromReleasedAmount_Node1 -- Yes --> N_SubtractQuantityfromReleasedAmount_Node1_action N_SubtractQuantityfromReleasedAmount_Node1_action --> E_SubtractQuantityfromReleasedAmount N_SubtractQuantityfromReleasedAmount_Node0 -- No --> N_SubtractQuantityfromReleasedAmount_Node1 N_SubtractQuantityfromReleasedAmount_Node1 -- No --> E_SubtractQuantityfromReleasedAmount
File: GCX016.cbl
GIVEN:
A disposition code has action type SUBTRACT_QUANTITY and contains a quantity value
WHEN:
The system processes the quantity action
THEN:
The system subtracts the disposition code quantity from the current released quantity
File: GCX016.cbl
GIVEN:
The disposition code action type is SUBTRACT_QUANTITY and current released quantity exists
WHEN:
The system processes the quantity subtraction
THEN:
The system should subtract the disposition code quantity from the current released quantity
β Consolidated Acceptance Criteria
- The system calculates the new released quantity → the system sets the released quantity to zero instead of allowing the negative value
- The system applies quantity correction rules → the system should set the released quantity to zero to prevent negative values
- The system needs to assign a valid released quantity → the system should set the released quantity to zero to prevent negative inventory
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetReleasedQuantitytoZero(["Start Step"])
E_SetReleasedQuantitytoZero(["End Step"])
N_SetReleasedQuantitytoZero_Node0{"The system calculates the new
released quantity"}:::decision N_SetReleasedQuantitytoZero_Node0_action["The system sets the released
quantity to zero instead of allowing
the negative value"]:::main N_SetReleasedQuantitytoZero_Node0 -- Yes --> N_SetReleasedQuantitytoZero_Node0_action N_SetReleasedQuantitytoZero_Node0_action --> E_SetReleasedQuantitytoZero S_SetReleasedQuantitytoZero --> N_SetReleasedQuantitytoZero_Node0 N_SetReleasedQuantitytoZero_Node1{"The system applies quantity
correction rules"}:::decision N_SetReleasedQuantitytoZero_Node1_action["The system should set the released
quantity to zero to prevent negative
values"]:::main N_SetReleasedQuantitytoZero_Node1 -- Yes --> N_SetReleasedQuantitytoZero_Node1_action N_SetReleasedQuantitytoZero_Node1_action --> E_SetReleasedQuantitytoZero N_SetReleasedQuantitytoZero_Node0 -- No --> N_SetReleasedQuantitytoZero_Node1 N_SetReleasedQuantitytoZero_Node2{"The system needs to assign a valid
released quantity"}:::decision N_SetReleasedQuantitytoZero_Node2_action["The system should set the released
quantity to zero to prevent negative
inventory"]:::main N_SetReleasedQuantitytoZero_Node2 -- Yes --> N_SetReleasedQuantitytoZero_Node2_action N_SetReleasedQuantitytoZero_Node2_action --> E_SetReleasedQuantitytoZero N_SetReleasedQuantitytoZero_Node1 -- No --> N_SetReleasedQuantitytoZero_Node2 N_SetReleasedQuantitytoZero_Node2 -- No --> E_SetReleasedQuantitytoZero
released quantity"}:::decision N_SetReleasedQuantitytoZero_Node0_action["The system sets the released
quantity to zero instead of allowing
the negative value"]:::main N_SetReleasedQuantitytoZero_Node0 -- Yes --> N_SetReleasedQuantitytoZero_Node0_action N_SetReleasedQuantitytoZero_Node0_action --> E_SetReleasedQuantitytoZero S_SetReleasedQuantitytoZero --> N_SetReleasedQuantitytoZero_Node0 N_SetReleasedQuantitytoZero_Node1{"The system applies quantity
correction rules"}:::decision N_SetReleasedQuantitytoZero_Node1_action["The system should set the released
quantity to zero to prevent negative
values"]:::main N_SetReleasedQuantitytoZero_Node1 -- Yes --> N_SetReleasedQuantitytoZero_Node1_action N_SetReleasedQuantitytoZero_Node1_action --> E_SetReleasedQuantitytoZero N_SetReleasedQuantitytoZero_Node0 -- No --> N_SetReleasedQuantitytoZero_Node1 N_SetReleasedQuantitytoZero_Node2{"The system needs to assign a valid
released quantity"}:::decision N_SetReleasedQuantitytoZero_Node2_action["The system should set the released
quantity to zero to prevent negative
inventory"]:::main N_SetReleasedQuantitytoZero_Node2 -- Yes --> N_SetReleasedQuantitytoZero_Node2_action N_SetReleasedQuantitytoZero_Node2_action --> E_SetReleasedQuantitytoZero N_SetReleasedQuantitytoZero_Node1 -- No --> N_SetReleasedQuantitytoZero_Node2 N_SetReleasedQuantitytoZero_Node2 -- No --> E_SetReleasedQuantitytoZero
File: GCX016.cbl
GIVEN:
A quantity subtraction operation would result in a negative released quantity
WHEN:
The system calculates the new released quantity
THEN:
The system sets the released quantity to zero instead of allowing the negative value
File: GCX016.cbl
GIVEN:
The calculated released quantity is negative
WHEN:
The system applies quantity correction rules
THEN:
The system should set the released quantity to zero to prevent negative values
File: GCX016.cbl
GIVEN:
A quantity calculation results in a negative value
WHEN:
The system needs to assign a valid released quantity
THEN:
The system should set the released quantity to zero to prevent negative inventory
β Consolidated Acceptance Criteria
- If the disposition code action type → the system identifies whether to add quantity, subtract quantity, or perform no quantity action based on the disposition code configuration
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CheckDispositionCodeQuantityAction(["Start Step"])
E_CheckDispositionCodeQuantityAction(["End Step"])
N_CheckDispositionCodeQuantityAction_Node0{"The system evaluates the
disposition code action type"}:::decision N_CheckDispositionCodeQuantityAction_Node0_action["The system identifies whether to
add quantity, subtract quantity, or
perform no quantity action based on
the disposition code configuration"]:::main N_CheckDispositionCodeQuantityAction_Node0 -- Yes --> N_CheckDispositionCodeQuantityAction_Node0_action N_CheckDispositionCodeQuantityAction_Node0_action --> E_CheckDispositionCodeQuantityAction S_CheckDispositionCodeQuantityAction --> N_CheckDispositionCodeQuantityAction_Node0 N_CheckDispositionCodeQuantityAction_Node0 -- No --> E_CheckDispositionCodeQuantityAction
disposition code action type"}:::decision N_CheckDispositionCodeQuantityAction_Node0_action["The system identifies whether to
add quantity, subtract quantity, or
perform no quantity action based on
the disposition code configuration"]:::main N_CheckDispositionCodeQuantityAction_Node0 -- Yes --> N_CheckDispositionCodeQuantityAction_Node0_action N_CheckDispositionCodeQuantityAction_Node0_action --> E_CheckDispositionCodeQuantityAction S_CheckDispositionCodeQuantityAction --> N_CheckDispositionCodeQuantityAction_Node0 N_CheckDispositionCodeQuantityAction_Node0 -- No --> E_CheckDispositionCodeQuantityAction
File: GCX016.cbl
GIVEN:
A disposition code is being processed for quantity actions
WHEN:
The system evaluates the disposition code action type
THEN:
The system identifies whether to add quantity, subtract quantity, or perform no quantity action based on the disposition code configuration
β Consolidated Acceptance Criteria
- The system completes the quantity calculation → the system stores the updated released quantity in the appropriate cargo status array entry
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_StoreUpdatedQuantityinStatusArray(["Start Step"])
E_StoreUpdatedQuantityinStatusArray(["End Step"])
N_StoreUpdatedQuantityinStatusArray_Node0{"The system completes the quantity
calculation"}:::decision N_StoreUpdatedQuantityinStatusArray_Node0_action["The system stores the updated
released quantity in the appropriate
cargo status array entry"]:::main N_StoreUpdatedQuantityinStatusArray_Node0 -- Yes --> N_StoreUpdatedQuantityinStatusArray_Node0_action N_StoreUpdatedQuantityinStatusArray_Node0_action --> E_StoreUpdatedQuantityinStatusArray S_StoreUpdatedQuantityinStatusArray --> N_StoreUpdatedQuantityinStatusArray_Node0 N_StoreUpdatedQuantityinStatusArray_Node0 -- No --> E_StoreUpdatedQuantityinStatusArray
calculation"}:::decision N_StoreUpdatedQuantityinStatusArray_Node0_action["The system stores the updated
released quantity in the appropriate
cargo status array entry"]:::main N_StoreUpdatedQuantityinStatusArray_Node0 -- Yes --> N_StoreUpdatedQuantityinStatusArray_Node0_action N_StoreUpdatedQuantityinStatusArray_Node0_action --> E_StoreUpdatedQuantityinStatusArray S_StoreUpdatedQuantityinStatusArray --> N_StoreUpdatedQuantityinStatusArray_Node0 N_StoreUpdatedQuantityinStatusArray_Node0 -- No --> E_StoreUpdatedQuantityinStatusArray
File: GCX016.cbl
GIVEN:
A new released quantity has been calculated from disposition code processing
WHEN:
The system completes the quantity calculation
THEN:
The system stores the updated released quantity in the appropriate cargo status array entry
β Consolidated Acceptance Criteria
- The system checks for X4 segment availability → processing continues if X4 segment is available, otherwise error handling is triggered
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_X4SegmentAvailable(["Start Step"])
E_X4SegmentAvailable(["End Step"])
N_X4SegmentAvailable_Node0{"The system checks for X4 segment
availability"}:::decision N_X4SegmentAvailable_Node0_action["Processing continues if X4 segment
is available, otherwise error
handling is triggered"]:::main N_X4SegmentAvailable_Node0 -- Yes --> N_X4SegmentAvailable_Node0_action N_X4SegmentAvailable_Node0_action --> E_X4SegmentAvailable S_X4SegmentAvailable --> N_X4SegmentAvailable_Node0 N_X4SegmentAvailable_Node0 -- No --> E_X4SegmentAvailable
availability"}:::decision N_X4SegmentAvailable_Node0_action["Processing continues if X4 segment
is available, otherwise error
handling is triggered"]:::main N_X4SegmentAvailable_Node0 -- Yes --> N_X4SegmentAvailable_Node0_action N_X4SegmentAvailable_Node0_action --> E_X4SegmentAvailable S_X4SegmentAvailable --> N_X4SegmentAvailable_Node0 N_X4SegmentAvailable_Node0 -- No --> E_X4SegmentAvailable
File: GCX016.cbl
GIVEN:
A cargo processing request is initiated
WHEN:
The system checks for X4 segment availability
THEN:
Processing continues if X4 segment is available, otherwise error handling is triggered
β Consolidated Acceptance Criteria
- The system processes the X4-01 field → car ID is extracted and stored for further processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExtractCarIDfromX401(["Start Step"])
E_ExtractCarIDfromX401(["End Step"])
N_ExtractCarIDfromX401_Node0{"The system processes the X4-01
field"}:::decision N_ExtractCarIDfromX401_Node0_action["Car ID is extracted and stored for
further processing"]:::main N_ExtractCarIDfromX401_Node0 -- Yes --> N_ExtractCarIDfromX401_Node0_action N_ExtractCarIDfromX401_Node0_action --> E_ExtractCarIDfromX401 S_ExtractCarIDfromX401 --> N_ExtractCarIDfromX401_Node0 N_ExtractCarIDfromX401_Node0 -- No --> E_ExtractCarIDfromX401
field"}:::decision N_ExtractCarIDfromX401_Node0_action["Car ID is extracted and stored for
further processing"]:::main N_ExtractCarIDfromX401_Node0 -- Yes --> N_ExtractCarIDfromX401_Node0_action N_ExtractCarIDfromX401_Node0_action --> E_ExtractCarIDfromX401 S_ExtractCarIDfromX401 --> N_ExtractCarIDfromX401_Node0 N_ExtractCarIDfromX401_Node0 -- No --> E_ExtractCarIDfromX401
File: GCX016.cbl
GIVEN:
X4 segment is available with car information
WHEN:
The system processes the X4-01 field
THEN:
- Car id is extracted
- Stored for further processing
β Consolidated Acceptance Criteria
- The system processes the waybill data → waybill number is extracted and prepared for cargo lookup
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExtractWaybillfromX402(["Start Step"])
E_ExtractWaybillfromX402(["End Step"])
N_ExtractWaybillfromX402_Node0{"The system processes the waybill
data"}:::decision N_ExtractWaybillfromX402_Node0_action["Waybill number is extracted and
prepared for cargo lookup"]:::main N_ExtractWaybillfromX402_Node0 -- Yes --> N_ExtractWaybillfromX402_Node0_action N_ExtractWaybillfromX402_Node0_action --> E_ExtractWaybillfromX402 S_ExtractWaybillfromX402 --> N_ExtractWaybillfromX402_Node0 N_ExtractWaybillfromX402_Node0 -- No --> E_ExtractWaybillfromX402
data"}:::decision N_ExtractWaybillfromX402_Node0_action["Waybill number is extracted and
prepared for cargo lookup"]:::main N_ExtractWaybillfromX402_Node0 -- Yes --> N_ExtractWaybillfromX402_Node0_action N_ExtractWaybillfromX402_Node0_action --> E_ExtractWaybillfromX402 S_ExtractWaybillfromX402 --> N_ExtractWaybillfromX402_Node0 N_ExtractWaybillfromX402_Node0 -- No --> E_ExtractWaybillfromX402
File: GCX016.cbl
GIVEN:
X4 segment contains waybill information in X4-02 field
WHEN:
The system processes the waybill data
THEN:
- Waybill number is extracted
- Prepared for cargo lookup
β Consolidated Acceptance Criteria
- The system calls GCCCARFM formatting module → car ID is formatted according to standard business rules and validation is performed
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_FormatCarIDusingGCCCARFM(["Start Step"])
E_FormatCarIDusingGCCCARFM(["End Step"])
N_FormatCarIDusingGCCCARFM_Node0{"The system calls GCCCARFM
formatting module"}:::decision N_FormatCarIDusingGCCCARFM_Node0_action["Car ID is formatted according to
standard business rules and
validation is performed"]:::main N_FormatCarIDusingGCCCARFM_Node0 -- Yes --> N_FormatCarIDusingGCCCARFM_Node0_action N_FormatCarIDusingGCCCARFM_Node0_action --> E_FormatCarIDusingGCCCARFM S_FormatCarIDusingGCCCARFM --> N_FormatCarIDusingGCCCARFM_Node0 N_FormatCarIDusingGCCCARFM_Node0 -- No --> E_FormatCarIDusingGCCCARFM
formatting module"}:::decision N_FormatCarIDusingGCCCARFM_Node0_action["Car ID is formatted according to
standard business rules and
validation is performed"]:::main N_FormatCarIDusingGCCCARFM_Node0 -- Yes --> N_FormatCarIDusingGCCCARFM_Node0_action N_FormatCarIDusingGCCCARFM_Node0_action --> E_FormatCarIDusingGCCCARFM S_FormatCarIDusingGCCCARFM --> N_FormatCarIDusingGCCCARFM_Node0 N_FormatCarIDusingGCCCARFM_Node0 -- No --> E_FormatCarIDusingGCCCARFM
File: GCX016.cbl
GIVEN:
Raw car ID has been extracted from X4 segment
WHEN:
The system calls GCCCARFM formatting module
THEN:
- Car id is formatted according to standard business rules
- Validation is performed
β Consolidated Acceptance Criteria
- The system validates the car ID format and content → processing continues if car ID is valid, otherwise error handling is initiated
- Car ID validation is performed → system determines if car ID is valid for cargo matching operations or terminates matching process if invalid
- System validates the car ID for search operations → if car ID is invalid, mark cargo as not found and log the search attempt, otherwise proceed with car index search
- The system validates the car ID for lookup operations → the car ID is considered valid if it is not spaces and meets format requirements, otherwise the lookup process terminates
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CarIDValid(["Start Step"])
E_CarIDValid(["End Step"])
N_CarIDValid_Node0{"The system validates the car ID
format and content"}:::decision N_CarIDValid_Node0_action["Processing continues if car ID is
valid, otherwise error handling is
initiated"]:::main N_CarIDValid_Node0 -- Yes --> N_CarIDValid_Node0_action N_CarIDValid_Node0_action --> E_CarIDValid S_CarIDValid --> N_CarIDValid_Node0 N_CarIDValid_Node1{"Car ID validation is performed"}:::decision N_CarIDValid_Node1_action["System determines if car ID is
valid for cargo matching operations
or terminates matching process if
invalid"]:::main N_CarIDValid_Node1 -- Yes --> N_CarIDValid_Node1_action N_CarIDValid_Node1_action --> E_CarIDValid N_CarIDValid_Node0 -- No --> N_CarIDValid_Node1 N_CarIDValid_Node2{"System validates the car ID for
search operations"}:::decision N_CarIDValid_Node2_action["If car ID is invalid, mark cargo as
not found and log the search
attempt, otherwise proceed with car
index search"]:::main N_CarIDValid_Node2 -- Yes --> N_CarIDValid_Node2_action N_CarIDValid_Node2_action --> E_CarIDValid N_CarIDValid_Node1 -- No --> N_CarIDValid_Node2 N_CarIDValid_Node3{"The system validates the car ID for
lookup operations"}:::decision N_CarIDValid_Node3_action["The car ID is considered valid if
it is not spaces and meets format
requirements, otherwise the lookup
process terminates"]:::main N_CarIDValid_Node3 -- Yes --> N_CarIDValid_Node3_action N_CarIDValid_Node3_action --> E_CarIDValid N_CarIDValid_Node2 -- No --> N_CarIDValid_Node3 N_CarIDValid_Node3 -- No --> E_CarIDValid
format and content"}:::decision N_CarIDValid_Node0_action["Processing continues if car ID is
valid, otherwise error handling is
initiated"]:::main N_CarIDValid_Node0 -- Yes --> N_CarIDValid_Node0_action N_CarIDValid_Node0_action --> E_CarIDValid S_CarIDValid --> N_CarIDValid_Node0 N_CarIDValid_Node1{"Car ID validation is performed"}:::decision N_CarIDValid_Node1_action["System determines if car ID is
valid for cargo matching operations
or terminates matching process if
invalid"]:::main N_CarIDValid_Node1 -- Yes --> N_CarIDValid_Node1_action N_CarIDValid_Node1_action --> E_CarIDValid N_CarIDValid_Node0 -- No --> N_CarIDValid_Node1 N_CarIDValid_Node2{"System validates the car ID for
search operations"}:::decision N_CarIDValid_Node2_action["If car ID is invalid, mark cargo as
not found and log the search
attempt, otherwise proceed with car
index search"]:::main N_CarIDValid_Node2 -- Yes --> N_CarIDValid_Node2_action N_CarIDValid_Node2_action --> E_CarIDValid N_CarIDValid_Node1 -- No --> N_CarIDValid_Node2 N_CarIDValid_Node3{"The system validates the car ID for
lookup operations"}:::decision N_CarIDValid_Node3_action["The car ID is considered valid if
it is not spaces and meets format
requirements, otherwise the lookup
process terminates"]:::main N_CarIDValid_Node3 -- Yes --> N_CarIDValid_Node3_action N_CarIDValid_Node3_action --> E_CarIDValid N_CarIDValid_Node2 -- No --> N_CarIDValid_Node3 N_CarIDValid_Node3 -- No --> E_CarIDValid
File: GCX016.cbl
GIVEN:
Car ID has been formatted using GCCCARFM
WHEN:
- The system validates the car id format
- Content
THEN:
Processing continues if car ID is valid, otherwise error handling is initiated
File: GCX016.cbl
GIVEN:
Car ID has been extracted and formatted from equipment information
WHEN:
Car ID validation is performed
THEN:
System determines if car ID is valid for cargo matching operations or terminates matching process if invalid
File: GCX016.cbl
GIVEN:
Car ID has been extracted and formatted from equipment information
WHEN:
System validates the car ID for search operations
THEN:
- If car id is invalid, mark cargo as not found
- Log the search attempt, otherwise proceed with car index search
File: GCX016.cbl
GIVEN:
A car ID has been formatted using the GCCCARFM utility
WHEN:
The system validates the car ID for lookup operations
THEN:
- The car id is considered valid if it is not spaces
- Meets format requirements, otherwise the lookup process terminates
β Consolidated Acceptance Criteria
- The system builds the composite search key → car/waybill key is constructed for database lookup operations
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_BuildCarWaybillKey(["Start Step"])
E_BuildCarWaybillKey(["End Step"])
N_BuildCarWaybillKey_Node0{"The system builds the composite
search key"}:::decision N_BuildCarWaybillKey_Node0_action["Carwaybill key is constructed for
database lookup operations"]:::main N_BuildCarWaybillKey_Node0 -- Yes --> N_BuildCarWaybillKey_Node0_action N_BuildCarWaybillKey_Node0_action --> E_BuildCarWaybillKey S_BuildCarWaybillKey --> N_BuildCarWaybillKey_Node0 N_BuildCarWaybillKey_Node0 -- No --> E_BuildCarWaybillKey
search key"}:::decision N_BuildCarWaybillKey_Node0_action["Carwaybill key is constructed for
database lookup operations"]:::main N_BuildCarWaybillKey_Node0 -- Yes --> N_BuildCarWaybillKey_Node0_action N_BuildCarWaybillKey_Node0_action --> E_BuildCarWaybillKey S_BuildCarWaybillKey --> N_BuildCarWaybillKey_Node0 N_BuildCarWaybillKey_Node0 -- No --> E_BuildCarWaybillKey
File: GCX016.cbl
GIVEN:
Valid car ID and waybill number are available
WHEN:
The system builds the composite search key
THEN:
Car/waybill key is constructed for database lookup operations
β Consolidated Acceptance Criteria
- The system searches the cargo database using car/waybill index → cargo records matching the key are identified or search returns no results
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SearchCargobyCarWaybillIndex(["Start Step"])
E_SearchCargobyCarWaybillIndex(["End Step"])
N_SearchCargobyCarWaybillIndex_Node0{"The system searches the cargo
database using carwaybill index"}:::decision N_SearchCargobyCarWaybillIndex_Node0_action["Cargo records matching the key are
identified or search returns no
results"]:::main N_SearchCargobyCarWaybillIndex_Node0 -- Yes --> N_SearchCargobyCarWaybillIndex_Node0_action N_SearchCargobyCarWaybillIndex_Node0_action --> E_SearchCargobyCarWaybillIndex S_SearchCargobyCarWaybillIndex --> N_SearchCargobyCarWaybillIndex_Node0 N_SearchCargobyCarWaybillIndex_Node0 -- No --> E_SearchCargobyCarWaybillIndex
database using carwaybill index"}:::decision N_SearchCargobyCarWaybillIndex_Node0_action["Cargo records matching the key are
identified or search returns no
results"]:::main N_SearchCargobyCarWaybillIndex_Node0 -- Yes --> N_SearchCargobyCarWaybillIndex_Node0_action N_SearchCargobyCarWaybillIndex_Node0_action --> E_SearchCargobyCarWaybillIndex S_SearchCargobyCarWaybillIndex --> N_SearchCargobyCarWaybillIndex_Node0 N_SearchCargobyCarWaybillIndex_Node0 -- No --> E_SearchCargobyCarWaybillIndex
File: GCX016.cbl
GIVEN:
Car/waybill key has been constructed
WHEN:
The system searches the cargo database using car/waybill index
THEN:
Cargo records matching the key are identified or search returns no results
β Consolidated Acceptance Criteria
- The system retrieves the cargo record → complete cargo record is loaded for status validation and processing
- The system processes the found cargo → complete cargo record data is retrieved including status, quantities, and identification information
- The system accesses the GCCC-CARGO-ROOT cargo records database → the system retrieves the complete cargo record for processing or returns cargo not found error
- The system processes the search results → the matching cargo record is retrieved from the database for further processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RetrieveCargoRecord(["Start Step"])
E_RetrieveCargoRecord(["End Step"])
N_RetrieveCargoRecord_Node0{"The system retrieves the cargo
record"}:::decision N_RetrieveCargoRecord_Node0_action["Complete cargo record is loaded for
status validation and processing"]:::main N_RetrieveCargoRecord_Node0 -- Yes --> N_RetrieveCargoRecord_Node0_action N_RetrieveCargoRecord_Node0_action --> E_RetrieveCargoRecord S_RetrieveCargoRecord --> N_RetrieveCargoRecord_Node0 N_RetrieveCargoRecord_Node1{"The system processes the found
cargo"}:::decision N_RetrieveCargoRecord_Node1_action["Complete cargo record data is
retrieved including status,
quantities, and identification
information"]:::main N_RetrieveCargoRecord_Node1 -- Yes --> N_RetrieveCargoRecord_Node1_action N_RetrieveCargoRecord_Node1_action --> E_RetrieveCargoRecord N_RetrieveCargoRecord_Node0 -- No --> N_RetrieveCargoRecord_Node1 N_RetrieveCargoRecord_Node2{"The system accesses the
GCCC-CARGO-ROOT cargo records
database"}:::decision N_RetrieveCargoRecord_Node2_action["The system retrieves the complete
cargo record for processing or
returns cargo not found error"]:::main N_RetrieveCargoRecord_Node2 -- Yes --> N_RetrieveCargoRecord_Node2_action N_RetrieveCargoRecord_Node2_action --> E_RetrieveCargoRecord N_RetrieveCargoRecord_Node1 -- No --> N_RetrieveCargoRecord_Node2 N_RetrieveCargoRecord_Node3{"The system processes the search
results"}:::decision N_RetrieveCargoRecord_Node3_action["The matching cargo record is
retrieved from the database for
further processing"]:::main N_RetrieveCargoRecord_Node3 -- Yes --> N_RetrieveCargoRecord_Node3_action N_RetrieveCargoRecord_Node3_action --> E_RetrieveCargoRecord N_RetrieveCargoRecord_Node2 -- No --> N_RetrieveCargoRecord_Node3 N_RetrieveCargoRecord_Node3 -- No --> E_RetrieveCargoRecord
record"}:::decision N_RetrieveCargoRecord_Node0_action["Complete cargo record is loaded for
status validation and processing"]:::main N_RetrieveCargoRecord_Node0 -- Yes --> N_RetrieveCargoRecord_Node0_action N_RetrieveCargoRecord_Node0_action --> E_RetrieveCargoRecord S_RetrieveCargoRecord --> N_RetrieveCargoRecord_Node0 N_RetrieveCargoRecord_Node1{"The system processes the found
cargo"}:::decision N_RetrieveCargoRecord_Node1_action["Complete cargo record data is
retrieved including status,
quantities, and identification
information"]:::main N_RetrieveCargoRecord_Node1 -- Yes --> N_RetrieveCargoRecord_Node1_action N_RetrieveCargoRecord_Node1_action --> E_RetrieveCargoRecord N_RetrieveCargoRecord_Node0 -- No --> N_RetrieveCargoRecord_Node1 N_RetrieveCargoRecord_Node2{"The system accesses the
GCCC-CARGO-ROOT cargo records
database"}:::decision N_RetrieveCargoRecord_Node2_action["The system retrieves the complete
cargo record for processing or
returns cargo not found error"]:::main N_RetrieveCargoRecord_Node2 -- Yes --> N_RetrieveCargoRecord_Node2_action N_RetrieveCargoRecord_Node2_action --> E_RetrieveCargoRecord N_RetrieveCargoRecord_Node1 -- No --> N_RetrieveCargoRecord_Node2 N_RetrieveCargoRecord_Node3{"The system processes the search
results"}:::decision N_RetrieveCargoRecord_Node3_action["The matching cargo record is
retrieved from the database for
further processing"]:::main N_RetrieveCargoRecord_Node3 -- Yes --> N_RetrieveCargoRecord_Node3_action N_RetrieveCargoRecord_Node3_action --> E_RetrieveCargoRecord N_RetrieveCargoRecord_Node2 -- No --> N_RetrieveCargoRecord_Node3 N_RetrieveCargoRecord_Node3 -- No --> E_RetrieveCargoRecord
File: GCX016.cbl
GIVEN:
Cargo has been found using car/waybill search
WHEN:
The system retrieves the cargo record
THEN:
- Complete cargo record is loaded for status validation
- Processing
File: GCX016.cbl
GIVEN:
Cargo records exist for the car and waybill combination
WHEN:
The system processes the found cargo
THEN:
Complete cargo record data is retrieved including status, quantities, and identification information
File: GCX016.cbl
GIVEN:
A valid disposition code 95 and cargo identifier
WHEN:
The system accesses the GCCC-CARGO-ROOT cargo records database
THEN:
The system retrieves the complete cargo record for processing or returns cargo not found error
File: GCX016.cbl
GIVEN:
Cargo records have been found for the car ID and waybill combination
WHEN:
The system processes the search results
THEN:
The matching cargo record is retrieved from the database for further processing
β Consolidated Acceptance Criteria
- The system validates the cargo status → cargo status is checked for validity and processing eligibility
- If cargo eligibility → the cargo status is validated to ensure it is not deleted and is eligible for customs processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ValidateCargoStatus(["Start Step"])
E_ValidateCargoStatus(["End Step"])
N_ValidateCargoStatus_Node0{"The system validates the cargo
status"}:::decision N_ValidateCargoStatus_Node0_action["Cargo status is checked for
validity and processing eligibility"]:::main N_ValidateCargoStatus_Node0 -- Yes --> N_ValidateCargoStatus_Node0_action N_ValidateCargoStatus_Node0_action --> E_ValidateCargoStatus S_ValidateCargoStatus --> N_ValidateCargoStatus_Node0 N_ValidateCargoStatus_Node1{"The system evaluates cargo
eligibility"}:::decision N_ValidateCargoStatus_Node1_action["The cargo status is validated to
ensure it is not deleted and is
eligible for customs processing"]:::main N_ValidateCargoStatus_Node1 -- Yes --> N_ValidateCargoStatus_Node1_action N_ValidateCargoStatus_Node1_action --> E_ValidateCargoStatus N_ValidateCargoStatus_Node0 -- No --> N_ValidateCargoStatus_Node1 N_ValidateCargoStatus_Node1 -- No --> E_ValidateCargoStatus
status"}:::decision N_ValidateCargoStatus_Node0_action["Cargo status is checked for
validity and processing eligibility"]:::main N_ValidateCargoStatus_Node0 -- Yes --> N_ValidateCargoStatus_Node0_action N_ValidateCargoStatus_Node0_action --> E_ValidateCargoStatus S_ValidateCargoStatus --> N_ValidateCargoStatus_Node0 N_ValidateCargoStatus_Node1{"The system evaluates cargo
eligibility"}:::decision N_ValidateCargoStatus_Node1_action["The cargo status is validated to
ensure it is not deleted and is
eligible for customs processing"]:::main N_ValidateCargoStatus_Node1 -- Yes --> N_ValidateCargoStatus_Node1_action N_ValidateCargoStatus_Node1_action --> E_ValidateCargoStatus N_ValidateCargoStatus_Node0 -- No --> N_ValidateCargoStatus_Node1 N_ValidateCargoStatus_Node1 -- No --> E_ValidateCargoStatus
File: GCX016.cbl
GIVEN:
Cargo record has been retrieved from the database
WHEN:
The system validates the cargo status
THEN:
- Cargo status is checked for validity
- Processing eligibility
File: GCX016.cbl
GIVEN:
A cargo record has been retrieved
WHEN:
The system evaluates cargo eligibility
THEN:
- The cargo status is validated to ensure it is not deleted
- Is eligible for customs processing
β Consolidated Acceptance Criteria
- The system assesses overall cargo validity → if cargo is valid, proceed to disposition code processing; if invalid, trigger error handling
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CargoValid(["Start Step"])
E_CargoValid(["End Step"])
N_CargoValid_Node0{"The system assesses overall cargo
validity"}:::decision N_CargoValid_Node0_action["If cargo is valid, proceed to
disposition code processing if
invalid, trigger error handling"]:::main N_CargoValid_Node0 -- Yes --> N_CargoValid_Node0_action N_CargoValid_Node0_action --> E_CargoValid S_CargoValid --> N_CargoValid_Node0 N_CargoValid_Node0 -- No --> E_CargoValid
validity"}:::decision N_CargoValid_Node0_action["If cargo is valid, proceed to
disposition code processing if
invalid, trigger error handling"]:::main N_CargoValid_Node0 -- Yes --> N_CargoValid_Node0_action N_CargoValid_Node0_action --> E_CargoValid S_CargoValid --> N_CargoValid_Node0 N_CargoValid_Node0 -- No --> E_CargoValid
File: GCX016.cbl
GIVEN:
Cargo status has been validated
WHEN:
The system assesses overall cargo validity
THEN:
If cargo is valid, proceed to disposition code processing; if invalid, trigger error handling
β Consolidated Acceptance Criteria
- The system processes disposition codes from X4 segment → disposition codes are evaluated and appropriate cargo status changes are determined
- The system processes customs disposition codes → disposition codes are evaluated and appropriate cargo status changes are determined based on customs requirements
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ProcessDispositionCodes(["Start Step"])
E_ProcessDispositionCodes(["End Step"])
N_ProcessDispositionCodes_Node0{"The system processes disposition
codes from X4 segment"}:::decision N_ProcessDispositionCodes_Node0_action["Disposition codes are evaluated and
appropriate cargo status changes are
determined"]:::main N_ProcessDispositionCodes_Node0 -- Yes --> N_ProcessDispositionCodes_Node0_action N_ProcessDispositionCodes_Node0_action --> E_ProcessDispositionCodes S_ProcessDispositionCodes --> N_ProcessDispositionCodes_Node0 N_ProcessDispositionCodes_Node1{"The system processes customs
disposition codes"}:::decision N_ProcessDispositionCodes_Node1_action["Disposition codes are evaluated and
appropriate cargo status changes are
determined based on customs
requirements"]:::main N_ProcessDispositionCodes_Node1 -- Yes --> N_ProcessDispositionCodes_Node1_action N_ProcessDispositionCodes_Node1_action --> E_ProcessDispositionCodes N_ProcessDispositionCodes_Node0 -- No --> N_ProcessDispositionCodes_Node1 N_ProcessDispositionCodes_Node1 -- No --> E_ProcessDispositionCodes
codes from X4 segment"}:::decision N_ProcessDispositionCodes_Node0_action["Disposition codes are evaluated and
appropriate cargo status changes are
determined"]:::main N_ProcessDispositionCodes_Node0 -- Yes --> N_ProcessDispositionCodes_Node0_action N_ProcessDispositionCodes_Node0_action --> E_ProcessDispositionCodes S_ProcessDispositionCodes --> N_ProcessDispositionCodes_Node0 N_ProcessDispositionCodes_Node1{"The system processes customs
disposition codes"}:::decision N_ProcessDispositionCodes_Node1_action["Disposition codes are evaluated and
appropriate cargo status changes are
determined based on customs
requirements"]:::main N_ProcessDispositionCodes_Node1 -- Yes --> N_ProcessDispositionCodes_Node1_action N_ProcessDispositionCodes_Node1_action --> E_ProcessDispositionCodes N_ProcessDispositionCodes_Node0 -- No --> N_ProcessDispositionCodes_Node1 N_ProcessDispositionCodes_Node1 -- No --> E_ProcessDispositionCodes
File: GCX016.cbl
GIVEN:
Valid cargo record is available for processing
WHEN:
The system processes disposition codes from X4 segment
THEN:
- Disposition codes are evaluated
- Appropriate cargo status changes are determined
File: GCX016.cbl
GIVEN:
Valid cargo exists and disposition codes are available from X4 segment
WHEN:
The system processes customs disposition codes
THEN:
- Disposition codes are evaluated
- Appropriate cargo status changes are determined based on customs requirements
β Consolidated Acceptance Criteria
- The system performs car ID only search using car ID index → cargo records matching the car ID are identified regardless of waybill
- The system performs alternative search strategy → a broader search is performed using only the car ID to locate any cargo associated with the equipment
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_TryCarIDOnlySearch(["Start Step"])
E_TryCarIDOnlySearch(["End Step"])
N_TryCarIDOnlySearch_Node0{"The system performs car ID only
search using car ID index"}:::decision N_TryCarIDOnlySearch_Node0_action["Cargo records matching the car ID
are identified regardless of waybill"]:::main N_TryCarIDOnlySearch_Node0 -- Yes --> N_TryCarIDOnlySearch_Node0_action N_TryCarIDOnlySearch_Node0_action --> E_TryCarIDOnlySearch S_TryCarIDOnlySearch --> N_TryCarIDOnlySearch_Node0 N_TryCarIDOnlySearch_Node1{"The system performs alternative
search strategy"}:::decision N_TryCarIDOnlySearch_Node1_action["A broader search is performed using
only the car ID to locate any cargo
associated with the equipment"]:::main N_TryCarIDOnlySearch_Node1 -- Yes --> N_TryCarIDOnlySearch_Node1_action N_TryCarIDOnlySearch_Node1_action --> E_TryCarIDOnlySearch N_TryCarIDOnlySearch_Node0 -- No --> N_TryCarIDOnlySearch_Node1 N_TryCarIDOnlySearch_Node1 -- No --> E_TryCarIDOnlySearch
search using car ID index"}:::decision N_TryCarIDOnlySearch_Node0_action["Cargo records matching the car ID
are identified regardless of waybill"]:::main N_TryCarIDOnlySearch_Node0 -- Yes --> N_TryCarIDOnlySearch_Node0_action N_TryCarIDOnlySearch_Node0_action --> E_TryCarIDOnlySearch S_TryCarIDOnlySearch --> N_TryCarIDOnlySearch_Node0 N_TryCarIDOnlySearch_Node1{"The system performs alternative
search strategy"}:::decision N_TryCarIDOnlySearch_Node1_action["A broader search is performed using
only the car ID to locate any cargo
associated with the equipment"]:::main N_TryCarIDOnlySearch_Node1 -- Yes --> N_TryCarIDOnlySearch_Node1_action N_TryCarIDOnlySearch_Node1_action --> E_TryCarIDOnlySearch N_TryCarIDOnlySearch_Node0 -- No --> N_TryCarIDOnlySearch_Node1 N_TryCarIDOnlySearch_Node1 -- No --> E_TryCarIDOnlySearch
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
Car/waybill search did not find any cargo records
WHEN:
The system performs car ID only search using car ID index
THEN:
Cargo records matching the car ID are identified regardless of waybill
File: GCX016.cbl
GIVEN:
No cargo was found using car ID and waybill combination
WHEN:
The system performs alternative search strategy
THEN:
A broader search is performed using only the car ID to locate any cargo associated with the equipment
β Consolidated Acceptance Criteria
- If fallback search results → if cargo is found, proceed to waybill matching; if not found, generate cargo not found error
- System evaluates the search results → if cargo records are found, proceed with US-CCN validation, otherwise attempt broader search
- System evaluates search results → if cargo is found, proceed to validate cargo record status, otherwise attempt broader search without US-CCN
- If the search results → if cargo records are found, proceed with validation; if no cargo records are found, attempt broader search methods
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CargoFoundbyCarID(["Start Step"])
E_CargoFoundbyCarID(["End Step"])
N_CargoFoundbyCarID_Node0{"The system evaluates fallback
search results"}:::decision N_CargoFoundbyCarID_Node0_action["If cargo is found, proceed to
waybill matching if not found,
generate cargo not found error"]:::main N_CargoFoundbyCarID_Node0 -- Yes --> N_CargoFoundbyCarID_Node0_action N_CargoFoundbyCarID_Node0_action --> E_CargoFoundbyCarID S_CargoFoundbyCarID --> N_CargoFoundbyCarID_Node0 N_CargoFoundbyCarID_Node1{"System evaluates the search results"}:::decision N_CargoFoundbyCarID_Node1_action["If cargo records are found, proceed
with US-CCN validation, otherwise
attempt broader search"]:::main N_CargoFoundbyCarID_Node1 -- Yes --> N_CargoFoundbyCarID_Node1_action N_CargoFoundbyCarID_Node1_action --> E_CargoFoundbyCarID N_CargoFoundbyCarID_Node0 -- No --> N_CargoFoundbyCarID_Node1 N_CargoFoundbyCarID_Node2{"System evaluates search results"}:::decision N_CargoFoundbyCarID_Node2_action["If cargo is found, proceed to
validate cargo record status,
otherwise attempt broader search
without US-CCN"]:::main N_CargoFoundbyCarID_Node2 -- Yes --> N_CargoFoundbyCarID_Node2_action N_CargoFoundbyCarID_Node2_action --> E_CargoFoundbyCarID N_CargoFoundbyCarID_Node1 -- No --> N_CargoFoundbyCarID_Node2 N_CargoFoundbyCarID_Node3{"The system evaluates the search
results"}:::decision N_CargoFoundbyCarID_Node3_action["If cargo records are found, proceed
with validation if no cargo records
are found, attempt broader search
methods"]:::main N_CargoFoundbyCarID_Node3 -- Yes --> N_CargoFoundbyCarID_Node3_action N_CargoFoundbyCarID_Node3_action --> E_CargoFoundbyCarID N_CargoFoundbyCarID_Node2 -- No --> N_CargoFoundbyCarID_Node3 N_CargoFoundbyCarID_Node3 -- No --> E_CargoFoundbyCarID
search results"}:::decision N_CargoFoundbyCarID_Node0_action["If cargo is found, proceed to
waybill matching if not found,
generate cargo not found error"]:::main N_CargoFoundbyCarID_Node0 -- Yes --> N_CargoFoundbyCarID_Node0_action N_CargoFoundbyCarID_Node0_action --> E_CargoFoundbyCarID S_CargoFoundbyCarID --> N_CargoFoundbyCarID_Node0 N_CargoFoundbyCarID_Node1{"System evaluates the search results"}:::decision N_CargoFoundbyCarID_Node1_action["If cargo records are found, proceed
with US-CCN validation, otherwise
attempt broader search"]:::main N_CargoFoundbyCarID_Node1 -- Yes --> N_CargoFoundbyCarID_Node1_action N_CargoFoundbyCarID_Node1_action --> E_CargoFoundbyCarID N_CargoFoundbyCarID_Node0 -- No --> N_CargoFoundbyCarID_Node1 N_CargoFoundbyCarID_Node2{"System evaluates search results"}:::decision N_CargoFoundbyCarID_Node2_action["If cargo is found, proceed to
validate cargo record status,
otherwise attempt broader search
without US-CCN"]:::main N_CargoFoundbyCarID_Node2 -- Yes --> N_CargoFoundbyCarID_Node2_action N_CargoFoundbyCarID_Node2_action --> E_CargoFoundbyCarID N_CargoFoundbyCarID_Node1 -- No --> N_CargoFoundbyCarID_Node2 N_CargoFoundbyCarID_Node3{"The system evaluates the search
results"}:::decision N_CargoFoundbyCarID_Node3_action["If cargo records are found, proceed
with validation if no cargo records
are found, attempt broader search
methods"]:::main N_CargoFoundbyCarID_Node3 -- Yes --> N_CargoFoundbyCarID_Node3_action N_CargoFoundbyCarID_Node3_action --> E_CargoFoundbyCarID N_CargoFoundbyCarID_Node2 -- No --> N_CargoFoundbyCarID_Node3 N_CargoFoundbyCarID_Node3 -- No --> E_CargoFoundbyCarID
File: GCX016.cbl
GIVEN:
Car ID only search has been completed
WHEN:
The system evaluates fallback search results
THEN:
If cargo is found, proceed to waybill matching; if not found, generate cargo not found error
File: GCX016.cbl
GIVEN:
Car ID search has been executed
WHEN:
System evaluates the search results
THEN:
If cargo records are found, proceed with US-CCN validation, otherwise attempt broader search
File: GCX016.cbl
GIVEN:
Database search by car ID has been completed
WHEN:
System evaluates search results
THEN:
If cargo is found, proceed to validate cargo record status, otherwise attempt broader search without US-CCN
File: GCX016.cbl
GIVEN:
A car index search has been performed on the cargo database
WHEN:
The system evaluates the search results
THEN:
If cargo records are found, proceed with validation; if no cargo records are found, attempt broader search methods
β Consolidated Acceptance Criteria
- The system analyzes waybill information in found records → waybill matching is performed to identify the correct cargo record
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CheckMultipleWaybills(["Start Step"])
E_CheckMultipleWaybills(["End Step"])
N_CheckMultipleWaybills_Node0{"The system analyzes waybill
information in found records"}:::decision N_CheckMultipleWaybills_Node0_action["Waybill matching is performed to
identify the correct cargo record"]:::main N_CheckMultipleWaybills_Node0 -- Yes --> N_CheckMultipleWaybills_Node0_action N_CheckMultipleWaybills_Node0_action --> E_CheckMultipleWaybills S_CheckMultipleWaybills --> N_CheckMultipleWaybills_Node0 N_CheckMultipleWaybills_Node0 -- No --> E_CheckMultipleWaybills
information in found records"}:::decision N_CheckMultipleWaybills_Node0_action["Waybill matching is performed to
identify the correct cargo record"]:::main N_CheckMultipleWaybills_Node0 -- Yes --> N_CheckMultipleWaybills_Node0_action N_CheckMultipleWaybills_Node0_action --> E_CheckMultipleWaybills S_CheckMultipleWaybills --> N_CheckMultipleWaybills_Node0 N_CheckMultipleWaybills_Node0 -- No --> E_CheckMultipleWaybills
File: GCX016.cbl
GIVEN:
Cargo records have been found using car ID only search
WHEN:
The system analyzes waybill information in found records
THEN:
Waybill matching is performed to identify the correct cargo record
β Consolidated Acceptance Criteria
- The system checks for waybill matches → if exactly one waybill matches, select that cargo; if multiple or no matches, generate error
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SingleWaybillMatch(["Start Step"])
E_SingleWaybillMatch(["End Step"])
N_SingleWaybillMatch_Node0{"The system checks for waybill
matches"}:::decision N_SingleWaybillMatch_Node0_action["If exactly one waybill matches,
select that cargo if multiple or no
matches, generate error"]:::main N_SingleWaybillMatch_Node0 -- Yes --> N_SingleWaybillMatch_Node0_action N_SingleWaybillMatch_Node0_action --> E_SingleWaybillMatch S_SingleWaybillMatch --> N_SingleWaybillMatch_Node0 N_SingleWaybillMatch_Node0 -- No --> E_SingleWaybillMatch
matches"}:::decision N_SingleWaybillMatch_Node0_action["If exactly one waybill matches,
select that cargo if multiple or no
matches, generate error"]:::main N_SingleWaybillMatch_Node0 -- Yes --> N_SingleWaybillMatch_Node0_action N_SingleWaybillMatch_Node0_action --> E_SingleWaybillMatch S_SingleWaybillMatch --> N_SingleWaybillMatch_Node0 N_SingleWaybillMatch_Node0 -- No --> E_SingleWaybillMatch
File: GCX016.cbl
GIVEN:
Multiple cargo records exist for the car ID
WHEN:
The system checks for waybill matches
THEN:
If exactly one waybill matches, select that cargo; if multiple or no matches, generate error
β Consolidated Acceptance Criteria
- The system selects the matching cargo record → the correct cargo record is identified for processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SelectMatchingCargo(["Start Step"])
E_SelectMatchingCargo(["End Step"])
N_SelectMatchingCargo_Node0{"The system selects the matching
cargo record"}:::decision N_SelectMatchingCargo_Node0_action["The correct cargo record is
identified for processing"]:::main N_SelectMatchingCargo_Node0 -- Yes --> N_SelectMatchingCargo_Node0_action N_SelectMatchingCargo_Node0_action --> E_SelectMatchingCargo S_SelectMatchingCargo --> N_SelectMatchingCargo_Node0 N_SelectMatchingCargo_Node0 -- No --> E_SelectMatchingCargo
cargo record"}:::decision N_SelectMatchingCargo_Node0_action["The correct cargo record is
identified for processing"]:::main N_SelectMatchingCargo_Node0 -- Yes --> N_SelectMatchingCargo_Node0_action N_SelectMatchingCargo_Node0_action --> E_SelectMatchingCargo S_SelectMatchingCargo --> N_SelectMatchingCargo_Node0 N_SelectMatchingCargo_Node0 -- No --> E_SelectMatchingCargo
File: GCX016.cbl
GIVEN:
Exactly one cargo record matches the waybill criteria
WHEN:
The system selects the matching cargo record
THEN:
The correct cargo record is identified for processing
β Consolidated Acceptance Criteria
- The system logs the search method used → car ID search usage is recorded for audit and monitoring purposes
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogCarIDSearchUsed(["Start Step"])
E_LogCarIDSearchUsed(["End Step"])
N_LogCarIDSearchUsed_Node0{"The system logs the search method
used"}:::decision N_LogCarIDSearchUsed_Node0_action["Car ID search usage is recorded for
audit and monitoring purposes"]:::main N_LogCarIDSearchUsed_Node0 -- Yes --> N_LogCarIDSearchUsed_Node0_action N_LogCarIDSearchUsed_Node0_action --> E_LogCarIDSearchUsed S_LogCarIDSearchUsed --> N_LogCarIDSearchUsed_Node0 N_LogCarIDSearchUsed_Node0 -- No --> E_LogCarIDSearchUsed
used"}:::decision N_LogCarIDSearchUsed_Node0_action["Car ID search usage is recorded for
audit and monitoring purposes"]:::main N_LogCarIDSearchUsed_Node0 -- Yes --> N_LogCarIDSearchUsed_Node0_action N_LogCarIDSearchUsed_Node0_action --> E_LogCarIDSearchUsed S_LogCarIDSearchUsed --> N_LogCarIDSearchUsed_Node0 N_LogCarIDSearchUsed_Node0 -- No --> E_LogCarIDSearchUsed
File: GCX016.cbl
GIVEN:
Cargo was successfully found using car ID only search
WHEN:
The system logs the search method used
THEN:
- Car id search usage is recorded for audit
- Monitoring purposes
β Consolidated Acceptance Criteria
- The system generates cargo not found error → error message is created indicating cargo could not be located for processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GenerateCargoNotFoundError(["Start Step"])
E_GenerateCargoNotFoundError(["End Step"])
N_GenerateCargoNotFoundError_Node0{"The system generates cargo not
found error"}:::decision N_GenerateCargoNotFoundError_Node0_action["Error message is created indicating
cargo could not be located for
processing"]:::exclusion N_GenerateCargoNotFoundError_Node0 -- Yes -->|Alternative| N_GenerateCargoNotFoundError_Node0_action N_GenerateCargoNotFoundError_Node0_action --> E_GenerateCargoNotFoundError S_GenerateCargoNotFoundError --> N_GenerateCargoNotFoundError_Node0 N_GenerateCargoNotFoundError_Node0 -- No --> E_GenerateCargoNotFoundError
found error"}:::decision N_GenerateCargoNotFoundError_Node0_action["Error message is created indicating
cargo could not be located for
processing"]:::exclusion N_GenerateCargoNotFoundError_Node0 -- Yes -->|Alternative| N_GenerateCargoNotFoundError_Node0_action N_GenerateCargoNotFoundError_Node0_action --> E_GenerateCargoNotFoundError S_GenerateCargoNotFoundError --> N_GenerateCargoNotFoundError_Node0 N_GenerateCargoNotFoundError_Node0 -- No --> E_GenerateCargoNotFoundError
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
Both car/waybill and car ID only searches failed to find valid cargo
WHEN:
The system generates cargo not found error
THEN:
Error message is created indicating cargo could not be located for processing
β Consolidated Acceptance Criteria
- The system creates a foreign bill record → new foreign bill record is created to handle the unmatched cargo information
- The system handles missing cargo scenario → a foreign bill record is created to track the cargo information for future reference and processing
- The system creates a foreign bill record → a new foreign bill record is created with car-waybill information for subsequent processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CreateForeignBillRecord(["Start Step"])
E_CreateForeignBillRecord(["End Step"])
N_CreateForeignBillRecord_Node0{"The system creates a foreign bill
record"}:::decision N_CreateForeignBillRecord_Node0_action["New foreign bill record is created
to handle the unmatched cargo
information"]:::main N_CreateForeignBillRecord_Node0 -- Yes --> N_CreateForeignBillRecord_Node0_action N_CreateForeignBillRecord_Node0_action --> E_CreateForeignBillRecord S_CreateForeignBillRecord --> N_CreateForeignBillRecord_Node0 N_CreateForeignBillRecord_Node1{"The system handles missing cargo
scenario"}:::decision N_CreateForeignBillRecord_Node1_action["A foreign bill record is created to
track the cargo information for
future reference and processing"]:::main N_CreateForeignBillRecord_Node1 -- Yes --> N_CreateForeignBillRecord_Node1_action N_CreateForeignBillRecord_Node1_action --> E_CreateForeignBillRecord N_CreateForeignBillRecord_Node0 -- No --> N_CreateForeignBillRecord_Node1 N_CreateForeignBillRecord_Node2{"The system creates a foreign bill
record"}:::decision N_CreateForeignBillRecord_Node2_action["A new foreign bill record is
created with car-waybill information
for subsequent processing"]:::main N_CreateForeignBillRecord_Node2 -- Yes --> N_CreateForeignBillRecord_Node2_action N_CreateForeignBillRecord_Node2_action --> E_CreateForeignBillRecord N_CreateForeignBillRecord_Node1 -- No --> N_CreateForeignBillRecord_Node2 N_CreateForeignBillRecord_Node2 -- No --> E_CreateForeignBillRecord
record"}:::decision N_CreateForeignBillRecord_Node0_action["New foreign bill record is created
to handle the unmatched cargo
information"]:::main N_CreateForeignBillRecord_Node0 -- Yes --> N_CreateForeignBillRecord_Node0_action N_CreateForeignBillRecord_Node0_action --> E_CreateForeignBillRecord S_CreateForeignBillRecord --> N_CreateForeignBillRecord_Node0 N_CreateForeignBillRecord_Node1{"The system handles missing cargo
scenario"}:::decision N_CreateForeignBillRecord_Node1_action["A foreign bill record is created to
track the cargo information for
future reference and processing"]:::main N_CreateForeignBillRecord_Node1 -- Yes --> N_CreateForeignBillRecord_Node1_action N_CreateForeignBillRecord_Node1_action --> E_CreateForeignBillRecord N_CreateForeignBillRecord_Node0 -- No --> N_CreateForeignBillRecord_Node1 N_CreateForeignBillRecord_Node2{"The system creates a foreign bill
record"}:::decision N_CreateForeignBillRecord_Node2_action["A new foreign bill record is
created with car-waybill information
for subsequent processing"]:::main N_CreateForeignBillRecord_Node2 -- Yes --> N_CreateForeignBillRecord_Node2_action N_CreateForeignBillRecord_Node2_action --> E_CreateForeignBillRecord N_CreateForeignBillRecord_Node1 -- No --> N_CreateForeignBillRecord_Node2 N_CreateForeignBillRecord_Node2 -- No --> E_CreateForeignBillRecord
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
Cargo not found error has been generated
WHEN:
The system creates a foreign bill record
THEN:
New foreign bill record is created to handle the unmatched cargo information
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
Cargo is not found and error has been logged
WHEN:
The system handles missing cargo scenario
THEN:
- A foreign bill record is created to track the cargo information for future reference
- Processing
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
Cargo not found error has been triggered and foreign bill creation is required
WHEN:
The system creates a foreign bill record
THEN:
A new foreign bill record is created with car-waybill information for subsequent processing
β Consolidated Acceptance Criteria
- System checks for car ID availability in the message data → if car ID is present, proceed with car ID search, otherwise create new foreign bill record
- The system checks for car ID availability in the N7 segment data → if car ID is not available, log 'No Car ID Available' and proceed to alternative cargo retrieval method
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CarIDAvailable(["Start Step"])
E_CarIDAvailable(["End Step"])
N_CarIDAvailable_Node0{"System checks for car ID
availability in the message data"}:::decision N_CarIDAvailable_Node0_action["If car ID is present, proceed with
car ID search, otherwise create new
foreign bill record"]:::main N_CarIDAvailable_Node0 -- Yes --> N_CarIDAvailable_Node0_action N_CarIDAvailable_Node0_action --> E_CarIDAvailable S_CarIDAvailable --> N_CarIDAvailable_Node0 N_CarIDAvailable_Node1{"The system checks for car ID
availability in the N7 segment data"}:::decision N_CarIDAvailable_Node1_action["If car ID is not available, log No
Car ID Available and proceed to
alternative cargo retrieval method"]:::main N_CarIDAvailable_Node1 -- Yes --> N_CarIDAvailable_Node1_action N_CarIDAvailable_Node1_action --> E_CarIDAvailable N_CarIDAvailable_Node0 -- No --> N_CarIDAvailable_Node1 N_CarIDAvailable_Node1 -- No --> E_CarIDAvailable
availability in the message data"}:::decision N_CarIDAvailable_Node0_action["If car ID is present, proceed with
car ID search, otherwise create new
foreign bill record"]:::main N_CarIDAvailable_Node0 -- Yes --> N_CarIDAvailable_Node0_action N_CarIDAvailable_Node0_action --> E_CarIDAvailable S_CarIDAvailable --> N_CarIDAvailable_Node0 N_CarIDAvailable_Node1{"The system checks for car ID
availability in the N7 segment data"}:::decision N_CarIDAvailable_Node1_action["If car ID is not available, log No
Car ID Available and proceed to
alternative cargo retrieval method"]:::main N_CarIDAvailable_Node1 -- Yes --> N_CarIDAvailable_Node1_action N_CarIDAvailable_Node1_action --> E_CarIDAvailable N_CarIDAvailable_Node0 -- No --> N_CarIDAvailable_Node1 N_CarIDAvailable_Node1 -- No --> E_CarIDAvailable
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
Cargo was not found using primary search methods
WHEN:
System checks for car ID availability in the message data
THEN:
If car ID is present, proceed with car ID search, otherwise create new foreign bill record
File: GCX016.cbl
GIVEN:
A cargo processing request by car and waybill combination is initiated
WHEN:
The system checks for car ID availability in the N7 segment data
THEN:
If car ID is not available, log 'No Car ID Available' and proceed to alternative cargo retrieval method
β Consolidated Acceptance Criteria
- System executes car ID only search using GCCUSIO with car ID index → system retrieves cargo records matching the car identification
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_B530AttemptCarIDOnlySearch(["Start Step"])
E_B530AttemptCarIDOnlySearch(["End Step"])
N_B530AttemptCarIDOnlySearch_Node0{"System executes car ID only search
using GCCUSIO with car ID index"}:::decision N_B530AttemptCarIDOnlySearch_Node0_action["System retrieves cargo records
matching the car identification"]:::main N_B530AttemptCarIDOnlySearch_Node0 -- Yes --> N_B530AttemptCarIDOnlySearch_Node0_action N_B530AttemptCarIDOnlySearch_Node0_action --> E_B530AttemptCarIDOnlySearch S_B530AttemptCarIDOnlySearch --> N_B530AttemptCarIDOnlySearch_Node0 N_B530AttemptCarIDOnlySearch_Node0 -- No --> E_B530AttemptCarIDOnlySearch
using GCCUSIO with car ID index"}:::decision N_B530AttemptCarIDOnlySearch_Node0_action["System retrieves cargo records
matching the car identification"]:::main N_B530AttemptCarIDOnlySearch_Node0 -- Yes --> N_B530AttemptCarIDOnlySearch_Node0_action N_B530AttemptCarIDOnlySearch_Node0_action --> E_B530AttemptCarIDOnlySearch S_B530AttemptCarIDOnlySearch --> N_B530AttemptCarIDOnlySearch_Node0 N_B530AttemptCarIDOnlySearch_Node0 -- No --> E_B530AttemptCarIDOnlySearch
File: GCX016.cbl
GIVEN:
Car ID is available in the message data
WHEN:
System executes car ID only search using GCCUSIO with car ID index
THEN:
System retrieves cargo records matching the car identification
β Consolidated Acceptance Criteria
- System compares the US-CCN key from the message with the cargo record US-CCN → if US-CCN keys match exactly, use the found cargo record, otherwise try broader search without US-CCN
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_USCCNMatches(["Start Step"])
E_USCCNMatches(["End Step"])
N_USCCNMatches_Node0{"System compares the US-CCN key from
the message with the cargo record
US-CCN"}:::decision N_USCCNMatches_Node0_action["If US-CCN keys match exactly, use
the found cargo record, otherwise
try broader search without US-CCN"]:::main N_USCCNMatches_Node0 -- Yes --> N_USCCNMatches_Node0_action N_USCCNMatches_Node0_action --> E_USCCNMatches S_USCCNMatches --> N_USCCNMatches_Node0 N_USCCNMatches_Node0 -- No --> E_USCCNMatches
the message with the cargo record
US-CCN"}:::decision N_USCCNMatches_Node0_action["If US-CCN keys match exactly, use
the found cargo record, otherwise
try broader search without US-CCN"]:::main N_USCCNMatches_Node0 -- Yes --> N_USCCNMatches_Node0_action N_USCCNMatches_Node0_action --> E_USCCNMatches S_USCCNMatches --> N_USCCNMatches_Node0 N_USCCNMatches_Node0 -- No --> E_USCCNMatches
File: GCX016.cbl
GIVEN:
Cargo record was found using car ID search
WHEN:
System compares the US-CCN key from the message with the cargo record US-CCN
THEN:
If US-CCN keys match exactly, use the found cargo record, otherwise try broader search without US-CCN
β Consolidated Acceptance Criteria
- System executes broader search criteria without US-CCN validation → system retrieves any cargo records matching available search criteria
- System attempts broader search strategy → search parameters are expanded to exclude US-CCN restrictions for wider cargo matching
- The system performs broader search without US-CCN constraints → the system searches cargo database using only car ID criteria to find any associated cargo records
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_TryBroaderSearchWithoutUSCCN(["Start Step"])
E_TryBroaderSearchWithoutUSCCN(["End Step"])
N_TryBroaderSearchWithoutUSCCN_Node0{"System executes broader search
criteria without US-CCN validation"}:::decision N_TryBroaderSearchWithoutUSCCN_Node0_action["System retrieves any cargo records
matching available search criteria"]:::main N_TryBroaderSearchWithoutUSCCN_Node0 -- Yes --> N_TryBroaderSearchWithoutUSCCN_Node0_action N_TryBroaderSearchWithoutUSCCN_Node0_action --> E_TryBroaderSearchWithoutUSCCN S_TryBroaderSearchWithoutUSCCN --> N_TryBroaderSearchWithoutUSCCN_Node0 N_TryBroaderSearchWithoutUSCCN_Node1{"System attempts broader search
strategy"}:::decision N_TryBroaderSearchWithoutUSCCN_Node1_action["Search parameters are expanded to
exclude US-CCN restrictions for
wider cargo matching"]:::main N_TryBroaderSearchWithoutUSCCN_Node1 -- Yes --> N_TryBroaderSearchWithoutUSCCN_Node1_action N_TryBroaderSearchWithoutUSCCN_Node1_action --> E_TryBroaderSearchWithoutUSCCN N_TryBroaderSearchWithoutUSCCN_Node0 -- No --> N_TryBroaderSearchWithoutUSCCN_Node1 N_TryBroaderSearchWithoutUSCCN_Node2{"The system performs broader search
without US-CCN constraints"}:::decision N_TryBroaderSearchWithoutUSCCN_Node2_action["The system searches cargo database
using only car ID criteria to find
any associated cargo records"]:::main N_TryBroaderSearchWithoutUSCCN_Node2 -- Yes --> N_TryBroaderSearchWithoutUSCCN_Node2_action N_TryBroaderSearchWithoutUSCCN_Node2_action --> E_TryBroaderSearchWithoutUSCCN N_TryBroaderSearchWithoutUSCCN_Node1 -- No --> N_TryBroaderSearchWithoutUSCCN_Node2 N_TryBroaderSearchWithoutUSCCN_Node2 -- No --> E_TryBroaderSearchWithoutUSCCN
criteria without US-CCN validation"}:::decision N_TryBroaderSearchWithoutUSCCN_Node0_action["System retrieves any cargo records
matching available search criteria"]:::main N_TryBroaderSearchWithoutUSCCN_Node0 -- Yes --> N_TryBroaderSearchWithoutUSCCN_Node0_action N_TryBroaderSearchWithoutUSCCN_Node0_action --> E_TryBroaderSearchWithoutUSCCN S_TryBroaderSearchWithoutUSCCN --> N_TryBroaderSearchWithoutUSCCN_Node0 N_TryBroaderSearchWithoutUSCCN_Node1{"System attempts broader search
strategy"}:::decision N_TryBroaderSearchWithoutUSCCN_Node1_action["Search parameters are expanded to
exclude US-CCN restrictions for
wider cargo matching"]:::main N_TryBroaderSearchWithoutUSCCN_Node1 -- Yes --> N_TryBroaderSearchWithoutUSCCN_Node1_action N_TryBroaderSearchWithoutUSCCN_Node1_action --> E_TryBroaderSearchWithoutUSCCN N_TryBroaderSearchWithoutUSCCN_Node0 -- No --> N_TryBroaderSearchWithoutUSCCN_Node1 N_TryBroaderSearchWithoutUSCCN_Node2{"The system performs broader search
without US-CCN constraints"}:::decision N_TryBroaderSearchWithoutUSCCN_Node2_action["The system searches cargo database
using only car ID criteria to find
any associated cargo records"]:::main N_TryBroaderSearchWithoutUSCCN_Node2 -- Yes --> N_TryBroaderSearchWithoutUSCCN_Node2_action N_TryBroaderSearchWithoutUSCCN_Node2_action --> E_TryBroaderSearchWithoutUSCCN N_TryBroaderSearchWithoutUSCCN_Node1 -- No --> N_TryBroaderSearchWithoutUSCCN_Node2 N_TryBroaderSearchWithoutUSCCN_Node2 -- No --> E_TryBroaderSearchWithoutUSCCN
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
US-CCN key does not match or car ID search failed
WHEN:
System executes broader search criteria without US-CCN validation
THEN:
System retrieves any cargo records matching available search criteria
File: GCX016.cbl
GIVEN:
Initial car ID search failed to find valid cargo OR cargo record validation failed
WHEN:
System attempts broader search strategy
THEN:
Search parameters are expanded to exclude US-CCN restrictions for wider cargo matching
File: GCX016.cbl
GIVEN:
Both exact car ID match and partial US-CCN matching have failed
WHEN:
The system performs broader search without US-CCN constraints
THEN:
The system searches cargo database using only car ID criteria to find any associated cargo records
β Consolidated Acceptance Criteria
- System compares waybill numbers from message against found cargo records → if waybill validation passes, select best matching cargo record, otherwise create new foreign bill
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ValidateMultipleWaybillNumbers(["Start Step"])
E_ValidateMultipleWaybillNumbers(["End Step"])
N_ValidateMultipleWaybillNumbers_Node0{"System compares waybill numbers
from message against found cargo
records"}:::decision N_ValidateMultipleWaybillNumbers_Node0_action["If waybill validation passes,
select best matching cargo record,
otherwise create new foreign bill"]:::main N_ValidateMultipleWaybillNumbers_Node0 -- Yes --> N_ValidateMultipleWaybillNumbers_Node0_action N_ValidateMultipleWaybillNumbers_Node0_action --> E_ValidateMultipleWaybillNumbers S_ValidateMultipleWaybillNumbers --> N_ValidateMultipleWaybillNumbers_Node0 N_ValidateMultipleWaybillNumbers_Node0 -- No --> E_ValidateMultipleWaybillNumbers
from message against found cargo
records"}:::decision N_ValidateMultipleWaybillNumbers_Node0_action["If waybill validation passes,
select best matching cargo record,
otherwise create new foreign bill"]:::main N_ValidateMultipleWaybillNumbers_Node0 -- Yes --> N_ValidateMultipleWaybillNumbers_Node0_action N_ValidateMultipleWaybillNumbers_Node0_action --> E_ValidateMultipleWaybillNumbers S_ValidateMultipleWaybillNumbers --> N_ValidateMultipleWaybillNumbers_Node0 N_ValidateMultipleWaybillNumbers_Node0 -- No --> E_ValidateMultipleWaybillNumbers
File: GCX016.cbl
GIVEN:
Multiple cargo records were found in broader search
WHEN:
System compares waybill numbers from message against found cargo records
THEN:
If waybill validation passes, select best matching cargo record, otherwise create new foreign bill
β Consolidated Acceptance Criteria
- System initiates foreign bill creation process → new cargo record is created with default values and manifest information
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_C200CreateForeignBillRecord(["Start Step"])
E_C200CreateForeignBillRecord(["End Step"])
N_C200CreateForeignBillRecord_Node0{"System initiates foreign bill
creation process"}:::decision N_C200CreateForeignBillRecord_Node0_action["New cargo record is created with
default values and manifest
information"]:::main N_C200CreateForeignBillRecord_Node0 -- Yes --> N_C200CreateForeignBillRecord_Node0_action N_C200CreateForeignBillRecord_Node0_action --> E_C200CreateForeignBillRecord S_C200CreateForeignBillRecord --> N_C200CreateForeignBillRecord_Node0 N_C200CreateForeignBillRecord_Node0 -- No --> E_C200CreateForeignBillRecord
creation process"}:::decision N_C200CreateForeignBillRecord_Node0_action["New cargo record is created with
default values and manifest
information"]:::main N_C200CreateForeignBillRecord_Node0 -- Yes --> N_C200CreateForeignBillRecord_Node0_action N_C200CreateForeignBillRecord_Node0_action --> E_C200CreateForeignBillRecord S_C200CreateForeignBillRecord --> N_C200CreateForeignBillRecord_Node0 N_C200CreateForeignBillRecord_Node0 -- No --> E_C200CreateForeignBillRecord
File: GCX016.cbl
GIVEN:
No existing cargo record could be found or validated
WHEN:
System initiates foreign bill creation process
THEN:
- New cargo record is created with default values
- Manifest information
β Consolidated Acceptance Criteria
- System determines if cargo is CPRS or USCS type → if CPRS cargo, set status to ERROR, otherwise set status to SENT
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetCPRSUSCSStatusCodes(["Start Step"])
E_SetCPRSUSCSStatusCodes(["End Step"])
N_SetCPRSUSCSStatusCodes_Node0{"System determines if cargo is CPRS
or USCS type"}:::decision N_SetCPRSUSCSStatusCodes_Node0_action["If CPRS cargo, set status to ERROR,
otherwise set status to SENT"]:::main N_SetCPRSUSCSStatusCodes_Node0 -- Yes --> N_SetCPRSUSCSStatusCodes_Node0_action N_SetCPRSUSCSStatusCodes_Node0_action --> E_SetCPRSUSCSStatusCodes S_SetCPRSUSCSStatusCodes --> N_SetCPRSUSCSStatusCodes_Node0 N_SetCPRSUSCSStatusCodes_Node0 -- No --> E_SetCPRSUSCSStatusCodes
or USCS type"}:::decision N_SetCPRSUSCSStatusCodes_Node0_action["If CPRS cargo, set status to ERROR,
otherwise set status to SENT"]:::main N_SetCPRSUSCSStatusCodes_Node0 -- Yes --> N_SetCPRSUSCSStatusCodes_Node0_action N_SetCPRSUSCSStatusCodes_Node0_action --> E_SetCPRSUSCSStatusCodes S_SetCPRSUSCSStatusCodes --> N_SetCPRSUSCSStatusCodes_Node0 N_SetCPRSUSCSStatusCodes_Node0 -- No --> E_SetCPRSUSCSStatusCodes
File: GCX016.cbl
GIVEN:
New foreign bill record is being created
WHEN:
System determines if cargo is CPRS or USCS type
THEN:
If CPRS cargo, set status to ERROR, otherwise set status to SENT
β Consolidated Acceptance Criteria
- System processes master in-bond entry type → set master in-bond flag and apply specific processing rules: 61 for immediate transport, 62 for transport export, 63 for immediate export, 69 for US-Canada-US movement
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_HandleMasterInBondTypes61626369(["Start Step"])
E_HandleMasterInBondTypes61626369(["End Step"])
N_HandleMasterInBondTypes61626369_Node0{"System processes master in-bond
entry type"}:::decision N_HandleMasterInBondTypes61626369_Node0_action["Set master in-bond flag and apply
specific processing rules: 61 for
immediate transport, 62 for
transport export, 63 for immediate
export, 69 for US-Canada-US movement"]:::main N_HandleMasterInBondTypes61626369_Node0 -- Yes --> N_HandleMasterInBondTypes61626369_Node0_action N_HandleMasterInBondTypes61626369_Node0_action --> E_HandleMasterInBondTypes61626369 S_HandleMasterInBondTypes61626369 --> N_HandleMasterInBondTypes61626369_Node0 N_HandleMasterInBondTypes61626369_Node0 -- No --> E_HandleMasterInBondTypes61626369
entry type"}:::decision N_HandleMasterInBondTypes61626369_Node0_action["Set master in-bond flag and apply
specific processing rules: 61 for
immediate transport, 62 for
transport export, 63 for immediate
export, 69 for US-Canada-US movement"]:::main N_HandleMasterInBondTypes61626369_Node0 -- Yes --> N_HandleMasterInBondTypes61626369_Node0_action N_HandleMasterInBondTypes61626369_Node0_action --> E_HandleMasterInBondTypes61626369 S_HandleMasterInBondTypes61626369 --> N_HandleMasterInBondTypes61626369_Node0 N_HandleMasterInBondTypes61626369_Node0 -- No --> E_HandleMasterInBondTypes61626369
File: GCX016.cbl
GIVEN:
New cargo record has entry type code 61, 62, 63, or 69
WHEN:
System processes master in-bond entry type
THEN:
- Set master in-bond flag
- Apply specific processing rules: 61 for immediate transport, 62 for transport export, 63 for immediate export, 69 for us-canada-us movement
β Consolidated Acceptance Criteria
- System processes border entry type → clear bond information and apply default border processing rules
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_HandleBorderEntryType00(["Start Step"])
E_HandleBorderEntryType00(["End Step"])
N_HandleBorderEntryType00_Node0{"System processes border entry type"}:::decision
N_HandleBorderEntryType00_Node0_action["Clear bond information and apply
default border processing rules"]:::main N_HandleBorderEntryType00_Node0 -- Yes --> N_HandleBorderEntryType00_Node0_action N_HandleBorderEntryType00_Node0_action --> E_HandleBorderEntryType00 S_HandleBorderEntryType00 --> N_HandleBorderEntryType00_Node0 N_HandleBorderEntryType00_Node0 -- No --> E_HandleBorderEntryType00
default border processing rules"]:::main N_HandleBorderEntryType00_Node0 -- Yes --> N_HandleBorderEntryType00_Node0_action N_HandleBorderEntryType00_Node0_action --> E_HandleBorderEntryType00 S_HandleBorderEntryType00 --> N_HandleBorderEntryType00_Node0 N_HandleBorderEntryType00_Node0 -- No --> E_HandleBorderEntryType00
File: GCX016.cbl
GIVEN:
New cargo record has entry type code 00
WHEN:
System processes border entry type
THEN:
- Clear bond information
- Apply default border processing rules
β Consolidated Acceptance Criteria
- System maps transport type codes from message data → assign appropriate transport category and processing flags based on transport type
- The entry type code needs to be mapped to transport type → map code 61 to immediate transport, 62 to transport export, 63 to immediate export, and 69 to US-Canada-US movement
- The entry type code is '61' → set transport classification to immediate transport
- The entry type code is '62' → set transport classification to transport for export
- The entry type code is '63' → set transport classification to immediate export
- The entry type code is '69' → set transport classification to US-Canada-US movement
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MapTransportTypeCodes(["Start Step"])
E_MapTransportTypeCodes(["End Step"])
N_MapTransportTypeCodes_Node0{"System maps transport type codes
from message data"}:::decision N_MapTransportTypeCodes_Node0_action["Assign appropriate transport
category and processing flags based
on transport type"]:::main N_MapTransportTypeCodes_Node0 -- Yes --> N_MapTransportTypeCodes_Node0_action N_MapTransportTypeCodes_Node0_action --> E_MapTransportTypeCodes S_MapTransportTypeCodes --> N_MapTransportTypeCodes_Node0 N_MapTransportTypeCodes_Node1{"The entry type code needs to be
mapped to transport type"}:::decision N_MapTransportTypeCodes_Node1_action["Map code 61 to immediate transport,
62 to transport export, 63 to
immediate export, and 69 to
US-Canada-US movement"]:::main N_MapTransportTypeCodes_Node1 -- Yes --> N_MapTransportTypeCodes_Node1_action N_MapTransportTypeCodes_Node1_action --> E_MapTransportTypeCodes N_MapTransportTypeCodes_Node0 -- No --> N_MapTransportTypeCodes_Node1 N_MapTransportTypeCodes_Node2{"The entry type code is 61"}:::decision N_MapTransportTypeCodes_Node2_action["Set transport classification to
immediate transport"]:::main N_MapTransportTypeCodes_Node2 -- Yes --> N_MapTransportTypeCodes_Node2_action N_MapTransportTypeCodes_Node2_action --> E_MapTransportTypeCodes N_MapTransportTypeCodes_Node1 -- No --> N_MapTransportTypeCodes_Node2 N_MapTransportTypeCodes_Node3{"The entry type code is 62"}:::decision N_MapTransportTypeCodes_Node3_action["Set transport classification to
transport for export"]:::main N_MapTransportTypeCodes_Node3 -- Yes --> N_MapTransportTypeCodes_Node3_action N_MapTransportTypeCodes_Node3_action --> E_MapTransportTypeCodes N_MapTransportTypeCodes_Node2 -- No --> N_MapTransportTypeCodes_Node3 N_MapTransportTypeCodes_Node4{"The entry type code is 63"}:::decision N_MapTransportTypeCodes_Node4_action["Set transport classification to
immediate export"]:::main N_MapTransportTypeCodes_Node4 -- Yes --> N_MapTransportTypeCodes_Node4_action N_MapTransportTypeCodes_Node4_action --> E_MapTransportTypeCodes N_MapTransportTypeCodes_Node3 -- No --> N_MapTransportTypeCodes_Node4 N_MapTransportTypeCodes_Node5{"The entry type code is 69"}:::decision N_MapTransportTypeCodes_Node5_action["Set transport classification to
US-Canada-US movement"]:::main N_MapTransportTypeCodes_Node5 -- Yes --> N_MapTransportTypeCodes_Node5_action N_MapTransportTypeCodes_Node5_action --> E_MapTransportTypeCodes N_MapTransportTypeCodes_Node4 -- No --> N_MapTransportTypeCodes_Node5 N_MapTransportTypeCodes_Node5 -- No --> E_MapTransportTypeCodes
from message data"}:::decision N_MapTransportTypeCodes_Node0_action["Assign appropriate transport
category and processing flags based
on transport type"]:::main N_MapTransportTypeCodes_Node0 -- Yes --> N_MapTransportTypeCodes_Node0_action N_MapTransportTypeCodes_Node0_action --> E_MapTransportTypeCodes S_MapTransportTypeCodes --> N_MapTransportTypeCodes_Node0 N_MapTransportTypeCodes_Node1{"The entry type code needs to be
mapped to transport type"}:::decision N_MapTransportTypeCodes_Node1_action["Map code 61 to immediate transport,
62 to transport export, 63 to
immediate export, and 69 to
US-Canada-US movement"]:::main N_MapTransportTypeCodes_Node1 -- Yes --> N_MapTransportTypeCodes_Node1_action N_MapTransportTypeCodes_Node1_action --> E_MapTransportTypeCodes N_MapTransportTypeCodes_Node0 -- No --> N_MapTransportTypeCodes_Node1 N_MapTransportTypeCodes_Node2{"The entry type code is 61"}:::decision N_MapTransportTypeCodes_Node2_action["Set transport classification to
immediate transport"]:::main N_MapTransportTypeCodes_Node2 -- Yes --> N_MapTransportTypeCodes_Node2_action N_MapTransportTypeCodes_Node2_action --> E_MapTransportTypeCodes N_MapTransportTypeCodes_Node1 -- No --> N_MapTransportTypeCodes_Node2 N_MapTransportTypeCodes_Node3{"The entry type code is 62"}:::decision N_MapTransportTypeCodes_Node3_action["Set transport classification to
transport for export"]:::main N_MapTransportTypeCodes_Node3 -- Yes --> N_MapTransportTypeCodes_Node3_action N_MapTransportTypeCodes_Node3_action --> E_MapTransportTypeCodes N_MapTransportTypeCodes_Node2 -- No --> N_MapTransportTypeCodes_Node3 N_MapTransportTypeCodes_Node4{"The entry type code is 63"}:::decision N_MapTransportTypeCodes_Node4_action["Set transport classification to
immediate export"]:::main N_MapTransportTypeCodes_Node4 -- Yes --> N_MapTransportTypeCodes_Node4_action N_MapTransportTypeCodes_Node4_action --> E_MapTransportTypeCodes N_MapTransportTypeCodes_Node3 -- No --> N_MapTransportTypeCodes_Node4 N_MapTransportTypeCodes_Node5{"The entry type code is 69"}:::decision N_MapTransportTypeCodes_Node5_action["Set transport classification to
US-Canada-US movement"]:::main N_MapTransportTypeCodes_Node5 -- Yes --> N_MapTransportTypeCodes_Node5_action N_MapTransportTypeCodes_Node5_action --> E_MapTransportTypeCodes N_MapTransportTypeCodes_Node4 -- No --> N_MapTransportTypeCodes_Node5 N_MapTransportTypeCodes_Node5 -- No --> E_MapTransportTypeCodes
File: GCX016.cbl
GIVEN:
New cargo record has been initialized with entry type processing
WHEN:
System maps transport type codes from message data
THEN:
- Assign appropriate transport category
- Processing flags based on transport type
File: GCX016.cbl
GIVEN:
A cargo record is being processed for master in-bond entry
WHEN:
The entry type code needs to be mapped to transport type
THEN:
Map code 61 to immediate transport, 62 to transport export, 63 to immediate export, and 69 to US-Canada-US movement
File: GCX016.cbl
GIVEN:
A master in-bond cargo entry
WHEN:
The entry type code is '61'
THEN:
Set transport classification to immediate transport
File: GCX016.cbl
GIVEN:
A master in-bond cargo entry
WHEN:
The entry type code is '62'
THEN:
Set transport classification to transport for export
File: GCX016.cbl
GIVEN:
A master in-bond cargo entry
WHEN:
The entry type code is '63'
THEN:
Set transport classification to immediate export
File: GCX016.cbl
GIVEN:
A master in-bond cargo entry
WHEN:
The entry type code is '69'
THEN:
Set transport classification to US-Canada-US movement
β Consolidated Acceptance Criteria
- The system initiates cargo search with both car ID and US-CCN key parameters → the system should set the US-CCN key constraint and perform targeted search using car ID index
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetUSCCNKeyforInitialSearch(["Start Step"])
E_SetUSCCNKeyforInitialSearch(["End Step"])
N_SetUSCCNKeyforInitialSearch_Node0{"The system initiates cargo search
with both car ID and US-CCN key
parameters"}:::decision N_SetUSCCNKeyforInitialSearch_Node0_action["The system should set the US-CCN
key constraint and perform targeted
search using car ID index"]:::main N_SetUSCCNKeyforInitialSearch_Node0 -- Yes --> N_SetUSCCNKeyforInitialSearch_Node0_action N_SetUSCCNKeyforInitialSearch_Node0_action --> E_SetUSCCNKeyforInitialSearch S_SetUSCCNKeyforInitialSearch --> N_SetUSCCNKeyforInitialSearch_Node0 N_SetUSCCNKeyforInitialSearch_Node0 -- No --> E_SetUSCCNKeyforInitialSearch
with both car ID and US-CCN key
parameters"}:::decision N_SetUSCCNKeyforInitialSearch_Node0_action["The system should set the US-CCN
key constraint and perform targeted
search using car ID index"]:::main N_SetUSCCNKeyforInitialSearch_Node0 -- Yes --> N_SetUSCCNKeyforInitialSearch_Node0_action N_SetUSCCNKeyforInitialSearch_Node0_action --> E_SetUSCCNKeyforInitialSearch S_SetUSCCNKeyforInitialSearch --> N_SetUSCCNKeyforInitialSearch_Node0 N_SetUSCCNKeyforInitialSearch_Node0 -- No --> E_SetUSCCNKeyforInitialSearch
File: GCX016.cbl
GIVEN:
A car ID and US-CCN key are available for cargo search
WHEN:
- The system initiates cargo search with both car id
- Us-ccn key parameters
THEN:
- The system should set the us-ccn key constraint
- Perform targeted search using car id index
β Consolidated Acceptance Criteria
- The system performs primary cargo search → the system should call GCCUSIO using car ID index with US-CCN key constraint to find matching cargo
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CallGCCUSIOwithCarIDIndex(["Start Step"])
E_CallGCCUSIOwithCarIDIndex(["End Step"])
N_CallGCCUSIOwithCarIDIndex_Node0{"The system performs primary cargo
search"}:::decision N_CallGCCUSIOwithCarIDIndex_Node0_action["The system should call GCCUSIO
using car ID index with US-CCN key
constraint to find matching cargo"]:::main N_CallGCCUSIOwithCarIDIndex_Node0 -- Yes --> N_CallGCCUSIOwithCarIDIndex_Node0_action N_CallGCCUSIOwithCarIDIndex_Node0_action --> E_CallGCCUSIOwithCarIDIndex S_CallGCCUSIOwithCarIDIndex --> N_CallGCCUSIOwithCarIDIndex_Node0 N_CallGCCUSIOwithCarIDIndex_Node0 -- No --> E_CallGCCUSIOwithCarIDIndex
search"}:::decision N_CallGCCUSIOwithCarIDIndex_Node0_action["The system should call GCCUSIO
using car ID index with US-CCN key
constraint to find matching cargo"]:::main N_CallGCCUSIOwithCarIDIndex_Node0 -- Yes --> N_CallGCCUSIOwithCarIDIndex_Node0_action N_CallGCCUSIOwithCarIDIndex_Node0_action --> E_CallGCCUSIOwithCarIDIndex S_CallGCCUSIOwithCarIDIndex --> N_CallGCCUSIOwithCarIDIndex_Node0 N_CallGCCUSIOwithCarIDIndex_Node0 -- No --> E_CallGCCUSIOwithCarIDIndex
File: GCX016.cbl
GIVEN:
Formatted car ID and US-CCN key are available
WHEN:
The system performs primary cargo search
THEN:
The system should call GCCUSIO using car ID index with US-CCN key constraint to find matching cargo
β Consolidated Acceptance Criteria
- If search results → the system should determine if cargo was found and validate the cargo record matches search criteria
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CargoFoundwithUSCCNKey(["Start Step"])
E_CargoFoundwithUSCCNKey(["End Step"])
N_CargoFoundwithUSCCNKey_Node0{"The system evaluates search results"}:::decision
N_CargoFoundwithUSCCNKey_Node0_action["The system should determine if
cargo was found and validate the
cargo record matches search criteria"]:::main N_CargoFoundwithUSCCNKey_Node0 -- Yes --> N_CargoFoundwithUSCCNKey_Node0_action N_CargoFoundwithUSCCNKey_Node0_action --> E_CargoFoundwithUSCCNKey S_CargoFoundwithUSCCNKey --> N_CargoFoundwithUSCCNKey_Node0 N_CargoFoundwithUSCCNKey_Node0 -- No --> E_CargoFoundwithUSCCNKey
cargo was found and validate the
cargo record matches search criteria"]:::main N_CargoFoundwithUSCCNKey_Node0 -- Yes --> N_CargoFoundwithUSCCNKey_Node0_action N_CargoFoundwithUSCCNKey_Node0_action --> E_CargoFoundwithUSCCNKey S_CargoFoundwithUSCCNKey --> N_CargoFoundwithUSCCNKey_Node0 N_CargoFoundwithUSCCNKey_Node0 -- No --> E_CargoFoundwithUSCCNKey
File: GCX016.cbl
GIVEN:
Primary cargo search has been executed with car ID and US-CCN key
WHEN:
The system evaluates search results
THEN:
- The system should determine if cargo was found
- Validate the cargo record matches search criteria
β Consolidated Acceptance Criteria
- The system needs to perform fallback search → the system should clear the US-CCN key constraint to enable broader search criteria
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ClearUSCCNKeyConstraint(["Start Step"])
E_ClearUSCCNKeyConstraint(["End Step"])
N_ClearUSCCNKeyConstraint_Node0{"The system needs to perform
fallback search"}:::decision N_ClearUSCCNKeyConstraint_Node0_action["The system should clear the US-CCN
key constraint to enable broader
search criteria"]:::main N_ClearUSCCNKeyConstraint_Node0 -- Yes --> N_ClearUSCCNKeyConstraint_Node0_action N_ClearUSCCNKeyConstraint_Node0_action --> E_ClearUSCCNKeyConstraint S_ClearUSCCNKeyConstraint --> N_ClearUSCCNKeyConstraint_Node0 N_ClearUSCCNKeyConstraint_Node0 -- No --> E_ClearUSCCNKeyConstraint
fallback search"}:::decision N_ClearUSCCNKeyConstraint_Node0_action["The system should clear the US-CCN
key constraint to enable broader
search criteria"]:::main N_ClearUSCCNKeyConstraint_Node0 -- Yes --> N_ClearUSCCNKeyConstraint_Node0_action N_ClearUSCCNKeyConstraint_Node0_action --> E_ClearUSCCNKeyConstraint S_ClearUSCCNKeyConstraint --> N_ClearUSCCNKeyConstraint_Node0 N_ClearUSCCNKeyConstraint_Node0 -- No --> E_ClearUSCCNKeyConstraint
File: GCX016.cbl
GIVEN:
Primary cargo search with US-CCN key constraint returned no results
WHEN:
The system needs to perform fallback search
THEN:
The system should clear the US-CCN key constraint to enable broader search criteria
β Consolidated Acceptance Criteria
- The system performs secondary cargo search → the system should call GCCUSIO using car ID index without US-CCN key constraint
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CallGCCUSIOwithCarIDOnly(["Start Step"])
E_CallGCCUSIOwithCarIDOnly(["End Step"])
N_CallGCCUSIOwithCarIDOnly_Node0{"The system performs secondary cargo
search"}:::decision N_CallGCCUSIOwithCarIDOnly_Node0_action["The system should call GCCUSIO
using car ID index without US-CCN
key constraint"]:::main N_CallGCCUSIOwithCarIDOnly_Node0 -- Yes --> N_CallGCCUSIOwithCarIDOnly_Node0_action N_CallGCCUSIOwithCarIDOnly_Node0_action --> E_CallGCCUSIOwithCarIDOnly S_CallGCCUSIOwithCarIDOnly --> N_CallGCCUSIOwithCarIDOnly_Node0 N_CallGCCUSIOwithCarIDOnly_Node0 -- No --> E_CallGCCUSIOwithCarIDOnly
search"}:::decision N_CallGCCUSIOwithCarIDOnly_Node0_action["The system should call GCCUSIO
using car ID index without US-CCN
key constraint"]:::main N_CallGCCUSIOwithCarIDOnly_Node0 -- Yes --> N_CallGCCUSIOwithCarIDOnly_Node0_action N_CallGCCUSIOwithCarIDOnly_Node0_action --> E_CallGCCUSIOwithCarIDOnly S_CallGCCUSIOwithCarIDOnly --> N_CallGCCUSIOwithCarIDOnly_Node0 N_CallGCCUSIOwithCarIDOnly_Node0 -- No --> E_CallGCCUSIOwithCarIDOnly
File: GCX016.cbl
GIVEN:
US-CCN key constraint has been cleared and car ID is available
WHEN:
The system performs secondary cargo search
THEN:
The system should call GCCUSIO using car ID index without US-CCN key constraint
β Consolidated Acceptance Criteria
- If secondary search results → the system should determine if cargo was found without US-CCN key constraint
- Query results are evaluated for partial match → if cargo found without US-CCN requirement, proceed to validation, otherwise declare match failure
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CargoFoundwithoutUSCCN(["Start Step"])
E_CargoFoundwithoutUSCCN(["End Step"])
N_CargoFoundwithoutUSCCN_Node0{"The system evaluates secondary
search results"}:::decision N_CargoFoundwithoutUSCCN_Node0_action["The system should determine if
cargo was found without US-CCN key
constraint"]:::main N_CargoFoundwithoutUSCCN_Node0 -- Yes --> N_CargoFoundwithoutUSCCN_Node0_action N_CargoFoundwithoutUSCCN_Node0_action --> E_CargoFoundwithoutUSCCN S_CargoFoundwithoutUSCCN --> N_CargoFoundwithoutUSCCN_Node0 N_CargoFoundwithoutUSCCN_Node1{"Query results are evaluated for
partial match"}:::decision N_CargoFoundwithoutUSCCN_Node1_action["If cargo found without US-CCN
requirement, proceed to validation,
otherwise declare match failure"]:::main N_CargoFoundwithoutUSCCN_Node1 -- Yes --> N_CargoFoundwithoutUSCCN_Node1_action N_CargoFoundwithoutUSCCN_Node1_action --> E_CargoFoundwithoutUSCCN N_CargoFoundwithoutUSCCN_Node0 -- No --> N_CargoFoundwithoutUSCCN_Node1 N_CargoFoundwithoutUSCCN_Node1 -- No --> E_CargoFoundwithoutUSCCN
search results"}:::decision N_CargoFoundwithoutUSCCN_Node0_action["The system should determine if
cargo was found without US-CCN key
constraint"]:::main N_CargoFoundwithoutUSCCN_Node0 -- Yes --> N_CargoFoundwithoutUSCCN_Node0_action N_CargoFoundwithoutUSCCN_Node0_action --> E_CargoFoundwithoutUSCCN S_CargoFoundwithoutUSCCN --> N_CargoFoundwithoutUSCCN_Node0 N_CargoFoundwithoutUSCCN_Node1{"Query results are evaluated for
partial match"}:::decision N_CargoFoundwithoutUSCCN_Node1_action["If cargo found without US-CCN
requirement, proceed to validation,
otherwise declare match failure"]:::main N_CargoFoundwithoutUSCCN_Node1 -- Yes --> N_CargoFoundwithoutUSCCN_Node1_action N_CargoFoundwithoutUSCCN_Node1_action --> E_CargoFoundwithoutUSCCN N_CargoFoundwithoutUSCCN_Node0 -- No --> N_CargoFoundwithoutUSCCN_Node1 N_CargoFoundwithoutUSCCN_Node1 -- No --> E_CargoFoundwithoutUSCCN
File: GCX016.cbl
GIVEN:
Secondary cargo search has been executed with car ID only
WHEN:
The system evaluates secondary search results
THEN:
The system should determine if cargo was found without US-CCN key constraint
File: GCX016.cbl
GIVEN:
Partial match query has been executed with car ID only
WHEN:
Query results are evaluated for partial match
THEN:
If cargo found without US-CCN requirement, proceed to validation, otherwise declare match failure
β Consolidated Acceptance Criteria
- The system validates the found cargo record → the system should verify the cargo record matches business validation criteria
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ValidateCargoRecordMatch(["Start Step"])
E_ValidateCargoRecordMatch(["End Step"])
N_ValidateCargoRecordMatch_Node0{"The system validates the found
cargo record"}:::decision N_ValidateCargoRecordMatch_Node0_action["The system should verify the cargo
record matches business validation
criteria"]:::main N_ValidateCargoRecordMatch_Node0 -- Yes --> N_ValidateCargoRecordMatch_Node0_action N_ValidateCargoRecordMatch_Node0_action --> E_ValidateCargoRecordMatch S_ValidateCargoRecordMatch --> N_ValidateCargoRecordMatch_Node0 N_ValidateCargoRecordMatch_Node0 -- No --> E_ValidateCargoRecordMatch
cargo record"}:::decision N_ValidateCargoRecordMatch_Node0_action["The system should verify the cargo
record matches business validation
criteria"]:::main N_ValidateCargoRecordMatch_Node0 -- Yes --> N_ValidateCargoRecordMatch_Node0_action N_ValidateCargoRecordMatch_Node0_action --> E_ValidateCargoRecordMatch S_ValidateCargoRecordMatch --> N_ValidateCargoRecordMatch_Node0 N_ValidateCargoRecordMatch_Node0 -- No --> E_ValidateCargoRecordMatch
File: GCX016.cbl
GIVEN:
Cargo record has been found through either primary or secondary search
WHEN:
The system validates the found cargo record
THEN:
The system should verify the cargo record matches business validation criteria
β Consolidated Acceptance Criteria
- The system completes cargo search process → the system should return the found cargo record for further processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ReturnFoundCargoRecord(["Start Step"])
E_ReturnFoundCargoRecord(["End Step"])
N_ReturnFoundCargoRecord_Node0{"The system completes cargo search
process"}:::decision N_ReturnFoundCargoRecord_Node0_action["The system should return the found
cargo record for further processing"]:::main N_ReturnFoundCargoRecord_Node0 -- Yes --> N_ReturnFoundCargoRecord_Node0_action N_ReturnFoundCargoRecord_Node0_action --> E_ReturnFoundCargoRecord S_ReturnFoundCargoRecord --> N_ReturnFoundCargoRecord_Node0 N_ReturnFoundCargoRecord_Node0 -- No --> E_ReturnFoundCargoRecord
process"}:::decision N_ReturnFoundCargoRecord_Node0_action["The system should return the found
cargo record for further processing"]:::main N_ReturnFoundCargoRecord_Node0 -- Yes --> N_ReturnFoundCargoRecord_Node0_action N_ReturnFoundCargoRecord_Node0_action --> E_ReturnFoundCargoRecord S_ReturnFoundCargoRecord --> N_ReturnFoundCargoRecord_Node0 N_ReturnFoundCargoRecord_Node0 -- No --> E_ReturnFoundCargoRecord
File: GCX016.cbl
GIVEN:
A valid cargo record has been found and validated
WHEN:
The system completes cargo search process
THEN:
The system should return the found cargo record for further processing
β Consolidated Acceptance Criteria
- The system cannot locate any matching cargo records → the system should set cargo not found status to indicate search failure
- The system determines no cargo can be located for the given Car ID → set cargo not found status to indicate unsuccessful search completion
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetCargoNotFoundStatus(["Start Step"])
E_SetCargoNotFoundStatus(["End Step"])
N_SetCargoNotFoundStatus_Node0{"The system cannot locate any
matching cargo records"}:::decision N_SetCargoNotFoundStatus_Node0_action["The system should set cargo not
found status to indicate search
failure"]:::main N_SetCargoNotFoundStatus_Node0 -- Yes --> N_SetCargoNotFoundStatus_Node0_action N_SetCargoNotFoundStatus_Node0_action --> E_SetCargoNotFoundStatus S_SetCargoNotFoundStatus --> N_SetCargoNotFoundStatus_Node0 N_SetCargoNotFoundStatus_Node1{"The system determines no cargo can
be located for the given Car ID"}:::decision N_SetCargoNotFoundStatus_Node1_action["Set cargo not found status to
indicate unsuccessful search
completion"]:::main N_SetCargoNotFoundStatus_Node1 -- Yes --> N_SetCargoNotFoundStatus_Node1_action N_SetCargoNotFoundStatus_Node1_action --> E_SetCargoNotFoundStatus N_SetCargoNotFoundStatus_Node0 -- No --> N_SetCargoNotFoundStatus_Node1 N_SetCargoNotFoundStatus_Node1 -- No --> E_SetCargoNotFoundStatus
matching cargo records"}:::decision N_SetCargoNotFoundStatus_Node0_action["The system should set cargo not
found status to indicate search
failure"]:::main N_SetCargoNotFoundStatus_Node0 -- Yes --> N_SetCargoNotFoundStatus_Node0_action N_SetCargoNotFoundStatus_Node0_action --> E_SetCargoNotFoundStatus S_SetCargoNotFoundStatus --> N_SetCargoNotFoundStatus_Node0 N_SetCargoNotFoundStatus_Node1{"The system determines no cargo can
be located for the given Car ID"}:::decision N_SetCargoNotFoundStatus_Node1_action["Set cargo not found status to
indicate unsuccessful search
completion"]:::main N_SetCargoNotFoundStatus_Node1 -- Yes --> N_SetCargoNotFoundStatus_Node1_action N_SetCargoNotFoundStatus_Node1_action --> E_SetCargoNotFoundStatus N_SetCargoNotFoundStatus_Node0 -- No --> N_SetCargoNotFoundStatus_Node1 N_SetCargoNotFoundStatus_Node1 -- No --> E_SetCargoNotFoundStatus
File: GCX016.cbl
GIVEN:
Both primary search with US-CCN key and secondary search with car ID only have failed
WHEN:
The system cannot locate any matching cargo records
THEN:
The system should set cargo not found status to indicate search failure
File: GCX016.cbl
GIVEN:
Both primary Car ID search and broader search have failed to find valid cargo records
WHEN:
The system determines no cargo can be located for the given Car ID
THEN:
Set cargo not found status to indicate unsuccessful search completion
β Consolidated Acceptance Criteria
- The system finalizes search operations → the system should log search attempt results including search criteria and outcomes
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogSearchAttemptResults(["Start Step"])
E_LogSearchAttemptResults(["End Step"])
N_LogSearchAttemptResults_Node0{"The system finalizes search
operations"}:::decision N_LogSearchAttemptResults_Node0_action["The system should log search
attempt results including search
criteria and outcomes"]:::main N_LogSearchAttemptResults_Node0 -- Yes --> N_LogSearchAttemptResults_Node0_action N_LogSearchAttemptResults_Node0_action --> E_LogSearchAttemptResults S_LogSearchAttemptResults --> N_LogSearchAttemptResults_Node0 N_LogSearchAttemptResults_Node0 -- No --> E_LogSearchAttemptResults
operations"}:::decision N_LogSearchAttemptResults_Node0_action["The system should log search
attempt results including search
criteria and outcomes"]:::main N_LogSearchAttemptResults_Node0 -- Yes --> N_LogSearchAttemptResults_Node0_action N_LogSearchAttemptResults_Node0_action --> E_LogSearchAttemptResults S_LogSearchAttemptResults --> N_LogSearchAttemptResults_Node0 N_LogSearchAttemptResults_Node0 -- No --> E_LogSearchAttemptResults
File: GCX016.cbl
GIVEN:
Cargo search process has completed with either success or failure
WHEN:
The system finalizes search operations
THEN:
- The system should log search attempt results including search criteria
- Outcomes
β Consolidated Acceptance Criteria
- The system calls GCCUSIO with Car ID index parameters → the database query executes with index optimization for faster cargo retrieval
- System searches for cargo using the car ID index → gCCUSIO is called with car index parameters to retrieve matching cargo records
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CallGCCUSIOwithCarIndex(["Start Step"])
E_CallGCCUSIOwithCarIndex(["End Step"])
N_CallGCCUSIOwithCarIndex_Node0{"The system calls GCCUSIO with Car
ID index parameters"}:::decision N_CallGCCUSIOwithCarIndex_Node0_action["The database query executes with
index optimization for faster cargo
retrieval"]:::main N_CallGCCUSIOwithCarIndex_Node0 -- Yes --> N_CallGCCUSIOwithCarIndex_Node0_action N_CallGCCUSIOwithCarIndex_Node0_action --> E_CallGCCUSIOwithCarIndex S_CallGCCUSIOwithCarIndex --> N_CallGCCUSIOwithCarIndex_Node0 N_CallGCCUSIOwithCarIndex_Node1{"System searches for cargo using the
car ID index"}:::decision N_CallGCCUSIOwithCarIndex_Node1_action["GCCUSIO is called with car index
parameters to retrieve matching
cargo records"]:::main N_CallGCCUSIOwithCarIndex_Node1 -- Yes --> N_CallGCCUSIOwithCarIndex_Node1_action N_CallGCCUSIOwithCarIndex_Node1_action --> E_CallGCCUSIOwithCarIndex N_CallGCCUSIOwithCarIndex_Node0 -- No --> N_CallGCCUSIOwithCarIndex_Node1 N_CallGCCUSIOwithCarIndex_Node1 -- No --> E_CallGCCUSIOwithCarIndex
ID index parameters"}:::decision N_CallGCCUSIOwithCarIndex_Node0_action["The database query executes with
index optimization for faster cargo
retrieval"]:::main N_CallGCCUSIOwithCarIndex_Node0 -- Yes --> N_CallGCCUSIOwithCarIndex_Node0_action N_CallGCCUSIOwithCarIndex_Node0_action --> E_CallGCCUSIOwithCarIndex S_CallGCCUSIOwithCarIndex --> N_CallGCCUSIOwithCarIndex_Node0 N_CallGCCUSIOwithCarIndex_Node1{"System searches for cargo using the
car ID index"}:::decision N_CallGCCUSIOwithCarIndex_Node1_action["GCCUSIO is called with car index
parameters to retrieve matching
cargo records"]:::main N_CallGCCUSIOwithCarIndex_Node1 -- Yes --> N_CallGCCUSIOwithCarIndex_Node1_action N_CallGCCUSIOwithCarIndex_Node1_action --> E_CallGCCUSIOwithCarIndex N_CallGCCUSIOwithCarIndex_Node0 -- No --> N_CallGCCUSIOwithCarIndex_Node1 N_CallGCCUSIOwithCarIndex_Node1 -- No --> E_CallGCCUSIOwithCarIndex
File: GCX016.cbl
GIVEN:
A car ID is provided for cargo search AND database index is set to Car ID optimization
WHEN:
The system calls GCCUSIO with Car ID index parameters
THEN:
The database query executes with index optimization for faster cargo retrieval
File: GCX016.cbl
GIVEN:
Car ID index key has been constructed
WHEN:
System searches for cargo using the car ID index
THEN:
GCCUSIO is called with car index parameters to retrieve matching cargo records
β Consolidated Acceptance Criteria
- The system validates the returned cargo record → iF a valid cargo record is found THEN extract cargo information ELSE attempt broader search without US-CCN
- Validation results are evaluated → if cargo record is valid, return partially matched cargo, otherwise declare car ID match failed
- System evaluates validation results → if cargo record is valid, return found cargo record, otherwise try broader search without US-CCN
- The system checks cargo record validity → if the cargo record is valid, return it for processing; if invalid, attempt partial US-CCN key matching
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CargoRecordValid(["Start Step"])
E_CargoRecordValid(["End Step"])
N_CargoRecordValid_Node0{"The system validates the returned
cargo record"}:::decision N_CargoRecordValid_Node0_action["IF a valid cargo record is found
THEN extract cargo information ELSE
attempt broader search without
US-CCN"]:::main N_CargoRecordValid_Node0 -- Yes --> N_CargoRecordValid_Node0_action N_CargoRecordValid_Node0_action --> E_CargoRecordValid S_CargoRecordValid --> N_CargoRecordValid_Node0 N_CargoRecordValid_Node1{"Validation results are evaluated"}:::decision N_CargoRecordValid_Node1_action["If cargo record is valid, return
partially matched cargo, otherwise
declare car ID match failed"]:::main N_CargoRecordValid_Node1 -- Yes --> N_CargoRecordValid_Node1_action N_CargoRecordValid_Node1_action --> E_CargoRecordValid N_CargoRecordValid_Node0 -- No --> N_CargoRecordValid_Node1 N_CargoRecordValid_Node2{"System evaluates validation results"}:::decision N_CargoRecordValid_Node2_action["If cargo record is valid, return
found cargo record, otherwise try
broader search without US-CCN"]:::main N_CargoRecordValid_Node2 -- Yes --> N_CargoRecordValid_Node2_action N_CargoRecordValid_Node2_action --> E_CargoRecordValid N_CargoRecordValid_Node1 -- No --> N_CargoRecordValid_Node2 N_CargoRecordValid_Node3{"The system checks cargo record
validity"}:::decision N_CargoRecordValid_Node3_action["If the cargo record is valid,
return it for processing if invalid,
attempt partial US-CCN key matching"]:::main N_CargoRecordValid_Node3 -- Yes --> N_CargoRecordValid_Node3_action N_CargoRecordValid_Node3_action --> E_CargoRecordValid N_CargoRecordValid_Node2 -- No --> N_CargoRecordValid_Node3 N_CargoRecordValid_Node3 -- No --> E_CargoRecordValid
cargo record"}:::decision N_CargoRecordValid_Node0_action["IF a valid cargo record is found
THEN extract cargo information ELSE
attempt broader search without
US-CCN"]:::main N_CargoRecordValid_Node0 -- Yes --> N_CargoRecordValid_Node0_action N_CargoRecordValid_Node0_action --> E_CargoRecordValid S_CargoRecordValid --> N_CargoRecordValid_Node0 N_CargoRecordValid_Node1{"Validation results are evaluated"}:::decision N_CargoRecordValid_Node1_action["If cargo record is valid, return
partially matched cargo, otherwise
declare car ID match failed"]:::main N_CargoRecordValid_Node1 -- Yes --> N_CargoRecordValid_Node1_action N_CargoRecordValid_Node1_action --> E_CargoRecordValid N_CargoRecordValid_Node0 -- No --> N_CargoRecordValid_Node1 N_CargoRecordValid_Node2{"System evaluates validation results"}:::decision N_CargoRecordValid_Node2_action["If cargo record is valid, return
found cargo record, otherwise try
broader search without US-CCN"]:::main N_CargoRecordValid_Node2 -- Yes --> N_CargoRecordValid_Node2_action N_CargoRecordValid_Node2_action --> E_CargoRecordValid N_CargoRecordValid_Node1 -- No --> N_CargoRecordValid_Node2 N_CargoRecordValid_Node3{"The system checks cargo record
validity"}:::decision N_CargoRecordValid_Node3_action["If the cargo record is valid,
return it for processing if invalid,
attempt partial US-CCN key matching"]:::main N_CargoRecordValid_Node3 -- Yes --> N_CargoRecordValid_Node3_action N_CargoRecordValid_Node3_action --> E_CargoRecordValid N_CargoRecordValid_Node2 -- No --> N_CargoRecordValid_Node3 N_CargoRecordValid_Node3 -- No --> E_CargoRecordValid
File: GCX016.cbl
GIVEN:
A database call has completed successfully
WHEN:
The system validates the returned cargo record
THEN:
IF a valid cargo record is found THEN extract cargo information ELSE attempt broader search without US-CCN
File: GCX016.cbl
GIVEN:
Cargo record status validation has been completed
WHEN:
Validation results are evaluated
THEN:
If cargo record is valid, return partially matched cargo, otherwise declare car ID match failed
File: GCX016.cbl
GIVEN:
Cargo record status has been validated
WHEN:
System evaluates validation results
THEN:
If cargo record is valid, return found cargo record, otherwise try broader search without US-CCN
File: GCX016.cbl
GIVEN:
A cargo record has been found and its status validated
WHEN:
The system checks cargo record validity
THEN:
If the cargo record is valid, return it for processing; if invalid, attempt partial US-CCN key matching
β Consolidated Acceptance Criteria
- The system verifies the Car ID match between request and retrieved record → iF the Car ID matches exactly THEN set cargo found flag and return cargo record ELSE attempt broader search without US-CCN
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CarIDMatches(["Start Step"])
E_CarIDMatches(["End Step"])
N_CarIDMatches_Node0{"The system verifies the Car ID
match between request and retrieved
record"}:::decision N_CarIDMatches_Node0_action["IF the Car ID matches exactly THEN
set cargo found flag and return
cargo record ELSE attempt broader
search without US-CCN"]:::main N_CarIDMatches_Node0 -- Yes --> N_CarIDMatches_Node0_action N_CarIDMatches_Node0_action --> E_CarIDMatches S_CarIDMatches --> N_CarIDMatches_Node0 N_CarIDMatches_Node0 -- No --> E_CarIDMatches
match between request and retrieved
record"}:::decision N_CarIDMatches_Node0_action["IF the Car ID matches exactly THEN
set cargo found flag and return
cargo record ELSE attempt broader
search without US-CCN"]:::main N_CarIDMatches_Node0 -- Yes --> N_CarIDMatches_Node0_action N_CarIDMatches_Node0_action --> E_CarIDMatches S_CarIDMatches --> N_CarIDMatches_Node0 N_CarIDMatches_Node0 -- No --> E_CarIDMatches
File: GCX016.cbl
GIVEN:
Cargo information has been extracted from a valid record
WHEN:
- The system verifies the car id match between request
- Retrieved record
THEN:
- If the car id matches exactly then set cargo found flag
- Return cargo record else attempt broader search without us-ccn
β Consolidated Acceptance Criteria
- The system initiates a broader search without US-CCN constraints → the database query executes with relaxed search parameters to find potential cargo matches
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CallGCCUSIOwithRelaxedParameters(["Start Step"])
E_CallGCCUSIOwithRelaxedParameters(["End Step"])
N_CallGCCUSIOwithRelaxedParameters_Node0{"The system initiates a broader
search without US-CCN constraints"}:::decision N_CallGCCUSIOwithRelaxedParameters_Node0_action["The database query executes with
relaxed search parameters to find
potential cargo matches"]:::main N_CallGCCUSIOwithRelaxedParameters_Node0 -- Yes --> N_CallGCCUSIOwithRelaxedParameters_Node0_action N_CallGCCUSIOwithRelaxedParameters_Node0_action --> E_CallGCCUSIOwithRelaxedParameters S_CallGCCUSIOwithRelaxedParameters --> N_CallGCCUSIOwithRelaxedParameters_Node0 N_CallGCCUSIOwithRelaxedParameters_Node0 -- No --> E_CallGCCUSIOwithRelaxedParameters
search without US-CCN constraints"}:::decision N_CallGCCUSIOwithRelaxedParameters_Node0_action["The database query executes with
relaxed search parameters to find
potential cargo matches"]:::main N_CallGCCUSIOwithRelaxedParameters_Node0 -- Yes --> N_CallGCCUSIOwithRelaxedParameters_Node0_action N_CallGCCUSIOwithRelaxedParameters_Node0_action --> E_CallGCCUSIOwithRelaxedParameters S_CallGCCUSIOwithRelaxedParameters --> N_CallGCCUSIOwithRelaxedParameters_Node0 N_CallGCCUSIOwithRelaxedParameters_Node0 -- No --> E_CallGCCUSIOwithRelaxedParameters
File: GCX016.cbl
GIVEN:
Primary cargo search by Car ID has failed to find matching records
WHEN:
The system initiates a broader search without US-CCN constraints
THEN:
The database query executes with relaxed search parameters to find potential cargo matches
β Consolidated Acceptance Criteria
- If the broader search completion status → iF the broader search was successful THEN validate relaxed search results ELSE set cargo not found status
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_BroaderSearchSuccessful(["Start Step"])
E_BroaderSearchSuccessful(["End Step"])
N_BroaderSearchSuccessful_Node0{"The system evaluates the broader
search completion status"}:::decision N_BroaderSearchSuccessful_Node0_action["IF the broader search was
successful THEN validate relaxed
search results ELSE set cargo not
found status"]:::main N_BroaderSearchSuccessful_Node0 -- Yes --> N_BroaderSearchSuccessful_Node0_action N_BroaderSearchSuccessful_Node0_action --> E_BroaderSearchSuccessful S_BroaderSearchSuccessful --> N_BroaderSearchSuccessful_Node0 N_BroaderSearchSuccessful_Node0 -- No --> E_BroaderSearchSuccessful
search completion status"}:::decision N_BroaderSearchSuccessful_Node0_action["IF the broader search was
successful THEN validate relaxed
search results ELSE set cargo not
found status"]:::main N_BroaderSearchSuccessful_Node0 -- Yes --> N_BroaderSearchSuccessful_Node0_action N_BroaderSearchSuccessful_Node0_action --> E_BroaderSearchSuccessful S_BroaderSearchSuccessful --> N_BroaderSearchSuccessful_Node0 N_BroaderSearchSuccessful_Node0 -- No --> E_BroaderSearchSuccessful
File: GCX016.cbl
GIVEN:
A broader search with relaxed parameters has been executed
WHEN:
The system evaluates the broader search completion status
THEN:
IF the broader search was successful THEN validate relaxed search results ELSE set cargo not found status
β Consolidated Acceptance Criteria
- The system validates the quality and usability of relaxed search results → iF valid results are found THEN set cargo found flag and return cargo record ELSE set cargo not found status
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ValidResultsFound(["Start Step"])
E_ValidResultsFound(["End Step"])
N_ValidResultsFound_Node0{"The system validates the quality
and usability of relaxed search
results"}:::decision N_ValidResultsFound_Node0_action["IF valid results are found THEN set
cargo found flag and return cargo
record ELSE set cargo not found
status"]:::main N_ValidResultsFound_Node0 -- Yes --> N_ValidResultsFound_Node0_action N_ValidResultsFound_Node0_action --> E_ValidResultsFound S_ValidResultsFound --> N_ValidResultsFound_Node0 N_ValidResultsFound_Node0 -- No --> E_ValidResultsFound
and usability of relaxed search
results"}:::decision N_ValidResultsFound_Node0_action["IF valid results are found THEN set
cargo found flag and return cargo
record ELSE set cargo not found
status"]:::main N_ValidResultsFound_Node0 -- Yes --> N_ValidResultsFound_Node0_action N_ValidResultsFound_Node0_action --> E_ValidResultsFound S_ValidResultsFound --> N_ValidResultsFound_Node0 N_ValidResultsFound_Node0 -- No --> E_ValidResultsFound
File: GCX016.cbl
GIVEN:
A broader search has completed successfully
WHEN:
- The system validates the quality
- Usability of relaxed search results
THEN:
- If valid results are found then set cargo found flag
- Return cargo record else set cargo not found status
β Consolidated Acceptance Criteria
- The system creates a new cargo record → the cargo record is initialized with default values including cleared fields and basic structure
- The system needs to create a new cargo record → initialize a new cargo record structure and clear all data fields to default values
- The system needs to create a new cargo record → initialize a new cargo record structure and clear all fields to default values
- The system needs to create a new cargo record → initialize a new cargo record structure with default field values and prepare it for data population
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_InitializeNewCargoRecord(["Start Step"])
E_InitializeNewCargoRecord(["End Step"])
N_InitializeNewCargoRecord_Node0{"The system creates a new cargo
record"}:::decision N_InitializeNewCargoRecord_Node0_action["The cargo record is initialized
with default values including
cleared fields and basic structure"]:::main N_InitializeNewCargoRecord_Node0 -- Yes --> N_InitializeNewCargoRecord_Node0_action N_InitializeNewCargoRecord_Node0_action --> E_InitializeNewCargoRecord S_InitializeNewCargoRecord --> N_InitializeNewCargoRecord_Node0 N_InitializeNewCargoRecord_Node1{"The system needs to create a new
cargo record"}:::decision N_InitializeNewCargoRecord_Node1_action["Initialize a new cargo record
structure and clear all data fields
to default values"]:::main N_InitializeNewCargoRecord_Node1 -- Yes --> N_InitializeNewCargoRecord_Node1_action N_InitializeNewCargoRecord_Node1_action --> E_InitializeNewCargoRecord N_InitializeNewCargoRecord_Node0 -- No --> N_InitializeNewCargoRecord_Node1 N_InitializeNewCargoRecord_Node2{"The system needs to create a new
cargo record"}:::decision N_InitializeNewCargoRecord_Node2_action["Initialize a new cargo record
structure and clear all fields to
default values"]:::main N_InitializeNewCargoRecord_Node2 -- Yes --> N_InitializeNewCargoRecord_Node2_action N_InitializeNewCargoRecord_Node2_action --> E_InitializeNewCargoRecord N_InitializeNewCargoRecord_Node1 -- No --> N_InitializeNewCargoRecord_Node2 N_InitializeNewCargoRecord_Node3{"The system needs to create a new
cargo record"}:::decision N_InitializeNewCargoRecord_Node3_action["Initialize a new cargo record
structure with default field values
and prepare it for data population"]:::main N_InitializeNewCargoRecord_Node3 -- Yes --> N_InitializeNewCargoRecord_Node3_action N_InitializeNewCargoRecord_Node3_action --> E_InitializeNewCargoRecord N_InitializeNewCargoRecord_Node2 -- No --> N_InitializeNewCargoRecord_Node3 N_InitializeNewCargoRecord_Node3 -- No --> E_InitializeNewCargoRecord
record"}:::decision N_InitializeNewCargoRecord_Node0_action["The cargo record is initialized
with default values including
cleared fields and basic structure"]:::main N_InitializeNewCargoRecord_Node0 -- Yes --> N_InitializeNewCargoRecord_Node0_action N_InitializeNewCargoRecord_Node0_action --> E_InitializeNewCargoRecord S_InitializeNewCargoRecord --> N_InitializeNewCargoRecord_Node0 N_InitializeNewCargoRecord_Node1{"The system needs to create a new
cargo record"}:::decision N_InitializeNewCargoRecord_Node1_action["Initialize a new cargo record
structure and clear all data fields
to default values"]:::main N_InitializeNewCargoRecord_Node1 -- Yes --> N_InitializeNewCargoRecord_Node1_action N_InitializeNewCargoRecord_Node1_action --> E_InitializeNewCargoRecord N_InitializeNewCargoRecord_Node0 -- No --> N_InitializeNewCargoRecord_Node1 N_InitializeNewCargoRecord_Node2{"The system needs to create a new
cargo record"}:::decision N_InitializeNewCargoRecord_Node2_action["Initialize a new cargo record
structure and clear all fields to
default values"]:::main N_InitializeNewCargoRecord_Node2 -- Yes --> N_InitializeNewCargoRecord_Node2_action N_InitializeNewCargoRecord_Node2_action --> E_InitializeNewCargoRecord N_InitializeNewCargoRecord_Node1 -- No --> N_InitializeNewCargoRecord_Node2 N_InitializeNewCargoRecord_Node3{"The system needs to create a new
cargo record"}:::decision N_InitializeNewCargoRecord_Node3_action["Initialize a new cargo record
structure with default field values
and prepare it for data population"]:::main N_InitializeNewCargoRecord_Node3 -- Yes --> N_InitializeNewCargoRecord_Node3_action N_InitializeNewCargoRecord_Node3_action --> E_InitializeNewCargoRecord N_InitializeNewCargoRecord_Node2 -- No --> N_InitializeNewCargoRecord_Node3 N_InitializeNewCargoRecord_Node3 -- No --> E_InitializeNewCargoRecord
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
A foreign bill does not exist in the system
WHEN:
The system creates a new cargo record
THEN:
- The cargo record is initialized with default values including cleared fields
- Basic structure
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
A foreign bill is not found in the existing cargo system
WHEN:
The system needs to create a new cargo record
THEN:
- Initialize a new cargo record structure
- Clear all data fields to default values
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
A foreign bill does not exist in the system
WHEN:
The system needs to create a new cargo record
THEN:
- Initialize a new cargo record structure
- Clear all fields to default values
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
A foreign bill is not found in the system
WHEN:
The system needs to create a new cargo record
THEN:
- Initialize a new cargo record structure with default field values
- Prepare it for data population
β Consolidated Acceptance Criteria
- The cargo type is CPRS → set cargo status to ERROR with description ERROR, otherwise set status to SENT with description SENT
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetDefaultCPRSStatusCode(["Start Step"])
E_SetDefaultCPRSStatusCode(["End Step"])
N_SetDefaultCPRSStatusCode_Node0{"The cargo type is CPRS"}:::decision
N_SetDefaultCPRSStatusCode_Node0_action["Set cargo status to ERROR with
description ERROR, otherwise set
status to SENT with description SENT"]:::main N_SetDefaultCPRSStatusCode_Node0 -- Yes --> N_SetDefaultCPRSStatusCode_Node0_action N_SetDefaultCPRSStatusCode_Node0_action --> E_SetDefaultCPRSStatusCode S_SetDefaultCPRSStatusCode --> N_SetDefaultCPRSStatusCode_Node0 N_SetDefaultCPRSStatusCode_Node0 -- No --> E_SetDefaultCPRSStatusCode
description ERROR, otherwise set
status to SENT with description SENT"]:::main N_SetDefaultCPRSStatusCode_Node0 -- Yes --> N_SetDefaultCPRSStatusCode_Node0_action N_SetDefaultCPRSStatusCode_Node0_action --> E_SetDefaultCPRSStatusCode S_SetDefaultCPRSStatusCode --> N_SetDefaultCPRSStatusCode_Node0 N_SetDefaultCPRSStatusCode_Node0 -- No --> E_SetDefaultCPRSStatusCode
File: GCX016.cbl
GIVEN:
A new cargo record is being created
WHEN:
The cargo type is CPRS
THEN:
Set cargo status to ERROR with description ERROR, otherwise set status to SENT with description SENT
β Consolidated Acceptance Criteria
- The current acknowledgment status is blank or equals ACK-R → set default acknowledgment status to ACK or ACK-R as appropriate
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetDefaultUSCSStatusCode(["Start Step"])
E_SetDefaultUSCSStatusCode(["End Step"])
N_SetDefaultUSCSStatusCode_Node0{"The current acknowledgment status
is blank or equals ACK-R"}:::decision N_SetDefaultUSCSStatusCode_Node0_action["Set default acknowledgment status
to ACK or ACK-R as appropriate"]:::main N_SetDefaultUSCSStatusCode_Node0 -- Yes --> N_SetDefaultUSCSStatusCode_Node0_action N_SetDefaultUSCSStatusCode_Node0_action --> E_SetDefaultUSCSStatusCode S_SetDefaultUSCSStatusCode --> N_SetDefaultUSCSStatusCode_Node0 N_SetDefaultUSCSStatusCode_Node0 -- No --> E_SetDefaultUSCSStatusCode
is blank or equals ACK-R"}:::decision N_SetDefaultUSCSStatusCode_Node0_action["Set default acknowledgment status
to ACK or ACK-R as appropriate"]:::main N_SetDefaultUSCSStatusCode_Node0 -- Yes --> N_SetDefaultUSCSStatusCode_Node0_action N_SetDefaultUSCSStatusCode_Node0_action --> E_SetDefaultUSCSStatusCode S_SetDefaultUSCSStatusCode --> N_SetDefaultUSCSStatusCode_Node0 N_SetDefaultUSCSStatusCode_Node0 -- No --> E_SetDefaultUSCSStatusCode
File: GCX016.cbl
GIVEN:
A new cargo record with status information
WHEN:
The current acknowledgment status is blank or equals ACK-R
THEN:
Set default acknowledgment status to ACK or ACK-R as appropriate
β Consolidated Acceptance Criteria
- Broker information needs to be initialized → clear and initialize all broker-related fields to default values
- Broker information fields need initialization → clear broker ID, broker name, and notification preference fields to default values
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_InitializeBrokerInformationFields(["Start Step"])
E_InitializeBrokerInformationFields(["End Step"])
N_InitializeBrokerInformationFields_Node0{"Broker information needs to be
initialized"}:::decision N_InitializeBrokerInformationFields_Node0_action["Clear and initialize all
broker-related fields to default
values"]:::main N_InitializeBrokerInformationFields_Node0 -- Yes --> N_InitializeBrokerInformationFields_Node0_action N_InitializeBrokerInformationFields_Node0_action --> E_InitializeBrokerInformationFields S_InitializeBrokerInformationFields --> N_InitializeBrokerInformationFields_Node0 N_InitializeBrokerInformationFields_Node1{"Broker information fields need
initialization"}:::decision N_InitializeBrokerInformationFields_Node1_action["Clear broker ID, broker name, and
notification preference fields to
default values"]:::main N_InitializeBrokerInformationFields_Node1 -- Yes --> N_InitializeBrokerInformationFields_Node1_action N_InitializeBrokerInformationFields_Node1_action --> E_InitializeBrokerInformationFields N_InitializeBrokerInformationFields_Node0 -- No --> N_InitializeBrokerInformationFields_Node1 N_InitializeBrokerInformationFields_Node1 -- No --> E_InitializeBrokerInformationFields
initialized"}:::decision N_InitializeBrokerInformationFields_Node0_action["Clear and initialize all
broker-related fields to default
values"]:::main N_InitializeBrokerInformationFields_Node0 -- Yes --> N_InitializeBrokerInformationFields_Node0_action N_InitializeBrokerInformationFields_Node0_action --> E_InitializeBrokerInformationFields S_InitializeBrokerInformationFields --> N_InitializeBrokerInformationFields_Node0 N_InitializeBrokerInformationFields_Node1{"Broker information fields need
initialization"}:::decision N_InitializeBrokerInformationFields_Node1_action["Clear broker ID, broker name, and
notification preference fields to
default values"]:::main N_InitializeBrokerInformationFields_Node1 -- Yes --> N_InitializeBrokerInformationFields_Node1_action N_InitializeBrokerInformationFields_Node1_action --> E_InitializeBrokerInformationFields N_InitializeBrokerInformationFields_Node0 -- No --> N_InitializeBrokerInformationFields_Node1 N_InitializeBrokerInformationFields_Node1 -- No --> E_InitializeBrokerInformationFields
File: GCX016.cbl
GIVEN:
A new cargo record is being created
WHEN:
Broker information needs to be initialized
THEN:
- Clear
- Initialize all broker-related fields to default values
File: GCX016.cbl
GIVEN:
A new cargo record is being created
WHEN:
Broker information fields need initialization
THEN:
Clear broker ID, broker name, and notification preference fields to default values
β Consolidated Acceptance Criteria
- Building manifest information for new cargo → extract and assign manifest details from M10 segment to cargo record
- The system processes the entry number → the entry number is placed in the entry number field and not in the in-bond control number field
- The system processes the entry number → the entry number is placed in the in-bond control number field and not in the entry number field
- M10 manifest data needs to be populated → build the manifest structure with vessel name, voyage number, and transportation details from the X4 segment
- The entry number starts with 'V' → place the entry number in the entry number field, otherwise place it in the in-bond control number field
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_BuildM10ManifestInformation(["Start Step"])
E_BuildM10ManifestInformation(["End Step"])
N_BuildM10ManifestInformation_Node0{"Building manifest information for
new cargo"}:::decision N_BuildM10ManifestInformation_Node0_action["Extract and assign manifest details
from M10 segment to cargo record"]:::main N_BuildM10ManifestInformation_Node0 -- Yes --> N_BuildM10ManifestInformation_Node0_action N_BuildM10ManifestInformation_Node0_action --> E_BuildM10ManifestInformation S_BuildM10ManifestInformation --> N_BuildM10ManifestInformation_Node0 N_BuildM10ManifestInformation_Node1{"The system processes the entry
number"}:::decision N_BuildM10ManifestInformation_Node1_action["The entry number is placed in the
entry number field and not in the
in-bond control number field"]:::main N_BuildM10ManifestInformation_Node1 -- Yes --> N_BuildM10ManifestInformation_Node1_action N_BuildM10ManifestInformation_Node1_action --> E_BuildM10ManifestInformation N_BuildM10ManifestInformation_Node0 -- No --> N_BuildM10ManifestInformation_Node1 N_BuildM10ManifestInformation_Node2{"The system processes the entry
number"}:::decision N_BuildM10ManifestInformation_Node2_action["The entry number is placed in the
in-bond control number field and not
in the entry number field"]:::main N_BuildM10ManifestInformation_Node2 -- Yes --> N_BuildM10ManifestInformation_Node2_action N_BuildM10ManifestInformation_Node2_action --> E_BuildM10ManifestInformation N_BuildM10ManifestInformation_Node1 -- No --> N_BuildM10ManifestInformation_Node2 N_BuildM10ManifestInformation_Node3{"M10 manifest data needs to be
populated"}:::decision N_BuildM10ManifestInformation_Node3_action["Build the manifest structure with
vessel name, voyage number, and
transportation details from the X4
segment"]:::main N_BuildM10ManifestInformation_Node3 -- Yes --> N_BuildM10ManifestInformation_Node3_action N_BuildM10ManifestInformation_Node3_action --> E_BuildM10ManifestInformation N_BuildM10ManifestInformation_Node2 -- No --> N_BuildM10ManifestInformation_Node3 N_BuildM10ManifestInformation_Node4{"The entry number starts with V"}:::decision N_BuildM10ManifestInformation_Node4_action["Place the entry number in the entry
number field, otherwise place it in
the in-bond control number field"]:::main N_BuildM10ManifestInformation_Node4 -- Yes --> N_BuildM10ManifestInformation_Node4_action N_BuildM10ManifestInformation_Node4_action --> E_BuildM10ManifestInformation N_BuildM10ManifestInformation_Node3 -- No --> N_BuildM10ManifestInformation_Node4 N_BuildM10ManifestInformation_Node4 -- No --> E_BuildM10ManifestInformation
new cargo"}:::decision N_BuildM10ManifestInformation_Node0_action["Extract and assign manifest details
from M10 segment to cargo record"]:::main N_BuildM10ManifestInformation_Node0 -- Yes --> N_BuildM10ManifestInformation_Node0_action N_BuildM10ManifestInformation_Node0_action --> E_BuildM10ManifestInformation S_BuildM10ManifestInformation --> N_BuildM10ManifestInformation_Node0 N_BuildM10ManifestInformation_Node1{"The system processes the entry
number"}:::decision N_BuildM10ManifestInformation_Node1_action["The entry number is placed in the
entry number field and not in the
in-bond control number field"]:::main N_BuildM10ManifestInformation_Node1 -- Yes --> N_BuildM10ManifestInformation_Node1_action N_BuildM10ManifestInformation_Node1_action --> E_BuildM10ManifestInformation N_BuildM10ManifestInformation_Node0 -- No --> N_BuildM10ManifestInformation_Node1 N_BuildM10ManifestInformation_Node2{"The system processes the entry
number"}:::decision N_BuildM10ManifestInformation_Node2_action["The entry number is placed in the
in-bond control number field and not
in the entry number field"]:::main N_BuildM10ManifestInformation_Node2 -- Yes --> N_BuildM10ManifestInformation_Node2_action N_BuildM10ManifestInformation_Node2_action --> E_BuildM10ManifestInformation N_BuildM10ManifestInformation_Node1 -- No --> N_BuildM10ManifestInformation_Node2 N_BuildM10ManifestInformation_Node3{"M10 manifest data needs to be
populated"}:::decision N_BuildM10ManifestInformation_Node3_action["Build the manifest structure with
vessel name, voyage number, and
transportation details from the X4
segment"]:::main N_BuildM10ManifestInformation_Node3 -- Yes --> N_BuildM10ManifestInformation_Node3_action N_BuildM10ManifestInformation_Node3_action --> E_BuildM10ManifestInformation N_BuildM10ManifestInformation_Node2 -- No --> N_BuildM10ManifestInformation_Node3 N_BuildM10ManifestInformation_Node4{"The entry number starts with V"}:::decision N_BuildM10ManifestInformation_Node4_action["Place the entry number in the entry
number field, otherwise place it in
the in-bond control number field"]:::main N_BuildM10ManifestInformation_Node4 -- Yes --> N_BuildM10ManifestInformation_Node4_action N_BuildM10ManifestInformation_Node4_action --> E_BuildM10ManifestInformation N_BuildM10ManifestInformation_Node3 -- No --> N_BuildM10ManifestInformation_Node4 N_BuildM10ManifestInformation_Node4 -- No --> E_BuildM10ManifestInformation
File: GCX016.cbl
GIVEN:
M10 segment data is available
WHEN:
Building manifest information for new cargo
THEN:
- Extract
- Assign manifest details from m10 segment to cargo record
File: GCX016.cbl
GIVEN:
An entry number starts with the letter 'V'
WHEN:
The system processes the entry number
THEN:
- The entry number is placed in the entry number field
- Not in the in-bond control number field
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
An entry number does not start with the letter 'V'
WHEN:
The system processes the entry number
THEN:
- The entry number is placed in the in-bond control number field
- Not in the entry number field
File: GCX016.cbl
GIVEN:
A new cargo record requires manifest information
WHEN:
M10 manifest data needs to be populated
THEN:
Build the manifest structure with vessel name, voyage number, and transportation details from the X4 segment
File: GCX016.cbl
GIVEN:
A cargo record with an entry number
WHEN:
The entry number starts with 'V'
THEN:
Place the entry number in the entry number field, otherwise place it in the in-bond control number field
β Consolidated Acceptance Criteria
- The entry type is 61, 62, 63, or 69 → set master in-bond flag M1109 and process as master in-bond entry
- Processing entry type for new cargo → set master in-bond flag and configure specific transport type and bond processing requirements for the entry type
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ProcessMasterInBondEntryTypes61626369(["Start Step"])
E_ProcessMasterInBondEntryTypes61626369(["End Step"])
N_ProcessMasterInBondEntryTypes61626369_Node0{"The entry type is 61, 62, 63, or 69"}:::decision
N_ProcessMasterInBondEntryTypes61626369_Node0_action["Set master in-bond flag M1109 and
process as master in-bond entry"]:::main N_ProcessMasterInBondEntryTypes61626369_Node0 -- Yes --> N_ProcessMasterInBondEntryTypes61626369_Node0_action N_ProcessMasterInBondEntryTypes61626369_Node0_action --> E_ProcessMasterInBondEntryTypes61626369 S_ProcessMasterInBondEntryTypes61626369 --> N_ProcessMasterInBondEntryTypes61626369_Node0 N_ProcessMasterInBondEntryTypes61626369_Node1{"Processing entry type for new cargo"}:::decision N_ProcessMasterInBondEntryTypes61626369_Node1_action["Set master in-bond flag and
configure specific transport type
and bond processing requirements for
the entry type"]:::main N_ProcessMasterInBondEntryTypes61626369_Node1 -- Yes --> N_ProcessMasterInBondEntryTypes61626369_Node1_action N_ProcessMasterInBondEntryTypes61626369_Node1_action --> E_ProcessMasterInBondEntryTypes61626369 N_ProcessMasterInBondEntryTypes61626369_Node0 -- No --> N_ProcessMasterInBondEntryTypes61626369_Node1 N_ProcessMasterInBondEntryTypes61626369_Node1 -- No --> E_ProcessMasterInBondEntryTypes61626369
process as master in-bond entry"]:::main N_ProcessMasterInBondEntryTypes61626369_Node0 -- Yes --> N_ProcessMasterInBondEntryTypes61626369_Node0_action N_ProcessMasterInBondEntryTypes61626369_Node0_action --> E_ProcessMasterInBondEntryTypes61626369 S_ProcessMasterInBondEntryTypes61626369 --> N_ProcessMasterInBondEntryTypes61626369_Node0 N_ProcessMasterInBondEntryTypes61626369_Node1{"Processing entry type for new cargo"}:::decision N_ProcessMasterInBondEntryTypes61626369_Node1_action["Set master in-bond flag and
configure specific transport type
and bond processing requirements for
the entry type"]:::main N_ProcessMasterInBondEntryTypes61626369_Node1 -- Yes --> N_ProcessMasterInBondEntryTypes61626369_Node1_action N_ProcessMasterInBondEntryTypes61626369_Node1_action --> E_ProcessMasterInBondEntryTypes61626369 N_ProcessMasterInBondEntryTypes61626369_Node0 -- No --> N_ProcessMasterInBondEntryTypes61626369_Node1 N_ProcessMasterInBondEntryTypes61626369_Node1 -- No --> E_ProcessMasterInBondEntryTypes61626369
File: GCX016.cbl
GIVEN:
A new cargo record with disposition code 1J, 69, or 55
WHEN:
The entry type is 61, 62, 63, or 69
THEN:
- Set master in-bond flag m1109
- Process as master in-bond entry
File: GCX016.cbl
GIVEN:
Entry type code is 61, 62, 63, or 69
WHEN:
Processing entry type for new cargo
THEN:
- Set master in-bond flag
- Configure specific transport type
- Bond processing requirements for the entry type
β Consolidated Acceptance Criteria
- Entry type is 61, 62, 63, 69, or 00 → map to immediate transport, transport export, immediate export, US-Canada-US movement, or border processing respectively
- Transport type mapping is performed → entry type 61 maps to immediate transport, 62 maps to transport export, 63 maps to immediate export, and 69 maps to US-Canada-US movement
- The entry type requires transport type determination → map entry type 61 to immediate transport, 62 to transport export, 63 to immediate export, and 69 to US-Canada-US movement
- Mapping entry type to transport classification → set corresponding transport type: 61 maps to immediate transport, 62 to transport export, 63 to immediate export, 69 to US-Canada-US movement
- The entry type code is '61' → set transport type to immediate transport and configure appropriate bond processing parameters
- The entry type code is '62' → set transport type to transport export and configure appropriate bond processing parameters
- The entry type code is '63' → set transport type to immediate export and configure appropriate bond processing parameters
- The entry type code is '69' → set transport type to US-Canada-US movement and configure appropriate bond processing parameters
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MapEntryTypetoTransportType(["Start Step"])
E_MapEntryTypetoTransportType(["End Step"])
N_MapEntryTypetoTransportType_Node0{"Entry type is 61, 62, 63, 69, or 00"}:::decision
N_MapEntryTypetoTransportType_Node0_action["Map to immediate transport,
transport export, immediate export,
US-Canada-US movement, or border
processing respectively"]:::main N_MapEntryTypetoTransportType_Node0 -- Yes --> N_MapEntryTypetoTransportType_Node0_action N_MapEntryTypetoTransportType_Node0_action --> E_MapEntryTypetoTransportType S_MapEntryTypetoTransportType --> N_MapEntryTypetoTransportType_Node0 N_MapEntryTypetoTransportType_Node1{"Transport type mapping is performed"}:::decision N_MapEntryTypetoTransportType_Node1_action["Entry type 61 maps to immediate
transport, 62 maps to transport
export, 63 maps to immediate export,
and 69 maps to US-Canada-US movement"]:::main N_MapEntryTypetoTransportType_Node1 -- Yes --> N_MapEntryTypetoTransportType_Node1_action N_MapEntryTypetoTransportType_Node1_action --> E_MapEntryTypetoTransportType N_MapEntryTypetoTransportType_Node0 -- No --> N_MapEntryTypetoTransportType_Node1 N_MapEntryTypetoTransportType_Node2{"The entry type requires transport
type determination"}:::decision N_MapEntryTypetoTransportType_Node2_action["Map entry type 61 to immediate
transport, 62 to transport export,
63 to immediate export, and 69 to
US-Canada-US movement"]:::main N_MapEntryTypetoTransportType_Node2 -- Yes --> N_MapEntryTypetoTransportType_Node2_action N_MapEntryTypetoTransportType_Node2_action --> E_MapEntryTypetoTransportType N_MapEntryTypetoTransportType_Node1 -- No --> N_MapEntryTypetoTransportType_Node2 N_MapEntryTypetoTransportType_Node3{"Mapping entry type to transport
classification"}:::decision N_MapEntryTypetoTransportType_Node3_action["Set corresponding transport type:
61 maps to immediate transport, 62
to transport export, 63 to immediate
export, 69 to US-Canada-US movement"]:::main N_MapEntryTypetoTransportType_Node3 -- Yes --> N_MapEntryTypetoTransportType_Node3_action N_MapEntryTypetoTransportType_Node3_action --> E_MapEntryTypetoTransportType N_MapEntryTypetoTransportType_Node2 -- No --> N_MapEntryTypetoTransportType_Node3 N_MapEntryTypetoTransportType_Node4{"The entry type code is 61"}:::decision N_MapEntryTypetoTransportType_Node4_action["Set transport type to immediate
transport and configure appropriate
bond processing parameters"]:::main N_MapEntryTypetoTransportType_Node4 -- Yes --> N_MapEntryTypetoTransportType_Node4_action N_MapEntryTypetoTransportType_Node4_action --> E_MapEntryTypetoTransportType N_MapEntryTypetoTransportType_Node3 -- No --> N_MapEntryTypetoTransportType_Node4 N_MapEntryTypetoTransportType_Node5{"The entry type code is 62"}:::decision N_MapEntryTypetoTransportType_Node5_action["Set transport type to transport
export and configure appropriate
bond processing parameters"]:::main N_MapEntryTypetoTransportType_Node5 -- Yes --> N_MapEntryTypetoTransportType_Node5_action N_MapEntryTypetoTransportType_Node5_action --> E_MapEntryTypetoTransportType N_MapEntryTypetoTransportType_Node4 -- No --> N_MapEntryTypetoTransportType_Node5 N_MapEntryTypetoTransportType_Node6{"The entry type code is 63"}:::decision N_MapEntryTypetoTransportType_Node6_action["Set transport type to immediate
export and configure appropriate
bond processing parameters"]:::main N_MapEntryTypetoTransportType_Node6 -- Yes --> N_MapEntryTypetoTransportType_Node6_action N_MapEntryTypetoTransportType_Node6_action --> E_MapEntryTypetoTransportType N_MapEntryTypetoTransportType_Node5 -- No --> N_MapEntryTypetoTransportType_Node6 N_MapEntryTypetoTransportType_Node7{"The entry type code is 69"}:::decision N_MapEntryTypetoTransportType_Node7_action["Set transport type to US-Canada-US
movement and configure appropriate
bond processing parameters"]:::main N_MapEntryTypetoTransportType_Node7 -- Yes --> N_MapEntryTypetoTransportType_Node7_action N_MapEntryTypetoTransportType_Node7_action --> E_MapEntryTypetoTransportType N_MapEntryTypetoTransportType_Node6 -- No --> N_MapEntryTypetoTransportType_Node7 N_MapEntryTypetoTransportType_Node7 -- No --> E_MapEntryTypetoTransportType
transport export, immediate export,
US-Canada-US movement, or border
processing respectively"]:::main N_MapEntryTypetoTransportType_Node0 -- Yes --> N_MapEntryTypetoTransportType_Node0_action N_MapEntryTypetoTransportType_Node0_action --> E_MapEntryTypetoTransportType S_MapEntryTypetoTransportType --> N_MapEntryTypetoTransportType_Node0 N_MapEntryTypetoTransportType_Node1{"Transport type mapping is performed"}:::decision N_MapEntryTypetoTransportType_Node1_action["Entry type 61 maps to immediate
transport, 62 maps to transport
export, 63 maps to immediate export,
and 69 maps to US-Canada-US movement"]:::main N_MapEntryTypetoTransportType_Node1 -- Yes --> N_MapEntryTypetoTransportType_Node1_action N_MapEntryTypetoTransportType_Node1_action --> E_MapEntryTypetoTransportType N_MapEntryTypetoTransportType_Node0 -- No --> N_MapEntryTypetoTransportType_Node1 N_MapEntryTypetoTransportType_Node2{"The entry type requires transport
type determination"}:::decision N_MapEntryTypetoTransportType_Node2_action["Map entry type 61 to immediate
transport, 62 to transport export,
63 to immediate export, and 69 to
US-Canada-US movement"]:::main N_MapEntryTypetoTransportType_Node2 -- Yes --> N_MapEntryTypetoTransportType_Node2_action N_MapEntryTypetoTransportType_Node2_action --> E_MapEntryTypetoTransportType N_MapEntryTypetoTransportType_Node1 -- No --> N_MapEntryTypetoTransportType_Node2 N_MapEntryTypetoTransportType_Node3{"Mapping entry type to transport
classification"}:::decision N_MapEntryTypetoTransportType_Node3_action["Set corresponding transport type:
61 maps to immediate transport, 62
to transport export, 63 to immediate
export, 69 to US-Canada-US movement"]:::main N_MapEntryTypetoTransportType_Node3 -- Yes --> N_MapEntryTypetoTransportType_Node3_action N_MapEntryTypetoTransportType_Node3_action --> E_MapEntryTypetoTransportType N_MapEntryTypetoTransportType_Node2 -- No --> N_MapEntryTypetoTransportType_Node3 N_MapEntryTypetoTransportType_Node4{"The entry type code is 61"}:::decision N_MapEntryTypetoTransportType_Node4_action["Set transport type to immediate
transport and configure appropriate
bond processing parameters"]:::main N_MapEntryTypetoTransportType_Node4 -- Yes --> N_MapEntryTypetoTransportType_Node4_action N_MapEntryTypetoTransportType_Node4_action --> E_MapEntryTypetoTransportType N_MapEntryTypetoTransportType_Node3 -- No --> N_MapEntryTypetoTransportType_Node4 N_MapEntryTypetoTransportType_Node5{"The entry type code is 62"}:::decision N_MapEntryTypetoTransportType_Node5_action["Set transport type to transport
export and configure appropriate
bond processing parameters"]:::main N_MapEntryTypetoTransportType_Node5 -- Yes --> N_MapEntryTypetoTransportType_Node5_action N_MapEntryTypetoTransportType_Node5_action --> E_MapEntryTypetoTransportType N_MapEntryTypetoTransportType_Node4 -- No --> N_MapEntryTypetoTransportType_Node5 N_MapEntryTypetoTransportType_Node6{"The entry type code is 63"}:::decision N_MapEntryTypetoTransportType_Node6_action["Set transport type to immediate
export and configure appropriate
bond processing parameters"]:::main N_MapEntryTypetoTransportType_Node6 -- Yes --> N_MapEntryTypetoTransportType_Node6_action N_MapEntryTypetoTransportType_Node6_action --> E_MapEntryTypetoTransportType N_MapEntryTypetoTransportType_Node5 -- No --> N_MapEntryTypetoTransportType_Node6 N_MapEntryTypetoTransportType_Node7{"The entry type code is 69"}:::decision N_MapEntryTypetoTransportType_Node7_action["Set transport type to US-Canada-US
movement and configure appropriate
bond processing parameters"]:::main N_MapEntryTypetoTransportType_Node7 -- Yes --> N_MapEntryTypetoTransportType_Node7_action N_MapEntryTypetoTransportType_Node7_action --> E_MapEntryTypetoTransportType N_MapEntryTypetoTransportType_Node6 -- No --> N_MapEntryTypetoTransportType_Node7 N_MapEntryTypetoTransportType_Node7 -- No --> E_MapEntryTypetoTransportType
File: GCX016.cbl
GIVEN:
An entry type code for master in-bond processing
WHEN:
Entry type is 61, 62, 63, 69, or 00
THEN:
Map to immediate transport, transport export, immediate export, US-Canada-US movement, or border processing respectively
File: GCX016.cbl
GIVEN:
A valid entry type code (61, 62, 63, or 69) has been identified
WHEN:
Transport type mapping is performed
THEN:
Entry type 61 maps to immediate transport, 62 maps to transport export, 63 maps to immediate export, and 69 maps to US-Canada-US movement
File: GCX016.cbl
GIVEN:
A validated entry type code for master in-bond processing
WHEN:
The entry type requires transport type determination
THEN:
Map entry type 61 to immediate transport, 62 to transport export, 63 to immediate export, and 69 to US-Canada-US movement
File: GCX016.cbl
GIVEN:
Entry type code is 61 (immediate transport), 62 (transport export), 63 (immediate export), or 69 (US-Canada-US)
WHEN:
Mapping entry type to transport classification
THEN:
Set corresponding transport type: 61 maps to immediate transport, 62 to transport export, 63 to immediate export, 69 to US-Canada-US movement
File: GCX016.cbl
GIVEN:
A cargo record with master in-bond processing required
WHEN:
The entry type code is '61'
THEN:
- Set transport type to immediate transport
- Configure appropriate bond processing parameters
File: GCX016.cbl
GIVEN:
A cargo record with master in-bond processing required
WHEN:
The entry type code is '62'
THEN:
- Set transport type to transport export
- Configure appropriate bond processing parameters
File: GCX016.cbl
GIVEN:
A cargo record with master in-bond processing required
WHEN:
The entry type code is '63'
THEN:
- Set transport type to immediate export
- Configure appropriate bond processing parameters
File: GCX016.cbl
GIVEN:
A cargo record with master in-bond processing required
WHEN:
The entry type code is '69'
THEN:
- Set transport type to us-canada-us movement
- Configure appropriate bond processing parameters
β Consolidated Acceptance Criteria
- Processing bond information → clear all bond-related fields and information
- Bond information needs to be cleared → clear all bond-related fields and set appropriate border processing flags
- Processing bond requirements → clear bond control number and related bond fields as border entries do not require customs bonding
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ClearBondInformationforBorderEntry(["Start Step"])
E_ClearBondInformationforBorderEntry(["End Step"])
N_ClearBondInformationforBorderEntry_Node0{"Processing bond information"}:::decision
N_ClearBondInformationforBorderEntry_Node0_action["Clear all bond-related fields and
information"]:::main N_ClearBondInformationforBorderEntry_Node0 -- Yes --> N_ClearBondInformationforBorderEntry_Node0_action N_ClearBondInformationforBorderEntry_Node0_action --> E_ClearBondInformationforBorderEntry S_ClearBondInformationforBorderEntry --> N_ClearBondInformationforBorderEntry_Node0 N_ClearBondInformationforBorderEntry_Node1{"Bond information needs to be
cleared"}:::decision N_ClearBondInformationforBorderEntry_Node1_action["Clear all bond-related fields and
set appropriate border processing
flags"]:::main N_ClearBondInformationforBorderEntry_Node1 -- Yes --> N_ClearBondInformationforBorderEntry_Node1_action N_ClearBondInformationforBorderEntry_Node1_action --> E_ClearBondInformationforBorderEntry N_ClearBondInformationforBorderEntry_Node0 -- No --> N_ClearBondInformationforBorderEntry_Node1 N_ClearBondInformationforBorderEntry_Node2{"Processing bond requirements"}:::decision N_ClearBondInformationforBorderEntry_Node2_action["Clear bond control number and
related bond fields as border
entries do not require customs
bonding"]:::main N_ClearBondInformationforBorderEntry_Node2 -- Yes --> N_ClearBondInformationforBorderEntry_Node2_action N_ClearBondInformationforBorderEntry_Node2_action --> E_ClearBondInformationforBorderEntry N_ClearBondInformationforBorderEntry_Node1 -- No --> N_ClearBondInformationforBorderEntry_Node2 N_ClearBondInformationforBorderEntry_Node2 -- No --> E_ClearBondInformationforBorderEntry
information"]:::main N_ClearBondInformationforBorderEntry_Node0 -- Yes --> N_ClearBondInformationforBorderEntry_Node0_action N_ClearBondInformationforBorderEntry_Node0_action --> E_ClearBondInformationforBorderEntry S_ClearBondInformationforBorderEntry --> N_ClearBondInformationforBorderEntry_Node0 N_ClearBondInformationforBorderEntry_Node1{"Bond information needs to be
cleared"}:::decision N_ClearBondInformationforBorderEntry_Node1_action["Clear all bond-related fields and
set appropriate border processing
flags"]:::main N_ClearBondInformationforBorderEntry_Node1 -- Yes --> N_ClearBondInformationforBorderEntry_Node1_action N_ClearBondInformationforBorderEntry_Node1_action --> E_ClearBondInformationforBorderEntry N_ClearBondInformationforBorderEntry_Node0 -- No --> N_ClearBondInformationforBorderEntry_Node1 N_ClearBondInformationforBorderEntry_Node2{"Processing bond requirements"}:::decision N_ClearBondInformationforBorderEntry_Node2_action["Clear bond control number and
related bond fields as border
entries do not require customs
bonding"]:::main N_ClearBondInformationforBorderEntry_Node2 -- Yes --> N_ClearBondInformationforBorderEntry_Node2_action N_ClearBondInformationforBorderEntry_Node2_action --> E_ClearBondInformationforBorderEntry N_ClearBondInformationforBorderEntry_Node1 -- No --> N_ClearBondInformationforBorderEntry_Node2 N_ClearBondInformationforBorderEntry_Node2 -- No --> E_ClearBondInformationforBorderEntry
File: GCX016.cbl
GIVEN:
A cargo record with entry type 00 (border entry)
WHEN:
Processing bond information
THEN:
- Clear all bond-related fields
- Information
File: GCX016.cbl
GIVEN:
A cargo record is being processed as border entry type 00
WHEN:
Bond information needs to be cleared
THEN:
- Clear all bond-related fields
- Set appropriate border processing flags
File: GCX016.cbl
GIVEN:
Entry type is border entry (00)
WHEN:
Processing bond requirements
THEN:
- Clear bond control number
- Related bond fields as border entries do not require customs bonding
β Consolidated Acceptance Criteria
- Entry number starts with V → place in entry number field, otherwise place in in-bond control number field
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetBondControlNumbers(["Start Step"])
E_SetBondControlNumbers(["End Step"])
N_SetBondControlNumbers_Node0{"Entry number starts with V"}:::decision
N_SetBondControlNumbers_Node0_action["Place in entry number field,
otherwise place in in-bond control
number field"]:::main N_SetBondControlNumbers_Node0 -- Yes --> N_SetBondControlNumbers_Node0_action N_SetBondControlNumbers_Node0_action --> E_SetBondControlNumbers S_SetBondControlNumbers --> N_SetBondControlNumbers_Node0 N_SetBondControlNumbers_Node0 -- No --> E_SetBondControlNumbers
otherwise place in in-bond control
number field"]:::main N_SetBondControlNumbers_Node0 -- Yes --> N_SetBondControlNumbers_Node0_action N_SetBondControlNumbers_Node0_action --> E_SetBondControlNumbers S_SetBondControlNumbers --> N_SetBondControlNumbers_Node0 N_SetBondControlNumbers_Node0 -- No --> E_SetBondControlNumbers
File: GCX016.cbl
GIVEN:
A cargo record with entry number information
WHEN:
Entry number starts with V
THEN:
Place in entry number field, otherwise place in in-bond control number field
β Consolidated Acceptance Criteria
- Quantity information needs initialization → initialize all quantity fields including total quantity, release quantity, and piece counts
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_InitializeCargoQuantities(["Start Step"])
E_InitializeCargoQuantities(["End Step"])
N_InitializeCargoQuantities_Node0{"Quantity information needs
initialization"}:::decision N_InitializeCargoQuantities_Node0_action["Initialize all quantity fields
including total quantity, release
quantity, and piece counts"]:::main N_InitializeCargoQuantities_Node0 -- Yes --> N_InitializeCargoQuantities_Node0_action N_InitializeCargoQuantities_Node0_action --> E_InitializeCargoQuantities S_InitializeCargoQuantities --> N_InitializeCargoQuantities_Node0 N_InitializeCargoQuantities_Node0 -- No --> E_InitializeCargoQuantities
initialization"}:::decision N_InitializeCargoQuantities_Node0_action["Initialize all quantity fields
including total quantity, release
quantity, and piece counts"]:::main N_InitializeCargoQuantities_Node0 -- Yes --> N_InitializeCargoQuantities_Node0_action N_InitializeCargoQuantities_Node0_action --> E_InitializeCargoQuantities S_InitializeCargoQuantities --> N_InitializeCargoQuantities_Node0 N_InitializeCargoQuantities_Node0 -- No --> E_InitializeCargoQuantities
File: GCX016.cbl
GIVEN:
A new cargo record being created
WHEN:
Quantity information needs initialization
THEN:
Initialize all quantity fields including total quantity, release quantity, and piece counts
β Consolidated Acceptance Criteria
- Setting manifest classification → assign appropriate manifest type and condition codes based on cargo type and processing requirements
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetManifestTypeandConditionCodes(["Start Step"])
E_SetManifestTypeandConditionCodes(["End Step"])
N_SetManifestTypeandConditionCodes_Node0{"Setting manifest classification"}:::decision
N_SetManifestTypeandConditionCodes_Node0_action["Assign appropriate manifest type
and condition codes based on cargo
type and processing requirements"]:::main N_SetManifestTypeandConditionCodes_Node0 -- Yes --> N_SetManifestTypeandConditionCodes_Node0_action N_SetManifestTypeandConditionCodes_Node0_action --> E_SetManifestTypeandConditionCodes S_SetManifestTypeandConditionCodes --> N_SetManifestTypeandConditionCodes_Node0 N_SetManifestTypeandConditionCodes_Node0 -- No --> E_SetManifestTypeandConditionCodes
and condition codes based on cargo
type and processing requirements"]:::main N_SetManifestTypeandConditionCodes_Node0 -- Yes --> N_SetManifestTypeandConditionCodes_Node0_action N_SetManifestTypeandConditionCodes_Node0_action --> E_SetManifestTypeandConditionCodes S_SetManifestTypeandConditionCodes --> N_SetManifestTypeandConditionCodes_Node0 N_SetManifestTypeandConditionCodes_Node0 -- No --> E_SetManifestTypeandConditionCodes
File: GCX016.cbl
GIVEN:
A new cargo record with manifest information
WHEN:
Setting manifest classification
THEN:
- Assign appropriate manifest type
- Condition codes based on cargo type
- Processing requirements
β Consolidated Acceptance Criteria
- Assigning carrier and vessel details → set SCAC code and vessel information from manifest data
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AssignSCACCodeandVesselInformation(["Start Step"])
E_AssignSCACCodeandVesselInformation(["End Step"])
N_AssignSCACCodeandVesselInformation_Node0{"Assigning carrier and vessel
details"}:::decision N_AssignSCACCodeandVesselInformation_Node0_action["Set SCAC code and vessel
information from manifest data"]:::main N_AssignSCACCodeandVesselInformation_Node0 -- Yes --> N_AssignSCACCodeandVesselInformation_Node0_action N_AssignSCACCodeandVesselInformation_Node0_action --> E_AssignSCACCodeandVesselInformation S_AssignSCACCodeandVesselInformation --> N_AssignSCACCodeandVesselInformation_Node0 N_AssignSCACCodeandVesselInformation_Node0 -- No --> E_AssignSCACCodeandVesselInformation
details"}:::decision N_AssignSCACCodeandVesselInformation_Node0_action["Set SCAC code and vessel
information from manifest data"]:::main N_AssignSCACCodeandVesselInformation_Node0 -- Yes --> N_AssignSCACCodeandVesselInformation_Node0_action N_AssignSCACCodeandVesselInformation_Node0_action --> E_AssignSCACCodeandVesselInformation S_AssignSCACCodeandVesselInformation --> N_AssignSCACCodeandVesselInformation_Node0 N_AssignSCACCodeandVesselInformation_Node0 -- No --> E_AssignSCACCodeandVesselInformation
File: GCX016.cbl
GIVEN:
A new cargo record with carrier information
WHEN:
- Assigning carrier
- Vessel details
THEN:
- Set scac code
- Vessel information from manifest data
β Consolidated Acceptance Criteria
- Setting origin and transportation identifiers → assign country code and flight or voyage number from manifest information
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetCountryCodeandFlightVoyageNumber(["Start Step"])
E_SetCountryCodeandFlightVoyageNumber(["End Step"])
N_SetCountryCodeandFlightVoyageNumber_Node0{"Setting origin and transportation
identifiers"}:::decision N_SetCountryCodeandFlightVoyageNumber_Node0_action["Assign country code and flight or
voyage number from manifest
information"]:::main N_SetCountryCodeandFlightVoyageNumber_Node0 -- Yes --> N_SetCountryCodeandFlightVoyageNumber_Node0_action N_SetCountryCodeandFlightVoyageNumber_Node0_action --> E_SetCountryCodeandFlightVoyageNumber S_SetCountryCodeandFlightVoyageNumber --> N_SetCountryCodeandFlightVoyageNumber_Node0 N_SetCountryCodeandFlightVoyageNumber_Node0 -- No --> E_SetCountryCodeandFlightVoyageNumber
identifiers"}:::decision N_SetCountryCodeandFlightVoyageNumber_Node0_action["Assign country code and flight or
voyage number from manifest
information"]:::main N_SetCountryCodeandFlightVoyageNumber_Node0 -- Yes --> N_SetCountryCodeandFlightVoyageNumber_Node0_action N_SetCountryCodeandFlightVoyageNumber_Node0_action --> E_SetCountryCodeandFlightVoyageNumber S_SetCountryCodeandFlightVoyageNumber --> N_SetCountryCodeandFlightVoyageNumber_Node0 N_SetCountryCodeandFlightVoyageNumber_Node0 -- No --> E_SetCountryCodeandFlightVoyageNumber
File: GCX016.cbl
GIVEN:
A new cargo record with transportation details
WHEN:
- Setting origin
- Transportation identifiers
THEN:
- Assign country code
- Flight or voyage number from manifest information
β Consolidated Acceptance Criteria
- Saving the record to the database → insert the cargo record into the database and confirm successful storage
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_StoreCargoRecordinDatabase(["Start Step"])
E_StoreCargoRecordinDatabase(["End Step"])
N_StoreCargoRecordinDatabase_Node0{"Saving the record to the database"}:::decision
N_StoreCargoRecordinDatabase_Node0_action["Insert the cargo record into the
database and confirm successful
storage"]:::main N_StoreCargoRecordinDatabase_Node0 -- Yes --> N_StoreCargoRecordinDatabase_Node0_action N_StoreCargoRecordinDatabase_Node0_action --> E_StoreCargoRecordinDatabase S_StoreCargoRecordinDatabase --> N_StoreCargoRecordinDatabase_Node0 N_StoreCargoRecordinDatabase_Node0 -- No --> E_StoreCargoRecordinDatabase
database and confirm successful
storage"]:::main N_StoreCargoRecordinDatabase_Node0 -- Yes --> N_StoreCargoRecordinDatabase_Node0_action N_StoreCargoRecordinDatabase_Node0_action --> E_StoreCargoRecordinDatabase S_StoreCargoRecordinDatabase --> N_StoreCargoRecordinDatabase_Node0 N_StoreCargoRecordinDatabase_Node0 -- No --> E_StoreCargoRecordinDatabase
File: GCX016.cbl
GIVEN:
A fully initialized new cargo record
WHEN:
Saving the record to the database
THEN:
- Insert the cargo record into the database
- Confirm successful storage
β Consolidated Acceptance Criteria
- The entry type code is evaluated for master in-bond eligibility → entry types 61, 62, 63, and 69 are classified as master in-bond entries requiring special processing, while all other entry types proceed to standard processing
- The entry type code is evaluated → route to master in-bond processing for codes 61, 62, 63, 69, border entry processing for code 00, or standard entry processing for other codes
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_EntryTypeCode(["Start Step"])
E_EntryTypeCode(["End Step"])
N_EntryTypeCode_Node0{"The entry type code is evaluated
for master in-bond eligibility"}:::decision N_EntryTypeCode_Node0_action["Entry types 61, 62, 63, and 69 are
classified as master in-bond entries
requiring special processing, while
all other entry types proceed to
standard processing"]:::main N_EntryTypeCode_Node0 -- Yes --> N_EntryTypeCode_Node0_action N_EntryTypeCode_Node0_action --> E_EntryTypeCode S_EntryTypeCode --> N_EntryTypeCode_Node0 N_EntryTypeCode_Node1{"The entry type code is evaluated"}:::decision N_EntryTypeCode_Node1_action["Route to master in-bond processing
for codes 61, 62, 63, 69, border
entry processing for code 00, or
standard entry processing for other
codes"]:::main N_EntryTypeCode_Node1 -- Yes --> N_EntryTypeCode_Node1_action N_EntryTypeCode_Node1_action --> E_EntryTypeCode N_EntryTypeCode_Node0 -- No --> N_EntryTypeCode_Node1 N_EntryTypeCode_Node1 -- No --> E_EntryTypeCode
for master in-bond eligibility"}:::decision N_EntryTypeCode_Node0_action["Entry types 61, 62, 63, and 69 are
classified as master in-bond entries
requiring special processing, while
all other entry types proceed to
standard processing"]:::main N_EntryTypeCode_Node0 -- Yes --> N_EntryTypeCode_Node0_action N_EntryTypeCode_Node0_action --> E_EntryTypeCode S_EntryTypeCode --> N_EntryTypeCode_Node0 N_EntryTypeCode_Node1{"The entry type code is evaluated"}:::decision N_EntryTypeCode_Node1_action["Route to master in-bond processing
for codes 61, 62, 63, 69, border
entry processing for code 00, or
standard entry processing for other
codes"]:::main N_EntryTypeCode_Node1 -- Yes --> N_EntryTypeCode_Node1_action N_EntryTypeCode_Node1_action --> E_EntryTypeCode N_EntryTypeCode_Node0 -- No --> N_EntryTypeCode_Node1 N_EntryTypeCode_Node1 -- No --> E_EntryTypeCode
File: GCX016.cbl
GIVEN:
An X4 segment is received with an entry type code
WHEN:
The entry type code is evaluated for master in-bond eligibility
THEN:
Entry types 61, 62, 63, and 69 are classified as master in-bond entries requiring special processing, while all other entry types proceed to standard processing
File: GCX016.cbl
GIVEN:
A new cargo record has an entry type code
WHEN:
The entry type code is evaluated
THEN:
Route to master in-bond processing for codes 61, 62, 63, 69, border entry processing for code 00, or standard entry processing for other codes
β Consolidated Acceptance Criteria
- Master in-bond processing is initiated → the cargo is classified for immediate transport processing and master in-bond flag is set
- The system processes the X4 segment for master in-bond entry → the system sets the transport type to immediate transport AND sets the master in-bond flag AND processes the bond control number
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_EntryType61MasterInBond(["Start Step"])
E_EntryType61MasterInBond(["End Step"])
N_EntryType61MasterInBond_Node0{"Master in-bond processing is
initiated"}:::decision N_EntryType61MasterInBond_Node0_action["The cargo is classified for
immediate transport processing and
master in-bond flag is set"]:::main N_EntryType61MasterInBond_Node0 -- Yes --> N_EntryType61MasterInBond_Node0_action N_EntryType61MasterInBond_Node0_action --> E_EntryType61MasterInBond S_EntryType61MasterInBond --> N_EntryType61MasterInBond_Node0 N_EntryType61MasterInBond_Node1{"The system processes the X4 segment
for master in-bond entry"}:::decision N_EntryType61MasterInBond_Node1_action["The system sets the transport type
to immediate transport AND sets the
master in-bond flag AND processes
the bond control number"]:::main N_EntryType61MasterInBond_Node1 -- Yes --> N_EntryType61MasterInBond_Node1_action N_EntryType61MasterInBond_Node1_action --> E_EntryType61MasterInBond N_EntryType61MasterInBond_Node0 -- No --> N_EntryType61MasterInBond_Node1 N_EntryType61MasterInBond_Node1 -- No --> E_EntryType61MasterInBond
initiated"}:::decision N_EntryType61MasterInBond_Node0_action["The cargo is classified for
immediate transport processing and
master in-bond flag is set"]:::main N_EntryType61MasterInBond_Node0 -- Yes --> N_EntryType61MasterInBond_Node0_action N_EntryType61MasterInBond_Node0_action --> E_EntryType61MasterInBond S_EntryType61MasterInBond --> N_EntryType61MasterInBond_Node0 N_EntryType61MasterInBond_Node1{"The system processes the X4 segment
for master in-bond entry"}:::decision N_EntryType61MasterInBond_Node1_action["The system sets the transport type
to immediate transport AND sets the
master in-bond flag AND processes
the bond control number"]:::main N_EntryType61MasterInBond_Node1 -- Yes --> N_EntryType61MasterInBond_Node1_action N_EntryType61MasterInBond_Node1_action --> E_EntryType61MasterInBond N_EntryType61MasterInBond_Node0 -- No --> N_EntryType61MasterInBond_Node1 N_EntryType61MasterInBond_Node1 -- No --> E_EntryType61MasterInBond
File: GCX016.cbl
GIVEN:
Cargo has entry type code 61
WHEN:
Master in-bond processing is initiated
THEN:
- The cargo is classified for immediate transport processing
- Master in-bond flag is set
File: GCX016.cbl
GIVEN:
A cargo record with disposition code requiring master in-bond processing AND entry type code is '61'
WHEN:
The system processes the X4 segment for master in-bond entry
THEN:
- The system sets the transport type to immediate transport
- Sets the master in-bond flag
- Processes the bond control number
β Consolidated Acceptance Criteria
- Master in-bond processing is initiated → the cargo is classified for transport export processing and master in-bond flag is set
- The system processes the X4 segment for master in-bond entry → the system sets the transport type to transport for export AND sets the master in-bond flag AND processes the bond control number
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_EntryType62MasterInBond(["Start Step"])
E_EntryType62MasterInBond(["End Step"])
N_EntryType62MasterInBond_Node0{"Master in-bond processing is
initiated"}:::decision N_EntryType62MasterInBond_Node0_action["The cargo is classified for
transport export processing and
master in-bond flag is set"]:::main N_EntryType62MasterInBond_Node0 -- Yes --> N_EntryType62MasterInBond_Node0_action N_EntryType62MasterInBond_Node0_action --> E_EntryType62MasterInBond S_EntryType62MasterInBond --> N_EntryType62MasterInBond_Node0 N_EntryType62MasterInBond_Node1{"The system processes the X4 segment
for master in-bond entry"}:::decision N_EntryType62MasterInBond_Node1_action["The system sets the transport type
to transport for export AND sets the
master in-bond flag AND processes
the bond control number"]:::main N_EntryType62MasterInBond_Node1 -- Yes --> N_EntryType62MasterInBond_Node1_action N_EntryType62MasterInBond_Node1_action --> E_EntryType62MasterInBond N_EntryType62MasterInBond_Node0 -- No --> N_EntryType62MasterInBond_Node1 N_EntryType62MasterInBond_Node1 -- No --> E_EntryType62MasterInBond
initiated"}:::decision N_EntryType62MasterInBond_Node0_action["The cargo is classified for
transport export processing and
master in-bond flag is set"]:::main N_EntryType62MasterInBond_Node0 -- Yes --> N_EntryType62MasterInBond_Node0_action N_EntryType62MasterInBond_Node0_action --> E_EntryType62MasterInBond S_EntryType62MasterInBond --> N_EntryType62MasterInBond_Node0 N_EntryType62MasterInBond_Node1{"The system processes the X4 segment
for master in-bond entry"}:::decision N_EntryType62MasterInBond_Node1_action["The system sets the transport type
to transport for export AND sets the
master in-bond flag AND processes
the bond control number"]:::main N_EntryType62MasterInBond_Node1 -- Yes --> N_EntryType62MasterInBond_Node1_action N_EntryType62MasterInBond_Node1_action --> E_EntryType62MasterInBond N_EntryType62MasterInBond_Node0 -- No --> N_EntryType62MasterInBond_Node1 N_EntryType62MasterInBond_Node1 -- No --> E_EntryType62MasterInBond
File: GCX016.cbl
GIVEN:
Cargo has entry type code 62
WHEN:
Master in-bond processing is initiated
THEN:
- The cargo is classified for transport export processing
- Master in-bond flag is set
File: GCX016.cbl
GIVEN:
A cargo record with disposition code requiring master in-bond processing AND entry type code is '62'
WHEN:
The system processes the X4 segment for master in-bond entry
THEN:
- The system sets the transport type to transport for export
- Sets the master in-bond flag
- Processes the bond control number
β Consolidated Acceptance Criteria
- Master in-bond processing is initiated → the cargo is classified for immediate export processing and master in-bond flag is set
- The system processes the X4 segment for master in-bond entry → the system sets the transport type to immediate export AND sets the master in-bond flag AND processes the bond control number
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_EntryType63MasterInBond(["Start Step"])
E_EntryType63MasterInBond(["End Step"])
N_EntryType63MasterInBond_Node0{"Master in-bond processing is
initiated"}:::decision N_EntryType63MasterInBond_Node0_action["The cargo is classified for
immediate export processing and
master in-bond flag is set"]:::main N_EntryType63MasterInBond_Node0 -- Yes --> N_EntryType63MasterInBond_Node0_action N_EntryType63MasterInBond_Node0_action --> E_EntryType63MasterInBond S_EntryType63MasterInBond --> N_EntryType63MasterInBond_Node0 N_EntryType63MasterInBond_Node1{"The system processes the X4 segment
for master in-bond entry"}:::decision N_EntryType63MasterInBond_Node1_action["The system sets the transport type
to immediate export AND sets the
master in-bond flag AND processes
the bond control number"]:::main N_EntryType63MasterInBond_Node1 -- Yes --> N_EntryType63MasterInBond_Node1_action N_EntryType63MasterInBond_Node1_action --> E_EntryType63MasterInBond N_EntryType63MasterInBond_Node0 -- No --> N_EntryType63MasterInBond_Node1 N_EntryType63MasterInBond_Node1 -- No --> E_EntryType63MasterInBond
initiated"}:::decision N_EntryType63MasterInBond_Node0_action["The cargo is classified for
immediate export processing and
master in-bond flag is set"]:::main N_EntryType63MasterInBond_Node0 -- Yes --> N_EntryType63MasterInBond_Node0_action N_EntryType63MasterInBond_Node0_action --> E_EntryType63MasterInBond S_EntryType63MasterInBond --> N_EntryType63MasterInBond_Node0 N_EntryType63MasterInBond_Node1{"The system processes the X4 segment
for master in-bond entry"}:::decision N_EntryType63MasterInBond_Node1_action["The system sets the transport type
to immediate export AND sets the
master in-bond flag AND processes
the bond control number"]:::main N_EntryType63MasterInBond_Node1 -- Yes --> N_EntryType63MasterInBond_Node1_action N_EntryType63MasterInBond_Node1_action --> E_EntryType63MasterInBond N_EntryType63MasterInBond_Node0 -- No --> N_EntryType63MasterInBond_Node1 N_EntryType63MasterInBond_Node1 -- No --> E_EntryType63MasterInBond
File: GCX016.cbl
GIVEN:
Cargo has entry type code 63
WHEN:
Master in-bond processing is initiated
THEN:
- The cargo is classified for immediate export processing
- Master in-bond flag is set
File: GCX016.cbl
GIVEN:
A cargo record with disposition code requiring master in-bond processing AND entry type code is '63'
WHEN:
The system processes the X4 segment for master in-bond entry
THEN:
- The system sets the transport type to immediate export
- Sets the master in-bond flag
- Processes the bond control number
β Consolidated Acceptance Criteria
- Master in-bond processing is initiated → the cargo is classified for US-Canada-US movement processing and master in-bond flag is set
- The system processes the X4 segment for master in-bond entry → the system sets the transport type to US-Canada-US movement AND sets the master in-bond flag AND processes the bond control number
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_EntryType69MasterInBond(["Start Step"])
E_EntryType69MasterInBond(["End Step"])
N_EntryType69MasterInBond_Node0{"Master in-bond processing is
initiated"}:::decision N_EntryType69MasterInBond_Node0_action["The cargo is classified for
US-Canada-US movement processing and
master in-bond flag is set"]:::main N_EntryType69MasterInBond_Node0 -- Yes --> N_EntryType69MasterInBond_Node0_action N_EntryType69MasterInBond_Node0_action --> E_EntryType69MasterInBond S_EntryType69MasterInBond --> N_EntryType69MasterInBond_Node0 N_EntryType69MasterInBond_Node1{"The system processes the X4 segment
for master in-bond entry"}:::decision N_EntryType69MasterInBond_Node1_action["The system sets the transport type
to US-Canada-US movement AND sets
the master in-bond flag AND
processes the bond control number"]:::main N_EntryType69MasterInBond_Node1 -- Yes --> N_EntryType69MasterInBond_Node1_action N_EntryType69MasterInBond_Node1_action --> E_EntryType69MasterInBond N_EntryType69MasterInBond_Node0 -- No --> N_EntryType69MasterInBond_Node1 N_EntryType69MasterInBond_Node1 -- No --> E_EntryType69MasterInBond
initiated"}:::decision N_EntryType69MasterInBond_Node0_action["The cargo is classified for
US-Canada-US movement processing and
master in-bond flag is set"]:::main N_EntryType69MasterInBond_Node0 -- Yes --> N_EntryType69MasterInBond_Node0_action N_EntryType69MasterInBond_Node0_action --> E_EntryType69MasterInBond S_EntryType69MasterInBond --> N_EntryType69MasterInBond_Node0 N_EntryType69MasterInBond_Node1{"The system processes the X4 segment
for master in-bond entry"}:::decision N_EntryType69MasterInBond_Node1_action["The system sets the transport type
to US-Canada-US movement AND sets
the master in-bond flag AND
processes the bond control number"]:::main N_EntryType69MasterInBond_Node1 -- Yes --> N_EntryType69MasterInBond_Node1_action N_EntryType69MasterInBond_Node1_action --> E_EntryType69MasterInBond N_EntryType69MasterInBond_Node0 -- No --> N_EntryType69MasterInBond_Node1 N_EntryType69MasterInBond_Node1 -- No --> E_EntryType69MasterInBond
File: GCX016.cbl
GIVEN:
Cargo has entry type code 69
WHEN:
Master in-bond processing is initiated
THEN:
- The cargo is classified for us-canada-us movement processing
- Master in-bond flag is set
File: GCX016.cbl
GIVEN:
A cargo record with disposition code requiring master in-bond processing AND entry type code is '69'
WHEN:
The system processes the X4 segment for master in-bond entry
THEN:
- The system sets the transport type to us-canada-us movement
- Sets the master in-bond flag
- Processes the bond control number
β Consolidated Acceptance Criteria
- The bond control number is checked against the bond database → the bond must exist and be active for processing to continue, otherwise a bond validation error is generated
- System validates bond number format and checks against bond database → system determines if bond number is valid and active
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ValidateBondControlNumber(["Start Step"])
E_ValidateBondControlNumber(["End Step"])
N_ValidateBondControlNumber_Node0{"The bond control number is checked
against the bond database"}:::decision N_ValidateBondControlNumber_Node0_action["The bond must exist and be active
for processing to continue,
otherwise a bond validation error is
generated"]:::main N_ValidateBondControlNumber_Node0 -- Yes --> N_ValidateBondControlNumber_Node0_action N_ValidateBondControlNumber_Node0_action --> E_ValidateBondControlNumber S_ValidateBondControlNumber --> N_ValidateBondControlNumber_Node0 N_ValidateBondControlNumber_Node1{"System validates bond number format
and checks against bond database"}:::decision N_ValidateBondControlNumber_Node1_action["System determines if bond number is
valid and active"]:::main N_ValidateBondControlNumber_Node1 -- Yes --> N_ValidateBondControlNumber_Node1_action N_ValidateBondControlNumber_Node1_action --> E_ValidateBondControlNumber N_ValidateBondControlNumber_Node0 -- No --> N_ValidateBondControlNumber_Node1 N_ValidateBondControlNumber_Node1 -- No --> E_ValidateBondControlNumber
against the bond database"}:::decision N_ValidateBondControlNumber_Node0_action["The bond must exist and be active
for processing to continue,
otherwise a bond validation error is
generated"]:::main N_ValidateBondControlNumber_Node0 -- Yes --> N_ValidateBondControlNumber_Node0_action N_ValidateBondControlNumber_Node0_action --> E_ValidateBondControlNumber S_ValidateBondControlNumber --> N_ValidateBondControlNumber_Node0 N_ValidateBondControlNumber_Node1{"System validates bond number format
and checks against bond database"}:::decision N_ValidateBondControlNumber_Node1_action["System determines if bond number is
valid and active"]:::main N_ValidateBondControlNumber_Node1 -- Yes --> N_ValidateBondControlNumber_Node1_action N_ValidateBondControlNumber_Node1_action --> E_ValidateBondControlNumber N_ValidateBondControlNumber_Node0 -- No --> N_ValidateBondControlNumber_Node1 N_ValidateBondControlNumber_Node1 -- No --> E_ValidateBondControlNumber
File: GCX016.cbl
GIVEN:
A master in-bond entry requires bond validation
WHEN:
The bond control number is checked against the bond database
THEN:
- The bond must exist
- Be active for processing to continue, otherwise a bond validation error is generated
File: GCX016.cbl
GIVEN:
Bond control number extracted from broker information
WHEN:
- System validates bond number format
- Checks against bond database
THEN:
- System determines if bond number is valid
- Active
β Consolidated Acceptance Criteria
- The cargo record is updated → the transport type field in the cargo record is set to the mapped value
- The system updates the cargo record → the transport type should be set in the cargo record based on the entry type mapping
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetTransportTypeinCargoRecord(["Start Step"])
E_SetTransportTypeinCargoRecord(["End Step"])
N_SetTransportTypeinCargoRecord_Node0{"The cargo record is updated"}:::decision
N_SetTransportTypeinCargoRecord_Node0_action["The transport type field in the
cargo record is set to the mapped
value"]:::main N_SetTransportTypeinCargoRecord_Node0 -- Yes --> N_SetTransportTypeinCargoRecord_Node0_action N_SetTransportTypeinCargoRecord_Node0_action --> E_SetTransportTypeinCargoRecord S_SetTransportTypeinCargoRecord --> N_SetTransportTypeinCargoRecord_Node0 N_SetTransportTypeinCargoRecord_Node1{"The system updates the cargo record"}:::decision N_SetTransportTypeinCargoRecord_Node1_action["The transport type should be set in
the cargo record based on the entry
type mapping"]:::main N_SetTransportTypeinCargoRecord_Node1 -- Yes --> N_SetTransportTypeinCargoRecord_Node1_action N_SetTransportTypeinCargoRecord_Node1_action --> E_SetTransportTypeinCargoRecord N_SetTransportTypeinCargoRecord_Node0 -- No --> N_SetTransportTypeinCargoRecord_Node1 N_SetTransportTypeinCargoRecord_Node1 -- No --> E_SetTransportTypeinCargoRecord
cargo record is set to the mapped
value"]:::main N_SetTransportTypeinCargoRecord_Node0 -- Yes --> N_SetTransportTypeinCargoRecord_Node0_action N_SetTransportTypeinCargoRecord_Node0_action --> E_SetTransportTypeinCargoRecord S_SetTransportTypeinCargoRecord --> N_SetTransportTypeinCargoRecord_Node0 N_SetTransportTypeinCargoRecord_Node1{"The system updates the cargo record"}:::decision N_SetTransportTypeinCargoRecord_Node1_action["The transport type should be set in
the cargo record based on the entry
type mapping"]:::main N_SetTransportTypeinCargoRecord_Node1 -- Yes --> N_SetTransportTypeinCargoRecord_Node1_action N_SetTransportTypeinCargoRecord_Node1_action --> E_SetTransportTypeinCargoRecord N_SetTransportTypeinCargoRecord_Node0 -- No --> N_SetTransportTypeinCargoRecord_Node1 N_SetTransportTypeinCargoRecord_Node1 -- No --> E_SetTransportTypeinCargoRecord
File: GCX016.cbl
GIVEN:
A transport type has been determined from the entry type mapping
WHEN:
The cargo record is updated
THEN:
The transport type field in the cargo record is set to the mapped value
File: GCX016.cbl
GIVEN:
A valid master in-bond entry type code has been processed
WHEN:
The system updates the cargo record
THEN:
The transport type should be set in the cargo record based on the entry type mapping
β Consolidated Acceptance Criteria
- In-bond status flags are updated → master in-bond processing flag is set and appropriate status indicators are activated
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UpdateInBondStatusFlags(["Start Step"])
E_UpdateInBondStatusFlags(["End Step"])
N_UpdateInBondStatusFlags_Node0{"In-bond status flags are updated"}:::decision
N_UpdateInBondStatusFlags_Node0_action["Master in-bond processing flag is
set and appropriate status
indicators are activated"]:::main N_UpdateInBondStatusFlags_Node0 -- Yes --> N_UpdateInBondStatusFlags_Node0_action N_UpdateInBondStatusFlags_Node0_action --> E_UpdateInBondStatusFlags S_UpdateInBondStatusFlags --> N_UpdateInBondStatusFlags_Node0 N_UpdateInBondStatusFlags_Node0 -- No --> E_UpdateInBondStatusFlags
set and appropriate status
indicators are activated"]:::main N_UpdateInBondStatusFlags_Node0 -- Yes --> N_UpdateInBondStatusFlags_Node0_action N_UpdateInBondStatusFlags_Node0_action --> E_UpdateInBondStatusFlags S_UpdateInBondStatusFlags --> N_UpdateInBondStatusFlags_Node0 N_UpdateInBondStatusFlags_Node0 -- No --> E_UpdateInBondStatusFlags
File: GCX016.cbl
GIVEN:
Transport type has been set in the cargo record
WHEN:
In-bond status flags are updated
THEN:
- Master in-bond processing flag is set
- Appropriate status indicators are activated
β Consolidated Acceptance Criteria
- Regulatory compliance check is performed → all required documentation, permits, and regulatory conditions must be satisfied for the specific entry type
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ValidateRegulatoryCompliance(["Start Step"])
E_ValidateRegulatoryCompliance(["End Step"])
N_ValidateRegulatoryCompliance_Node0{"Regulatory compliance check is
performed"}:::decision N_ValidateRegulatoryCompliance_Node0_action["All required documentation,
permits, and regulatory conditions
must be satisfied for the specific
entry type"]:::main N_ValidateRegulatoryCompliance_Node0 -- Yes --> N_ValidateRegulatoryCompliance_Node0_action N_ValidateRegulatoryCompliance_Node0_action --> E_ValidateRegulatoryCompliance S_ValidateRegulatoryCompliance --> N_ValidateRegulatoryCompliance_Node0 N_ValidateRegulatoryCompliance_Node0 -- No --> E_ValidateRegulatoryCompliance
performed"}:::decision N_ValidateRegulatoryCompliance_Node0_action["All required documentation,
permits, and regulatory conditions
must be satisfied for the specific
entry type"]:::main N_ValidateRegulatoryCompliance_Node0 -- Yes --> N_ValidateRegulatoryCompliance_Node0_action N_ValidateRegulatoryCompliance_Node0_action --> E_ValidateRegulatoryCompliance S_ValidateRegulatoryCompliance --> N_ValidateRegulatoryCompliance_Node0 N_ValidateRegulatoryCompliance_Node0 -- No --> E_ValidateRegulatoryCompliance
File: GCX016.cbl
GIVEN:
In-bond status flags have been updated
WHEN:
Regulatory compliance check is performed
THEN:
All required documentation, permits, and regulatory conditions must be satisfied for the specific entry type
β Consolidated Acceptance Criteria
- Master in-bond flag is set → the cargo is marked for master in-bond processing and subsequent operations will recognize this special status
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetMasterInBondProcessingFlag(["Start Step"])
E_SetMasterInBondProcessingFlag(["End Step"])
N_SetMasterInBondProcessingFlag_Node0{"Master in-bond flag is set"}:::decision
N_SetMasterInBondProcessingFlag_Node0_action["The cargo is marked for master
in-bond processing and subsequent
operations will recognize this
special status"]:::main N_SetMasterInBondProcessingFlag_Node0 -- Yes --> N_SetMasterInBondProcessingFlag_Node0_action N_SetMasterInBondProcessingFlag_Node0_action --> E_SetMasterInBondProcessingFlag S_SetMasterInBondProcessingFlag --> N_SetMasterInBondProcessingFlag_Node0 N_SetMasterInBondProcessingFlag_Node0 -- No --> E_SetMasterInBondProcessingFlag
in-bond processing and subsequent
operations will recognize this
special status"]:::main N_SetMasterInBondProcessingFlag_Node0 -- Yes --> N_SetMasterInBondProcessingFlag_Node0_action N_SetMasterInBondProcessingFlag_Node0_action --> E_SetMasterInBondProcessingFlag S_SetMasterInBondProcessingFlag --> N_SetMasterInBondProcessingFlag_Node0 N_SetMasterInBondProcessingFlag_Node0 -- No --> E_SetMasterInBondProcessingFlag
File: GCX016.cbl
GIVEN:
Regulatory compliance check has passed
WHEN:
Master in-bond flag is set
THEN:
- The cargo is marked for master in-bond processing
- Subsequent operations will recognize this special status
β Consolidated Acceptance Criteria
- Cargo record is updated with in-bond details → all relevant in-bond fields including entry type, transport type, bond number, and processing flags are populated in the cargo record
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UpdateCargoRecordwithInBondDetails(["Start Step"])
E_UpdateCargoRecordwithInBondDetails(["End Step"])
N_UpdateCargoRecordwithInBondDetails_Node0{"Cargo record is updated with
in-bond details"}:::decision N_UpdateCargoRecordwithInBondDetails_Node0_action["All relevant in-bond fields
including entry type, transport
type, bond number, and processing
flags are populated in the cargo
record"]:::main N_UpdateCargoRecordwithInBondDetails_Node0 -- Yes --> N_UpdateCargoRecordwithInBondDetails_Node0_action N_UpdateCargoRecordwithInBondDetails_Node0_action --> E_UpdateCargoRecordwithInBondDetails S_UpdateCargoRecordwithInBondDetails --> N_UpdateCargoRecordwithInBondDetails_Node0 N_UpdateCargoRecordwithInBondDetails_Node0 -- No --> E_UpdateCargoRecordwithInBondDetails
in-bond details"}:::decision N_UpdateCargoRecordwithInBondDetails_Node0_action["All relevant in-bond fields
including entry type, transport
type, bond number, and processing
flags are populated in the cargo
record"]:::main N_UpdateCargoRecordwithInBondDetails_Node0 -- Yes --> N_UpdateCargoRecordwithInBondDetails_Node0_action N_UpdateCargoRecordwithInBondDetails_Node0_action --> E_UpdateCargoRecordwithInBondDetails S_UpdateCargoRecordwithInBondDetails --> N_UpdateCargoRecordwithInBondDetails_Node0 N_UpdateCargoRecordwithInBondDetails_Node0 -- No --> E_UpdateCargoRecordwithInBondDetails
File: GCX016.cbl
GIVEN:
Master in-bond processing flag has been set
WHEN:
Cargo record is updated with in-bond details
THEN:
All relevant in-bond fields including entry type, transport type, bond number, and processing flags are populated in the cargo record
β Consolidated Acceptance Criteria
- Processing log is created → an audit record is generated documenting the master in-bond processing including entry type, bond number, and processing timestamp
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogMasterInBondProcessing(["Start Step"])
E_LogMasterInBondProcessing(["End Step"])
N_LogMasterInBondProcessing_Node0{"Processing log is created"}:::decision
N_LogMasterInBondProcessing_Node0_action["An audit record is generated
documenting the master in-bond
processing including entry type,
bond number, and processing
timestamp"]:::main N_LogMasterInBondProcessing_Node0 -- Yes --> N_LogMasterInBondProcessing_Node0_action N_LogMasterInBondProcessing_Node0_action --> E_LogMasterInBondProcessing S_LogMasterInBondProcessing --> N_LogMasterInBondProcessing_Node0 N_LogMasterInBondProcessing_Node0 -- No --> E_LogMasterInBondProcessing
documenting the master in-bond
processing including entry type,
bond number, and processing
timestamp"]:::main N_LogMasterInBondProcessing_Node0 -- Yes --> N_LogMasterInBondProcessing_Node0_action N_LogMasterInBondProcessing_Node0_action --> E_LogMasterInBondProcessing S_LogMasterInBondProcessing --> N_LogMasterInBondProcessing_Node0 N_LogMasterInBondProcessing_Node0 -- No --> E_LogMasterInBondProcessing
File: GCX016.cbl
GIVEN:
Cargo record has been updated with in-bond details
WHEN:
Processing log is created
THEN:
An audit record is generated documenting the master in-bond processing including entry type, bond number, and processing timestamp
β Consolidated Acceptance Criteria
- Compliance error is generated → an error message is created indicating specific compliance failure and processing is directed to error handling
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GenerateComplianceError(["Start Step"])
E_GenerateComplianceError(["End Step"])
N_GenerateComplianceError_Node0{"Compliance error is generated"}:::decision
N_GenerateComplianceError_Node0_action["An error message is created
indicating specific compliance
failure and processing is directed
to error handling"]:::exclusion N_GenerateComplianceError_Node0 -- Yes -->|Alternative| N_GenerateComplianceError_Node0_action N_GenerateComplianceError_Node0_action --> E_GenerateComplianceError S_GenerateComplianceError --> N_GenerateComplianceError_Node0 N_GenerateComplianceError_Node0 -- No --> E_GenerateComplianceError
indicating specific compliance
failure and processing is directed
to error handling"]:::exclusion N_GenerateComplianceError_Node0 -- Yes -->|Alternative| N_GenerateComplianceError_Node0_action N_GenerateComplianceError_Node0_action --> E_GenerateComplianceError S_GenerateComplianceError --> N_GenerateComplianceError_Node0 N_GenerateComplianceError_Node0 -- No --> E_GenerateComplianceError
File: GCX016.cbl
GIVEN:
Regulatory compliance check has failed
WHEN:
Compliance error is generated
THEN:
- An error message is created indicating specific compliance failure
- Processing is directed to error handling
β Consolidated Acceptance Criteria
- The system processes the M10 segment → the SCAC code is extracted from the M10 segment and stored for manifest processing
- The system processes the M10 segment → the SCAC code is extracted and stored for cargo record integration
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExtractSCACCodefromM10(["Start Step"])
E_ExtractSCACCodefromM10(["End Step"])
N_ExtractSCACCodefromM10_Node0{"The system processes the M10
segment"}:::decision N_ExtractSCACCodefromM10_Node0_action["The SCAC code is extracted from the
M10 segment and stored for manifest
processing"]:::main N_ExtractSCACCodefromM10_Node0 -- Yes --> N_ExtractSCACCodefromM10_Node0_action N_ExtractSCACCodefromM10_Node0_action --> E_ExtractSCACCodefromM10 S_ExtractSCACCodefromM10 --> N_ExtractSCACCodefromM10_Node0 N_ExtractSCACCodefromM10_Node1{"The system processes the M10
segment"}:::decision N_ExtractSCACCodefromM10_Node1_action["The SCAC code is extracted and
stored for cargo record integration"]:::main N_ExtractSCACCodefromM10_Node1 -- Yes --> N_ExtractSCACCodefromM10_Node1_action N_ExtractSCACCodefromM10_Node1_action --> E_ExtractSCACCodefromM10 N_ExtractSCACCodefromM10_Node0 -- No --> N_ExtractSCACCodefromM10_Node1 N_ExtractSCACCodefromM10_Node1 -- No --> E_ExtractSCACCodefromM10
segment"}:::decision N_ExtractSCACCodefromM10_Node0_action["The SCAC code is extracted from the
M10 segment and stored for manifest
processing"]:::main N_ExtractSCACCodefromM10_Node0 -- Yes --> N_ExtractSCACCodefromM10_Node0_action N_ExtractSCACCodefromM10_Node0_action --> E_ExtractSCACCodefromM10 S_ExtractSCACCodefromM10 --> N_ExtractSCACCodefromM10_Node0 N_ExtractSCACCodefromM10_Node1{"The system processes the M10
segment"}:::decision N_ExtractSCACCodefromM10_Node1_action["The SCAC code is extracted and
stored for cargo record integration"]:::main N_ExtractSCACCodefromM10_Node1 -- Yes --> N_ExtractSCACCodefromM10_Node1_action N_ExtractSCACCodefromM10_Node1_action --> E_ExtractSCACCodefromM10 N_ExtractSCACCodefromM10_Node0 -- No --> N_ExtractSCACCodefromM10_Node1 N_ExtractSCACCodefromM10_Node1 -- No --> E_ExtractSCACCodefromM10
File: GCX016.cbl
GIVEN:
An M10 manifest segment is received
WHEN:
The system processes the M10 segment
THEN:
- The scac code is extracted from the m10 segment
- Stored for manifest processing
File: GCX016.cbl
GIVEN:
An M10 manifest segment is received with SCAC code data
WHEN:
The system processes the M10 segment
THEN:
- The scac code is extracted
- Stored for cargo record integration
β Consolidated Acceptance Criteria
- The system processes the M10 segment → the transport type is extracted from the M10 segment and stored for manifest processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExtractTransportType(["Start Step"])
E_ExtractTransportType(["End Step"])
N_ExtractTransportType_Node0{"The system processes the M10
segment"}:::decision N_ExtractTransportType_Node0_action["The transport type is extracted
from the M10 segment and stored for
manifest processing"]:::main N_ExtractTransportType_Node0 -- Yes --> N_ExtractTransportType_Node0_action N_ExtractTransportType_Node0_action --> E_ExtractTransportType S_ExtractTransportType --> N_ExtractTransportType_Node0 N_ExtractTransportType_Node0 -- No --> E_ExtractTransportType
segment"}:::decision N_ExtractTransportType_Node0_action["The transport type is extracted
from the M10 segment and stored for
manifest processing"]:::main N_ExtractTransportType_Node0 -- Yes --> N_ExtractTransportType_Node0_action N_ExtractTransportType_Node0_action --> E_ExtractTransportType S_ExtractTransportType --> N_ExtractTransportType_Node0 N_ExtractTransportType_Node0 -- No --> E_ExtractTransportType
File: GCX016.cbl
GIVEN:
An M10 manifest segment is received
WHEN:
The system processes the M10 segment
THEN:
- The transport type is extracted from the m10 segment
- Stored for manifest processing
β Consolidated Acceptance Criteria
- The system processes the M10 segment → the country code is extracted from the M10 segment and stored for manifest processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExtractCountryCode(["Start Step"])
E_ExtractCountryCode(["End Step"])
N_ExtractCountryCode_Node0{"The system processes the M10
segment"}:::decision N_ExtractCountryCode_Node0_action["The country code is extracted from
the M10 segment and stored for
manifest processing"]:::main N_ExtractCountryCode_Node0 -- Yes --> N_ExtractCountryCode_Node0_action N_ExtractCountryCode_Node0_action --> E_ExtractCountryCode S_ExtractCountryCode --> N_ExtractCountryCode_Node0 N_ExtractCountryCode_Node0 -- No --> E_ExtractCountryCode
segment"}:::decision N_ExtractCountryCode_Node0_action["The country code is extracted from
the M10 segment and stored for
manifest processing"]:::main N_ExtractCountryCode_Node0 -- Yes --> N_ExtractCountryCode_Node0_action N_ExtractCountryCode_Node0_action --> E_ExtractCountryCode S_ExtractCountryCode --> N_ExtractCountryCode_Node0 N_ExtractCountryCode_Node0 -- No --> E_ExtractCountryCode
File: GCX016.cbl
GIVEN:
An M10 manifest segment is received
WHEN:
The system processes the M10 segment
THEN:
- The country code is extracted from the m10 segment
- Stored for manifest processing
β Consolidated Acceptance Criteria
- The system processes the M10 segment → the vessel name or flight number is extracted from the M10 segment and stored for manifest processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExtractVesselNameFlightNumber(["Start Step"])
E_ExtractVesselNameFlightNumber(["End Step"])
N_ExtractVesselNameFlightNumber_Node0{"The system processes the M10
segment"}:::decision N_ExtractVesselNameFlightNumber_Node0_action["The vessel name or flight number is
extracted from the M10 segment and
stored for manifest processing"]:::main N_ExtractVesselNameFlightNumber_Node0 -- Yes --> N_ExtractVesselNameFlightNumber_Node0_action N_ExtractVesselNameFlightNumber_Node0_action --> E_ExtractVesselNameFlightNumber S_ExtractVesselNameFlightNumber --> N_ExtractVesselNameFlightNumber_Node0 N_ExtractVesselNameFlightNumber_Node0 -- No --> E_ExtractVesselNameFlightNumber
segment"}:::decision N_ExtractVesselNameFlightNumber_Node0_action["The vessel name or flight number is
extracted from the M10 segment and
stored for manifest processing"]:::main N_ExtractVesselNameFlightNumber_Node0 -- Yes --> N_ExtractVesselNameFlightNumber_Node0_action N_ExtractVesselNameFlightNumber_Node0_action --> E_ExtractVesselNameFlightNumber S_ExtractVesselNameFlightNumber --> N_ExtractVesselNameFlightNumber_Node0 N_ExtractVesselNameFlightNumber_Node0 -- No --> E_ExtractVesselNameFlightNumber
File: GCX016.cbl
GIVEN:
An M10 manifest segment is received
WHEN:
The system processes the M10 segment
THEN:
- The vessel name or flight number is extracted from the m10 segment
- Stored for manifest processing
β Consolidated Acceptance Criteria
- The system processes the M10 segment → the voyage or flight number is extracted from the M10 segment and stored for manifest processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExtractVoyageFlightNumber(["Start Step"])
E_ExtractVoyageFlightNumber(["End Step"])
N_ExtractVoyageFlightNumber_Node0{"The system processes the M10
segment"}:::decision N_ExtractVoyageFlightNumber_Node0_action["The voyage or flight number is
extracted from the M10 segment and
stored for manifest processing"]:::main N_ExtractVoyageFlightNumber_Node0 -- Yes --> N_ExtractVoyageFlightNumber_Node0_action N_ExtractVoyageFlightNumber_Node0_action --> E_ExtractVoyageFlightNumber S_ExtractVoyageFlightNumber --> N_ExtractVoyageFlightNumber_Node0 N_ExtractVoyageFlightNumber_Node0 -- No --> E_ExtractVoyageFlightNumber
segment"}:::decision N_ExtractVoyageFlightNumber_Node0_action["The voyage or flight number is
extracted from the M10 segment and
stored for manifest processing"]:::main N_ExtractVoyageFlightNumber_Node0 -- Yes --> N_ExtractVoyageFlightNumber_Node0_action N_ExtractVoyageFlightNumber_Node0_action --> E_ExtractVoyageFlightNumber S_ExtractVoyageFlightNumber --> N_ExtractVoyageFlightNumber_Node0 N_ExtractVoyageFlightNumber_Node0 -- No --> E_ExtractVoyageFlightNumber
File: GCX016.cbl
GIVEN:
An M10 manifest segment is received
WHEN:
The system processes the M10 segment
THEN:
- The voyage or flight number is extracted from the m10 segment
- Stored for manifest processing
β Consolidated Acceptance Criteria
- The system processes the M10 segment → the manifest quantity is extracted from the M10 segment and stored for manifest processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExtractManifestQuantity(["Start Step"])
E_ExtractManifestQuantity(["End Step"])
N_ExtractManifestQuantity_Node0{"The system processes the M10
segment"}:::decision N_ExtractManifestQuantity_Node0_action["The manifest quantity is extracted
from the M10 segment and stored for
manifest processing"]:::main N_ExtractManifestQuantity_Node0 -- Yes --> N_ExtractManifestQuantity_Node0_action N_ExtractManifestQuantity_Node0_action --> E_ExtractManifestQuantity S_ExtractManifestQuantity --> N_ExtractManifestQuantity_Node0 N_ExtractManifestQuantity_Node0 -- No --> E_ExtractManifestQuantity
segment"}:::decision N_ExtractManifestQuantity_Node0_action["The manifest quantity is extracted
from the M10 segment and stored for
manifest processing"]:::main N_ExtractManifestQuantity_Node0 -- Yes --> N_ExtractManifestQuantity_Node0_action N_ExtractManifestQuantity_Node0_action --> E_ExtractManifestQuantity S_ExtractManifestQuantity --> N_ExtractManifestQuantity_Node0 N_ExtractManifestQuantity_Node0 -- No --> E_ExtractManifestQuantity
File: GCX016.cbl
GIVEN:
An M10 manifest segment is received
WHEN:
The system processes the M10 segment
THEN:
- The manifest quantity is extracted from the m10 segment
- Stored for manifest processing
β Consolidated Acceptance Criteria
- The system processes the M10 segment → the manifest type code is extracted from the M10 segment and stored for manifest processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExtractManifestTypeCode(["Start Step"])
E_ExtractManifestTypeCode(["End Step"])
N_ExtractManifestTypeCode_Node0{"The system processes the M10
segment"}:::decision N_ExtractManifestTypeCode_Node0_action["The manifest type code is extracted
from the M10 segment and stored for
manifest processing"]:::main N_ExtractManifestTypeCode_Node0 -- Yes --> N_ExtractManifestTypeCode_Node0_action N_ExtractManifestTypeCode_Node0_action --> E_ExtractManifestTypeCode S_ExtractManifestTypeCode --> N_ExtractManifestTypeCode_Node0 N_ExtractManifestTypeCode_Node0 -- No --> E_ExtractManifestTypeCode
segment"}:::decision N_ExtractManifestTypeCode_Node0_action["The manifest type code is extracted
from the M10 segment and stored for
manifest processing"]:::main N_ExtractManifestTypeCode_Node0 -- Yes --> N_ExtractManifestTypeCode_Node0_action N_ExtractManifestTypeCode_Node0_action --> E_ExtractManifestTypeCode S_ExtractManifestTypeCode --> N_ExtractManifestTypeCode_Node0 N_ExtractManifestTypeCode_Node0 -- No --> E_ExtractManifestTypeCode
File: GCX016.cbl
GIVEN:
An M10 manifest segment is received
WHEN:
The system processes the M10 segment
THEN:
- The manifest type code is extracted from the m10 segment
- Stored for manifest processing
β Consolidated Acceptance Criteria
- The system processes the M10 segment → the condition response code is extracted from the M10 segment and stored for manifest processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExtractConditionResponseCode(["Start Step"])
E_ExtractConditionResponseCode(["End Step"])
N_ExtractConditionResponseCode_Node0{"The system processes the M10
segment"}:::decision N_ExtractConditionResponseCode_Node0_action["The condition response code is
extracted from the M10 segment and
stored for manifest processing"]:::main N_ExtractConditionResponseCode_Node0 -- Yes --> N_ExtractConditionResponseCode_Node0_action N_ExtractConditionResponseCode_Node0_action --> E_ExtractConditionResponseCode S_ExtractConditionResponseCode --> N_ExtractConditionResponseCode_Node0 N_ExtractConditionResponseCode_Node0 -- No --> E_ExtractConditionResponseCode
segment"}:::decision N_ExtractConditionResponseCode_Node0_action["The condition response code is
extracted from the M10 segment and
stored for manifest processing"]:::main N_ExtractConditionResponseCode_Node0 -- Yes --> N_ExtractConditionResponseCode_Node0_action N_ExtractConditionResponseCode_Node0_action --> E_ExtractConditionResponseCode S_ExtractConditionResponseCode --> N_ExtractConditionResponseCode_Node0 N_ExtractConditionResponseCode_Node0 -- No --> E_ExtractConditionResponseCode
File: GCX016.cbl
GIVEN:
An M10 manifest segment is received
WHEN:
The system processes the M10 segment
THEN:
- The condition response code is extracted from the m10 segment
- Stored for manifest processing
β Consolidated Acceptance Criteria
- The system validates the SCAC code format → the SCAC code is verified to meet standard format requirements or validation error is flagged
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ValidateSCACCodeFormat(["Start Step"])
E_ValidateSCACCodeFormat(["End Step"])
N_ValidateSCACCodeFormat_Node0{"The system validates the SCAC code
format"}:::decision N_ValidateSCACCodeFormat_Node0_action["The SCAC code is verified to meet
standard format requirements or
validation error is flagged"]:::main N_ValidateSCACCodeFormat_Node0 -- Yes --> N_ValidateSCACCodeFormat_Node0_action N_ValidateSCACCodeFormat_Node0_action --> E_ValidateSCACCodeFormat S_ValidateSCACCodeFormat --> N_ValidateSCACCodeFormat_Node0 N_ValidateSCACCodeFormat_Node0 -- No --> E_ValidateSCACCodeFormat
format"}:::decision N_ValidateSCACCodeFormat_Node0_action["The SCAC code is verified to meet
standard format requirements or
validation error is flagged"]:::main N_ValidateSCACCodeFormat_Node0 -- Yes --> N_ValidateSCACCodeFormat_Node0_action N_ValidateSCACCodeFormat_Node0_action --> E_ValidateSCACCodeFormat S_ValidateSCACCodeFormat --> N_ValidateSCACCodeFormat_Node0 N_ValidateSCACCodeFormat_Node0 -- No --> E_ValidateSCACCodeFormat
File: GCX016.cbl
GIVEN:
A SCAC code has been extracted from the M10 segment
WHEN:
The system validates the SCAC code format
THEN:
The SCAC code is verified to meet standard format requirements or validation error is flagged
β Consolidated Acceptance Criteria
- The system validates the transport type → the transport type is verified against valid transportation modes or validation error is flagged
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ValidateTransportType(["Start Step"])
E_ValidateTransportType(["End Step"])
N_ValidateTransportType_Node0{"The system validates the transport
type"}:::decision N_ValidateTransportType_Node0_action["The transport type is verified
against valid transportation modes
or validation error is flagged"]:::main N_ValidateTransportType_Node0 -- Yes --> N_ValidateTransportType_Node0_action N_ValidateTransportType_Node0_action --> E_ValidateTransportType S_ValidateTransportType --> N_ValidateTransportType_Node0 N_ValidateTransportType_Node0 -- No --> E_ValidateTransportType
type"}:::decision N_ValidateTransportType_Node0_action["The transport type is verified
against valid transportation modes
or validation error is flagged"]:::main N_ValidateTransportType_Node0 -- Yes --> N_ValidateTransportType_Node0_action N_ValidateTransportType_Node0_action --> E_ValidateTransportType S_ValidateTransportType --> N_ValidateTransportType_Node0 N_ValidateTransportType_Node0 -- No --> E_ValidateTransportType
File: GCX016.cbl
GIVEN:
A transport type has been extracted from the M10 segment
WHEN:
The system validates the transport type
THEN:
The transport type is verified against valid transportation modes or validation error is flagged
β Consolidated Acceptance Criteria
- The system validates the country code → the country code is verified against valid country identifiers or validation error is flagged
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ValidateCountryCode(["Start Step"])
E_ValidateCountryCode(["End Step"])
N_ValidateCountryCode_Node0{"The system validates the country
code"}:::decision N_ValidateCountryCode_Node0_action["The country code is verified
against valid country identifiers or
validation error is flagged"]:::main N_ValidateCountryCode_Node0 -- Yes --> N_ValidateCountryCode_Node0_action N_ValidateCountryCode_Node0_action --> E_ValidateCountryCode S_ValidateCountryCode --> N_ValidateCountryCode_Node0 N_ValidateCountryCode_Node0 -- No --> E_ValidateCountryCode
code"}:::decision N_ValidateCountryCode_Node0_action["The country code is verified
against valid country identifiers or
validation error is flagged"]:::main N_ValidateCountryCode_Node0 -- Yes --> N_ValidateCountryCode_Node0_action N_ValidateCountryCode_Node0_action --> E_ValidateCountryCode S_ValidateCountryCode --> N_ValidateCountryCode_Node0 N_ValidateCountryCode_Node0 -- No --> E_ValidateCountryCode
File: GCX016.cbl
GIVEN:
A country code has been extracted from the M10 segment
WHEN:
The system validates the country code
THEN:
The country code is verified against valid country identifiers or validation error is flagged
β Consolidated Acceptance Criteria
- The system checks for required field completeness → if all required fields are present and valid, processing continues to build manifest record, otherwise missing data error is generated
- The system validates the extracted data elements → if all required fields are present, processing continues; otherwise, an error is logged and integration is skipped
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AllRequiredFieldsPresent(["Start Step"])
E_AllRequiredFieldsPresent(["End Step"])
N_AllRequiredFieldsPresent_Node0{"The system checks for required
field completeness"}:::decision N_AllRequiredFieldsPresent_Node0_action["If all required fields are present
and valid, processing continues to
build manifest record, otherwise
missing data error is generated"]:::main N_AllRequiredFieldsPresent_Node0 -- Yes --> N_AllRequiredFieldsPresent_Node0_action N_AllRequiredFieldsPresent_Node0_action --> E_AllRequiredFieldsPresent S_AllRequiredFieldsPresent --> N_AllRequiredFieldsPresent_Node0 N_AllRequiredFieldsPresent_Node1{"The system validates the extracted
data elements"}:::decision N_AllRequiredFieldsPresent_Node1_action["If all required fields are present,
processing continues otherwise, an
error is logged and integration is
skipped"]:::main N_AllRequiredFieldsPresent_Node1 -- Yes --> N_AllRequiredFieldsPresent_Node1_action N_AllRequiredFieldsPresent_Node1_action --> E_AllRequiredFieldsPresent N_AllRequiredFieldsPresent_Node0 -- No --> N_AllRequiredFieldsPresent_Node1 N_AllRequiredFieldsPresent_Node1 -- No --> E_AllRequiredFieldsPresent
field completeness"}:::decision N_AllRequiredFieldsPresent_Node0_action["If all required fields are present
and valid, processing continues to
build manifest record, otherwise
missing data error is generated"]:::main N_AllRequiredFieldsPresent_Node0 -- Yes --> N_AllRequiredFieldsPresent_Node0_action N_AllRequiredFieldsPresent_Node0_action --> E_AllRequiredFieldsPresent S_AllRequiredFieldsPresent --> N_AllRequiredFieldsPresent_Node0 N_AllRequiredFieldsPresent_Node1{"The system validates the extracted
data elements"}:::decision N_AllRequiredFieldsPresent_Node1_action["If all required fields are present,
processing continues otherwise, an
error is logged and integration is
skipped"]:::main N_AllRequiredFieldsPresent_Node1 -- Yes --> N_AllRequiredFieldsPresent_Node1_action N_AllRequiredFieldsPresent_Node1_action --> E_AllRequiredFieldsPresent N_AllRequiredFieldsPresent_Node0 -- No --> N_AllRequiredFieldsPresent_Node1 N_AllRequiredFieldsPresent_Node1 -- No --> E_AllRequiredFieldsPresent
File: GCX016.cbl
GIVEN:
All M10 segment fields have been extracted and validated
WHEN:
The system checks for required field completeness
THEN:
- If all required fields are present
- Valid, processing continues to build manifest record, otherwise missing data error is generated
File: GCX016.cbl
GIVEN:
M10 manifest segment data has been extracted
WHEN:
The system validates the extracted data elements
THEN:
- If all required fields are present, processing continues; otherwise, an error is logged
- Integration is skipped
β Consolidated Acceptance Criteria
- The system builds the manifest information record → a complete manifest record is constructed with SCAC code, transport type, country code, vessel information, voyage number, quantity, manifest type, and condition response code
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_BuildManifestInformationRecord(["Start Step"])
E_BuildManifestInformationRecord(["End Step"])
N_BuildManifestInformationRecord_Node0{"The system builds the manifest
information record"}:::decision N_BuildManifestInformationRecord_Node0_action["A complete manifest record is
constructed with SCAC code,
transport type, country code, vessel
information, voyage number,
quantity, manifest type, and
condition response code"]:::main N_BuildManifestInformationRecord_Node0 -- Yes --> N_BuildManifestInformationRecord_Node0_action N_BuildManifestInformationRecord_Node0_action --> E_BuildManifestInformationRecord S_BuildManifestInformationRecord --> N_BuildManifestInformationRecord_Node0 N_BuildManifestInformationRecord_Node0 -- No --> E_BuildManifestInformationRecord
information record"}:::decision N_BuildManifestInformationRecord_Node0_action["A complete manifest record is
constructed with SCAC code,
transport type, country code, vessel
information, voyage number,
quantity, manifest type, and
condition response code"]:::main N_BuildManifestInformationRecord_Node0 -- Yes --> N_BuildManifestInformationRecord_Node0_action N_BuildManifestInformationRecord_Node0_action --> E_BuildManifestInformationRecord S_BuildManifestInformationRecord --> N_BuildManifestInformationRecord_Node0 N_BuildManifestInformationRecord_Node0 -- No --> E_BuildManifestInformationRecord
File: GCX016.cbl
GIVEN:
All required M10 segment fields are present and validated
WHEN:
The system builds the manifest information record
THEN:
A complete manifest record is constructed with SCAC code, transport type, country code, vessel information, voyage number, quantity, manifest type, and condition response code
β Consolidated Acceptance Criteria
- The system integrates the manifest into the cargo record → the manifest information is linked and stored with the corresponding cargo record
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IntegrateintoCargoRecord(["Start Step"])
E_IntegrateintoCargoRecord(["End Step"])
N_IntegrateintoCargoRecord_Node0{"The system integrates the manifest
into the cargo record"}:::decision N_IntegrateintoCargoRecord_Node0_action["The manifest information is linked
and stored with the corresponding
cargo record"]:::main N_IntegrateintoCargoRecord_Node0 -- Yes --> N_IntegrateintoCargoRecord_Node0_action N_IntegrateintoCargoRecord_Node0_action --> E_IntegrateintoCargoRecord S_IntegrateintoCargoRecord --> N_IntegrateintoCargoRecord_Node0 N_IntegrateintoCargoRecord_Node0 -- No --> E_IntegrateintoCargoRecord
into the cargo record"}:::decision N_IntegrateintoCargoRecord_Node0_action["The manifest information is linked
and stored with the corresponding
cargo record"]:::main N_IntegrateintoCargoRecord_Node0 -- Yes --> N_IntegrateintoCargoRecord_Node0_action N_IntegrateintoCargoRecord_Node0_action --> E_IntegrateintoCargoRecord S_IntegrateintoCargoRecord --> N_IntegrateintoCargoRecord_Node0 N_IntegrateintoCargoRecord_Node0 -- No --> E_IntegrateintoCargoRecord
File: GCX016.cbl
GIVEN:
A complete manifest information record has been built
WHEN:
The system integrates the manifest into the cargo record
THEN:
- The manifest information is linked
- Stored with the corresponding cargo record
β Consolidated Acceptance Criteria
- The system logs the manifest integration → an audit log entry is created documenting the successful manifest integration with relevant details
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogManifestIntegration(["Start Step"])
E_LogManifestIntegration(["End Step"])
N_LogManifestIntegration_Node0{"The system logs the manifest
integration"}:::decision N_LogManifestIntegration_Node0_action["An audit log entry is created
documenting the successful manifest
integration with relevant details"]:::main N_LogManifestIntegration_Node0 -- Yes --> N_LogManifestIntegration_Node0_action N_LogManifestIntegration_Node0_action --> E_LogManifestIntegration S_LogManifestIntegration --> N_LogManifestIntegration_Node0 N_LogManifestIntegration_Node0 -- No --> E_LogManifestIntegration
integration"}:::decision N_LogManifestIntegration_Node0_action["An audit log entry is created
documenting the successful manifest
integration with relevant details"]:::main N_LogManifestIntegration_Node0 -- Yes --> N_LogManifestIntegration_Node0_action N_LogManifestIntegration_Node0_action --> E_LogManifestIntegration S_LogManifestIntegration --> N_LogManifestIntegration_Node0 N_LogManifestIntegration_Node0 -- No --> E_LogManifestIntegration
File: GCX016.cbl
GIVEN:
Manifest information has been successfully integrated and status updated
WHEN:
The system logs the manifest integration
THEN:
An audit log entry is created documenting the successful manifest integration with relevant details
β Consolidated Acceptance Criteria
- The system detects missing or invalid data → a missing data error is generated identifying the specific fields that are missing or invalid
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GenerateMissingDataError(["Start Step"])
E_GenerateMissingDataError(["End Step"])
N_GenerateMissingDataError_Node0{"The system detects missing or
invalid data"}:::decision N_GenerateMissingDataError_Node0_action["A missing data error is generated
identifying the specific fields that
are missing or invalid"]:::exclusion N_GenerateMissingDataError_Node0 -- Yes -->|Alternative| N_GenerateMissingDataError_Node0_action N_GenerateMissingDataError_Node0_action --> E_GenerateMissingDataError S_GenerateMissingDataError --> N_GenerateMissingDataError_Node0 N_GenerateMissingDataError_Node0 -- No --> E_GenerateMissingDataError
invalid data"}:::decision N_GenerateMissingDataError_Node0_action["A missing data error is generated
identifying the specific fields that
are missing or invalid"]:::exclusion N_GenerateMissingDataError_Node0 -- Yes -->|Alternative| N_GenerateMissingDataError_Node0_action N_GenerateMissingDataError_Node0_action --> E_GenerateMissingDataError S_GenerateMissingDataError --> N_GenerateMissingDataError_Node0 N_GenerateMissingDataError_Node0 -- No --> E_GenerateMissingDataError
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
Required M10 segment fields are missing or validation has failed
WHEN:
The system detects missing or invalid data
THEN:
A missing data error is generated identifying the specific fields that are missing or invalid
β Consolidated Acceptance Criteria
- The system looks up the disposition code in the DC table → the disposition code details are retrieved including Merlin messages and processing flags
- The system looks up the disposition code in the DC table → the system retrieves disposition code details including KCSM processing requirements and Merlin message configuration
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RetrieveDispositionCodefromDCTable(["Start Step"])
E_RetrieveDispositionCodefromDCTable(["End Step"])
N_RetrieveDispositionCodefromDCTable_Node0{"The system looks up the disposition
code in the DC table"}:::decision N_RetrieveDispositionCodefromDCTable_Node0_action["The disposition code details are
retrieved including Merlin messages
and processing flags"]:::main N_RetrieveDispositionCodefromDCTable_Node0 -- Yes --> N_RetrieveDispositionCodefromDCTable_Node0_action N_RetrieveDispositionCodefromDCTable_Node0_action --> E_RetrieveDispositionCodefromDCTable S_RetrieveDispositionCodefromDCTable --> N_RetrieveDispositionCodefromDCTable_Node0 N_RetrieveDispositionCodefromDCTable_Node1{"The system looks up the disposition
code in the DC table"}:::decision N_RetrieveDispositionCodefromDCTable_Node1_action["The system retrieves disposition
code details including KCSM
processing requirements and Merlin
message configuration"]:::main N_RetrieveDispositionCodefromDCTable_Node1 -- Yes --> N_RetrieveDispositionCodefromDCTable_Node1_action N_RetrieveDispositionCodefromDCTable_Node1_action --> E_RetrieveDispositionCodefromDCTable N_RetrieveDispositionCodefromDCTable_Node0 -- No --> N_RetrieveDispositionCodefromDCTable_Node1 N_RetrieveDispositionCodefromDCTable_Node1 -- No --> E_RetrieveDispositionCodefromDCTable
code in the DC table"}:::decision N_RetrieveDispositionCodefromDCTable_Node0_action["The disposition code details are
retrieved including Merlin messages
and processing flags"]:::main N_RetrieveDispositionCodefromDCTable_Node0 -- Yes --> N_RetrieveDispositionCodefromDCTable_Node0_action N_RetrieveDispositionCodefromDCTable_Node0_action --> E_RetrieveDispositionCodefromDCTable S_RetrieveDispositionCodefromDCTable --> N_RetrieveDispositionCodefromDCTable_Node0 N_RetrieveDispositionCodefromDCTable_Node1{"The system looks up the disposition
code in the DC table"}:::decision N_RetrieveDispositionCodefromDCTable_Node1_action["The system retrieves disposition
code details including KCSM
processing requirements and Merlin
message configuration"]:::main N_RetrieveDispositionCodefromDCTable_Node1 -- Yes --> N_RetrieveDispositionCodefromDCTable_Node1_action N_RetrieveDispositionCodefromDCTable_Node1_action --> E_RetrieveDispositionCodefromDCTable N_RetrieveDispositionCodefromDCTable_Node0 -- No --> N_RetrieveDispositionCodefromDCTable_Node1 N_RetrieveDispositionCodefromDCTable_Node1 -- No --> E_RetrieveDispositionCodefromDCTable
File: GCX016.cbl
GIVEN:
A disposition code is provided from the X4 segment
WHEN:
The system looks up the disposition code in the DC table
THEN:
- The disposition code details are retrieved including merlin messages
- Processing flags
File: GCX016.cbl
GIVEN:
A disposition code needs to be processed
WHEN:
The system looks up the disposition code in the DC table
THEN:
- The system retrieves disposition code details including kcsm processing requirements
- Merlin message configuration
β Consolidated Acceptance Criteria
- The disposition code is not found in the DC table → an error message is generated indicating the code is not found
- The system checks if the disposition code was found in the table → if disposition code is found, system proceeds to extract code details; if not found, system sets invalid disposition code flag and generates error
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_DispositionCodeFound(["Start Step"])
E_DispositionCodeFound(["End Step"])
N_DispositionCodeFound_Node0{"The disposition code is not found
in the DC table"}:::decision N_DispositionCodeFound_Node0_action["An error message is generated
indicating the code is not found"]:::main N_DispositionCodeFound_Node0 -- Yes --> N_DispositionCodeFound_Node0_action N_DispositionCodeFound_Node0_action --> E_DispositionCodeFound S_DispositionCodeFound --> N_DispositionCodeFound_Node0 N_DispositionCodeFound_Node1{"The system checks if the
disposition code was found in the
table"}:::decision N_DispositionCodeFound_Node1_action["If disposition code is found,
system proceeds to extract code
details if not found, system sets
invalid disposition code flag and
generates error"]:::main N_DispositionCodeFound_Node1 -- Yes --> N_DispositionCodeFound_Node1_action N_DispositionCodeFound_Node1_action --> E_DispositionCodeFound N_DispositionCodeFound_Node0 -- No --> N_DispositionCodeFound_Node1 N_DispositionCodeFound_Node1 -- No --> E_DispositionCodeFound
in the DC table"}:::decision N_DispositionCodeFound_Node0_action["An error message is generated
indicating the code is not found"]:::main N_DispositionCodeFound_Node0 -- Yes --> N_DispositionCodeFound_Node0_action N_DispositionCodeFound_Node0_action --> E_DispositionCodeFound S_DispositionCodeFound --> N_DispositionCodeFound_Node0 N_DispositionCodeFound_Node1{"The system checks if the
disposition code was found in the
table"}:::decision N_DispositionCodeFound_Node1_action["If disposition code is found,
system proceeds to extract code
details if not found, system sets
invalid disposition code flag and
generates error"]:::main N_DispositionCodeFound_Node1 -- Yes --> N_DispositionCodeFound_Node1_action N_DispositionCodeFound_Node1_action --> E_DispositionCodeFound N_DispositionCodeFound_Node0 -- No --> N_DispositionCodeFound_Node1 N_DispositionCodeFound_Node1 -- No --> E_DispositionCodeFound
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
A disposition code lookup has been performed
WHEN:
The disposition code is not found in the DC table
THEN:
An error message is generated indicating the code is not found
File: GCX016.cbl
GIVEN:
A disposition code lookup has been performed against the DC table
WHEN:
The system checks if the disposition code was found in the table
THEN:
- If disposition code is found, system proceeds to extract code details; if not found, system sets invalid disposition code flag
- Generates error
β Consolidated Acceptance Criteria
- The disposition code action is ARL → the system generates an auto release message and sets appropriate release flags
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ARLAutoReleaseProcessing(["Start Step"])
E_ARLAutoReleaseProcessing(["End Step"])
N_ARLAutoReleaseProcessing_Node0{"The disposition code action is ARL"}:::decision
N_ARLAutoReleaseProcessing_Node0_action["The system generates an auto
release message and sets appropriate
release flags"]:::main N_ARLAutoReleaseProcessing_Node0 -- Yes --> N_ARLAutoReleaseProcessing_Node0_action N_ARLAutoReleaseProcessing_Node0_action --> E_ARLAutoReleaseProcessing S_ARLAutoReleaseProcessing --> N_ARLAutoReleaseProcessing_Node0 N_ARLAutoReleaseProcessing_Node0 -- No --> E_ARLAutoReleaseProcessing
release message and sets appropriate
release flags"]:::main N_ARLAutoReleaseProcessing_Node0 -- Yes --> N_ARLAutoReleaseProcessing_Node0_action N_ARLAutoReleaseProcessing_Node0_action --> E_ARLAutoReleaseProcessing S_ARLAutoReleaseProcessing --> N_ARLAutoReleaseProcessing_Node0 N_ARLAutoReleaseProcessing_Node0 -- No --> E_ARLAutoReleaseProcessing
File: GCX016.cbl
GIVEN:
A disposition code with ARL (Auto Release) type is being processed
WHEN:
The disposition code action is ARL
THEN:
- The system generates an auto release message
- Sets appropriate release flags
β Consolidated Acceptance Criteria
- The disposition code action is MRL → the system processes the manual release request and clears destination index
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MRLManualReleaseforCPRS(["Start Step"])
E_MRLManualReleaseforCPRS(["End Step"])
N_MRLManualReleaseforCPRS_Node0{"The disposition code action is MRL"}:::decision
N_MRLManualReleaseforCPRS_Node0_action["The system processes the manual
release request and clears
destination index"]:::main N_MRLManualReleaseforCPRS_Node0 -- Yes --> N_MRLManualReleaseforCPRS_Node0_action N_MRLManualReleaseforCPRS_Node0_action --> E_MRLManualReleaseforCPRS S_MRLManualReleaseforCPRS --> N_MRLManualReleaseforCPRS_Node0 N_MRLManualReleaseforCPRS_Node0 -- No --> E_MRLManualReleaseforCPRS
release request and clears
destination index"]:::main N_MRLManualReleaseforCPRS_Node0 -- Yes --> N_MRLManualReleaseforCPRS_Node0_action N_MRLManualReleaseforCPRS_Node0_action --> E_MRLManualReleaseforCPRS S_MRLManualReleaseforCPRS --> N_MRLManualReleaseforCPRS_Node0 N_MRLManualReleaseforCPRS_Node0 -- No --> E_MRLManualReleaseforCPRS
File: GCX016.cbl
GIVEN:
A disposition code with MRL (Manual Release) type is being processed for CPRS cargo
WHEN:
The disposition code action is MRL
THEN:
- The system processes the manual release request
- Clears destination index
β Consolidated Acceptance Criteria
- The disposition code action is DC removal → the system removes the specified disposition code from the cargo status array
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ProcessRemovalCodes(["Start Step"])
E_ProcessRemovalCodes(["End Step"])
N_ProcessRemovalCodes_Node0{"The disposition code action is DC
removal"}:::decision N_ProcessRemovalCodes_Node0_action["The system removes the specified
disposition code from the cargo
status array"]:::main N_ProcessRemovalCodes_Node0 -- Yes --> N_ProcessRemovalCodes_Node0_action N_ProcessRemovalCodes_Node0_action --> E_ProcessRemovalCodes S_ProcessRemovalCodes --> N_ProcessRemovalCodes_Node0 N_ProcessRemovalCodes_Node0 -- No --> E_ProcessRemovalCodes
removal"}:::decision N_ProcessRemovalCodes_Node0_action["The system removes the specified
disposition code from the cargo
status array"]:::main N_ProcessRemovalCodes_Node0 -- Yes --> N_ProcessRemovalCodes_Node0_action N_ProcessRemovalCodes_Node0_action --> E_ProcessRemovalCodes S_ProcessRemovalCodes --> N_ProcessRemovalCodes_Node0 N_ProcessRemovalCodes_Node0 -- No --> E_ProcessRemovalCodes
File: GCX016.cbl
GIVEN:
A disposition code with removal type is being processed
WHEN:
The disposition code action is DC removal
THEN:
The system removes the specified disposition code from the cargo status array
β Consolidated Acceptance Criteria
- The disposition code action is DC hold → the system adds the hold code to status array and sets location information from the message
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ProcessHoldCodeswithLocation(["Start Step"])
E_ProcessHoldCodeswithLocation(["End Step"])
N_ProcessHoldCodeswithLocation_Node0{"The disposition code action is DC
hold"}:::decision N_ProcessHoldCodeswithLocation_Node0_action["The system adds the hold code to
status array and sets location
information from the message"]:::main N_ProcessHoldCodeswithLocation_Node0 -- Yes --> N_ProcessHoldCodeswithLocation_Node0_action N_ProcessHoldCodeswithLocation_Node0_action --> E_ProcessHoldCodeswithLocation S_ProcessHoldCodeswithLocation --> N_ProcessHoldCodeswithLocation_Node0 N_ProcessHoldCodeswithLocation_Node0 -- No --> E_ProcessHoldCodeswithLocation
hold"}:::decision N_ProcessHoldCodeswithLocation_Node0_action["The system adds the hold code to
status array and sets location
information from the message"]:::main N_ProcessHoldCodeswithLocation_Node0 -- Yes --> N_ProcessHoldCodeswithLocation_Node0_action N_ProcessHoldCodeswithLocation_Node0_action --> E_ProcessHoldCodeswithLocation S_ProcessHoldCodeswithLocation --> N_ProcessHoldCodeswithLocation_Node0 N_ProcessHoldCodeswithLocation_Node0 -- No --> E_ProcessHoldCodeswithLocation
File: GCX016.cbl
GIVEN:
A disposition code with hold type is being processed
WHEN:
The disposition code action is DC hold
THEN:
- The system adds the hold code to status array
- Sets location information from the message
β Consolidated Acceptance Criteria
- The disposition code action is DC release → the system adds the release code to status array, sets released flag, and updates release quantities
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ProcessReleaseCodeswithReleasedFlag(["Start Step"])
E_ProcessReleaseCodeswithReleasedFlag(["End Step"])
N_ProcessReleaseCodeswithReleasedFlag_Node0{"The disposition code action is DC
release"}:::decision N_ProcessReleaseCodeswithReleasedFlag_Node0_action["The system adds the release code to
status array, sets released flag,
and updates release quantities"]:::main N_ProcessReleaseCodeswithReleasedFlag_Node0 -- Yes --> N_ProcessReleaseCodeswithReleasedFlag_Node0_action N_ProcessReleaseCodeswithReleasedFlag_Node0_action --> E_ProcessReleaseCodeswithReleasedFlag S_ProcessReleaseCodeswithReleasedFlag --> N_ProcessReleaseCodeswithReleasedFlag_Node0 N_ProcessReleaseCodeswithReleasedFlag_Node0 -- No --> E_ProcessReleaseCodeswithReleasedFlag
release"}:::decision N_ProcessReleaseCodeswithReleasedFlag_Node0_action["The system adds the release code to
status array, sets released flag,
and updates release quantities"]:::main N_ProcessReleaseCodeswithReleasedFlag_Node0 -- Yes --> N_ProcessReleaseCodeswithReleasedFlag_Node0_action N_ProcessReleaseCodeswithReleasedFlag_Node0_action --> E_ProcessReleaseCodeswithReleasedFlag S_ProcessReleaseCodeswithReleasedFlag --> N_ProcessReleaseCodeswithReleasedFlag_Node0 N_ProcessReleaseCodeswithReleasedFlag_Node0 -- No --> E_ProcessReleaseCodeswithReleasedFlag
File: GCX016.cbl
GIVEN:
A disposition code with release type is being processed
WHEN:
The disposition code action is DC release
THEN:
The system adds the release code to status array, sets released flag, and updates release quantities
β Consolidated Acceptance Criteria
- The disposition code action is DC status info → the system adds the informational code to status array without changing cargo release status
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ProcessStatusInformationCodes(["Start Step"])
E_ProcessStatusInformationCodes(["End Step"])
N_ProcessStatusInformationCodes_Node0{"The disposition code action is DC
status info"}:::decision N_ProcessStatusInformationCodes_Node0_action["The system adds the informational
code to status array without
changing cargo release status"]:::main N_ProcessStatusInformationCodes_Node0 -- Yes --> N_ProcessStatusInformationCodes_Node0_action N_ProcessStatusInformationCodes_Node0_action --> E_ProcessStatusInformationCodes S_ProcessStatusInformationCodes --> N_ProcessStatusInformationCodes_Node0 N_ProcessStatusInformationCodes_Node0 -- No --> E_ProcessStatusInformationCodes
status info"}:::decision N_ProcessStatusInformationCodes_Node0_action["The system adds the informational
code to status array without
changing cargo release status"]:::main N_ProcessStatusInformationCodes_Node0 -- Yes --> N_ProcessStatusInformationCodes_Node0_action N_ProcessStatusInformationCodes_Node0_action --> E_ProcessStatusInformationCodes S_ProcessStatusInformationCodes --> N_ProcessStatusInformationCodes_Node0 N_ProcessStatusInformationCodes_Node0 -- No --> E_ProcessStatusInformationCodes
File: GCX016.cbl
GIVEN:
A disposition code with information type is being processed
WHEN:
The disposition code action is DC status info
THEN:
The system adds the informational code to status array without changing cargo release status
β Consolidated Acceptance Criteria
- The same disposition code already exists in the status array → the system skips adding the duplicate code and continues processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CheckforDuplicatesinStatusArray(["Start Step"])
E_CheckforDuplicatesinStatusArray(["End Step"])
N_CheckforDuplicatesinStatusArray_Node0{"The same disposition code already
exists in the status array"}:::decision N_CheckforDuplicatesinStatusArray_Node0_action["The system skips adding the
duplicate code and continues
processing"]:::main N_CheckforDuplicatesinStatusArray_Node0 -- Yes --> N_CheckforDuplicatesinStatusArray_Node0_action N_CheckforDuplicatesinStatusArray_Node0_action --> E_CheckforDuplicatesinStatusArray S_CheckforDuplicatesinStatusArray --> N_CheckforDuplicatesinStatusArray_Node0 N_CheckforDuplicatesinStatusArray_Node0 -- No --> E_CheckforDuplicatesinStatusArray
exists in the status array"}:::decision N_CheckforDuplicatesinStatusArray_Node0_action["The system skips adding the
duplicate code and continues
processing"]:::main N_CheckforDuplicatesinStatusArray_Node0 -- Yes --> N_CheckforDuplicatesinStatusArray_Node0_action N_CheckforDuplicatesinStatusArray_Node0_action --> E_CheckforDuplicatesinStatusArray S_CheckforDuplicatesinStatusArray --> N_CheckforDuplicatesinStatusArray_Node0 N_CheckforDuplicatesinStatusArray_Node0 -- No --> E_CheckforDuplicatesinStatusArray
File: GCX016.cbl
GIVEN:
A disposition code is being added to the cargo status array
WHEN:
The same disposition code already exists in the status array
THEN:
- The system skips adding the duplicate code
- Continues processing
β Consolidated Acceptance Criteria
- The status array is at maximum capacity → the system generates an array overflow error and stops processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CheckArrayCapacity(["Start Step"])
E_CheckArrayCapacity(["End Step"])
N_CheckArrayCapacity_Node0{"The status array is at maximum
capacity"}:::decision N_CheckArrayCapacity_Node0_action["The system generates an array
overflow error and stops processing"]:::main N_CheckArrayCapacity_Node0 -- Yes --> N_CheckArrayCapacity_Node0_action N_CheckArrayCapacity_Node0_action --> E_CheckArrayCapacity S_CheckArrayCapacity --> N_CheckArrayCapacity_Node0 N_CheckArrayCapacity_Node0 -- No --> E_CheckArrayCapacity
capacity"}:::decision N_CheckArrayCapacity_Node0_action["The system generates an array
overflow error and stops processing"]:::main N_CheckArrayCapacity_Node0 -- Yes --> N_CheckArrayCapacity_Node0_action N_CheckArrayCapacity_Node0_action --> E_CheckArrayCapacity S_CheckArrayCapacity --> N_CheckArrayCapacity_Node0 N_CheckArrayCapacity_Node0 -- No --> E_CheckArrayCapacity
File: GCX016.cbl
GIVEN:
A new disposition code needs to be added to the status array
WHEN:
The status array is at maximum capacity
THEN:
- The system generates an array overflow error
- Stops processing
β Consolidated Acceptance Criteria
- Counterpart disposition codes exist in the status array → the system removes the counterpart codes before adding the new disposition code
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ProcessCounterpartCodeRemoval(["Start Step"])
E_ProcessCounterpartCodeRemoval(["End Step"])
N_ProcessCounterpartCodeRemoval_Node0{"Counterpart disposition codes exist
in the status array"}:::decision N_ProcessCounterpartCodeRemoval_Node0_action["The system removes the counterpart
codes before adding the new
disposition code"]:::main N_ProcessCounterpartCodeRemoval_Node0 -- Yes --> N_ProcessCounterpartCodeRemoval_Node0_action N_ProcessCounterpartCodeRemoval_Node0_action --> E_ProcessCounterpartCodeRemoval S_ProcessCounterpartCodeRemoval --> N_ProcessCounterpartCodeRemoval_Node0 N_ProcessCounterpartCodeRemoval_Node0 -- No --> E_ProcessCounterpartCodeRemoval
in the status array"}:::decision N_ProcessCounterpartCodeRemoval_Node0_action["The system removes the counterpart
codes before adding the new
disposition code"]:::main N_ProcessCounterpartCodeRemoval_Node0 -- Yes --> N_ProcessCounterpartCodeRemoval_Node0_action N_ProcessCounterpartCodeRemoval_Node0_action --> E_ProcessCounterpartCodeRemoval S_ProcessCounterpartCodeRemoval --> N_ProcessCounterpartCodeRemoval_Node0 N_ProcessCounterpartCodeRemoval_Node0 -- No --> E_ProcessCounterpartCodeRemoval
File: GCX016.cbl
GIVEN:
A hold or release disposition code is being added to the status array
WHEN:
Counterpart disposition codes exist in the status array
THEN:
The system removes the counterpart codes before adding the new disposition code
β Consolidated Acceptance Criteria
- If the search results → if no matches are found, end the counterpart removal process, otherwise proceed with detailed matching validation
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MatchFoundinArray(["Start Step"])
E_MatchFoundinArray(["End Step"])
N_MatchFoundinArray_Node0{"The system evaluates the search
results"}:::decision N_MatchFoundinArray_Node0_action["If no matches are found, end the
counterpart removal process,
otherwise proceed with detailed
matching validation"]:::main N_MatchFoundinArray_Node0 -- Yes --> N_MatchFoundinArray_Node0_action N_MatchFoundinArray_Node0_action --> E_MatchFoundinArray S_MatchFoundinArray --> N_MatchFoundinArray_Node0 N_MatchFoundinArray_Node0 -- No --> E_MatchFoundinArray
results"}:::decision N_MatchFoundinArray_Node0_action["If no matches are found, end the
counterpart removal process,
otherwise proceed with detailed
matching validation"]:::main N_MatchFoundinArray_Node0 -- Yes --> N_MatchFoundinArray_Node0_action N_MatchFoundinArray_Node0_action --> E_MatchFoundinArray S_MatchFoundinArray --> N_MatchFoundinArray_Node0 N_MatchFoundinArray_Node0 -- No --> E_MatchFoundinArray
File: GCX016.cbl
GIVEN:
The status array has been searched for counterpart codes
WHEN:
The system evaluates the search results
THEN:
If no matches are found, end the counterpart removal process, otherwise proceed with detailed matching validation
β Consolidated Acceptance Criteria
- The system compares status information fields → if status info matches exactly, mark the element for removal, otherwise continue with entry number validation
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_StatusInfoMatches(["Start Step"])
E_StatusInfoMatches(["End Step"])
N_StatusInfoMatches_Node0{"The system compares status
information fields"}:::decision N_StatusInfoMatches_Node0_action["If status info matches exactly,
mark the element for removal,
otherwise continue with entry number
validation"]:::main N_StatusInfoMatches_Node0 -- Yes --> N_StatusInfoMatches_Node0_action N_StatusInfoMatches_Node0_action --> E_StatusInfoMatches S_StatusInfoMatches --> N_StatusInfoMatches_Node0 N_StatusInfoMatches_Node0 -- No --> E_StatusInfoMatches
information fields"}:::decision N_StatusInfoMatches_Node0_action["If status info matches exactly,
mark the element for removal,
otherwise continue with entry number
validation"]:::main N_StatusInfoMatches_Node0 -- Yes --> N_StatusInfoMatches_Node0_action N_StatusInfoMatches_Node0_action --> E_StatusInfoMatches S_StatusInfoMatches --> N_StatusInfoMatches_Node0 N_StatusInfoMatches_Node0 -- No --> E_StatusInfoMatches
File: GCX016.cbl
GIVEN:
A potential counterpart code match has been found in the status array
WHEN:
The system compares status information fields
THEN:
If status info matches exactly, mark the element for removal, otherwise continue with entry number validation
β Consolidated Acceptance Criteria
- The system compares entry number fields → if entry numbers match exactly, mark the element for removal, otherwise continue with quantity validation
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_EntryNumberMatches(["Start Step"])
E_EntryNumberMatches(["End Step"])
N_EntryNumberMatches_Node0{"The system compares entry number
fields"}:::decision N_EntryNumberMatches_Node0_action["If entry numbers match exactly,
mark the element for removal,
otherwise continue with quantity
validation"]:::main N_EntryNumberMatches_Node0 -- Yes --> N_EntryNumberMatches_Node0_action N_EntryNumberMatches_Node0_action --> E_EntryNumberMatches S_EntryNumberMatches --> N_EntryNumberMatches_Node0 N_EntryNumberMatches_Node0 -- No --> E_EntryNumberMatches
fields"}:::decision N_EntryNumberMatches_Node0_action["If entry numbers match exactly,
mark the element for removal,
otherwise continue with quantity
validation"]:::main N_EntryNumberMatches_Node0 -- Yes --> N_EntryNumberMatches_Node0_action N_EntryNumberMatches_Node0_action --> E_EntryNumberMatches S_EntryNumberMatches --> N_EntryNumberMatches_Node0 N_EntryNumberMatches_Node0 -- No --> E_EntryNumberMatches
File: GCX016.cbl
GIVEN:
Status info validation failed for a counterpart code match
WHEN:
The system compares entry number fields
THEN:
If entry numbers match exactly, mark the element for removal, otherwise continue with quantity validation
β Consolidated Acceptance Criteria
- The system compares quantity fields → if quantities match exactly, mark the element for removal, otherwise continue with code pattern validation
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_QuantityMatches(["Start Step"])
E_QuantityMatches(["End Step"])
N_QuantityMatches_Node0{"The system compares quantity fields"}:::decision
N_QuantityMatches_Node0_action["If quantities match exactly, mark
the element for removal, otherwise
continue with code pattern
validation"]:::main N_QuantityMatches_Node0 -- Yes --> N_QuantityMatches_Node0_action N_QuantityMatches_Node0_action --> E_QuantityMatches S_QuantityMatches --> N_QuantityMatches_Node0 N_QuantityMatches_Node0 -- No --> E_QuantityMatches
the element for removal, otherwise
continue with code pattern
validation"]:::main N_QuantityMatches_Node0 -- Yes --> N_QuantityMatches_Node0_action N_QuantityMatches_Node0_action --> E_QuantityMatches S_QuantityMatches --> N_QuantityMatches_Node0 N_QuantityMatches_Node0 -- No --> E_QuantityMatches
File: GCX016.cbl
GIVEN:
Entry number validation failed for a counterpart code match
WHEN:
The system compares quantity fields
THEN:
If quantities match exactly, mark the element for removal, otherwise continue with code pattern validation
β Consolidated Acceptance Criteria
- If specific code pattern matching rules → if the code pattern matches specific business rules, mark the element for removal, otherwise continue searching
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CodePatternMatches(["Start Step"])
E_CodePatternMatches(["End Step"])
N_CodePatternMatches_Node0{"The system evaluates specific code
pattern matching rules"}:::decision N_CodePatternMatches_Node0_action["If the code pattern matches
specific business rules, mark the
element for removal, otherwise
continue searching"]:::main N_CodePatternMatches_Node0 -- Yes --> N_CodePatternMatches_Node0_action N_CodePatternMatches_Node0_action --> E_CodePatternMatches S_CodePatternMatches --> N_CodePatternMatches_Node0 N_CodePatternMatches_Node0 -- No --> E_CodePatternMatches
pattern matching rules"}:::decision N_CodePatternMatches_Node0_action["If the code pattern matches
specific business rules, mark the
element for removal, otherwise
continue searching"]:::main N_CodePatternMatches_Node0 -- Yes --> N_CodePatternMatches_Node0_action N_CodePatternMatches_Node0_action --> E_CodePatternMatches S_CodePatternMatches --> N_CodePatternMatches_Node0 N_CodePatternMatches_Node0 -- No --> E_CodePatternMatches
File: GCX016.cbl
GIVEN:
Quantity validation failed for a counterpart code match
WHEN:
The system evaluates specific code pattern matching rules
THEN:
If the code pattern matches specific business rules, mark the element for removal, otherwise continue searching
β Consolidated Acceptance Criteria
- The system processes the removal operation → all marked elements are removed from the status array
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RemoveMarkedElementsfromArray(["Start Step"])
E_RemoveMarkedElementsfromArray(["End Step"])
N_RemoveMarkedElementsfromArray_Node0{"The system processes the removal
operation"}:::decision N_RemoveMarkedElementsfromArray_Node0_action["All marked elements are removed
from the status array"]:::main N_RemoveMarkedElementsfromArray_Node0 -- Yes --> N_RemoveMarkedElementsfromArray_Node0_action N_RemoveMarkedElementsfromArray_Node0_action --> E_RemoveMarkedElementsfromArray S_RemoveMarkedElementsfromArray --> N_RemoveMarkedElementsfromArray_Node0 N_RemoveMarkedElementsfromArray_Node0 -- No --> E_RemoveMarkedElementsfromArray
operation"}:::decision N_RemoveMarkedElementsfromArray_Node0_action["All marked elements are removed
from the status array"]:::main N_RemoveMarkedElementsfromArray_Node0 -- Yes --> N_RemoveMarkedElementsfromArray_Node0_action N_RemoveMarkedElementsfromArray_Node0_action --> E_RemoveMarkedElementsfromArray S_RemoveMarkedElementsfromArray --> N_RemoveMarkedElementsfromArray_Node0 N_RemoveMarkedElementsfromArray_Node0 -- No --> E_RemoveMarkedElementsfromArray
File: GCX016.cbl
GIVEN:
One or more status array elements have been marked for removal
WHEN:
The system processes the removal operation
THEN:
All marked elements are removed from the status array
β Consolidated Acceptance Criteria
- The system finalizes the array structure → the array element count is updated to reflect the current number of active status entries
- The system updates array metadata → the array element count is decremented to reflect the removed counterpart codes
- The system recalculates the number of active array elements → the array element count reflects the reduced number of status entries
- The system updates the array management counters → the system increments the element count to maintain accurate array size tracking
- The system updates the array management counters → the element count for the S09A status array is incremented by one
- The array modification is complete → increment the array element count by one to reflect the new entry
- The system updates the array element count → the array element count reflects the current number of valid elements after removals
- The array compaction is complete → the system updates the array element count to reflect the current number of active status entries
- The system updates the array management counters → the system increments the array element count to reflect the new entry
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UpdateArrayElementCount(["Start Step"])
E_UpdateArrayElementCount(["End Step"])
N_UpdateArrayElementCount_Node0{"The system finalizes the array
structure"}:::decision N_UpdateArrayElementCount_Node0_action["The array element count is updated
to reflect the current number of
active status entries"]:::main N_UpdateArrayElementCount_Node0 -- Yes --> N_UpdateArrayElementCount_Node0_action N_UpdateArrayElementCount_Node0_action --> E_UpdateArrayElementCount S_UpdateArrayElementCount --> N_UpdateArrayElementCount_Node0 N_UpdateArrayElementCount_Node1{"The system updates array metadata"}:::decision N_UpdateArrayElementCount_Node1_action["The array element count is
decremented to reflect the removed
counterpart codes"]:::main N_UpdateArrayElementCount_Node1 -- Yes --> N_UpdateArrayElementCount_Node1_action N_UpdateArrayElementCount_Node1_action --> E_UpdateArrayElementCount N_UpdateArrayElementCount_Node0 -- No --> N_UpdateArrayElementCount_Node1 N_UpdateArrayElementCount_Node2{"The system recalculates the number
of active array elements"}:::decision N_UpdateArrayElementCount_Node2_action["The array element count reflects
the reduced number of status entries"]:::main N_UpdateArrayElementCount_Node2 -- Yes --> N_UpdateArrayElementCount_Node2_action N_UpdateArrayElementCount_Node2_action --> E_UpdateArrayElementCount N_UpdateArrayElementCount_Node1 -- No --> N_UpdateArrayElementCount_Node2 N_UpdateArrayElementCount_Node3{"The system updates the array
management counters"}:::decision N_UpdateArrayElementCount_Node3_action["The system increments the element
count to maintain accurate array
size tracking"]:::main N_UpdateArrayElementCount_Node3 -- Yes --> N_UpdateArrayElementCount_Node3_action N_UpdateArrayElementCount_Node3_action --> E_UpdateArrayElementCount N_UpdateArrayElementCount_Node2 -- No --> N_UpdateArrayElementCount_Node3 N_UpdateArrayElementCount_Node4{"The system updates the array
management counters"}:::decision N_UpdateArrayElementCount_Node4_action["The element count for the S09A
status array is incremented by one"]:::main N_UpdateArrayElementCount_Node4 -- Yes --> N_UpdateArrayElementCount_Node4_action N_UpdateArrayElementCount_Node4_action --> E_UpdateArrayElementCount N_UpdateArrayElementCount_Node3 -- No --> N_UpdateArrayElementCount_Node4 N_UpdateArrayElementCount_Node5{"The array modification is complete"}:::decision N_UpdateArrayElementCount_Node5_action["Increment the array element count
by one to reflect the new entry"]:::main N_UpdateArrayElementCount_Node5 -- Yes --> N_UpdateArrayElementCount_Node5_action N_UpdateArrayElementCount_Node5_action --> E_UpdateArrayElementCount N_UpdateArrayElementCount_Node4 -- No --> N_UpdateArrayElementCount_Node5 N_UpdateArrayElementCount_Node6{"The system updates the array
element count"}:::decision N_UpdateArrayElementCount_Node6_action["The array element count reflects
the current number of valid elements
after removals"]:::main N_UpdateArrayElementCount_Node6 -- Yes --> N_UpdateArrayElementCount_Node6_action N_UpdateArrayElementCount_Node6_action --> E_UpdateArrayElementCount N_UpdateArrayElementCount_Node5 -- No --> N_UpdateArrayElementCount_Node6 N_UpdateArrayElementCount_Node7{"The array compaction is complete"}:::decision N_UpdateArrayElementCount_Node7_action["The system updates the array
element count to reflect the current
number of active status entries"]:::main N_UpdateArrayElementCount_Node7 -- Yes --> N_UpdateArrayElementCount_Node7_action N_UpdateArrayElementCount_Node7_action --> E_UpdateArrayElementCount N_UpdateArrayElementCount_Node6 -- No --> N_UpdateArrayElementCount_Node7 N_UpdateArrayElementCount_Node8{"The system updates the array
management counters"}:::decision N_UpdateArrayElementCount_Node8_action["The system increments the array
element count to reflect the new
entry"]:::main N_UpdateArrayElementCount_Node8 -- Yes --> N_UpdateArrayElementCount_Node8_action N_UpdateArrayElementCount_Node8_action --> E_UpdateArrayElementCount N_UpdateArrayElementCount_Node7 -- No --> N_UpdateArrayElementCount_Node8 N_UpdateArrayElementCount_Node8 -- No --> E_UpdateArrayElementCount
structure"}:::decision N_UpdateArrayElementCount_Node0_action["The array element count is updated
to reflect the current number of
active status entries"]:::main N_UpdateArrayElementCount_Node0 -- Yes --> N_UpdateArrayElementCount_Node0_action N_UpdateArrayElementCount_Node0_action --> E_UpdateArrayElementCount S_UpdateArrayElementCount --> N_UpdateArrayElementCount_Node0 N_UpdateArrayElementCount_Node1{"The system updates array metadata"}:::decision N_UpdateArrayElementCount_Node1_action["The array element count is
decremented to reflect the removed
counterpart codes"]:::main N_UpdateArrayElementCount_Node1 -- Yes --> N_UpdateArrayElementCount_Node1_action N_UpdateArrayElementCount_Node1_action --> E_UpdateArrayElementCount N_UpdateArrayElementCount_Node0 -- No --> N_UpdateArrayElementCount_Node1 N_UpdateArrayElementCount_Node2{"The system recalculates the number
of active array elements"}:::decision N_UpdateArrayElementCount_Node2_action["The array element count reflects
the reduced number of status entries"]:::main N_UpdateArrayElementCount_Node2 -- Yes --> N_UpdateArrayElementCount_Node2_action N_UpdateArrayElementCount_Node2_action --> E_UpdateArrayElementCount N_UpdateArrayElementCount_Node1 -- No --> N_UpdateArrayElementCount_Node2 N_UpdateArrayElementCount_Node3{"The system updates the array
management counters"}:::decision N_UpdateArrayElementCount_Node3_action["The system increments the element
count to maintain accurate array
size tracking"]:::main N_UpdateArrayElementCount_Node3 -- Yes --> N_UpdateArrayElementCount_Node3_action N_UpdateArrayElementCount_Node3_action --> E_UpdateArrayElementCount N_UpdateArrayElementCount_Node2 -- No --> N_UpdateArrayElementCount_Node3 N_UpdateArrayElementCount_Node4{"The system updates the array
management counters"}:::decision N_UpdateArrayElementCount_Node4_action["The element count for the S09A
status array is incremented by one"]:::main N_UpdateArrayElementCount_Node4 -- Yes --> N_UpdateArrayElementCount_Node4_action N_UpdateArrayElementCount_Node4_action --> E_UpdateArrayElementCount N_UpdateArrayElementCount_Node3 -- No --> N_UpdateArrayElementCount_Node4 N_UpdateArrayElementCount_Node5{"The array modification is complete"}:::decision N_UpdateArrayElementCount_Node5_action["Increment the array element count
by one to reflect the new entry"]:::main N_UpdateArrayElementCount_Node5 -- Yes --> N_UpdateArrayElementCount_Node5_action N_UpdateArrayElementCount_Node5_action --> E_UpdateArrayElementCount N_UpdateArrayElementCount_Node4 -- No --> N_UpdateArrayElementCount_Node5 N_UpdateArrayElementCount_Node6{"The system updates the array
element count"}:::decision N_UpdateArrayElementCount_Node6_action["The array element count reflects
the current number of valid elements
after removals"]:::main N_UpdateArrayElementCount_Node6 -- Yes --> N_UpdateArrayElementCount_Node6_action N_UpdateArrayElementCount_Node6_action --> E_UpdateArrayElementCount N_UpdateArrayElementCount_Node5 -- No --> N_UpdateArrayElementCount_Node6 N_UpdateArrayElementCount_Node7{"The array compaction is complete"}:::decision N_UpdateArrayElementCount_Node7_action["The system updates the array
element count to reflect the current
number of active status entries"]:::main N_UpdateArrayElementCount_Node7 -- Yes --> N_UpdateArrayElementCount_Node7_action N_UpdateArrayElementCount_Node7_action --> E_UpdateArrayElementCount N_UpdateArrayElementCount_Node6 -- No --> N_UpdateArrayElementCount_Node7 N_UpdateArrayElementCount_Node8{"The system updates the array
management counters"}:::decision N_UpdateArrayElementCount_Node8_action["The system increments the array
element count to reflect the new
entry"]:::main N_UpdateArrayElementCount_Node8 -- Yes --> N_UpdateArrayElementCount_Node8_action N_UpdateArrayElementCount_Node8_action --> E_UpdateArrayElementCount N_UpdateArrayElementCount_Node7 -- No --> N_UpdateArrayElementCount_Node8 N_UpdateArrayElementCount_Node8 -- No --> E_UpdateArrayElementCount
File: GCX016.cbl
GIVEN:
The status array has been compacted after counterpart removal
WHEN:
The system finalizes the array structure
THEN:
The array element count is updated to reflect the current number of active status entries
File: GCX016.cbl
GIVEN:
The status array has been compacted after counterpart code removal
WHEN:
The system updates array metadata
THEN:
The array element count is decremented to reflect the removed counterpart codes
File: GCX016.cbl
GIVEN:
The status array has been compacted after counterpart removal
WHEN:
The system recalculates the number of active array elements
THEN:
The array element count reflects the reduced number of status entries
File: GCX016.cbl
GIVEN:
A hold code has been successfully added to the status array
WHEN:
The system updates the array management counters
THEN:
The system increments the element count to maintain accurate array size tracking
File: GCX016.cbl
GIVEN:
A status entry has been successfully inserted into the S09A array
WHEN:
The system updates the array management counters
THEN:
The element count for the S09A status array is incremented by one
File: GCX016.cbl
GIVEN:
A new disposition code entry has been successfully added to the status array
WHEN:
The array modification is complete
THEN:
Increment the array element count by one to reflect the new entry
File: GCX016.cbl
GIVEN:
All counterpart code processing is complete for the status array
WHEN:
The system updates the array element count
THEN:
The array element count reflects the current number of valid elements after removals
File: GCX016.cbl
GIVEN:
Disposition codes have been removed from the status array
WHEN:
The array compaction is complete
THEN:
The system updates the array element count to reflect the current number of active status entries
File: GCX016.cbl
GIVEN:
A status information entry has been successfully added to the S09A array
WHEN:
The system updates the array management counters
THEN:
The system increments the array element count to reflect the new entry
β Consolidated Acceptance Criteria
- If counterpart processing requirements → counterpart removal processing is skipped and the process ends normally
- If counterpart processing requirements → counterpart processing is skipped and control returns to main processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_NoCounterpartActionRequired(["Start Step"])
E_NoCounterpartActionRequired(["End Step"])
N_NoCounterpartActionRequired_Node0{"The system evaluates counterpart
processing requirements"}:::decision N_NoCounterpartActionRequired_Node0_action["Counterpart removal processing is
skipped and the process ends
normally"]:::main N_NoCounterpartActionRequired_Node0 -- Yes --> N_NoCounterpartActionRequired_Node0_action N_NoCounterpartActionRequired_Node0_action --> E_NoCounterpartActionRequired S_NoCounterpartActionRequired --> N_NoCounterpartActionRequired_Node0 N_NoCounterpartActionRequired_Node1{"The system evaluates counterpart
processing requirements"}:::decision N_NoCounterpartActionRequired_Node1_action["Counterpart processing is skipped
and control returns to main
processing"]:::main N_NoCounterpartActionRequired_Node1 -- Yes --> N_NoCounterpartActionRequired_Node1_action N_NoCounterpartActionRequired_Node1_action --> E_NoCounterpartActionRequired N_NoCounterpartActionRequired_Node0 -- No --> N_NoCounterpartActionRequired_Node1 N_NoCounterpartActionRequired_Node1 -- No --> E_NoCounterpartActionRequired
processing requirements"}:::decision N_NoCounterpartActionRequired_Node0_action["Counterpart removal processing is
skipped and the process ends
normally"]:::main N_NoCounterpartActionRequired_Node0 -- Yes --> N_NoCounterpartActionRequired_Node0_action N_NoCounterpartActionRequired_Node0_action --> E_NoCounterpartActionRequired S_NoCounterpartActionRequired --> N_NoCounterpartActionRequired_Node0 N_NoCounterpartActionRequired_Node1{"The system evaluates counterpart
processing requirements"}:::decision N_NoCounterpartActionRequired_Node1_action["Counterpart processing is skipped
and control returns to main
processing"]:::main N_NoCounterpartActionRequired_Node1 -- Yes --> N_NoCounterpartActionRequired_Node1_action N_NoCounterpartActionRequired_Node1_action --> E_NoCounterpartActionRequired N_NoCounterpartActionRequired_Node0 -- No --> N_NoCounterpartActionRequired_Node1 N_NoCounterpartActionRequired_Node1 -- No --> E_NoCounterpartActionRequired
File: GCX016.cbl
GIVEN:
No counterpart disposition code exists in the DC table
WHEN:
The system evaluates counterpart processing requirements
THEN:
- Counterpart removal processing is skipped
- The process ends normally
File: GCX016.cbl
GIVEN:
No counterpart disposition code exists in the DC table lookup
WHEN:
The system evaluates counterpart processing requirements
THEN:
- Counterpart processing is skipped
- Control returns to main processing
β Consolidated Acceptance Criteria
- The search process begins → the system initializes the search parameters and prepares to iterate through the status array
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_StartStatusArraySearch(["Start Step"])
E_StartStatusArraySearch(["End Step"])
N_StartStatusArraySearch_Node0{"The search process begins"}:::decision
N_StartStatusArraySearch_Node0_action["The system initializes the search
parameters and prepares to iterate
through the status array"]:::main N_StartStatusArraySearch_Node0 -- Yes --> N_StartStatusArraySearch_Node0_action N_StartStatusArraySearch_Node0_action --> E_StartStatusArraySearch S_StartStatusArraySearch --> N_StartStatusArraySearch_Node0 N_StartStatusArraySearch_Node0 -- No --> E_StartStatusArraySearch
parameters and prepares to iterate
through the status array"]:::main N_StartStatusArraySearch_Node0 -- Yes --> N_StartStatusArraySearch_Node0_action N_StartStatusArraySearch_Node0_action --> E_StartStatusArraySearch S_StartStatusArraySearch --> N_StartStatusArraySearch_Node0 N_StartStatusArraySearch_Node0 -- No --> E_StartStatusArraySearch
File: GCX016.cbl
GIVEN:
A status array search operation is requested
WHEN:
The search process begins
THEN:
- The system initializes the search parameters
- Prepares to iterate through the status array
β Consolidated Acceptance Criteria
- The system prepares to iterate through array elements → the array index is set to position 1 to start from the first element
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_InitializeArrayIndexto1(["Start Step"])
E_InitializeArrayIndexto1(["End Step"])
N_InitializeArrayIndexto1_Node0{"The system prepares to iterate
through array elements"}:::decision N_InitializeArrayIndexto1_Node0_action["The array index is set to position
1 to start from the first element"]:::main N_InitializeArrayIndexto1_Node0 -- Yes --> N_InitializeArrayIndexto1_Node0_action N_InitializeArrayIndexto1_Node0_action --> E_InitializeArrayIndexto1 S_InitializeArrayIndexto1 --> N_InitializeArrayIndexto1_Node0 N_InitializeArrayIndexto1_Node0 -- No --> E_InitializeArrayIndexto1
through array elements"}:::decision N_InitializeArrayIndexto1_Node0_action["The array index is set to position
1 to start from the first element"]:::main N_InitializeArrayIndexto1_Node0 -- Yes --> N_InitializeArrayIndexto1_Node0_action N_InitializeArrayIndexto1_Node0_action --> E_InitializeArrayIndexto1 S_InitializeArrayIndexto1 --> N_InitializeArrayIndexto1_Node0 N_InitializeArrayIndexto1_Node0 -- No --> E_InitializeArrayIndexto1
File: GCX016.cbl
GIVEN:
The status array search is initialized
WHEN:
The system prepares to iterate through array elements
THEN:
The array index is set to position 1 to start from the first element
β Consolidated Acceptance Criteria
- The system checks if more elements exist to process → if index is less than or equal to array count, continue processing; otherwise terminate search
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IndexArrayCount(["Start Step"])
E_IndexArrayCount(["End Step"])
N_IndexArrayCount_Node0{"The system checks if more elements
exist to process"}:::decision N_IndexArrayCount_Node0_action["If index is less than or equal to
array count, continue processing
otherwise terminate search"]:::exclusion N_IndexArrayCount_Node0 -- Yes -->|Alternative| N_IndexArrayCount_Node0_action N_IndexArrayCount_Node0_action --> E_IndexArrayCount S_IndexArrayCount --> N_IndexArrayCount_Node0 N_IndexArrayCount_Node0 -- No --> E_IndexArrayCount
exist to process"}:::decision N_IndexArrayCount_Node0_action["If index is less than or equal to
array count, continue processing
otherwise terminate search"]:::exclusion N_IndexArrayCount_Node0 -- Yes -->|Alternative| N_IndexArrayCount_Node0_action N_IndexArrayCount_Node0_action --> E_IndexArrayCount S_IndexArrayCount --> N_IndexArrayCount_Node0 N_IndexArrayCount_Node0 -- No --> E_IndexArrayCount
File: GCX016.cbl
GIVEN:
An array index position is being evaluated
WHEN:
The system checks if more elements exist to process
THEN:
If index is less than or equal to array count, continue processing; otherwise terminate search
β Consolidated Acceptance Criteria
- The system needs to examine a status element → the current array element is retrieved and made available for matching criteria evaluation
- The system processes the current array element → the current array element is retrieved and made available for disposition code analysis
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GetCurrentArrayElement(["Start Step"])
E_GetCurrentArrayElement(["End Step"])
N_GetCurrentArrayElement_Node0{"The system needs to examine a
status element"}:::decision N_GetCurrentArrayElement_Node0_action["The current array element is
retrieved and made available for
matching criteria evaluation"]:::main N_GetCurrentArrayElement_Node0 -- Yes --> N_GetCurrentArrayElement_Node0_action N_GetCurrentArrayElement_Node0_action --> E_GetCurrentArrayElement S_GetCurrentArrayElement --> N_GetCurrentArrayElement_Node0 N_GetCurrentArrayElement_Node1{"The system processes the current
array element"}:::decision N_GetCurrentArrayElement_Node1_action["The current array element is
retrieved and made available for
disposition code analysis"]:::main N_GetCurrentArrayElement_Node1 -- Yes --> N_GetCurrentArrayElement_Node1_action N_GetCurrentArrayElement_Node1_action --> E_GetCurrentArrayElement N_GetCurrentArrayElement_Node0 -- No --> N_GetCurrentArrayElement_Node1 N_GetCurrentArrayElement_Node1 -- No --> E_GetCurrentArrayElement
status element"}:::decision N_GetCurrentArrayElement_Node0_action["The current array element is
retrieved and made available for
matching criteria evaluation"]:::main N_GetCurrentArrayElement_Node0 -- Yes --> N_GetCurrentArrayElement_Node0_action N_GetCurrentArrayElement_Node0_action --> E_GetCurrentArrayElement S_GetCurrentArrayElement --> N_GetCurrentArrayElement_Node0 N_GetCurrentArrayElement_Node1{"The system processes the current
array element"}:::decision N_GetCurrentArrayElement_Node1_action["The current array element is
retrieved and made available for
disposition code analysis"]:::main N_GetCurrentArrayElement_Node1 -- Yes --> N_GetCurrentArrayElement_Node1_action N_GetCurrentArrayElement_Node1_action --> E_GetCurrentArrayElement N_GetCurrentArrayElement_Node0 -- No --> N_GetCurrentArrayElement_Node1 N_GetCurrentArrayElement_Node1 -- No --> E_GetCurrentArrayElement
File: GCX016.cbl
GIVEN:
A valid array index position exists
WHEN:
The system needs to examine a status element
THEN:
- The current array element is retrieved
- Made available for matching criteria evaluation
File: GCX016.cbl
GIVEN:
The array index points to a valid position in the S09A array
WHEN:
The system processes the current array element
THEN:
- The current array element is retrieved
- Made available for disposition code analysis
β Consolidated Acceptance Criteria
- The system checks the status information field → if status information matches search criteria, proceed to next validation; otherwise skip to next element
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CheckStatusInfoMatch(["Start Step"])
E_CheckStatusInfoMatch(["End Step"])
N_CheckStatusInfoMatch_Node0{"The system checks the status
information field"}:::decision N_CheckStatusInfoMatch_Node0_action["If status information matches
search criteria, proceed to next
validation otherwise skip to next
element"]:::main N_CheckStatusInfoMatch_Node0 -- Yes --> N_CheckStatusInfoMatch_Node0_action N_CheckStatusInfoMatch_Node0_action --> E_CheckStatusInfoMatch S_CheckStatusInfoMatch --> N_CheckStatusInfoMatch_Node0 N_CheckStatusInfoMatch_Node0 -- No --> E_CheckStatusInfoMatch
information field"}:::decision N_CheckStatusInfoMatch_Node0_action["If status information matches
search criteria, proceed to next
validation otherwise skip to next
element"]:::main N_CheckStatusInfoMatch_Node0 -- Yes --> N_CheckStatusInfoMatch_Node0_action N_CheckStatusInfoMatch_Node0_action --> E_CheckStatusInfoMatch S_CheckStatusInfoMatch --> N_CheckStatusInfoMatch_Node0 N_CheckStatusInfoMatch_Node0 -- No --> E_CheckStatusInfoMatch
File: GCX016.cbl
GIVEN:
A status array element is being evaluated for matching
WHEN:
The system checks the status information field
THEN:
If status information matches search criteria, proceed to next validation; otherwise skip to next element
β Consolidated Acceptance Criteria
- The system checks the entry number field → if entry number matches search criteria, proceed to quantity validation; otherwise skip to next element
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CheckEntryNumberMatch(["Start Step"])
E_CheckEntryNumberMatch(["End Step"])
N_CheckEntryNumberMatch_Node0{"The system checks the entry number
field"}:::decision N_CheckEntryNumberMatch_Node0_action["If entry number matches search
criteria, proceed to quantity
validation otherwise skip to next
element"]:::main N_CheckEntryNumberMatch_Node0 -- Yes --> N_CheckEntryNumberMatch_Node0_action N_CheckEntryNumberMatch_Node0_action --> E_CheckEntryNumberMatch S_CheckEntryNumberMatch --> N_CheckEntryNumberMatch_Node0 N_CheckEntryNumberMatch_Node0 -- No --> E_CheckEntryNumberMatch
field"}:::decision N_CheckEntryNumberMatch_Node0_action["If entry number matches search
criteria, proceed to quantity
validation otherwise skip to next
element"]:::main N_CheckEntryNumberMatch_Node0 -- Yes --> N_CheckEntryNumberMatch_Node0_action N_CheckEntryNumberMatch_Node0_action --> E_CheckEntryNumberMatch S_CheckEntryNumberMatch --> N_CheckEntryNumberMatch_Node0 N_CheckEntryNumberMatch_Node0 -- No --> E_CheckEntryNumberMatch
File: GCX016.cbl
GIVEN:
A status element has passed status information validation
WHEN:
The system checks the entry number field
THEN:
If entry number matches search criteria, proceed to quantity validation; otherwise skip to next element
β Consolidated Acceptance Criteria
- The system checks the quantity field → if quantity matches search criteria, proceed to code pattern validation; otherwise skip to next element
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CheckQuantityMatch(["Start Step"])
E_CheckQuantityMatch(["End Step"])
N_CheckQuantityMatch_Node0{"The system checks the quantity
field"}:::decision N_CheckQuantityMatch_Node0_action["If quantity matches search
criteria, proceed to code pattern
validation otherwise skip to next
element"]:::main N_CheckQuantityMatch_Node0 -- Yes --> N_CheckQuantityMatch_Node0_action N_CheckQuantityMatch_Node0_action --> E_CheckQuantityMatch S_CheckQuantityMatch --> N_CheckQuantityMatch_Node0 N_CheckQuantityMatch_Node0 -- No --> E_CheckQuantityMatch
field"}:::decision N_CheckQuantityMatch_Node0_action["If quantity matches search
criteria, proceed to code pattern
validation otherwise skip to next
element"]:::main N_CheckQuantityMatch_Node0 -- Yes --> N_CheckQuantityMatch_Node0_action N_CheckQuantityMatch_Node0_action --> E_CheckQuantityMatch S_CheckQuantityMatch --> N_CheckQuantityMatch_Node0 N_CheckQuantityMatch_Node0 -- No --> E_CheckQuantityMatch
File: GCX016.cbl
GIVEN:
A status element has passed status information and entry number validation
WHEN:
The system checks the quantity field
THEN:
If quantity matches search criteria, proceed to code pattern validation; otherwise skip to next element
β Consolidated Acceptance Criteria
- The system checks the code pattern field → if code pattern matches search criteria, mark element as found; otherwise skip to next element
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CheckCodePatternMatch(["Start Step"])
E_CheckCodePatternMatch(["End Step"])
N_CheckCodePatternMatch_Node0{"The system checks the code pattern
field"}:::decision N_CheckCodePatternMatch_Node0_action["If code pattern matches search
criteria, mark element as found
otherwise skip to next element"]:::main N_CheckCodePatternMatch_Node0 -- Yes --> N_CheckCodePatternMatch_Node0_action N_CheckCodePatternMatch_Node0_action --> E_CheckCodePatternMatch S_CheckCodePatternMatch --> N_CheckCodePatternMatch_Node0 N_CheckCodePatternMatch_Node0 -- No --> E_CheckCodePatternMatch
field"}:::decision N_CheckCodePatternMatch_Node0_action["If code pattern matches search
criteria, mark element as found
otherwise skip to next element"]:::main N_CheckCodePatternMatch_Node0 -- Yes --> N_CheckCodePatternMatch_Node0_action N_CheckCodePatternMatch_Node0_action --> E_CheckCodePatternMatch S_CheckCodePatternMatch --> N_CheckCodePatternMatch_Node0 N_CheckCodePatternMatch_Node0 -- No --> E_CheckCodePatternMatch
File: GCX016.cbl
GIVEN:
A status element has passed all previous validation criteria
WHEN:
The system checks the code pattern field
THEN:
If code pattern matches search criteria, mark element as found; otherwise skip to next element
β Consolidated Acceptance Criteria
- The system confirms a complete match → the element is marked as found and flagged for further processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MarkElementasMatchFound(["Start Step"])
E_MarkElementasMatchFound(["End Step"])
N_MarkElementasMatchFound_Node0{"The system confirms a complete
match"}:::decision N_MarkElementasMatchFound_Node0_action["The element is marked as found and
flagged for further processing"]:::main N_MarkElementasMatchFound_Node0 -- Yes --> N_MarkElementasMatchFound_Node0_action N_MarkElementasMatchFound_Node0_action --> E_MarkElementasMatchFound S_MarkElementasMatchFound --> N_MarkElementasMatchFound_Node0 N_MarkElementasMatchFound_Node0 -- No --> E_MarkElementasMatchFound
match"}:::decision N_MarkElementasMatchFound_Node0_action["The element is marked as found and
flagged for further processing"]:::main N_MarkElementasMatchFound_Node0 -- Yes --> N_MarkElementasMatchFound_Node0_action N_MarkElementasMatchFound_Node0_action --> E_MarkElementasMatchFound S_MarkElementasMatchFound --> N_MarkElementasMatchFound_Node0 N_MarkElementasMatchFound_Node0 -- No --> E_MarkElementasMatchFound
File: GCX016.cbl
GIVEN:
A status element has satisfied all matching criteria
WHEN:
The system confirms a complete match
THEN:
- The element is marked as found
- Flagged for further processing
β Consolidated Acceptance Criteria
- The system needs to move to the next element → the array index is incremented by one position
- The system prepares to process the next element → the array index is incremented by 1 to point to the next element in the array
- The system needs to continue searching → the array index is incremented to examine the next element
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IncrementArrayIndex(["Start Step"])
E_IncrementArrayIndex(["End Step"])
N_IncrementArrayIndex_Node0{"The system needs to move to the
next element"}:::decision N_IncrementArrayIndex_Node0_action["The array index is incremented by
one position"]:::main N_IncrementArrayIndex_Node0 -- Yes --> N_IncrementArrayIndex_Node0_action N_IncrementArrayIndex_Node0_action --> E_IncrementArrayIndex S_IncrementArrayIndex --> N_IncrementArrayIndex_Node0 N_IncrementArrayIndex_Node1{"The system prepares to process the
next element"}:::decision N_IncrementArrayIndex_Node1_action["The array index is incremented by 1
to point to the next element in the
array"]:::main N_IncrementArrayIndex_Node1 -- Yes --> N_IncrementArrayIndex_Node1_action N_IncrementArrayIndex_Node1_action --> E_IncrementArrayIndex N_IncrementArrayIndex_Node0 -- No --> N_IncrementArrayIndex_Node1 N_IncrementArrayIndex_Node2{"The system needs to continue
searching"}:::decision N_IncrementArrayIndex_Node2_action["The array index is incremented to
examine the next element"]:::main N_IncrementArrayIndex_Node2 -- Yes --> N_IncrementArrayIndex_Node2_action N_IncrementArrayIndex_Node2_action --> E_IncrementArrayIndex N_IncrementArrayIndex_Node1 -- No --> N_IncrementArrayIndex_Node2 N_IncrementArrayIndex_Node2 -- No --> E_IncrementArrayIndex
next element"}:::decision N_IncrementArrayIndex_Node0_action["The array index is incremented by
one position"]:::main N_IncrementArrayIndex_Node0 -- Yes --> N_IncrementArrayIndex_Node0_action N_IncrementArrayIndex_Node0_action --> E_IncrementArrayIndex S_IncrementArrayIndex --> N_IncrementArrayIndex_Node0 N_IncrementArrayIndex_Node1{"The system prepares to process the
next element"}:::decision N_IncrementArrayIndex_Node1_action["The array index is incremented by 1
to point to the next element in the
array"]:::main N_IncrementArrayIndex_Node1 -- Yes --> N_IncrementArrayIndex_Node1_action N_IncrementArrayIndex_Node1_action --> E_IncrementArrayIndex N_IncrementArrayIndex_Node0 -- No --> N_IncrementArrayIndex_Node1 N_IncrementArrayIndex_Node2{"The system needs to continue
searching"}:::decision N_IncrementArrayIndex_Node2_action["The array index is incremented to
examine the next element"]:::main N_IncrementArrayIndex_Node2 -- Yes --> N_IncrementArrayIndex_Node2_action N_IncrementArrayIndex_Node2_action --> E_IncrementArrayIndex N_IncrementArrayIndex_Node1 -- No --> N_IncrementArrayIndex_Node2 N_IncrementArrayIndex_Node2 -- No --> E_IncrementArrayIndex
File: GCX016.cbl
GIVEN:
The current array element has been processed
WHEN:
The system needs to move to the next element
THEN:
The array index is incremented by one position
File: GCX016.cbl
GIVEN:
The current array element has been completely processed
WHEN:
The system prepares to process the next element
THEN:
The array index is incremented by 1 to point to the next element in the array
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
Current array element does not match the new disposition code or contains no data
WHEN:
The system needs to continue searching
THEN:
The array index is incremented to examine the next element
β Consolidated Acceptance Criteria
- The system has finished evaluating the entire array → the search results including any matching elements are returned to the calling process
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ReturnMatchResults(["Start Step"])
E_ReturnMatchResults(["End Step"])
N_ReturnMatchResults_Node0{"The system has finished evaluating
the entire array"}:::decision N_ReturnMatchResults_Node0_action["The search results including any
matching elements are returned to
the calling process"]:::main N_ReturnMatchResults_Node0 -- Yes --> N_ReturnMatchResults_Node0_action N_ReturnMatchResults_Node0_action --> E_ReturnMatchResults S_ReturnMatchResults --> N_ReturnMatchResults_Node0 N_ReturnMatchResults_Node0 -- No --> E_ReturnMatchResults
the entire array"}:::decision N_ReturnMatchResults_Node0_action["The search results including any
matching elements are returned to
the calling process"]:::main N_ReturnMatchResults_Node0 -- Yes --> N_ReturnMatchResults_Node0_action N_ReturnMatchResults_Node0_action --> E_ReturnMatchResults S_ReturnMatchResults --> N_ReturnMatchResults_Node0 N_ReturnMatchResults_Node0 -- No --> E_ReturnMatchResults
File: GCX016.cbl
GIVEN:
The status array search has completed processing all elements
WHEN:
The system has finished evaluating the entire array
THEN:
The search results including any matching elements are returned to the calling process
β Consolidated Acceptance Criteria
- The status array search operation is complete → the search process is terminated and control returns to the calling procedure
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_EndSearchProcess(["Start Step"])
E_EndSearchProcess(["End Step"])
N_EndSearchProcess_Node0{"The status array search operation
is complete"}:::decision N_EndSearchProcess_Node0_action["The search process is terminated
and control returns to the calling
procedure"]:::main N_EndSearchProcess_Node0 -- Yes --> N_EndSearchProcess_Node0_action N_EndSearchProcess_Node0_action --> E_EndSearchProcess S_EndSearchProcess --> N_EndSearchProcess_Node0 N_EndSearchProcess_Node0 -- No --> E_EndSearchProcess
is complete"}:::decision N_EndSearchProcess_Node0_action["The search process is terminated
and control returns to the calling
procedure"]:::main N_EndSearchProcess_Node0 -- Yes --> N_EndSearchProcess_Node0_action N_EndSearchProcess_Node0_action --> E_EndSearchProcess S_EndSearchProcess --> N_EndSearchProcess_Node0 N_EndSearchProcess_Node0 -- No --> E_EndSearchProcess
File: GCX016.cbl
GIVEN:
The search results have been returned
WHEN:
The status array search operation is complete
THEN:
- The search process is terminated
- Control returns to the calling procedure
β Consolidated Acceptance Criteria
- The system needs to manage cargo status information → the system fetches all existing S09 status segments associated with the cargo CCN key
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_FetchS09SegmentsfromDatabase(["Start Step"])
E_FetchS09SegmentsfromDatabase(["End Step"])
N_FetchS09SegmentsfromDatabase_Node0{"The system needs to manage cargo
status information"}:::decision N_FetchS09SegmentsfromDatabase_Node0_action["The system fetches all existing S09
status segments associated with the
cargo CCN key"]:::main N_FetchS09SegmentsfromDatabase_Node0 -- Yes --> N_FetchS09SegmentsfromDatabase_Node0_action N_FetchS09SegmentsfromDatabase_Node0_action --> E_FetchS09SegmentsfromDatabase S_FetchS09SegmentsfromDatabase --> N_FetchS09SegmentsfromDatabase_Node0 N_FetchS09SegmentsfromDatabase_Node0 -- No --> E_FetchS09SegmentsfromDatabase
status information"}:::decision N_FetchS09SegmentsfromDatabase_Node0_action["The system fetches all existing S09
status segments associated with the
cargo CCN key"]:::main N_FetchS09SegmentsfromDatabase_Node0 -- Yes --> N_FetchS09SegmentsfromDatabase_Node0_action N_FetchS09SegmentsfromDatabase_Node0_action --> E_FetchS09SegmentsfromDatabase S_FetchS09SegmentsfromDatabase --> N_FetchS09SegmentsfromDatabase_Node0 N_FetchS09SegmentsfromDatabase_Node0 -- No --> E_FetchS09SegmentsfromDatabase
File: GCX016.cbl
GIVEN:
A cargo record exists in the system
WHEN:
The system needs to manage cargo status information
THEN:
The system fetches all existing S09 status segments associated with the cargo CCN key
β Consolidated Acceptance Criteria
- The system attempts to fetch cargo status information → the system creates a new empty S09A status array structure
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CreateEmptyS09AStatusArray(["Start Step"])
E_CreateEmptyS09AStatusArray(["End Step"])
N_CreateEmptyS09AStatusArray_Node0{"The system attempts to fetch cargo
status information"}:::decision N_CreateEmptyS09AStatusArray_Node0_action["The system creates a new empty S09A
status array structure"]:::main N_CreateEmptyS09AStatusArray_Node0 -- Yes --> N_CreateEmptyS09AStatusArray_Node0_action N_CreateEmptyS09AStatusArray_Node0_action --> E_CreateEmptyS09AStatusArray S_CreateEmptyS09AStatusArray --> N_CreateEmptyS09AStatusArray_Node0 N_CreateEmptyS09AStatusArray_Node0 -- No --> E_CreateEmptyS09AStatusArray
status information"}:::decision N_CreateEmptyS09AStatusArray_Node0_action["The system creates a new empty S09A
status array structure"]:::main N_CreateEmptyS09AStatusArray_Node0 -- Yes --> N_CreateEmptyS09AStatusArray_Node0_action N_CreateEmptyS09AStatusArray_Node0_action --> E_CreateEmptyS09AStatusArray S_CreateEmptyS09AStatusArray --> N_CreateEmptyS09AStatusArray_Node0 N_CreateEmptyS09AStatusArray_Node0 -- No --> E_CreateEmptyS09AStatusArray
File: GCX016.cbl
GIVEN:
A cargo record has no existing S09 status segments
WHEN:
The system attempts to fetch cargo status information
THEN:
The system creates a new empty S09A status array structure
β Consolidated Acceptance Criteria
- The system retrieves the segments from the database → the system populates the S09A status array with all status entries from the retrieved segments
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_PopulateS09AArrayfromS09Segments(["Start Step"])
E_PopulateS09AArrayfromS09Segments(["End Step"])
N_PopulateS09AArrayfromS09Segments_Node0{"The system retrieves the segments
from the database"}:::decision N_PopulateS09AArrayfromS09Segments_Node0_action["The system populates the S09A
status array with all status entries
from the retrieved segments"]:::main N_PopulateS09AArrayfromS09Segments_Node0 -- Yes --> N_PopulateS09AArrayfromS09Segments_Node0_action N_PopulateS09AArrayfromS09Segments_Node0_action --> E_PopulateS09AArrayfromS09Segments S_PopulateS09AArrayfromS09Segments --> N_PopulateS09AArrayfromS09Segments_Node0 N_PopulateS09AArrayfromS09Segments_Node0 -- No --> E_PopulateS09AArrayfromS09Segments
from the database"}:::decision N_PopulateS09AArrayfromS09Segments_Node0_action["The system populates the S09A
status array with all status entries
from the retrieved segments"]:::main N_PopulateS09AArrayfromS09Segments_Node0 -- Yes --> N_PopulateS09AArrayfromS09Segments_Node0_action N_PopulateS09AArrayfromS09Segments_Node0_action --> E_PopulateS09AArrayfromS09Segments S_PopulateS09AArrayfromS09Segments --> N_PopulateS09AArrayfromS09Segments_Node0 N_PopulateS09AArrayfromS09Segments_Node0 -- No --> E_PopulateS09AArrayfromS09Segments
File: GCX016.cbl
GIVEN:
S09 status segments exist for a cargo record
WHEN:
The system retrieves the segments from the database
THEN:
The system populates the S09A status array with all status entries from the retrieved segments
β Consolidated Acceptance Criteria
- The system creates an empty status array → the system initializes the array with default status values and proper sequence numbering
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_InitializeArraywithDefaultValues(["Start Step"])
E_InitializeArraywithDefaultValues(["End Step"])
N_InitializeArraywithDefaultValues_Node0{"The system creates an empty status
array"}:::decision N_InitializeArraywithDefaultValues_Node0_action["The system initializes the array
with default status values and
proper sequence numbering"]:::main N_InitializeArraywithDefaultValues_Node0 -- Yes --> N_InitializeArraywithDefaultValues_Node0_action N_InitializeArraywithDefaultValues_Node0_action --> E_InitializeArraywithDefaultValues S_InitializeArraywithDefaultValues --> N_InitializeArraywithDefaultValues_Node0 N_InitializeArraywithDefaultValues_Node0 -- No --> E_InitializeArraywithDefaultValues
array"}:::decision N_InitializeArraywithDefaultValues_Node0_action["The system initializes the array
with default status values and
proper sequence numbering"]:::main N_InitializeArraywithDefaultValues_Node0 -- Yes --> N_InitializeArraywithDefaultValues_Node0_action N_InitializeArraywithDefaultValues_Node0_action --> E_InitializeArraywithDefaultValues S_InitializeArraywithDefaultValues --> N_InitializeArraywithDefaultValues_Node0 N_InitializeArraywithDefaultValues_Node0 -- No --> E_InitializeArraywithDefaultValues
File: GCX016.cbl
GIVEN:
A new cargo record is being processed without existing status segments
WHEN:
The system creates an empty status array
THEN:
- The system initializes the array with default status values
- Proper sequence numbering
β Consolidated Acceptance Criteria
- The system processes a new disposition code from X4 segment → the system adds the disposition code with appropriate status flags, location information, and quantity details to the next available position in the status array
- The duplicate validation process confirms no exact match exists → add the new disposition code entry to the next available position in the status array
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AddNewDispositionCodetoArray(["Start Step"])
E_AddNewDispositionCodetoArray(["End Step"])
N_AddNewDispositionCodetoArray_Node0{"The system processes a new
disposition code from X4 segment"}:::decision N_AddNewDispositionCodetoArray_Node0_action["The system adds the disposition
code with appropriate status flags,
location information, and quantity
details to the next available
position in the status array"]:::main N_AddNewDispositionCodetoArray_Node0 -- Yes --> N_AddNewDispositionCodetoArray_Node0_action N_AddNewDispositionCodetoArray_Node0_action --> E_AddNewDispositionCodetoArray S_AddNewDispositionCodetoArray --> N_AddNewDispositionCodetoArray_Node0 N_AddNewDispositionCodetoArray_Node1{"The duplicate validation process
confirms no exact match exists"}:::decision N_AddNewDispositionCodetoArray_Node1_action["Add the new disposition code entry
to the next available position in
the status array"]:::main N_AddNewDispositionCodetoArray_Node1 -- Yes --> N_AddNewDispositionCodetoArray_Node1_action N_AddNewDispositionCodetoArray_Node1_action --> E_AddNewDispositionCodetoArray N_AddNewDispositionCodetoArray_Node0 -- No --> N_AddNewDispositionCodetoArray_Node1 N_AddNewDispositionCodetoArray_Node1 -- No --> E_AddNewDispositionCodetoArray
disposition code from X4 segment"}:::decision N_AddNewDispositionCodetoArray_Node0_action["The system adds the disposition
code with appropriate status flags,
location information, and quantity
details to the next available
position in the status array"]:::main N_AddNewDispositionCodetoArray_Node0 -- Yes --> N_AddNewDispositionCodetoArray_Node0_action N_AddNewDispositionCodetoArray_Node0_action --> E_AddNewDispositionCodetoArray S_AddNewDispositionCodetoArray --> N_AddNewDispositionCodetoArray_Node0 N_AddNewDispositionCodetoArray_Node1{"The duplicate validation process
confirms no exact match exists"}:::decision N_AddNewDispositionCodetoArray_Node1_action["Add the new disposition code entry
to the next available position in
the status array"]:::main N_AddNewDispositionCodetoArray_Node1 -- Yes --> N_AddNewDispositionCodetoArray_Node1_action N_AddNewDispositionCodetoArray_Node1_action --> E_AddNewDispositionCodetoArray N_AddNewDispositionCodetoArray_Node0 -- No --> N_AddNewDispositionCodetoArray_Node1 N_AddNewDispositionCodetoArray_Node1 -- No --> E_AddNewDispositionCodetoArray
File: GCX016.cbl
GIVEN:
A disposition code needs to be added to cargo status AND the status array has available capacity
WHEN:
The system processes a new disposition code from X4 segment
THEN:
The system adds the disposition code with appropriate status flags, location information, and quantity details to the next available position in the status array
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
A new disposition code that does not match any existing entries in the status array
WHEN:
The duplicate validation process confirms no exact match exists
THEN:
Add the new disposition code entry to the next available position in the status array
β Consolidated Acceptance Criteria
- The system adds a new disposition code that conflicts with existing codes → the system removes all counterpart disposition codes from the status array before adding the new code
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RemoveCounterpartCodesfromArray(["Start Step"])
E_RemoveCounterpartCodesfromArray(["End Step"])
N_RemoveCounterpartCodesfromArray_Node0{"The system adds a new disposition
code that conflicts with existing
codes"}:::decision N_RemoveCounterpartCodesfromArray_Node0_action["The system removes all counterpart
disposition codes from the status
array before adding the new code"]:::main N_RemoveCounterpartCodesfromArray_Node0 -- Yes --> N_RemoveCounterpartCodesfromArray_Node0_action N_RemoveCounterpartCodesfromArray_Node0_action --> E_RemoveCounterpartCodesfromArray S_RemoveCounterpartCodesfromArray --> N_RemoveCounterpartCodesfromArray_Node0 N_RemoveCounterpartCodesfromArray_Node0 -- No --> E_RemoveCounterpartCodesfromArray
code that conflicts with existing
codes"}:::decision N_RemoveCounterpartCodesfromArray_Node0_action["The system removes all counterpart
disposition codes from the status
array before adding the new code"]:::main N_RemoveCounterpartCodesfromArray_Node0 -- Yes --> N_RemoveCounterpartCodesfromArray_Node0_action N_RemoveCounterpartCodesfromArray_Node0_action --> E_RemoveCounterpartCodesfromArray S_RemoveCounterpartCodesfromArray --> N_RemoveCounterpartCodesfromArray_Node0 N_RemoveCounterpartCodesfromArray_Node0 -- No --> E_RemoveCounterpartCodesfromArray
File: GCX016.cbl
GIVEN:
A new disposition code has counterpart codes that must be removed AND counterpart codes exist in the status array
WHEN:
The system adds a new disposition code that conflicts with existing codes
THEN:
The system removes all counterpart disposition codes from the status array before adding the new code
β Consolidated Acceptance Criteria
- If disposition code types and processing requirements → the system sets appropriate status flags including hold indicators, release indicators, location flags, and quantity impact flags for each array element
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UpdateStatusFlagsinArrayElements(["Start Step"])
E_UpdateStatusFlagsinArrayElements(["End Step"])
N_UpdateStatusFlagsinArrayElements_Node0{"The system evaluates disposition
code types and processing
requirements"}:::decision N_UpdateStatusFlagsinArrayElements_Node0_action["The system sets appropriate status
flags including hold indicators,
release indicators, location flags,
and quantity impact flags for each
array element"]:::main N_UpdateStatusFlagsinArrayElements_Node0 -- Yes --> N_UpdateStatusFlagsinArrayElements_Node0_action N_UpdateStatusFlagsinArrayElements_Node0_action --> E_UpdateStatusFlagsinArrayElements S_UpdateStatusFlagsinArrayElements --> N_UpdateStatusFlagsinArrayElements_Node0 N_UpdateStatusFlagsinArrayElements_Node0 -- No --> E_UpdateStatusFlagsinArrayElements
code types and processing
requirements"}:::decision N_UpdateStatusFlagsinArrayElements_Node0_action["The system sets appropriate status
flags including hold indicators,
release indicators, location flags,
and quantity impact flags for each
array element"]:::main N_UpdateStatusFlagsinArrayElements_Node0 -- Yes --> N_UpdateStatusFlagsinArrayElements_Node0_action N_UpdateStatusFlagsinArrayElements_Node0_action --> E_UpdateStatusFlagsinArrayElements S_UpdateStatusFlagsinArrayElements --> N_UpdateStatusFlagsinArrayElements_Node0 N_UpdateStatusFlagsinArrayElements_Node0 -- No --> E_UpdateStatusFlagsinArrayElements
File: GCX016.cbl
GIVEN:
Disposition codes are being processed in the status array
WHEN:
- The system evaluates disposition code types
- Processing requirements
THEN:
The system sets appropriate status flags including hold indicators, release indicators, location flags, and quantity impact flags for each array element
β Consolidated Acceptance Criteria
- The system completes code removal operations → the system compacts the array by moving remaining entries to eliminate empty positions and maintains proper sequence numbering
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CompactArrayAfterRemovals(["Start Step"])
E_CompactArrayAfterRemovals(["End Step"])
N_CompactArrayAfterRemovals_Node0{"The system completes code removal
operations"}:::decision N_CompactArrayAfterRemovals_Node0_action["The system compacts the array by
moving remaining entries to
eliminate empty positions and
maintains proper sequence numbering"]:::main N_CompactArrayAfterRemovals_Node0 -- Yes --> N_CompactArrayAfterRemovals_Node0_action N_CompactArrayAfterRemovals_Node0_action --> E_CompactArrayAfterRemovals S_CompactArrayAfterRemovals --> N_CompactArrayAfterRemovals_Node0 N_CompactArrayAfterRemovals_Node0 -- No --> E_CompactArrayAfterRemovals
operations"}:::decision N_CompactArrayAfterRemovals_Node0_action["The system compacts the array by
moving remaining entries to
eliminate empty positions and
maintains proper sequence numbering"]:::main N_CompactArrayAfterRemovals_Node0 -- Yes --> N_CompactArrayAfterRemovals_Node0_action N_CompactArrayAfterRemovals_Node0_action --> E_CompactArrayAfterRemovals S_CompactArrayAfterRemovals --> N_CompactArrayAfterRemovals_Node0 N_CompactArrayAfterRemovals_Node0 -- No --> E_CompactArrayAfterRemovals
File: GCX016.cbl
GIVEN:
Disposition codes have been removed from the status array creating gaps
WHEN:
The system completes code removal operations
THEN:
- The system compacts the array by moving remaining entries to eliminate empty positions
- Maintains proper sequence numbering
β Consolidated Acceptance Criteria
- The system attempts to add another status entry → the system prevents the addition and maintains array integrity without exceeding capacity limits
- The array reaches its maximum capacity limit → the system prevents additional entries from being added to avoid array overflow
- A request is made to add a new disposition code → the system prevents the addition to avoid array overflow conditions
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_PreventArrayOverflow(["Start Step"])
E_PreventArrayOverflow(["End Step"])
N_PreventArrayOverflow_Node0{"The system attempts to add another
status entry"}:::decision N_PreventArrayOverflow_Node0_action["The system prevents the addition
and maintains array integrity
without exceeding capacity limits"]:::main N_PreventArrayOverflow_Node0 -- Yes --> N_PreventArrayOverflow_Node0_action N_PreventArrayOverflow_Node0_action --> E_PreventArrayOverflow S_PreventArrayOverflow --> N_PreventArrayOverflow_Node0 N_PreventArrayOverflow_Node1{"The array reaches its maximum
capacity limit"}:::decision N_PreventArrayOverflow_Node1_action["The system prevents additional
entries from being added to avoid
array overflow"]:::main N_PreventArrayOverflow_Node1 -- Yes --> N_PreventArrayOverflow_Node1_action N_PreventArrayOverflow_Node1_action --> E_PreventArrayOverflow N_PreventArrayOverflow_Node0 -- No --> N_PreventArrayOverflow_Node1 N_PreventArrayOverflow_Node2{"A request is made to add a new
disposition code"}:::decision N_PreventArrayOverflow_Node2_action["The system prevents the addition to
avoid array overflow conditions"]:::main N_PreventArrayOverflow_Node2 -- Yes --> N_PreventArrayOverflow_Node2_action N_PreventArrayOverflow_Node2_action --> E_PreventArrayOverflow N_PreventArrayOverflow_Node1 -- No --> N_PreventArrayOverflow_Node2 N_PreventArrayOverflow_Node2 -- No --> E_PreventArrayOverflow
status entry"}:::decision N_PreventArrayOverflow_Node0_action["The system prevents the addition
and maintains array integrity
without exceeding capacity limits"]:::main N_PreventArrayOverflow_Node0 -- Yes --> N_PreventArrayOverflow_Node0_action N_PreventArrayOverflow_Node0_action --> E_PreventArrayOverflow S_PreventArrayOverflow --> N_PreventArrayOverflow_Node0 N_PreventArrayOverflow_Node1{"The array reaches its maximum
capacity limit"}:::decision N_PreventArrayOverflow_Node1_action["The system prevents additional
entries from being added to avoid
array overflow"]:::main N_PreventArrayOverflow_Node1 -- Yes --> N_PreventArrayOverflow_Node1_action N_PreventArrayOverflow_Node1_action --> E_PreventArrayOverflow N_PreventArrayOverflow_Node0 -- No --> N_PreventArrayOverflow_Node1 N_PreventArrayOverflow_Node2{"A request is made to add a new
disposition code"}:::decision N_PreventArrayOverflow_Node2_action["The system prevents the addition to
avoid array overflow conditions"]:::main N_PreventArrayOverflow_Node2 -- Yes --> N_PreventArrayOverflow_Node2_action N_PreventArrayOverflow_Node2_action --> E_PreventArrayOverflow N_PreventArrayOverflow_Node1 -- No --> N_PreventArrayOverflow_Node2 N_PreventArrayOverflow_Node2 -- No --> E_PreventArrayOverflow
File: GCX016.cbl
GIVEN:
The status array is at maximum capacity AND a new disposition code needs to be added
WHEN:
The system attempts to add another status entry
THEN:
- The system prevents the addition
- Maintains array integrity without exceeding capacity limits
File: GCX016.cbl
GIVEN:
A status array is being populated with status codes
WHEN:
The array reaches its maximum capacity limit
THEN:
The system prevents additional entries from being added to avoid array overflow
File: GCX016.cbl
GIVEN:
The status array has reached its maximum capacity (current size equals or exceeds maximum limit)
WHEN:
A request is made to add a new disposition code
THEN:
The system prevents the addition to avoid array overflow conditions
β Consolidated Acceptance Criteria
- The system needs to persist status changes → the system transfers all status entries from the S09A array back to properly formatted S09 database segments with correct sequence numbering
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MoveS09AArrayDatatoS09Segments(["Start Step"])
E_MoveS09AArrayDatatoS09Segments(["End Step"])
N_MoveS09AArrayDatatoS09Segments_Node0{"The system needs to persist status
changes"}:::decision N_MoveS09AArrayDatatoS09Segments_Node0_action["The system transfers all status
entries from the S09A array back to
properly formatted S09 database
segments with correct sequence
numbering"]:::main N_MoveS09AArrayDatatoS09Segments_Node0 -- Yes --> N_MoveS09AArrayDatatoS09Segments_Node0_action N_MoveS09AArrayDatatoS09Segments_Node0_action --> E_MoveS09AArrayDatatoS09Segments S_MoveS09AArrayDatatoS09Segments --> N_MoveS09AArrayDatatoS09Segments_Node0 N_MoveS09AArrayDatatoS09Segments_Node0 -- No --> E_MoveS09AArrayDatatoS09Segments
changes"}:::decision N_MoveS09AArrayDatatoS09Segments_Node0_action["The system transfers all status
entries from the S09A array back to
properly formatted S09 database
segments with correct sequence
numbering"]:::main N_MoveS09AArrayDatatoS09Segments_Node0 -- Yes --> N_MoveS09AArrayDatatoS09Segments_Node0_action N_MoveS09AArrayDatatoS09Segments_Node0_action --> E_MoveS09AArrayDatatoS09Segments S_MoveS09AArrayDatatoS09Segments --> N_MoveS09AArrayDatatoS09Segments_Node0 N_MoveS09AArrayDatatoS09Segments_Node0 -- No --> E_MoveS09AArrayDatatoS09Segments
File: GCX016.cbl
GIVEN:
Status array processing is complete AND modifications have been made to the array
WHEN:
The system needs to persist status changes
THEN:
The system transfers all status entries from the S09A array back to properly formatted S09 database segments with correct sequence numbering
β Consolidated Acceptance Criteria
- The system completes status array processing → the system replaces the existing S09 segments in the database with the updated segment data
- The system needs to persist the changes → the system replaces the S09 segments in the database with the updated status array information
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ReplaceS09SegmentsinDatabase(["Start Step"])
E_ReplaceS09SegmentsinDatabase(["End Step"])
N_ReplaceS09SegmentsinDatabase_Node0{"The system completes status array
processing"}:::decision N_ReplaceS09SegmentsinDatabase_Node0_action["The system replaces the existing
S09 segments in the database with
the updated segment data"]:::main N_ReplaceS09SegmentsinDatabase_Node0 -- Yes --> N_ReplaceS09SegmentsinDatabase_Node0_action N_ReplaceS09SegmentsinDatabase_Node0_action --> E_ReplaceS09SegmentsinDatabase S_ReplaceS09SegmentsinDatabase --> N_ReplaceS09SegmentsinDatabase_Node0 N_ReplaceS09SegmentsinDatabase_Node1{"The system needs to persist the
changes"}:::decision N_ReplaceS09SegmentsinDatabase_Node1_action["The system replaces the S09
segments in the database with the
updated status array information"]:::main N_ReplaceS09SegmentsinDatabase_Node1 -- Yes --> N_ReplaceS09SegmentsinDatabase_Node1_action N_ReplaceS09SegmentsinDatabase_Node1_action --> E_ReplaceS09SegmentsinDatabase N_ReplaceS09SegmentsinDatabase_Node0 -- No --> N_ReplaceS09SegmentsinDatabase_Node1 N_ReplaceS09SegmentsinDatabase_Node1 -- No --> E_ReplaceS09SegmentsinDatabase
processing"}:::decision N_ReplaceS09SegmentsinDatabase_Node0_action["The system replaces the existing
S09 segments in the database with
the updated segment data"]:::main N_ReplaceS09SegmentsinDatabase_Node0 -- Yes --> N_ReplaceS09SegmentsinDatabase_Node0_action N_ReplaceS09SegmentsinDatabase_Node0_action --> E_ReplaceS09SegmentsinDatabase S_ReplaceS09SegmentsinDatabase --> N_ReplaceS09SegmentsinDatabase_Node0 N_ReplaceS09SegmentsinDatabase_Node1{"The system needs to persist the
changes"}:::decision N_ReplaceS09SegmentsinDatabase_Node1_action["The system replaces the S09
segments in the database with the
updated status array information"]:::main N_ReplaceS09SegmentsinDatabase_Node1 -- Yes --> N_ReplaceS09SegmentsinDatabase_Node1_action N_ReplaceS09SegmentsinDatabase_Node1_action --> E_ReplaceS09SegmentsinDatabase N_ReplaceS09SegmentsinDatabase_Node0 -- No --> N_ReplaceS09SegmentsinDatabase_Node1 N_ReplaceS09SegmentsinDatabase_Node1 -- No --> E_ReplaceS09SegmentsinDatabase
File: GCX016.cbl
GIVEN:
S09 segments have been updated with new status information
WHEN:
The system completes status array processing
THEN:
The system replaces the existing S09 segments in the database with the updated segment data
File: GCX016.cbl
GIVEN:
Disposition codes have been removed from the status array AND the array has been compacted
WHEN:
The system needs to persist the changes
THEN:
The system replaces the S09 segments in the database with the updated status array information
β Consolidated Acceptance Criteria
- The system completes status array management → the system updates the cargo record with the current status description and any related status indicators
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UpdateCargoRecordwithNewStatus(["Start Step"])
E_UpdateCargoRecordwithNewStatus(["End Step"])
N_UpdateCargoRecordwithNewStatus_Node0{"The system completes status array
management"}:::decision N_UpdateCargoRecordwithNewStatus_Node0_action["The system updates the cargo record
with the current status description
and any related status indicators"]:::main N_UpdateCargoRecordwithNewStatus_Node0 -- Yes --> N_UpdateCargoRecordwithNewStatus_Node0_action N_UpdateCargoRecordwithNewStatus_Node0_action --> E_UpdateCargoRecordwithNewStatus S_UpdateCargoRecordwithNewStatus --> N_UpdateCargoRecordwithNewStatus_Node0 N_UpdateCargoRecordwithNewStatus_Node0 -- No --> E_UpdateCargoRecordwithNewStatus
management"}:::decision N_UpdateCargoRecordwithNewStatus_Node0_action["The system updates the cargo record
with the current status description
and any related status indicators"]:::main N_UpdateCargoRecordwithNewStatus_Node0 -- Yes --> N_UpdateCargoRecordwithNewStatus_Node0_action N_UpdateCargoRecordwithNewStatus_Node0_action --> E_UpdateCargoRecordwithNewStatus S_UpdateCargoRecordwithNewStatus --> N_UpdateCargoRecordwithNewStatus_Node0 N_UpdateCargoRecordwithNewStatus_Node0 -- No --> E_UpdateCargoRecordwithNewStatus
File: GCX016.cbl
GIVEN:
Status segments have been successfully updated in the database
WHEN:
The system completes status array management
THEN:
- The system updates the cargo record with the current status description
- Any related status indicators
β Consolidated Acceptance Criteria
- The system encounters an ARL disposition code → the system re-evaluates the status array and proceeds to capacity checking
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ARLAutoReleaseReevaluateArray(["Start Step"])
E_ARLAutoReleaseReevaluateArray(["End Step"])
N_ARLAutoReleaseReevaluateArray_Node0{"The system encounters an ARL
disposition code"}:::decision N_ARLAutoReleaseReevaluateArray_Node0_action["The system re-evaluates the status
array and proceeds to capacity
checking"]:::main N_ARLAutoReleaseReevaluateArray_Node0 -- Yes --> N_ARLAutoReleaseReevaluateArray_Node0_action N_ARLAutoReleaseReevaluateArray_Node0_action --> E_ARLAutoReleaseReevaluateArray S_ARLAutoReleaseReevaluateArray --> N_ARLAutoReleaseReevaluateArray_Node0 N_ARLAutoReleaseReevaluateArray_Node0 -- No --> E_ARLAutoReleaseReevaluateArray
disposition code"}:::decision N_ARLAutoReleaseReevaluateArray_Node0_action["The system re-evaluates the status
array and proceeds to capacity
checking"]:::main N_ARLAutoReleaseReevaluateArray_Node0 -- Yes --> N_ARLAutoReleaseReevaluateArray_Node0_action N_ARLAutoReleaseReevaluateArray_Node0_action --> E_ARLAutoReleaseReevaluateArray S_ARLAutoReleaseReevaluateArray --> N_ARLAutoReleaseReevaluateArray_Node0 N_ARLAutoReleaseReevaluateArray_Node0 -- No --> E_ARLAutoReleaseReevaluateArray
File: GCX016.cbl
GIVEN:
A disposition code of type ARL (Auto Release) is being processed
WHEN:
The system encounters an ARL disposition code
THEN:
- The system re-evaluates the status array
- Proceeds to capacity checking
β Consolidated Acceptance Criteria
- The system encounters an MRL disposition code → the system forces processing and proceeds to capacity checking
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MRLManualReleaseForceProcessing(["Start Step"])
E_MRLManualReleaseForceProcessing(["End Step"])
N_MRLManualReleaseForceProcessing_Node0{"The system encounters an MRL
disposition code"}:::decision N_MRLManualReleaseForceProcessing_Node0_action["The system forces processing and
proceeds to capacity checking"]:::main N_MRLManualReleaseForceProcessing_Node0 -- Yes --> N_MRLManualReleaseForceProcessing_Node0_action N_MRLManualReleaseForceProcessing_Node0_action --> E_MRLManualReleaseForceProcessing S_MRLManualReleaseForceProcessing --> N_MRLManualReleaseForceProcessing_Node0 N_MRLManualReleaseForceProcessing_Node0 -- No --> E_MRLManualReleaseForceProcessing
disposition code"}:::decision N_MRLManualReleaseForceProcessing_Node0_action["The system forces processing and
proceeds to capacity checking"]:::main N_MRLManualReleaseForceProcessing_Node0 -- Yes --> N_MRLManualReleaseForceProcessing_Node0_action N_MRLManualReleaseForceProcessing_Node0_action --> E_MRLManualReleaseForceProcessing S_MRLManualReleaseForceProcessing --> N_MRLManualReleaseForceProcessing_Node0 N_MRLManualReleaseForceProcessing_Node0 -- No --> E_MRLManualReleaseForceProcessing
File: GCX016.cbl
GIVEN:
A disposition code of type MRL (Manual Release) is being processed
WHEN:
The system encounters an MRL disposition code
THEN:
- The system forces processing
- Proceeds to capacity checking
β Consolidated Acceptance Criteria
- The array capacity is exceeded or at maximum limit → the system terminates processing to prevent overflow and completes array modifications
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ArrayOverflowProtection(["Start Step"])
E_ArrayOverflowProtection(["End Step"])
N_ArrayOverflowProtection_Node0{"The array capacity is exceeded or
at maximum limit"}:::decision N_ArrayOverflowProtection_Node0_action["The system terminates processing to
prevent overflow and completes array
modifications"]:::main N_ArrayOverflowProtection_Node0 -- Yes --> N_ArrayOverflowProtection_Node0_action N_ArrayOverflowProtection_Node0_action --> E_ArrayOverflowProtection S_ArrayOverflowProtection --> N_ArrayOverflowProtection_Node0 N_ArrayOverflowProtection_Node0 -- No --> E_ArrayOverflowProtection
at maximum limit"}:::decision N_ArrayOverflowProtection_Node0_action["The system terminates processing to
prevent overflow and completes array
modifications"]:::main N_ArrayOverflowProtection_Node0 -- Yes --> N_ArrayOverflowProtection_Node0_action N_ArrayOverflowProtection_Node0_action --> E_ArrayOverflowProtection S_ArrayOverflowProtection --> N_ArrayOverflowProtection_Node0 N_ArrayOverflowProtection_Node0 -- No --> E_ArrayOverflowProtection
File: GCX016.cbl
GIVEN:
A new disposition code needs to be added to the status array
WHEN:
The array capacity is exceeded or at maximum limit
THEN:
- The system terminates processing to prevent overflow
- Completes array modifications
β Consolidated Acceptance Criteria
- The same disposition code already exists in the array → the system skips adding the duplicate entry and completes array modifications
- The system attempts to insert the same hold code → the system skips the insertion and proceeds to completion without adding the duplicate
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SkipDuplicateEntry(["Start Step"])
E_SkipDuplicateEntry(["End Step"])
N_SkipDuplicateEntry_Node0{"The same disposition code already
exists in the array"}:::decision N_SkipDuplicateEntry_Node0_action["The system skips adding the
duplicate entry and completes array
modifications"]:::main N_SkipDuplicateEntry_Node0 -- Yes --> N_SkipDuplicateEntry_Node0_action N_SkipDuplicateEntry_Node0_action --> E_SkipDuplicateEntry S_SkipDuplicateEntry --> N_SkipDuplicateEntry_Node0 N_SkipDuplicateEntry_Node1{"The system attempts to insert the
same hold code"}:::decision N_SkipDuplicateEntry_Node1_action["The system skips the insertion and
proceeds to completion without
adding the duplicate"]:::main N_SkipDuplicateEntry_Node1 -- Yes --> N_SkipDuplicateEntry_Node1_action N_SkipDuplicateEntry_Node1_action --> E_SkipDuplicateEntry N_SkipDuplicateEntry_Node0 -- No --> N_SkipDuplicateEntry_Node1 N_SkipDuplicateEntry_Node1 -- No --> E_SkipDuplicateEntry
exists in the array"}:::decision N_SkipDuplicateEntry_Node0_action["The system skips adding the
duplicate entry and completes array
modifications"]:::main N_SkipDuplicateEntry_Node0 -- Yes --> N_SkipDuplicateEntry_Node0_action N_SkipDuplicateEntry_Node0_action --> E_SkipDuplicateEntry S_SkipDuplicateEntry --> N_SkipDuplicateEntry_Node0 N_SkipDuplicateEntry_Node1{"The system attempts to insert the
same hold code"}:::decision N_SkipDuplicateEntry_Node1_action["The system skips the insertion and
proceeds to completion without
adding the duplicate"]:::main N_SkipDuplicateEntry_Node1 -- Yes --> N_SkipDuplicateEntry_Node1_action N_SkipDuplicateEntry_Node1_action --> E_SkipDuplicateEntry N_SkipDuplicateEntry_Node0 -- No --> N_SkipDuplicateEntry_Node1 N_SkipDuplicateEntry_Node1 -- No --> E_SkipDuplicateEntry
File: GCX016.cbl
GIVEN:
A disposition code is being added to the status array
WHEN:
The same disposition code already exists in the array
THEN:
- The system skips adding the duplicate entry
- Completes array modifications
File: GCX016.cbl
GIVEN:
A hold code already exists in the status array
WHEN:
The system attempts to insert the same hold code
THEN:
- The system skips the insertion
- Proceeds to completion without adding the duplicate
β Consolidated Acceptance Criteria
- The counterpart code is found in the status array → the system removes the counterpart code and compacts the array before adding the new code
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RemoveCounterpartCode(["Start Step"])
E_RemoveCounterpartCode(["End Step"])
N_RemoveCounterpartCode_Node0{"The counterpart code is found in
the status array"}:::decision N_RemoveCounterpartCode_Node0_action["The system removes the counterpart
code and compacts the array before
adding the new code"]:::main N_RemoveCounterpartCode_Node0 -- Yes --> N_RemoveCounterpartCode_Node0_action N_RemoveCounterpartCode_Node0_action --> E_RemoveCounterpartCode S_RemoveCounterpartCode --> N_RemoveCounterpartCode_Node0 N_RemoveCounterpartCode_Node0 -- No --> E_RemoveCounterpartCode
the status array"}:::decision N_RemoveCounterpartCode_Node0_action["The system removes the counterpart
code and compacts the array before
adding the new code"]:::main N_RemoveCounterpartCode_Node0 -- Yes --> N_RemoveCounterpartCode_Node0_action N_RemoveCounterpartCode_Node0_action --> E_RemoveCounterpartCode S_RemoveCounterpartCode --> N_RemoveCounterpartCode_Node0 N_RemoveCounterpartCode_Node0 -- No --> E_RemoveCounterpartCode
File: GCX016.cbl
GIVEN:
A new disposition code is being added that has a defined counterpart code
WHEN:
The counterpart code is found in the status array
THEN:
- The system removes the counterpart code
- Compacts the array before adding the new code
β Consolidated Acceptance Criteria
- Array compaction is required → the system shifts remaining elements to fill gaps and updates the array count
- The system compacts the array to eliminate empty positions → all remaining status entries are moved to fill gaps and maintain array integrity
- The system compacts the array elements → all remaining array elements are shifted to eliminate gaps and maintain array integrity
- The system compacts the array structure → all remaining elements are shifted up to eliminate empty positions and maintain array integrity
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CompactArrayElements(["Start Step"])
E_CompactArrayElements(["End Step"])
N_CompactArrayElements_Node0{"Array compaction is required"}:::decision
N_CompactArrayElements_Node0_action["The system shifts remaining
elements to fill gaps and updates
the array count"]:::main N_CompactArrayElements_Node0 -- Yes --> N_CompactArrayElements_Node0_action N_CompactArrayElements_Node0_action --> E_CompactArrayElements S_CompactArrayElements --> N_CompactArrayElements_Node0 N_CompactArrayElements_Node1{"The system compacts the array to
eliminate empty positions"}:::decision N_CompactArrayElements_Node1_action["All remaining status entries are
moved to fill gaps and maintain
array integrity"]:::main N_CompactArrayElements_Node1 -- Yes --> N_CompactArrayElements_Node1_action N_CompactArrayElements_Node1_action --> E_CompactArrayElements N_CompactArrayElements_Node0 -- No --> N_CompactArrayElements_Node1 N_CompactArrayElements_Node2{"The system compacts the array
elements"}:::decision N_CompactArrayElements_Node2_action["All remaining array elements are
shifted to eliminate gaps and
maintain array integrity"]:::main N_CompactArrayElements_Node2 -- Yes --> N_CompactArrayElements_Node2_action N_CompactArrayElements_Node2_action --> E_CompactArrayElements N_CompactArrayElements_Node1 -- No --> N_CompactArrayElements_Node2 N_CompactArrayElements_Node3{"The system compacts the array
structure"}:::decision N_CompactArrayElements_Node3_action["All remaining elements are shifted
up to eliminate empty positions and
maintain array integrity"]:::main N_CompactArrayElements_Node3 -- Yes --> N_CompactArrayElements_Node3_action N_CompactArrayElements_Node3_action --> E_CompactArrayElements N_CompactArrayElements_Node2 -- No --> N_CompactArrayElements_Node3 N_CompactArrayElements_Node3 -- No --> E_CompactArrayElements
elements to fill gaps and updates
the array count"]:::main N_CompactArrayElements_Node0 -- Yes --> N_CompactArrayElements_Node0_action N_CompactArrayElements_Node0_action --> E_CompactArrayElements S_CompactArrayElements --> N_CompactArrayElements_Node0 N_CompactArrayElements_Node1{"The system compacts the array to
eliminate empty positions"}:::decision N_CompactArrayElements_Node1_action["All remaining status entries are
moved to fill gaps and maintain
array integrity"]:::main N_CompactArrayElements_Node1 -- Yes --> N_CompactArrayElements_Node1_action N_CompactArrayElements_Node1_action --> E_CompactArrayElements N_CompactArrayElements_Node0 -- No --> N_CompactArrayElements_Node1 N_CompactArrayElements_Node2{"The system compacts the array
elements"}:::decision N_CompactArrayElements_Node2_action["All remaining array elements are
shifted to eliminate gaps and
maintain array integrity"]:::main N_CompactArrayElements_Node2 -- Yes --> N_CompactArrayElements_Node2_action N_CompactArrayElements_Node2_action --> E_CompactArrayElements N_CompactArrayElements_Node1 -- No --> N_CompactArrayElements_Node2 N_CompactArrayElements_Node3{"The system compacts the array
structure"}:::decision N_CompactArrayElements_Node3_action["All remaining elements are shifted
up to eliminate empty positions and
maintain array integrity"]:::main N_CompactArrayElements_Node3 -- Yes --> N_CompactArrayElements_Node3_action N_CompactArrayElements_Node3_action --> E_CompactArrayElements N_CompactArrayElements_Node2 -- No --> N_CompactArrayElements_Node3 N_CompactArrayElements_Node3 -- No --> E_CompactArrayElements
File: GCX016.cbl
GIVEN:
One or more disposition codes have been removed from the status array
WHEN:
Array compaction is required
THEN:
- The system shifts remaining elements to fill gaps
- Updates the array count
File: GCX016.cbl
GIVEN:
Counterpart codes have been removed from the status array
WHEN:
The system compacts the array to eliminate empty positions
THEN:
- All remaining status entries are moved to fill gaps
- Maintain array integrity
File: GCX016.cbl
GIVEN:
A counterpart code has been removed from the status array
WHEN:
The system compacts the array elements
THEN:
- All remaining array elements are shifted to eliminate gaps
- Maintain array integrity
File: GCX016.cbl
GIVEN:
One or more counterpart codes have been removed from the status array
WHEN:
The system compacts the array structure
THEN:
- All remaining elements are shifted up to eliminate empty positions
- Maintain array integrity
β Consolidated Acceptance Criteria
- The system processes location information for the disposition code → the system adds border location information to the status entry and updates the released flag
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AddBorderLocation(["Start Step"])
E_AddBorderLocation(["End Step"])
N_AddBorderLocation_Node0{"The system processes location
information for the disposition code"}:::decision N_AddBorderLocation_Node0_action["The system adds border location
information to the status entry and
updates the released flag"]:::main N_AddBorderLocation_Node0 -- Yes --> N_AddBorderLocation_Node0_action N_AddBorderLocation_Node0_action --> E_AddBorderLocation S_AddBorderLocation --> N_AddBorderLocation_Node0 N_AddBorderLocation_Node0 -- No --> E_AddBorderLocation
information for the disposition code"}:::decision N_AddBorderLocation_Node0_action["The system adds border location
information to the status entry and
updates the released flag"]:::main N_AddBorderLocation_Node0 -- Yes --> N_AddBorderLocation_Node0_action N_AddBorderLocation_Node0_action --> E_AddBorderLocation S_AddBorderLocation --> N_AddBorderLocation_Node0 N_AddBorderLocation_Node0 -- No --> E_AddBorderLocation
File: GCX016.cbl
GIVEN:
A disposition code requires location information and border location is specified
WHEN:
The system processes location information for the disposition code
THEN:
- The system adds border location information to the status entry
- Updates the released flag
β Consolidated Acceptance Criteria
- The system processes location information for the disposition code → the system adds destination location information to the status entry and updates the released flag
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AddDestinationLocation(["Start Step"])
E_AddDestinationLocation(["End Step"])
N_AddDestinationLocation_Node0{"The system processes location
information for the disposition code"}:::decision N_AddDestinationLocation_Node0_action["The system adds destination
location information to the status
entry and updates the released flag"]:::main N_AddDestinationLocation_Node0 -- Yes --> N_AddDestinationLocation_Node0_action N_AddDestinationLocation_Node0_action --> E_AddDestinationLocation S_AddDestinationLocation --> N_AddDestinationLocation_Node0 N_AddDestinationLocation_Node0 -- No --> E_AddDestinationLocation
information for the disposition code"}:::decision N_AddDestinationLocation_Node0_action["The system adds destination
location information to the status
entry and updates the released flag"]:::main N_AddDestinationLocation_Node0 -- Yes --> N_AddDestinationLocation_Node0_action N_AddDestinationLocation_Node0_action --> E_AddDestinationLocation S_AddDestinationLocation --> N_AddDestinationLocation_Node0 N_AddDestinationLocation_Node0 -- No --> E_AddDestinationLocation
File: GCX016.cbl
GIVEN:
A disposition code requires location information and destination location is specified
WHEN:
The system processes location information for the disposition code
THEN:
- The system adds destination location information to the status entry
- Updates the released flag
β Consolidated Acceptance Criteria
- The system processes the quantity action → the system adds the specified quantity to the release amount and proceeds to array compaction
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ProcessAddQuantity(["Start Step"])
E_ProcessAddQuantity(["End Step"])
N_ProcessAddQuantity_Node0{"The system processes the quantity
action"}:::decision N_ProcessAddQuantity_Node0_action["The system adds the specified
quantity to the release amount and
proceeds to array compaction"]:::main N_ProcessAddQuantity_Node0 -- Yes --> N_ProcessAddQuantity_Node0_action N_ProcessAddQuantity_Node0_action --> E_ProcessAddQuantity S_ProcessAddQuantity --> N_ProcessAddQuantity_Node0 N_ProcessAddQuantity_Node0 -- No --> E_ProcessAddQuantity
action"}:::decision N_ProcessAddQuantity_Node0_action["The system adds the specified
quantity to the release amount and
proceeds to array compaction"]:::main N_ProcessAddQuantity_Node0 -- Yes --> N_ProcessAddQuantity_Node0_action N_ProcessAddQuantity_Node0_action --> E_ProcessAddQuantity S_ProcessAddQuantity --> N_ProcessAddQuantity_Node0 N_ProcessAddQuantity_Node0 -- No --> E_ProcessAddQuantity
File: GCX016.cbl
GIVEN:
A disposition code requires quantity action of type ADD
WHEN:
The system processes the quantity action
THEN:
- The system adds the specified quantity to the release amount
- Proceeds to array compaction
β Consolidated Acceptance Criteria
- The system processes the quantity action → the system subtracts the specified quantity from the release amount and proceeds to array compaction
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ProcessSubtractQuantity(["Start Step"])
E_ProcessSubtractQuantity(["End Step"])
N_ProcessSubtractQuantity_Node0{"The system processes the quantity
action"}:::decision N_ProcessSubtractQuantity_Node0_action["The system subtracts the specified
quantity from the release amount and
proceeds to array compaction"]:::main N_ProcessSubtractQuantity_Node0 -- Yes --> N_ProcessSubtractQuantity_Node0_action N_ProcessSubtractQuantity_Node0_action --> E_ProcessSubtractQuantity S_ProcessSubtractQuantity --> N_ProcessSubtractQuantity_Node0 N_ProcessSubtractQuantity_Node0 -- No --> E_ProcessSubtractQuantity
action"}:::decision N_ProcessSubtractQuantity_Node0_action["The system subtracts the specified
quantity from the release amount and
proceeds to array compaction"]:::main N_ProcessSubtractQuantity_Node0 -- Yes --> N_ProcessSubtractQuantity_Node0_action N_ProcessSubtractQuantity_Node0_action --> E_ProcessSubtractQuantity S_ProcessSubtractQuantity --> N_ProcessSubtractQuantity_Node0 N_ProcessSubtractQuantity_Node0 -- No --> E_ProcessSubtractQuantity
File: GCX016.cbl
GIVEN:
A disposition code requires quantity action of type SUBTRACT
WHEN:
The system processes the quantity action
THEN:
- The system subtracts the specified quantity from the release amount
- Proceeds to array compaction
β Consolidated Acceptance Criteria
- The system processes the information-only disposition code → the system sets the information flag without processing quantities and proceeds to array compaction
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetInformationFlagOnly(["Start Step"])
E_SetInformationFlagOnly(["End Step"])
N_SetInformationFlagOnly_Node0{"The system processes the
information-only disposition code"}:::decision N_SetInformationFlagOnly_Node0_action["The system sets the information
flag without processing quantities
and proceeds to array compaction"]:::main N_SetInformationFlagOnly_Node0 -- Yes --> N_SetInformationFlagOnly_Node0_action N_SetInformationFlagOnly_Node0_action --> E_SetInformationFlagOnly S_SetInformationFlagOnly --> N_SetInformationFlagOnly_Node0 N_SetInformationFlagOnly_Node0 -- No --> E_SetInformationFlagOnly
information-only disposition code"}:::decision N_SetInformationFlagOnly_Node0_action["The system sets the information
flag without processing quantities
and proceeds to array compaction"]:::main N_SetInformationFlagOnly_Node0 -- Yes --> N_SetInformationFlagOnly_Node0_action N_SetInformationFlagOnly_Node0_action --> E_SetInformationFlagOnly S_SetInformationFlagOnly --> N_SetInformationFlagOnly_Node0 N_SetInformationFlagOnly_Node0 -- No --> E_SetInformationFlagOnly
File: GCX016.cbl
GIVEN:
A disposition code is for informational purposes only
WHEN:
The system processes the information-only disposition code
THEN:
- The system sets the information flag without processing quantities
- Proceeds to array compaction
β Consolidated Acceptance Criteria
- The system validates array integrity → the system ensures array structure is valid and completes the array modifications process
- System validates the compacted array structure → array integrity is verified to ensure all elements are properly positioned and accessible
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ValidateArrayIntegrity(["Start Step"])
E_ValidateArrayIntegrity(["End Step"])
N_ValidateArrayIntegrity_Node0{"The system validates array
integrity"}:::decision N_ValidateArrayIntegrity_Node0_action["The system ensures array structure
is valid and completes the array
modifications process"]:::main N_ValidateArrayIntegrity_Node0 -- Yes --> N_ValidateArrayIntegrity_Node0_action N_ValidateArrayIntegrity_Node0_action --> E_ValidateArrayIntegrity S_ValidateArrayIntegrity --> N_ValidateArrayIntegrity_Node0 N_ValidateArrayIntegrity_Node1{"System validates the compacted
array structure"}:::decision N_ValidateArrayIntegrity_Node1_action["Array integrity is verified to
ensure all elements are properly
positioned and accessible"]:::main N_ValidateArrayIntegrity_Node1 -- Yes --> N_ValidateArrayIntegrity_Node1_action N_ValidateArrayIntegrity_Node1_action --> E_ValidateArrayIntegrity N_ValidateArrayIntegrity_Node0 -- No --> N_ValidateArrayIntegrity_Node1 N_ValidateArrayIntegrity_Node1 -- No --> E_ValidateArrayIntegrity
integrity"}:::decision N_ValidateArrayIntegrity_Node0_action["The system ensures array structure
is valid and completes the array
modifications process"]:::main N_ValidateArrayIntegrity_Node0 -- Yes --> N_ValidateArrayIntegrity_Node0_action N_ValidateArrayIntegrity_Node0_action --> E_ValidateArrayIntegrity S_ValidateArrayIntegrity --> N_ValidateArrayIntegrity_Node0 N_ValidateArrayIntegrity_Node1{"System validates the compacted
array structure"}:::decision N_ValidateArrayIntegrity_Node1_action["Array integrity is verified to
ensure all elements are properly
positioned and accessible"]:::main N_ValidateArrayIntegrity_Node1 -- Yes --> N_ValidateArrayIntegrity_Node1_action N_ValidateArrayIntegrity_Node1_action --> E_ValidateArrayIntegrity N_ValidateArrayIntegrity_Node0 -- No --> N_ValidateArrayIntegrity_Node1 N_ValidateArrayIntegrity_Node1 -- No --> E_ValidateArrayIntegrity
File: GCX016.cbl
GIVEN:
Array modifications have been completed including compaction and count updates
WHEN:
The system validates array integrity
THEN:
- The system ensures array structure is valid
- Completes the array modifications process
File: GCX016.cbl
GIVEN:
Array compaction process is complete
WHEN:
System validates the compacted array structure
THEN:
- Array integrity is verified to ensure all elements are properly positioned
- Accessible
β Consolidated Acceptance Criteria
- The system needs to add a new disposition code to the array → the system checks the current count of entries in the status array
- The system checks the current array count → the current number of status entries in the array is determined and validated
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CheckCurrentArrayCount(["Start Step"])
E_CheckCurrentArrayCount(["End Step"])
N_CheckCurrentArrayCount_Node0{"The system needs to add a new
disposition code to the array"}:::decision N_CheckCurrentArrayCount_Node0_action["The system checks the current count
of entries in the status array"]:::main N_CheckCurrentArrayCount_Node0 -- Yes --> N_CheckCurrentArrayCount_Node0_action N_CheckCurrentArrayCount_Node0_action --> E_CheckCurrentArrayCount S_CheckCurrentArrayCount --> N_CheckCurrentArrayCount_Node0 N_CheckCurrentArrayCount_Node1{"The system checks the current array
count"}:::decision N_CheckCurrentArrayCount_Node1_action["The current number of status
entries in the array is determined
and validated"]:::main N_CheckCurrentArrayCount_Node1 -- Yes --> N_CheckCurrentArrayCount_Node1_action N_CheckCurrentArrayCount_Node1_action --> E_CheckCurrentArrayCount N_CheckCurrentArrayCount_Node0 -- No --> N_CheckCurrentArrayCount_Node1 N_CheckCurrentArrayCount_Node1 -- No --> E_CheckCurrentArrayCount
disposition code to the array"}:::decision N_CheckCurrentArrayCount_Node0_action["The system checks the current count
of entries in the status array"]:::main N_CheckCurrentArrayCount_Node0 -- Yes --> N_CheckCurrentArrayCount_Node0_action N_CheckCurrentArrayCount_Node0_action --> E_CheckCurrentArrayCount S_CheckCurrentArrayCount --> N_CheckCurrentArrayCount_Node0 N_CheckCurrentArrayCount_Node1{"The system checks the current array
count"}:::decision N_CheckCurrentArrayCount_Node1_action["The current number of status
entries in the array is determined
and validated"]:::main N_CheckCurrentArrayCount_Node1 -- Yes --> N_CheckCurrentArrayCount_Node1_action N_CheckCurrentArrayCount_Node1_action --> E_CheckCurrentArrayCount N_CheckCurrentArrayCount_Node0 -- No --> N_CheckCurrentArrayCount_Node1 N_CheckCurrentArrayCount_Node1 -- No --> E_CheckCurrentArrayCount
File: GCX016.cbl
GIVEN:
A status array exists with current disposition codes
WHEN:
The system needs to add a new disposition code to the array
THEN:
The system checks the current count of entries in the status array
File: GCX016.cbl
GIVEN:
A new disposition code needs to be added to the status array
WHEN:
The system checks the current array count
THEN:
- The current number of status entries in the array is determined
- Validated
β Consolidated Acceptance Criteria
- Checking if new disposition codes can be added → the system retrieves the maximum allowed array limit from system configuration
- A capacity check is required for the status array → the maximum allowable array limit is retrieved and used for validation
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GetMaximumArrayLimit(["Start Step"])
E_GetMaximumArrayLimit(["End Step"])
N_GetMaximumArrayLimit_Node0{"Checking if new disposition codes
can be added"}:::decision N_GetMaximumArrayLimit_Node0_action["The system retrieves the maximum
allowed array limit from system
configuration"]:::main N_GetMaximumArrayLimit_Node0 -- Yes --> N_GetMaximumArrayLimit_Node0_action N_GetMaximumArrayLimit_Node0_action --> E_GetMaximumArrayLimit S_GetMaximumArrayLimit --> N_GetMaximumArrayLimit_Node0 N_GetMaximumArrayLimit_Node1{"A capacity check is required for
the status array"}:::decision N_GetMaximumArrayLimit_Node1_action["The maximum allowable array limit
is retrieved and used for validation"]:::main N_GetMaximumArrayLimit_Node1 -- Yes --> N_GetMaximumArrayLimit_Node1_action N_GetMaximumArrayLimit_Node1_action --> E_GetMaximumArrayLimit N_GetMaximumArrayLimit_Node0 -- No --> N_GetMaximumArrayLimit_Node1 N_GetMaximumArrayLimit_Node1 -- No --> E_GetMaximumArrayLimit
can be added"}:::decision N_GetMaximumArrayLimit_Node0_action["The system retrieves the maximum
allowed array limit from system
configuration"]:::main N_GetMaximumArrayLimit_Node0 -- Yes --> N_GetMaximumArrayLimit_Node0_action N_GetMaximumArrayLimit_Node0_action --> E_GetMaximumArrayLimit S_GetMaximumArrayLimit --> N_GetMaximumArrayLimit_Node0 N_GetMaximumArrayLimit_Node1{"A capacity check is required for
the status array"}:::decision N_GetMaximumArrayLimit_Node1_action["The maximum allowable array limit
is retrieved and used for validation"]:::main N_GetMaximumArrayLimit_Node1 -- Yes --> N_GetMaximumArrayLimit_Node1_action N_GetMaximumArrayLimit_Node1_action --> E_GetMaximumArrayLimit N_GetMaximumArrayLimit_Node0 -- No --> N_GetMaximumArrayLimit_Node1 N_GetMaximumArrayLimit_Node1 -- No --> E_GetMaximumArrayLimit
File: GCX016.cbl
GIVEN:
The system needs to validate array capacity
WHEN:
Checking if new disposition codes can be added
THEN:
The system retrieves the maximum allowed array limit from system configuration
File: GCX016.cbl
GIVEN:
The system is processing status array operations
WHEN:
A capacity check is required for the status array
THEN:
- The maximum allowable array limit is retrieved
- Used for validation
β Consolidated Acceptance Criteria
- If array capacity → if current array count is less than maximum limit, allow addition; otherwise prevent addition
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ArrayCountMaximum(["Start Step"])
E_ArrayCountMaximum(["End Step"])
N_ArrayCountMaximum_Node0{"The system evaluates array capacity"}:::decision
N_ArrayCountMaximum_Node0_action["If current array count is less than
maximum limit, allow addition
otherwise prevent addition"]:::main N_ArrayCountMaximum_Node0 -- Yes --> N_ArrayCountMaximum_Node0_action N_ArrayCountMaximum_Node0_action --> E_ArrayCountMaximum S_ArrayCountMaximum --> N_ArrayCountMaximum_Node0 N_ArrayCountMaximum_Node0 -- No --> E_ArrayCountMaximum
maximum limit, allow addition
otherwise prevent addition"]:::main N_ArrayCountMaximum_Node0 -- Yes --> N_ArrayCountMaximum_Node0_action N_ArrayCountMaximum_Node0_action --> E_ArrayCountMaximum S_ArrayCountMaximum --> N_ArrayCountMaximum_Node0 N_ArrayCountMaximum_Node0 -- No --> E_ArrayCountMaximum
File: GCX016.cbl
GIVEN:
Current array count and maximum array limit are known
WHEN:
The system evaluates array capacity
THEN:
If current array count is less than maximum limit, allow addition; otherwise prevent addition
β Consolidated Acceptance Criteria
- A valid disposition code needs to be added → the system adds the disposition code to the next available position in the status array
- A new disposition code is added to the array → the disposition code is stored in the next available array position
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AddDispositionCodetoArray(["Start Step"])
E_AddDispositionCodetoArray(["End Step"])
N_AddDispositionCodetoArray_Node0{"A valid disposition code needs to
be added"}:::decision N_AddDispositionCodetoArray_Node0_action["The system adds the disposition
code to the next available position
in the status array"]:::main N_AddDispositionCodetoArray_Node0 -- Yes --> N_AddDispositionCodetoArray_Node0_action N_AddDispositionCodetoArray_Node0_action --> E_AddDispositionCodetoArray S_AddDispositionCodetoArray --> N_AddDispositionCodetoArray_Node0 N_AddDispositionCodetoArray_Node1{"A new disposition code is added to
the array"}:::decision N_AddDispositionCodetoArray_Node1_action["The disposition code is stored in
the next available array position"]:::main N_AddDispositionCodetoArray_Node1 -- Yes --> N_AddDispositionCodetoArray_Node1_action N_AddDispositionCodetoArray_Node1_action --> E_AddDispositionCodetoArray N_AddDispositionCodetoArray_Node0 -- No --> N_AddDispositionCodetoArray_Node1 N_AddDispositionCodetoArray_Node1 -- No --> E_AddDispositionCodetoArray
be added"}:::decision N_AddDispositionCodetoArray_Node0_action["The system adds the disposition
code to the next available position
in the status array"]:::main N_AddDispositionCodetoArray_Node0 -- Yes --> N_AddDispositionCodetoArray_Node0_action N_AddDispositionCodetoArray_Node0_action --> E_AddDispositionCodetoArray S_AddDispositionCodetoArray --> N_AddDispositionCodetoArray_Node0 N_AddDispositionCodetoArray_Node1{"A new disposition code is added to
the array"}:::decision N_AddDispositionCodetoArray_Node1_action["The disposition code is stored in
the next available array position"]:::main N_AddDispositionCodetoArray_Node1 -- Yes --> N_AddDispositionCodetoArray_Node1_action N_AddDispositionCodetoArray_Node1_action --> E_AddDispositionCodetoArray N_AddDispositionCodetoArray_Node0 -- No --> N_AddDispositionCodetoArray_Node1 N_AddDispositionCodetoArray_Node1 -- No --> E_AddDispositionCodetoArray
File: GCX016.cbl
GIVEN:
Array has available capacity for new entries
WHEN:
A valid disposition code needs to be added
THEN:
The system adds the disposition code to the next available position in the status array
File: GCX016.cbl
GIVEN:
Space is available in the status array
WHEN:
A new disposition code is added to the array
THEN:
The disposition code is stored in the next available array position
β Consolidated Acceptance Criteria
- Attempting to add a new disposition code → the system sets an array overflow flag to indicate capacity exceeded condition
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetArrayOverflowFlag(["Start Step"])
E_SetArrayOverflowFlag(["End Step"])
N_SetArrayOverflowFlag_Node0{"Attempting to add a new disposition
code"}:::decision N_SetArrayOverflowFlag_Node0_action["The system sets an array overflow
flag to indicate capacity exceeded
condition"]:::main N_SetArrayOverflowFlag_Node0 -- Yes --> N_SetArrayOverflowFlag_Node0_action N_SetArrayOverflowFlag_Node0_action --> E_SetArrayOverflowFlag S_SetArrayOverflowFlag --> N_SetArrayOverflowFlag_Node0 N_SetArrayOverflowFlag_Node0 -- No --> E_SetArrayOverflowFlag
code"}:::decision N_SetArrayOverflowFlag_Node0_action["The system sets an array overflow
flag to indicate capacity exceeded
condition"]:::main N_SetArrayOverflowFlag_Node0 -- Yes --> N_SetArrayOverflowFlag_Node0_action N_SetArrayOverflowFlag_Node0_action --> E_SetArrayOverflowFlag S_SetArrayOverflowFlag --> N_SetArrayOverflowFlag_Node0 N_SetArrayOverflowFlag_Node0 -- No --> E_SetArrayOverflowFlag
File: GCX016.cbl
GIVEN:
Array count equals or exceeds maximum capacity
WHEN:
Attempting to add a new disposition code
THEN:
The system sets an array overflow flag to indicate capacity exceeded condition
β Consolidated Acceptance Criteria
- Processing the overflow condition → the system generates an appropriate error message indicating array capacity has been exceeded
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GenerateOverflowErrorMessage(["Start Step"])
E_GenerateOverflowErrorMessage(["End Step"])
N_GenerateOverflowErrorMessage_Node0{"Processing the overflow condition"}:::decision
N_GenerateOverflowErrorMessage_Node0_action["The system generates an appropriate
error message indicating array
capacity has been exceeded"]:::main N_GenerateOverflowErrorMessage_Node0 -- Yes --> N_GenerateOverflowErrorMessage_Node0_action N_GenerateOverflowErrorMessage_Node0_action --> E_GenerateOverflowErrorMessage S_GenerateOverflowErrorMessage --> N_GenerateOverflowErrorMessage_Node0 N_GenerateOverflowErrorMessage_Node0 -- No --> E_GenerateOverflowErrorMessage
error message indicating array
capacity has been exceeded"]:::main N_GenerateOverflowErrorMessage_Node0 -- Yes --> N_GenerateOverflowErrorMessage_Node0_action N_GenerateOverflowErrorMessage_Node0_action --> E_GenerateOverflowErrorMessage S_GenerateOverflowErrorMessage --> N_GenerateOverflowErrorMessage_Node0 N_GenerateOverflowErrorMessage_Node0 -- No --> E_GenerateOverflowErrorMessage
File: GCX016.cbl
GIVEN:
Array overflow flag has been set
WHEN:
Processing the overflow condition
THEN:
The system generates an appropriate error message indicating array capacity has been exceeded
β Consolidated Acceptance Criteria
- Recording the overflow event → the system logs the overflow condition with relevant details for operational review
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogOverflowCondition(["Start Step"])
E_LogOverflowCondition(["End Step"])
N_LogOverflowCondition_Node0{"Recording the overflow event"}:::decision
N_LogOverflowCondition_Node0_action["The system logs the overflow
condition with relevant details for
operational review"]:::main N_LogOverflowCondition_Node0 -- Yes --> N_LogOverflowCondition_Node0_action N_LogOverflowCondition_Node0_action --> E_LogOverflowCondition S_LogOverflowCondition --> N_LogOverflowCondition_Node0 N_LogOverflowCondition_Node0 -- No --> E_LogOverflowCondition
condition with relevant details for
operational review"]:::main N_LogOverflowCondition_Node0 -- Yes --> N_LogOverflowCondition_Node0_action N_LogOverflowCondition_Node0_action --> E_LogOverflowCondition S_LogOverflowCondition --> N_LogOverflowCondition_Node0 N_LogOverflowCondition_Node0 -- No --> E_LogOverflowCondition
File: GCX016.cbl
GIVEN:
An overflow error message has been generated
WHEN:
Recording the overflow event
THEN:
The system logs the overflow condition with relevant details for operational review
β Consolidated Acceptance Criteria
- Continuing with processing → the system skips adding the disposition code and continues without modifying the array
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SkipCodeAddition(["Start Step"])
E_SkipCodeAddition(["End Step"])
N_SkipCodeAddition_Node0{"Continuing with processing"}:::decision
N_SkipCodeAddition_Node0_action["The system skips adding the
disposition code and continues
without modifying the array"]:::main N_SkipCodeAddition_Node0 -- Yes --> N_SkipCodeAddition_Node0_action N_SkipCodeAddition_Node0_action --> E_SkipCodeAddition S_SkipCodeAddition --> N_SkipCodeAddition_Node0 N_SkipCodeAddition_Node0 -- No --> E_SkipCodeAddition
disposition code and continues
without modifying the array"]:::main N_SkipCodeAddition_Node0 -- Yes --> N_SkipCodeAddition_Node0_action N_SkipCodeAddition_Node0_action --> E_SkipCodeAddition S_SkipCodeAddition --> N_SkipCodeAddition_Node0 N_SkipCodeAddition_Node0 -- No --> E_SkipCodeAddition
File: GCX016.cbl
GIVEN:
Array overflow condition has been logged
WHEN:
Continuing with processing
THEN:
- The system skips adding the disposition code
- Continues without modifying the array
β Consolidated Acceptance Criteria
- Completing the addition process → the system increments the array counter to reflect the new total count
- The array counter needs to be updated → the array counter is incremented to reflect the new entry count
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UpdateArrayCounter(["Start Step"])
E_UpdateArrayCounter(["End Step"])
N_UpdateArrayCounter_Node0{"Completing the addition process"}:::decision
N_UpdateArrayCounter_Node0_action["The system increments the array
counter to reflect the new total
count"]:::main N_UpdateArrayCounter_Node0 -- Yes --> N_UpdateArrayCounter_Node0_action N_UpdateArrayCounter_Node0_action --> E_UpdateArrayCounter S_UpdateArrayCounter --> N_UpdateArrayCounter_Node0 N_UpdateArrayCounter_Node1{"The array counter needs to be
updated"}:::decision N_UpdateArrayCounter_Node1_action["The array counter is incremented to
reflect the new entry count"]:::main N_UpdateArrayCounter_Node1 -- Yes --> N_UpdateArrayCounter_Node1_action N_UpdateArrayCounter_Node1_action --> E_UpdateArrayCounter N_UpdateArrayCounter_Node0 -- No --> N_UpdateArrayCounter_Node1 N_UpdateArrayCounter_Node1 -- No --> E_UpdateArrayCounter
counter to reflect the new total
count"]:::main N_UpdateArrayCounter_Node0 -- Yes --> N_UpdateArrayCounter_Node0_action N_UpdateArrayCounter_Node0_action --> E_UpdateArrayCounter S_UpdateArrayCounter --> N_UpdateArrayCounter_Node0 N_UpdateArrayCounter_Node1{"The array counter needs to be
updated"}:::decision N_UpdateArrayCounter_Node1_action["The array counter is incremented to
reflect the new entry count"]:::main N_UpdateArrayCounter_Node1 -- Yes --> N_UpdateArrayCounter_Node1_action N_UpdateArrayCounter_Node1_action --> E_UpdateArrayCounter N_UpdateArrayCounter_Node0 -- No --> N_UpdateArrayCounter_Node1 N_UpdateArrayCounter_Node1 -- No --> E_UpdateArrayCounter
File: GCX016.cbl
GIVEN:
A disposition code has been successfully added to the array
WHEN:
Completing the addition process
THEN:
The system increments the array counter to reflect the new total count
File: GCX016.cbl
GIVEN:
A disposition code has been successfully processed and added to the status array
WHEN:
The array counter needs to be updated
THEN:
The array counter is incremented to reflect the new entry count
β Consolidated Acceptance Criteria
- Error handling is required → the system routes the overflow error to the operations team for investigation and resolution
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RouteErrortoOperations(["Start Step"])
E_RouteErrortoOperations(["End Step"])
N_RouteErrortoOperations_Node0{"Error handling is required"}:::decision
N_RouteErrortoOperations_Node0_action["The system routes the overflow
error to the operations team for
investigation and resolution"]:::exclusion N_RouteErrortoOperations_Node0 -- Yes -->|Alternative| N_RouteErrortoOperations_Node0_action N_RouteErrortoOperations_Node0_action --> E_RouteErrortoOperations S_RouteErrortoOperations --> N_RouteErrortoOperations_Node0 N_RouteErrortoOperations_Node0 -- No --> E_RouteErrortoOperations
error to the operations team for
investigation and resolution"]:::exclusion N_RouteErrortoOperations_Node0 -- Yes -->|Alternative| N_RouteErrortoOperations_Node0_action N_RouteErrortoOperations_Node0_action --> E_RouteErrortoOperations S_RouteErrortoOperations --> N_RouteErrortoOperations_Node0 N_RouteErrortoOperations_Node0 -- No --> E_RouteErrortoOperations
File: GCX016.cbl
GIVEN:
Array overflow condition has been detected and logged
WHEN:
Error handling is required
THEN:
- The system routes the overflow error to the operations team for investigation
- Resolution
β Consolidated Acceptance Criteria
- System begins array compaction operation → compaction variables are initialized to default values for tracking element positions and array boundaries
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_InitializeCompactionVariables(["Start Step"])
E_InitializeCompactionVariables(["End Step"])
N_InitializeCompactionVariables_Node0{"System begins array compaction
operation"}:::decision N_InitializeCompactionVariables_Node0_action["Compaction variables are
initialized to default values for
tracking element positions and array
boundaries"]:::main N_InitializeCompactionVariables_Node0 -- Yes --> N_InitializeCompactionVariables_Node0_action N_InitializeCompactionVariables_Node0_action --> E_InitializeCompactionVariables S_InitializeCompactionVariables --> N_InitializeCompactionVariables_Node0 N_InitializeCompactionVariables_Node0 -- No --> E_InitializeCompactionVariables
operation"}:::decision N_InitializeCompactionVariables_Node0_action["Compaction variables are
initialized to default values for
tracking element positions and array
boundaries"]:::main N_InitializeCompactionVariables_Node0 -- Yes --> N_InitializeCompactionVariables_Node0_action N_InitializeCompactionVariables_Node0_action --> E_InitializeCompactionVariables S_InitializeCompactionVariables --> N_InitializeCompactionVariables_Node0 N_InitializeCompactionVariables_Node0 -- No --> E_InitializeCompactionVariables
File: GCX016.cbl
GIVEN:
Array compaction process is starting
WHEN:
System begins array compaction operation
THEN:
- Compaction variables are initialized to default values for tracking element positions
- Array boundaries
β Consolidated Acceptance Criteria
- System scans through each array position → each element is evaluated to determine if it should be removed from the array
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ScanStatusArrayforMarkedElements(["Start Step"])
E_ScanStatusArrayforMarkedElements(["End Step"])
N_ScanStatusArrayforMarkedElements_Node0{"System scans through each array
position"}:::decision N_ScanStatusArrayforMarkedElements_Node0_action["Each element is evaluated to
determine if it should be removed
from the array"]:::main N_ScanStatusArrayforMarkedElements_Node0 -- Yes --> N_ScanStatusArrayforMarkedElements_Node0_action N_ScanStatusArrayforMarkedElements_Node0_action --> E_ScanStatusArrayforMarkedElements S_ScanStatusArrayforMarkedElements --> N_ScanStatusArrayforMarkedElements_Node0 N_ScanStatusArrayforMarkedElements_Node0 -- No --> E_ScanStatusArrayforMarkedElements
position"}:::decision N_ScanStatusArrayforMarkedElements_Node0_action["Each element is evaluated to
determine if it should be removed
from the array"]:::main N_ScanStatusArrayforMarkedElements_Node0 -- Yes --> N_ScanStatusArrayforMarkedElements_Node0_action N_ScanStatusArrayforMarkedElements_Node0_action --> E_ScanStatusArrayforMarkedElements S_ScanStatusArrayforMarkedElements --> N_ScanStatusArrayforMarkedElements_Node0 N_ScanStatusArrayforMarkedElements_Node0 -- No --> E_ScanStatusArrayforMarkedElements
File: GCX016.cbl
GIVEN:
Status array contains elements that may be marked for removal
WHEN:
System scans through each array position
THEN:
Each element is evaluated to determine if it should be removed from the array
β Consolidated Acceptance Criteria
- System checks element removal markers or status flags → element is classified as either marked for removal or to be retained in the array
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ElementMarkedforRemoval(["Start Step"])
E_ElementMarkedforRemoval(["End Step"])
N_ElementMarkedforRemoval_Node0{"System checks element removal
markers or status flags"}:::decision N_ElementMarkedforRemoval_Node0_action["Element is classified as either
marked for removal or to be retained
in the array"]:::main N_ElementMarkedforRemoval_Node0 -- Yes --> N_ElementMarkedforRemoval_Node0_action N_ElementMarkedforRemoval_Node0_action --> E_ElementMarkedforRemoval S_ElementMarkedforRemoval --> N_ElementMarkedforRemoval_Node0 N_ElementMarkedforRemoval_Node0 -- No --> E_ElementMarkedforRemoval
markers or status flags"}:::decision N_ElementMarkedforRemoval_Node0_action["Element is classified as either
marked for removal or to be retained
in the array"]:::main N_ElementMarkedforRemoval_Node0 -- Yes --> N_ElementMarkedforRemoval_Node0_action N_ElementMarkedforRemoval_Node0_action --> E_ElementMarkedforRemoval S_ElementMarkedforRemoval --> N_ElementMarkedforRemoval_Node0 N_ElementMarkedforRemoval_Node0 -- No --> E_ElementMarkedforRemoval
File: GCX016.cbl
GIVEN:
An array element is being evaluated during compaction scan
WHEN:
System checks element removal markers or status flags
THEN:
Element is classified as either marked for removal or to be retained in the array
β Consolidated Acceptance Criteria
- System processes the element marked for removal → element position is recorded for subsequent removal during array compaction
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MarkElementPosition(["Start Step"])
E_MarkElementPosition(["End Step"])
N_MarkElementPosition_Node0{"System processes the element marked
for removal"}:::decision N_MarkElementPosition_Node0_action["Element position is recorded for
subsequent removal during array
compaction"]:::main N_MarkElementPosition_Node0 -- Yes --> N_MarkElementPosition_Node0_action N_MarkElementPosition_Node0_action --> E_MarkElementPosition S_MarkElementPosition --> N_MarkElementPosition_Node0 N_MarkElementPosition_Node0 -- No --> E_MarkElementPosition
for removal"}:::decision N_MarkElementPosition_Node0_action["Element position is recorded for
subsequent removal during array
compaction"]:::main N_MarkElementPosition_Node0 -- Yes --> N_MarkElementPosition_Node0_action N_MarkElementPosition_Node0_action --> E_MarkElementPosition S_MarkElementPosition --> N_MarkElementPosition_Node0 N_MarkElementPosition_Node0 -- No --> E_MarkElementPosition
File: GCX016.cbl
GIVEN:
An array element has been identified for removal
WHEN:
System processes the element marked for removal
THEN:
Element position is recorded for subsequent removal during array compaction
β Consolidated Acceptance Criteria
- System moves to next array position → scanning continues with the subsequent array element
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ContinueScanning(["Start Step"])
E_ContinueScanning(["End Step"])
N_ContinueScanning_Node0{"System moves to next array position"}:::decision
N_ContinueScanning_Node0_action["Scanning continues with the
subsequent array element"]:::main N_ContinueScanning_Node0 -- Yes --> N_ContinueScanning_Node0_action N_ContinueScanning_Node0_action --> E_ContinueScanning S_ContinueScanning --> N_ContinueScanning_Node0 N_ContinueScanning_Node0 -- No --> E_ContinueScanning
subsequent array element"]:::main N_ContinueScanning_Node0 -- Yes --> N_ContinueScanning_Node0_action N_ContinueScanning_Node0_action --> E_ContinueScanning S_ContinueScanning --> N_ContinueScanning_Node0 N_ContinueScanning_Node0 -- No --> E_ContinueScanning
File: GCX016.cbl
GIVEN:
Current array element has been processed for removal evaluation
WHEN:
System moves to next array position
THEN:
Scanning continues with the subsequent array element
β Consolidated Acceptance Criteria
- System starts the element shifting phase of compaction → element shifting process begins to compact the array by removing gaps
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_BeginElementShiftingProcess(["Start Step"])
E_BeginElementShiftingProcess(["End Step"])
N_BeginElementShiftingProcess_Node0{"System starts the element shifting
phase of compaction"}:::decision N_BeginElementShiftingProcess_Node0_action["Element shifting process begins to
compact the array by removing gaps"]:::main N_BeginElementShiftingProcess_Node0 -- Yes --> N_BeginElementShiftingProcess_Node0_action N_BeginElementShiftingProcess_Node0_action --> E_BeginElementShiftingProcess S_BeginElementShiftingProcess --> N_BeginElementShiftingProcess_Node0 N_BeginElementShiftingProcess_Node0 -- No --> E_BeginElementShiftingProcess
phase of compaction"}:::decision N_BeginElementShiftingProcess_Node0_action["Element shifting process begins to
compact the array by removing gaps"]:::main N_BeginElementShiftingProcess_Node0 -- Yes --> N_BeginElementShiftingProcess_Node0_action N_BeginElementShiftingProcess_Node0_action --> E_BeginElementShiftingProcess S_BeginElementShiftingProcess --> N_BeginElementShiftingProcess_Node0 N_BeginElementShiftingProcess_Node0 -- No --> E_BeginElementShiftingProcess
File: GCX016.cbl
GIVEN:
Array scanning is complete and elements marked for removal are identified
WHEN:
System starts the element shifting phase of compaction
THEN:
Element shifting process begins to compact the array by removing gaps
β Consolidated Acceptance Criteria
- System searches for the first available gap position → first gap position is identified as the target for element movement
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IdentifyFirstGapPosition(["Start Step"])
E_IdentifyFirstGapPosition(["End Step"])
N_IdentifyFirstGapPosition_Node0{"System searches for the first
available gap position"}:::decision N_IdentifyFirstGapPosition_Node0_action["First gap position is identified as
the target for element movement"]:::main N_IdentifyFirstGapPosition_Node0 -- Yes --> N_IdentifyFirstGapPosition_Node0_action N_IdentifyFirstGapPosition_Node0_action --> E_IdentifyFirstGapPosition S_IdentifyFirstGapPosition --> N_IdentifyFirstGapPosition_Node0 N_IdentifyFirstGapPosition_Node0 -- No --> E_IdentifyFirstGapPosition
available gap position"}:::decision N_IdentifyFirstGapPosition_Node0_action["First gap position is identified as
the target for element movement"]:::main N_IdentifyFirstGapPosition_Node0 -- Yes --> N_IdentifyFirstGapPosition_Node0_action N_IdentifyFirstGapPosition_Node0_action --> E_IdentifyFirstGapPosition S_IdentifyFirstGapPosition --> N_IdentifyFirstGapPosition_Node0 N_IdentifyFirstGapPosition_Node0 -- No --> E_IdentifyFirstGapPosition
File: GCX016.cbl
GIVEN:
Array contains gaps from removed elements
WHEN:
System searches for the first available gap position
THEN:
First gap position is identified as the target for element movement
β Consolidated Acceptance Criteria
- System searches for valid elements to move into the gap → next valid element is located for movement to the gap position
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_FindNextValidElement(["Start Step"])
E_FindNextValidElement(["End Step"])
N_FindNextValidElement_Node0{"System searches for valid elements
to move into the gap"}:::decision N_FindNextValidElement_Node0_action["Next valid element is located for
movement to the gap position"]:::main N_FindNextValidElement_Node0 -- Yes --> N_FindNextValidElement_Node0_action N_FindNextValidElement_Node0_action --> E_FindNextValidElement S_FindNextValidElement --> N_FindNextValidElement_Node0 N_FindNextValidElement_Node0 -- No --> E_FindNextValidElement
to move into the gap"}:::decision N_FindNextValidElement_Node0_action["Next valid element is located for
movement to the gap position"]:::main N_FindNextValidElement_Node0 -- Yes --> N_FindNextValidElement_Node0_action N_FindNextValidElement_Node0_action --> E_FindNextValidElement S_FindNextValidElement --> N_FindNextValidElement_Node0 N_FindNextValidElement_Node0 -- No --> E_FindNextValidElement
File: GCX016.cbl
GIVEN:
A gap position has been identified for filling
WHEN:
System searches for valid elements to move into the gap
THEN:
Next valid element is located for movement to the gap position
β Consolidated Acceptance Criteria
- Search for valid element is complete → system determines if a valid element was found or if no more elements need to be moved
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ValidElementFound(["Start Step"])
E_ValidElementFound(["End Step"])
N_ValidElementFound_Node0{"Search for valid element is
complete"}:::decision N_ValidElementFound_Node0_action["System determines if a valid
element was found or if no more
elements need to be moved"]:::main N_ValidElementFound_Node0 -- Yes --> N_ValidElementFound_Node0_action N_ValidElementFound_Node0_action --> E_ValidElementFound S_ValidElementFound --> N_ValidElementFound_Node0 N_ValidElementFound_Node0 -- No --> E_ValidElementFound
complete"}:::decision N_ValidElementFound_Node0_action["System determines if a valid
element was found or if no more
elements need to be moved"]:::main N_ValidElementFound_Node0 -- Yes --> N_ValidElementFound_Node0_action N_ValidElementFound_Node0_action --> E_ValidElementFound S_ValidElementFound --> N_ValidElementFound_Node0 N_ValidElementFound_Node0 -- No --> E_ValidElementFound
File: GCX016.cbl
GIVEN:
System is searching for elements to move during compaction
WHEN:
Search for valid element is complete
THEN:
System determines if a valid element was found or if no more elements need to be moved
β Consolidated Acceptance Criteria
- System performs element movement operation → element is copied from its current position to the gap position in the array
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ShiftElementtoGapPosition(["Start Step"])
E_ShiftElementtoGapPosition(["End Step"])
N_ShiftElementtoGapPosition_Node0{"System performs element movement
operation"}:::decision N_ShiftElementtoGapPosition_Node0_action["Element is copied from its current
position to the gap position in the
array"]:::main N_ShiftElementtoGapPosition_Node0 -- Yes --> N_ShiftElementtoGapPosition_Node0_action N_ShiftElementtoGapPosition_Node0_action --> E_ShiftElementtoGapPosition S_ShiftElementtoGapPosition --> N_ShiftElementtoGapPosition_Node0 N_ShiftElementtoGapPosition_Node0 -- No --> E_ShiftElementtoGapPosition
operation"}:::decision N_ShiftElementtoGapPosition_Node0_action["Element is copied from its current
position to the gap position in the
array"]:::main N_ShiftElementtoGapPosition_Node0 -- Yes --> N_ShiftElementtoGapPosition_Node0_action N_ShiftElementtoGapPosition_Node0_action --> E_ShiftElementtoGapPosition S_ShiftElementtoGapPosition --> N_ShiftElementtoGapPosition_Node0 N_ShiftElementtoGapPosition_Node0 -- No --> E_ShiftElementtoGapPosition
File: GCX016.cbl
GIVEN:
A valid element and gap position have been identified
WHEN:
System performs element movement operation
THEN:
Element is copied from its current position to the gap position in the array
β Consolidated Acceptance Criteria
- System updates element tracking information → all pointers and references are updated to reflect the element's new position
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UpdateElementPointers(["Start Step"])
E_UpdateElementPointers(["End Step"])
N_UpdateElementPointers_Node0{"System updates element tracking
information"}:::decision N_UpdateElementPointers_Node0_action["All pointers and references are
updated to reflect the element s new
position"]:::main N_UpdateElementPointers_Node0 -- Yes --> N_UpdateElementPointers_Node0_action N_UpdateElementPointers_Node0_action --> E_UpdateElementPointers S_UpdateElementPointers --> N_UpdateElementPointers_Node0 N_UpdateElementPointers_Node0 -- No --> E_UpdateElementPointers
information"}:::decision N_UpdateElementPointers_Node0_action["All pointers and references are
updated to reflect the element s new
position"]:::main N_UpdateElementPointers_Node0 -- Yes --> N_UpdateElementPointers_Node0_action N_UpdateElementPointers_Node0_action --> E_UpdateElementPointers S_UpdateElementPointers --> N_UpdateElementPointers_Node0 N_UpdateElementPointers_Node0 -- No --> E_UpdateElementPointers
File: GCX016.cbl
GIVEN:
An element has been moved to a new position in the array
WHEN:
System updates element tracking information
THEN:
- All pointers
- References are updated to reflect the element's new position
β Consolidated Acceptance Criteria
- System processes the element's original position → original position is marked as empty and available for future use
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MarkOldPositionasEmpty(["Start Step"])
E_MarkOldPositionasEmpty(["End Step"])
N_MarkOldPositionasEmpty_Node0{"System processes the element s
original position"}:::decision N_MarkOldPositionasEmpty_Node0_action["Original position is marked as
empty and available for future use"]:::main N_MarkOldPositionasEmpty_Node0 -- Yes --> N_MarkOldPositionasEmpty_Node0_action N_MarkOldPositionasEmpty_Node0_action --> E_MarkOldPositionasEmpty S_MarkOldPositionasEmpty --> N_MarkOldPositionasEmpty_Node0 N_MarkOldPositionasEmpty_Node0 -- No --> E_MarkOldPositionasEmpty
original position"}:::decision N_MarkOldPositionasEmpty_Node0_action["Original position is marked as
empty and available for future use"]:::main N_MarkOldPositionasEmpty_Node0 -- Yes --> N_MarkOldPositionasEmpty_Node0_action N_MarkOldPositionasEmpty_Node0_action --> E_MarkOldPositionasEmpty S_MarkOldPositionasEmpty --> N_MarkOldPositionasEmpty_Node0 N_MarkOldPositionasEmpty_Node0 -- No --> E_MarkOldPositionasEmpty
File: GCX016.cbl
GIVEN:
An element has been successfully moved to a new position
WHEN:
System processes the element's original position
THEN:
- Original position is marked as empty
- Available for future use
β Consolidated Acceptance Criteria
- System evaluates remaining elements for movement → system determines whether more elements need to be shifted or compaction is complete
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MoreElementstoShift(["Start Step"])
E_MoreElementstoShift(["End Step"])
N_MoreElementstoShift_Node0{"System evaluates remaining elements
for movement"}:::decision N_MoreElementstoShift_Node0_action["System determines whether more
elements need to be shifted or
compaction is complete"]:::main N_MoreElementstoShift_Node0 -- Yes --> N_MoreElementstoShift_Node0_action N_MoreElementstoShift_Node0_action --> E_MoreElementstoShift S_MoreElementstoShift --> N_MoreElementstoShift_Node0 N_MoreElementstoShift_Node0 -- No --> E_MoreElementstoShift
for movement"}:::decision N_MoreElementstoShift_Node0_action["System determines whether more
elements need to be shifted or
compaction is complete"]:::main N_MoreElementstoShift_Node0 -- Yes --> N_MoreElementstoShift_Node0_action N_MoreElementstoShift_Node0_action --> E_MoreElementstoShift S_MoreElementstoShift --> N_MoreElementstoShift_Node0 N_MoreElementstoShift_Node0 -- No --> E_MoreElementstoShift
File: GCX016.cbl
GIVEN:
An element has been successfully shifted to fill a gap
WHEN:
System evaluates remaining elements for movement
THEN:
System determines whether more elements need to be shifted or compaction is complete
β Consolidated Acceptance Criteria
- System evaluates validation results → system determines if array structure is valid or if error recovery is needed
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ArrayStructureValid(["Start Step"])
E_ArrayStructureValid(["End Step"])
N_ArrayStructureValid_Node0{"System evaluates validation results"}:::decision
N_ArrayStructureValid_Node0_action["System determines if array
structure is valid or if error
recovery is needed"]:::main N_ArrayStructureValid_Node0 -- Yes --> N_ArrayStructureValid_Node0_action N_ArrayStructureValid_Node0_action --> E_ArrayStructureValid S_ArrayStructureValid --> N_ArrayStructureValid_Node0 N_ArrayStructureValid_Node0 -- No --> E_ArrayStructureValid
structure is valid or if error
recovery is needed"]:::main N_ArrayStructureValid_Node0 -- Yes --> N_ArrayStructureValid_Node0_action N_ArrayStructureValid_Node0_action --> E_ArrayStructureValid S_ArrayStructureValid --> N_ArrayStructureValid_Node0 N_ArrayStructureValid_Node0 -- No --> E_ArrayStructureValid
File: GCX016.cbl
GIVEN:
Array integrity validation has been performed
WHEN:
System evaluates validation results
THEN:
System determines if array structure is valid or if error recovery is needed
β Consolidated Acceptance Criteria
- System processes unused array positions → all unused positions beyond the new array boundary are cleared and reset
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ClearUnusedArrayPositions(["Start Step"])
E_ClearUnusedArrayPositions(["End Step"])
N_ClearUnusedArrayPositions_Node0{"System processes unused array
positions"}:::decision N_ClearUnusedArrayPositions_Node0_action["All unused positions beyond the new
array boundary are cleared and reset"]:::main N_ClearUnusedArrayPositions_Node0 -- Yes --> N_ClearUnusedArrayPositions_Node0_action N_ClearUnusedArrayPositions_Node0_action --> E_ClearUnusedArrayPositions S_ClearUnusedArrayPositions --> N_ClearUnusedArrayPositions_Node0 N_ClearUnusedArrayPositions_Node0 -- No --> E_ClearUnusedArrayPositions
positions"}:::decision N_ClearUnusedArrayPositions_Node0_action["All unused positions beyond the new
array boundary are cleared and reset"]:::main N_ClearUnusedArrayPositions_Node0 -- Yes --> N_ClearUnusedArrayPositions_Node0_action N_ClearUnusedArrayPositions_Node0_action --> E_ClearUnusedArrayPositions S_ClearUnusedArrayPositions --> N_ClearUnusedArrayPositions_Node0 N_ClearUnusedArrayPositions_Node0 -- No --> E_ClearUnusedArrayPositions
File: GCX016.cbl
GIVEN:
Array structure has been validated as correct after compaction
WHEN:
System processes unused array positions
THEN:
- All unused positions beyond the new array boundary are cleared
- Reset
β Consolidated Acceptance Criteria
- System sets the new array boundary → array boundary is updated to reflect the compacted size and valid element range
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetNewArrayBoundary(["Start Step"])
E_SetNewArrayBoundary(["End Step"])
N_SetNewArrayBoundary_Node0{"System sets the new array boundary"}:::decision
N_SetNewArrayBoundary_Node0_action["Array boundary is updated to
reflect the compacted size and valid
element range"]:::main N_SetNewArrayBoundary_Node0 -- Yes --> N_SetNewArrayBoundary_Node0_action N_SetNewArrayBoundary_Node0_action --> E_SetNewArrayBoundary S_SetNewArrayBoundary --> N_SetNewArrayBoundary_Node0 N_SetNewArrayBoundary_Node0 -- No --> E_SetNewArrayBoundary
reflect the compacted size and valid
element range"]:::main N_SetNewArrayBoundary_Node0 -- Yes --> N_SetNewArrayBoundary_Node0_action N_SetNewArrayBoundary_Node0_action --> E_SetNewArrayBoundary S_SetNewArrayBoundary --> N_SetNewArrayBoundary_Node0 N_SetNewArrayBoundary_Node0 -- No --> E_SetNewArrayBoundary
File: GCX016.cbl
GIVEN:
Array compaction is complete and unused positions are cleared
WHEN:
System sets the new array boundary
THEN:
- Array boundary is updated to reflect the compacted size
- Valid element range
β Consolidated Acceptance Criteria
- System finalizes the compaction process → array compaction is marked as complete and array is ready for normal operations
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ArrayCompactionComplete(["Start Step"])
E_ArrayCompactionComplete(["End Step"])
N_ArrayCompactionComplete_Node0{"System finalizes the compaction
process"}:::decision N_ArrayCompactionComplete_Node0_action["Array compaction is marked as
complete and array is ready for
normal operations"]:::main N_ArrayCompactionComplete_Node0 -- Yes --> N_ArrayCompactionComplete_Node0_action N_ArrayCompactionComplete_Node0_action --> E_ArrayCompactionComplete S_ArrayCompactionComplete --> N_ArrayCompactionComplete_Node0 N_ArrayCompactionComplete_Node0 -- No --> E_ArrayCompactionComplete
process"}:::decision N_ArrayCompactionComplete_Node0_action["Array compaction is marked as
complete and array is ready for
normal operations"]:::main N_ArrayCompactionComplete_Node0 -- Yes --> N_ArrayCompactionComplete_Node0_action N_ArrayCompactionComplete_Node0_action --> E_ArrayCompactionComplete S_ArrayCompactionComplete --> N_ArrayCompactionComplete_Node0 N_ArrayCompactionComplete_Node0 -- No --> E_ArrayCompactionComplete
File: GCX016.cbl
GIVEN:
All compaction steps have been completed successfully
WHEN:
System finalizes the compaction process
THEN:
- Array compaction is marked as complete
- Array is ready for normal operations
β Consolidated Acceptance Criteria
- System detects compaction errors → error details are logged for troubleshooting and recovery processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogArrayCompactionError(["Start Step"])
E_LogArrayCompactionError(["End Step"])
N_LogArrayCompactionError_Node0{"System detects compaction errors"}:::decision
N_LogArrayCompactionError_Node0_action["Error details are logged for
troubleshooting and recovery
processing"]:::main N_LogArrayCompactionError_Node0 -- Yes --> N_LogArrayCompactionError_Node0_action N_LogArrayCompactionError_Node0_action --> E_LogArrayCompactionError S_LogArrayCompactionError --> N_LogArrayCompactionError_Node0 N_LogArrayCompactionError_Node0 -- No --> E_LogArrayCompactionError
troubleshooting and recovery
processing"]:::main N_LogArrayCompactionError_Node0 -- Yes --> N_LogArrayCompactionError_Node0_action N_LogArrayCompactionError_Node0_action --> E_LogArrayCompactionError S_LogArrayCompactionError --> N_LogArrayCompactionError_Node0 N_LogArrayCompactionError_Node0 -- No --> E_LogArrayCompactionError
File: GCX016.cbl
GIVEN:
Array structure validation has failed
WHEN:
System detects compaction errors
THEN:
- Error details are logged for troubleshooting
- Recovery processing
β Consolidated Acceptance Criteria
- System performs error recovery → array is restored to its previous valid state before compaction was attempted
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RestoreArraytoPreviousState(["Start Step"])
E_RestoreArraytoPreviousState(["End Step"])
N_RestoreArraytoPreviousState_Node0{"System performs error recovery"}:::decision
N_RestoreArraytoPreviousState_Node0_action["Array is restored to its previous
valid state before compaction was
attempted"]:::exclusion N_RestoreArraytoPreviousState_Node0 -- Yes -->|Alternative| N_RestoreArraytoPreviousState_Node0_action N_RestoreArraytoPreviousState_Node0_action --> E_RestoreArraytoPreviousState S_RestoreArraytoPreviousState --> N_RestoreArraytoPreviousState_Node0 N_RestoreArraytoPreviousState_Node0 -- No --> E_RestoreArraytoPreviousState
valid state before compaction was
attempted"]:::exclusion N_RestoreArraytoPreviousState_Node0 -- Yes -->|Alternative| N_RestoreArraytoPreviousState_Node0_action N_RestoreArraytoPreviousState_Node0_action --> E_RestoreArraytoPreviousState S_RestoreArraytoPreviousState --> N_RestoreArraytoPreviousState_Node0 N_RestoreArraytoPreviousState_Node0 -- No --> E_RestoreArraytoPreviousState
File: GCX016.cbl
GIVEN:
Array compaction has failed validation and errors are logged
WHEN:
System performs error recovery
THEN:
Array is restored to its previous valid state before compaction was attempted
β Consolidated Acceptance Criteria
- The system processes the N7 segment → equipment ID information is extracted and stored for cargo record updates
- The system processes the N7 segment → equipment ID information is extracted from the N7 segment data
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExtractEquipmentIDfromN7Segment(["Start Step"])
E_ExtractEquipmentIDfromN7Segment(["End Step"])
N_ExtractEquipmentIDfromN7Segment_Node0{"The system processes the N7 segment"}:::decision
N_ExtractEquipmentIDfromN7Segment_Node0_action["Equipment ID information is
extracted and stored for cargo
record updates"]:::main N_ExtractEquipmentIDfromN7Segment_Node0 -- Yes --> N_ExtractEquipmentIDfromN7Segment_Node0_action N_ExtractEquipmentIDfromN7Segment_Node0_action --> E_ExtractEquipmentIDfromN7Segment S_ExtractEquipmentIDfromN7Segment --> N_ExtractEquipmentIDfromN7Segment_Node0 N_ExtractEquipmentIDfromN7Segment_Node1{"The system processes the N7 segment"}:::decision N_ExtractEquipmentIDfromN7Segment_Node1_action["Equipment ID information is
extracted from the N7 segment data"]:::main N_ExtractEquipmentIDfromN7Segment_Node1 -- Yes --> N_ExtractEquipmentIDfromN7Segment_Node1_action N_ExtractEquipmentIDfromN7Segment_Node1_action --> E_ExtractEquipmentIDfromN7Segment N_ExtractEquipmentIDfromN7Segment_Node0 -- No --> N_ExtractEquipmentIDfromN7Segment_Node1 N_ExtractEquipmentIDfromN7Segment_Node1 -- No --> E_ExtractEquipmentIDfromN7Segment
extracted and stored for cargo
record updates"]:::main N_ExtractEquipmentIDfromN7Segment_Node0 -- Yes --> N_ExtractEquipmentIDfromN7Segment_Node0_action N_ExtractEquipmentIDfromN7Segment_Node0_action --> E_ExtractEquipmentIDfromN7Segment S_ExtractEquipmentIDfromN7Segment --> N_ExtractEquipmentIDfromN7Segment_Node0 N_ExtractEquipmentIDfromN7Segment_Node1{"The system processes the N7 segment"}:::decision N_ExtractEquipmentIDfromN7Segment_Node1_action["Equipment ID information is
extracted from the N7 segment data"]:::main N_ExtractEquipmentIDfromN7Segment_Node1 -- Yes --> N_ExtractEquipmentIDfromN7Segment_Node1_action N_ExtractEquipmentIDfromN7Segment_Node1_action --> E_ExtractEquipmentIDfromN7Segment N_ExtractEquipmentIDfromN7Segment_Node0 -- No --> N_ExtractEquipmentIDfromN7Segment_Node1 N_ExtractEquipmentIDfromN7Segment_Node1 -- No --> E_ExtractEquipmentIDfromN7Segment
File: GCX016.cbl
GIVEN:
An N7 equipment details segment is received
WHEN:
The system processes the N7 segment
THEN:
- Equipment id information is extracted
- Stored for cargo record updates
File: GCX016.cbl
GIVEN:
An N7 equipment segment is received in the message
WHEN:
The system processes the N7 segment
THEN:
Equipment ID information is extracted from the N7 segment data
β Consolidated Acceptance Criteria
- The system applies GCCCARFM formatting utility → equipment ID is formatted according to standard format rules and validated for correctness
- The system needs to format the equipment ID → gCCCARFM utility is called to standardize the equipment ID format
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_FormatEquipmentIDusingGCCCARFMUtility(["Start Step"])
E_FormatEquipmentIDusingGCCCARFMUtility(["End Step"])
N_FormatEquipmentIDusingGCCCARFMUtility_Node0{"The system applies GCCCARFM
formatting utility"}:::decision N_FormatEquipmentIDusingGCCCARFMUtility_Node0_action["Equipment ID is formatted according
to standard format rules and
validated for correctness"]:::main N_FormatEquipmentIDusingGCCCARFMUtility_Node0 -- Yes --> N_FormatEquipmentIDusingGCCCARFMUtility_Node0_action N_FormatEquipmentIDusingGCCCARFMUtility_Node0_action --> E_FormatEquipmentIDusingGCCCARFMUtility S_FormatEquipmentIDusingGCCCARFMUtility --> N_FormatEquipmentIDusingGCCCARFMUtility_Node0 N_FormatEquipmentIDusingGCCCARFMUtility_Node1{"The system needs to format the
equipment ID"}:::decision N_FormatEquipmentIDusingGCCCARFMUtility_Node1_action["GCCCARFM utility is called to
standardize the equipment ID format"]:::main N_FormatEquipmentIDusingGCCCARFMUtility_Node1 -- Yes --> N_FormatEquipmentIDusingGCCCARFMUtility_Node1_action N_FormatEquipmentIDusingGCCCARFMUtility_Node1_action --> E_FormatEquipmentIDusingGCCCARFMUtility N_FormatEquipmentIDusingGCCCARFMUtility_Node0 -- No --> N_FormatEquipmentIDusingGCCCARFMUtility_Node1 N_FormatEquipmentIDusingGCCCARFMUtility_Node1 -- No --> E_FormatEquipmentIDusingGCCCARFMUtility
formatting utility"}:::decision N_FormatEquipmentIDusingGCCCARFMUtility_Node0_action["Equipment ID is formatted according
to standard format rules and
validated for correctness"]:::main N_FormatEquipmentIDusingGCCCARFMUtility_Node0 -- Yes --> N_FormatEquipmentIDusingGCCCARFMUtility_Node0_action N_FormatEquipmentIDusingGCCCARFMUtility_Node0_action --> E_FormatEquipmentIDusingGCCCARFMUtility S_FormatEquipmentIDusingGCCCARFMUtility --> N_FormatEquipmentIDusingGCCCARFMUtility_Node0 N_FormatEquipmentIDusingGCCCARFMUtility_Node1{"The system needs to format the
equipment ID"}:::decision N_FormatEquipmentIDusingGCCCARFMUtility_Node1_action["GCCCARFM utility is called to
standardize the equipment ID format"]:::main N_FormatEquipmentIDusingGCCCARFMUtility_Node1 -- Yes --> N_FormatEquipmentIDusingGCCCARFMUtility_Node1_action N_FormatEquipmentIDusingGCCCARFMUtility_Node1_action --> E_FormatEquipmentIDusingGCCCARFMUtility N_FormatEquipmentIDusingGCCCARFMUtility_Node0 -- No --> N_FormatEquipmentIDusingGCCCARFMUtility_Node1 N_FormatEquipmentIDusingGCCCARFMUtility_Node1 -- No --> E_FormatEquipmentIDusingGCCCARFMUtility
File: GCX016.cbl
GIVEN:
Raw equipment ID data is extracted from N7 segment
WHEN:
The system applies GCCCARFM formatting utility
THEN:
- Equipment id is formatted according to standard format rules
- Validated for correctness
File: GCX016.cbl
GIVEN:
Equipment ID has been extracted from N7 segment
WHEN:
The system needs to format the equipment ID
THEN:
GCCCARFM utility is called to standardize the equipment ID format
β Consolidated Acceptance Criteria
- The system searches for cargo records using the car ID → all cargo records associated with the car ID are located and retrieved
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LocateCargoRecordsbyCarID(["Start Step"])
E_LocateCargoRecordsbyCarID(["End Step"])
N_LocateCargoRecordsbyCarID_Node0{"The system searches for cargo
records using the car ID"}:::decision N_LocateCargoRecordsbyCarID_Node0_action["All cargo records associated with
the car ID are located and retrieved"]:::main N_LocateCargoRecordsbyCarID_Node0 -- Yes --> N_LocateCargoRecordsbyCarID_Node0_action N_LocateCargoRecordsbyCarID_Node0_action --> E_LocateCargoRecordsbyCarID S_LocateCargoRecordsbyCarID --> N_LocateCargoRecordsbyCarID_Node0 N_LocateCargoRecordsbyCarID_Node0 -- No --> E_LocateCargoRecordsbyCarID
records using the car ID"}:::decision N_LocateCargoRecordsbyCarID_Node0_action["All cargo records associated with
the car ID are located and retrieved"]:::main N_LocateCargoRecordsbyCarID_Node0 -- Yes --> N_LocateCargoRecordsbyCarID_Node0_action N_LocateCargoRecordsbyCarID_Node0_action --> E_LocateCargoRecordsbyCarID S_LocateCargoRecordsbyCarID --> N_LocateCargoRecordsbyCarID_Node0 N_LocateCargoRecordsbyCarID_Node0 -- No --> E_LocateCargoRecordsbyCarID
File: GCX016.cbl
GIVEN:
A valid equipment ID is available
WHEN:
The system searches for cargo records using the car ID
THEN:
- All cargo records associated with the car id are located
- Retrieved
β Consolidated Acceptance Criteria
- The search results are evaluated → system determines if cargo records exist and proceeds with appropriate processing path
- If the search results → if no cargo records found, log error and return error status; if records found, proceed with retrieval
- If the search results → if no cargo records are found, log 'No Cargo Found for Car/Waybill' and proceed to alternative cargo retrieval method
- If the search results → processing continues to cargo processing if records are found, otherwise no cargo found message is generated
- If the search results → if cargo records are found, processing continues with record retrieval, otherwise error handling is initiated
- The system checks if any cargo records were found → if cargo records are found, proceed to update car ID, otherwise log cargo not found error
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CargoRecordsFound(["Start Step"])
E_CargoRecordsFound(["End Step"])
N_CargoRecordsFound_Node0{"The search results are evaluated"}:::decision
N_CargoRecordsFound_Node0_action["System determines if cargo records
exist and proceeds with appropriate
processing path"]:::main N_CargoRecordsFound_Node0 -- Yes --> N_CargoRecordsFound_Node0_action N_CargoRecordsFound_Node0_action --> E_CargoRecordsFound S_CargoRecordsFound --> N_CargoRecordsFound_Node0 N_CargoRecordsFound_Node1{"The system evaluates the search
results"}:::decision N_CargoRecordsFound_Node1_action["If no cargo records found, log
error and return error status if
records found, proceed with
retrieval"]:::main N_CargoRecordsFound_Node1 -- Yes --> N_CargoRecordsFound_Node1_action N_CargoRecordsFound_Node1_action --> E_CargoRecordsFound N_CargoRecordsFound_Node0 -- No --> N_CargoRecordsFound_Node1 N_CargoRecordsFound_Node2{"The system evaluates the search
results"}:::decision N_CargoRecordsFound_Node2_action["If no cargo records are found, log
No Cargo Found for CarWaybill and
proceed to alternative cargo
retrieval method"]:::main N_CargoRecordsFound_Node2 -- Yes --> N_CargoRecordsFound_Node2_action N_CargoRecordsFound_Node2_action --> E_CargoRecordsFound N_CargoRecordsFound_Node1 -- No --> N_CargoRecordsFound_Node2 N_CargoRecordsFound_Node3{"The system evaluates the search
results"}:::decision N_CargoRecordsFound_Node3_action["Processing continues to cargo
processing if records are found,
otherwise no cargo found message is
generated"]:::main N_CargoRecordsFound_Node3 -- Yes --> N_CargoRecordsFound_Node3_action N_CargoRecordsFound_Node3_action --> E_CargoRecordsFound N_CargoRecordsFound_Node2 -- No --> N_CargoRecordsFound_Node3 N_CargoRecordsFound_Node4{"The system evaluates the search
results"}:::decision N_CargoRecordsFound_Node4_action["If cargo records are found,
processing continues with record
retrieval, otherwise error handling
is initiated"]:::main N_CargoRecordsFound_Node4 -- Yes --> N_CargoRecordsFound_Node4_action N_CargoRecordsFound_Node4_action --> E_CargoRecordsFound N_CargoRecordsFound_Node3 -- No --> N_CargoRecordsFound_Node4 N_CargoRecordsFound_Node5{"The system checks if any cargo
records were found"}:::decision N_CargoRecordsFound_Node5_action["If cargo records are found, proceed
to update car ID, otherwise log
cargo not found error"]:::main N_CargoRecordsFound_Node5 -- Yes --> N_CargoRecordsFound_Node5_action N_CargoRecordsFound_Node5_action --> E_CargoRecordsFound N_CargoRecordsFound_Node4 -- No --> N_CargoRecordsFound_Node5 N_CargoRecordsFound_Node5 -- No --> E_CargoRecordsFound
exist and proceeds with appropriate
processing path"]:::main N_CargoRecordsFound_Node0 -- Yes --> N_CargoRecordsFound_Node0_action N_CargoRecordsFound_Node0_action --> E_CargoRecordsFound S_CargoRecordsFound --> N_CargoRecordsFound_Node0 N_CargoRecordsFound_Node1{"The system evaluates the search
results"}:::decision N_CargoRecordsFound_Node1_action["If no cargo records found, log
error and return error status if
records found, proceed with
retrieval"]:::main N_CargoRecordsFound_Node1 -- Yes --> N_CargoRecordsFound_Node1_action N_CargoRecordsFound_Node1_action --> E_CargoRecordsFound N_CargoRecordsFound_Node0 -- No --> N_CargoRecordsFound_Node1 N_CargoRecordsFound_Node2{"The system evaluates the search
results"}:::decision N_CargoRecordsFound_Node2_action["If no cargo records are found, log
No Cargo Found for CarWaybill and
proceed to alternative cargo
retrieval method"]:::main N_CargoRecordsFound_Node2 -- Yes --> N_CargoRecordsFound_Node2_action N_CargoRecordsFound_Node2_action --> E_CargoRecordsFound N_CargoRecordsFound_Node1 -- No --> N_CargoRecordsFound_Node2 N_CargoRecordsFound_Node3{"The system evaluates the search
results"}:::decision N_CargoRecordsFound_Node3_action["Processing continues to cargo
processing if records are found,
otherwise no cargo found message is
generated"]:::main N_CargoRecordsFound_Node3 -- Yes --> N_CargoRecordsFound_Node3_action N_CargoRecordsFound_Node3_action --> E_CargoRecordsFound N_CargoRecordsFound_Node2 -- No --> N_CargoRecordsFound_Node3 N_CargoRecordsFound_Node4{"The system evaluates the search
results"}:::decision N_CargoRecordsFound_Node4_action["If cargo records are found,
processing continues with record
retrieval, otherwise error handling
is initiated"]:::main N_CargoRecordsFound_Node4 -- Yes --> N_CargoRecordsFound_Node4_action N_CargoRecordsFound_Node4_action --> E_CargoRecordsFound N_CargoRecordsFound_Node3 -- No --> N_CargoRecordsFound_Node4 N_CargoRecordsFound_Node5{"The system checks if any cargo
records were found"}:::decision N_CargoRecordsFound_Node5_action["If cargo records are found, proceed
to update car ID, otherwise log
cargo not found error"]:::main N_CargoRecordsFound_Node5 -- Yes --> N_CargoRecordsFound_Node5_action N_CargoRecordsFound_Node5_action --> E_CargoRecordsFound N_CargoRecordsFound_Node4 -- No --> N_CargoRecordsFound_Node5 N_CargoRecordsFound_Node5 -- No --> E_CargoRecordsFound
File: GCX016.cbl
GIVEN:
System has searched for cargo records by car ID
WHEN:
The search results are evaluated
THEN:
- System determines if cargo records exist
- Proceeds with appropriate processing path
File: GCX016.cbl
GIVEN:
Database lookup by bond number has been performed
WHEN:
The system evaluates the search results
THEN:
- If no cargo records found, log error
- Return error status; if records found, proceed with retrieval
File: GCX016.cbl
GIVEN:
Cargo search by car ID and waybill has been executed
WHEN:
The system evaluates the search results
THEN:
If no cargo records are found, log 'No Cargo Found for Car/Waybill' and proceed to alternative cargo retrieval method
File: GCX016.cbl
GIVEN:
A search has been performed for cargo records with a specific bond number
WHEN:
The system evaluates the search results
THEN:
Processing continues to cargo processing if records are found, otherwise no cargo found message is generated
File: GCX016.cbl
GIVEN:
A database search has been performed using car-waybill key
WHEN:
The system evaluates the search results
THEN:
If cargo records are found, processing continues with record retrieval, otherwise error handling is initiated
File: GCX016.cbl
GIVEN:
The system has searched for cargo records by car ID
WHEN:
The system checks if any cargo records were found
THEN:
If cargo records are found, proceed to update car ID, otherwise log cargo not found error
β Consolidated Acceptance Criteria
- The system processes the car ID update → car ID information is updated in all associated cargo records with equipment details from N7 segment
- The system processes cargo records associated with the equipment → car ID information is updated in the relevant cargo records
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UpdateCarIDInformationinCargoRecords(["Start Step"])
E_UpdateCarIDInformationinCargoRecords(["End Step"])
N_UpdateCarIDInformationinCargoRecords_Node0{"The system processes the car ID
update"}:::decision N_UpdateCarIDInformationinCargoRecords_Node0_action["Car ID information is updated in
all associated cargo records with
equipment details from N7 segment"]:::main N_UpdateCarIDInformationinCargoRecords_Node0 -- Yes --> N_UpdateCarIDInformationinCargoRecords_Node0_action N_UpdateCarIDInformationinCargoRecords_Node0_action --> E_UpdateCarIDInformationinCargoRecords S_UpdateCarIDInformationinCargoRecords --> N_UpdateCarIDInformationinCargoRecords_Node0 N_UpdateCarIDInformationinCargoRecords_Node1{"The system processes cargo records
associated with the equipment"}:::decision N_UpdateCarIDInformationinCargoRecords_Node1_action["Car ID information is updated in
the relevant cargo records"]:::main N_UpdateCarIDInformationinCargoRecords_Node1 -- Yes --> N_UpdateCarIDInformationinCargoRecords_Node1_action N_UpdateCarIDInformationinCargoRecords_Node1_action --> E_UpdateCarIDInformationinCargoRecords N_UpdateCarIDInformationinCargoRecords_Node0 -- No --> N_UpdateCarIDInformationinCargoRecords_Node1 N_UpdateCarIDInformationinCargoRecords_Node1 -- No --> E_UpdateCarIDInformationinCargoRecords
update"}:::decision N_UpdateCarIDInformationinCargoRecords_Node0_action["Car ID information is updated in
all associated cargo records with
equipment details from N7 segment"]:::main N_UpdateCarIDInformationinCargoRecords_Node0 -- Yes --> N_UpdateCarIDInformationinCargoRecords_Node0_action N_UpdateCarIDInformationinCargoRecords_Node0_action --> E_UpdateCarIDInformationinCargoRecords S_UpdateCarIDInformationinCargoRecords --> N_UpdateCarIDInformationinCargoRecords_Node0 N_UpdateCarIDInformationinCargoRecords_Node1{"The system processes cargo records
associated with the equipment"}:::decision N_UpdateCarIDInformationinCargoRecords_Node1_action["Car ID information is updated in
the relevant cargo records"]:::main N_UpdateCarIDInformationinCargoRecords_Node1 -- Yes --> N_UpdateCarIDInformationinCargoRecords_Node1_action N_UpdateCarIDInformationinCargoRecords_Node1_action --> E_UpdateCarIDInformationinCargoRecords N_UpdateCarIDInformationinCargoRecords_Node0 -- No --> N_UpdateCarIDInformationinCargoRecords_Node1 N_UpdateCarIDInformationinCargoRecords_Node1 -- No --> E_UpdateCarIDInformationinCargoRecords
File: GCX016.cbl
GIVEN:
Cargo records are found for the car ID and N7 segment contains valid equipment data
WHEN:
The system processes the car ID update
THEN:
Car ID information is updated in all associated cargo records with equipment details from N7 segment
File: GCX016.cbl
GIVEN:
Equipment ID has been validated as valid
WHEN:
The system processes cargo records associated with the equipment
THEN:
Car ID information is updated in the relevant cargo records
β Consolidated Acceptance Criteria
- The system validates the equipment type → equipment type is verified against integration requirements and appropriate processing path is determined
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ValidateEquipmentTypeforIntegration(["Start Step"])
E_ValidateEquipmentTypeforIntegration(["End Step"])
N_ValidateEquipmentTypeforIntegration_Node0{"The system validates the equipment
type"}:::decision N_ValidateEquipmentTypeforIntegration_Node0_action["Equipment type is verified against
integration requirements and
appropriate processing path is
determined"]:::main N_ValidateEquipmentTypeforIntegration_Node0 -- Yes --> N_ValidateEquipmentTypeforIntegration_Node0_action N_ValidateEquipmentTypeforIntegration_Node0_action --> E_ValidateEquipmentTypeforIntegration S_ValidateEquipmentTypeforIntegration --> N_ValidateEquipmentTypeforIntegration_Node0 N_ValidateEquipmentTypeforIntegration_Node0 -- No --> E_ValidateEquipmentTypeforIntegration
type"}:::decision N_ValidateEquipmentTypeforIntegration_Node0_action["Equipment type is verified against
integration requirements and
appropriate processing path is
determined"]:::main N_ValidateEquipmentTypeforIntegration_Node0 -- Yes --> N_ValidateEquipmentTypeforIntegration_Node0_action N_ValidateEquipmentTypeforIntegration_Node0_action --> E_ValidateEquipmentTypeforIntegration S_ValidateEquipmentTypeforIntegration --> N_ValidateEquipmentTypeforIntegration_Node0 N_ValidateEquipmentTypeforIntegration_Node0 -- No --> E_ValidateEquipmentTypeforIntegration
File: GCX016.cbl
GIVEN:
Car ID information has been updated in cargo records
WHEN:
The system validates the equipment type
THEN:
- Equipment type is verified against integration requirements
- Appropriate processing path is determined
β Consolidated Acceptance Criteria
- The system extracts equipment details → relevant equipment information is extracted and prepared for KCSM integration
- The system extracts equipment details → all necessary equipment information is extracted for KCSM transmission
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExtractEquipmentDetailsforKCSM(["Start Step"])
E_ExtractEquipmentDetailsforKCSM(["End Step"])
N_ExtractEquipmentDetailsforKCSM_Node0{"The system extracts equipment
details"}:::decision N_ExtractEquipmentDetailsforKCSM_Node0_action["Relevant equipment information is
extracted and prepared for KCSM
integration"]:::main N_ExtractEquipmentDetailsforKCSM_Node0 -- Yes --> N_ExtractEquipmentDetailsforKCSM_Node0_action N_ExtractEquipmentDetailsforKCSM_Node0_action --> E_ExtractEquipmentDetailsforKCSM S_ExtractEquipmentDetailsforKCSM --> N_ExtractEquipmentDetailsforKCSM_Node0 N_ExtractEquipmentDetailsforKCSM_Node1{"The system extracts equipment
details"}:::decision N_ExtractEquipmentDetailsforKCSM_Node1_action["All necessary equipment information
is extracted for KCSM transmission"]:::main N_ExtractEquipmentDetailsforKCSM_Node1 -- Yes --> N_ExtractEquipmentDetailsforKCSM_Node1_action N_ExtractEquipmentDetailsforKCSM_Node1_action --> E_ExtractEquipmentDetailsforKCSM N_ExtractEquipmentDetailsforKCSM_Node0 -- No --> N_ExtractEquipmentDetailsforKCSM_Node1 N_ExtractEquipmentDetailsforKCSM_Node1 -- No --> E_ExtractEquipmentDetailsforKCSM
details"}:::decision N_ExtractEquipmentDetailsforKCSM_Node0_action["Relevant equipment information is
extracted and prepared for KCSM
integration"]:::main N_ExtractEquipmentDetailsforKCSM_Node0 -- Yes --> N_ExtractEquipmentDetailsforKCSM_Node0_action N_ExtractEquipmentDetailsforKCSM_Node0_action --> E_ExtractEquipmentDetailsforKCSM S_ExtractEquipmentDetailsforKCSM --> N_ExtractEquipmentDetailsforKCSM_Node0 N_ExtractEquipmentDetailsforKCSM_Node1{"The system extracts equipment
details"}:::decision N_ExtractEquipmentDetailsforKCSM_Node1_action["All necessary equipment information
is extracted for KCSM transmission"]:::main N_ExtractEquipmentDetailsforKCSM_Node1 -- Yes --> N_ExtractEquipmentDetailsforKCSM_Node1_action N_ExtractEquipmentDetailsforKCSM_Node1_action --> E_ExtractEquipmentDetailsforKCSM N_ExtractEquipmentDetailsforKCSM_Node0 -- No --> N_ExtractEquipmentDetailsforKCSM_Node1 N_ExtractEquipmentDetailsforKCSM_Node1 -- No --> E_ExtractEquipmentDetailsforKCSM
File: GCX016.cbl
GIVEN:
KCSM integration is required
WHEN:
The system extracts equipment details
THEN:
- Relevant equipment information is extracted
- Prepared for kcsm integration
File: GCX016.cbl
GIVEN:
Disposition code indicates KCSM integration is required
WHEN:
The system extracts equipment details
THEN:
All necessary equipment information is extracted for KCSM transmission
β Consolidated Acceptance Criteria
- The system updates the cargo database → equipment information is permanently stored in the cargo database with all relevant details
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UpdateEquipmentInformationinCargoDatabase(["Start Step"])
E_UpdateEquipmentInformationinCargoDatabase(["End Step"])
N_UpdateEquipmentInformationinCargoDatabase_Node0{"The system updates the cargo
database"}:::decision N_UpdateEquipmentInformationinCargoDatabase_Node0_action["Equipment information is
permanently stored in the cargo
database with all relevant details"]:::main N_UpdateEquipmentInformationinCargoDatabase_Node0 -- Yes --> N_UpdateEquipmentInformationinCargoDatabase_Node0_action N_UpdateEquipmentInformationinCargoDatabase_Node0_action --> E_UpdateEquipmentInformationinCargoDatabase S_UpdateEquipmentInformationinCargoDatabase --> N_UpdateEquipmentInformationinCargoDatabase_Node0 N_UpdateEquipmentInformationinCargoDatabase_Node0 -- No --> E_UpdateEquipmentInformationinCargoDatabase
database"}:::decision N_UpdateEquipmentInformationinCargoDatabase_Node0_action["Equipment information is
permanently stored in the cargo
database with all relevant details"]:::main N_UpdateEquipmentInformationinCargoDatabase_Node0 -- Yes --> N_UpdateEquipmentInformationinCargoDatabase_Node0_action N_UpdateEquipmentInformationinCargoDatabase_Node0_action --> E_UpdateEquipmentInformationinCargoDatabase S_UpdateEquipmentInformationinCargoDatabase --> N_UpdateEquipmentInformationinCargoDatabase_Node0 N_UpdateEquipmentInformationinCargoDatabase_Node0 -- No --> E_UpdateEquipmentInformationinCargoDatabase
File: GCX016.cbl
GIVEN:
Equipment details have been processed and validated
WHEN:
The system updates the cargo database
THEN:
Equipment information is permanently stored in the cargo database with all relevant details
β Consolidated Acceptance Criteria
- The system completes equipment processing → all equipment processing activities are logged with appropriate details for audit trail
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogEquipmentProcessingActivity(["Start Step"])
E_LogEquipmentProcessingActivity(["End Step"])
N_LogEquipmentProcessingActivity_Node0{"The system completes equipment
processing"}:::decision N_LogEquipmentProcessingActivity_Node0_action["All equipment processing activities
are logged with appropriate details
for audit trail"]:::main N_LogEquipmentProcessingActivity_Node0 -- Yes --> N_LogEquipmentProcessingActivity_Node0_action N_LogEquipmentProcessingActivity_Node0_action --> E_LogEquipmentProcessingActivity S_LogEquipmentProcessingActivity --> N_LogEquipmentProcessingActivity_Node0 N_LogEquipmentProcessingActivity_Node0 -- No --> E_LogEquipmentProcessingActivity
processing"}:::decision N_LogEquipmentProcessingActivity_Node0_action["All equipment processing activities
are logged with appropriate details
for audit trail"]:::main N_LogEquipmentProcessingActivity_Node0 -- Yes --> N_LogEquipmentProcessingActivity_Node0_action N_LogEquipmentProcessingActivity_Node0_action --> E_LogEquipmentProcessingActivity S_LogEquipmentProcessingActivity --> N_LogEquipmentProcessingActivity_Node0 N_LogEquipmentProcessingActivity_Node0 -- No --> E_LogEquipmentProcessingActivity
File: GCX016.cbl
GIVEN:
Equipment information has been updated in the database
WHEN:
The system completes equipment processing
THEN:
All equipment processing activities are logged with appropriate details for audit trail
β Consolidated Acceptance Criteria
- The system processes the validation failure → an equipment validation error is generated with appropriate error details and processing continues
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GenerateEquipmentValidationError(["Start Step"])
E_GenerateEquipmentValidationError(["End Step"])
N_GenerateEquipmentValidationError_Node0{"The system processes the validation
failure"}:::decision N_GenerateEquipmentValidationError_Node0_action["An equipment validation error is
generated with appropriate error
details and processing continues"]:::main N_GenerateEquipmentValidationError_Node0 -- Yes --> N_GenerateEquipmentValidationError_Node0_action N_GenerateEquipmentValidationError_Node0_action --> E_GenerateEquipmentValidationError S_GenerateEquipmentValidationError --> N_GenerateEquipmentValidationError_Node0 N_GenerateEquipmentValidationError_Node0 -- No --> E_GenerateEquipmentValidationError
failure"}:::decision N_GenerateEquipmentValidationError_Node0_action["An equipment validation error is
generated with appropriate error
details and processing continues"]:::main N_GenerateEquipmentValidationError_Node0 -- Yes --> N_GenerateEquipmentValidationError_Node0_action N_GenerateEquipmentValidationError_Node0_action --> E_GenerateEquipmentValidationError S_GenerateEquipmentValidationError --> N_GenerateEquipmentValidationError_Node0 N_GenerateEquipmentValidationError_Node0 -- No --> E_GenerateEquipmentValidationError
File: GCX016.cbl
GIVEN:
Equipment ID validation has failed
WHEN:
The system processes the validation failure
THEN:
- An equipment validation error is generated with appropriate error details
- Processing continues
β Consolidated Acceptance Criteria
- The system processes the cargo search failure → a cargo not found warning is logged and processing continues to next segment
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogCargoNotFoundWarning(["Start Step"])
E_LogCargoNotFoundWarning(["End Step"])
N_LogCargoNotFoundWarning_Node0{"The system processes the cargo
search failure"}:::decision N_LogCargoNotFoundWarning_Node0_action["A cargo not found warning is logged
and processing continues to next
segment"]:::main N_LogCargoNotFoundWarning_Node0 -- Yes --> N_LogCargoNotFoundWarning_Node0_action N_LogCargoNotFoundWarning_Node0_action --> E_LogCargoNotFoundWarning S_LogCargoNotFoundWarning --> N_LogCargoNotFoundWarning_Node0 N_LogCargoNotFoundWarning_Node0 -- No --> E_LogCargoNotFoundWarning
search failure"}:::decision N_LogCargoNotFoundWarning_Node0_action["A cargo not found warning is logged
and processing continues to next
segment"]:::main N_LogCargoNotFoundWarning_Node0 -- Yes --> N_LogCargoNotFoundWarning_Node0_action N_LogCargoNotFoundWarning_Node0_action --> E_LogCargoNotFoundWarning S_LogCargoNotFoundWarning --> N_LogCargoNotFoundWarning_Node0 N_LogCargoNotFoundWarning_Node0 -- No --> E_LogCargoNotFoundWarning
File: GCX016.cbl
GIVEN:
No cargo records are found for the car ID
WHEN:
The system processes the cargo search failure
THEN:
- A cargo not found warning is logged
- Processing continues to next segment
β Consolidated Acceptance Criteria
- The segment type is identified as 'SE' → the system initiates SE segment processing for transaction set completion
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SESegmentDetected(["Start Step"])
E_SESegmentDetected(["End Step"])
N_SESegmentDetected_Node0{"The segment type is identified as
SE"}:::decision N_SESegmentDetected_Node0_action["The system initiates SE segment
processing for transaction set
completion"]:::main N_SESegmentDetected_Node0 -- Yes --> N_SESegmentDetected_Node0_action N_SESegmentDetected_Node0_action --> E_SESegmentDetected S_SESegmentDetected --> N_SESegmentDetected_Node0 N_SESegmentDetected_Node0 -- No --> E_SESegmentDetected
SE"}:::decision N_SESegmentDetected_Node0_action["The system initiates SE segment
processing for transaction set
completion"]:::main N_SESegmentDetected_Node0 -- Yes --> N_SESegmentDetected_Node0_action N_SESegmentDetected_Node0_action --> E_SESegmentDetected S_SESegmentDetected --> N_SESegmentDetected_Node0 N_SESegmentDetected_Node0 -- No --> E_SESegmentDetected
File: GCX016.cbl
GIVEN:
A message segment is being processed
WHEN:
The segment type is identified as 'SE'
THEN:
The system initiates SE segment processing for transaction set completion
β Consolidated Acceptance Criteria
- The system validates the segment structure → the segment must contain transaction set control number and segment count in valid format
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ValidateSESegmentStructure(["Start Step"])
E_ValidateSESegmentStructure(["End Step"])
N_ValidateSESegmentStructure_Node0{"The system validates the segment
structure"}:::decision N_ValidateSESegmentStructure_Node0_action["The segment must contain
transaction set control number and
segment count in valid format"]:::main N_ValidateSESegmentStructure_Node0 -- Yes --> N_ValidateSESegmentStructure_Node0_action N_ValidateSESegmentStructure_Node0_action --> E_ValidateSESegmentStructure S_ValidateSESegmentStructure --> N_ValidateSESegmentStructure_Node0 N_ValidateSESegmentStructure_Node0 -- No --> E_ValidateSESegmentStructure
structure"}:::decision N_ValidateSESegmentStructure_Node0_action["The segment must contain
transaction set control number and
segment count in valid format"]:::main N_ValidateSESegmentStructure_Node0 -- Yes --> N_ValidateSESegmentStructure_Node0_action N_ValidateSESegmentStructure_Node0_action --> E_ValidateSESegmentStructure S_ValidateSESegmentStructure --> N_ValidateSESegmentStructure_Node0 N_ValidateSESegmentStructure_Node0 -- No --> E_ValidateSESegmentStructure
File: GCX016.cbl
GIVEN:
An SE segment has been detected
WHEN:
The system validates the segment structure
THEN:
- The segment must contain transaction set control number
- Segment count in valid format
β Consolidated Acceptance Criteria
- The validation results are evaluated → if segment is valid, proceed to extract control data, otherwise generate validation error
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ValidSESegment(["Start Step"])
E_ValidSESegment(["End Step"])
N_ValidSESegment_Node0{"The validation results are
evaluated"}:::decision N_ValidSESegment_Node0_action["If segment is valid, proceed to
extract control data, otherwise
generate validation error"]:::main N_ValidSESegment_Node0 -- Yes --> N_ValidSESegment_Node0_action N_ValidSESegment_Node0_action --> E_ValidSESegment S_ValidSESegment --> N_ValidSESegment_Node0 N_ValidSESegment_Node0 -- No --> E_ValidSESegment
evaluated"}:::decision N_ValidSESegment_Node0_action["If segment is valid, proceed to
extract control data, otherwise
generate validation error"]:::main N_ValidSESegment_Node0 -- Yes --> N_ValidSESegment_Node0_action N_ValidSESegment_Node0_action --> E_ValidSESegment S_ValidSESegment --> N_ValidSESegment_Node0 N_ValidSESegment_Node0 -- No --> E_ValidSESegment
File: GCX016.cbl
GIVEN:
SE segment structure has been validated
WHEN:
The validation results are evaluated
THEN:
If segment is valid, proceed to extract control data, otherwise generate validation error
β Consolidated Acceptance Criteria
- The system extracts the segment count from SE segment → the segment count is captured for validation against actual processed segments
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExtractNumberofIncludedSegments(["Start Step"])
E_ExtractNumberofIncludedSegments(["End Step"])
N_ExtractNumberofIncludedSegments_Node0{"The system extracts the segment
count from SE segment"}:::decision N_ExtractNumberofIncludedSegments_Node0_action["The segment count is captured for
validation against actual processed
segments"]:::main N_ExtractNumberofIncludedSegments_Node0 -- Yes --> N_ExtractNumberofIncludedSegments_Node0_action N_ExtractNumberofIncludedSegments_Node0_action --> E_ExtractNumberofIncludedSegments S_ExtractNumberofIncludedSegments --> N_ExtractNumberofIncludedSegments_Node0 N_ExtractNumberofIncludedSegments_Node0 -- No --> E_ExtractNumberofIncludedSegments
count from SE segment"}:::decision N_ExtractNumberofIncludedSegments_Node0_action["The segment count is captured for
validation against actual processed
segments"]:::main N_ExtractNumberofIncludedSegments_Node0 -- Yes --> N_ExtractNumberofIncludedSegments_Node0_action N_ExtractNumberofIncludedSegments_Node0_action --> E_ExtractNumberofIncludedSegments S_ExtractNumberofIncludedSegments --> N_ExtractNumberofIncludedSegments_Node0 N_ExtractNumberofIncludedSegments_Node0 -- No --> E_ExtractNumberofIncludedSegments
File: GCX016.cbl
GIVEN:
Transaction set control number has been extracted
WHEN:
The system extracts the segment count from SE segment
THEN:
The segment count is captured for validation against actual processed segments
β Consolidated Acceptance Criteria
- The control number is compared with the ST segment control number → if numbers match, proceed to segment count validation, otherwise log control number mismatch error
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ControlNumberMatchesSTSegment(["Start Step"])
E_ControlNumberMatchesSTSegment(["End Step"])
N_ControlNumberMatchesSTSegment_Node0{"The control number is compared with
the ST segment control number"}:::decision N_ControlNumberMatchesSTSegment_Node0_action["If numbers match, proceed to
segment count validation, otherwise
log control number mismatch error"]:::main N_ControlNumberMatchesSTSegment_Node0 -- Yes --> N_ControlNumberMatchesSTSegment_Node0_action N_ControlNumberMatchesSTSegment_Node0_action --> E_ControlNumberMatchesSTSegment S_ControlNumberMatchesSTSegment --> N_ControlNumberMatchesSTSegment_Node0 N_ControlNumberMatchesSTSegment_Node0 -- No --> E_ControlNumberMatchesSTSegment
the ST segment control number"}:::decision N_ControlNumberMatchesSTSegment_Node0_action["If numbers match, proceed to
segment count validation, otherwise
log control number mismatch error"]:::main N_ControlNumberMatchesSTSegment_Node0 -- Yes --> N_ControlNumberMatchesSTSegment_Node0_action N_ControlNumberMatchesSTSegment_Node0_action --> E_ControlNumberMatchesSTSegment S_ControlNumberMatchesSTSegment --> N_ControlNumberMatchesSTSegment_Node0 N_ControlNumberMatchesSTSegment_Node0 -- No --> E_ControlNumberMatchesSTSegment
File: GCX016.cbl
GIVEN:
SE segment control number has been extracted
WHEN:
The control number is compared with the ST segment control number
THEN:
If numbers match, proceed to segment count validation, otherwise log control number mismatch error
β Consolidated Acceptance Criteria
- The declared segment count is compared with actual processed segments → if counts match, mark transaction set complete, otherwise log segment count mismatch error
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SegmentCountMatchesActual(["Start Step"])
E_SegmentCountMatchesActual(["End Step"])
N_SegmentCountMatchesActual_Node0{"The declared segment count is
compared with actual processed
segments"}:::decision N_SegmentCountMatchesActual_Node0_action["If counts match, mark transaction
set complete, otherwise log segment
count mismatch error"]:::main N_SegmentCountMatchesActual_Node0 -- Yes --> N_SegmentCountMatchesActual_Node0_action N_SegmentCountMatchesActual_Node0_action --> E_SegmentCountMatchesActual S_SegmentCountMatchesActual --> N_SegmentCountMatchesActual_Node0 N_SegmentCountMatchesActual_Node0 -- No --> E_SegmentCountMatchesActual
compared with actual processed
segments"}:::decision N_SegmentCountMatchesActual_Node0_action["If counts match, mark transaction
set complete, otherwise log segment
count mismatch error"]:::main N_SegmentCountMatchesActual_Node0 -- Yes --> N_SegmentCountMatchesActual_Node0_action N_SegmentCountMatchesActual_Node0_action --> E_SegmentCountMatchesActual S_SegmentCountMatchesActual --> N_SegmentCountMatchesActual_Node0 N_SegmentCountMatchesActual_Node0 -- No --> E_SegmentCountMatchesActual
File: GCX016.cbl
GIVEN:
Control numbers match between ST and SE segments
WHEN:
The declared segment count is compared with actual processed segments
THEN:
If counts match, mark transaction set complete, otherwise log segment count mismatch error
β Consolidated Acceptance Criteria
- The system marks the transaction set as complete → the transaction set status is updated to indicate successful completion
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MarkTransactionSetasComplete(["Start Step"])
E_MarkTransactionSetasComplete(["End Step"])
N_MarkTransactionSetasComplete_Node0{"The system marks the transaction
set as complete"}:::decision N_MarkTransactionSetasComplete_Node0_action["The transaction set status is
updated to indicate successful
completion"]:::main N_MarkTransactionSetasComplete_Node0 -- Yes --> N_MarkTransactionSetasComplete_Node0_action N_MarkTransactionSetasComplete_Node0_action --> E_MarkTransactionSetasComplete S_MarkTransactionSetasComplete --> N_MarkTransactionSetasComplete_Node0 N_MarkTransactionSetasComplete_Node0 -- No --> E_MarkTransactionSetasComplete
set as complete"}:::decision N_MarkTransactionSetasComplete_Node0_action["The transaction set status is
updated to indicate successful
completion"]:::main N_MarkTransactionSetasComplete_Node0 -- Yes --> N_MarkTransactionSetasComplete_Node0_action N_MarkTransactionSetasComplete_Node0_action --> E_MarkTransactionSetasComplete S_MarkTransactionSetasComplete --> N_MarkTransactionSetasComplete_Node0 N_MarkTransactionSetasComplete_Node0 -- No --> E_MarkTransactionSetasComplete
File: GCX016.cbl
GIVEN:
All SE segment validations have passed
WHEN:
The system marks the transaction set as complete
THEN:
The transaction set status is updated to indicate successful completion
β Consolidated Acceptance Criteria
- The system updates the transaction set status → the status reflects successful processing and completion of the transaction set
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UpdateTransactionSetStatus(["Start Step"])
E_UpdateTransactionSetStatus(["End Step"])
N_UpdateTransactionSetStatus_Node0{"The system updates the transaction
set status"}:::decision N_UpdateTransactionSetStatus_Node0_action["The status reflects successful
processing and completion of the
transaction set"]:::main N_UpdateTransactionSetStatus_Node0 -- Yes --> N_UpdateTransactionSetStatus_Node0_action N_UpdateTransactionSetStatus_Node0_action --> E_UpdateTransactionSetStatus S_UpdateTransactionSetStatus --> N_UpdateTransactionSetStatus_Node0 N_UpdateTransactionSetStatus_Node0 -- No --> E_UpdateTransactionSetStatus
set status"}:::decision N_UpdateTransactionSetStatus_Node0_action["The status reflects successful
processing and completion of the
transaction set"]:::main N_UpdateTransactionSetStatus_Node0 -- Yes --> N_UpdateTransactionSetStatus_Node0_action N_UpdateTransactionSetStatus_Node0_action --> E_UpdateTransactionSetStatus S_UpdateTransactionSetStatus --> N_UpdateTransactionSetStatus_Node0 N_UpdateTransactionSetStatus_Node0 -- No --> E_UpdateTransactionSetStatus
File: GCX016.cbl
GIVEN:
Transaction set has been marked as complete
WHEN:
The system updates the transaction set status
THEN:
- The status reflects successful processing
- Completion of the transaction set
β Consolidated Acceptance Criteria
- The system prepares for next transaction set → processing flags and counters are reset for the next transaction set
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_PrepareforNextTransactionSet(["Start Step"])
E_PrepareforNextTransactionSet(["End Step"])
N_PrepareforNextTransactionSet_Node0{"The system prepares for next
transaction set"}:::decision N_PrepareforNextTransactionSet_Node0_action["Processing flags and counters are
reset for the next transaction set"]:::main N_PrepareforNextTransactionSet_Node0 -- Yes --> N_PrepareforNextTransactionSet_Node0_action N_PrepareforNextTransactionSet_Node0_action --> E_PrepareforNextTransactionSet S_PrepareforNextTransactionSet --> N_PrepareforNextTransactionSet_Node0 N_PrepareforNextTransactionSet_Node0 -- No --> E_PrepareforNextTransactionSet
transaction set"}:::decision N_PrepareforNextTransactionSet_Node0_action["Processing flags and counters are
reset for the next transaction set"]:::main N_PrepareforNextTransactionSet_Node0 -- Yes --> N_PrepareforNextTransactionSet_Node0_action N_PrepareforNextTransactionSet_Node0_action --> E_PrepareforNextTransactionSet S_PrepareforNextTransactionSet --> N_PrepareforNextTransactionSet_Node0 N_PrepareforNextTransactionSet_Node0 -- No --> E_PrepareforNextTransactionSet
File: GCX016.cbl
GIVEN:
Current transaction set status has been updated
WHEN:
The system prepares for next transaction set
THEN:
- Processing flags
- Counters are reset for the next transaction set
β Consolidated Acceptance Criteria
- The system generates a validation error → an error message is created indicating SE segment validation failure
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GenerateSEValidationError(["Start Step"])
E_GenerateSEValidationError(["End Step"])
N_GenerateSEValidationError_Node0{"The system generates a validation
error"}:::decision N_GenerateSEValidationError_Node0_action["An error message is created
indicating SE segment validation
failure"]:::exclusion N_GenerateSEValidationError_Node0 -- Yes -->|Alternative| N_GenerateSEValidationError_Node0_action N_GenerateSEValidationError_Node0_action --> E_GenerateSEValidationError S_GenerateSEValidationError --> N_GenerateSEValidationError_Node0 N_GenerateSEValidationError_Node0 -- No --> E_GenerateSEValidationError
error"}:::decision N_GenerateSEValidationError_Node0_action["An error message is created
indicating SE segment validation
failure"]:::exclusion N_GenerateSEValidationError_Node0 -- Yes -->|Alternative| N_GenerateSEValidationError_Node0_action N_GenerateSEValidationError_Node0_action --> E_GenerateSEValidationError S_GenerateSEValidationError --> N_GenerateSEValidationError_Node0 N_GenerateSEValidationError_Node0 -- No --> E_GenerateSEValidationError
File: GCX016.cbl
GIVEN:
SE segment fails structural validation
WHEN:
The system generates a validation error
THEN:
An error message is created indicating SE segment validation failure
β Consolidated Acceptance Criteria
- The system logs the control number mismatch → an error is recorded indicating control number inconsistency between ST and SE segments
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogControlNumberMismatch(["Start Step"])
E_LogControlNumberMismatch(["End Step"])
N_LogControlNumberMismatch_Node0{"The system logs the control number
mismatch"}:::decision N_LogControlNumberMismatch_Node0_action["An error is recorded indicating
control number inconsistency between
ST and SE segments"]:::main N_LogControlNumberMismatch_Node0 -- Yes --> N_LogControlNumberMismatch_Node0_action N_LogControlNumberMismatch_Node0_action --> E_LogControlNumberMismatch S_LogControlNumberMismatch --> N_LogControlNumberMismatch_Node0 N_LogControlNumberMismatch_Node0 -- No --> E_LogControlNumberMismatch
mismatch"}:::decision N_LogControlNumberMismatch_Node0_action["An error is recorded indicating
control number inconsistency between
ST and SE segments"]:::main N_LogControlNumberMismatch_Node0 -- Yes --> N_LogControlNumberMismatch_Node0_action N_LogControlNumberMismatch_Node0_action --> E_LogControlNumberMismatch S_LogControlNumberMismatch --> N_LogControlNumberMismatch_Node0 N_LogControlNumberMismatch_Node0 -- No --> E_LogControlNumberMismatch
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
SE control number does not match ST control number
WHEN:
The system logs the control number mismatch
THEN:
- An error is recorded indicating control number inconsistency between st
- Se segments
β Consolidated Acceptance Criteria
- The system logs the segment count mismatch → an error is recorded indicating inconsistency between declared and actual segment counts
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogSegmentCountMismatch(["Start Step"])
E_LogSegmentCountMismatch(["End Step"])
N_LogSegmentCountMismatch_Node0{"The system logs the segment count
mismatch"}:::decision N_LogSegmentCountMismatch_Node0_action["An error is recorded indicating
inconsistency between declared and
actual segment counts"]:::main N_LogSegmentCountMismatch_Node0 -- Yes --> N_LogSegmentCountMismatch_Node0_action N_LogSegmentCountMismatch_Node0_action --> E_LogSegmentCountMismatch S_LogSegmentCountMismatch --> N_LogSegmentCountMismatch_Node0 N_LogSegmentCountMismatch_Node0 -- No --> E_LogSegmentCountMismatch
mismatch"}:::decision N_LogSegmentCountMismatch_Node0_action["An error is recorded indicating
inconsistency between declared and
actual segment counts"]:::main N_LogSegmentCountMismatch_Node0 -- Yes --> N_LogSegmentCountMismatch_Node0_action N_LogSegmentCountMismatch_Node0_action --> E_LogSegmentCountMismatch S_LogSegmentCountMismatch --> N_LogSegmentCountMismatch_Node0 N_LogSegmentCountMismatch_Node0 -- No --> E_LogSegmentCountMismatch
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
Declared segment count does not match actual processed segments
WHEN:
The system logs the segment count mismatch
THEN:
- An error is recorded indicating inconsistency between declared
- Actual segment counts
β Consolidated Acceptance Criteria
- The system processes the current cargo record → cargo record is prepared for disposition code application and status updates
- The system processes the cargo record → the cargo record is processed according to disposition code and business rules
- The system processes the individual cargo record → the cargo record is processed according to the disposition code rules and business logic
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ProcessCurrentCargoRecord(["Start Step"])
E_ProcessCurrentCargoRecord(["End Step"])
N_ProcessCurrentCargoRecord_Node0{"The system processes the current
cargo record"}:::decision N_ProcessCurrentCargoRecord_Node0_action["Cargo record is prepared for
disposition code application and
status updates"]:::main N_ProcessCurrentCargoRecord_Node0 -- Yes --> N_ProcessCurrentCargoRecord_Node0_action N_ProcessCurrentCargoRecord_Node0_action --> E_ProcessCurrentCargoRecord S_ProcessCurrentCargoRecord --> N_ProcessCurrentCargoRecord_Node0 N_ProcessCurrentCargoRecord_Node1{"The system processes the cargo
record"}:::decision N_ProcessCurrentCargoRecord_Node1_action["The cargo record is processed
according to disposition code and
business rules"]:::main N_ProcessCurrentCargoRecord_Node1 -- Yes --> N_ProcessCurrentCargoRecord_Node1_action N_ProcessCurrentCargoRecord_Node1_action --> E_ProcessCurrentCargoRecord N_ProcessCurrentCargoRecord_Node0 -- No --> N_ProcessCurrentCargoRecord_Node1 N_ProcessCurrentCargoRecord_Node2{"The system processes the individual
cargo record"}:::decision N_ProcessCurrentCargoRecord_Node2_action["The cargo record is processed
according to the disposition code
rules and business logic"]:::main N_ProcessCurrentCargoRecord_Node2 -- Yes --> N_ProcessCurrentCargoRecord_Node2_action N_ProcessCurrentCargoRecord_Node2_action --> E_ProcessCurrentCargoRecord N_ProcessCurrentCargoRecord_Node1 -- No --> N_ProcessCurrentCargoRecord_Node2 N_ProcessCurrentCargoRecord_Node2 -- No --> E_ProcessCurrentCargoRecord
cargo record"}:::decision N_ProcessCurrentCargoRecord_Node0_action["Cargo record is prepared for
disposition code application and
status updates"]:::main N_ProcessCurrentCargoRecord_Node0 -- Yes --> N_ProcessCurrentCargoRecord_Node0_action N_ProcessCurrentCargoRecord_Node0_action --> E_ProcessCurrentCargoRecord S_ProcessCurrentCargoRecord --> N_ProcessCurrentCargoRecord_Node0 N_ProcessCurrentCargoRecord_Node1{"The system processes the cargo
record"}:::decision N_ProcessCurrentCargoRecord_Node1_action["The cargo record is processed
according to disposition code and
business rules"]:::main N_ProcessCurrentCargoRecord_Node1 -- Yes --> N_ProcessCurrentCargoRecord_Node1_action N_ProcessCurrentCargoRecord_Node1_action --> E_ProcessCurrentCargoRecord N_ProcessCurrentCargoRecord_Node0 -- No --> N_ProcessCurrentCargoRecord_Node1 N_ProcessCurrentCargoRecord_Node2{"The system processes the individual
cargo record"}:::decision N_ProcessCurrentCargoRecord_Node2_action["The cargo record is processed
according to the disposition code
rules and business logic"]:::main N_ProcessCurrentCargoRecord_Node2 -- Yes --> N_ProcessCurrentCargoRecord_Node2_action N_ProcessCurrentCargoRecord_Node2_action --> E_ProcessCurrentCargoRecord N_ProcessCurrentCargoRecord_Node1 -- No --> N_ProcessCurrentCargoRecord_Node2 N_ProcessCurrentCargoRecord_Node2 -- No --> E_ProcessCurrentCargoRecord
File: GCX016.cbl
GIVEN:
A cargo record has been found for the bond number
WHEN:
The system processes the current cargo record
THEN:
- Cargo record is prepared for disposition code application
- Status updates
File: GCX016.cbl
GIVEN:
A cargo record with matching bond number is loaded
WHEN:
The system processes the cargo record
THEN:
- The cargo record is processed according to disposition code
- Business rules
File: GCX016.cbl
GIVEN:
A cargo record has been loaded for processing within a bond group
WHEN:
The system processes the individual cargo record
THEN:
- The cargo record is processed according to the disposition code rules
- Business logic
β Consolidated Acceptance Criteria
- The system applies the disposition code to the cargo → disposition code is validated against disposition code tables and applied to cargo status array
- The system applies the disposition code to the cargo → the disposition code is processed according to customs rules and the appropriate action is determined for the cargo
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ApplyDispositionCodetoCargo(["Start Step"])
E_ApplyDispositionCodetoCargo(["End Step"])
N_ApplyDispositionCodetoCargo_Node0{"The system applies the disposition
code to the cargo"}:::decision N_ApplyDispositionCodetoCargo_Node0_action["Disposition code is validated
against disposition code tables and
applied to cargo status array"]:::main N_ApplyDispositionCodetoCargo_Node0 -- Yes --> N_ApplyDispositionCodetoCargo_Node0_action N_ApplyDispositionCodetoCargo_Node0_action --> E_ApplyDispositionCodetoCargo S_ApplyDispositionCodetoCargo --> N_ApplyDispositionCodetoCargo_Node0 N_ApplyDispositionCodetoCargo_Node1{"The system applies the disposition
code to the cargo"}:::decision N_ApplyDispositionCodetoCargo_Node1_action["The disposition code is processed
according to customs rules and the
appropriate action is determined for
the cargo"]:::main N_ApplyDispositionCodetoCargo_Node1 -- Yes --> N_ApplyDispositionCodetoCargo_Node1_action N_ApplyDispositionCodetoCargo_Node1_action --> E_ApplyDispositionCodetoCargo N_ApplyDispositionCodetoCargo_Node0 -- No --> N_ApplyDispositionCodetoCargo_Node1 N_ApplyDispositionCodetoCargo_Node1 -- No --> E_ApplyDispositionCodetoCargo
code to the cargo"}:::decision N_ApplyDispositionCodetoCargo_Node0_action["Disposition code is validated
against disposition code tables and
applied to cargo status array"]:::main N_ApplyDispositionCodetoCargo_Node0 -- Yes --> N_ApplyDispositionCodetoCargo_Node0_action N_ApplyDispositionCodetoCargo_Node0_action --> E_ApplyDispositionCodetoCargo S_ApplyDispositionCodetoCargo --> N_ApplyDispositionCodetoCargo_Node0 N_ApplyDispositionCodetoCargo_Node1{"The system applies the disposition
code to the cargo"}:::decision N_ApplyDispositionCodetoCargo_Node1_action["The disposition code is processed
according to customs rules and the
appropriate action is determined for
the cargo"]:::main N_ApplyDispositionCodetoCargo_Node1 -- Yes --> N_ApplyDispositionCodetoCargo_Node1_action N_ApplyDispositionCodetoCargo_Node1_action --> E_ApplyDispositionCodetoCargo N_ApplyDispositionCodetoCargo_Node0 -- No --> N_ApplyDispositionCodetoCargo_Node1 N_ApplyDispositionCodetoCargo_Node1 -- No --> E_ApplyDispositionCodetoCargo
File: GCX016.cbl
GIVEN:
A cargo record is being processed and disposition code is available from X4 segment
WHEN:
The system applies the disposition code to the cargo
THEN:
- Disposition code is validated against disposition code tables
- Applied to cargo status array
File: GCX016.cbl
GIVEN:
A cargo record is being processed and a disposition code is available from the X4 segment
WHEN:
The system applies the disposition code to the cargo
THEN:
- The disposition code is processed according to customs rules
- The appropriate action is determined for the cargo
β Consolidated Acceptance Criteria
- The system calculates release quantities for the cargo → release quantities are computed based on disposition code action (add, subtract, or set) and validated against total cargo quantities
- The system processes quantity changes → release quantities are calculated by adding or subtracting specified amounts while ensuring quantities do not become negative
- Release quantities need to be updated → quantities are added or subtracted from existing release quantity with minimum value of zero
- Release quantities are calculated → the quantity associated with the release code is added to the total release quantity counter
- The system calculates release quantities based on the disposition code action → release quantities are calculated using ADD_QUANTITY or SUBTRACT_QUANTITY logic, ensuring quantities do not go below zero
- The system processes release quantities → release quantities are calculated based on total cargo quantities and existing releases
- The system processes quantity-affecting disposition codes → release quantities are calculated by adding or subtracting quantities based on disposition code action, ensuring quantities do not go below zero
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CalculateReleaseQuantities(["Start Step"])
E_CalculateReleaseQuantities(["End Step"])
N_CalculateReleaseQuantities_Node0{"The system calculates release
quantities for the cargo"}:::decision N_CalculateReleaseQuantities_Node0_action["Release quantities are computed
based on disposition code action
add, subtract, or set and validated
against total cargo quantities"]:::main N_CalculateReleaseQuantities_Node0 -- Yes --> N_CalculateReleaseQuantities_Node0_action N_CalculateReleaseQuantities_Node0_action --> E_CalculateReleaseQuantities S_CalculateReleaseQuantities --> N_CalculateReleaseQuantities_Node0 N_CalculateReleaseQuantities_Node1{"The system processes quantity
changes"}:::decision N_CalculateReleaseQuantities_Node1_action["Release quantities are calculated
by adding or subtracting specified
amounts while ensuring quantities do
not become negative"]:::main N_CalculateReleaseQuantities_Node1 -- Yes --> N_CalculateReleaseQuantities_Node1_action N_CalculateReleaseQuantities_Node1_action --> E_CalculateReleaseQuantities N_CalculateReleaseQuantities_Node0 -- No --> N_CalculateReleaseQuantities_Node1 N_CalculateReleaseQuantities_Node2{"Release quantities need to be
updated"}:::decision N_CalculateReleaseQuantities_Node2_action["Quantities are added or subtracted
from existing release quantity with
minimum value of zero"]:::main N_CalculateReleaseQuantities_Node2 -- Yes --> N_CalculateReleaseQuantities_Node2_action N_CalculateReleaseQuantities_Node2_action --> E_CalculateReleaseQuantities N_CalculateReleaseQuantities_Node1 -- No --> N_CalculateReleaseQuantities_Node2 N_CalculateReleaseQuantities_Node3{"Release quantities are calculated"}:::decision N_CalculateReleaseQuantities_Node3_action["The quantity associated with the
release code is added to the total
release quantity counter"]:::main N_CalculateReleaseQuantities_Node3 -- Yes --> N_CalculateReleaseQuantities_Node3_action N_CalculateReleaseQuantities_Node3_action --> E_CalculateReleaseQuantities N_CalculateReleaseQuantities_Node2 -- No --> N_CalculateReleaseQuantities_Node3 N_CalculateReleaseQuantities_Node4{"The system calculates release
quantities based on the disposition
code action"}:::decision N_CalculateReleaseQuantities_Node4_action["Release quantities are calculated
using ADDQUANTITY or
SUBTRACTQUANTITY logic, ensuring
quantities do not go below zero"]:::main N_CalculateReleaseQuantities_Node4 -- Yes --> N_CalculateReleaseQuantities_Node4_action N_CalculateReleaseQuantities_Node4_action --> E_CalculateReleaseQuantities N_CalculateReleaseQuantities_Node3 -- No --> N_CalculateReleaseQuantities_Node4 N_CalculateReleaseQuantities_Node5{"The system processes release
quantities"}:::decision N_CalculateReleaseQuantities_Node5_action["Release quantities are calculated
based on total cargo quantities and
existing releases"]:::main N_CalculateReleaseQuantities_Node5 -- Yes --> N_CalculateReleaseQuantities_Node5_action N_CalculateReleaseQuantities_Node5_action --> E_CalculateReleaseQuantities N_CalculateReleaseQuantities_Node4 -- No --> N_CalculateReleaseQuantities_Node5 N_CalculateReleaseQuantities_Node6{"The system processes
quantity-affecting disposition codes"}:::decision N_CalculateReleaseQuantities_Node6_action["Release quantities are calculated
by adding or subtracting quantities
based on disposition code action,
ensuring quantities do not go below
zero"]:::main N_CalculateReleaseQuantities_Node6 -- Yes --> N_CalculateReleaseQuantities_Node6_action N_CalculateReleaseQuantities_Node6_action --> E_CalculateReleaseQuantities N_CalculateReleaseQuantities_Node5 -- No --> N_CalculateReleaseQuantities_Node6 N_CalculateReleaseQuantities_Node6 -- No --> E_CalculateReleaseQuantities
quantities for the cargo"}:::decision N_CalculateReleaseQuantities_Node0_action["Release quantities are computed
based on disposition code action
add, subtract, or set and validated
against total cargo quantities"]:::main N_CalculateReleaseQuantities_Node0 -- Yes --> N_CalculateReleaseQuantities_Node0_action N_CalculateReleaseQuantities_Node0_action --> E_CalculateReleaseQuantities S_CalculateReleaseQuantities --> N_CalculateReleaseQuantities_Node0 N_CalculateReleaseQuantities_Node1{"The system processes quantity
changes"}:::decision N_CalculateReleaseQuantities_Node1_action["Release quantities are calculated
by adding or subtracting specified
amounts while ensuring quantities do
not become negative"]:::main N_CalculateReleaseQuantities_Node1 -- Yes --> N_CalculateReleaseQuantities_Node1_action N_CalculateReleaseQuantities_Node1_action --> E_CalculateReleaseQuantities N_CalculateReleaseQuantities_Node0 -- No --> N_CalculateReleaseQuantities_Node1 N_CalculateReleaseQuantities_Node2{"Release quantities need to be
updated"}:::decision N_CalculateReleaseQuantities_Node2_action["Quantities are added or subtracted
from existing release quantity with
minimum value of zero"]:::main N_CalculateReleaseQuantities_Node2 -- Yes --> N_CalculateReleaseQuantities_Node2_action N_CalculateReleaseQuantities_Node2_action --> E_CalculateReleaseQuantities N_CalculateReleaseQuantities_Node1 -- No --> N_CalculateReleaseQuantities_Node2 N_CalculateReleaseQuantities_Node3{"Release quantities are calculated"}:::decision N_CalculateReleaseQuantities_Node3_action["The quantity associated with the
release code is added to the total
release quantity counter"]:::main N_CalculateReleaseQuantities_Node3 -- Yes --> N_CalculateReleaseQuantities_Node3_action N_CalculateReleaseQuantities_Node3_action --> E_CalculateReleaseQuantities N_CalculateReleaseQuantities_Node2 -- No --> N_CalculateReleaseQuantities_Node3 N_CalculateReleaseQuantities_Node4{"The system calculates release
quantities based on the disposition
code action"}:::decision N_CalculateReleaseQuantities_Node4_action["Release quantities are calculated
using ADDQUANTITY or
SUBTRACTQUANTITY logic, ensuring
quantities do not go below zero"]:::main N_CalculateReleaseQuantities_Node4 -- Yes --> N_CalculateReleaseQuantities_Node4_action N_CalculateReleaseQuantities_Node4_action --> E_CalculateReleaseQuantities N_CalculateReleaseQuantities_Node3 -- No --> N_CalculateReleaseQuantities_Node4 N_CalculateReleaseQuantities_Node5{"The system processes release
quantities"}:::decision N_CalculateReleaseQuantities_Node5_action["Release quantities are calculated
based on total cargo quantities and
existing releases"]:::main N_CalculateReleaseQuantities_Node5 -- Yes --> N_CalculateReleaseQuantities_Node5_action N_CalculateReleaseQuantities_Node5_action --> E_CalculateReleaseQuantities N_CalculateReleaseQuantities_Node4 -- No --> N_CalculateReleaseQuantities_Node5 N_CalculateReleaseQuantities_Node6{"The system processes
quantity-affecting disposition codes"}:::decision N_CalculateReleaseQuantities_Node6_action["Release quantities are calculated
by adding or subtracting quantities
based on disposition code action,
ensuring quantities do not go below
zero"]:::main N_CalculateReleaseQuantities_Node6 -- Yes --> N_CalculateReleaseQuantities_Node6_action N_CalculateReleaseQuantities_Node6_action --> E_CalculateReleaseQuantities N_CalculateReleaseQuantities_Node5 -- No --> N_CalculateReleaseQuantities_Node6 N_CalculateReleaseQuantities_Node6 -- No --> E_CalculateReleaseQuantities
File: GCX016.cbl
GIVEN:
Cargo status array has been updated with disposition code
WHEN:
The system calculates release quantities for the cargo
THEN:
Release quantities are computed based on disposition code action (add, subtract, or set) and validated against total cargo quantities
File: GCX016.cbl
GIVEN:
Disposition codes specify quantity actions
WHEN:
The system processes quantity changes
THEN:
Release quantities are calculated by adding or subtracting specified amounts while ensuring quantities do not become negative
File: GCX016.cbl
GIVEN:
A release disposition code contains quantity information
WHEN:
Release quantities need to be updated
THEN:
Quantities are added or subtracted from existing release quantity with minimum value of zero
File: GCX016.cbl
GIVEN:
A disposition code has been identified as a release type
WHEN:
Release quantities are calculated
THEN:
The quantity associated with the release code is added to the total release quantity counter
File: GCX016.cbl
GIVEN:
A release code has been processed and status array is updated
WHEN:
The system calculates release quantities based on the disposition code action
THEN:
Release quantities are calculated using ADD_QUANTITY or SUBTRACT_QUANTITY logic, ensuring quantities do not go below zero
File: GCX016.cbl
GIVEN:
Auto release flag is set and cargo is eligible
WHEN:
The system processes release quantities
THEN:
- Release quantities are calculated based on total cargo quantities
- Existing releases
File: GCX016.cbl
GIVEN:
Disposition codes are applied to cargo records in a car and waybill group
WHEN:
The system processes quantity-affecting disposition codes
THEN:
Release quantities are calculated by adding or subtracting quantities based on disposition code action, ensuring quantities do not go below zero
β Consolidated Acceptance Criteria
- The system updates cargo hold and release status → cargo status is set to appropriate hold or release condition based on quantity comparisons and disposition code effects
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UpdateCargoHoldReleaseStatus(["Start Step"])
E_UpdateCargoHoldReleaseStatus(["End Step"])
N_UpdateCargoHoldReleaseStatus_Node0{"The system updates cargo hold and
release status"}:::decision N_UpdateCargoHoldReleaseStatus_Node0_action["Cargo status is set to appropriate
hold or release condition based on
quantity comparisons and disposition
code effects"]:::main N_UpdateCargoHoldReleaseStatus_Node0 -- Yes --> N_UpdateCargoHoldReleaseStatus_Node0_action N_UpdateCargoHoldReleaseStatus_Node0_action --> E_UpdateCargoHoldReleaseStatus S_UpdateCargoHoldReleaseStatus --> N_UpdateCargoHoldReleaseStatus_Node0 N_UpdateCargoHoldReleaseStatus_Node0 -- No --> E_UpdateCargoHoldReleaseStatus
release status"}:::decision N_UpdateCargoHoldReleaseStatus_Node0_action["Cargo status is set to appropriate
hold or release condition based on
quantity comparisons and disposition
code effects"]:::main N_UpdateCargoHoldReleaseStatus_Node0 -- Yes --> N_UpdateCargoHoldReleaseStatus_Node0_action N_UpdateCargoHoldReleaseStatus_Node0_action --> E_UpdateCargoHoldReleaseStatus S_UpdateCargoHoldReleaseStatus --> N_UpdateCargoHoldReleaseStatus_Node0 N_UpdateCargoHoldReleaseStatus_Node0 -- No --> E_UpdateCargoHoldReleaseStatus
File: GCX016.cbl
GIVEN:
Release quantities have been calculated for cargo
WHEN:
- The system updates cargo hold
- Release status
THEN:
- Cargo status is set to appropriate hold or release condition based on quantity comparisons
- Disposition code effects
β Consolidated Acceptance Criteria
- The system searches for additional cargo records with the same bond number → next cargo record is retrieved if exists, otherwise end of cargo records flag is set
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_FetchNextCargowithSameBond(["Start Step"])
E_FetchNextCargowithSameBond(["End Step"])
N_FetchNextCargowithSameBond_Node0{"The system searches for additional
cargo records with the same bond
number"}:::decision N_FetchNextCargowithSameBond_Node0_action["Next cargo record is retrieved if
exists, otherwise end of cargo
records flag is set"]:::main N_FetchNextCargowithSameBond_Node0 -- Yes --> N_FetchNextCargowithSameBond_Node0_action N_FetchNextCargowithSameBond_Node0_action --> E_FetchNextCargowithSameBond S_FetchNextCargowithSameBond --> N_FetchNextCargowithSameBond_Node0 N_FetchNextCargowithSameBond_Node0 -- No --> E_FetchNextCargowithSameBond
cargo records with the same bond
number"}:::decision N_FetchNextCargowithSameBond_Node0_action["Next cargo record is retrieved if
exists, otherwise end of cargo
records flag is set"]:::main N_FetchNextCargowithSameBond_Node0 -- Yes --> N_FetchNextCargowithSameBond_Node0_action N_FetchNextCargowithSameBond_Node0_action --> E_FetchNextCargowithSameBond S_FetchNextCargowithSameBond --> N_FetchNextCargowithSameBond_Node0 N_FetchNextCargowithSameBond_Node0 -- No --> E_FetchNextCargowithSameBond
File: GCX016.cbl
GIVEN:
Current cargo record has been processed under the bond
WHEN:
The system searches for additional cargo records with the same bond number
THEN:
Next cargo record is retrieved if exists, otherwise end of cargo records flag is set
β Consolidated Acceptance Criteria
- The system updates all processed cargo records → all cargo records under the bond are updated in the database with new status and quantity information
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UpdateAllProcessedCargoRecords(["Start Step"])
E_UpdateAllProcessedCargoRecords(["End Step"])
N_UpdateAllProcessedCargoRecords_Node0{"The system updates all processed
cargo records"}:::decision N_UpdateAllProcessedCargoRecords_Node0_action["All cargo records under the bond
are updated in the database with new
status and quantity information"]:::main N_UpdateAllProcessedCargoRecords_Node0 -- Yes --> N_UpdateAllProcessedCargoRecords_Node0_action N_UpdateAllProcessedCargoRecords_Node0_action --> E_UpdateAllProcessedCargoRecords S_UpdateAllProcessedCargoRecords --> N_UpdateAllProcessedCargoRecords_Node0 N_UpdateAllProcessedCargoRecords_Node0 -- No --> E_UpdateAllProcessedCargoRecords
cargo records"}:::decision N_UpdateAllProcessedCargoRecords_Node0_action["All cargo records under the bond
are updated in the database with new
status and quantity information"]:::main N_UpdateAllProcessedCargoRecords_Node0 -- Yes --> N_UpdateAllProcessedCargoRecords_Node0_action N_UpdateAllProcessedCargoRecords_Node0_action --> E_UpdateAllProcessedCargoRecords S_UpdateAllProcessedCargoRecords --> N_UpdateAllProcessedCargoRecords_Node0 N_UpdateAllProcessedCargoRecords_Node0 -- No --> E_UpdateAllProcessedCargoRecords
File: GCX016.cbl
GIVEN:
Bond processing summary has been generated
WHEN:
The system updates all processed cargo records
THEN:
- All cargo records under the bond are updated in the database with new status
- Quantity information
β Consolidated Acceptance Criteria
- The system sends broker notifications → notifications are sent to relevant brokers for all cargo status changes under the bond number
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SendBrokerNotificationsforBond(["Start Step"])
E_SendBrokerNotificationsforBond(["End Step"])
N_SendBrokerNotificationsforBond_Node0{"The system sends broker
notifications"}:::decision N_SendBrokerNotificationsforBond_Node0_action["Notifications are sent to relevant
brokers for all cargo status changes
under the bond number"]:::main N_SendBrokerNotificationsforBond_Node0 -- Yes --> N_SendBrokerNotificationsforBond_Node0_action N_SendBrokerNotificationsforBond_Node0_action --> E_SendBrokerNotificationsforBond S_SendBrokerNotificationsforBond --> N_SendBrokerNotificationsforBond_Node0 N_SendBrokerNotificationsforBond_Node0 -- No --> E_SendBrokerNotificationsforBond
notifications"}:::decision N_SendBrokerNotificationsforBond_Node0_action["Notifications are sent to relevant
brokers for all cargo status changes
under the bond number"]:::main N_SendBrokerNotificationsforBond_Node0 -- Yes --> N_SendBrokerNotificationsforBond_Node0_action N_SendBrokerNotificationsforBond_Node0_action --> E_SendBrokerNotificationsforBond S_SendBrokerNotificationsforBond --> N_SendBrokerNotificationsforBond_Node0 N_SendBrokerNotificationsforBond_Node0 -- No --> E_SendBrokerNotificationsforBond
File: GCX016.cbl
GIVEN:
All cargo records for the bond have been updated
WHEN:
The system sends broker notifications
THEN:
Notifications are sent to relevant brokers for all cargo status changes under the bond number
β Consolidated Acceptance Criteria
- The system generates bond error message → error message is created indicating bond processing cannot proceed and includes relevant error details
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GenerateBondErrorMessage(["Start Step"])
E_GenerateBondErrorMessage(["End Step"])
N_GenerateBondErrorMessage_Node0{"The system generates bond error
message"}:::decision N_GenerateBondErrorMessage_Node0_action["Error message is created indicating
bond processing cannot proceed and
includes relevant error details"]:::exclusion N_GenerateBondErrorMessage_Node0 -- Yes -->|Alternative| N_GenerateBondErrorMessage_Node0_action N_GenerateBondErrorMessage_Node0_action --> E_GenerateBondErrorMessage S_GenerateBondErrorMessage --> N_GenerateBondErrorMessage_Node0 N_GenerateBondErrorMessage_Node0 -- No --> E_GenerateBondErrorMessage
message"}:::decision N_GenerateBondErrorMessage_Node0_action["Error message is created indicating
bond processing cannot proceed and
includes relevant error details"]:::exclusion N_GenerateBondErrorMessage_Node0 -- Yes -->|Alternative| N_GenerateBondErrorMessage_Node0_action N_GenerateBondErrorMessage_Node0_action --> E_GenerateBondErrorMessage S_GenerateBondErrorMessage --> N_GenerateBondErrorMessage_Node0 N_GenerateBondErrorMessage_Node0 -- No --> E_GenerateBondErrorMessage
File: GCX016.cbl
GIVEN:
Bond number is missing, invalid format, or validation fails
WHEN:
The system generates bond error message
THEN:
- Error message is created indicating bond processing cannot proceed
- Includes relevant error details
β Consolidated Acceptance Criteria
- The system logs bond processing error → error details are logged including bond number, error type, and processing context for system monitoring
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogBondProcessingError(["Start Step"])
E_LogBondProcessingError(["End Step"])
N_LogBondProcessingError_Node0{"The system logs bond processing
error"}:::decision N_LogBondProcessingError_Node0_action["Error details are logged including
bond number, error type, and
processing context for system
monitoring"]:::exclusion N_LogBondProcessingError_Node0 -- Yes -->|Alternative| N_LogBondProcessingError_Node0_action N_LogBondProcessingError_Node0_action --> E_LogBondProcessingError S_LogBondProcessingError --> N_LogBondProcessingError_Node0 N_LogBondProcessingError_Node0 -- No --> E_LogBondProcessingError
error"}:::decision N_LogBondProcessingError_Node0_action["Error details are logged including
bond number, error type, and
processing context for system
monitoring"]:::exclusion N_LogBondProcessingError_Node0 -- Yes -->|Alternative| N_LogBondProcessingError_Node0_action N_LogBondProcessingError_Node0_action --> E_LogBondProcessingError S_LogBondProcessingError --> N_LogBondProcessingError_Node0 N_LogBondProcessingError_Node0 -- No --> E_LogBondProcessingError
File: GCX016.cbl
GIVEN:
Bond error message has been generated
WHEN:
The system logs bond processing error
THEN:
Error details are logged including bond number, error type, and processing context for system monitoring
β Consolidated Acceptance Criteria
- The system prepares to search for cargo records → the search key is populated with the car ID and waybill number to enable precise cargo matching
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetCarIDandWaybillinSearchKey(["Start Step"])
E_SetCarIDandWaybillinSearchKey(["End Step"])
N_SetCarIDandWaybillinSearchKey_Node0{"The system prepares to search for
cargo records"}:::decision N_SetCarIDandWaybillinSearchKey_Node0_action["The search key is populated with
the car ID and waybill number to
enable precise cargo matching"]:::main N_SetCarIDandWaybillinSearchKey_Node0 -- Yes --> N_SetCarIDandWaybillinSearchKey_Node0_action N_SetCarIDandWaybillinSearchKey_Node0_action --> E_SetCarIDandWaybillinSearchKey S_SetCarIDandWaybillinSearchKey --> N_SetCarIDandWaybillinSearchKey_Node0 N_SetCarIDandWaybillinSearchKey_Node0 -- No --> E_SetCarIDandWaybillinSearchKey
cargo records"}:::decision N_SetCarIDandWaybillinSearchKey_Node0_action["The search key is populated with
the car ID and waybill number to
enable precise cargo matching"]:::main N_SetCarIDandWaybillinSearchKey_Node0 -- Yes --> N_SetCarIDandWaybillinSearchKey_Node0_action N_SetCarIDandWaybillinSearchKey_Node0_action --> E_SetCarIDandWaybillinSearchKey S_SetCarIDandWaybillinSearchKey --> N_SetCarIDandWaybillinSearchKey_Node0 N_SetCarIDandWaybillinSearchKey_Node0 -- No --> E_SetCarIDandWaybillinSearchKey
File: GCX016.cbl
GIVEN:
A formatted car ID and waybill number are available
WHEN:
The system prepares to search for cargo records
THEN:
- The search key is populated with the car id
- Waybill number to enable precise cargo matching
β Consolidated Acceptance Criteria
- The system executes cargo search operation → the cargo database is queried using the car/waybill index to locate matching records
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CallGCCUSIOwithCarWaybillIndex(["Start Step"])
E_CallGCCUSIOwithCarWaybillIndex(["End Step"])
N_CallGCCUSIOwithCarWaybillIndex_Node0{"The system executes cargo search
operation"}:::decision N_CallGCCUSIOwithCarWaybillIndex_Node0_action["The cargo database is queried using
the carwaybill index to locate
matching records"]:::main N_CallGCCUSIOwithCarWaybillIndex_Node0 -- Yes --> N_CallGCCUSIOwithCarWaybillIndex_Node0_action N_CallGCCUSIOwithCarWaybillIndex_Node0_action --> E_CallGCCUSIOwithCarWaybillIndex S_CallGCCUSIOwithCarWaybillIndex --> N_CallGCCUSIOwithCarWaybillIndex_Node0 N_CallGCCUSIOwithCarWaybillIndex_Node0 -- No --> E_CallGCCUSIOwithCarWaybillIndex
operation"}:::decision N_CallGCCUSIOwithCarWaybillIndex_Node0_action["The cargo database is queried using
the carwaybill index to locate
matching records"]:::main N_CallGCCUSIOwithCarWaybillIndex_Node0 -- Yes --> N_CallGCCUSIOwithCarWaybillIndex_Node0_action N_CallGCCUSIOwithCarWaybillIndex_Node0_action --> E_CallGCCUSIOwithCarWaybillIndex S_CallGCCUSIOwithCarWaybillIndex --> N_CallGCCUSIOwithCarWaybillIndex_Node0 N_CallGCCUSIOwithCarWaybillIndex_Node0 -- No --> E_CallGCCUSIOwithCarWaybillIndex
File: GCX016.cbl
GIVEN:
A search key with car ID and waybill is constructed
WHEN:
The system executes cargo search operation
THEN:
The cargo database is queried using the car/waybill index to locate matching records
β Consolidated Acceptance Criteria
- If processing eligibility → the system determines if cargo can proceed with disposition code processing or requires error handling
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ValidCargo(["Start Step"])
E_ValidCargo(["End Step"])
N_ValidCargo_Node0{"The system evaluates processing
eligibility"}:::decision N_ValidCargo_Node0_action["The system determines if cargo can
proceed with disposition code
processing or requires error
handling"]:::main N_ValidCargo_Node0 -- Yes --> N_ValidCargo_Node0_action N_ValidCargo_Node0_action --> E_ValidCargo S_ValidCargo --> N_ValidCargo_Node0 N_ValidCargo_Node0 -- No --> E_ValidCargo
eligibility"}:::decision N_ValidCargo_Node0_action["The system determines if cargo can
proceed with disposition code
processing or requires error
handling"]:::main N_ValidCargo_Node0 -- Yes --> N_ValidCargo_Node0_action N_ValidCargo_Node0_action --> E_ValidCargo S_ValidCargo --> N_ValidCargo_Node0 N_ValidCargo_Node0 -- No --> E_ValidCargo
File: GCX016.cbl
GIVEN:
Cargo status has been validated
WHEN:
The system evaluates processing eligibility
THEN:
The system determines if cargo can proceed with disposition code processing or requires error handling
β Consolidated Acceptance Criteria
- If waybill scope → the system determines if multiple cars are associated with the same waybill and require coordinated release processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MultipleCarswithSameWaybill(["Start Step"])
E_MultipleCarswithSameWaybill(["End Step"])
N_MultipleCarswithSameWaybill_Node0{"The system evaluates waybill scope"}:::decision
N_MultipleCarswithSameWaybill_Node0_action["The system determines if multiple
cars are associated with the same
waybill and require coordinated
release processing"]:::main N_MultipleCarswithSameWaybill_Node0 -- Yes --> N_MultipleCarswithSameWaybill_Node0_action N_MultipleCarswithSameWaybill_Node0_action --> E_MultipleCarswithSameWaybill S_MultipleCarswithSameWaybill --> N_MultipleCarswithSameWaybill_Node0 N_MultipleCarswithSameWaybill_Node0 -- No --> E_MultipleCarswithSameWaybill
cars are associated with the same
waybill and require coordinated
release processing"]:::main N_MultipleCarswithSameWaybill_Node0 -- Yes --> N_MultipleCarswithSameWaybill_Node0_action N_MultipleCarswithSameWaybill_Node0_action --> E_MultipleCarswithSameWaybill S_MultipleCarswithSameWaybill --> N_MultipleCarswithSameWaybill_Node0 N_MultipleCarswithSameWaybill_Node0 -- No --> E_MultipleCarswithSameWaybill
File: GCX016.cbl
GIVEN:
Cargo processing is underway for a specific waybill
WHEN:
The system evaluates waybill scope
THEN:
- The system determines if multiple cars are associated with the same waybill
- Require coordinated release processing
β Consolidated Acceptance Criteria
- The system processes waybill-level operations → all cars associated with the waybill are processed to ensure consistent cargo status and release coordination
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ProcessAllRelatedCars(["Start Step"])
E_ProcessAllRelatedCars(["End Step"])
N_ProcessAllRelatedCars_Node0{"The system processes waybill-level
operations"}:::decision N_ProcessAllRelatedCars_Node0_action["All cars associated with the
waybill are processed to ensure
consistent cargo status and release
coordination"]:::main N_ProcessAllRelatedCars_Node0 -- Yes --> N_ProcessAllRelatedCars_Node0_action N_ProcessAllRelatedCars_Node0_action --> E_ProcessAllRelatedCars S_ProcessAllRelatedCars --> N_ProcessAllRelatedCars_Node0 N_ProcessAllRelatedCars_Node0 -- No --> E_ProcessAllRelatedCars
operations"}:::decision N_ProcessAllRelatedCars_Node0_action["All cars associated with the
waybill are processed to ensure
consistent cargo status and release
coordination"]:::main N_ProcessAllRelatedCars_Node0 -- Yes --> N_ProcessAllRelatedCars_Node0_action N_ProcessAllRelatedCars_Node0_action --> E_ProcessAllRelatedCars S_ProcessAllRelatedCars --> N_ProcessAllRelatedCars_Node0 N_ProcessAllRelatedCars_Node0 -- No --> E_ProcessAllRelatedCars
File: GCX016.cbl
GIVEN:
Multiple cars share the same waybill number
WHEN:
The system processes waybill-level operations
THEN:
- All cars associated with the waybill are processed to ensure consistent cargo status
- Release coordination
β Consolidated Acceptance Criteria
- If release eligibility → the system verifies that cargo meets all customs requirements, quantity thresholds, and status conditions for release
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_VerifyReleaseEligibility(["Start Step"])
E_VerifyReleaseEligibility(["End Step"])
N_VerifyReleaseEligibility_Node0{"The system evaluates release
eligibility"}:::decision N_VerifyReleaseEligibility_Node0_action["The system verifies that cargo
meets all customs requirements,
quantity thresholds, and status
conditions for release"]:::main N_VerifyReleaseEligibility_Node0 -- Yes --> N_VerifyReleaseEligibility_Node0_action N_VerifyReleaseEligibility_Node0_action --> E_VerifyReleaseEligibility S_VerifyReleaseEligibility --> N_VerifyReleaseEligibility_Node0 N_VerifyReleaseEligibility_Node0 -- No --> E_VerifyReleaseEligibility
eligibility"}:::decision N_VerifyReleaseEligibility_Node0_action["The system verifies that cargo
meets all customs requirements,
quantity thresholds, and status
conditions for release"]:::main N_VerifyReleaseEligibility_Node0 -- Yes --> N_VerifyReleaseEligibility_Node0_action N_VerifyReleaseEligibility_Node0_action --> E_VerifyReleaseEligibility S_VerifyReleaseEligibility --> N_VerifyReleaseEligibility_Node0 N_VerifyReleaseEligibility_Node0 -- No --> E_VerifyReleaseEligibility
File: GCX016.cbl
GIVEN:
Cargo status and quantities have been updated
WHEN:
The system evaluates release eligibility
THEN:
The system verifies that cargo meets all customs requirements, quantity thresholds, and status conditions for release
β Consolidated Acceptance Criteria
- The system processes release notifications → release messages are generated with cargo details, quantities, and routing information for broker and system notifications
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GenerateReleaseMessages(["Start Step"])
E_GenerateReleaseMessages(["End Step"])
N_GenerateReleaseMessages_Node0{"The system processes release
notifications"}:::decision N_GenerateReleaseMessages_Node0_action["Release messages are generated with
cargo details, quantities, and
routing information for broker and
system notifications"]:::main N_GenerateReleaseMessages_Node0 -- Yes --> N_GenerateReleaseMessages_Node0_action N_GenerateReleaseMessages_Node0_action --> E_GenerateReleaseMessages S_GenerateReleaseMessages --> N_GenerateReleaseMessages_Node0 N_GenerateReleaseMessages_Node0 -- No --> E_GenerateReleaseMessages
notifications"}:::decision N_GenerateReleaseMessages_Node0_action["Release messages are generated with
cargo details, quantities, and
routing information for broker and
system notifications"]:::main N_GenerateReleaseMessages_Node0 -- Yes --> N_GenerateReleaseMessages_Node0_action N_GenerateReleaseMessages_Node0_action --> E_GenerateReleaseMessages S_GenerateReleaseMessages --> N_GenerateReleaseMessages_Node0 N_GenerateReleaseMessages_Node0 -- No --> E_GenerateReleaseMessages
File: GCX016.cbl
GIVEN:
Cargo is eligible for release
WHEN:
The system processes release notifications
THEN:
- Release messages are generated with cargo details, quantities, and routing information for broker
- System notifications
β Consolidated Acceptance Criteria
- The system finalizes cargo updates → cargo records are updated in the database with new status, quantities, and processing timestamps
- The system updates cargo records → the system updates cargo status to reflect special processing AND maintains audit trail of changes AND ensures data consistency across related cargo records
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UpdateCargoRecords(["Start Step"])
E_UpdateCargoRecords(["End Step"])
N_UpdateCargoRecords_Node0{"The system finalizes cargo updates"}:::decision
N_UpdateCargoRecords_Node0_action["Cargo records are updated in the
database with new status,
quantities, and processing
timestamps"]:::main N_UpdateCargoRecords_Node0 -- Yes --> N_UpdateCargoRecords_Node0_action N_UpdateCargoRecords_Node0_action --> E_UpdateCargoRecords S_UpdateCargoRecords --> N_UpdateCargoRecords_Node0 N_UpdateCargoRecords_Node1{"The system updates cargo records"}:::decision N_UpdateCargoRecords_Node1_action["The system updates cargo status to
reflect special processing AND
maintains audit trail of changes AND
ensures data consistency across
related cargo records"]:::main N_UpdateCargoRecords_Node1 -- Yes --> N_UpdateCargoRecords_Node1_action N_UpdateCargoRecords_Node1_action --> E_UpdateCargoRecords N_UpdateCargoRecords_Node0 -- No --> N_UpdateCargoRecords_Node1 N_UpdateCargoRecords_Node1 -- No --> E_UpdateCargoRecords
database with new status,
quantities, and processing
timestamps"]:::main N_UpdateCargoRecords_Node0 -- Yes --> N_UpdateCargoRecords_Node0_action N_UpdateCargoRecords_Node0_action --> E_UpdateCargoRecords S_UpdateCargoRecords --> N_UpdateCargoRecords_Node0 N_UpdateCargoRecords_Node1{"The system updates cargo records"}:::decision N_UpdateCargoRecords_Node1_action["The system updates cargo status to
reflect special processing AND
maintains audit trail of changes AND
ensures data consistency across
related cargo records"]:::main N_UpdateCargoRecords_Node1 -- Yes --> N_UpdateCargoRecords_Node1_action N_UpdateCargoRecords_Node1_action --> E_UpdateCargoRecords N_UpdateCargoRecords_Node0 -- No --> N_UpdateCargoRecords_Node1 N_UpdateCargoRecords_Node1 -- No --> E_UpdateCargoRecords
File: GCX016.cbl
GIVEN:
Cargo processing is complete with new status and quantity information
WHEN:
The system finalizes cargo updates
THEN:
Cargo records are updated in the database with new status, quantities, and processing timestamps
File: GCX016.cbl
GIVEN:
Special or detour processing has been completed
WHEN:
The system updates cargo records
THEN:
- The system updates cargo status to reflect special processing
- Maintains audit trail of changes
- Ensures data consistency across related cargo records
β Consolidated Acceptance Criteria
- The system handles cargo not found condition → an error is logged with disposition code and search criteria details for tracking and resolution
- The system cannot locate cargo records to update → cargo not found error is logged with the equipment car ID details
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogCargoNotFoundError(["Start Step"])
E_LogCargoNotFoundError(["End Step"])
N_LogCargoNotFoundError_Node0{"The system handles cargo not found
condition"}:::decision N_LogCargoNotFoundError_Node0_action["An error is logged with disposition
code and search criteria details for
tracking and resolution"]:::main N_LogCargoNotFoundError_Node0 -- Yes --> N_LogCargoNotFoundError_Node0_action N_LogCargoNotFoundError_Node0_action --> E_LogCargoNotFoundError S_LogCargoNotFoundError --> N_LogCargoNotFoundError_Node0 N_LogCargoNotFoundError_Node1{"The system cannot locate cargo
records to update"}:::decision N_LogCargoNotFoundError_Node1_action["Cargo not found error is logged
with the equipment car ID details"]:::main N_LogCargoNotFoundError_Node1 -- Yes --> N_LogCargoNotFoundError_Node1_action N_LogCargoNotFoundError_Node1_action --> E_LogCargoNotFoundError N_LogCargoNotFoundError_Node0 -- No --> N_LogCargoNotFoundError_Node1 N_LogCargoNotFoundError_Node1 -- No --> E_LogCargoNotFoundError
condition"}:::decision N_LogCargoNotFoundError_Node0_action["An error is logged with disposition
code and search criteria details for
tracking and resolution"]:::main N_LogCargoNotFoundError_Node0 -- Yes --> N_LogCargoNotFoundError_Node0_action N_LogCargoNotFoundError_Node0_action --> E_LogCargoNotFoundError S_LogCargoNotFoundError --> N_LogCargoNotFoundError_Node0 N_LogCargoNotFoundError_Node1{"The system cannot locate cargo
records to update"}:::decision N_LogCargoNotFoundError_Node1_action["Cargo not found error is logged
with the equipment car ID details"]:::main N_LogCargoNotFoundError_Node1 -- Yes --> N_LogCargoNotFoundError_Node1_action N_LogCargoNotFoundError_Node1_action --> E_LogCargoNotFoundError N_LogCargoNotFoundError_Node0 -- No --> N_LogCargoNotFoundError_Node1 N_LogCargoNotFoundError_Node1 -- No --> E_LogCargoNotFoundError
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
No cargo records exist for the car and waybill combination
WHEN:
The system handles cargo not found condition
THEN:
- An error is logged with disposition code
- Search criteria details for tracking
- Resolution
File: GCX016.cbl
GIVEN:
No cargo records were found for the equipment car ID
WHEN:
The system cannot locate cargo records to update
THEN:
Cargo not found error is logged with the equipment car ID details
β Consolidated Acceptance Criteria
- The system needs to validate the disposition code → the system calls B561-GET-DC-TABLE-INFO to retrieve disposition code details from GCSTBRT IMS segment
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CallB561GETDCTABLEINFO(["Start Step"])
E_CallB561GETDCTABLEINFO(["End Step"])
N_CallB561GETDCTABLEINFO_Node0{"The system needs to validate the
disposition code"}:::decision N_CallB561GETDCTABLEINFO_Node0_action["The system calls
B561-GET-DC-TABLE-INFO to retrieve
disposition code details from
GCSTBRT IMS segment"]:::main N_CallB561GETDCTABLEINFO_Node0 -- Yes --> N_CallB561GETDCTABLEINFO_Node0_action N_CallB561GETDCTABLEINFO_Node0_action --> E_CallB561GETDCTABLEINFO S_CallB561GETDCTABLEINFO --> N_CallB561GETDCTABLEINFO_Node0 N_CallB561GETDCTABLEINFO_Node0 -- No --> E_CallB561GETDCTABLEINFO
disposition code"}:::decision N_CallB561GETDCTABLEINFO_Node0_action["The system calls
B561-GET-DC-TABLE-INFO to retrieve
disposition code details from
GCSTBRT IMS segment"]:::main N_CallB561GETDCTABLEINFO_Node0 -- Yes --> N_CallB561GETDCTABLEINFO_Node0_action N_CallB561GETDCTABLEINFO_Node0_action --> E_CallB561GETDCTABLEINFO S_CallB561GETDCTABLEINFO --> N_CallB561GETDCTABLEINFO_Node0 N_CallB561GETDCTABLEINFO_Node0 -- No --> E_CallB561GETDCTABLEINFO
File: GCX016.cbl
GIVEN:
A disposition code is received from X4 segment
WHEN:
The system needs to validate the disposition code
THEN:
The system calls B561-GET-DC-TABLE-INFO to retrieve disposition code details from GCSTBRT IMS segment
β Consolidated Acceptance Criteria
- The system processes the valid disposition code → the system extracts code description, counterpart code information, quantity action flag, processing instructions, and sets valid disposition code flag
- The system processes the disposition code record → all disposition code details including description, counterpart code, quantity action flag, and processing instructions are retrieved and stored
- The system needs disposition code details for message formatting → the system retrieves disposition code information including action type and description from the DC table
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RetrieveDispositionCodeDetails(["Start Step"])
E_RetrieveDispositionCodeDetails(["End Step"])
N_RetrieveDispositionCodeDetails_Node0{"The system processes the valid
disposition code"}:::decision N_RetrieveDispositionCodeDetails_Node0_action["The system extracts code
description, counterpart code
information, quantity action flag,
processing instructions, and sets
valid disposition code flag"]:::main N_RetrieveDispositionCodeDetails_Node0 -- Yes --> N_RetrieveDispositionCodeDetails_Node0_action N_RetrieveDispositionCodeDetails_Node0_action --> E_RetrieveDispositionCodeDetails S_RetrieveDispositionCodeDetails --> N_RetrieveDispositionCodeDetails_Node0 N_RetrieveDispositionCodeDetails_Node1{"The system processes the
disposition code record"}:::decision N_RetrieveDispositionCodeDetails_Node1_action["All disposition code details
including description, counterpart
code, quantity action flag, and
processing instructions are
retrieved and stored"]:::main N_RetrieveDispositionCodeDetails_Node1 -- Yes --> N_RetrieveDispositionCodeDetails_Node1_action N_RetrieveDispositionCodeDetails_Node1_action --> E_RetrieveDispositionCodeDetails N_RetrieveDispositionCodeDetails_Node0 -- No --> N_RetrieveDispositionCodeDetails_Node1 N_RetrieveDispositionCodeDetails_Node2{"The system needs disposition code
details for message formatting"}:::decision N_RetrieveDispositionCodeDetails_Node2_action["The system retrieves disposition
code information including action
type and description from the DC
table"]:::main N_RetrieveDispositionCodeDetails_Node2 -- Yes --> N_RetrieveDispositionCodeDetails_Node2_action N_RetrieveDispositionCodeDetails_Node2_action --> E_RetrieveDispositionCodeDetails N_RetrieveDispositionCodeDetails_Node1 -- No --> N_RetrieveDispositionCodeDetails_Node2 N_RetrieveDispositionCodeDetails_Node2 -- No --> E_RetrieveDispositionCodeDetails
disposition code"}:::decision N_RetrieveDispositionCodeDetails_Node0_action["The system extracts code
description, counterpart code
information, quantity action flag,
processing instructions, and sets
valid disposition code flag"]:::main N_RetrieveDispositionCodeDetails_Node0 -- Yes --> N_RetrieveDispositionCodeDetails_Node0_action N_RetrieveDispositionCodeDetails_Node0_action --> E_RetrieveDispositionCodeDetails S_RetrieveDispositionCodeDetails --> N_RetrieveDispositionCodeDetails_Node0 N_RetrieveDispositionCodeDetails_Node1{"The system processes the
disposition code record"}:::decision N_RetrieveDispositionCodeDetails_Node1_action["All disposition code details
including description, counterpart
code, quantity action flag, and
processing instructions are
retrieved and stored"]:::main N_RetrieveDispositionCodeDetails_Node1 -- Yes --> N_RetrieveDispositionCodeDetails_Node1_action N_RetrieveDispositionCodeDetails_Node1_action --> E_RetrieveDispositionCodeDetails N_RetrieveDispositionCodeDetails_Node0 -- No --> N_RetrieveDispositionCodeDetails_Node1 N_RetrieveDispositionCodeDetails_Node2{"The system needs disposition code
details for message formatting"}:::decision N_RetrieveDispositionCodeDetails_Node2_action["The system retrieves disposition
code information including action
type and description from the DC
table"]:::main N_RetrieveDispositionCodeDetails_Node2 -- Yes --> N_RetrieveDispositionCodeDetails_Node2_action N_RetrieveDispositionCodeDetails_Node2_action --> E_RetrieveDispositionCodeDetails N_RetrieveDispositionCodeDetails_Node1 -- No --> N_RetrieveDispositionCodeDetails_Node2 N_RetrieveDispositionCodeDetails_Node2 -- No --> E_RetrieveDispositionCodeDetails
File: GCX016.cbl
GIVEN:
A disposition code has been found in the DC table
WHEN:
The system processes the valid disposition code
THEN:
The system extracts code description, counterpart code information, quantity action flag, processing instructions, and sets valid disposition code flag
File: GCX016.cbl
GIVEN:
A valid disposition code has been found in the DC table
WHEN:
The system processes the disposition code record
THEN:
- All disposition code details including description, counterpart code, quantity action flag, and processing instructions are retrieved
- Stored
File: GCX016.cbl
GIVEN:
A disposition code requires quantity action processing
WHEN:
The system needs disposition code details for message formatting
THEN:
- The system retrieves disposition code information including action type
- Description from the dc table
β Consolidated Acceptance Criteria
- The system determines the disposition code is invalid → the system sets invalid disposition code flag, generates error message, logs disposition code error, and continues processing with error status
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetInvalidDispositionCodeFlag(["Start Step"])
E_SetInvalidDispositionCodeFlag(["End Step"])
N_SetInvalidDispositionCodeFlag_Node0{"The system determines the
disposition code is invalid"}:::decision N_SetInvalidDispositionCodeFlag_Node0_action["The system sets invalid disposition
code flag, generates error message,
logs disposition code error, and
continues processing with error
status"]:::exclusion N_SetInvalidDispositionCodeFlag_Node0 -- Yes -->|Alternative| N_SetInvalidDispositionCodeFlag_Node0_action N_SetInvalidDispositionCodeFlag_Node0_action --> E_SetInvalidDispositionCodeFlag S_SetInvalidDispositionCodeFlag --> N_SetInvalidDispositionCodeFlag_Node0 N_SetInvalidDispositionCodeFlag_Node0 -- No --> E_SetInvalidDispositionCodeFlag
disposition code is invalid"}:::decision N_SetInvalidDispositionCodeFlag_Node0_action["The system sets invalid disposition
code flag, generates error message,
logs disposition code error, and
continues processing with error
status"]:::exclusion N_SetInvalidDispositionCodeFlag_Node0 -- Yes -->|Alternative| N_SetInvalidDispositionCodeFlag_Node0_action N_SetInvalidDispositionCodeFlag_Node0_action --> E_SetInvalidDispositionCodeFlag S_SetInvalidDispositionCodeFlag --> N_SetInvalidDispositionCodeFlag_Node0 N_SetInvalidDispositionCodeFlag_Node0 -- No --> E_SetInvalidDispositionCodeFlag
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
A disposition code lookup has failed to find the code in the DC table
WHEN:
The system determines the disposition code is invalid
THEN:
The system sets invalid disposition code flag, generates error message, logs disposition code error, and continues processing with error status
β Consolidated Acceptance Criteria
- The system processes the disposition code details → the system extracts code description, counterpart code information, quantity action flag, and processing instructions for subsequent cargo processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExtractCodeDescription(["Start Step"])
E_ExtractCodeDescription(["End Step"])
N_ExtractCodeDescription_Node0{"The system processes the
disposition code details"}:::decision N_ExtractCodeDescription_Node0_action["The system extracts code
description, counterpart code
information, quantity action flag,
and processing instructions for
subsequent cargo processing"]:::main N_ExtractCodeDescription_Node0 -- Yes --> N_ExtractCodeDescription_Node0_action N_ExtractCodeDescription_Node0_action --> E_ExtractCodeDescription S_ExtractCodeDescription --> N_ExtractCodeDescription_Node0 N_ExtractCodeDescription_Node0 -- No --> E_ExtractCodeDescription
disposition code details"}:::decision N_ExtractCodeDescription_Node0_action["The system extracts code
description, counterpart code
information, quantity action flag,
and processing instructions for
subsequent cargo processing"]:::main N_ExtractCodeDescription_Node0 -- Yes --> N_ExtractCodeDescription_Node0_action N_ExtractCodeDescription_Node0_action --> E_ExtractCodeDescription S_ExtractCodeDescription --> N_ExtractCodeDescription_Node0 N_ExtractCodeDescription_Node0 -- No --> E_ExtractCodeDescription
File: GCX016.cbl
GIVEN:
A valid disposition code record has been retrieved from the DC table
WHEN:
The system processes the disposition code details
THEN:
The system extracts code description, counterpart code information, quantity action flag, and processing instructions for subsequent cargo processing
β Consolidated Acceptance Criteria
- The system performs a table lookup using GCCTBIO to access the DC table → the system retrieves the disposition code record from GCSTBRT DC table segments
- The system needs to lookup disposition code details → the GCCTBIO table access routine is called to retrieve information from the DC table
- The system calls GCCTBIO to access the DC table → the DC table is accessed and made available for disposition code lookup
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CallGCCTBIOtoAccessDCTable(["Start Step"])
E_CallGCCTBIOtoAccessDCTable(["End Step"])
N_CallGCCTBIOtoAccessDCTable_Node0{"The system performs a table lookup
using GCCTBIO to access the DC table"}:::decision N_CallGCCTBIOtoAccessDCTable_Node0_action["The system retrieves the
disposition code record from GCSTBRT
DC table segments"]:::main N_CallGCCTBIOtoAccessDCTable_Node0 -- Yes --> N_CallGCCTBIOtoAccessDCTable_Node0_action N_CallGCCTBIOtoAccessDCTable_Node0_action --> E_CallGCCTBIOtoAccessDCTable S_CallGCCTBIOtoAccessDCTable --> N_CallGCCTBIOtoAccessDCTable_Node0 N_CallGCCTBIOtoAccessDCTable_Node1{"The system needs to lookup
disposition code details"}:::decision N_CallGCCTBIOtoAccessDCTable_Node1_action["The GCCTBIO table access routine is
called to retrieve information from
the DC table"]:::main N_CallGCCTBIOtoAccessDCTable_Node1 -- Yes --> N_CallGCCTBIOtoAccessDCTable_Node1_action N_CallGCCTBIOtoAccessDCTable_Node1_action --> E_CallGCCTBIOtoAccessDCTable N_CallGCCTBIOtoAccessDCTable_Node0 -- No --> N_CallGCCTBIOtoAccessDCTable_Node1 N_CallGCCTBIOtoAccessDCTable_Node2{"The system calls GCCTBIO to access
the DC table"}:::decision N_CallGCCTBIOtoAccessDCTable_Node2_action["The DC table is accessed and made
available for disposition code
lookup"]:::main N_CallGCCTBIOtoAccessDCTable_Node2 -- Yes --> N_CallGCCTBIOtoAccessDCTable_Node2_action N_CallGCCTBIOtoAccessDCTable_Node2_action --> E_CallGCCTBIOtoAccessDCTable N_CallGCCTBIOtoAccessDCTable_Node1 -- No --> N_CallGCCTBIOtoAccessDCTable_Node2 N_CallGCCTBIOtoAccessDCTable_Node2 -- No --> E_CallGCCTBIOtoAccessDCTable
using GCCTBIO to access the DC table"}:::decision N_CallGCCTBIOtoAccessDCTable_Node0_action["The system retrieves the
disposition code record from GCSTBRT
DC table segments"]:::main N_CallGCCTBIOtoAccessDCTable_Node0 -- Yes --> N_CallGCCTBIOtoAccessDCTable_Node0_action N_CallGCCTBIOtoAccessDCTable_Node0_action --> E_CallGCCTBIOtoAccessDCTable S_CallGCCTBIOtoAccessDCTable --> N_CallGCCTBIOtoAccessDCTable_Node0 N_CallGCCTBIOtoAccessDCTable_Node1{"The system needs to lookup
disposition code details"}:::decision N_CallGCCTBIOtoAccessDCTable_Node1_action["The GCCTBIO table access routine is
called to retrieve information from
the DC table"]:::main N_CallGCCTBIOtoAccessDCTable_Node1 -- Yes --> N_CallGCCTBIOtoAccessDCTable_Node1_action N_CallGCCTBIOtoAccessDCTable_Node1_action --> E_CallGCCTBIOtoAccessDCTable N_CallGCCTBIOtoAccessDCTable_Node0 -- No --> N_CallGCCTBIOtoAccessDCTable_Node1 N_CallGCCTBIOtoAccessDCTable_Node2{"The system calls GCCTBIO to access
the DC table"}:::decision N_CallGCCTBIOtoAccessDCTable_Node2_action["The DC table is accessed and made
available for disposition code
lookup"]:::main N_CallGCCTBIOtoAccessDCTable_Node2 -- Yes --> N_CallGCCTBIOtoAccessDCTable_Node2_action N_CallGCCTBIOtoAccessDCTable_Node2_action --> E_CallGCCTBIOtoAccessDCTable N_CallGCCTBIOtoAccessDCTable_Node1 -- No --> N_CallGCCTBIOtoAccessDCTable_Node2 N_CallGCCTBIOtoAccessDCTable_Node2 -- No --> E_CallGCCTBIOtoAccessDCTable
File: GCX016.cbl
GIVEN:
A disposition code is received from X4 segment
WHEN:
The system performs a table lookup using GCCTBIO to access the DC table
THEN:
The system retrieves the disposition code record from GCSTBRT DC table segments
File: GCX016.cbl
GIVEN:
A disposition code has been extracted from the X4 segment
WHEN:
The system needs to lookup disposition code details
THEN:
The GCCTBIO table access routine is called to retrieve information from the DC table
File: GCX016.cbl
GIVEN:
A disposition code needs to be validated and processed
WHEN:
The system calls GCCTBIO to access the DC table
THEN:
- The dc table is accessed
- Made available for disposition code lookup
β Consolidated Acceptance Criteria
- The system processes the found record → the system extracts disposition code information, counterpart code information, processing instructions, quantity action indicators, and location processing flags
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExtractDispositionCodeInformation(["Start Step"])
E_ExtractDispositionCodeInformation(["End Step"])
N_ExtractDispositionCodeInformation_Node0{"The system processes the found
record"}:::decision N_ExtractDispositionCodeInformation_Node0_action["The system extracts disposition
code information, counterpart code
information, processing
instructions, quantity action
indicators, and location processing
flags"]:::main N_ExtractDispositionCodeInformation_Node0 -- Yes --> N_ExtractDispositionCodeInformation_Node0_action N_ExtractDispositionCodeInformation_Node0_action --> E_ExtractDispositionCodeInformation S_ExtractDispositionCodeInformation --> N_ExtractDispositionCodeInformation_Node0 N_ExtractDispositionCodeInformation_Node0 -- No --> E_ExtractDispositionCodeInformation
record"}:::decision N_ExtractDispositionCodeInformation_Node0_action["The system extracts disposition
code information, counterpart code
information, processing
instructions, quantity action
indicators, and location processing
flags"]:::main N_ExtractDispositionCodeInformation_Node0 -- Yes --> N_ExtractDispositionCodeInformation_Node0_action N_ExtractDispositionCodeInformation_Node0_action --> E_ExtractDispositionCodeInformation S_ExtractDispositionCodeInformation --> N_ExtractDispositionCodeInformation_Node0 N_ExtractDispositionCodeInformation_Node0 -- No --> E_ExtractDispositionCodeInformation
File: GCX016.cbl
GIVEN:
A valid disposition code record has been found in the DC table
WHEN:
The system processes the found record
THEN:
The system extracts disposition code information, counterpart code information, processing instructions, quantity action indicators, and location processing flags
β Consolidated Acceptance Criteria
- No matching record is found for the disposition code → the system sets error status, logs the disposition code error, and returns error status to the calling process
- The disposition code is not found in the table → an error status is set to indicate the disposition code is invalid or not supported
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetErrorStatusCodeNotFound(["Start Step"])
E_SetErrorStatusCodeNotFound(["End Step"])
N_SetErrorStatusCodeNotFound_Node0{"No matching record is found for the
disposition code"}:::decision N_SetErrorStatusCodeNotFound_Node0_action["The system sets error status, logs
the disposition code error, and
returns error status to the calling
process"]:::main N_SetErrorStatusCodeNotFound_Node0 -- Yes --> N_SetErrorStatusCodeNotFound_Node0_action N_SetErrorStatusCodeNotFound_Node0_action --> E_SetErrorStatusCodeNotFound S_SetErrorStatusCodeNotFound --> N_SetErrorStatusCodeNotFound_Node0 N_SetErrorStatusCodeNotFound_Node1{"The disposition code is not found
in the table"}:::decision N_SetErrorStatusCodeNotFound_Node1_action["An error status is set to indicate
the disposition code is invalid or
not supported"]:::main N_SetErrorStatusCodeNotFound_Node1 -- Yes --> N_SetErrorStatusCodeNotFound_Node1_action N_SetErrorStatusCodeNotFound_Node1_action --> E_SetErrorStatusCodeNotFound N_SetErrorStatusCodeNotFound_Node0 -- No --> N_SetErrorStatusCodeNotFound_Node1 N_SetErrorStatusCodeNotFound_Node1 -- No --> E_SetErrorStatusCodeNotFound
disposition code"}:::decision N_SetErrorStatusCodeNotFound_Node0_action["The system sets error status, logs
the disposition code error, and
returns error status to the calling
process"]:::main N_SetErrorStatusCodeNotFound_Node0 -- Yes --> N_SetErrorStatusCodeNotFound_Node0_action N_SetErrorStatusCodeNotFound_Node0_action --> E_SetErrorStatusCodeNotFound S_SetErrorStatusCodeNotFound --> N_SetErrorStatusCodeNotFound_Node0 N_SetErrorStatusCodeNotFound_Node1{"The disposition code is not found
in the table"}:::decision N_SetErrorStatusCodeNotFound_Node1_action["An error status is set to indicate
the disposition code is invalid or
not supported"]:::main N_SetErrorStatusCodeNotFound_Node1 -- Yes --> N_SetErrorStatusCodeNotFound_Node1_action N_SetErrorStatusCodeNotFound_Node1_action --> E_SetErrorStatusCodeNotFound N_SetErrorStatusCodeNotFound_Node0 -- No --> N_SetErrorStatusCodeNotFound_Node1 N_SetErrorStatusCodeNotFound_Node1 -- No --> E_SetErrorStatusCodeNotFound
File: GCX016.cbl
GIVEN:
A disposition code lookup has been performed against the DC table
WHEN:
No matching record is found for the disposition code
THEN:
The system sets error status, logs the disposition code error, and returns error status to the calling process
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
A disposition code lookup has been performed against the DC table
WHEN:
The disposition code is not found in the table
THEN:
An error status is set to indicate the disposition code is invalid or not supported
β Consolidated Acceptance Criteria
- The system processes the extracted information → the system stores all DC information in working storage and returns success status
- The system needs to store the information for subsequent processing → all DC information including counterpart codes, processing instructions, and flags are stored in working storage variables
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_StoreDCInformationinWorkingStorage(["Start Step"])
E_StoreDCInformationinWorkingStorage(["End Step"])
N_StoreDCInformationinWorkingStorage_Node0{"The system processes the extracted
information"}:::decision N_StoreDCInformationinWorkingStorage_Node0_action["The system stores all DC
information in working storage and
returns success status"]:::main N_StoreDCInformationinWorkingStorage_Node0 -- Yes --> N_StoreDCInformationinWorkingStorage_Node0_action N_StoreDCInformationinWorkingStorage_Node0_action --> E_StoreDCInformationinWorkingStorage S_StoreDCInformationinWorkingStorage --> N_StoreDCInformationinWorkingStorage_Node0 N_StoreDCInformationinWorkingStorage_Node1{"The system needs to store the
information for subsequent
processing"}:::decision N_StoreDCInformationinWorkingStorage_Node1_action["All DC information including
counterpart codes, processing
instructions, and flags are stored
in working storage variables"]:::main N_StoreDCInformationinWorkingStorage_Node1 -- Yes --> N_StoreDCInformationinWorkingStorage_Node1_action N_StoreDCInformationinWorkingStorage_Node1_action --> E_StoreDCInformationinWorkingStorage N_StoreDCInformationinWorkingStorage_Node0 -- No --> N_StoreDCInformationinWorkingStorage_Node1 N_StoreDCInformationinWorkingStorage_Node1 -- No --> E_StoreDCInformationinWorkingStorage
information"}:::decision N_StoreDCInformationinWorkingStorage_Node0_action["The system stores all DC
information in working storage and
returns success status"]:::main N_StoreDCInformationinWorkingStorage_Node0 -- Yes --> N_StoreDCInformationinWorkingStorage_Node0_action N_StoreDCInformationinWorkingStorage_Node0_action --> E_StoreDCInformationinWorkingStorage S_StoreDCInformationinWorkingStorage --> N_StoreDCInformationinWorkingStorage_Node0 N_StoreDCInformationinWorkingStorage_Node1{"The system needs to store the
information for subsequent
processing"}:::decision N_StoreDCInformationinWorkingStorage_Node1_action["All DC information including
counterpart codes, processing
instructions, and flags are stored
in working storage variables"]:::main N_StoreDCInformationinWorkingStorage_Node1 -- Yes --> N_StoreDCInformationinWorkingStorage_Node1_action N_StoreDCInformationinWorkingStorage_Node1_action --> E_StoreDCInformationinWorkingStorage N_StoreDCInformationinWorkingStorage_Node0 -- No --> N_StoreDCInformationinWorkingStorage_Node1 N_StoreDCInformationinWorkingStorage_Node1 -- No --> E_StoreDCInformationinWorkingStorage
File: GCX016.cbl
GIVEN:
Disposition code information has been successfully extracted from the DC table
WHEN:
The system processes the extracted information
THEN:
- The system stores all dc information in working storage
- Returns success status
File: GCX016.cbl
GIVEN:
All disposition code information has been extracted from the DC table
WHEN:
The system needs to store the information for subsequent processing
THEN:
All DC information including counterpart codes, processing instructions, and flags are stored in working storage variables
β Consolidated Acceptance Criteria
- If additional matching criteria including status info, entry number, quantity, and specific code patterns → multiple validation checks are performed to confirm the code should be removed
- The system begins detailed matching criteria evaluation → multiple matching criteria are evaluated in sequence to determine if the element should be removed
- If additional matching criteria including status info, entry number, quantity, and special code patterns → the counterpart code is marked for removal only if all applicable matching criteria are satisfied
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CheckMatchingCriteria(["Start Step"])
E_CheckMatchingCriteria(["End Step"])
N_CheckMatchingCriteria_Node0{"The system evaluates additional
matching criteria including status
info, entry number, quantity, and
specific code patterns"}:::decision N_CheckMatchingCriteria_Node0_action["Multiple validation checks are
performed to confirm the code should
be removed"]:::main N_CheckMatchingCriteria_Node0 -- Yes --> N_CheckMatchingCriteria_Node0_action N_CheckMatchingCriteria_Node0_action --> E_CheckMatchingCriteria S_CheckMatchingCriteria --> N_CheckMatchingCriteria_Node0 N_CheckMatchingCriteria_Node1{"The system begins detailed matching
criteria evaluation"}:::decision N_CheckMatchingCriteria_Node1_action["Multiple matching criteria are
evaluated in sequence to determine
if the element should be removed"]:::main N_CheckMatchingCriteria_Node1 -- Yes --> N_CheckMatchingCriteria_Node1_action N_CheckMatchingCriteria_Node1_action --> E_CheckMatchingCriteria N_CheckMatchingCriteria_Node0 -- No --> N_CheckMatchingCriteria_Node1 N_CheckMatchingCriteria_Node2{"The system evaluates additional
matching criteria including status
info, entry number, quantity, and
special code patterns"}:::decision N_CheckMatchingCriteria_Node2_action["The counterpart code is marked for
removal only if all applicable
matching criteria are satisfied"]:::main N_CheckMatchingCriteria_Node2 -- Yes --> N_CheckMatchingCriteria_Node2_action N_CheckMatchingCriteria_Node2_action --> E_CheckMatchingCriteria N_CheckMatchingCriteria_Node1 -- No --> N_CheckMatchingCriteria_Node2 N_CheckMatchingCriteria_Node2 -- No --> E_CheckMatchingCriteria
matching criteria including status
info, entry number, quantity, and
specific code patterns"}:::decision N_CheckMatchingCriteria_Node0_action["Multiple validation checks are
performed to confirm the code should
be removed"]:::main N_CheckMatchingCriteria_Node0 -- Yes --> N_CheckMatchingCriteria_Node0_action N_CheckMatchingCriteria_Node0_action --> E_CheckMatchingCriteria S_CheckMatchingCriteria --> N_CheckMatchingCriteria_Node0 N_CheckMatchingCriteria_Node1{"The system begins detailed matching
criteria evaluation"}:::decision N_CheckMatchingCriteria_Node1_action["Multiple matching criteria are
evaluated in sequence to determine
if the element should be removed"]:::main N_CheckMatchingCriteria_Node1 -- Yes --> N_CheckMatchingCriteria_Node1_action N_CheckMatchingCriteria_Node1_action --> E_CheckMatchingCriteria N_CheckMatchingCriteria_Node0 -- No --> N_CheckMatchingCriteria_Node1 N_CheckMatchingCriteria_Node2{"The system evaluates additional
matching criteria including status
info, entry number, quantity, and
special code patterns"}:::decision N_CheckMatchingCriteria_Node2_action["The counterpart code is marked for
removal only if all applicable
matching criteria are satisfied"]:::main N_CheckMatchingCriteria_Node2 -- Yes --> N_CheckMatchingCriteria_Node2_action N_CheckMatchingCriteria_Node2_action --> E_CheckMatchingCriteria N_CheckMatchingCriteria_Node1 -- No --> N_CheckMatchingCriteria_Node2 N_CheckMatchingCriteria_Node2 -- No --> E_CheckMatchingCriteria
File: GCX016.cbl
GIVEN:
A disposition code in the array matches the counterpart code
WHEN:
The system evaluates additional matching criteria including status info, entry number, quantity, and specific code patterns
THEN:
Multiple validation checks are performed to confirm the code should be removed
File: GCX016.cbl
GIVEN:
A potential counterpart match has been found in the status array
WHEN:
The system begins detailed matching criteria evaluation
THEN:
Multiple matching criteria are evaluated in sequence to determine if the element should be removed
File: GCX016.cbl
GIVEN:
A potential counterpart code match has been found in the status array
WHEN:
The system evaluates additional matching criteria including status info, entry number, quantity, and special code patterns
THEN:
The counterpart code is marked for removal only if all applicable matching criteria are satisfied
β Consolidated Acceptance Criteria
- The system validates status information compatibility → if status info matches, remove the counterpart code; otherwise check entry number match
- The system checks if the status information matches the counterpart criteria → if status information matches, mark element for removal, otherwise continue with entry number validation
- The system compares the status information flags of the counterpart code with the removal criteria → the system either removes the counterpart code immediately or checks additional matching criteria
- The system compares status information codes between the counterpart and array element → the match is confirmed if status info codes are identical, otherwise additional criteria are evaluated
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_StatusInfoMatch(["Start Step"])
E_StatusInfoMatch(["End Step"])
N_StatusInfoMatch_Node0{"The system validates status
information compatibility"}:::decision N_StatusInfoMatch_Node0_action["If status info matches, remove the
counterpart code otherwise check
entry number match"]:::main N_StatusInfoMatch_Node0 -- Yes --> N_StatusInfoMatch_Node0_action N_StatusInfoMatch_Node0_action --> E_StatusInfoMatch S_StatusInfoMatch --> N_StatusInfoMatch_Node0 N_StatusInfoMatch_Node1{"The system checks if the status
information matches the counterpart
criteria"}:::decision N_StatusInfoMatch_Node1_action["If status information matches, mark
element for removal, otherwise
continue with entry number
validation"]:::main N_StatusInfoMatch_Node1 -- Yes --> N_StatusInfoMatch_Node1_action N_StatusInfoMatch_Node1_action --> E_StatusInfoMatch N_StatusInfoMatch_Node0 -- No --> N_StatusInfoMatch_Node1 N_StatusInfoMatch_Node2{"The system compares the status
information flags of the counterpart
code with the removal criteria"}:::decision N_StatusInfoMatch_Node2_action["The system either removes the
counterpart code immediately or
checks additional matching criteria"]:::main N_StatusInfoMatch_Node2 -- Yes --> N_StatusInfoMatch_Node2_action N_StatusInfoMatch_Node2_action --> E_StatusInfoMatch N_StatusInfoMatch_Node1 -- No --> N_StatusInfoMatch_Node2 N_StatusInfoMatch_Node3{"The system compares status
information codes between the
counterpart and array element"}:::decision N_StatusInfoMatch_Node3_action["The match is confirmed if status
info codes are identical, otherwise
additional criteria are evaluated"]:::main N_StatusInfoMatch_Node3 -- Yes --> N_StatusInfoMatch_Node3_action N_StatusInfoMatch_Node3_action --> E_StatusInfoMatch N_StatusInfoMatch_Node2 -- No --> N_StatusInfoMatch_Node3 N_StatusInfoMatch_Node3 -- No --> E_StatusInfoMatch
information compatibility"}:::decision N_StatusInfoMatch_Node0_action["If status info matches, remove the
counterpart code otherwise check
entry number match"]:::main N_StatusInfoMatch_Node0 -- Yes --> N_StatusInfoMatch_Node0_action N_StatusInfoMatch_Node0_action --> E_StatusInfoMatch S_StatusInfoMatch --> N_StatusInfoMatch_Node0 N_StatusInfoMatch_Node1{"The system checks if the status
information matches the counterpart
criteria"}:::decision N_StatusInfoMatch_Node1_action["If status information matches, mark
element for removal, otherwise
continue with entry number
validation"]:::main N_StatusInfoMatch_Node1 -- Yes --> N_StatusInfoMatch_Node1_action N_StatusInfoMatch_Node1_action --> E_StatusInfoMatch N_StatusInfoMatch_Node0 -- No --> N_StatusInfoMatch_Node1 N_StatusInfoMatch_Node2{"The system compares the status
information flags of the counterpart
code with the removal criteria"}:::decision N_StatusInfoMatch_Node2_action["The system either removes the
counterpart code immediately or
checks additional matching criteria"]:::main N_StatusInfoMatch_Node2 -- Yes --> N_StatusInfoMatch_Node2_action N_StatusInfoMatch_Node2_action --> E_StatusInfoMatch N_StatusInfoMatch_Node1 -- No --> N_StatusInfoMatch_Node2 N_StatusInfoMatch_Node3{"The system compares status
information codes between the
counterpart and array element"}:::decision N_StatusInfoMatch_Node3_action["The match is confirmed if status
info codes are identical, otherwise
additional criteria are evaluated"]:::main N_StatusInfoMatch_Node3 -- Yes --> N_StatusInfoMatch_Node3_action N_StatusInfoMatch_Node3_action --> E_StatusInfoMatch N_StatusInfoMatch_Node2 -- No --> N_StatusInfoMatch_Node3 N_StatusInfoMatch_Node3 -- No --> E_StatusInfoMatch
File: GCX016.cbl
GIVEN:
A counterpart code match has been found in the status array
WHEN:
The system validates status information compatibility
THEN:
If status info matches, remove the counterpart code; otherwise check entry number match
File: GCX016.cbl
GIVEN:
A status array element is being evaluated for counterpart removal
WHEN:
The system checks if the status information matches the counterpart criteria
THEN:
If status information matches, mark element for removal, otherwise continue with entry number validation
File: GCX016.cbl
GIVEN:
A counterpart code has been found in the status array
WHEN:
The system compares the status information flags of the counterpart code with the removal criteria
THEN:
The system either removes the counterpart code immediately or checks additional matching criteria
File: GCX016.cbl
GIVEN:
A counterpart code match candidate exists in the status array
WHEN:
- The system compares status information codes between the counterpart
- Array element
THEN:
The match is confirmed if status info codes are identical, otherwise additional criteria are evaluated
β Consolidated Acceptance Criteria
- The system compares entry number values → if entry numbers match, remove the counterpart code; otherwise check quantity match
- The system checks if the entry number matches the counterpart criteria → if entry number matches, mark element for removal, otherwise continue with quantity validation
- The system compares the entry numbers of the counterpart code with the removal criteria → the system either removes the counterpart code or checks quantity matching criteria
- The system compares entry numbers between the counterpart and array element → the match is confirmed if entry numbers are identical, otherwise quantity matching is evaluated
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_EntryNumberMatch(["Start Step"])
E_EntryNumberMatch(["End Step"])
N_EntryNumberMatch_Node0{"The system compares entry number
values"}:::decision N_EntryNumberMatch_Node0_action["If entry numbers match, remove the
counterpart code otherwise check
quantity match"]:::main N_EntryNumberMatch_Node0 -- Yes --> N_EntryNumberMatch_Node0_action N_EntryNumberMatch_Node0_action --> E_EntryNumberMatch S_EntryNumberMatch --> N_EntryNumberMatch_Node0 N_EntryNumberMatch_Node1{"The system checks if the entry
number matches the counterpart
criteria"}:::decision N_EntryNumberMatch_Node1_action["If entry number matches, mark
element for removal, otherwise
continue with quantity validation"]:::main N_EntryNumberMatch_Node1 -- Yes --> N_EntryNumberMatch_Node1_action N_EntryNumberMatch_Node1_action --> E_EntryNumberMatch N_EntryNumberMatch_Node0 -- No --> N_EntryNumberMatch_Node1 N_EntryNumberMatch_Node2{"The system compares the entry
numbers of the counterpart code with
the removal criteria"}:::decision N_EntryNumberMatch_Node2_action["The system either removes the
counterpart code or checks quantity
matching criteria"]:::main N_EntryNumberMatch_Node2 -- Yes --> N_EntryNumberMatch_Node2_action N_EntryNumberMatch_Node2_action --> E_EntryNumberMatch N_EntryNumberMatch_Node1 -- No --> N_EntryNumberMatch_Node2 N_EntryNumberMatch_Node3{"The system compares entry numbers
between the counterpart and array
element"}:::decision N_EntryNumberMatch_Node3_action["The match is confirmed if entry
numbers are identical, otherwise
quantity matching is evaluated"]:::main N_EntryNumberMatch_Node3 -- Yes --> N_EntryNumberMatch_Node3_action N_EntryNumberMatch_Node3_action --> E_EntryNumberMatch N_EntryNumberMatch_Node2 -- No --> N_EntryNumberMatch_Node3 N_EntryNumberMatch_Node3 -- No --> E_EntryNumberMatch
values"}:::decision N_EntryNumberMatch_Node0_action["If entry numbers match, remove the
counterpart code otherwise check
quantity match"]:::main N_EntryNumberMatch_Node0 -- Yes --> N_EntryNumberMatch_Node0_action N_EntryNumberMatch_Node0_action --> E_EntryNumberMatch S_EntryNumberMatch --> N_EntryNumberMatch_Node0 N_EntryNumberMatch_Node1{"The system checks if the entry
number matches the counterpart
criteria"}:::decision N_EntryNumberMatch_Node1_action["If entry number matches, mark
element for removal, otherwise
continue with quantity validation"]:::main N_EntryNumberMatch_Node1 -- Yes --> N_EntryNumberMatch_Node1_action N_EntryNumberMatch_Node1_action --> E_EntryNumberMatch N_EntryNumberMatch_Node0 -- No --> N_EntryNumberMatch_Node1 N_EntryNumberMatch_Node2{"The system compares the entry
numbers of the counterpart code with
the removal criteria"}:::decision N_EntryNumberMatch_Node2_action["The system either removes the
counterpart code or checks quantity
matching criteria"]:::main N_EntryNumberMatch_Node2 -- Yes --> N_EntryNumberMatch_Node2_action N_EntryNumberMatch_Node2_action --> E_EntryNumberMatch N_EntryNumberMatch_Node1 -- No --> N_EntryNumberMatch_Node2 N_EntryNumberMatch_Node3{"The system compares entry numbers
between the counterpart and array
element"}:::decision N_EntryNumberMatch_Node3_action["The match is confirmed if entry
numbers are identical, otherwise
quantity matching is evaluated"]:::main N_EntryNumberMatch_Node3 -- Yes --> N_EntryNumberMatch_Node3_action N_EntryNumberMatch_Node3_action --> E_EntryNumberMatch N_EntryNumberMatch_Node2 -- No --> N_EntryNumberMatch_Node3 N_EntryNumberMatch_Node3 -- No --> E_EntryNumberMatch
File: GCX016.cbl
GIVEN:
Status info match validation has been performed and counterpart code exists in array
WHEN:
The system compares entry number values
THEN:
If entry numbers match, remove the counterpart code; otherwise check quantity match
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
Status information did not match counterpart criteria for a status array element
WHEN:
The system checks if the entry number matches the counterpart criteria
THEN:
If entry number matches, mark element for removal, otherwise continue with quantity validation
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
The status information flags do not match for counterpart removal
WHEN:
The system compares the entry numbers of the counterpart code with the removal criteria
THEN:
The system either removes the counterpart code or checks quantity matching criteria
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
Status info codes do not match for a counterpart code candidate
WHEN:
- The system compares entry numbers between the counterpart
- Array element
THEN:
The match is confirmed if entry numbers are identical, otherwise quantity matching is evaluated
β Consolidated Acceptance Criteria
- The system compares quantity values → if quantities match, remove the counterpart code; otherwise check specific code pattern match
- The system checks if the quantity matches the counterpart criteria → if quantity matches, mark element for removal, otherwise continue with specific code pattern validation
- The system compares the quantities of the counterpart code with the removal criteria → the system either removes the counterpart code or checks special code pattern matching
- The system compares quantities between the counterpart and array element → the match is confirmed if quantities are identical, otherwise special code pattern matching is evaluated
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_QuantityMatch(["Start Step"])
E_QuantityMatch(["End Step"])
N_QuantityMatch_Node0{"The system compares quantity values"}:::decision
N_QuantityMatch_Node0_action["If quantities match, remove the
counterpart code otherwise check
specific code pattern match"]:::main N_QuantityMatch_Node0 -- Yes --> N_QuantityMatch_Node0_action N_QuantityMatch_Node0_action --> E_QuantityMatch S_QuantityMatch --> N_QuantityMatch_Node0 N_QuantityMatch_Node1{"The system checks if the quantity
matches the counterpart criteria"}:::decision N_QuantityMatch_Node1_action["If quantity matches, mark element
for removal, otherwise continue with
specific code pattern validation"]:::main N_QuantityMatch_Node1 -- Yes --> N_QuantityMatch_Node1_action N_QuantityMatch_Node1_action --> E_QuantityMatch N_QuantityMatch_Node0 -- No --> N_QuantityMatch_Node1 N_QuantityMatch_Node2{"The system compares the quantities
of the counterpart code with the
removal criteria"}:::decision N_QuantityMatch_Node2_action["The system either removes the
counterpart code or checks special
code pattern matching"]:::main N_QuantityMatch_Node2 -- Yes --> N_QuantityMatch_Node2_action N_QuantityMatch_Node2_action --> E_QuantityMatch N_QuantityMatch_Node1 -- No --> N_QuantityMatch_Node2 N_QuantityMatch_Node3{"The system compares quantities
between the counterpart and array
element"}:::decision N_QuantityMatch_Node3_action["The match is confirmed if
quantities are identical, otherwise
special code pattern matching is
evaluated"]:::main N_QuantityMatch_Node3 -- Yes --> N_QuantityMatch_Node3_action N_QuantityMatch_Node3_action --> E_QuantityMatch N_QuantityMatch_Node2 -- No --> N_QuantityMatch_Node3 N_QuantityMatch_Node3 -- No --> E_QuantityMatch
counterpart code otherwise check
specific code pattern match"]:::main N_QuantityMatch_Node0 -- Yes --> N_QuantityMatch_Node0_action N_QuantityMatch_Node0_action --> E_QuantityMatch S_QuantityMatch --> N_QuantityMatch_Node0 N_QuantityMatch_Node1{"The system checks if the quantity
matches the counterpart criteria"}:::decision N_QuantityMatch_Node1_action["If quantity matches, mark element
for removal, otherwise continue with
specific code pattern validation"]:::main N_QuantityMatch_Node1 -- Yes --> N_QuantityMatch_Node1_action N_QuantityMatch_Node1_action --> E_QuantityMatch N_QuantityMatch_Node0 -- No --> N_QuantityMatch_Node1 N_QuantityMatch_Node2{"The system compares the quantities
of the counterpart code with the
removal criteria"}:::decision N_QuantityMatch_Node2_action["The system either removes the
counterpart code or checks special
code pattern matching"]:::main N_QuantityMatch_Node2 -- Yes --> N_QuantityMatch_Node2_action N_QuantityMatch_Node2_action --> E_QuantityMatch N_QuantityMatch_Node1 -- No --> N_QuantityMatch_Node2 N_QuantityMatch_Node3{"The system compares quantities
between the counterpart and array
element"}:::decision N_QuantityMatch_Node3_action["The match is confirmed if
quantities are identical, otherwise
special code pattern matching is
evaluated"]:::main N_QuantityMatch_Node3 -- Yes --> N_QuantityMatch_Node3_action N_QuantityMatch_Node3_action --> E_QuantityMatch N_QuantityMatch_Node2 -- No --> N_QuantityMatch_Node3 N_QuantityMatch_Node3 -- No --> E_QuantityMatch
File: GCX016.cbl
GIVEN:
Entry number match validation has been performed and counterpart code exists in array
WHEN:
The system compares quantity values
THEN:
If quantities match, remove the counterpart code; otherwise check specific code pattern match
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
Entry number did not match counterpart criteria for a status array element
WHEN:
The system checks if the quantity matches the counterpart criteria
THEN:
If quantity matches, mark element for removal, otherwise continue with specific code pattern validation
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
The entry numbers do not match for counterpart removal
WHEN:
The system compares the quantities of the counterpart code with the removal criteria
THEN:
The system either removes the counterpart code or checks special code pattern matching
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
Entry numbers do not match for a counterpart code candidate
WHEN:
- The system compares quantities between the counterpart
- Array element
THEN:
The match is confirmed if quantities are identical, otherwise special code pattern matching is evaluated
β Consolidated Acceptance Criteria
- If specific code pattern matching criteria → if specific patterns match, remove the counterpart code; otherwise continue to next array element
- The system checks if the element matches specific code patterns for counterpart removal → if specific code pattern matches, mark element for removal, otherwise continue searching remaining elements
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SpecificCodePatternMatch(["Start Step"])
E_SpecificCodePatternMatch(["End Step"])
N_SpecificCodePatternMatch_Node0{"The system evaluates specific code
pattern matching criteria"}:::decision N_SpecificCodePatternMatch_Node0_action["If specific patterns match, remove
the counterpart code otherwise
continue to next array element"]:::main N_SpecificCodePatternMatch_Node0 -- Yes --> N_SpecificCodePatternMatch_Node0_action N_SpecificCodePatternMatch_Node0_action --> E_SpecificCodePatternMatch S_SpecificCodePatternMatch --> N_SpecificCodePatternMatch_Node0 N_SpecificCodePatternMatch_Node1{"The system checks if the element
matches specific code patterns for
counterpart removal"}:::decision N_SpecificCodePatternMatch_Node1_action["If specific code pattern matches,
mark element for removal, otherwise
continue searching remaining
elements"]:::main N_SpecificCodePatternMatch_Node1 -- Yes --> N_SpecificCodePatternMatch_Node1_action N_SpecificCodePatternMatch_Node1_action --> E_SpecificCodePatternMatch N_SpecificCodePatternMatch_Node0 -- No --> N_SpecificCodePatternMatch_Node1 N_SpecificCodePatternMatch_Node1 -- No --> E_SpecificCodePatternMatch
pattern matching criteria"}:::decision N_SpecificCodePatternMatch_Node0_action["If specific patterns match, remove
the counterpart code otherwise
continue to next array element"]:::main N_SpecificCodePatternMatch_Node0 -- Yes --> N_SpecificCodePatternMatch_Node0_action N_SpecificCodePatternMatch_Node0_action --> E_SpecificCodePatternMatch S_SpecificCodePatternMatch --> N_SpecificCodePatternMatch_Node0 N_SpecificCodePatternMatch_Node1{"The system checks if the element
matches specific code patterns for
counterpart removal"}:::decision N_SpecificCodePatternMatch_Node1_action["If specific code pattern matches,
mark element for removal, otherwise
continue searching remaining
elements"]:::main N_SpecificCodePatternMatch_Node1 -- Yes --> N_SpecificCodePatternMatch_Node1_action N_SpecificCodePatternMatch_Node1_action --> E_SpecificCodePatternMatch N_SpecificCodePatternMatch_Node0 -- No --> N_SpecificCodePatternMatch_Node1 N_SpecificCodePatternMatch_Node1 -- No --> E_SpecificCodePatternMatch
File: GCX016.cbl
GIVEN:
Quantity match validation has been performed and counterpart code exists in array
WHEN:
The system evaluates specific code pattern matching criteria
THEN:
If specific patterns match, remove the counterpart code; otherwise continue to next array element
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
Quantity did not match counterpart criteria for a status array element
WHEN:
The system checks if the element matches specific code patterns for counterpart removal
THEN:
If specific code pattern matches, mark element for removal, otherwise continue searching remaining elements
β Consolidated Acceptance Criteria
- The system performs the removal operation → the counterpart code is marked for removal from the status array
- The system removes the counterpart code from its position in the status array → the counterpart code is eliminated from the array and marked for compaction
- The system removes the counterpart code from the status array → the counterpart code entry is marked for deletion from the array
- The system removes the counterpart code from the status array → the counterpart code is deleted from the array and array elements are compacted
- The system processes the removal request → the system removes the counterpart codes from the status array and marks the positions for compaction
- The system processes the removal of the counterpart code → the matched element is marked for removal from the status array
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RemoveCounterpartCodefromArray(["Start Step"])
E_RemoveCounterpartCodefromArray(["End Step"])
N_RemoveCounterpartCodefromArray_Node0{"The system performs the removal
operation"}:::decision N_RemoveCounterpartCodefromArray_Node0_action["The counterpart code is marked for
removal from the status array"]:::main N_RemoveCounterpartCodefromArray_Node0 -- Yes --> N_RemoveCounterpartCodefromArray_Node0_action N_RemoveCounterpartCodefromArray_Node0_action --> E_RemoveCounterpartCodefromArray S_RemoveCounterpartCodefromArray --> N_RemoveCounterpartCodefromArray_Node0 N_RemoveCounterpartCodefromArray_Node1{"The system removes the counterpart
code from its position in the status
array"}:::decision N_RemoveCounterpartCodefromArray_Node1_action["The counterpart code is eliminated
from the array and marked for
compaction"]:::main N_RemoveCounterpartCodefromArray_Node1 -- Yes --> N_RemoveCounterpartCodefromArray_Node1_action N_RemoveCounterpartCodefromArray_Node1_action --> E_RemoveCounterpartCodefromArray N_RemoveCounterpartCodefromArray_Node0 -- No --> N_RemoveCounterpartCodefromArray_Node1 N_RemoveCounterpartCodefromArray_Node2{"The system removes the counterpart
code from the status array"}:::decision N_RemoveCounterpartCodefromArray_Node2_action["The counterpart code entry is
marked for deletion from the array"]:::main N_RemoveCounterpartCodefromArray_Node2 -- Yes --> N_RemoveCounterpartCodefromArray_Node2_action N_RemoveCounterpartCodefromArray_Node2_action --> E_RemoveCounterpartCodefromArray N_RemoveCounterpartCodefromArray_Node1 -- No --> N_RemoveCounterpartCodefromArray_Node2 N_RemoveCounterpartCodefromArray_Node3{"The system removes the counterpart
code from the status array"}:::decision N_RemoveCounterpartCodefromArray_Node3_action["The counterpart code is deleted
from the array and array elements
are compacted"]:::main N_RemoveCounterpartCodefromArray_Node3 -- Yes --> N_RemoveCounterpartCodefromArray_Node3_action N_RemoveCounterpartCodefromArray_Node3_action --> E_RemoveCounterpartCodefromArray N_RemoveCounterpartCodefromArray_Node2 -- No --> N_RemoveCounterpartCodefromArray_Node3 N_RemoveCounterpartCodefromArray_Node4{"The system processes the removal
request"}:::decision N_RemoveCounterpartCodefromArray_Node4_action["The system removes the counterpart
codes from the status array and
marks the positions for compaction"]:::main N_RemoveCounterpartCodefromArray_Node4 -- Yes --> N_RemoveCounterpartCodefromArray_Node4_action N_RemoveCounterpartCodefromArray_Node4_action --> E_RemoveCounterpartCodefromArray N_RemoveCounterpartCodefromArray_Node3 -- No --> N_RemoveCounterpartCodefromArray_Node4 N_RemoveCounterpartCodefromArray_Node5{"The system processes the removal of
the counterpart code"}:::decision N_RemoveCounterpartCodefromArray_Node5_action["The matched element is marked for
removal from the status array"]:::main N_RemoveCounterpartCodefromArray_Node5 -- Yes --> N_RemoveCounterpartCodefromArray_Node5_action N_RemoveCounterpartCodefromArray_Node5_action --> E_RemoveCounterpartCodefromArray N_RemoveCounterpartCodefromArray_Node4 -- No --> N_RemoveCounterpartCodefromArray_Node5 N_RemoveCounterpartCodefromArray_Node5 -- No --> E_RemoveCounterpartCodefromArray
operation"}:::decision N_RemoveCounterpartCodefromArray_Node0_action["The counterpart code is marked for
removal from the status array"]:::main N_RemoveCounterpartCodefromArray_Node0 -- Yes --> N_RemoveCounterpartCodefromArray_Node0_action N_RemoveCounterpartCodefromArray_Node0_action --> E_RemoveCounterpartCodefromArray S_RemoveCounterpartCodefromArray --> N_RemoveCounterpartCodefromArray_Node0 N_RemoveCounterpartCodefromArray_Node1{"The system removes the counterpart
code from its position in the status
array"}:::decision N_RemoveCounterpartCodefromArray_Node1_action["The counterpart code is eliminated
from the array and marked for
compaction"]:::main N_RemoveCounterpartCodefromArray_Node1 -- Yes --> N_RemoveCounterpartCodefromArray_Node1_action N_RemoveCounterpartCodefromArray_Node1_action --> E_RemoveCounterpartCodefromArray N_RemoveCounterpartCodefromArray_Node0 -- No --> N_RemoveCounterpartCodefromArray_Node1 N_RemoveCounterpartCodefromArray_Node2{"The system removes the counterpart
code from the status array"}:::decision N_RemoveCounterpartCodefromArray_Node2_action["The counterpart code entry is
marked for deletion from the array"]:::main N_RemoveCounterpartCodefromArray_Node2 -- Yes --> N_RemoveCounterpartCodefromArray_Node2_action N_RemoveCounterpartCodefromArray_Node2_action --> E_RemoveCounterpartCodefromArray N_RemoveCounterpartCodefromArray_Node1 -- No --> N_RemoveCounterpartCodefromArray_Node2 N_RemoveCounterpartCodefromArray_Node3{"The system removes the counterpart
code from the status array"}:::decision N_RemoveCounterpartCodefromArray_Node3_action["The counterpart code is deleted
from the array and array elements
are compacted"]:::main N_RemoveCounterpartCodefromArray_Node3 -- Yes --> N_RemoveCounterpartCodefromArray_Node3_action N_RemoveCounterpartCodefromArray_Node3_action --> E_RemoveCounterpartCodefromArray N_RemoveCounterpartCodefromArray_Node2 -- No --> N_RemoveCounterpartCodefromArray_Node3 N_RemoveCounterpartCodefromArray_Node4{"The system processes the removal
request"}:::decision N_RemoveCounterpartCodefromArray_Node4_action["The system removes the counterpart
codes from the status array and
marks the positions for compaction"]:::main N_RemoveCounterpartCodefromArray_Node4 -- Yes --> N_RemoveCounterpartCodefromArray_Node4_action N_RemoveCounterpartCodefromArray_Node4_action --> E_RemoveCounterpartCodefromArray N_RemoveCounterpartCodefromArray_Node3 -- No --> N_RemoveCounterpartCodefromArray_Node4 N_RemoveCounterpartCodefromArray_Node5{"The system processes the removal of
the counterpart code"}:::decision N_RemoveCounterpartCodefromArray_Node5_action["The matched element is marked for
removal from the status array"]:::main N_RemoveCounterpartCodefromArray_Node5 -- Yes --> N_RemoveCounterpartCodefromArray_Node5_action N_RemoveCounterpartCodefromArray_Node5_action --> E_RemoveCounterpartCodefromArray N_RemoveCounterpartCodefromArray_Node4 -- No --> N_RemoveCounterpartCodefromArray_Node5 N_RemoveCounterpartCodefromArray_Node5 -- No --> E_RemoveCounterpartCodefromArray
File: GCX016.cbl
GIVEN:
A counterpart code has been validated for removal based on matching criteria
WHEN:
The system performs the removal operation
THEN:
The counterpart code is marked for removal from the status array
File: GCX016.cbl
GIVEN:
All matching criteria are met for the counterpart code
WHEN:
The system removes the counterpart code from its position in the status array
THEN:
- The counterpart code is eliminated from the array
- Marked for compaction
File: GCX016.cbl
GIVEN:
A counterpart code has been validated for removal based on matching criteria
WHEN:
The system removes the counterpart code from the status array
THEN:
The counterpart code entry is marked for deletion from the array
File: GCX016.cbl
GIVEN:
A counterpart code meets removal criteria (matching entry number and quantity, or matching status info)
WHEN:
The system removes the counterpart code from the status array
THEN:
- The counterpart code is deleted from the array
- Array elements are compacted
File: GCX016.cbl
GIVEN:
Counterpart disposition codes have been found in the status array
WHEN:
The system processes the removal request
THEN:
- The system removes the counterpart codes from the status array
- Marks the positions for compaction
File: GCX016.cbl
GIVEN:
A counterpart code match has been confirmed based on matching criteria
WHEN:
The system processes the removal of the counterpart code
THEN:
The matched element is marked for removal from the status array
β Consolidated Acceptance Criteria
- The system continues array traversal → processing moves to the next available array element
- The system moves to the next element in the status array → processing continues with the next array element until all elements have been evaluated
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ContinuetoNextArrayElement(["Start Step"])
E_ContinuetoNextArrayElement(["End Step"])
N_ContinuetoNextArrayElement_Node0{"The system continues array
traversal"}:::decision N_ContinuetoNextArrayElement_Node0_action["Processing moves to the next
available array element"]:::main N_ContinuetoNextArrayElement_Node0 -- Yes --> N_ContinuetoNextArrayElement_Node0_action N_ContinuetoNextArrayElement_Node0_action --> E_ContinuetoNextArrayElement S_ContinuetoNextArrayElement --> N_ContinuetoNextArrayElement_Node0 N_ContinuetoNextArrayElement_Node1{"The system moves to the next
element in the status array"}:::decision N_ContinuetoNextArrayElement_Node1_action["Processing continues with the next
array element until all elements
have been evaluated"]:::main N_ContinuetoNextArrayElement_Node1 -- Yes --> N_ContinuetoNextArrayElement_Node1_action N_ContinuetoNextArrayElement_Node1_action --> E_ContinuetoNextArrayElement N_ContinuetoNextArrayElement_Node0 -- No --> N_ContinuetoNextArrayElement_Node1 N_ContinuetoNextArrayElement_Node1 -- No --> E_ContinuetoNextArrayElement
traversal"}:::decision N_ContinuetoNextArrayElement_Node0_action["Processing moves to the next
available array element"]:::main N_ContinuetoNextArrayElement_Node0 -- Yes --> N_ContinuetoNextArrayElement_Node0_action N_ContinuetoNextArrayElement_Node0_action --> E_ContinuetoNextArrayElement S_ContinuetoNextArrayElement --> N_ContinuetoNextArrayElement_Node0 N_ContinuetoNextArrayElement_Node1{"The system moves to the next
element in the status array"}:::decision N_ContinuetoNextArrayElement_Node1_action["Processing continues with the next
array element until all elements
have been evaluated"]:::main N_ContinuetoNextArrayElement_Node1 -- Yes --> N_ContinuetoNextArrayElement_Node1_action N_ContinuetoNextArrayElement_Node1_action --> E_ContinuetoNextArrayElement N_ContinuetoNextArrayElement_Node0 -- No --> N_ContinuetoNextArrayElement_Node1 N_ContinuetoNextArrayElement_Node1 -- No --> E_ContinuetoNextArrayElement
File: GCX016.cbl
GIVEN:
Current array element processing is complete (either removed or skipped)
WHEN:
The system continues array traversal
THEN:
Processing moves to the next available array element
File: GCX016.cbl
GIVEN:
An array element has been processed for counterpart matching
WHEN:
The system moves to the next element in the status array
THEN:
Processing continues with the next array element until all elements have been evaluated
β Consolidated Acceptance Criteria
- The counterpart processing cycle is complete → processing control returns to the main disposition code handling logic
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CounterpartProcessingComplete(["Start Step"])
E_CounterpartProcessingComplete(["End Step"])
N_CounterpartProcessingComplete_Node0{"The counterpart processing cycle is
complete"}:::decision N_CounterpartProcessingComplete_Node0_action["Processing control returns to the
main disposition code handling logic"]:::main N_CounterpartProcessingComplete_Node0 -- Yes --> N_CounterpartProcessingComplete_Node0_action N_CounterpartProcessingComplete_Node0_action --> E_CounterpartProcessingComplete S_CounterpartProcessingComplete --> N_CounterpartProcessingComplete_Node0 N_CounterpartProcessingComplete_Node0 -- No --> E_CounterpartProcessingComplete
complete"}:::decision N_CounterpartProcessingComplete_Node0_action["Processing control returns to the
main disposition code handling logic"]:::main N_CounterpartProcessingComplete_Node0 -- Yes --> N_CounterpartProcessingComplete_Node0_action N_CounterpartProcessingComplete_Node0_action --> E_CounterpartProcessingComplete S_CounterpartProcessingComplete --> N_CounterpartProcessingComplete_Node0 N_CounterpartProcessingComplete_Node0 -- No --> E_CounterpartProcessingComplete
File: GCX016.cbl
GIVEN:
All status array elements have been evaluated for counterpart code removal
WHEN:
The counterpart processing cycle is complete
THEN:
Processing control returns to the main disposition code handling logic
β Consolidated Acceptance Criteria
- The system processes cargo status updates → a new S09 segment is created with cargo CCN key and sequence '0001'
- Status processing requires a status array → a new S09 status segment is created with cargo CCN key and sequence '0001'
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CreateNewStatusArray(["Start Step"])
E_CreateNewStatusArray(["End Step"])
N_CreateNewStatusArray_Node0{"The system processes cargo status
updates"}:::decision N_CreateNewStatusArray_Node0_action["A new S09 segment is created with
cargo CCN key and sequence 0001"]:::main N_CreateNewStatusArray_Node0 -- Yes --> N_CreateNewStatusArray_Node0_action N_CreateNewStatusArray_Node0_action --> E_CreateNewStatusArray S_CreateNewStatusArray --> N_CreateNewStatusArray_Node0 N_CreateNewStatusArray_Node1{"Status processing requires a status
array"}:::decision N_CreateNewStatusArray_Node1_action["A new S09 status segment is created
with cargo CCN key and sequence 0001"]:::main N_CreateNewStatusArray_Node1 -- Yes --> N_CreateNewStatusArray_Node1_action N_CreateNewStatusArray_Node1_action --> E_CreateNewStatusArray N_CreateNewStatusArray_Node0 -- No --> N_CreateNewStatusArray_Node1 N_CreateNewStatusArray_Node1 -- No --> E_CreateNewStatusArray
updates"}:::decision N_CreateNewStatusArray_Node0_action["A new S09 segment is created with
cargo CCN key and sequence 0001"]:::main N_CreateNewStatusArray_Node0 -- Yes --> N_CreateNewStatusArray_Node0_action N_CreateNewStatusArray_Node0_action --> E_CreateNewStatusArray S_CreateNewStatusArray --> N_CreateNewStatusArray_Node0 N_CreateNewStatusArray_Node1{"Status processing requires a status
array"}:::decision N_CreateNewStatusArray_Node1_action["A new S09 status segment is created
with cargo CCN key and sequence 0001"]:::main N_CreateNewStatusArray_Node1 -- Yes --> N_CreateNewStatusArray_Node1_action N_CreateNewStatusArray_Node1_action --> E_CreateNewStatusArray N_CreateNewStatusArray_Node0 -- No --> N_CreateNewStatusArray_Node1 N_CreateNewStatusArray_Node1 -- No --> E_CreateNewStatusArray
File: GCX016.cbl
GIVEN:
A cargo record exists without any S09 status segment
WHEN:
The system processes cargo status updates
THEN:
- A new s09 segment is created with cargo ccn key
- Sequence '0001'
File: GCX016.cbl
GIVEN:
A cargo record has no existing S09 status segments
WHEN:
Status processing requires a status array
THEN:
- A new s09 status segment is created with cargo ccn key
- Sequence '0001'
β Consolidated Acceptance Criteria
- The system processes cargo status updates → all S09 sequences and occurrences are loaded into the status array for modification
- Status processing begins → all S09 sequences and occurrences are loaded into the consolidated status array
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LoadExistingStatusArray(["Start Step"])
E_LoadExistingStatusArray(["End Step"])
N_LoadExistingStatusArray_Node0{"The system processes cargo status
updates"}:::decision N_LoadExistingStatusArray_Node0_action["All S09 sequences and occurrences
are loaded into the status array for
modification"]:::main N_LoadExistingStatusArray_Node0 -- Yes --> N_LoadExistingStatusArray_Node0_action N_LoadExistingStatusArray_Node0_action --> E_LoadExistingStatusArray S_LoadExistingStatusArray --> N_LoadExistingStatusArray_Node0 N_LoadExistingStatusArray_Node1{"Status processing begins"}:::decision N_LoadExistingStatusArray_Node1_action["All S09 sequences and occurrences
are loaded into the consolidated
status array"]:::main N_LoadExistingStatusArray_Node1 -- Yes --> N_LoadExistingStatusArray_Node1_action N_LoadExistingStatusArray_Node1_action --> E_LoadExistingStatusArray N_LoadExistingStatusArray_Node0 -- No --> N_LoadExistingStatusArray_Node1 N_LoadExistingStatusArray_Node1 -- No --> E_LoadExistingStatusArray
updates"}:::decision N_LoadExistingStatusArray_Node0_action["All S09 sequences and occurrences
are loaded into the status array for
modification"]:::main N_LoadExistingStatusArray_Node0 -- Yes --> N_LoadExistingStatusArray_Node0_action N_LoadExistingStatusArray_Node0_action --> E_LoadExistingStatusArray S_LoadExistingStatusArray --> N_LoadExistingStatusArray_Node0 N_LoadExistingStatusArray_Node1{"Status processing begins"}:::decision N_LoadExistingStatusArray_Node1_action["All S09 sequences and occurrences
are loaded into the consolidated
status array"]:::main N_LoadExistingStatusArray_Node1 -- Yes --> N_LoadExistingStatusArray_Node1_action N_LoadExistingStatusArray_Node1_action --> E_LoadExistingStatusArray N_LoadExistingStatusArray_Node0 -- No --> N_LoadExistingStatusArray_Node1 N_LoadExistingStatusArray_Node1 -- No --> E_LoadExistingStatusArray
File: GCX016.cbl
GIVEN:
A cargo record has existing S09 status segments
WHEN:
The system processes cargo status updates
THEN:
- All s09 sequences
- Occurrences are loaded into the status array for modification
File: GCX016.cbl
GIVEN:
S09 status segments exist for the cargo record
WHEN:
Status processing begins
THEN:
- All s09 sequences
- Occurrences are loaded into the consolidated status array
β Consolidated Acceptance Criteria
- The system analyzes current status → flags are set for empty, held, released, PTT, export, and arrival conditions based on status codes
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AnalyzeCurrentStatusCodes(["Start Step"])
E_AnalyzeCurrentStatusCodes(["End Step"])
N_AnalyzeCurrentStatusCodes_Node0{"The system analyzes current status"}:::decision
N_AnalyzeCurrentStatusCodes_Node0_action["Flags are set for empty, held,
released, PTT, export, and arrival
conditions based on status codes"]:::main N_AnalyzeCurrentStatusCodes_Node0 -- Yes --> N_AnalyzeCurrentStatusCodes_Node0_action N_AnalyzeCurrentStatusCodes_Node0_action --> E_AnalyzeCurrentStatusCodes S_AnalyzeCurrentStatusCodes --> N_AnalyzeCurrentStatusCodes_Node0 N_AnalyzeCurrentStatusCodes_Node0 -- No --> E_AnalyzeCurrentStatusCodes
released, PTT, export, and arrival
conditions based on status codes"]:::main N_AnalyzeCurrentStatusCodes_Node0 -- Yes --> N_AnalyzeCurrentStatusCodes_Node0_action N_AnalyzeCurrentStatusCodes_Node0_action --> E_AnalyzeCurrentStatusCodes S_AnalyzeCurrentStatusCodes --> N_AnalyzeCurrentStatusCodes_Node0 N_AnalyzeCurrentStatusCodes_Node0 -- No --> E_AnalyzeCurrentStatusCodes
File: GCX016.cbl
GIVEN:
Status array contains existing disposition codes
WHEN:
The system analyzes current status
THEN:
Flags are set for empty, held, released, PTT, export, and arrival conditions based on status codes
β Consolidated Acceptance Criteria
- The disposition code type is identified as hold → the hold code is added to status array and any existing counterpart release codes are removed
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ProcessHoldCode(["Start Step"])
E_ProcessHoldCode(["End Step"])
N_ProcessHoldCode_Node0{"The disposition code type is
identified as hold"}:::decision N_ProcessHoldCode_Node0_action["The hold code is added to status
array and any existing counterpart
release codes are removed"]:::main N_ProcessHoldCode_Node0 -- Yes --> N_ProcessHoldCode_Node0_action N_ProcessHoldCode_Node0_action --> E_ProcessHoldCode S_ProcessHoldCode --> N_ProcessHoldCode_Node0 N_ProcessHoldCode_Node0 -- No --> E_ProcessHoldCode
identified as hold"}:::decision N_ProcessHoldCode_Node0_action["The hold code is added to status
array and any existing counterpart
release codes are removed"]:::main N_ProcessHoldCode_Node0 -- Yes --> N_ProcessHoldCode_Node0_action N_ProcessHoldCode_Node0_action --> E_ProcessHoldCode S_ProcessHoldCode --> N_ProcessHoldCode_Node0 N_ProcessHoldCode_Node0 -- No --> E_ProcessHoldCode
File: GCX016.cbl
GIVEN:
A hold disposition code is received for cargo
WHEN:
The disposition code type is identified as hold
THEN:
- The hold code is added to status array
- Any existing counterpart release codes are removed
β Consolidated Acceptance Criteria
- The disposition code type is identified as release → the release code is added to status array, counterpart hold codes are removed, and release quantities are updated
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ProcessReleaseCode(["Start Step"])
E_ProcessReleaseCode(["End Step"])
N_ProcessReleaseCode_Node0{"The disposition code type is
identified as release"}:::decision N_ProcessReleaseCode_Node0_action["The release code is added to status
array, counterpart hold codes are
removed, and release quantities are
updated"]:::main N_ProcessReleaseCode_Node0 -- Yes --> N_ProcessReleaseCode_Node0_action N_ProcessReleaseCode_Node0_action --> E_ProcessReleaseCode S_ProcessReleaseCode --> N_ProcessReleaseCode_Node0 N_ProcessReleaseCode_Node0 -- No --> E_ProcessReleaseCode
identified as release"}:::decision N_ProcessReleaseCode_Node0_action["The release code is added to status
array, counterpart hold codes are
removed, and release quantities are
updated"]:::main N_ProcessReleaseCode_Node0 -- Yes --> N_ProcessReleaseCode_Node0_action N_ProcessReleaseCode_Node0_action --> E_ProcessReleaseCode S_ProcessReleaseCode --> N_ProcessReleaseCode_Node0 N_ProcessReleaseCode_Node0 -- No --> E_ProcessReleaseCode
File: GCX016.cbl
GIVEN:
A release disposition code is received for cargo
WHEN:
The disposition code type is identified as release
THEN:
The release code is added to status array, counterpart hold codes are removed, and release quantities are updated
β Consolidated Acceptance Criteria
- The disposition code type is identified as arrival → arrival status is set and arrival date is updated in the cargo record
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ProcessArrivalCode(["Start Step"])
E_ProcessArrivalCode(["End Step"])
N_ProcessArrivalCode_Node0{"The disposition code type is
identified as arrival"}:::decision N_ProcessArrivalCode_Node0_action["Arrival status is set and arrival
date is updated in the cargo record"]:::main N_ProcessArrivalCode_Node0 -- Yes --> N_ProcessArrivalCode_Node0_action N_ProcessArrivalCode_Node0_action --> E_ProcessArrivalCode S_ProcessArrivalCode --> N_ProcessArrivalCode_Node0 N_ProcessArrivalCode_Node0 -- No --> E_ProcessArrivalCode
identified as arrival"}:::decision N_ProcessArrivalCode_Node0_action["Arrival status is set and arrival
date is updated in the cargo record"]:::main N_ProcessArrivalCode_Node0 -- Yes --> N_ProcessArrivalCode_Node0_action N_ProcessArrivalCode_Node0_action --> E_ProcessArrivalCode S_ProcessArrivalCode --> N_ProcessArrivalCode_Node0 N_ProcessArrivalCode_Node0 -- No --> E_ProcessArrivalCode
File: GCX016.cbl
GIVEN:
An arrival disposition code is received for cargo
WHEN:
The disposition code type is identified as arrival
THEN:
- Arrival status is set
- Arrival date is updated in the cargo record
β Consolidated Acceptance Criteria
- The disposition code type is identified as export → export status is set and destination index is cleared from the cargo record
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ProcessExportCode(["Start Step"])
E_ProcessExportCode(["End Step"])
N_ProcessExportCode_Node0{"The disposition code type is
identified as export"}:::decision N_ProcessExportCode_Node0_action["Export status is set and
destination index is cleared from
the cargo record"]:::main N_ProcessExportCode_Node0 -- Yes --> N_ProcessExportCode_Node0_action N_ProcessExportCode_Node0_action --> E_ProcessExportCode S_ProcessExportCode --> N_ProcessExportCode_Node0 N_ProcessExportCode_Node0 -- No --> E_ProcessExportCode
identified as export"}:::decision N_ProcessExportCode_Node0_action["Export status is set and
destination index is cleared from
the cargo record"]:::main N_ProcessExportCode_Node0 -- Yes --> N_ProcessExportCode_Node0_action N_ProcessExportCode_Node0_action --> E_ProcessExportCode S_ProcessExportCode --> N_ProcessExportCode_Node0 N_ProcessExportCode_Node0 -- No --> E_ProcessExportCode
File: GCX016.cbl
GIVEN:
An export disposition code is received for cargo
WHEN:
The disposition code type is identified as export
THEN:
- Export status is set
- Destination index is cleared from the cargo record
β Consolidated Acceptance Criteria
- The disposition code type is identified as cancellation → previous status changes are reversed and previous bond dates are restored
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ProcessCancellationCode(["Start Step"])
E_ProcessCancellationCode(["End Step"])
N_ProcessCancellationCode_Node0{"The disposition code type is
identified as cancellation"}:::decision N_ProcessCancellationCode_Node0_action["Previous status changes are
reversed and previous bond dates are
restored"]:::main N_ProcessCancellationCode_Node0 -- Yes --> N_ProcessCancellationCode_Node0_action N_ProcessCancellationCode_Node0_action --> E_ProcessCancellationCode S_ProcessCancellationCode --> N_ProcessCancellationCode_Node0 N_ProcessCancellationCode_Node0 -- No --> E_ProcessCancellationCode
identified as cancellation"}:::decision N_ProcessCancellationCode_Node0_action["Previous status changes are
reversed and previous bond dates are
restored"]:::main N_ProcessCancellationCode_Node0 -- Yes --> N_ProcessCancellationCode_Node0_action N_ProcessCancellationCode_Node0_action --> E_ProcessCancellationCode S_ProcessCancellationCode --> N_ProcessCancellationCode_Node0 N_ProcessCancellationCode_Node0 -- No --> E_ProcessCancellationCode
File: GCX016.cbl
GIVEN:
A cancellation disposition code is received for cargo
WHEN:
The disposition code type is identified as cancellation
THEN:
- Previous status changes are reversed
- Previous bond dates are restored
β Consolidated Acceptance Criteria
- Location determination identifies border as hold location → border hold status is set in cargo record
- The system sets hold status for border location → border hold status is applied to the cargo with appropriate border location identifiers
- The hold location is determined to be at the border → the system should set border hold status preventing cargo movement until examination is completed
- The system determines that hold codes apply to border location → the system sets the cargo status to border hold and updates the appropriate status flags
- Hold location is classified as border hold → system sets border hold status flag for the cargo
- The system processes the border hold code → the cargo border hold flag is set to true and border hold status is established
- The hold location is determined to be at the border → the system assigns border hold status to the cargo
- The cargo is at or destined for border processing location → the system sets border hold status flags and updates the cargo status to reflect border hold conditions
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetBorderHoldStatus(["Start Step"])
E_SetBorderHoldStatus(["End Step"])
N_SetBorderHoldStatus_Node0{"Location determination identifies
border as hold location"}:::decision N_SetBorderHoldStatus_Node0_action["Border hold status is set in cargo
record"]:::main N_SetBorderHoldStatus_Node0 -- Yes --> N_SetBorderHoldStatus_Node0_action N_SetBorderHoldStatus_Node0_action --> E_SetBorderHoldStatus S_SetBorderHoldStatus --> N_SetBorderHoldStatus_Node0 N_SetBorderHoldStatus_Node1{"The system sets hold status for
border location"}:::decision N_SetBorderHoldStatus_Node1_action["Border hold status is applied to
the cargo with appropriate border
location identifiers"]:::main N_SetBorderHoldStatus_Node1 -- Yes --> N_SetBorderHoldStatus_Node1_action N_SetBorderHoldStatus_Node1_action --> E_SetBorderHoldStatus N_SetBorderHoldStatus_Node0 -- No --> N_SetBorderHoldStatus_Node1 N_SetBorderHoldStatus_Node2{"The hold location is determined to
be at the border"}:::decision N_SetBorderHoldStatus_Node2_action["The system should set border hold
status preventing cargo movement
until examination is completed"]:::main N_SetBorderHoldStatus_Node2 -- Yes --> N_SetBorderHoldStatus_Node2_action N_SetBorderHoldStatus_Node2_action --> E_SetBorderHoldStatus N_SetBorderHoldStatus_Node1 -- No --> N_SetBorderHoldStatus_Node2 N_SetBorderHoldStatus_Node3{"The system determines that hold
codes apply to border location"}:::decision N_SetBorderHoldStatus_Node3_action["The system sets the cargo status to
border hold and updates the
appropriate status flags"]:::main N_SetBorderHoldStatus_Node3 -- Yes --> N_SetBorderHoldStatus_Node3_action N_SetBorderHoldStatus_Node3_action --> E_SetBorderHoldStatus N_SetBorderHoldStatus_Node2 -- No --> N_SetBorderHoldStatus_Node3 N_SetBorderHoldStatus_Node4{"Hold location is classified as
border hold"}:::decision N_SetBorderHoldStatus_Node4_action["System sets border hold status flag
for the cargo"]:::main N_SetBorderHoldStatus_Node4 -- Yes --> N_SetBorderHoldStatus_Node4_action N_SetBorderHoldStatus_Node4_action --> E_SetBorderHoldStatus N_SetBorderHoldStatus_Node3 -- No --> N_SetBorderHoldStatus_Node4 N_SetBorderHoldStatus_Node5{"The system processes the border
hold code"}:::decision N_SetBorderHoldStatus_Node5_action["The cargo border hold flag is set
to true and border hold status is
established"]:::main N_SetBorderHoldStatus_Node5 -- Yes --> N_SetBorderHoldStatus_Node5_action N_SetBorderHoldStatus_Node5_action --> E_SetBorderHoldStatus N_SetBorderHoldStatus_Node4 -- No --> N_SetBorderHoldStatus_Node5 N_SetBorderHoldStatus_Node6{"The hold location is determined to
be at the border"}:::decision N_SetBorderHoldStatus_Node6_action["The system assigns border hold
status to the cargo"]:::main N_SetBorderHoldStatus_Node6 -- Yes --> N_SetBorderHoldStatus_Node6_action N_SetBorderHoldStatus_Node6_action --> E_SetBorderHoldStatus N_SetBorderHoldStatus_Node5 -- No --> N_SetBorderHoldStatus_Node6 N_SetBorderHoldStatus_Node7{"The cargo is at or destined for
border processing location"}:::decision N_SetBorderHoldStatus_Node7_action["The system sets border hold status
flags and updates the cargo status
to reflect border hold conditions"]:::main N_SetBorderHoldStatus_Node7 -- Yes --> N_SetBorderHoldStatus_Node7_action N_SetBorderHoldStatus_Node7_action --> E_SetBorderHoldStatus N_SetBorderHoldStatus_Node6 -- No --> N_SetBorderHoldStatus_Node7 N_SetBorderHoldStatus_Node7 -- No --> E_SetBorderHoldStatus
border as hold location"}:::decision N_SetBorderHoldStatus_Node0_action["Border hold status is set in cargo
record"]:::main N_SetBorderHoldStatus_Node0 -- Yes --> N_SetBorderHoldStatus_Node0_action N_SetBorderHoldStatus_Node0_action --> E_SetBorderHoldStatus S_SetBorderHoldStatus --> N_SetBorderHoldStatus_Node0 N_SetBorderHoldStatus_Node1{"The system sets hold status for
border location"}:::decision N_SetBorderHoldStatus_Node1_action["Border hold status is applied to
the cargo with appropriate border
location identifiers"]:::main N_SetBorderHoldStatus_Node1 -- Yes --> N_SetBorderHoldStatus_Node1_action N_SetBorderHoldStatus_Node1_action --> E_SetBorderHoldStatus N_SetBorderHoldStatus_Node0 -- No --> N_SetBorderHoldStatus_Node1 N_SetBorderHoldStatus_Node2{"The hold location is determined to
be at the border"}:::decision N_SetBorderHoldStatus_Node2_action["The system should set border hold
status preventing cargo movement
until examination is completed"]:::main N_SetBorderHoldStatus_Node2 -- Yes --> N_SetBorderHoldStatus_Node2_action N_SetBorderHoldStatus_Node2_action --> E_SetBorderHoldStatus N_SetBorderHoldStatus_Node1 -- No --> N_SetBorderHoldStatus_Node2 N_SetBorderHoldStatus_Node3{"The system determines that hold
codes apply to border location"}:::decision N_SetBorderHoldStatus_Node3_action["The system sets the cargo status to
border hold and updates the
appropriate status flags"]:::main N_SetBorderHoldStatus_Node3 -- Yes --> N_SetBorderHoldStatus_Node3_action N_SetBorderHoldStatus_Node3_action --> E_SetBorderHoldStatus N_SetBorderHoldStatus_Node2 -- No --> N_SetBorderHoldStatus_Node3 N_SetBorderHoldStatus_Node4{"Hold location is classified as
border hold"}:::decision N_SetBorderHoldStatus_Node4_action["System sets border hold status flag
for the cargo"]:::main N_SetBorderHoldStatus_Node4 -- Yes --> N_SetBorderHoldStatus_Node4_action N_SetBorderHoldStatus_Node4_action --> E_SetBorderHoldStatus N_SetBorderHoldStatus_Node3 -- No --> N_SetBorderHoldStatus_Node4 N_SetBorderHoldStatus_Node5{"The system processes the border
hold code"}:::decision N_SetBorderHoldStatus_Node5_action["The cargo border hold flag is set
to true and border hold status is
established"]:::main N_SetBorderHoldStatus_Node5 -- Yes --> N_SetBorderHoldStatus_Node5_action N_SetBorderHoldStatus_Node5_action --> E_SetBorderHoldStatus N_SetBorderHoldStatus_Node4 -- No --> N_SetBorderHoldStatus_Node5 N_SetBorderHoldStatus_Node6{"The hold location is determined to
be at the border"}:::decision N_SetBorderHoldStatus_Node6_action["The system assigns border hold
status to the cargo"]:::main N_SetBorderHoldStatus_Node6 -- Yes --> N_SetBorderHoldStatus_Node6_action N_SetBorderHoldStatus_Node6_action --> E_SetBorderHoldStatus N_SetBorderHoldStatus_Node5 -- No --> N_SetBorderHoldStatus_Node6 N_SetBorderHoldStatus_Node7{"The cargo is at or destined for
border processing location"}:::decision N_SetBorderHoldStatus_Node7_action["The system sets border hold status
flags and updates the cargo status
to reflect border hold conditions"]:::main N_SetBorderHoldStatus_Node7 -- Yes --> N_SetBorderHoldStatus_Node7_action N_SetBorderHoldStatus_Node7_action --> E_SetBorderHoldStatus N_SetBorderHoldStatus_Node6 -- No --> N_SetBorderHoldStatus_Node7 N_SetBorderHoldStatus_Node7 -- No --> E_SetBorderHoldStatus
File: GCX016.cbl
GIVEN:
A hold disposition code specifies border location
WHEN:
Location determination identifies border as hold location
THEN:
Border hold status is set in cargo record
File: GCX016.cbl
GIVEN:
Hold codes are resolved and location validation determines border location
WHEN:
The system sets hold status for border location
THEN:
Border hold status is applied to the cargo with appropriate border location identifiers
File: GCX016.cbl
GIVEN:
A disposition code 66 requires border examination
WHEN:
The hold location is determined to be at the border
THEN:
The system should set border hold status preventing cargo movement until examination is completed
File: GCX016.cbl
GIVEN:
A cargo record requiring border hold processing
WHEN:
The system determines that hold codes apply to border location
THEN:
- The system sets the cargo status to border hold
- Updates the appropriate status flags
File: GCX016.cbl
GIVEN:
Hold status is detected in cargo status array
WHEN:
Hold location is classified as border hold
THEN:
System sets border hold status flag for the cargo
File: GCX016.cbl
GIVEN:
A border hold disposition code is identified in the status array
WHEN:
The system processes the border hold code
THEN:
- The cargo border hold flag is set to true
- Border hold status is established
File: GCX016.cbl
GIVEN:
A cargo record with hold status present
WHEN:
The hold location is determined to be at the border
THEN:
The system assigns border hold status to the cargo
File: GCX016.cbl
GIVEN:
Unreleased cargo requires border hold status
WHEN:
The cargo is at or destined for border processing location
THEN:
- The system sets border hold status flags
- Updates the cargo status to reflect border hold conditions
β Consolidated Acceptance Criteria
- Location determination identifies destination as hold location → destination hold status is set in cargo record
- The system sets hold status for destination location → destination hold status is applied to the cargo with appropriate destination location identifiers
- The hold location is determined to be at the destination → the system should set destination hold status allowing border movement but preventing final release until examination
- The system determines that hold codes apply to destination location → the system sets the cargo status to destination hold and updates the appropriate status flags
- Hold location is classified as destination hold → system sets destination hold status flag for the cargo
- The system processes the destination hold code → the cargo destination hold flag is set to true and destination hold status is established
- The hold location is determined to be at the destination (not border) → the system assigns destination hold status to the cargo
- The cargo is at or destined for destination processing location → the system sets destination hold status flags and updates the cargo status to reflect destination hold conditions
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetDestinationHoldStatus(["Start Step"])
E_SetDestinationHoldStatus(["End Step"])
N_SetDestinationHoldStatus_Node0{"Location determination identifies
destination as hold location"}:::decision N_SetDestinationHoldStatus_Node0_action["Destination hold status is set in
cargo record"]:::main N_SetDestinationHoldStatus_Node0 -- Yes --> N_SetDestinationHoldStatus_Node0_action N_SetDestinationHoldStatus_Node0_action --> E_SetDestinationHoldStatus S_SetDestinationHoldStatus --> N_SetDestinationHoldStatus_Node0 N_SetDestinationHoldStatus_Node1{"The system sets hold status for
destination location"}:::decision N_SetDestinationHoldStatus_Node1_action["Destination hold status is applied
to the cargo with appropriate
destination location identifiers"]:::main N_SetDestinationHoldStatus_Node1 -- Yes --> N_SetDestinationHoldStatus_Node1_action N_SetDestinationHoldStatus_Node1_action --> E_SetDestinationHoldStatus N_SetDestinationHoldStatus_Node0 -- No --> N_SetDestinationHoldStatus_Node1 N_SetDestinationHoldStatus_Node2{"The hold location is determined to
be at the destination"}:::decision N_SetDestinationHoldStatus_Node2_action["The system should set destination
hold status allowing border movement
but preventing final release until
examination"]:::main N_SetDestinationHoldStatus_Node2 -- Yes --> N_SetDestinationHoldStatus_Node2_action N_SetDestinationHoldStatus_Node2_action --> E_SetDestinationHoldStatus N_SetDestinationHoldStatus_Node1 -- No --> N_SetDestinationHoldStatus_Node2 N_SetDestinationHoldStatus_Node3{"The system determines that hold
codes apply to destination location"}:::decision N_SetDestinationHoldStatus_Node3_action["The system sets the cargo status to
destination hold and updates the
appropriate status flags"]:::main N_SetDestinationHoldStatus_Node3 -- Yes --> N_SetDestinationHoldStatus_Node3_action N_SetDestinationHoldStatus_Node3_action --> E_SetDestinationHoldStatus N_SetDestinationHoldStatus_Node2 -- No --> N_SetDestinationHoldStatus_Node3 N_SetDestinationHoldStatus_Node4{"Hold location is classified as
destination hold"}:::decision N_SetDestinationHoldStatus_Node4_action["System sets destination hold status
flag for the cargo"]:::main N_SetDestinationHoldStatus_Node4 -- Yes --> N_SetDestinationHoldStatus_Node4_action N_SetDestinationHoldStatus_Node4_action --> E_SetDestinationHoldStatus N_SetDestinationHoldStatus_Node3 -- No --> N_SetDestinationHoldStatus_Node4 N_SetDestinationHoldStatus_Node5{"The system processes the
destination hold code"}:::decision N_SetDestinationHoldStatus_Node5_action["The cargo destination hold flag is
set to true and destination hold
status is established"]:::main N_SetDestinationHoldStatus_Node5 -- Yes --> N_SetDestinationHoldStatus_Node5_action N_SetDestinationHoldStatus_Node5_action --> E_SetDestinationHoldStatus N_SetDestinationHoldStatus_Node4 -- No --> N_SetDestinationHoldStatus_Node5 N_SetDestinationHoldStatus_Node6{"The hold location is determined to
be at the destination not border"}:::decision N_SetDestinationHoldStatus_Node6_action["The system assigns destination hold
status to the cargo"]:::main N_SetDestinationHoldStatus_Node6 -- Yes --> N_SetDestinationHoldStatus_Node6_action N_SetDestinationHoldStatus_Node6_action --> E_SetDestinationHoldStatus N_SetDestinationHoldStatus_Node5 -- No --> N_SetDestinationHoldStatus_Node6 N_SetDestinationHoldStatus_Node7{"The cargo is at or destined for
destination processing location"}:::decision N_SetDestinationHoldStatus_Node7_action["The system sets destination hold
status flags and updates the cargo
status to reflect destination hold
conditions"]:::main N_SetDestinationHoldStatus_Node7 -- Yes --> N_SetDestinationHoldStatus_Node7_action N_SetDestinationHoldStatus_Node7_action --> E_SetDestinationHoldStatus N_SetDestinationHoldStatus_Node6 -- No --> N_SetDestinationHoldStatus_Node7 N_SetDestinationHoldStatus_Node7 -- No --> E_SetDestinationHoldStatus
destination as hold location"}:::decision N_SetDestinationHoldStatus_Node0_action["Destination hold status is set in
cargo record"]:::main N_SetDestinationHoldStatus_Node0 -- Yes --> N_SetDestinationHoldStatus_Node0_action N_SetDestinationHoldStatus_Node0_action --> E_SetDestinationHoldStatus S_SetDestinationHoldStatus --> N_SetDestinationHoldStatus_Node0 N_SetDestinationHoldStatus_Node1{"The system sets hold status for
destination location"}:::decision N_SetDestinationHoldStatus_Node1_action["Destination hold status is applied
to the cargo with appropriate
destination location identifiers"]:::main N_SetDestinationHoldStatus_Node1 -- Yes --> N_SetDestinationHoldStatus_Node1_action N_SetDestinationHoldStatus_Node1_action --> E_SetDestinationHoldStatus N_SetDestinationHoldStatus_Node0 -- No --> N_SetDestinationHoldStatus_Node1 N_SetDestinationHoldStatus_Node2{"The hold location is determined to
be at the destination"}:::decision N_SetDestinationHoldStatus_Node2_action["The system should set destination
hold status allowing border movement
but preventing final release until
examination"]:::main N_SetDestinationHoldStatus_Node2 -- Yes --> N_SetDestinationHoldStatus_Node2_action N_SetDestinationHoldStatus_Node2_action --> E_SetDestinationHoldStatus N_SetDestinationHoldStatus_Node1 -- No --> N_SetDestinationHoldStatus_Node2 N_SetDestinationHoldStatus_Node3{"The system determines that hold
codes apply to destination location"}:::decision N_SetDestinationHoldStatus_Node3_action["The system sets the cargo status to
destination hold and updates the
appropriate status flags"]:::main N_SetDestinationHoldStatus_Node3 -- Yes --> N_SetDestinationHoldStatus_Node3_action N_SetDestinationHoldStatus_Node3_action --> E_SetDestinationHoldStatus N_SetDestinationHoldStatus_Node2 -- No --> N_SetDestinationHoldStatus_Node3 N_SetDestinationHoldStatus_Node4{"Hold location is classified as
destination hold"}:::decision N_SetDestinationHoldStatus_Node4_action["System sets destination hold status
flag for the cargo"]:::main N_SetDestinationHoldStatus_Node4 -- Yes --> N_SetDestinationHoldStatus_Node4_action N_SetDestinationHoldStatus_Node4_action --> E_SetDestinationHoldStatus N_SetDestinationHoldStatus_Node3 -- No --> N_SetDestinationHoldStatus_Node4 N_SetDestinationHoldStatus_Node5{"The system processes the
destination hold code"}:::decision N_SetDestinationHoldStatus_Node5_action["The cargo destination hold flag is
set to true and destination hold
status is established"]:::main N_SetDestinationHoldStatus_Node5 -- Yes --> N_SetDestinationHoldStatus_Node5_action N_SetDestinationHoldStatus_Node5_action --> E_SetDestinationHoldStatus N_SetDestinationHoldStatus_Node4 -- No --> N_SetDestinationHoldStatus_Node5 N_SetDestinationHoldStatus_Node6{"The hold location is determined to
be at the destination not border"}:::decision N_SetDestinationHoldStatus_Node6_action["The system assigns destination hold
status to the cargo"]:::main N_SetDestinationHoldStatus_Node6 -- Yes --> N_SetDestinationHoldStatus_Node6_action N_SetDestinationHoldStatus_Node6_action --> E_SetDestinationHoldStatus N_SetDestinationHoldStatus_Node5 -- No --> N_SetDestinationHoldStatus_Node6 N_SetDestinationHoldStatus_Node7{"The cargo is at or destined for
destination processing location"}:::decision N_SetDestinationHoldStatus_Node7_action["The system sets destination hold
status flags and updates the cargo
status to reflect destination hold
conditions"]:::main N_SetDestinationHoldStatus_Node7 -- Yes --> N_SetDestinationHoldStatus_Node7_action N_SetDestinationHoldStatus_Node7_action --> E_SetDestinationHoldStatus N_SetDestinationHoldStatus_Node6 -- No --> N_SetDestinationHoldStatus_Node7 N_SetDestinationHoldStatus_Node7 -- No --> E_SetDestinationHoldStatus
File: GCX016.cbl
GIVEN:
A hold disposition code specifies destination location
WHEN:
Location determination identifies destination as hold location
THEN:
Destination hold status is set in cargo record
File: GCX016.cbl
GIVEN:
Hold codes are resolved and location validation determines destination location
WHEN:
The system sets hold status for destination location
THEN:
Destination hold status is applied to the cargo with appropriate destination location identifiers
File: GCX016.cbl
GIVEN:
A disposition code requires examination at destination
WHEN:
The hold location is determined to be at the destination
THEN:
The system should set destination hold status allowing border movement but preventing final release until examination
File: GCX016.cbl
GIVEN:
A cargo record requiring destination hold processing
WHEN:
The system determines that hold codes apply to destination location
THEN:
- The system sets the cargo status to destination hold
- Updates the appropriate status flags
File: GCX016.cbl
GIVEN:
Hold status is detected in cargo status array
WHEN:
Hold location is classified as destination hold
THEN:
System sets destination hold status flag for the cargo
File: GCX016.cbl
GIVEN:
A destination hold disposition code is identified in the status array
WHEN:
The system processes the destination hold code
THEN:
- The cargo destination hold flag is set to true
- Destination hold status is established
File: GCX016.cbl
GIVEN:
A cargo record with hold status present
WHEN:
The hold location is determined to be at the destination (not border)
THEN:
The system assigns destination hold status to the cargo
File: GCX016.cbl
GIVEN:
Unreleased cargo requires destination hold status
WHEN:
The cargo is at or destined for destination processing location
THEN:
- The system sets destination hold status flags
- Updates the cargo status to reflect destination hold conditions
β Consolidated Acceptance Criteria
- Location determination identifies both locations for hold → hold status is set for both border and destination in cargo record
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetBothLocationsHold(["Start Step"])
E_SetBothLocationsHold(["End Step"])
N_SetBothLocationsHold_Node0{"Location determination identifies
both locations for hold"}:::decision N_SetBothLocationsHold_Node0_action["Hold status is set for both border
and destination in cargo record"]:::main N_SetBothLocationsHold_Node0 -- Yes --> N_SetBothLocationsHold_Node0_action N_SetBothLocationsHold_Node0_action --> E_SetBothLocationsHold S_SetBothLocationsHold --> N_SetBothLocationsHold_Node0 N_SetBothLocationsHold_Node0 -- No --> E_SetBothLocationsHold
both locations for hold"}:::decision N_SetBothLocationsHold_Node0_action["Hold status is set for both border
and destination in cargo record"]:::main N_SetBothLocationsHold_Node0 -- Yes --> N_SetBothLocationsHold_Node0_action N_SetBothLocationsHold_Node0_action --> E_SetBothLocationsHold S_SetBothLocationsHold --> N_SetBothLocationsHold_Node0 N_SetBothLocationsHold_Node0 -- No --> E_SetBothLocationsHold
File: GCX016.cbl
GIVEN:
A hold disposition code affects both border and destination locations
WHEN:
Location determination identifies both locations for hold
THEN:
- Hold status is set for both border
- Destination in cargo record
β Consolidated Acceptance Criteria
- Release quantity is greater than or equal to total quantity → all hold statuses are cleared and cargo is marked as fully released
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ClearAllHolds(["Start Step"])
E_ClearAllHolds(["End Step"])
N_ClearAllHolds_Node0{"Release quantity is greater than or
equal to total quantity"}:::decision N_ClearAllHolds_Node0_action["All hold statuses are cleared and
cargo is marked as fully released"]:::main N_ClearAllHolds_Node0 -- Yes --> N_ClearAllHolds_Node0_action N_ClearAllHolds_Node0_action --> E_ClearAllHolds S_ClearAllHolds --> N_ClearAllHolds_Node0 N_ClearAllHolds_Node0 -- No --> E_ClearAllHolds
equal to total quantity"}:::decision N_ClearAllHolds_Node0_action["All hold statuses are cleared and
cargo is marked as fully released"]:::main N_ClearAllHolds_Node0 -- Yes --> N_ClearAllHolds_Node0_action N_ClearAllHolds_Node0_action --> E_ClearAllHolds S_ClearAllHolds --> N_ClearAllHolds_Node0 N_ClearAllHolds_Node0 -- No --> E_ClearAllHolds
File: GCX016.cbl
GIVEN:
Cargo has updated release quantities
WHEN:
Release quantity is greater than or equal to total quantity
THEN:
- All hold statuses are cleared
- Cargo is marked as fully released
β Consolidated Acceptance Criteria
- Release quantity is less than total quantity → partial release status (HOLDPCS) is set in cargo record
- The system determines final cargo state → the partial release status is set to indicate incomplete release of cargo
- Released quantity is less than total cargo quantity → system sets partial release status flag for the cargo
- The system processes the partial release condition → set the cargo status to partial release and calculate remaining quantity
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetPartialReleaseStatus(["Start Step"])
E_SetPartialReleaseStatus(["End Step"])
N_SetPartialReleaseStatus_Node0{"Release quantity is less than total
quantity"}:::decision N_SetPartialReleaseStatus_Node0_action["Partial release status HOLDPCS is
set in cargo record"]:::main N_SetPartialReleaseStatus_Node0 -- Yes --> N_SetPartialReleaseStatus_Node0_action N_SetPartialReleaseStatus_Node0_action --> E_SetPartialReleaseStatus S_SetPartialReleaseStatus --> N_SetPartialReleaseStatus_Node0 N_SetPartialReleaseStatus_Node1{"The system determines final cargo
state"}:::decision N_SetPartialReleaseStatus_Node1_action["The partial release status is set
to indicate incomplete release of
cargo"]:::main N_SetPartialReleaseStatus_Node1 -- Yes --> N_SetPartialReleaseStatus_Node1_action N_SetPartialReleaseStatus_Node1_action --> E_SetPartialReleaseStatus N_SetPartialReleaseStatus_Node0 -- No --> N_SetPartialReleaseStatus_Node1 N_SetPartialReleaseStatus_Node2{"Released quantity is less than
total cargo quantity"}:::decision N_SetPartialReleaseStatus_Node2_action["System sets partial release status
flag for the cargo"]:::main N_SetPartialReleaseStatus_Node2 -- Yes --> N_SetPartialReleaseStatus_Node2_action N_SetPartialReleaseStatus_Node2_action --> E_SetPartialReleaseStatus N_SetPartialReleaseStatus_Node1 -- No --> N_SetPartialReleaseStatus_Node2 N_SetPartialReleaseStatus_Node3{"The system processes the partial
release condition"}:::decision N_SetPartialReleaseStatus_Node3_action["Set the cargo status to partial
release and calculate remaining
quantity"]:::main N_SetPartialReleaseStatus_Node3 -- Yes --> N_SetPartialReleaseStatus_Node3_action N_SetPartialReleaseStatus_Node3_action --> E_SetPartialReleaseStatus N_SetPartialReleaseStatus_Node2 -- No --> N_SetPartialReleaseStatus_Node3 N_SetPartialReleaseStatus_Node3 -- No --> E_SetPartialReleaseStatus
quantity"}:::decision N_SetPartialReleaseStatus_Node0_action["Partial release status HOLDPCS is
set in cargo record"]:::main N_SetPartialReleaseStatus_Node0 -- Yes --> N_SetPartialReleaseStatus_Node0_action N_SetPartialReleaseStatus_Node0_action --> E_SetPartialReleaseStatus S_SetPartialReleaseStatus --> N_SetPartialReleaseStatus_Node0 N_SetPartialReleaseStatus_Node1{"The system determines final cargo
state"}:::decision N_SetPartialReleaseStatus_Node1_action["The partial release status is set
to indicate incomplete release of
cargo"]:::main N_SetPartialReleaseStatus_Node1 -- Yes --> N_SetPartialReleaseStatus_Node1_action N_SetPartialReleaseStatus_Node1_action --> E_SetPartialReleaseStatus N_SetPartialReleaseStatus_Node0 -- No --> N_SetPartialReleaseStatus_Node1 N_SetPartialReleaseStatus_Node2{"Released quantity is less than
total cargo quantity"}:::decision N_SetPartialReleaseStatus_Node2_action["System sets partial release status
flag for the cargo"]:::main N_SetPartialReleaseStatus_Node2 -- Yes --> N_SetPartialReleaseStatus_Node2_action N_SetPartialReleaseStatus_Node2_action --> E_SetPartialReleaseStatus N_SetPartialReleaseStatus_Node1 -- No --> N_SetPartialReleaseStatus_Node2 N_SetPartialReleaseStatus_Node3{"The system processes the partial
release condition"}:::decision N_SetPartialReleaseStatus_Node3_action["Set the cargo status to partial
release and calculate remaining
quantity"]:::main N_SetPartialReleaseStatus_Node3 -- Yes --> N_SetPartialReleaseStatus_Node3_action N_SetPartialReleaseStatus_Node3_action --> E_SetPartialReleaseStatus N_SetPartialReleaseStatus_Node2 -- No --> N_SetPartialReleaseStatus_Node3 N_SetPartialReleaseStatus_Node3 -- No --> E_SetPartialReleaseStatus
File: GCX016.cbl
GIVEN:
Cargo has updated release quantities
WHEN:
Release quantity is less than total quantity
THEN:
Partial release status (HOLDPCS) is set in cargo record
File: GCX016.cbl
GIVEN:
Release quantity is less than total cargo quantity
WHEN:
The system determines final cargo state
THEN:
The partial release status is set to indicate incomplete release of cargo
File: GCX016.cbl
GIVEN:
Release quantities have been validated
WHEN:
Released quantity is less than total cargo quantity
THEN:
System sets partial release status flag for the cargo
File: GCX016.cbl
GIVEN:
A cargo record where released quantity is greater than zero but less than total quantity
WHEN:
The system processes the partial release condition
THEN:
- Set the cargo status to partial release
- Calculate remaining quantity
β Consolidated Acceptance Criteria
- Arrival disposition code is processed → current date and time are set as arrival date in cargo record
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetArrivalDate(["Start Step"])
E_SetArrivalDate(["End Step"])
N_SetArrivalDate_Node0{"Arrival disposition code is
processed"}:::decision N_SetArrivalDate_Node0_action["Current date and time are set as
arrival date in cargo record"]:::main N_SetArrivalDate_Node0 -- Yes --> N_SetArrivalDate_Node0_action N_SetArrivalDate_Node0_action --> E_SetArrivalDate S_SetArrivalDate --> N_SetArrivalDate_Node0 N_SetArrivalDate_Node0 -- No --> E_SetArrivalDate
processed"}:::decision N_SetArrivalDate_Node0_action["Current date and time are set as
arrival date in cargo record"]:::main N_SetArrivalDate_Node0 -- Yes --> N_SetArrivalDate_Node0_action N_SetArrivalDate_Node0_action --> E_SetArrivalDate S_SetArrivalDate --> N_SetArrivalDate_Node0 N_SetArrivalDate_Node0 -- No --> E_SetArrivalDate
File: GCX016.cbl
GIVEN:
Cargo arrival status is being updated
WHEN:
Arrival disposition code is processed
THEN:
- Current date
- Time are set as arrival date in cargo record
β Consolidated Acceptance Criteria
- Previous status changes need to be reversed → previous bond date is restored in cargo record
- The system restores previous bond date → the system updates the cargo record with the previous bond start date information
- The system processes bond date restoration → the previous bond date is restored to re-establish the cargo's bond timeline
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RestorePreviousBondDate(["Start Step"])
E_RestorePreviousBondDate(["End Step"])
N_RestorePreviousBondDate_Node0{"Previous status changes need to be
reversed"}:::decision N_RestorePreviousBondDate_Node0_action["Previous bond date is restored in
cargo record"]:::main N_RestorePreviousBondDate_Node0 -- Yes --> N_RestorePreviousBondDate_Node0_action N_RestorePreviousBondDate_Node0_action --> E_RestorePreviousBondDate S_RestorePreviousBondDate --> N_RestorePreviousBondDate_Node0 N_RestorePreviousBondDate_Node1{"The system restores previous bond
date"}:::decision N_RestorePreviousBondDate_Node1_action["The system updates the cargo record
with the previous bond start date
information"]:::main N_RestorePreviousBondDate_Node1 -- Yes --> N_RestorePreviousBondDate_Node1_action N_RestorePreviousBondDate_Node1_action --> E_RestorePreviousBondDate N_RestorePreviousBondDate_Node0 -- No --> N_RestorePreviousBondDate_Node1 N_RestorePreviousBondDate_Node2{"The system processes bond date
restoration"}:::decision N_RestorePreviousBondDate_Node2_action["The previous bond date is restored
to re-establish the cargo s bond
timeline"]:::main N_RestorePreviousBondDate_Node2 -- Yes --> N_RestorePreviousBondDate_Node2_action N_RestorePreviousBondDate_Node2_action --> E_RestorePreviousBondDate N_RestorePreviousBondDate_Node1 -- No --> N_RestorePreviousBondDate_Node2 N_RestorePreviousBondDate_Node2 -- No --> E_RestorePreviousBondDate
reversed"}:::decision N_RestorePreviousBondDate_Node0_action["Previous bond date is restored in
cargo record"]:::main N_RestorePreviousBondDate_Node0 -- Yes --> N_RestorePreviousBondDate_Node0_action N_RestorePreviousBondDate_Node0_action --> E_RestorePreviousBondDate S_RestorePreviousBondDate --> N_RestorePreviousBondDate_Node0 N_RestorePreviousBondDate_Node1{"The system restores previous bond
date"}:::decision N_RestorePreviousBondDate_Node1_action["The system updates the cargo record
with the previous bond start date
information"]:::main N_RestorePreviousBondDate_Node1 -- Yes --> N_RestorePreviousBondDate_Node1_action N_RestorePreviousBondDate_Node1_action --> E_RestorePreviousBondDate N_RestorePreviousBondDate_Node0 -- No --> N_RestorePreviousBondDate_Node1 N_RestorePreviousBondDate_Node2{"The system processes bond date
restoration"}:::decision N_RestorePreviousBondDate_Node2_action["The previous bond date is restored
to re-establish the cargo s bond
timeline"]:::main N_RestorePreviousBondDate_Node2 -- Yes --> N_RestorePreviousBondDate_Node2_action N_RestorePreviousBondDate_Node2_action --> E_RestorePreviousBondDate N_RestorePreviousBondDate_Node1 -- No --> N_RestorePreviousBondDate_Node2 N_RestorePreviousBondDate_Node2 -- No --> E_RestorePreviousBondDate
File: GCX016.cbl
GIVEN:
A cancellation disposition code is processed
WHEN:
Previous status changes need to be reversed
THEN:
Previous bond date is restored in cargo record
File: GCX016.cbl
GIVEN:
A cargo record with cleared arrival status and retrieved previous bond start date
WHEN:
The system restores previous bond date
THEN:
The system updates the cargo record with the previous bond start date information
File: GCX016.cbl
GIVEN:
Export status has been cleared from cargo
WHEN:
The system processes bond date restoration
THEN:
The previous bond date is restored to re-establish the cargo's bond timeline
β Consolidated Acceptance Criteria
- All disposition code processing is complete → cargo record status fields are updated with new status information
- The system updates cargo record status in GCCC-CARGO-ROOT → cargo record reflects updated export status and cleared destination information
- Completing the disposition code 95 processing → the cargo record status is updated to reflect the bond clearing action
- The cargo record needs to reflect the status changes → the system updates the cargo record status based on the remaining disposition codes in the status array
- The system updates the cargo record status → update GCCC-CARGO-ROOT record with proceed status, cleared hold flags, and updated border arrival date
- The system updates cargo record status → the system saves the updated cargo record with cancelled arrival status and restored bond information
- The system updates the cargo record → the cargo status is updated to reflect the export cancellation and restored bond status
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UpdateCargoRecordStatus(["Start Step"])
E_UpdateCargoRecordStatus(["End Step"])
N_UpdateCargoRecordStatus_Node0{"All disposition code processing is
complete"}:::decision N_UpdateCargoRecordStatus_Node0_action["Cargo record status fields are
updated with new status information"]:::main N_UpdateCargoRecordStatus_Node0 -- Yes --> N_UpdateCargoRecordStatus_Node0_action N_UpdateCargoRecordStatus_Node0_action --> E_UpdateCargoRecordStatus S_UpdateCargoRecordStatus --> N_UpdateCargoRecordStatus_Node0 N_UpdateCargoRecordStatus_Node1{"The system updates cargo record
status in GCCC-CARGO-ROOT"}:::decision N_UpdateCargoRecordStatus_Node1_action["Cargo record reflects updated
export status and cleared
destination information"]:::main N_UpdateCargoRecordStatus_Node1 -- Yes --> N_UpdateCargoRecordStatus_Node1_action N_UpdateCargoRecordStatus_Node1_action --> E_UpdateCargoRecordStatus N_UpdateCargoRecordStatus_Node0 -- No --> N_UpdateCargoRecordStatus_Node1 N_UpdateCargoRecordStatus_Node2{"Completing the disposition code 95
processing"}:::decision N_UpdateCargoRecordStatus_Node2_action["The cargo record status is updated
to reflect the bond clearing action"]:::main N_UpdateCargoRecordStatus_Node2 -- Yes --> N_UpdateCargoRecordStatus_Node2_action N_UpdateCargoRecordStatus_Node2_action --> E_UpdateCargoRecordStatus N_UpdateCargoRecordStatus_Node1 -- No --> N_UpdateCargoRecordStatus_Node2 N_UpdateCargoRecordStatus_Node3{"The cargo record needs to reflect
the status changes"}:::decision N_UpdateCargoRecordStatus_Node3_action["The system updates the cargo record
status based on the remaining
disposition codes in the status
array"]:::main N_UpdateCargoRecordStatus_Node3 -- Yes --> N_UpdateCargoRecordStatus_Node3_action N_UpdateCargoRecordStatus_Node3_action --> E_UpdateCargoRecordStatus N_UpdateCargoRecordStatus_Node2 -- No --> N_UpdateCargoRecordStatus_Node3 N_UpdateCargoRecordStatus_Node4{"The system updates the cargo record
status"}:::decision N_UpdateCargoRecordStatus_Node4_action["Update GCCC-CARGO-ROOT record with
proceed status, cleared hold flags,
and updated border arrival date"]:::main N_UpdateCargoRecordStatus_Node4 -- Yes --> N_UpdateCargoRecordStatus_Node4_action N_UpdateCargoRecordStatus_Node4_action --> E_UpdateCargoRecordStatus N_UpdateCargoRecordStatus_Node3 -- No --> N_UpdateCargoRecordStatus_Node4 N_UpdateCargoRecordStatus_Node5{"The system updates cargo record
status"}:::decision N_UpdateCargoRecordStatus_Node5_action["The system saves the updated cargo
record with cancelled arrival status
and restored bond information"]:::main N_UpdateCargoRecordStatus_Node5 -- Yes --> N_UpdateCargoRecordStatus_Node5_action N_UpdateCargoRecordStatus_Node5_action --> E_UpdateCargoRecordStatus N_UpdateCargoRecordStatus_Node4 -- No --> N_UpdateCargoRecordStatus_Node5 N_UpdateCargoRecordStatus_Node6{"The system updates the cargo record"}:::decision N_UpdateCargoRecordStatus_Node6_action["The cargo status is updated to
reflect the export cancellation and
restored bond status"]:::main N_UpdateCargoRecordStatus_Node6 -- Yes --> N_UpdateCargoRecordStatus_Node6_action N_UpdateCargoRecordStatus_Node6_action --> E_UpdateCargoRecordStatus N_UpdateCargoRecordStatus_Node5 -- No --> N_UpdateCargoRecordStatus_Node6 N_UpdateCargoRecordStatus_Node6 -- No --> E_UpdateCargoRecordStatus
complete"}:::decision N_UpdateCargoRecordStatus_Node0_action["Cargo record status fields are
updated with new status information"]:::main N_UpdateCargoRecordStatus_Node0 -- Yes --> N_UpdateCargoRecordStatus_Node0_action N_UpdateCargoRecordStatus_Node0_action --> E_UpdateCargoRecordStatus S_UpdateCargoRecordStatus --> N_UpdateCargoRecordStatus_Node0 N_UpdateCargoRecordStatus_Node1{"The system updates cargo record
status in GCCC-CARGO-ROOT"}:::decision N_UpdateCargoRecordStatus_Node1_action["Cargo record reflects updated
export status and cleared
destination information"]:::main N_UpdateCargoRecordStatus_Node1 -- Yes --> N_UpdateCargoRecordStatus_Node1_action N_UpdateCargoRecordStatus_Node1_action --> E_UpdateCargoRecordStatus N_UpdateCargoRecordStatus_Node0 -- No --> N_UpdateCargoRecordStatus_Node1 N_UpdateCargoRecordStatus_Node2{"Completing the disposition code 95
processing"}:::decision N_UpdateCargoRecordStatus_Node2_action["The cargo record status is updated
to reflect the bond clearing action"]:::main N_UpdateCargoRecordStatus_Node2 -- Yes --> N_UpdateCargoRecordStatus_Node2_action N_UpdateCargoRecordStatus_Node2_action --> E_UpdateCargoRecordStatus N_UpdateCargoRecordStatus_Node1 -- No --> N_UpdateCargoRecordStatus_Node2 N_UpdateCargoRecordStatus_Node3{"The cargo record needs to reflect
the status changes"}:::decision N_UpdateCargoRecordStatus_Node3_action["The system updates the cargo record
status based on the remaining
disposition codes in the status
array"]:::main N_UpdateCargoRecordStatus_Node3 -- Yes --> N_UpdateCargoRecordStatus_Node3_action N_UpdateCargoRecordStatus_Node3_action --> E_UpdateCargoRecordStatus N_UpdateCargoRecordStatus_Node2 -- No --> N_UpdateCargoRecordStatus_Node3 N_UpdateCargoRecordStatus_Node4{"The system updates the cargo record
status"}:::decision N_UpdateCargoRecordStatus_Node4_action["Update GCCC-CARGO-ROOT record with
proceed status, cleared hold flags,
and updated border arrival date"]:::main N_UpdateCargoRecordStatus_Node4 -- Yes --> N_UpdateCargoRecordStatus_Node4_action N_UpdateCargoRecordStatus_Node4_action --> E_UpdateCargoRecordStatus N_UpdateCargoRecordStatus_Node3 -- No --> N_UpdateCargoRecordStatus_Node4 N_UpdateCargoRecordStatus_Node5{"The system updates cargo record
status"}:::decision N_UpdateCargoRecordStatus_Node5_action["The system saves the updated cargo
record with cancelled arrival status
and restored bond information"]:::main N_UpdateCargoRecordStatus_Node5 -- Yes --> N_UpdateCargoRecordStatus_Node5_action N_UpdateCargoRecordStatus_Node5_action --> E_UpdateCargoRecordStatus N_UpdateCargoRecordStatus_Node4 -- No --> N_UpdateCargoRecordStatus_Node5 N_UpdateCargoRecordStatus_Node6{"The system updates the cargo record"}:::decision N_UpdateCargoRecordStatus_Node6_action["The cargo status is updated to
reflect the export cancellation and
restored bond status"]:::main N_UpdateCargoRecordStatus_Node6 -- Yes --> N_UpdateCargoRecordStatus_Node6_action N_UpdateCargoRecordStatus_Node6_action --> E_UpdateCargoRecordStatus N_UpdateCargoRecordStatus_Node5 -- No --> N_UpdateCargoRecordStatus_Node6 N_UpdateCargoRecordStatus_Node6 -- No --> E_UpdateCargoRecordStatus
File: GCX016.cbl
GIVEN:
Status array has been updated with new disposition codes
WHEN:
All disposition code processing is complete
THEN:
Cargo record status fields are updated with new status information
File: GCX016.cbl
GIVEN:
Export status flag is set and destination index is cleared
WHEN:
The system updates cargo record status in GCCC-CARGO-ROOT
THEN:
- Cargo record reflects updated export status
- Cleared destination information
File: GCX016.cbl
GIVEN:
All bond-related fields have been cleared from the cargo record
WHEN:
Completing the disposition code 95 processing
THEN:
The cargo record status is updated to reflect the bond clearing action
File: GCX016.cbl
GIVEN:
Disposition codes have been removed from the status array AND the database has been updated
WHEN:
The cargo record needs to reflect the status changes
THEN:
The system updates the cargo record status based on the remaining disposition codes in the status array
File: GCX016.cbl
GIVEN:
Hold status flags have been cleared and proceed status flag is set with updated border arrival date
WHEN:
The system updates the cargo record status
THEN:
Update GCCC-CARGO-ROOT record with proceed status, cleared hold flags, and updated border arrival date
File: GCX016.cbl
GIVEN:
A cargo record with restored previous bond date
WHEN:
The system updates cargo record status
THEN:
- The system saves the updated cargo record with cancelled arrival status
- Restored bond information
File: GCX016.cbl
GIVEN:
Destination index has been set with age information
WHEN:
The system updates the cargo record
THEN:
- The cargo status is updated to reflect the export cancellation
- Restored bond status
β Consolidated Acceptance Criteria
- All status processing is complete → updated status array is saved back to S09 segments in database
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SaveStatusArraytoDatabase(["Start Step"])
E_SaveStatusArraytoDatabase(["End Step"])
N_SaveStatusArraytoDatabase_Node0{"All status processing is complete"}:::decision
N_SaveStatusArraytoDatabase_Node0_action["Updated status array is saved back
to S09 segments in database"]:::main N_SaveStatusArraytoDatabase_Node0 -- Yes --> N_SaveStatusArraytoDatabase_Node0_action N_SaveStatusArraytoDatabase_Node0_action --> E_SaveStatusArraytoDatabase S_SaveStatusArraytoDatabase --> N_SaveStatusArraytoDatabase_Node0 N_SaveStatusArraytoDatabase_Node0 -- No --> E_SaveStatusArraytoDatabase
to S09 segments in database"]:::main N_SaveStatusArraytoDatabase_Node0 -- Yes --> N_SaveStatusArraytoDatabase_Node0_action N_SaveStatusArraytoDatabase_Node0_action --> E_SaveStatusArraytoDatabase S_SaveStatusArraytoDatabase --> N_SaveStatusArraytoDatabase_Node0 N_SaveStatusArraytoDatabase_Node0 -- No --> E_SaveStatusArraytoDatabase
File: GCX016.cbl
GIVEN:
Status array contains updated disposition codes
WHEN:
All status processing is complete
THEN:
Updated status array is saved back to S09 segments in database
β Consolidated Acceptance Criteria
- The status array analysis process begins → all cargo state flags (empty, held, released, PTT, proceed, arrival, export, FDA hold) are set to false/off and all quantity counters are reset to zero
- The system begins status array analysis → all cargo state flags (hold, release, PTT, proceed, arrival, export, FDA) are set to false and quantities are initialized to zero
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_InitializeCargoStateFlags(["Start Step"])
E_InitializeCargoStateFlags(["End Step"])
N_InitializeCargoStateFlags_Node0{"The status array analysis process
begins"}:::decision N_InitializeCargoStateFlags_Node0_action["All cargo state flags empty, held,
released, PTT, proceed, arrival,
export, FDA hold are set to falseoff
and all quantity counters are reset
to zero"]:::main N_InitializeCargoStateFlags_Node0 -- Yes --> N_InitializeCargoStateFlags_Node0_action N_InitializeCargoStateFlags_Node0_action --> E_InitializeCargoStateFlags S_InitializeCargoStateFlags --> N_InitializeCargoStateFlags_Node0 N_InitializeCargoStateFlags_Node1{"The system begins status array
analysis"}:::decision N_InitializeCargoStateFlags_Node1_action["All cargo state flags hold,
release, PTT, proceed, arrival,
export, FDA are set to false and
quantities are initialized to zero"]:::main N_InitializeCargoStateFlags_Node1 -- Yes --> N_InitializeCargoStateFlags_Node1_action N_InitializeCargoStateFlags_Node1_action --> E_InitializeCargoStateFlags N_InitializeCargoStateFlags_Node0 -- No --> N_InitializeCargoStateFlags_Node1 N_InitializeCargoStateFlags_Node1 -- No --> E_InitializeCargoStateFlags
begins"}:::decision N_InitializeCargoStateFlags_Node0_action["All cargo state flags empty, held,
released, PTT, proceed, arrival,
export, FDA hold are set to falseoff
and all quantity counters are reset
to zero"]:::main N_InitializeCargoStateFlags_Node0 -- Yes --> N_InitializeCargoStateFlags_Node0_action N_InitializeCargoStateFlags_Node0_action --> E_InitializeCargoStateFlags S_InitializeCargoStateFlags --> N_InitializeCargoStateFlags_Node0 N_InitializeCargoStateFlags_Node1{"The system begins status array
analysis"}:::decision N_InitializeCargoStateFlags_Node1_action["All cargo state flags hold,
release, PTT, proceed, arrival,
export, FDA are set to false and
quantities are initialized to zero"]:::main N_InitializeCargoStateFlags_Node1 -- Yes --> N_InitializeCargoStateFlags_Node1_action N_InitializeCargoStateFlags_Node1_action --> E_InitializeCargoStateFlags N_InitializeCargoStateFlags_Node0 -- No --> N_InitializeCargoStateFlags_Node1 N_InitializeCargoStateFlags_Node1 -- No --> E_InitializeCargoStateFlags
File: GCX016.cbl
GIVEN:
A cargo record requires status analysis
WHEN:
The status array analysis process begins
THEN:
- All cargo state flags (empty, held, released, ptt, proceed, arrival, export, fda hold) are set to false/off
- All quantity counters are reset to zero
File: GCX016.cbl
GIVEN:
A cargo status analysis process is starting
WHEN:
The system begins status array analysis
THEN:
- All cargo state flags (hold, release, ptt, proceed, arrival, export, fda) are set to false
- Quantities are initialized to zero
β Consolidated Acceptance Criteria
- Status analysis is performed → each array element is examined sequentially until all elements are processed
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ScanS09AStatusArrayElements(["Start Step"])
E_ScanS09AStatusArrayElements(["End Step"])
N_ScanS09AStatusArrayElements_Node0{"Status analysis is performed"}:::decision
N_ScanS09AStatusArrayElements_Node0_action["Each array element is examined
sequentially until all elements are
processed"]:::main N_ScanS09AStatusArrayElements_Node0 -- Yes --> N_ScanS09AStatusArrayElements_Node0_action N_ScanS09AStatusArrayElements_Node0_action --> E_ScanS09AStatusArrayElements S_ScanS09AStatusArrayElements --> N_ScanS09AStatusArrayElements_Node0 N_ScanS09AStatusArrayElements_Node0 -- No --> E_ScanS09AStatusArrayElements
sequentially until all elements are
processed"]:::main N_ScanS09AStatusArrayElements_Node0 -- Yes --> N_ScanS09AStatusArrayElements_Node0_action N_ScanS09AStatusArrayElements_Node0_action --> E_ScanS09AStatusArrayElements S_ScanS09AStatusArrayElements --> N_ScanS09AStatusArrayElements_Node0 N_ScanS09AStatusArrayElements_Node0 -- No --> E_ScanS09AStatusArrayElements
File: GCX016.cbl
GIVEN:
The S09A status array contains cargo disposition codes
WHEN:
Status analysis is performed
THEN:
Each array element is examined sequentially until all elements are processed
β Consolidated Acceptance Criteria
- The disposition code type is evaluated → if the code is classified as a hold type in the disposition code table, the hold status flag is set to true
- The code is checked against hold code criteria → the system determines if the code represents a hold condition and sets the hold status flag accordingly
- The system checks if the code indicates a hold status → if the code represents a hold condition, set hold status flag to true
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_HoldCode(["Start Step"])
E_HoldCode(["End Step"])
N_HoldCode_Node0{"The disposition code type is
evaluated"}:::decision N_HoldCode_Node0_action["If the code is classified as a hold
type in the disposition code table,
the hold status flag is set to true"]:::main N_HoldCode_Node0 -- Yes --> N_HoldCode_Node0_action N_HoldCode_Node0_action --> E_HoldCode S_HoldCode --> N_HoldCode_Node0 N_HoldCode_Node1{"The code is checked against hold
code criteria"}:::decision N_HoldCode_Node1_action["The system determines if the code
represents a hold condition and sets
the hold status flag accordingly"]:::main N_HoldCode_Node1 -- Yes --> N_HoldCode_Node1_action N_HoldCode_Node1_action --> E_HoldCode N_HoldCode_Node0 -- No --> N_HoldCode_Node1 N_HoldCode_Node2{"The system checks if the code
indicates a hold status"}:::decision N_HoldCode_Node2_action["If the code represents a hold
condition, set hold status flag to
true"]:::main N_HoldCode_Node2 -- Yes --> N_HoldCode_Node2_action N_HoldCode_Node2_action --> E_HoldCode N_HoldCode_Node1 -- No --> N_HoldCode_Node2 N_HoldCode_Node2 -- No --> E_HoldCode
evaluated"}:::decision N_HoldCode_Node0_action["If the code is classified as a hold
type in the disposition code table,
the hold status flag is set to true"]:::main N_HoldCode_Node0 -- Yes --> N_HoldCode_Node0_action N_HoldCode_Node0_action --> E_HoldCode S_HoldCode --> N_HoldCode_Node0 N_HoldCode_Node1{"The code is checked against hold
code criteria"}:::decision N_HoldCode_Node1_action["The system determines if the code
represents a hold condition and sets
the hold status flag accordingly"]:::main N_HoldCode_Node1 -- Yes --> N_HoldCode_Node1_action N_HoldCode_Node1_action --> E_HoldCode N_HoldCode_Node0 -- No --> N_HoldCode_Node1 N_HoldCode_Node2{"The system checks if the code
indicates a hold status"}:::decision N_HoldCode_Node2_action["If the code represents a hold
condition, set hold status flag to
true"]:::main N_HoldCode_Node2 -- Yes --> N_HoldCode_Node2_action N_HoldCode_Node2_action --> E_HoldCode N_HoldCode_Node1 -- No --> N_HoldCode_Node2 N_HoldCode_Node2 -- No --> E_HoldCode
File: GCX016.cbl
GIVEN:
A disposition code from the S09A array is being examined
WHEN:
The disposition code type is evaluated
THEN:
If the code is classified as a hold type in the disposition code table, the hold status flag is set to true
File: GCX016.cbl
GIVEN:
A disposition code is being evaluated from the status array
WHEN:
The code is checked against hold code criteria
THEN:
- The system determines if the code represents a hold condition
- Sets the hold status flag accordingly
File: GCX016.cbl
GIVEN:
A disposition code is being analyzed
WHEN:
The system checks if the code indicates a hold status
THEN:
If the code represents a hold condition, set hold status flag to true
β Consolidated Acceptance Criteria
- The hold location is determined → if the hold applies at the border, set border hold flag to true, otherwise if the hold applies at destination, set destination hold flag to true
- If the hold location → the hold is classified as either border hold or destination hold based on the disposition code characteristics
- The system determines the hold location → the hold is classified as either border hold or destination hold based on the specific code value
- If the cargo's current location, destination, and disposition code requirements → the system determines whether to apply border hold, destination hold, or both based on the cargo's routing and customs requirements
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_BorderorDestinationHold(["Start Step"])
E_BorderorDestinationHold(["End Step"])
N_BorderorDestinationHold_Node0{"The hold location is determined"}:::decision
N_BorderorDestinationHold_Node0_action["If the hold applies at the border,
set border hold flag to true,
otherwise if the hold applies at
destination, set destination hold
flag to true"]:::main N_BorderorDestinationHold_Node0 -- Yes --> N_BorderorDestinationHold_Node0_action N_BorderorDestinationHold_Node0_action --> E_BorderorDestinationHold S_BorderorDestinationHold --> N_BorderorDestinationHold_Node0 N_BorderorDestinationHold_Node1{"The system evaluates the hold
location"}:::decision N_BorderorDestinationHold_Node1_action["The hold is classified as either
border hold or destination hold
based on the disposition code
characteristics"]:::main N_BorderorDestinationHold_Node1 -- Yes --> N_BorderorDestinationHold_Node1_action N_BorderorDestinationHold_Node1_action --> E_BorderorDestinationHold N_BorderorDestinationHold_Node0 -- No --> N_BorderorDestinationHold_Node1 N_BorderorDestinationHold_Node2{"The system determines the hold
location"}:::decision N_BorderorDestinationHold_Node2_action["The hold is classified as either
border hold or destination hold
based on the specific code value"]:::main N_BorderorDestinationHold_Node2 -- Yes --> N_BorderorDestinationHold_Node2_action N_BorderorDestinationHold_Node2_action --> E_BorderorDestinationHold N_BorderorDestinationHold_Node1 -- No --> N_BorderorDestinationHold_Node2 N_BorderorDestinationHold_Node3{"The system evaluates the cargo s
current location, destination, and
disposition code requirements"}:::decision N_BorderorDestinationHold_Node3_action["The system determines whether to
apply border hold, destination hold,
or both based on the cargo s routing
and customs requirements"]:::main N_BorderorDestinationHold_Node3 -- Yes --> N_BorderorDestinationHold_Node3_action N_BorderorDestinationHold_Node3_action --> E_BorderorDestinationHold N_BorderorDestinationHold_Node2 -- No --> N_BorderorDestinationHold_Node3 N_BorderorDestinationHold_Node3 -- No --> E_BorderorDestinationHold
set border hold flag to true,
otherwise if the hold applies at
destination, set destination hold
flag to true"]:::main N_BorderorDestinationHold_Node0 -- Yes --> N_BorderorDestinationHold_Node0_action N_BorderorDestinationHold_Node0_action --> E_BorderorDestinationHold S_BorderorDestinationHold --> N_BorderorDestinationHold_Node0 N_BorderorDestinationHold_Node1{"The system evaluates the hold
location"}:::decision N_BorderorDestinationHold_Node1_action["The hold is classified as either
border hold or destination hold
based on the disposition code
characteristics"]:::main N_BorderorDestinationHold_Node1 -- Yes --> N_BorderorDestinationHold_Node1_action N_BorderorDestinationHold_Node1_action --> E_BorderorDestinationHold N_BorderorDestinationHold_Node0 -- No --> N_BorderorDestinationHold_Node1 N_BorderorDestinationHold_Node2{"The system determines the hold
location"}:::decision N_BorderorDestinationHold_Node2_action["The hold is classified as either
border hold or destination hold
based on the specific code value"]:::main N_BorderorDestinationHold_Node2 -- Yes --> N_BorderorDestinationHold_Node2_action N_BorderorDestinationHold_Node2_action --> E_BorderorDestinationHold N_BorderorDestinationHold_Node1 -- No --> N_BorderorDestinationHold_Node2 N_BorderorDestinationHold_Node3{"The system evaluates the cargo s
current location, destination, and
disposition code requirements"}:::decision N_BorderorDestinationHold_Node3_action["The system determines whether to
apply border hold, destination hold,
or both based on the cargo s routing
and customs requirements"]:::main N_BorderorDestinationHold_Node3 -- Yes --> N_BorderorDestinationHold_Node3_action N_BorderorDestinationHold_Node3_action --> E_BorderorDestinationHold N_BorderorDestinationHold_Node2 -- No --> N_BorderorDestinationHold_Node3 N_BorderorDestinationHold_Node3 -- No --> E_BorderorDestinationHold
File: GCX016.cbl
GIVEN:
A disposition code has been identified as a hold type
WHEN:
The hold location is determined
THEN:
If the hold applies at the border, set border hold flag to true, otherwise if the hold applies at destination, set destination hold flag to true
File: GCX016.cbl
GIVEN:
A hold disposition code has been identified
WHEN:
The system evaluates the hold location
THEN:
The hold is classified as either border hold or destination hold based on the disposition code characteristics
File: GCX016.cbl
GIVEN:
A hold status code has been identified
WHEN:
The system determines the hold location
THEN:
The hold is classified as either border hold or destination hold based on the specific code value
File: GCX016.cbl
GIVEN:
Cargo requires hold status as part of unrelease processing
WHEN:
The system evaluates the cargo's current location, destination, and disposition code requirements
THEN:
- The system determines whether to apply border hold, destination hold, or both based on the cargo's routing
- Customs requirements
β Consolidated Acceptance Criteria
- The disposition code type is evaluated → if the code is classified as a release type in the disposition code table, the release status flag is set to true
- The code is checked against release code criteria → the system determines if the code represents a release condition and sets the release status flag accordingly
- The system checks if the code indicates a release status → if the code represents a release condition, proceed with release processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ReleaseCode(["Start Step"])
E_ReleaseCode(["End Step"])
N_ReleaseCode_Node0{"The disposition code type is
evaluated"}:::decision N_ReleaseCode_Node0_action["If the code is classified as a
release type in the disposition code
table, the release status flag is
set to true"]:::main N_ReleaseCode_Node0 -- Yes --> N_ReleaseCode_Node0_action N_ReleaseCode_Node0_action --> E_ReleaseCode S_ReleaseCode --> N_ReleaseCode_Node0 N_ReleaseCode_Node1{"The code is checked against release
code criteria"}:::decision N_ReleaseCode_Node1_action["The system determines if the code
represents a release condition and
sets the release status flag
accordingly"]:::main N_ReleaseCode_Node1 -- Yes --> N_ReleaseCode_Node1_action N_ReleaseCode_Node1_action --> E_ReleaseCode N_ReleaseCode_Node0 -- No --> N_ReleaseCode_Node1 N_ReleaseCode_Node2{"The system checks if the code
indicates a release status"}:::decision N_ReleaseCode_Node2_action["If the code represents a release
condition, proceed with release
processing"]:::main N_ReleaseCode_Node2 -- Yes --> N_ReleaseCode_Node2_action N_ReleaseCode_Node2_action --> E_ReleaseCode N_ReleaseCode_Node1 -- No --> N_ReleaseCode_Node2 N_ReleaseCode_Node2 -- No --> E_ReleaseCode
evaluated"}:::decision N_ReleaseCode_Node0_action["If the code is classified as a
release type in the disposition code
table, the release status flag is
set to true"]:::main N_ReleaseCode_Node0 -- Yes --> N_ReleaseCode_Node0_action N_ReleaseCode_Node0_action --> E_ReleaseCode S_ReleaseCode --> N_ReleaseCode_Node0 N_ReleaseCode_Node1{"The code is checked against release
code criteria"}:::decision N_ReleaseCode_Node1_action["The system determines if the code
represents a release condition and
sets the release status flag
accordingly"]:::main N_ReleaseCode_Node1 -- Yes --> N_ReleaseCode_Node1_action N_ReleaseCode_Node1_action --> E_ReleaseCode N_ReleaseCode_Node0 -- No --> N_ReleaseCode_Node1 N_ReleaseCode_Node2{"The system checks if the code
indicates a release status"}:::decision N_ReleaseCode_Node2_action["If the code represents a release
condition, proceed with release
processing"]:::main N_ReleaseCode_Node2 -- Yes --> N_ReleaseCode_Node2_action N_ReleaseCode_Node2_action --> E_ReleaseCode N_ReleaseCode_Node1 -- No --> N_ReleaseCode_Node2 N_ReleaseCode_Node2 -- No --> E_ReleaseCode
File: GCX016.cbl
GIVEN:
A disposition code from the S09A array is being examined
WHEN:
The disposition code type is evaluated
THEN:
If the code is classified as a release type in the disposition code table, the release status flag is set to true
File: GCX016.cbl
GIVEN:
A disposition code is being evaluated from the status array
WHEN:
The code is checked against release code criteria
THEN:
- The system determines if the code represents a release condition
- Sets the release status flag accordingly
File: GCX016.cbl
GIVEN:
A disposition code is being analyzed
WHEN:
The system checks if the code indicates a release status
THEN:
If the code represents a release condition, proceed with release processing
β Consolidated Acceptance Criteria
- The disposition code type is evaluated → if the code is classified as a PTT type in the disposition code table, the PTT status flag is set to true
- The code is checked against PTT code criteria → the system determines if the code represents a PTT condition and sets the PTT status flag accordingly
- The system checks if the code indicates PTT status → if the code represents PTT condition, proceed with PTT processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_PTTCode(["Start Step"])
E_PTTCode(["End Step"])
N_PTTCode_Node0{"The disposition code type is
evaluated"}:::decision N_PTTCode_Node0_action["If the code is classified as a PTT
type in the disposition code table,
the PTT status flag is set to true"]:::main N_PTTCode_Node0 -- Yes --> N_PTTCode_Node0_action N_PTTCode_Node0_action --> E_PTTCode S_PTTCode --> N_PTTCode_Node0 N_PTTCode_Node1{"The code is checked against PTT
code criteria"}:::decision N_PTTCode_Node1_action["The system determines if the code
represents a PTT condition and sets
the PTT status flag accordingly"]:::main N_PTTCode_Node1 -- Yes --> N_PTTCode_Node1_action N_PTTCode_Node1_action --> E_PTTCode N_PTTCode_Node0 -- No --> N_PTTCode_Node1 N_PTTCode_Node2{"The system checks if the code
indicates PTT status"}:::decision N_PTTCode_Node2_action["If the code represents PTT
condition, proceed with PTT
processing"]:::main N_PTTCode_Node2 -- Yes --> N_PTTCode_Node2_action N_PTTCode_Node2_action --> E_PTTCode N_PTTCode_Node1 -- No --> N_PTTCode_Node2 N_PTTCode_Node2 -- No --> E_PTTCode
evaluated"}:::decision N_PTTCode_Node0_action["If the code is classified as a PTT
type in the disposition code table,
the PTT status flag is set to true"]:::main N_PTTCode_Node0 -- Yes --> N_PTTCode_Node0_action N_PTTCode_Node0_action --> E_PTTCode S_PTTCode --> N_PTTCode_Node0 N_PTTCode_Node1{"The code is checked against PTT
code criteria"}:::decision N_PTTCode_Node1_action["The system determines if the code
represents a PTT condition and sets
the PTT status flag accordingly"]:::main N_PTTCode_Node1 -- Yes --> N_PTTCode_Node1_action N_PTTCode_Node1_action --> E_PTTCode N_PTTCode_Node0 -- No --> N_PTTCode_Node1 N_PTTCode_Node2{"The system checks if the code
indicates PTT status"}:::decision N_PTTCode_Node2_action["If the code represents PTT
condition, proceed with PTT
processing"]:::main N_PTTCode_Node2 -- Yes --> N_PTTCode_Node2_action N_PTTCode_Node2_action --> E_PTTCode N_PTTCode_Node1 -- No --> N_PTTCode_Node2 N_PTTCode_Node2 -- No --> E_PTTCode
File: GCX016.cbl
GIVEN:
A disposition code from the S09A array is being examined
WHEN:
The disposition code type is evaluated
THEN:
If the code is classified as a PTT type in the disposition code table, the PTT status flag is set to true
File: GCX016.cbl
GIVEN:
A disposition code is being evaluated from the status array
WHEN:
The code is checked against PTT code criteria
THEN:
- The system determines if the code represents a ptt condition
- Sets the ptt status flag accordingly
File: GCX016.cbl
GIVEN:
A disposition code is being analyzed
WHEN:
The system checks if the code indicates PTT status
THEN:
If the code represents PTT condition, proceed with PTT processing
β Consolidated Acceptance Criteria
- The disposition code type is evaluated → if the code is classified as a proceed type in the disposition code table, the proceed status flag is set to true
- The code is checked against proceed code criteria → the system determines if the code represents a proceed condition and sets the proceed status flag accordingly
- The system checks if the code indicates proceed status → if the code represents proceed condition, proceed with proceed processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ProceedCode(["Start Step"])
E_ProceedCode(["End Step"])
N_ProceedCode_Node0{"The disposition code type is
evaluated"}:::decision N_ProceedCode_Node0_action["If the code is classified as a
proceed type in the disposition code
table, the proceed status flag is
set to true"]:::main N_ProceedCode_Node0 -- Yes --> N_ProceedCode_Node0_action N_ProceedCode_Node0_action --> E_ProceedCode S_ProceedCode --> N_ProceedCode_Node0 N_ProceedCode_Node1{"The code is checked against proceed
code criteria"}:::decision N_ProceedCode_Node1_action["The system determines if the code
represents a proceed condition and
sets the proceed status flag
accordingly"]:::main N_ProceedCode_Node1 -- Yes --> N_ProceedCode_Node1_action N_ProceedCode_Node1_action --> E_ProceedCode N_ProceedCode_Node0 -- No --> N_ProceedCode_Node1 N_ProceedCode_Node2{"The system checks if the code
indicates proceed status"}:::decision N_ProceedCode_Node2_action["If the code represents proceed
condition, proceed with proceed
processing"]:::main N_ProceedCode_Node2 -- Yes --> N_ProceedCode_Node2_action N_ProceedCode_Node2_action --> E_ProceedCode N_ProceedCode_Node1 -- No --> N_ProceedCode_Node2 N_ProceedCode_Node2 -- No --> E_ProceedCode
evaluated"}:::decision N_ProceedCode_Node0_action["If the code is classified as a
proceed type in the disposition code
table, the proceed status flag is
set to true"]:::main N_ProceedCode_Node0 -- Yes --> N_ProceedCode_Node0_action N_ProceedCode_Node0_action --> E_ProceedCode S_ProceedCode --> N_ProceedCode_Node0 N_ProceedCode_Node1{"The code is checked against proceed
code criteria"}:::decision N_ProceedCode_Node1_action["The system determines if the code
represents a proceed condition and
sets the proceed status flag
accordingly"]:::main N_ProceedCode_Node1 -- Yes --> N_ProceedCode_Node1_action N_ProceedCode_Node1_action --> E_ProceedCode N_ProceedCode_Node0 -- No --> N_ProceedCode_Node1 N_ProceedCode_Node2{"The system checks if the code
indicates proceed status"}:::decision N_ProceedCode_Node2_action["If the code represents proceed
condition, proceed with proceed
processing"]:::main N_ProceedCode_Node2 -- Yes --> N_ProceedCode_Node2_action N_ProceedCode_Node2_action --> E_ProceedCode N_ProceedCode_Node1 -- No --> N_ProceedCode_Node2 N_ProceedCode_Node2 -- No --> E_ProceedCode
File: GCX016.cbl
GIVEN:
A disposition code from the S09A array is being examined
WHEN:
The disposition code type is evaluated
THEN:
If the code is classified as a proceed type in the disposition code table, the proceed status flag is set to true
File: GCX016.cbl
GIVEN:
A disposition code is being evaluated from the status array
WHEN:
The code is checked against proceed code criteria
THEN:
- The system determines if the code represents a proceed condition
- Sets the proceed status flag accordingly
File: GCX016.cbl
GIVEN:
A disposition code is being analyzed
WHEN:
The system checks if the code indicates proceed status
THEN:
If the code represents proceed condition, proceed with proceed processing
β Consolidated Acceptance Criteria
- The disposition code type is evaluated → if the code is classified as an arrival type in the disposition code table, the arrival status flag is set to true
- The code is checked against arrival code criteria → the system determines if the code represents an arrival condition and sets the arrival status flag accordingly
- The system checks if the code indicates arrival status → if the code represents arrival condition, proceed with arrival processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ArrivalCode(["Start Step"])
E_ArrivalCode(["End Step"])
N_ArrivalCode_Node0{"The disposition code type is
evaluated"}:::decision N_ArrivalCode_Node0_action["If the code is classified as an
arrival type in the disposition code
table, the arrival status flag is
set to true"]:::main N_ArrivalCode_Node0 -- Yes --> N_ArrivalCode_Node0_action N_ArrivalCode_Node0_action --> E_ArrivalCode S_ArrivalCode --> N_ArrivalCode_Node0 N_ArrivalCode_Node1{"The code is checked against arrival
code criteria"}:::decision N_ArrivalCode_Node1_action["The system determines if the code
represents an arrival condition and
sets the arrival status flag
accordingly"]:::main N_ArrivalCode_Node1 -- Yes --> N_ArrivalCode_Node1_action N_ArrivalCode_Node1_action --> E_ArrivalCode N_ArrivalCode_Node0 -- No --> N_ArrivalCode_Node1 N_ArrivalCode_Node2{"The system checks if the code
indicates arrival status"}:::decision N_ArrivalCode_Node2_action["If the code represents arrival
condition, proceed with arrival
processing"]:::main N_ArrivalCode_Node2 -- Yes --> N_ArrivalCode_Node2_action N_ArrivalCode_Node2_action --> E_ArrivalCode N_ArrivalCode_Node1 -- No --> N_ArrivalCode_Node2 N_ArrivalCode_Node2 -- No --> E_ArrivalCode
evaluated"}:::decision N_ArrivalCode_Node0_action["If the code is classified as an
arrival type in the disposition code
table, the arrival status flag is
set to true"]:::main N_ArrivalCode_Node0 -- Yes --> N_ArrivalCode_Node0_action N_ArrivalCode_Node0_action --> E_ArrivalCode S_ArrivalCode --> N_ArrivalCode_Node0 N_ArrivalCode_Node1{"The code is checked against arrival
code criteria"}:::decision N_ArrivalCode_Node1_action["The system determines if the code
represents an arrival condition and
sets the arrival status flag
accordingly"]:::main N_ArrivalCode_Node1 -- Yes --> N_ArrivalCode_Node1_action N_ArrivalCode_Node1_action --> E_ArrivalCode N_ArrivalCode_Node0 -- No --> N_ArrivalCode_Node1 N_ArrivalCode_Node2{"The system checks if the code
indicates arrival status"}:::decision N_ArrivalCode_Node2_action["If the code represents arrival
condition, proceed with arrival
processing"]:::main N_ArrivalCode_Node2 -- Yes --> N_ArrivalCode_Node2_action N_ArrivalCode_Node2_action --> E_ArrivalCode N_ArrivalCode_Node1 -- No --> N_ArrivalCode_Node2 N_ArrivalCode_Node2 -- No --> E_ArrivalCode
File: GCX016.cbl
GIVEN:
A disposition code from the S09A array is being examined
WHEN:
The disposition code type is evaluated
THEN:
If the code is classified as an arrival type in the disposition code table, the arrival status flag is set to true
File: GCX016.cbl
GIVEN:
A disposition code is being evaluated from the status array
WHEN:
The code is checked against arrival code criteria
THEN:
- The system determines if the code represents an arrival condition
- Sets the arrival status flag accordingly
File: GCX016.cbl
GIVEN:
A disposition code is being analyzed
WHEN:
The system checks if the code indicates arrival status
THEN:
If the code represents arrival condition, proceed with arrival processing
β Consolidated Acceptance Criteria
- The disposition code type is evaluated → if the code is classified as an export type in the disposition code table, the export status flag is set to true
- The code is checked against export code criteria → the system determines if the code represents an export condition and sets the export status flag accordingly
- The system checks if the code indicates export status → if the code represents export condition, proceed with export processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExportCode(["Start Step"])
E_ExportCode(["End Step"])
N_ExportCode_Node0{"The disposition code type is
evaluated"}:::decision N_ExportCode_Node0_action["If the code is classified as an
export type in the disposition code
table, the export status flag is set
to true"]:::main N_ExportCode_Node0 -- Yes --> N_ExportCode_Node0_action N_ExportCode_Node0_action --> E_ExportCode S_ExportCode --> N_ExportCode_Node0 N_ExportCode_Node1{"The code is checked against export
code criteria"}:::decision N_ExportCode_Node1_action["The system determines if the code
represents an export condition and
sets the export status flag
accordingly"]:::main N_ExportCode_Node1 -- Yes --> N_ExportCode_Node1_action N_ExportCode_Node1_action --> E_ExportCode N_ExportCode_Node0 -- No --> N_ExportCode_Node1 N_ExportCode_Node2{"The system checks if the code
indicates export status"}:::decision N_ExportCode_Node2_action["If the code represents export
condition, proceed with export
processing"]:::main N_ExportCode_Node2 -- Yes --> N_ExportCode_Node2_action N_ExportCode_Node2_action --> E_ExportCode N_ExportCode_Node1 -- No --> N_ExportCode_Node2 N_ExportCode_Node2 -- No --> E_ExportCode
evaluated"}:::decision N_ExportCode_Node0_action["If the code is classified as an
export type in the disposition code
table, the export status flag is set
to true"]:::main N_ExportCode_Node0 -- Yes --> N_ExportCode_Node0_action N_ExportCode_Node0_action --> E_ExportCode S_ExportCode --> N_ExportCode_Node0 N_ExportCode_Node1{"The code is checked against export
code criteria"}:::decision N_ExportCode_Node1_action["The system determines if the code
represents an export condition and
sets the export status flag
accordingly"]:::main N_ExportCode_Node1 -- Yes --> N_ExportCode_Node1_action N_ExportCode_Node1_action --> E_ExportCode N_ExportCode_Node0 -- No --> N_ExportCode_Node1 N_ExportCode_Node2{"The system checks if the code
indicates export status"}:::decision N_ExportCode_Node2_action["If the code represents export
condition, proceed with export
processing"]:::main N_ExportCode_Node2 -- Yes --> N_ExportCode_Node2_action N_ExportCode_Node2_action --> E_ExportCode N_ExportCode_Node1 -- No --> N_ExportCode_Node2 N_ExportCode_Node2 -- No --> E_ExportCode
File: GCX016.cbl
GIVEN:
A disposition code from the S09A array is being examined
WHEN:
The disposition code type is evaluated
THEN:
If the code is classified as an export type in the disposition code table, the export status flag is set to true
File: GCX016.cbl
GIVEN:
A disposition code is being evaluated from the status array
WHEN:
The code is checked against export code criteria
THEN:
- The system determines if the code represents an export condition
- Sets the export status flag accordingly
File: GCX016.cbl
GIVEN:
A disposition code is being analyzed
WHEN:
The system checks if the code indicates export status
THEN:
If the code represents export condition, proceed with export processing
β Consolidated Acceptance Criteria
- The disposition code type is evaluated → if the code is classified as an FDA hold type in the disposition code table, the FDA hold status flag is set to true
- The code is checked against FDA hold code criteria → the system determines if the code represents an FDA hold condition and sets the FDA hold status flag accordingly
- The system checks if the code indicates FDA hold status → if the code represents FDA hold condition, proceed with FDA hold processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_FDAHoldCode(["Start Step"])
E_FDAHoldCode(["End Step"])
N_FDAHoldCode_Node0{"The disposition code type is
evaluated"}:::decision N_FDAHoldCode_Node0_action["If the code is classified as an FDA
hold type in the disposition code
table, the FDA hold status flag is
set to true"]:::main N_FDAHoldCode_Node0 -- Yes --> N_FDAHoldCode_Node0_action N_FDAHoldCode_Node0_action --> E_FDAHoldCode S_FDAHoldCode --> N_FDAHoldCode_Node0 N_FDAHoldCode_Node1{"The code is checked against FDA
hold code criteria"}:::decision N_FDAHoldCode_Node1_action["The system determines if the code
represents an FDA hold condition and
sets the FDA hold status flag
accordingly"]:::main N_FDAHoldCode_Node1 -- Yes --> N_FDAHoldCode_Node1_action N_FDAHoldCode_Node1_action --> E_FDAHoldCode N_FDAHoldCode_Node0 -- No --> N_FDAHoldCode_Node1 N_FDAHoldCode_Node2{"The system checks if the code
indicates FDA hold status"}:::decision N_FDAHoldCode_Node2_action["If the code represents FDA hold
condition, proceed with FDA hold
processing"]:::main N_FDAHoldCode_Node2 -- Yes --> N_FDAHoldCode_Node2_action N_FDAHoldCode_Node2_action --> E_FDAHoldCode N_FDAHoldCode_Node1 -- No --> N_FDAHoldCode_Node2 N_FDAHoldCode_Node2 -- No --> E_FDAHoldCode
evaluated"}:::decision N_FDAHoldCode_Node0_action["If the code is classified as an FDA
hold type in the disposition code
table, the FDA hold status flag is
set to true"]:::main N_FDAHoldCode_Node0 -- Yes --> N_FDAHoldCode_Node0_action N_FDAHoldCode_Node0_action --> E_FDAHoldCode S_FDAHoldCode --> N_FDAHoldCode_Node0 N_FDAHoldCode_Node1{"The code is checked against FDA
hold code criteria"}:::decision N_FDAHoldCode_Node1_action["The system determines if the code
represents an FDA hold condition and
sets the FDA hold status flag
accordingly"]:::main N_FDAHoldCode_Node1 -- Yes --> N_FDAHoldCode_Node1_action N_FDAHoldCode_Node1_action --> E_FDAHoldCode N_FDAHoldCode_Node0 -- No --> N_FDAHoldCode_Node1 N_FDAHoldCode_Node2{"The system checks if the code
indicates FDA hold status"}:::decision N_FDAHoldCode_Node2_action["If the code represents FDA hold
condition, proceed with FDA hold
processing"]:::main N_FDAHoldCode_Node2 -- Yes --> N_FDAHoldCode_Node2_action N_FDAHoldCode_Node2_action --> E_FDAHoldCode N_FDAHoldCode_Node1 -- No --> N_FDAHoldCode_Node2 N_FDAHoldCode_Node2 -- No --> E_FDAHoldCode
File: GCX016.cbl
GIVEN:
A disposition code from the S09A array is being examined
WHEN:
The disposition code type is evaluated
THEN:
If the code is classified as an FDA hold type in the disposition code table, the FDA hold status flag is set to true
File: GCX016.cbl
GIVEN:
A disposition code is being evaluated from the status array
WHEN:
The code is checked against FDA hold code criteria
THEN:
- The system determines if the code represents an fda hold condition
- Sets the fda hold status flag accordingly
File: GCX016.cbl
GIVEN:
A disposition code is being analyzed
WHEN:
The system checks if the code indicates FDA hold status
THEN:
If the code represents FDA hold condition, proceed with FDA hold processing
β Consolidated Acceptance Criteria
- Final cargo status determination is performed → the system evaluates status flags in priority order: border hold, destination hold, released, PTT active, proceed, arrived, exported to set the final cargo status
- The final cargo status needs to be determined → the system applies priority logic where hold statuses take precedence over release statuses, and specific hold types are prioritized based on business rules
- The system needs to finalize the cargo status → the system determines and assigns the final cargo status based on all evaluated conditions
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_DetermineFinalCargoStatus(["Start Step"])
E_DetermineFinalCargoStatus(["End Step"])
N_DetermineFinalCargoStatus_Node0{"Final cargo status determination is
performed"}:::decision N_DetermineFinalCargoStatus_Node0_action["The system evaluates status flags
in priority order: border hold,
destination hold, released, PTT
active, proceed, arrived, exported
to set the final cargo status"]:::main N_DetermineFinalCargoStatus_Node0 -- Yes --> N_DetermineFinalCargoStatus_Node0_action N_DetermineFinalCargoStatus_Node0_action --> E_DetermineFinalCargoStatus S_DetermineFinalCargoStatus --> N_DetermineFinalCargoStatus_Node0 N_DetermineFinalCargoStatus_Node1{"The final cargo status needs to be
determined"}:::decision N_DetermineFinalCargoStatus_Node1_action["The system applies priority logic
where hold statuses take precedence
over release statuses, and specific
hold types are prioritized based on
business rules"]:::main N_DetermineFinalCargoStatus_Node1 -- Yes --> N_DetermineFinalCargoStatus_Node1_action N_DetermineFinalCargoStatus_Node1_action --> E_DetermineFinalCargoStatus N_DetermineFinalCargoStatus_Node0 -- No --> N_DetermineFinalCargoStatus_Node1 N_DetermineFinalCargoStatus_Node2{"The system needs to finalize the
cargo status"}:::decision N_DetermineFinalCargoStatus_Node2_action["The system determines and assigns
the final cargo status based on all
evaluated conditions"]:::main N_DetermineFinalCargoStatus_Node2 -- Yes --> N_DetermineFinalCargoStatus_Node2_action N_DetermineFinalCargoStatus_Node2_action --> E_DetermineFinalCargoStatus N_DetermineFinalCargoStatus_Node1 -- No --> N_DetermineFinalCargoStatus_Node2 N_DetermineFinalCargoStatus_Node2 -- No --> E_DetermineFinalCargoStatus
performed"}:::decision N_DetermineFinalCargoStatus_Node0_action["The system evaluates status flags
in priority order: border hold,
destination hold, released, PTT
active, proceed, arrived, exported
to set the final cargo status"]:::main N_DetermineFinalCargoStatus_Node0 -- Yes --> N_DetermineFinalCargoStatus_Node0_action N_DetermineFinalCargoStatus_Node0_action --> E_DetermineFinalCargoStatus S_DetermineFinalCargoStatus --> N_DetermineFinalCargoStatus_Node0 N_DetermineFinalCargoStatus_Node1{"The final cargo status needs to be
determined"}:::decision N_DetermineFinalCargoStatus_Node1_action["The system applies priority logic
where hold statuses take precedence
over release statuses, and specific
hold types are prioritized based on
business rules"]:::main N_DetermineFinalCargoStatus_Node1 -- Yes --> N_DetermineFinalCargoStatus_Node1_action N_DetermineFinalCargoStatus_Node1_action --> E_DetermineFinalCargoStatus N_DetermineFinalCargoStatus_Node0 -- No --> N_DetermineFinalCargoStatus_Node1 N_DetermineFinalCargoStatus_Node2{"The system needs to finalize the
cargo status"}:::decision N_DetermineFinalCargoStatus_Node2_action["The system determines and assigns
the final cargo status based on all
evaluated conditions"]:::main N_DetermineFinalCargoStatus_Node2 -- Yes --> N_DetermineFinalCargoStatus_Node2_action N_DetermineFinalCargoStatus_Node2_action --> E_DetermineFinalCargoStatus N_DetermineFinalCargoStatus_Node1 -- No --> N_DetermineFinalCargoStatus_Node2 N_DetermineFinalCargoStatus_Node2 -- No --> E_DetermineFinalCargoStatus
File: GCX016.cbl
GIVEN:
All disposition codes in the S09A array have been analyzed and status flags have been set
WHEN:
Final cargo status determination is performed
THEN:
The system evaluates status flags in priority order: border hold, destination hold, released, PTT active, proceed, arrived, exported to set the final cargo status
File: GCX016.cbl
GIVEN:
All status flags have been analyzed from the S09A array
WHEN:
The final cargo status needs to be determined
THEN:
The system applies priority logic where hold statuses take precedence over release statuses, and specific hold types are prioritized based on business rules
File: GCX016.cbl
GIVEN:
All status transition logic has been evaluated for a cargo record
WHEN:
The system needs to finalize the cargo status
THEN:
- The system determines
- Assigns the final cargo status based on all evaluated conditions
β Consolidated Acceptance Criteria
- Final status determination is performed → the cargo final status is set to 'Hold at Border' indicating cargo cannot proceed past the border
- Final status determination is performed → the cargo status is set to 'Hold at Border' and appropriate status codes are applied
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetFinalStatusHoldatBorder(["Start Step"])
E_SetFinalStatusHoldatBorder(["End Step"])
N_SetFinalStatusHoldatBorder_Node0{"Final status determination is
performed"}:::decision N_SetFinalStatusHoldatBorder_Node0_action["The cargo final status is set to
Hold at Border indicating cargo
cannot proceed past the border"]:::main N_SetFinalStatusHoldatBorder_Node0 -- Yes --> N_SetFinalStatusHoldatBorder_Node0_action N_SetFinalStatusHoldatBorder_Node0_action --> E_SetFinalStatusHoldatBorder S_SetFinalStatusHoldatBorder --> N_SetFinalStatusHoldatBorder_Node0 N_SetFinalStatusHoldatBorder_Node1{"Final status determination is
performed"}:::decision N_SetFinalStatusHoldatBorder_Node1_action["The cargo status is set to Hold at
Border and appropriate status codes
are applied"]:::main N_SetFinalStatusHoldatBorder_Node1 -- Yes --> N_SetFinalStatusHoldatBorder_Node1_action N_SetFinalStatusHoldatBorder_Node1_action --> E_SetFinalStatusHoldatBorder N_SetFinalStatusHoldatBorder_Node0 -- No --> N_SetFinalStatusHoldatBorder_Node1 N_SetFinalStatusHoldatBorder_Node1 -- No --> E_SetFinalStatusHoldatBorder
performed"}:::decision N_SetFinalStatusHoldatBorder_Node0_action["The cargo final status is set to
Hold at Border indicating cargo
cannot proceed past the border"]:::main N_SetFinalStatusHoldatBorder_Node0 -- Yes --> N_SetFinalStatusHoldatBorder_Node0_action N_SetFinalStatusHoldatBorder_Node0_action --> E_SetFinalStatusHoldatBorder S_SetFinalStatusHoldatBorder --> N_SetFinalStatusHoldatBorder_Node0 N_SetFinalStatusHoldatBorder_Node1{"Final status determination is
performed"}:::decision N_SetFinalStatusHoldatBorder_Node1_action["The cargo status is set to Hold at
Border and appropriate status codes
are applied"]:::main N_SetFinalStatusHoldatBorder_Node1 -- Yes --> N_SetFinalStatusHoldatBorder_Node1_action N_SetFinalStatusHoldatBorder_Node1_action --> E_SetFinalStatusHoldatBorder N_SetFinalStatusHoldatBorder_Node0 -- No --> N_SetFinalStatusHoldatBorder_Node1 N_SetFinalStatusHoldatBorder_Node1 -- No --> E_SetFinalStatusHoldatBorder
File: GCX016.cbl
GIVEN:
Status analysis has been completed and border hold flag is true
WHEN:
Final status determination is performed
THEN:
The cargo final status is set to 'Hold at Border' indicating cargo cannot proceed past the border
File: GCX016.cbl
GIVEN:
Status analysis shows cargo has active border hold conditions
WHEN:
Final status determination is performed
THEN:
The cargo status is set to 'Hold at Border' and appropriate status codes are applied
β Consolidated Acceptance Criteria
- Final status determination is performed → the cargo final status is set to 'Hold at Destination' indicating cargo is held at the destination location
- Final status determination is performed → the cargo status is set to 'Hold at Destination' and appropriate status codes are applied
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetFinalStatusHoldatDestination(["Start Step"])
E_SetFinalStatusHoldatDestination(["End Step"])
N_SetFinalStatusHoldatDestination_Node0{"Final status determination is
performed"}:::decision N_SetFinalStatusHoldatDestination_Node0_action["The cargo final status is set to
Hold at Destination indicating cargo
is held at the destination location"]:::main N_SetFinalStatusHoldatDestination_Node0 -- Yes --> N_SetFinalStatusHoldatDestination_Node0_action N_SetFinalStatusHoldatDestination_Node0_action --> E_SetFinalStatusHoldatDestination S_SetFinalStatusHoldatDestination --> N_SetFinalStatusHoldatDestination_Node0 N_SetFinalStatusHoldatDestination_Node1{"Final status determination is
performed"}:::decision N_SetFinalStatusHoldatDestination_Node1_action["The cargo status is set to Hold at
Destination and appropriate status
codes are applied"]:::main N_SetFinalStatusHoldatDestination_Node1 -- Yes --> N_SetFinalStatusHoldatDestination_Node1_action N_SetFinalStatusHoldatDestination_Node1_action --> E_SetFinalStatusHoldatDestination N_SetFinalStatusHoldatDestination_Node0 -- No --> N_SetFinalStatusHoldatDestination_Node1 N_SetFinalStatusHoldatDestination_Node1 -- No --> E_SetFinalStatusHoldatDestination
performed"}:::decision N_SetFinalStatusHoldatDestination_Node0_action["The cargo final status is set to
Hold at Destination indicating cargo
is held at the destination location"]:::main N_SetFinalStatusHoldatDestination_Node0 -- Yes --> N_SetFinalStatusHoldatDestination_Node0_action N_SetFinalStatusHoldatDestination_Node0_action --> E_SetFinalStatusHoldatDestination S_SetFinalStatusHoldatDestination --> N_SetFinalStatusHoldatDestination_Node0 N_SetFinalStatusHoldatDestination_Node1{"Final status determination is
performed"}:::decision N_SetFinalStatusHoldatDestination_Node1_action["The cargo status is set to Hold at
Destination and appropriate status
codes are applied"]:::main N_SetFinalStatusHoldatDestination_Node1 -- Yes --> N_SetFinalStatusHoldatDestination_Node1_action N_SetFinalStatusHoldatDestination_Node1_action --> E_SetFinalStatusHoldatDestination N_SetFinalStatusHoldatDestination_Node0 -- No --> N_SetFinalStatusHoldatDestination_Node1 N_SetFinalStatusHoldatDestination_Node1 -- No --> E_SetFinalStatusHoldatDestination
File: GCX016.cbl
GIVEN:
Status analysis has been completed and destination hold flag is true and border hold flag is false
WHEN:
Final status determination is performed
THEN:
The cargo final status is set to 'Hold at Destination' indicating cargo is held at the destination location
File: GCX016.cbl
GIVEN:
Status analysis shows cargo has active destination hold conditions and no border holds
WHEN:
Final status determination is performed
THEN:
The cargo status is set to 'Hold at Destination' and appropriate status codes are applied
β Consolidated Acceptance Criteria
- Final status determination is performed → the cargo final status is set to 'Released' indicating cargo is cleared for movement
- Final status determination is performed → the cargo status is set to 'Released' and cargo is authorized for movement
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetFinalStatusReleased(["Start Step"])
E_SetFinalStatusReleased(["End Step"])
N_SetFinalStatusReleased_Node0{"Final status determination is
performed"}:::decision N_SetFinalStatusReleased_Node0_action["The cargo final status is set to
Released indicating cargo is cleared
for movement"]:::main N_SetFinalStatusReleased_Node0 -- Yes --> N_SetFinalStatusReleased_Node0_action N_SetFinalStatusReleased_Node0_action --> E_SetFinalStatusReleased S_SetFinalStatusReleased --> N_SetFinalStatusReleased_Node0 N_SetFinalStatusReleased_Node1{"Final status determination is
performed"}:::decision N_SetFinalStatusReleased_Node1_action["The cargo status is set to Released
and cargo is authorized for movement"]:::main N_SetFinalStatusReleased_Node1 -- Yes --> N_SetFinalStatusReleased_Node1_action N_SetFinalStatusReleased_Node1_action --> E_SetFinalStatusReleased N_SetFinalStatusReleased_Node0 -- No --> N_SetFinalStatusReleased_Node1 N_SetFinalStatusReleased_Node1 -- No --> E_SetFinalStatusReleased
performed"}:::decision N_SetFinalStatusReleased_Node0_action["The cargo final status is set to
Released indicating cargo is cleared
for movement"]:::main N_SetFinalStatusReleased_Node0 -- Yes --> N_SetFinalStatusReleased_Node0_action N_SetFinalStatusReleased_Node0_action --> E_SetFinalStatusReleased S_SetFinalStatusReleased --> N_SetFinalStatusReleased_Node0 N_SetFinalStatusReleased_Node1{"Final status determination is
performed"}:::decision N_SetFinalStatusReleased_Node1_action["The cargo status is set to Released
and cargo is authorized for movement"]:::main N_SetFinalStatusReleased_Node1 -- Yes --> N_SetFinalStatusReleased_Node1_action N_SetFinalStatusReleased_Node1_action --> E_SetFinalStatusReleased N_SetFinalStatusReleased_Node0 -- No --> N_SetFinalStatusReleased_Node1 N_SetFinalStatusReleased_Node1 -- No --> E_SetFinalStatusReleased
File: GCX016.cbl
GIVEN:
Status analysis has been completed and release flag is true and no hold flags are true
WHEN:
Final status determination is performed
THEN:
The cargo final status is set to 'Released' indicating cargo is cleared for movement
File: GCX016.cbl
GIVEN:
Status analysis shows cargo has no active hold conditions and has release authorization
WHEN:
Final status determination is performed
THEN:
The cargo status is set to 'Released' and cargo is authorized for movement
β Consolidated Acceptance Criteria
- Final status determination is performed → the cargo final status is set to 'PTT Active' indicating permit to transfer is in effect
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetFinalStatusPTTActive(["Start Step"])
E_SetFinalStatusPTTActive(["End Step"])
N_SetFinalStatusPTTActive_Node0{"Final status determination is
performed"}:::decision N_SetFinalStatusPTTActive_Node0_action["The cargo final status is set to
PTT Active indicating permit to
transfer is in effect"]:::main N_SetFinalStatusPTTActive_Node0 -- Yes --> N_SetFinalStatusPTTActive_Node0_action N_SetFinalStatusPTTActive_Node0_action --> E_SetFinalStatusPTTActive S_SetFinalStatusPTTActive --> N_SetFinalStatusPTTActive_Node0 N_SetFinalStatusPTTActive_Node0 -- No --> E_SetFinalStatusPTTActive
performed"}:::decision N_SetFinalStatusPTTActive_Node0_action["The cargo final status is set to
PTT Active indicating permit to
transfer is in effect"]:::main N_SetFinalStatusPTTActive_Node0 -- Yes --> N_SetFinalStatusPTTActive_Node0_action N_SetFinalStatusPTTActive_Node0_action --> E_SetFinalStatusPTTActive S_SetFinalStatusPTTActive --> N_SetFinalStatusPTTActive_Node0 N_SetFinalStatusPTTActive_Node0 -- No --> E_SetFinalStatusPTTActive
File: GCX016.cbl
GIVEN:
Status analysis has been completed and PTT flag is true and no hold or release flags are true
WHEN:
Final status determination is performed
THEN:
The cargo final status is set to 'PTT Active' indicating permit to transfer is in effect
β Consolidated Acceptance Criteria
- Final status determination is performed → the cargo final status is set to 'Proceed' indicating cargo can continue movement
- Final status determination is performed → the cargo status is set to 'Proceed' allowing cargo movement to continue
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetFinalStatusProceed(["Start Step"])
E_SetFinalStatusProceed(["End Step"])
N_SetFinalStatusProceed_Node0{"Final status determination is
performed"}:::decision N_SetFinalStatusProceed_Node0_action["The cargo final status is set to
Proceed indicating cargo can
continue movement"]:::main N_SetFinalStatusProceed_Node0 -- Yes --> N_SetFinalStatusProceed_Node0_action N_SetFinalStatusProceed_Node0_action --> E_SetFinalStatusProceed S_SetFinalStatusProceed --> N_SetFinalStatusProceed_Node0 N_SetFinalStatusProceed_Node1{"Final status determination is
performed"}:::decision N_SetFinalStatusProceed_Node1_action["The cargo status is set to Proceed
allowing cargo movement to continue"]:::main N_SetFinalStatusProceed_Node1 -- Yes --> N_SetFinalStatusProceed_Node1_action N_SetFinalStatusProceed_Node1_action --> E_SetFinalStatusProceed N_SetFinalStatusProceed_Node0 -- No --> N_SetFinalStatusProceed_Node1 N_SetFinalStatusProceed_Node1 -- No --> E_SetFinalStatusProceed
performed"}:::decision N_SetFinalStatusProceed_Node0_action["The cargo final status is set to
Proceed indicating cargo can
continue movement"]:::main N_SetFinalStatusProceed_Node0 -- Yes --> N_SetFinalStatusProceed_Node0_action N_SetFinalStatusProceed_Node0_action --> E_SetFinalStatusProceed S_SetFinalStatusProceed --> N_SetFinalStatusProceed_Node0 N_SetFinalStatusProceed_Node1{"Final status determination is
performed"}:::decision N_SetFinalStatusProceed_Node1_action["The cargo status is set to Proceed
allowing cargo movement to continue"]:::main N_SetFinalStatusProceed_Node1 -- Yes --> N_SetFinalStatusProceed_Node1_action N_SetFinalStatusProceed_Node1_action --> E_SetFinalStatusProceed N_SetFinalStatusProceed_Node0 -- No --> N_SetFinalStatusProceed_Node1 N_SetFinalStatusProceed_Node1 -- No --> E_SetFinalStatusProceed
File: GCX016.cbl
GIVEN:
Status analysis has been completed and proceed flag is true and no hold, release, or PTT flags are true
WHEN:
Final status determination is performed
THEN:
The cargo final status is set to 'Proceed' indicating cargo can continue movement
File: GCX016.cbl
GIVEN:
Status analysis shows cargo has active proceed conditions with no holds, releases, or PTT status
WHEN:
Final status determination is performed
THEN:
The cargo status is set to 'Proceed' allowing cargo movement to continue
β Consolidated Acceptance Criteria
- Final status determination is performed → the cargo final status is set to 'Arrived' indicating cargo has reached its destination
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetFinalStatusArrived(["Start Step"])
E_SetFinalStatusArrived(["End Step"])
N_SetFinalStatusArrived_Node0{"Final status determination is
performed"}:::decision N_SetFinalStatusArrived_Node0_action["The cargo final status is set to
Arrived indicating cargo has reached
its destination"]:::main N_SetFinalStatusArrived_Node0 -- Yes --> N_SetFinalStatusArrived_Node0_action N_SetFinalStatusArrived_Node0_action --> E_SetFinalStatusArrived S_SetFinalStatusArrived --> N_SetFinalStatusArrived_Node0 N_SetFinalStatusArrived_Node0 -- No --> E_SetFinalStatusArrived
performed"}:::decision N_SetFinalStatusArrived_Node0_action["The cargo final status is set to
Arrived indicating cargo has reached
its destination"]:::main N_SetFinalStatusArrived_Node0 -- Yes --> N_SetFinalStatusArrived_Node0_action N_SetFinalStatusArrived_Node0_action --> E_SetFinalStatusArrived S_SetFinalStatusArrived --> N_SetFinalStatusArrived_Node0 N_SetFinalStatusArrived_Node0 -- No --> E_SetFinalStatusArrived
File: GCX016.cbl
GIVEN:
Status analysis has been completed and arrival flag is true and no hold, release, PTT, or proceed flags are true
WHEN:
Final status determination is performed
THEN:
The cargo final status is set to 'Arrived' indicating cargo has reached its destination
β Consolidated Acceptance Criteria
- Final status determination is performed → the cargo final status is set to 'Exported' indicating cargo has been exported from the country
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetFinalStatusExported(["Start Step"])
E_SetFinalStatusExported(["End Step"])
N_SetFinalStatusExported_Node0{"Final status determination is
performed"}:::decision N_SetFinalStatusExported_Node0_action["The cargo final status is set to
Exported indicating cargo has been
exported from the country"]:::main N_SetFinalStatusExported_Node0 -- Yes --> N_SetFinalStatusExported_Node0_action N_SetFinalStatusExported_Node0_action --> E_SetFinalStatusExported S_SetFinalStatusExported --> N_SetFinalStatusExported_Node0 N_SetFinalStatusExported_Node0 -- No --> E_SetFinalStatusExported
performed"}:::decision N_SetFinalStatusExported_Node0_action["The cargo final status is set to
Exported indicating cargo has been
exported from the country"]:::main N_SetFinalStatusExported_Node0 -- Yes --> N_SetFinalStatusExported_Node0_action N_SetFinalStatusExported_Node0_action --> E_SetFinalStatusExported S_SetFinalStatusExported --> N_SetFinalStatusExported_Node0 N_SetFinalStatusExported_Node0 -- No --> E_SetFinalStatusExported
File: GCX016.cbl
GIVEN:
Status analysis has been completed and export flag is true and no other status flags are true
WHEN:
Final status determination is performed
THEN:
The cargo final status is set to 'Exported' indicating cargo has been exported from the country
β Consolidated Acceptance Criteria
- The system begins cargo state flag determination process → all cargo state flags (empty, held, released, PTT, proceed, arrival, export, FDA) are set to false
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_InitializeAllStateFlagstoFalse(["Start Step"])
E_InitializeAllStateFlagstoFalse(["End Step"])
N_InitializeAllStateFlagstoFalse_Node0{"The system begins cargo state flag
determination process"}:::decision N_InitializeAllStateFlagstoFalse_Node0_action["All cargo state flags empty, held,
released, PTT, proceed, arrival,
export, FDA are set to false"]:::main N_InitializeAllStateFlagstoFalse_Node0 -- Yes --> N_InitializeAllStateFlagstoFalse_Node0_action N_InitializeAllStateFlagstoFalse_Node0_action --> E_InitializeAllStateFlagstoFalse S_InitializeAllStateFlagstoFalse --> N_InitializeAllStateFlagstoFalse_Node0 N_InitializeAllStateFlagstoFalse_Node0 -- No --> E_InitializeAllStateFlagstoFalse
determination process"}:::decision N_InitializeAllStateFlagstoFalse_Node0_action["All cargo state flags empty, held,
released, PTT, proceed, arrival,
export, FDA are set to false"]:::main N_InitializeAllStateFlagstoFalse_Node0 -- Yes --> N_InitializeAllStateFlagstoFalse_Node0_action N_InitializeAllStateFlagstoFalse_Node0_action --> E_InitializeAllStateFlagstoFalse S_InitializeAllStateFlagstoFalse --> N_InitializeAllStateFlagstoFalse_Node0 N_InitializeAllStateFlagstoFalse_Node0 -- No --> E_InitializeAllStateFlagstoFalse
File: GCX016.cbl
GIVEN:
A cargo record requires state flag analysis
WHEN:
The system begins cargo state flag determination process
THEN:
All cargo state flags (empty, held, released, PTT, proceed, arrival, export, FDA) are set to false
β Consolidated Acceptance Criteria
- If the disposition code type → the system identifies if the code represents a hold condition and determines the hold location (border or destination)
- If the disposition code type → if the disposition code indicates a hold status, set the hold processing flag; otherwise, continue to release code evaluation
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IsHoldCode(["Start Step"])
E_IsHoldCode(["End Step"])
N_IsHoldCode_Node0{"The system evaluates the
disposition code type"}:::decision N_IsHoldCode_Node0_action["The system identifies if the code
represents a hold condition and
determines the hold location border
or destination"]:::main N_IsHoldCode_Node0 -- Yes --> N_IsHoldCode_Node0_action N_IsHoldCode_Node0_action --> E_IsHoldCode S_IsHoldCode --> N_IsHoldCode_Node0 N_IsHoldCode_Node1{"The system evaluates the
disposition code type"}:::decision N_IsHoldCode_Node1_action["If the disposition code indicates a
hold status, set the hold processing
flag otherwise, continue to release
code evaluation"]:::main N_IsHoldCode_Node1 -- Yes --> N_IsHoldCode_Node1_action N_IsHoldCode_Node1_action --> E_IsHoldCode N_IsHoldCode_Node0 -- No --> N_IsHoldCode_Node1 N_IsHoldCode_Node1 -- No --> E_IsHoldCode
disposition code type"}:::decision N_IsHoldCode_Node0_action["The system identifies if the code
represents a hold condition and
determines the hold location border
or destination"]:::main N_IsHoldCode_Node0 -- Yes --> N_IsHoldCode_Node0_action N_IsHoldCode_Node0_action --> E_IsHoldCode S_IsHoldCode --> N_IsHoldCode_Node0 N_IsHoldCode_Node1{"The system evaluates the
disposition code type"}:::decision N_IsHoldCode_Node1_action["If the disposition code indicates a
hold status, set the hold processing
flag otherwise, continue to release
code evaluation"]:::main N_IsHoldCode_Node1 -- Yes --> N_IsHoldCode_Node1_action N_IsHoldCode_Node1_action --> E_IsHoldCode N_IsHoldCode_Node0 -- No --> N_IsHoldCode_Node1 N_IsHoldCode_Node1 -- No --> E_IsHoldCode
File: GCX016.cbl
GIVEN:
A disposition code exists in the cargo status array
WHEN:
The system evaluates the disposition code type
THEN:
- The system identifies if the code represents a hold condition
- Determines the hold location (border or destination)
File: GCX016.cbl
GIVEN:
A disposition code has been extracted from the S09A array element
WHEN:
The system evaluates the disposition code type
THEN:
If the disposition code indicates a hold status, set the hold processing flag; otherwise, continue to release code evaluation
β Consolidated Acceptance Criteria
- The hold location is determined to be at the border → the border hold flag is set to true
- The system processes the border hold → the border hold flag is set to true to indicate cargo is held at border
- The border hold condition is identified → the border hold flag is set to true
- The hold location is determined to be at the border → the border hold status flag is set to true
- The system processes the border hold classification → the border hold flag is set to true
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetBorderHoldFlag(["Start Step"])
E_SetBorderHoldFlag(["End Step"])
N_SetBorderHoldFlag_Node0{"The hold location is determined to
be at the border"}:::decision N_SetBorderHoldFlag_Node0_action["The border hold flag is set to true"]:::main N_SetBorderHoldFlag_Node0 -- Yes --> N_SetBorderHoldFlag_Node0_action N_SetBorderHoldFlag_Node0_action --> E_SetBorderHoldFlag S_SetBorderHoldFlag --> N_SetBorderHoldFlag_Node0 N_SetBorderHoldFlag_Node1{"The system processes the border
hold"}:::decision N_SetBorderHoldFlag_Node1_action["The border hold flag is set to true
to indicate cargo is held at border"]:::main N_SetBorderHoldFlag_Node1 -- Yes --> N_SetBorderHoldFlag_Node1_action N_SetBorderHoldFlag_Node1_action --> E_SetBorderHoldFlag N_SetBorderHoldFlag_Node0 -- No --> N_SetBorderHoldFlag_Node1 N_SetBorderHoldFlag_Node2{"The border hold condition is
identified"}:::decision N_SetBorderHoldFlag_Node2_action["The border hold flag is set to true"]:::main N_SetBorderHoldFlag_Node2 -- Yes --> N_SetBorderHoldFlag_Node2_action N_SetBorderHoldFlag_Node2_action --> E_SetBorderHoldFlag N_SetBorderHoldFlag_Node1 -- No --> N_SetBorderHoldFlag_Node2 N_SetBorderHoldFlag_Node3{"The hold location is determined to
be at the border"}:::decision N_SetBorderHoldFlag_Node3_action["The border hold status flag is set
to true"]:::main N_SetBorderHoldFlag_Node3 -- Yes --> N_SetBorderHoldFlag_Node3_action N_SetBorderHoldFlag_Node3_action --> E_SetBorderHoldFlag N_SetBorderHoldFlag_Node2 -- No --> N_SetBorderHoldFlag_Node3 N_SetBorderHoldFlag_Node4{"The system processes the border
hold classification"}:::decision N_SetBorderHoldFlag_Node4_action["The border hold flag is set to true"]:::main N_SetBorderHoldFlag_Node4 -- Yes --> N_SetBorderHoldFlag_Node4_action N_SetBorderHoldFlag_Node4_action --> E_SetBorderHoldFlag N_SetBorderHoldFlag_Node3 -- No --> N_SetBorderHoldFlag_Node4 N_SetBorderHoldFlag_Node4 -- No --> E_SetBorderHoldFlag
be at the border"}:::decision N_SetBorderHoldFlag_Node0_action["The border hold flag is set to true"]:::main N_SetBorderHoldFlag_Node0 -- Yes --> N_SetBorderHoldFlag_Node0_action N_SetBorderHoldFlag_Node0_action --> E_SetBorderHoldFlag S_SetBorderHoldFlag --> N_SetBorderHoldFlag_Node0 N_SetBorderHoldFlag_Node1{"The system processes the border
hold"}:::decision N_SetBorderHoldFlag_Node1_action["The border hold flag is set to true
to indicate cargo is held at border"]:::main N_SetBorderHoldFlag_Node1 -- Yes --> N_SetBorderHoldFlag_Node1_action N_SetBorderHoldFlag_Node1_action --> E_SetBorderHoldFlag N_SetBorderHoldFlag_Node0 -- No --> N_SetBorderHoldFlag_Node1 N_SetBorderHoldFlag_Node2{"The border hold condition is
identified"}:::decision N_SetBorderHoldFlag_Node2_action["The border hold flag is set to true"]:::main N_SetBorderHoldFlag_Node2 -- Yes --> N_SetBorderHoldFlag_Node2_action N_SetBorderHoldFlag_Node2_action --> E_SetBorderHoldFlag N_SetBorderHoldFlag_Node1 -- No --> N_SetBorderHoldFlag_Node2 N_SetBorderHoldFlag_Node3{"The hold location is determined to
be at the border"}:::decision N_SetBorderHoldFlag_Node3_action["The border hold status flag is set
to true"]:::main N_SetBorderHoldFlag_Node3 -- Yes --> N_SetBorderHoldFlag_Node3_action N_SetBorderHoldFlag_Node3_action --> E_SetBorderHoldFlag N_SetBorderHoldFlag_Node2 -- No --> N_SetBorderHoldFlag_Node3 N_SetBorderHoldFlag_Node4{"The system processes the border
hold classification"}:::decision N_SetBorderHoldFlag_Node4_action["The border hold flag is set to true"]:::main N_SetBorderHoldFlag_Node4 -- Yes --> N_SetBorderHoldFlag_Node4_action N_SetBorderHoldFlag_Node4_action --> E_SetBorderHoldFlag N_SetBorderHoldFlag_Node3 -- No --> N_SetBorderHoldFlag_Node4 N_SetBorderHoldFlag_Node4 -- No --> E_SetBorderHoldFlag
File: GCX016.cbl
GIVEN:
A hold disposition code is identified in the status array
WHEN:
The hold location is determined to be at the border
THEN:
The border hold flag is set to true
File: GCX016.cbl
GIVEN:
The hold has been determined to apply to border location
WHEN:
The system processes the border hold
THEN:
The border hold flag is set to true to indicate cargo is held at border
File: GCX016.cbl
GIVEN:
A hold disposition code applies to border location
WHEN:
The border hold condition is identified
THEN:
The border hold flag is set to true
File: GCX016.cbl
GIVEN:
A disposition code indicates a border hold condition
WHEN:
The hold location is determined to be at the border
THEN:
The border hold status flag is set to true
File: GCX016.cbl
GIVEN:
A hold code has been classified as a border hold
WHEN:
The system processes the border hold classification
THEN:
The border hold flag is set to true
β Consolidated Acceptance Criteria
- The hold location is determined to be at the destination → the destination hold flag is set to true
- The system processes the destination hold → the destination hold flag is set to true to indicate cargo is held at destination
- The destination hold condition is identified → the destination hold flag is set to true
- The system sets destination hold flag → the cargo record is marked with destination hold flag indicating hold status at destination
- The hold location is determined to be at the destination → the destination hold status flag is set to true
- The system processes the destination hold classification → the destination hold flag is set to true
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetDestinationHoldFlag(["Start Step"])
E_SetDestinationHoldFlag(["End Step"])
N_SetDestinationHoldFlag_Node0{"The hold location is determined to
be at the destination"}:::decision N_SetDestinationHoldFlag_Node0_action["The destination hold flag is set to
true"]:::main N_SetDestinationHoldFlag_Node0 -- Yes --> N_SetDestinationHoldFlag_Node0_action N_SetDestinationHoldFlag_Node0_action --> E_SetDestinationHoldFlag S_SetDestinationHoldFlag --> N_SetDestinationHoldFlag_Node0 N_SetDestinationHoldFlag_Node1{"The system processes the
destination hold"}:::decision N_SetDestinationHoldFlag_Node1_action["The destination hold flag is set to
true to indicate cargo is held at
destination"]:::main N_SetDestinationHoldFlag_Node1 -- Yes --> N_SetDestinationHoldFlag_Node1_action N_SetDestinationHoldFlag_Node1_action --> E_SetDestinationHoldFlag N_SetDestinationHoldFlag_Node0 -- No --> N_SetDestinationHoldFlag_Node1 N_SetDestinationHoldFlag_Node2{"The destination hold condition is
identified"}:::decision N_SetDestinationHoldFlag_Node2_action["The destination hold flag is set to
true"]:::main N_SetDestinationHoldFlag_Node2 -- Yes --> N_SetDestinationHoldFlag_Node2_action N_SetDestinationHoldFlag_Node2_action --> E_SetDestinationHoldFlag N_SetDestinationHoldFlag_Node1 -- No --> N_SetDestinationHoldFlag_Node2 N_SetDestinationHoldFlag_Node3{"The system sets destination hold
flag"}:::decision N_SetDestinationHoldFlag_Node3_action["The cargo record is marked with
destination hold flag indicating
hold status at destination"]:::main N_SetDestinationHoldFlag_Node3 -- Yes --> N_SetDestinationHoldFlag_Node3_action N_SetDestinationHoldFlag_Node3_action --> E_SetDestinationHoldFlag N_SetDestinationHoldFlag_Node2 -- No --> N_SetDestinationHoldFlag_Node3 N_SetDestinationHoldFlag_Node4{"The hold location is determined to
be at the destination"}:::decision N_SetDestinationHoldFlag_Node4_action["The destination hold status flag is
set to true"]:::main N_SetDestinationHoldFlag_Node4 -- Yes --> N_SetDestinationHoldFlag_Node4_action N_SetDestinationHoldFlag_Node4_action --> E_SetDestinationHoldFlag N_SetDestinationHoldFlag_Node3 -- No --> N_SetDestinationHoldFlag_Node4 N_SetDestinationHoldFlag_Node5{"The system processes the
destination hold classification"}:::decision N_SetDestinationHoldFlag_Node5_action["The destination hold flag is set to
true"]:::main N_SetDestinationHoldFlag_Node5 -- Yes --> N_SetDestinationHoldFlag_Node5_action N_SetDestinationHoldFlag_Node5_action --> E_SetDestinationHoldFlag N_SetDestinationHoldFlag_Node4 -- No --> N_SetDestinationHoldFlag_Node5 N_SetDestinationHoldFlag_Node5 -- No --> E_SetDestinationHoldFlag
be at the destination"}:::decision N_SetDestinationHoldFlag_Node0_action["The destination hold flag is set to
true"]:::main N_SetDestinationHoldFlag_Node0 -- Yes --> N_SetDestinationHoldFlag_Node0_action N_SetDestinationHoldFlag_Node0_action --> E_SetDestinationHoldFlag S_SetDestinationHoldFlag --> N_SetDestinationHoldFlag_Node0 N_SetDestinationHoldFlag_Node1{"The system processes the
destination hold"}:::decision N_SetDestinationHoldFlag_Node1_action["The destination hold flag is set to
true to indicate cargo is held at
destination"]:::main N_SetDestinationHoldFlag_Node1 -- Yes --> N_SetDestinationHoldFlag_Node1_action N_SetDestinationHoldFlag_Node1_action --> E_SetDestinationHoldFlag N_SetDestinationHoldFlag_Node0 -- No --> N_SetDestinationHoldFlag_Node1 N_SetDestinationHoldFlag_Node2{"The destination hold condition is
identified"}:::decision N_SetDestinationHoldFlag_Node2_action["The destination hold flag is set to
true"]:::main N_SetDestinationHoldFlag_Node2 -- Yes --> N_SetDestinationHoldFlag_Node2_action N_SetDestinationHoldFlag_Node2_action --> E_SetDestinationHoldFlag N_SetDestinationHoldFlag_Node1 -- No --> N_SetDestinationHoldFlag_Node2 N_SetDestinationHoldFlag_Node3{"The system sets destination hold
flag"}:::decision N_SetDestinationHoldFlag_Node3_action["The cargo record is marked with
destination hold flag indicating
hold status at destination"]:::main N_SetDestinationHoldFlag_Node3 -- Yes --> N_SetDestinationHoldFlag_Node3_action N_SetDestinationHoldFlag_Node3_action --> E_SetDestinationHoldFlag N_SetDestinationHoldFlag_Node2 -- No --> N_SetDestinationHoldFlag_Node3 N_SetDestinationHoldFlag_Node4{"The hold location is determined to
be at the destination"}:::decision N_SetDestinationHoldFlag_Node4_action["The destination hold status flag is
set to true"]:::main N_SetDestinationHoldFlag_Node4 -- Yes --> N_SetDestinationHoldFlag_Node4_action N_SetDestinationHoldFlag_Node4_action --> E_SetDestinationHoldFlag N_SetDestinationHoldFlag_Node3 -- No --> N_SetDestinationHoldFlag_Node4 N_SetDestinationHoldFlag_Node5{"The system processes the
destination hold classification"}:::decision N_SetDestinationHoldFlag_Node5_action["The destination hold flag is set to
true"]:::main N_SetDestinationHoldFlag_Node5 -- Yes --> N_SetDestinationHoldFlag_Node5_action N_SetDestinationHoldFlag_Node5_action --> E_SetDestinationHoldFlag N_SetDestinationHoldFlag_Node4 -- No --> N_SetDestinationHoldFlag_Node5 N_SetDestinationHoldFlag_Node5 -- No --> E_SetDestinationHoldFlag
File: GCX016.cbl
GIVEN:
A hold disposition code is identified in the status array
WHEN:
The hold location is determined to be at the destination
THEN:
The destination hold flag is set to true
File: GCX016.cbl
GIVEN:
The hold has been determined to apply to destination location
WHEN:
The system processes the destination hold
THEN:
The destination hold flag is set to true to indicate cargo is held at destination
File: GCX016.cbl
GIVEN:
A hold disposition code applies to destination location
WHEN:
The destination hold condition is identified
THEN:
The destination hold flag is set to true
File: GCX016.cbl
GIVEN:
FDA hold processing is complete (with or without other holds)
WHEN:
The system sets destination hold flag
THEN:
The cargo record is marked with destination hold flag indicating hold status at destination
File: GCX016.cbl
GIVEN:
A disposition code indicates a destination hold condition
WHEN:
The hold location is determined to be at the destination
THEN:
The destination hold status flag is set to true
File: GCX016.cbl
GIVEN:
A hold code has been classified as a destination hold
WHEN:
The system processes the destination hold classification
THEN:
The destination hold flag is set to true
β Consolidated Acceptance Criteria
- If the disposition code for release characteristics → the system determines if the code represents a release condition
- If the disposition code for release status → if the disposition code indicates a release status, set the release processing flag; otherwise, continue to PTT code evaluation
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IsReleaseCode(["Start Step"])
E_IsReleaseCode(["End Step"])
N_IsReleaseCode_Node0{"The system evaluates the
disposition code for release
characteristics"}:::decision N_IsReleaseCode_Node0_action["The system determines if the code
represents a release condition"]:::main N_IsReleaseCode_Node0 -- Yes --> N_IsReleaseCode_Node0_action N_IsReleaseCode_Node0_action --> E_IsReleaseCode S_IsReleaseCode --> N_IsReleaseCode_Node0 N_IsReleaseCode_Node1{"The system evaluates the
disposition code for release status"}:::decision N_IsReleaseCode_Node1_action["If the disposition code indicates a
release status, set the release
processing flag otherwise, continue
to PTT code evaluation"]:::main N_IsReleaseCode_Node1 -- Yes --> N_IsReleaseCode_Node1_action N_IsReleaseCode_Node1_action --> E_IsReleaseCode N_IsReleaseCode_Node0 -- No --> N_IsReleaseCode_Node1 N_IsReleaseCode_Node1 -- No --> E_IsReleaseCode
disposition code for release
characteristics"}:::decision N_IsReleaseCode_Node0_action["The system determines if the code
represents a release condition"]:::main N_IsReleaseCode_Node0 -- Yes --> N_IsReleaseCode_Node0_action N_IsReleaseCode_Node0_action --> E_IsReleaseCode S_IsReleaseCode --> N_IsReleaseCode_Node0 N_IsReleaseCode_Node1{"The system evaluates the
disposition code for release status"}:::decision N_IsReleaseCode_Node1_action["If the disposition code indicates a
release status, set the release
processing flag otherwise, continue
to PTT code evaluation"]:::main N_IsReleaseCode_Node1 -- Yes --> N_IsReleaseCode_Node1_action N_IsReleaseCode_Node1_action --> E_IsReleaseCode N_IsReleaseCode_Node0 -- No --> N_IsReleaseCode_Node1 N_IsReleaseCode_Node1 -- No --> E_IsReleaseCode
File: GCX016.cbl
GIVEN:
A disposition code exists in the cargo status array
WHEN:
The system evaluates the disposition code for release characteristics
THEN:
The system determines if the code represents a release condition
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
The disposition code is not a hold code
WHEN:
The system evaluates the disposition code for release status
THEN:
If the disposition code indicates a release status, set the release processing flag; otherwise, continue to PTT code evaluation
β Consolidated Acceptance Criteria
- The system processes the release code → the release flag is set to true and release quantities are updated based on the disposition code
- The release code is processed → the cargo release flag is set to true and the release quantity is updated based on the disposition code quantity
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetReleaseFlag(["Start Step"])
E_SetReleaseFlag(["End Step"])
N_SetReleaseFlag_Node0{"The system processes the release
code"}:::decision N_SetReleaseFlag_Node0_action["The release flag is set to true and
release quantities are updated based
on the disposition code"]:::main N_SetReleaseFlag_Node0 -- Yes --> N_SetReleaseFlag_Node0_action N_SetReleaseFlag_Node0_action --> E_SetReleaseFlag S_SetReleaseFlag --> N_SetReleaseFlag_Node0 N_SetReleaseFlag_Node1{"The release code is processed"}:::decision N_SetReleaseFlag_Node1_action["The cargo release flag is set to
true and the release quantity is
updated based on the disposition
code quantity"]:::main N_SetReleaseFlag_Node1 -- Yes --> N_SetReleaseFlag_Node1_action N_SetReleaseFlag_Node1_action --> E_SetReleaseFlag N_SetReleaseFlag_Node0 -- No --> N_SetReleaseFlag_Node1 N_SetReleaseFlag_Node1 -- No --> E_SetReleaseFlag
code"}:::decision N_SetReleaseFlag_Node0_action["The release flag is set to true and
release quantities are updated based
on the disposition code"]:::main N_SetReleaseFlag_Node0 -- Yes --> N_SetReleaseFlag_Node0_action N_SetReleaseFlag_Node0_action --> E_SetReleaseFlag S_SetReleaseFlag --> N_SetReleaseFlag_Node0 N_SetReleaseFlag_Node1{"The release code is processed"}:::decision N_SetReleaseFlag_Node1_action["The cargo release flag is set to
true and the release quantity is
updated based on the disposition
code quantity"]:::main N_SetReleaseFlag_Node1 -- Yes --> N_SetReleaseFlag_Node1_action N_SetReleaseFlag_Node1_action --> E_SetReleaseFlag N_SetReleaseFlag_Node0 -- No --> N_SetReleaseFlag_Node1 N_SetReleaseFlag_Node1 -- No --> E_SetReleaseFlag
File: GCX016.cbl
GIVEN:
A release disposition code is identified in the status array
WHEN:
The system processes the release code
THEN:
- The release flag is set to true
- Release quantities are updated based on the disposition code
File: GCX016.cbl
GIVEN:
A disposition code is classified as a release code
WHEN:
The release code is processed
THEN:
- The cargo release flag is set to true
- The release quantity is updated based on the disposition code quantity
β Consolidated Acceptance Criteria
- If the disposition code for PTT characteristics → the system determines if the code represents a PTT condition
- If the disposition code for PTT status → if the disposition code indicates PTT status, set the PTT processing flag; otherwise, continue to proceed code evaluation
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IsPTTCode(["Start Step"])
E_IsPTTCode(["End Step"])
N_IsPTTCode_Node0{"The system evaluates the
disposition code for PTT
characteristics"}:::decision N_IsPTTCode_Node0_action["The system determines if the code
represents a PTT condition"]:::main N_IsPTTCode_Node0 -- Yes --> N_IsPTTCode_Node0_action N_IsPTTCode_Node0_action --> E_IsPTTCode S_IsPTTCode --> N_IsPTTCode_Node0 N_IsPTTCode_Node1{"The system evaluates the
disposition code for PTT status"}:::decision N_IsPTTCode_Node1_action["If the disposition code indicates
PTT status, set the PTT processing
flag otherwise, continue to proceed
code evaluation"]:::main N_IsPTTCode_Node1 -- Yes --> N_IsPTTCode_Node1_action N_IsPTTCode_Node1_action --> E_IsPTTCode N_IsPTTCode_Node0 -- No --> N_IsPTTCode_Node1 N_IsPTTCode_Node1 -- No --> E_IsPTTCode
disposition code for PTT
characteristics"}:::decision N_IsPTTCode_Node0_action["The system determines if the code
represents a PTT condition"]:::main N_IsPTTCode_Node0 -- Yes --> N_IsPTTCode_Node0_action N_IsPTTCode_Node0_action --> E_IsPTTCode S_IsPTTCode --> N_IsPTTCode_Node0 N_IsPTTCode_Node1{"The system evaluates the
disposition code for PTT status"}:::decision N_IsPTTCode_Node1_action["If the disposition code indicates
PTT status, set the PTT processing
flag otherwise, continue to proceed
code evaluation"]:::main N_IsPTTCode_Node1 -- Yes --> N_IsPTTCode_Node1_action N_IsPTTCode_Node1_action --> E_IsPTTCode N_IsPTTCode_Node0 -- No --> N_IsPTTCode_Node1 N_IsPTTCode_Node1 -- No --> E_IsPTTCode
File: GCX016.cbl
GIVEN:
A disposition code exists in the cargo status array
WHEN:
The system evaluates the disposition code for PTT characteristics
THEN:
The system determines if the code represents a PTT condition
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
The disposition code is not a release code
WHEN:
The system evaluates the disposition code for PTT status
THEN:
If the disposition code indicates PTT status, set the PTT processing flag; otherwise, continue to proceed code evaluation
β Consolidated Acceptance Criteria
- The system processes the PTT code → the PTT flag is set to true and PTT quantities are validated against cargo totals
- The PTT code is processed → the cargo PTT flag is set to true and the PTT quantity is saved from the disposition code
- The system processes the PTT code → the PTT flag is set to true
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetPTTFlag(["Start Step"])
E_SetPTTFlag(["End Step"])
N_SetPTTFlag_Node0{"The system processes the PTT code"}:::decision
N_SetPTTFlag_Node0_action["The PTT flag is set to true and PTT
quantities are validated against
cargo totals"]:::main N_SetPTTFlag_Node0 -- Yes --> N_SetPTTFlag_Node0_action N_SetPTTFlag_Node0_action --> E_SetPTTFlag S_SetPTTFlag --> N_SetPTTFlag_Node0 N_SetPTTFlag_Node1{"The PTT code is processed"}:::decision N_SetPTTFlag_Node1_action["The cargo PTT flag is set to true
and the PTT quantity is saved from
the disposition code"]:::main N_SetPTTFlag_Node1 -- Yes --> N_SetPTTFlag_Node1_action N_SetPTTFlag_Node1_action --> E_SetPTTFlag N_SetPTTFlag_Node0 -- No --> N_SetPTTFlag_Node1 N_SetPTTFlag_Node2{"The system processes the PTT code"}:::decision N_SetPTTFlag_Node2_action["The PTT flag is set to true"]:::main N_SetPTTFlag_Node2 -- Yes --> N_SetPTTFlag_Node2_action N_SetPTTFlag_Node2_action --> E_SetPTTFlag N_SetPTTFlag_Node1 -- No --> N_SetPTTFlag_Node2 N_SetPTTFlag_Node2 -- No --> E_SetPTTFlag
quantities are validated against
cargo totals"]:::main N_SetPTTFlag_Node0 -- Yes --> N_SetPTTFlag_Node0_action N_SetPTTFlag_Node0_action --> E_SetPTTFlag S_SetPTTFlag --> N_SetPTTFlag_Node0 N_SetPTTFlag_Node1{"The PTT code is processed"}:::decision N_SetPTTFlag_Node1_action["The cargo PTT flag is set to true
and the PTT quantity is saved from
the disposition code"]:::main N_SetPTTFlag_Node1 -- Yes --> N_SetPTTFlag_Node1_action N_SetPTTFlag_Node1_action --> E_SetPTTFlag N_SetPTTFlag_Node0 -- No --> N_SetPTTFlag_Node1 N_SetPTTFlag_Node2{"The system processes the PTT code"}:::decision N_SetPTTFlag_Node2_action["The PTT flag is set to true"]:::main N_SetPTTFlag_Node2 -- Yes --> N_SetPTTFlag_Node2_action N_SetPTTFlag_Node2_action --> E_SetPTTFlag N_SetPTTFlag_Node1 -- No --> N_SetPTTFlag_Node2 N_SetPTTFlag_Node2 -- No --> E_SetPTTFlag
File: GCX016.cbl
GIVEN:
A PTT disposition code is identified in the status array
WHEN:
The system processes the PTT code
THEN:
- The ptt flag is set to true
- Ptt quantities are validated against cargo totals
File: GCX016.cbl
GIVEN:
A disposition code is classified as a PTT code
WHEN:
The PTT code is processed
THEN:
- The cargo ptt flag is set to true
- The ptt quantity is saved from the disposition code
File: GCX016.cbl
GIVEN:
A PTT disposition code has been identified
WHEN:
The system processes the PTT code
THEN:
The PTT flag is set to true
β Consolidated Acceptance Criteria
- If the disposition code for proceed characteristics → the system determines if the code represents a proceed condition
- If the disposition code for proceed status → if the disposition code indicates proceed status, set the proceed processing flag; otherwise, continue to arrival code evaluation
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IsProceedCode(["Start Step"])
E_IsProceedCode(["End Step"])
N_IsProceedCode_Node0{"The system evaluates the
disposition code for proceed
characteristics"}:::decision N_IsProceedCode_Node0_action["The system determines if the code
represents a proceed condition"]:::main N_IsProceedCode_Node0 -- Yes --> N_IsProceedCode_Node0_action N_IsProceedCode_Node0_action --> E_IsProceedCode S_IsProceedCode --> N_IsProceedCode_Node0 N_IsProceedCode_Node1{"The system evaluates the
disposition code for proceed status"}:::decision N_IsProceedCode_Node1_action["If the disposition code indicates
proceed status, set the proceed
processing flag otherwise, continue
to arrival code evaluation"]:::main N_IsProceedCode_Node1 -- Yes --> N_IsProceedCode_Node1_action N_IsProceedCode_Node1_action --> E_IsProceedCode N_IsProceedCode_Node0 -- No --> N_IsProceedCode_Node1 N_IsProceedCode_Node1 -- No --> E_IsProceedCode
disposition code for proceed
characteristics"}:::decision N_IsProceedCode_Node0_action["The system determines if the code
represents a proceed condition"]:::main N_IsProceedCode_Node0 -- Yes --> N_IsProceedCode_Node0_action N_IsProceedCode_Node0_action --> E_IsProceedCode S_IsProceedCode --> N_IsProceedCode_Node0 N_IsProceedCode_Node1{"The system evaluates the
disposition code for proceed status"}:::decision N_IsProceedCode_Node1_action["If the disposition code indicates
proceed status, set the proceed
processing flag otherwise, continue
to arrival code evaluation"]:::main N_IsProceedCode_Node1 -- Yes --> N_IsProceedCode_Node1_action N_IsProceedCode_Node1_action --> E_IsProceedCode N_IsProceedCode_Node0 -- No --> N_IsProceedCode_Node1 N_IsProceedCode_Node1 -- No --> E_IsProceedCode
File: GCX016.cbl
GIVEN:
A disposition code exists in the cargo status array
WHEN:
The system evaluates the disposition code for proceed characteristics
THEN:
The system determines if the code represents a proceed condition
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
The disposition code is not a PTT code
WHEN:
The system evaluates the disposition code for proceed status
THEN:
If the disposition code indicates proceed status, set the proceed processing flag; otherwise, continue to arrival code evaluation
β Consolidated Acceptance Criteria
- The system processes the proceed code → the proceed flag is set to true and border arrival date is established
- The proceed code is processed → the cargo proceed flag is set to true and the border arrival date is established
- The system processes the proceed code → the proceed flag is set to true
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetProceedFlag(["Start Step"])
E_SetProceedFlag(["End Step"])
N_SetProceedFlag_Node0{"The system processes the proceed
code"}:::decision N_SetProceedFlag_Node0_action["The proceed flag is set to true and
border arrival date is established"]:::main N_SetProceedFlag_Node0 -- Yes --> N_SetProceedFlag_Node0_action N_SetProceedFlag_Node0_action --> E_SetProceedFlag S_SetProceedFlag --> N_SetProceedFlag_Node0 N_SetProceedFlag_Node1{"The proceed code is processed"}:::decision N_SetProceedFlag_Node1_action["The cargo proceed flag is set to
true and the border arrival date is
established"]:::main N_SetProceedFlag_Node1 -- Yes --> N_SetProceedFlag_Node1_action N_SetProceedFlag_Node1_action --> E_SetProceedFlag N_SetProceedFlag_Node0 -- No --> N_SetProceedFlag_Node1 N_SetProceedFlag_Node2{"The system processes the proceed
code"}:::decision N_SetProceedFlag_Node2_action["The proceed flag is set to true"]:::main N_SetProceedFlag_Node2 -- Yes --> N_SetProceedFlag_Node2_action N_SetProceedFlag_Node2_action --> E_SetProceedFlag N_SetProceedFlag_Node1 -- No --> N_SetProceedFlag_Node2 N_SetProceedFlag_Node2 -- No --> E_SetProceedFlag
code"}:::decision N_SetProceedFlag_Node0_action["The proceed flag is set to true and
border arrival date is established"]:::main N_SetProceedFlag_Node0 -- Yes --> N_SetProceedFlag_Node0_action N_SetProceedFlag_Node0_action --> E_SetProceedFlag S_SetProceedFlag --> N_SetProceedFlag_Node0 N_SetProceedFlag_Node1{"The proceed code is processed"}:::decision N_SetProceedFlag_Node1_action["The cargo proceed flag is set to
true and the border arrival date is
established"]:::main N_SetProceedFlag_Node1 -- Yes --> N_SetProceedFlag_Node1_action N_SetProceedFlag_Node1_action --> E_SetProceedFlag N_SetProceedFlag_Node0 -- No --> N_SetProceedFlag_Node1 N_SetProceedFlag_Node2{"The system processes the proceed
code"}:::decision N_SetProceedFlag_Node2_action["The proceed flag is set to true"]:::main N_SetProceedFlag_Node2 -- Yes --> N_SetProceedFlag_Node2_action N_SetProceedFlag_Node2_action --> E_SetProceedFlag N_SetProceedFlag_Node1 -- No --> N_SetProceedFlag_Node2 N_SetProceedFlag_Node2 -- No --> E_SetProceedFlag
File: GCX016.cbl
GIVEN:
A proceed disposition code is identified in the status array
WHEN:
The system processes the proceed code
THEN:
- The proceed flag is set to true
- Border arrival date is established
File: GCX016.cbl
GIVEN:
A disposition code is classified as a proceed code
WHEN:
The proceed code is processed
THEN:
- The cargo proceed flag is set to true
- The border arrival date is established
File: GCX016.cbl
GIVEN:
A proceed disposition code has been identified
WHEN:
The system processes the proceed code
THEN:
The proceed flag is set to true
β Consolidated Acceptance Criteria
- If the disposition code for arrival characteristics → the system determines if the code represents an arrival condition
- If the disposition code for arrival status → if the disposition code indicates arrival status, set the arrival processing flag; otherwise, continue to export code evaluation
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IsArrivalCode(["Start Step"])
E_IsArrivalCode(["End Step"])
N_IsArrivalCode_Node0{"The system evaluates the
disposition code for arrival
characteristics"}:::decision N_IsArrivalCode_Node0_action["The system determines if the code
represents an arrival condition"]:::main N_IsArrivalCode_Node0 -- Yes --> N_IsArrivalCode_Node0_action N_IsArrivalCode_Node0_action --> E_IsArrivalCode S_IsArrivalCode --> N_IsArrivalCode_Node0 N_IsArrivalCode_Node1{"The system evaluates the
disposition code for arrival status"}:::decision N_IsArrivalCode_Node1_action["If the disposition code indicates
arrival status, set the arrival
processing flag otherwise, continue
to export code evaluation"]:::main N_IsArrivalCode_Node1 -- Yes --> N_IsArrivalCode_Node1_action N_IsArrivalCode_Node1_action --> E_IsArrivalCode N_IsArrivalCode_Node0 -- No --> N_IsArrivalCode_Node1 N_IsArrivalCode_Node1 -- No --> E_IsArrivalCode
disposition code for arrival
characteristics"}:::decision N_IsArrivalCode_Node0_action["The system determines if the code
represents an arrival condition"]:::main N_IsArrivalCode_Node0 -- Yes --> N_IsArrivalCode_Node0_action N_IsArrivalCode_Node0_action --> E_IsArrivalCode S_IsArrivalCode --> N_IsArrivalCode_Node0 N_IsArrivalCode_Node1{"The system evaluates the
disposition code for arrival status"}:::decision N_IsArrivalCode_Node1_action["If the disposition code indicates
arrival status, set the arrival
processing flag otherwise, continue
to export code evaluation"]:::main N_IsArrivalCode_Node1 -- Yes --> N_IsArrivalCode_Node1_action N_IsArrivalCode_Node1_action --> E_IsArrivalCode N_IsArrivalCode_Node0 -- No --> N_IsArrivalCode_Node1 N_IsArrivalCode_Node1 -- No --> E_IsArrivalCode
File: GCX016.cbl
GIVEN:
A disposition code exists in the cargo status array
WHEN:
The system evaluates the disposition code for arrival characteristics
THEN:
The system determines if the code represents an arrival condition
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
The disposition code is not a proceed code
WHEN:
The system evaluates the disposition code for arrival status
THEN:
If the disposition code indicates arrival status, set the arrival processing flag; otherwise, continue to export code evaluation
β Consolidated Acceptance Criteria
- The system processes the arrival code → the arrival flag is set to true
- The arrival code is processed → the cargo arrival flag is set to true
- The system processes the arrival code → the arrival flag is set to true
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetArrivalFlag(["Start Step"])
E_SetArrivalFlag(["End Step"])
N_SetArrivalFlag_Node0{"The system processes the arrival
code"}:::decision N_SetArrivalFlag_Node0_action["The arrival flag is set to true"]:::main N_SetArrivalFlag_Node0 -- Yes --> N_SetArrivalFlag_Node0_action N_SetArrivalFlag_Node0_action --> E_SetArrivalFlag S_SetArrivalFlag --> N_SetArrivalFlag_Node0 N_SetArrivalFlag_Node1{"The arrival code is processed"}:::decision N_SetArrivalFlag_Node1_action["The cargo arrival flag is set to
true"]:::main N_SetArrivalFlag_Node1 -- Yes --> N_SetArrivalFlag_Node1_action N_SetArrivalFlag_Node1_action --> E_SetArrivalFlag N_SetArrivalFlag_Node0 -- No --> N_SetArrivalFlag_Node1 N_SetArrivalFlag_Node2{"The system processes the arrival
code"}:::decision N_SetArrivalFlag_Node2_action["The arrival flag is set to true"]:::main N_SetArrivalFlag_Node2 -- Yes --> N_SetArrivalFlag_Node2_action N_SetArrivalFlag_Node2_action --> E_SetArrivalFlag N_SetArrivalFlag_Node1 -- No --> N_SetArrivalFlag_Node2 N_SetArrivalFlag_Node2 -- No --> E_SetArrivalFlag
code"}:::decision N_SetArrivalFlag_Node0_action["The arrival flag is set to true"]:::main N_SetArrivalFlag_Node0 -- Yes --> N_SetArrivalFlag_Node0_action N_SetArrivalFlag_Node0_action --> E_SetArrivalFlag S_SetArrivalFlag --> N_SetArrivalFlag_Node0 N_SetArrivalFlag_Node1{"The arrival code is processed"}:::decision N_SetArrivalFlag_Node1_action["The cargo arrival flag is set to
true"]:::main N_SetArrivalFlag_Node1 -- Yes --> N_SetArrivalFlag_Node1_action N_SetArrivalFlag_Node1_action --> E_SetArrivalFlag N_SetArrivalFlag_Node0 -- No --> N_SetArrivalFlag_Node1 N_SetArrivalFlag_Node2{"The system processes the arrival
code"}:::decision N_SetArrivalFlag_Node2_action["The arrival flag is set to true"]:::main N_SetArrivalFlag_Node2 -- Yes --> N_SetArrivalFlag_Node2_action N_SetArrivalFlag_Node2_action --> E_SetArrivalFlag N_SetArrivalFlag_Node1 -- No --> N_SetArrivalFlag_Node2 N_SetArrivalFlag_Node2 -- No --> E_SetArrivalFlag
File: GCX016.cbl
GIVEN:
An arrival disposition code is identified in the status array
WHEN:
The system processes the arrival code
THEN:
The arrival flag is set to true
File: GCX016.cbl
GIVEN:
A disposition code is classified as an arrival code
WHEN:
The arrival code is processed
THEN:
The cargo arrival flag is set to true
File: GCX016.cbl
GIVEN:
An arrival disposition code has been identified
WHEN:
The system processes the arrival code
THEN:
The arrival flag is set to true
β Consolidated Acceptance Criteria
- If the disposition code for export characteristics → the system determines if the code represents an export condition
- If the disposition code for export status → if the disposition code indicates export status, set the export processing flag; otherwise, continue to FDA hold code evaluation
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IsExportCode(["Start Step"])
E_IsExportCode(["End Step"])
N_IsExportCode_Node0{"The system evaluates the
disposition code for export
characteristics"}:::decision N_IsExportCode_Node0_action["The system determines if the code
represents an export condition"]:::main N_IsExportCode_Node0 -- Yes --> N_IsExportCode_Node0_action N_IsExportCode_Node0_action --> E_IsExportCode S_IsExportCode --> N_IsExportCode_Node0 N_IsExportCode_Node1{"The system evaluates the
disposition code for export status"}:::decision N_IsExportCode_Node1_action["If the disposition code indicates
export status, set the export
processing flag otherwise, continue
to FDA hold code evaluation"]:::main N_IsExportCode_Node1 -- Yes --> N_IsExportCode_Node1_action N_IsExportCode_Node1_action --> E_IsExportCode N_IsExportCode_Node0 -- No --> N_IsExportCode_Node1 N_IsExportCode_Node1 -- No --> E_IsExportCode
disposition code for export
characteristics"}:::decision N_IsExportCode_Node0_action["The system determines if the code
represents an export condition"]:::main N_IsExportCode_Node0 -- Yes --> N_IsExportCode_Node0_action N_IsExportCode_Node0_action --> E_IsExportCode S_IsExportCode --> N_IsExportCode_Node0 N_IsExportCode_Node1{"The system evaluates the
disposition code for export status"}:::decision N_IsExportCode_Node1_action["If the disposition code indicates
export status, set the export
processing flag otherwise, continue
to FDA hold code evaluation"]:::main N_IsExportCode_Node1 -- Yes --> N_IsExportCode_Node1_action N_IsExportCode_Node1_action --> E_IsExportCode N_IsExportCode_Node0 -- No --> N_IsExportCode_Node1 N_IsExportCode_Node1 -- No --> E_IsExportCode
File: GCX016.cbl
GIVEN:
A disposition code exists in the cargo status array
WHEN:
The system evaluates the disposition code for export characteristics
THEN:
The system determines if the code represents an export condition
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
The disposition code is not an arrival code
WHEN:
The system evaluates the disposition code for export status
THEN:
If the disposition code indicates export status, set the export processing flag; otherwise, continue to FDA hold code evaluation
β Consolidated Acceptance Criteria
- The system processes the export code → the export flag is set to true
- The export code is processed → the cargo export flag is set to true
- The system processes the export code → the export flag is set to true
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetExportFlag(["Start Step"])
E_SetExportFlag(["End Step"])
N_SetExportFlag_Node0{"The system processes the export
code"}:::decision N_SetExportFlag_Node0_action["The export flag is set to true"]:::main N_SetExportFlag_Node0 -- Yes --> N_SetExportFlag_Node0_action N_SetExportFlag_Node0_action --> E_SetExportFlag S_SetExportFlag --> N_SetExportFlag_Node0 N_SetExportFlag_Node1{"The export code is processed"}:::decision N_SetExportFlag_Node1_action["The cargo export flag is set to
true"]:::main N_SetExportFlag_Node1 -- Yes --> N_SetExportFlag_Node1_action N_SetExportFlag_Node1_action --> E_SetExportFlag N_SetExportFlag_Node0 -- No --> N_SetExportFlag_Node1 N_SetExportFlag_Node2{"The system processes the export
code"}:::decision N_SetExportFlag_Node2_action["The export flag is set to true"]:::main N_SetExportFlag_Node2 -- Yes --> N_SetExportFlag_Node2_action N_SetExportFlag_Node2_action --> E_SetExportFlag N_SetExportFlag_Node1 -- No --> N_SetExportFlag_Node2 N_SetExportFlag_Node2 -- No --> E_SetExportFlag
code"}:::decision N_SetExportFlag_Node0_action["The export flag is set to true"]:::main N_SetExportFlag_Node0 -- Yes --> N_SetExportFlag_Node0_action N_SetExportFlag_Node0_action --> E_SetExportFlag S_SetExportFlag --> N_SetExportFlag_Node0 N_SetExportFlag_Node1{"The export code is processed"}:::decision N_SetExportFlag_Node1_action["The cargo export flag is set to
true"]:::main N_SetExportFlag_Node1 -- Yes --> N_SetExportFlag_Node1_action N_SetExportFlag_Node1_action --> E_SetExportFlag N_SetExportFlag_Node0 -- No --> N_SetExportFlag_Node1 N_SetExportFlag_Node2{"The system processes the export
code"}:::decision N_SetExportFlag_Node2_action["The export flag is set to true"]:::main N_SetExportFlag_Node2 -- Yes --> N_SetExportFlag_Node2_action N_SetExportFlag_Node2_action --> E_SetExportFlag N_SetExportFlag_Node1 -- No --> N_SetExportFlag_Node2 N_SetExportFlag_Node2 -- No --> E_SetExportFlag
File: GCX016.cbl
GIVEN:
An export disposition code is identified in the status array
WHEN:
The system processes the export code
THEN:
The export flag is set to true
File: GCX016.cbl
GIVEN:
A disposition code is classified as an export code
WHEN:
The export code is processed
THEN:
The cargo export flag is set to true
File: GCX016.cbl
GIVEN:
An export disposition code has been identified
WHEN:
The system processes the export code
THEN:
The export flag is set to true
β Consolidated Acceptance Criteria
- If the disposition code for FDA characteristics → the system determines if the code represents an FDA hold condition
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IsFDACode(["Start Step"])
E_IsFDACode(["End Step"])
N_IsFDACode_Node0{"The system evaluates the
disposition code for FDA
characteristics"}:::decision N_IsFDACode_Node0_action["The system determines if the code
represents an FDA hold condition"]:::main N_IsFDACode_Node0 -- Yes --> N_IsFDACode_Node0_action N_IsFDACode_Node0_action --> E_IsFDACode S_IsFDACode --> N_IsFDACode_Node0 N_IsFDACode_Node0 -- No --> E_IsFDACode
disposition code for FDA
characteristics"}:::decision N_IsFDACode_Node0_action["The system determines if the code
represents an FDA hold condition"]:::main N_IsFDACode_Node0 -- Yes --> N_IsFDACode_Node0_action N_IsFDACode_Node0_action --> E_IsFDACode S_IsFDACode --> N_IsFDACode_Node0 N_IsFDACode_Node0 -- No --> E_IsFDACode
File: GCX016.cbl
GIVEN:
A disposition code exists in the cargo status array
WHEN:
The system evaluates the disposition code for FDA characteristics
THEN:
The system determines if the code represents an FDA hold condition
β Consolidated Acceptance Criteria
- The system processes the FDA code → the FDA hold flag is set to true and FDA location status is determined
- The FDA code is processed → the cargo FDA hold flag is set to true
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetFDAHoldFlag(["Start Step"])
E_SetFDAHoldFlag(["End Step"])
N_SetFDAHoldFlag_Node0{"The system processes the FDA code"}:::decision
N_SetFDAHoldFlag_Node0_action["The FDA hold flag is set to true
and FDA location status is
determined"]:::main N_SetFDAHoldFlag_Node0 -- Yes --> N_SetFDAHoldFlag_Node0_action N_SetFDAHoldFlag_Node0_action --> E_SetFDAHoldFlag S_SetFDAHoldFlag --> N_SetFDAHoldFlag_Node0 N_SetFDAHoldFlag_Node1{"The FDA code is processed"}:::decision N_SetFDAHoldFlag_Node1_action["The cargo FDA hold flag is set to
true"]:::main N_SetFDAHoldFlag_Node1 -- Yes --> N_SetFDAHoldFlag_Node1_action N_SetFDAHoldFlag_Node1_action --> E_SetFDAHoldFlag N_SetFDAHoldFlag_Node0 -- No --> N_SetFDAHoldFlag_Node1 N_SetFDAHoldFlag_Node1 -- No --> E_SetFDAHoldFlag
and FDA location status is
determined"]:::main N_SetFDAHoldFlag_Node0 -- Yes --> N_SetFDAHoldFlag_Node0_action N_SetFDAHoldFlag_Node0_action --> E_SetFDAHoldFlag S_SetFDAHoldFlag --> N_SetFDAHoldFlag_Node0 N_SetFDAHoldFlag_Node1{"The FDA code is processed"}:::decision N_SetFDAHoldFlag_Node1_action["The cargo FDA hold flag is set to
true"]:::main N_SetFDAHoldFlag_Node1 -- Yes --> N_SetFDAHoldFlag_Node1_action N_SetFDAHoldFlag_Node1_action --> E_SetFDAHoldFlag N_SetFDAHoldFlag_Node0 -- No --> N_SetFDAHoldFlag_Node1 N_SetFDAHoldFlag_Node1 -- No --> E_SetFDAHoldFlag
File: GCX016.cbl
GIVEN:
An FDA disposition code is identified in the status array
WHEN:
The system processes the FDA code
THEN:
- The fda hold flag is set to true
- Fda location status is determined
File: GCX016.cbl
GIVEN:
A disposition code is classified as an FDA code
WHEN:
The FDA code is processed
THEN:
The cargo FDA hold flag is set to true
β Consolidated Acceptance Criteria
- The system analyzes the combined flag states → the system determines partial release status based on quantity comparisons
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_DeterminePartialReleaseStatus(["Start Step"])
E_DeterminePartialReleaseStatus(["End Step"])
N_DeterminePartialReleaseStatus_Node0{"The system analyzes the combined
flag states"}:::decision N_DeterminePartialReleaseStatus_Node0_action["The system determines partial
release status based on quantity
comparisons"]:::main N_DeterminePartialReleaseStatus_Node0 -- Yes --> N_DeterminePartialReleaseStatus_Node0_action N_DeterminePartialReleaseStatus_Node0_action --> E_DeterminePartialReleaseStatus S_DeterminePartialReleaseStatus --> N_DeterminePartialReleaseStatus_Node0 N_DeterminePartialReleaseStatus_Node0 -- No --> E_DeterminePartialReleaseStatus
flag states"}:::decision N_DeterminePartialReleaseStatus_Node0_action["The system determines partial
release status based on quantity
comparisons"]:::main N_DeterminePartialReleaseStatus_Node0 -- Yes --> N_DeterminePartialReleaseStatus_Node0_action N_DeterminePartialReleaseStatus_Node0_action --> E_DeterminePartialReleaseStatus S_DeterminePartialReleaseStatus --> N_DeterminePartialReleaseStatus_Node0 N_DeterminePartialReleaseStatus_Node0 -- No --> E_DeterminePartialReleaseStatus
File: GCX016.cbl
GIVEN:
Both hold and release flags are set to true for a cargo record
WHEN:
The system analyzes the combined flag states
THEN:
The system determines partial release status based on quantity comparisons
β Consolidated Acceptance Criteria
- The PTT quantity is insufficient compared to total cargo quantity → the system sets hold on piece counts flag to true
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetHoldonPieceCounts(["Start Step"])
E_SetHoldonPieceCounts(["End Step"])
N_SetHoldonPieceCounts_Node0{"The PTT quantity is insufficient
compared to total cargo quantity"}:::decision N_SetHoldonPieceCounts_Node0_action["The system sets hold on piece
counts flag to true"]:::main N_SetHoldonPieceCounts_Node0 -- Yes --> N_SetHoldonPieceCounts_Node0_action N_SetHoldonPieceCounts_Node0_action --> E_SetHoldonPieceCounts S_SetHoldonPieceCounts --> N_SetHoldonPieceCounts_Node0 N_SetHoldonPieceCounts_Node0 -- No --> E_SetHoldonPieceCounts
compared to total cargo quantity"}:::decision N_SetHoldonPieceCounts_Node0_action["The system sets hold on piece
counts flag to true"]:::main N_SetHoldonPieceCounts_Node0 -- Yes --> N_SetHoldonPieceCounts_Node0_action N_SetHoldonPieceCounts_Node0_action --> E_SetHoldonPieceCounts S_SetHoldonPieceCounts --> N_SetHoldonPieceCounts_Node0 N_SetHoldonPieceCounts_Node0 -- No --> E_SetHoldonPieceCounts
File: GCX016.cbl
GIVEN:
PTT flag is set to true for a cargo record
WHEN:
The PTT quantity is insufficient compared to total cargo quantity
THEN:
The system sets hold on piece counts flag to true
β Consolidated Acceptance Criteria
- If proceed conditions → the proceed status is activated for the cargo record
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetProceedStatusActive(["Start Step"])
E_SetProceedStatusActive(["End Step"])
N_SetProceedStatusActive_Node0{"The system evaluates proceed
conditions"}:::decision N_SetProceedStatusActive_Node0_action["The proceed status is activated for
the cargo record"]:::main N_SetProceedStatusActive_Node0 -- Yes --> N_SetProceedStatusActive_Node0_action N_SetProceedStatusActive_Node0_action --> E_SetProceedStatusActive S_SetProceedStatusActive --> N_SetProceedStatusActive_Node0 N_SetProceedStatusActive_Node0 -- No --> E_SetProceedStatusActive
conditions"}:::decision N_SetProceedStatusActive_Node0_action["The proceed status is activated for
the cargo record"]:::main N_SetProceedStatusActive_Node0 -- Yes --> N_SetProceedStatusActive_Node0_action N_SetProceedStatusActive_Node0_action --> E_SetProceedStatusActive S_SetProceedStatusActive --> N_SetProceedStatusActive_Node0 N_SetProceedStatusActive_Node0 -- No --> E_SetProceedStatusActive
File: GCX016.cbl
GIVEN:
Proceed flag is set to true and border arrival date is established
WHEN:
The system evaluates proceed conditions
THEN:
The proceed status is activated for the cargo record
β Consolidated Acceptance Criteria
- The system resolves conflicting status flags → export status takes priority over arrival status
- Both statuses are being evaluated for application → export status is applied and arrival status is overridden
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_PrioritizeExportStatus(["Start Step"])
E_PrioritizeExportStatus(["End Step"])
N_PrioritizeExportStatus_Node0{"The system resolves conflicting
status flags"}:::decision N_PrioritizeExportStatus_Node0_action["Export status takes priority over
arrival status"]:::main N_PrioritizeExportStatus_Node0 -- Yes --> N_PrioritizeExportStatus_Node0_action N_PrioritizeExportStatus_Node0_action --> E_PrioritizeExportStatus S_PrioritizeExportStatus --> N_PrioritizeExportStatus_Node0 N_PrioritizeExportStatus_Node1{"Both statuses are being evaluated
for application"}:::decision N_PrioritizeExportStatus_Node1_action["Export status is applied and
arrival status is overridden"]:::main N_PrioritizeExportStatus_Node1 -- Yes --> N_PrioritizeExportStatus_Node1_action N_PrioritizeExportStatus_Node1_action --> E_PrioritizeExportStatus N_PrioritizeExportStatus_Node0 -- No --> N_PrioritizeExportStatus_Node1 N_PrioritizeExportStatus_Node1 -- No --> E_PrioritizeExportStatus
status flags"}:::decision N_PrioritizeExportStatus_Node0_action["Export status takes priority over
arrival status"]:::main N_PrioritizeExportStatus_Node0 -- Yes --> N_PrioritizeExportStatus_Node0_action N_PrioritizeExportStatus_Node0_action --> E_PrioritizeExportStatus S_PrioritizeExportStatus --> N_PrioritizeExportStatus_Node0 N_PrioritizeExportStatus_Node1{"Both statuses are being evaluated
for application"}:::decision N_PrioritizeExportStatus_Node1_action["Export status is applied and
arrival status is overridden"]:::main N_PrioritizeExportStatus_Node1 -- Yes --> N_PrioritizeExportStatus_Node1_action N_PrioritizeExportStatus_Node1_action --> E_PrioritizeExportStatus N_PrioritizeExportStatus_Node0 -- No --> N_PrioritizeExportStatus_Node1 N_PrioritizeExportStatus_Node1 -- No --> E_PrioritizeExportStatus
File: GCX016.cbl
GIVEN:
Both export and arrival flags are set to true for a cargo record
WHEN:
The system resolves conflicting status flags
THEN:
Export status takes priority over arrival status
File: GCX016.cbl
GIVEN:
Cargo has both arrival and export flags set simultaneously
WHEN:
Both statuses are being evaluated for application
THEN:
- Export status is applied
- Arrival status is overridden
β Consolidated Acceptance Criteria
- The system finalizes cargo state flags → fDA hold status overrides other release flags and takes precedence
- The system applies FDA override logic → all other release flags are overridden AND cleared by FDA hold priority
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_OverrideOtherReleaseFlags(["Start Step"])
E_OverrideOtherReleaseFlags(["End Step"])
N_OverrideOtherReleaseFlags_Node0{"The system finalizes cargo state
flags"}:::decision N_OverrideOtherReleaseFlags_Node0_action["FDA hold status overrides other
release flags and takes precedence"]:::main N_OverrideOtherReleaseFlags_Node0 -- Yes --> N_OverrideOtherReleaseFlags_Node0_action N_OverrideOtherReleaseFlags_Node0_action --> E_OverrideOtherReleaseFlags S_OverrideOtherReleaseFlags --> N_OverrideOtherReleaseFlags_Node0 N_OverrideOtherReleaseFlags_Node1{"The system applies FDA override
logic"}:::decision N_OverrideOtherReleaseFlags_Node1_action["All other release flags are
overridden AND cleared by FDA hold
priority"]:::main N_OverrideOtherReleaseFlags_Node1 -- Yes --> N_OverrideOtherReleaseFlags_Node1_action N_OverrideOtherReleaseFlags_Node1_action --> E_OverrideOtherReleaseFlags N_OverrideOtherReleaseFlags_Node0 -- No --> N_OverrideOtherReleaseFlags_Node1 N_OverrideOtherReleaseFlags_Node1 -- No --> E_OverrideOtherReleaseFlags
flags"}:::decision N_OverrideOtherReleaseFlags_Node0_action["FDA hold status overrides other
release flags and takes precedence"]:::main N_OverrideOtherReleaseFlags_Node0 -- Yes --> N_OverrideOtherReleaseFlags_Node0_action N_OverrideOtherReleaseFlags_Node0_action --> E_OverrideOtherReleaseFlags S_OverrideOtherReleaseFlags --> N_OverrideOtherReleaseFlags_Node0 N_OverrideOtherReleaseFlags_Node1{"The system applies FDA override
logic"}:::decision N_OverrideOtherReleaseFlags_Node1_action["All other release flags are
overridden AND cleared by FDA hold
priority"]:::main N_OverrideOtherReleaseFlags_Node1 -- Yes --> N_OverrideOtherReleaseFlags_Node1_action N_OverrideOtherReleaseFlags_Node1_action --> E_OverrideOtherReleaseFlags N_OverrideOtherReleaseFlags_Node0 -- No --> N_OverrideOtherReleaseFlags_Node1 N_OverrideOtherReleaseFlags_Node1 -- No --> E_OverrideOtherReleaseFlags
File: GCX016.cbl
GIVEN:
FDA hold flag is set to true and FDA location is at destination
WHEN:
The system finalizes cargo state flags
THEN:
- Fda hold status overrides other release flags
- Takes precedence
File: GCX016.cbl
GIVEN:
FDA hold priority has been established AND other release flags are currently set
WHEN:
The system applies FDA override logic
THEN:
- All other release flags are overridden
- Cleared by fda hold priority
β Consolidated Acceptance Criteria
- The status analysis process begins → all analysis variables are initialized to default values including hold flags, release flags, PTT flags, proceed flags, arrival flags, export flags, FDA hold flags, and quantity counters
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_InitializeAnalysisVariables(["Start Step"])
E_InitializeAnalysisVariables(["End Step"])
N_InitializeAnalysisVariables_Node0{"The status analysis process begins"}:::decision
N_InitializeAnalysisVariables_Node0_action["All analysis variables are
initialized to default values
including hold flags, release flags,
PTT flags, proceed flags, arrival
flags, export flags, FDA hold flags,
and quantity counters"]:::main N_InitializeAnalysisVariables_Node0 -- Yes --> N_InitializeAnalysisVariables_Node0_action N_InitializeAnalysisVariables_Node0_action --> E_InitializeAnalysisVariables S_InitializeAnalysisVariables --> N_InitializeAnalysisVariables_Node0 N_InitializeAnalysisVariables_Node0 -- No --> E_InitializeAnalysisVariables
initialized to default values
including hold flags, release flags,
PTT flags, proceed flags, arrival
flags, export flags, FDA hold flags,
and quantity counters"]:::main N_InitializeAnalysisVariables_Node0 -- Yes --> N_InitializeAnalysisVariables_Node0_action N_InitializeAnalysisVariables_Node0_action --> E_InitializeAnalysisVariables S_InitializeAnalysisVariables --> N_InitializeAnalysisVariables_Node0 N_InitializeAnalysisVariables_Node0 -- No --> E_InitializeAnalysisVariables
File: GCX016.cbl
GIVEN:
The system is about to analyze the S09A status array
WHEN:
The status analysis process begins
THEN:
All analysis variables are initialized to default values including hold flags, release flags, PTT flags, proceed flags, arrival flags, export flags, FDA hold flags, and quantity counters
β Consolidated Acceptance Criteria
- The system begins array processing → the array index is set to position 1 to start processing from the first element
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetArrayIndextoFirstElement(["Start Step"])
E_SetArrayIndextoFirstElement(["End Step"])
N_SetArrayIndextoFirstElement_Node0{"The system begins array processing"}:::decision
N_SetArrayIndextoFirstElement_Node0_action["The array index is set to position
1 to start processing from the first
element"]:::main N_SetArrayIndextoFirstElement_Node0 -- Yes --> N_SetArrayIndextoFirstElement_Node0_action N_SetArrayIndextoFirstElement_Node0_action --> E_SetArrayIndextoFirstElement S_SetArrayIndextoFirstElement --> N_SetArrayIndextoFirstElement_Node0 N_SetArrayIndextoFirstElement_Node0 -- No --> E_SetArrayIndextoFirstElement
1 to start processing from the first
element"]:::main N_SetArrayIndextoFirstElement_Node0 -- Yes --> N_SetArrayIndextoFirstElement_Node0_action N_SetArrayIndextoFirstElement_Node0_action --> E_SetArrayIndextoFirstElement S_SetArrayIndextoFirstElement --> N_SetArrayIndextoFirstElement_Node0 N_SetArrayIndextoFirstElement_Node0 -- No --> E_SetArrayIndextoFirstElement
File: GCX016.cbl
GIVEN:
The S09A status array exists and contains elements
WHEN:
The system begins array processing
THEN:
The array index is set to position 1 to start processing from the first element
β Consolidated Acceptance Criteria
- The system checks the current array index position → if the current index is within the array bounds, continue processing; otherwise, complete the analysis
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MoreElementsinS09AArray(["Start Step"])
E_MoreElementsinS09AArray(["End Step"])
N_MoreElementsinS09AArray_Node0{"The system checks the current array
index position"}:::decision N_MoreElementsinS09AArray_Node0_action["If the current index is within the
array bounds, continue processing
otherwise, complete the analysis"]:::main N_MoreElementsinS09AArray_Node0 -- Yes --> N_MoreElementsinS09AArray_Node0_action N_MoreElementsinS09AArray_Node0_action --> E_MoreElementsinS09AArray S_MoreElementsinS09AArray --> N_MoreElementsinS09AArray_Node0 N_MoreElementsinS09AArray_Node0 -- No --> E_MoreElementsinS09AArray
index position"}:::decision N_MoreElementsinS09AArray_Node0_action["If the current index is within the
array bounds, continue processing
otherwise, complete the analysis"]:::main N_MoreElementsinS09AArray_Node0 -- Yes --> N_MoreElementsinS09AArray_Node0_action N_MoreElementsinS09AArray_Node0_action --> E_MoreElementsinS09AArray S_MoreElementsinS09AArray --> N_MoreElementsinS09AArray_Node0 N_MoreElementsinS09AArray_Node0 -- No --> E_MoreElementsinS09AArray
File: GCX016.cbl
GIVEN:
The system is processing the S09A status array
WHEN:
The system checks the current array index position
THEN:
If the current index is within the array bounds, continue processing; otherwise, complete the analysis
β Consolidated Acceptance Criteria
- The system analyzes the array element structure → the disposition code is extracted from the element and made available for classification
- Disposition code extraction is required → system extracts the disposition code that indicates the specific train operation type
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExtractDispositionCode(["Start Step"])
E_ExtractDispositionCode(["End Step"])
N_ExtractDispositionCode_Node0{"The system analyzes the array
element structure"}:::decision N_ExtractDispositionCode_Node0_action["The disposition code is extracted
from the element and made available
for classification"]:::main N_ExtractDispositionCode_Node0 -- Yes --> N_ExtractDispositionCode_Node0_action N_ExtractDispositionCode_Node0_action --> E_ExtractDispositionCode S_ExtractDispositionCode --> N_ExtractDispositionCode_Node0 N_ExtractDispositionCode_Node1{"Disposition code extraction is
required"}:::decision N_ExtractDispositionCode_Node1_action["System extracts the disposition
code that indicates the specific
train operation type"]:::main N_ExtractDispositionCode_Node1 -- Yes --> N_ExtractDispositionCode_Node1_action N_ExtractDispositionCode_Node1_action --> E_ExtractDispositionCode N_ExtractDispositionCode_Node0 -- No --> N_ExtractDispositionCode_Node1 N_ExtractDispositionCode_Node1 -- No --> E_ExtractDispositionCode
element structure"}:::decision N_ExtractDispositionCode_Node0_action["The disposition code is extracted
from the element and made available
for classification"]:::main N_ExtractDispositionCode_Node0 -- Yes --> N_ExtractDispositionCode_Node0_action N_ExtractDispositionCode_Node0_action --> E_ExtractDispositionCode S_ExtractDispositionCode --> N_ExtractDispositionCode_Node0 N_ExtractDispositionCode_Node1{"Disposition code extraction is
required"}:::decision N_ExtractDispositionCode_Node1_action["System extracts the disposition
code that indicates the specific
train operation type"]:::main N_ExtractDispositionCode_Node1 -- Yes --> N_ExtractDispositionCode_Node1_action N_ExtractDispositionCode_Node1_action --> E_ExtractDispositionCode N_ExtractDispositionCode_Node0 -- No --> N_ExtractDispositionCode_Node1 N_ExtractDispositionCode_Node1 -- No --> E_ExtractDispositionCode
File: GCX016.cbl
GIVEN:
A valid S09A array element is being processed
WHEN:
The system analyzes the array element structure
THEN:
- The disposition code is extracted from the element
- Made available for classification
File: GCX016.cbl
GIVEN:
A V9 event detail segment is being processed
WHEN:
Disposition code extraction is required
THEN:
System extracts the disposition code that indicates the specific train operation type
β Consolidated Acceptance Criteria
- The system continues element analysis → status information including flags and indicators are extracted from the element
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExtractStatusInformation(["Start Step"])
E_ExtractStatusInformation(["End Step"])
N_ExtractStatusInformation_Node0{"The system continues element
analysis"}:::decision N_ExtractStatusInformation_Node0_action["Status information including flags
and indicators are extracted from
the element"]:::main N_ExtractStatusInformation_Node0 -- Yes --> N_ExtractStatusInformation_Node0_action N_ExtractStatusInformation_Node0_action --> E_ExtractStatusInformation S_ExtractStatusInformation --> N_ExtractStatusInformation_Node0 N_ExtractStatusInformation_Node0 -- No --> E_ExtractStatusInformation
analysis"}:::decision N_ExtractStatusInformation_Node0_action["Status information including flags
and indicators are extracted from
the element"]:::main N_ExtractStatusInformation_Node0 -- Yes --> N_ExtractStatusInformation_Node0_action N_ExtractStatusInformation_Node0_action --> E_ExtractStatusInformation S_ExtractStatusInformation --> N_ExtractStatusInformation_Node0 N_ExtractStatusInformation_Node0 -- No --> E_ExtractStatusInformation
File: GCX016.cbl
GIVEN:
A disposition code has been extracted from the array element
WHEN:
The system continues element analysis
THEN:
- Status information including flags
- Indicators are extracted from the element
β Consolidated Acceptance Criteria
- The system continues detailed element analysis → location information including border and destination indicators are extracted from the element
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExtractLocationInformation(["Start Step"])
E_ExtractLocationInformation(["End Step"])
N_ExtractLocationInformation_Node0{"The system continues detailed
element analysis"}:::decision N_ExtractLocationInformation_Node0_action["Location information including
border and destination indicators
are extracted from the element"]:::main N_ExtractLocationInformation_Node0 -- Yes --> N_ExtractLocationInformation_Node0_action N_ExtractLocationInformation_Node0_action --> E_ExtractLocationInformation S_ExtractLocationInformation --> N_ExtractLocationInformation_Node0 N_ExtractLocationInformation_Node0 -- No --> E_ExtractLocationInformation
element analysis"}:::decision N_ExtractLocationInformation_Node0_action["Location information including
border and destination indicators
are extracted from the element"]:::main N_ExtractLocationInformation_Node0 -- Yes --> N_ExtractLocationInformation_Node0_action N_ExtractLocationInformation_Node0_action --> E_ExtractLocationInformation S_ExtractLocationInformation --> N_ExtractLocationInformation_Node0 N_ExtractLocationInformation_Node0 -- No --> E_ExtractLocationInformation
File: GCX016.cbl
GIVEN:
Status information has been extracted from the array element
WHEN:
The system continues detailed element analysis
THEN:
- Location information including border
- Destination indicators are extracted from the element
β Consolidated Acceptance Criteria
- The system completes element data extraction → quantity information including release quantities and totals are extracted from the element
- The system processes quantity fields → quantity information is extracted and stored for quantity-based processing logic
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExtractQuantityInformation(["Start Step"])
E_ExtractQuantityInformation(["End Step"])
N_ExtractQuantityInformation_Node0{"The system completes element data
extraction"}:::decision N_ExtractQuantityInformation_Node0_action["Quantity information including
release quantities and totals are
extracted from the element"]:::main N_ExtractQuantityInformation_Node0 -- Yes --> N_ExtractQuantityInformation_Node0_action N_ExtractQuantityInformation_Node0_action --> E_ExtractQuantityInformation S_ExtractQuantityInformation --> N_ExtractQuantityInformation_Node0 N_ExtractQuantityInformation_Node1{"The system processes quantity
fields"}:::decision N_ExtractQuantityInformation_Node1_action["Quantity information is extracted
and stored for quantity-based
processing logic"]:::main N_ExtractQuantityInformation_Node1 -- Yes --> N_ExtractQuantityInformation_Node1_action N_ExtractQuantityInformation_Node1_action --> E_ExtractQuantityInformation N_ExtractQuantityInformation_Node0 -- No --> N_ExtractQuantityInformation_Node1 N_ExtractQuantityInformation_Node1 -- No --> E_ExtractQuantityInformation
extraction"}:::decision N_ExtractQuantityInformation_Node0_action["Quantity information including
release quantities and totals are
extracted from the element"]:::main N_ExtractQuantityInformation_Node0 -- Yes --> N_ExtractQuantityInformation_Node0_action N_ExtractQuantityInformation_Node0_action --> E_ExtractQuantityInformation S_ExtractQuantityInformation --> N_ExtractQuantityInformation_Node0 N_ExtractQuantityInformation_Node1{"The system processes quantity
fields"}:::decision N_ExtractQuantityInformation_Node1_action["Quantity information is extracted
and stored for quantity-based
processing logic"]:::main N_ExtractQuantityInformation_Node1 -- Yes --> N_ExtractQuantityInformation_Node1_action N_ExtractQuantityInformation_Node1_action --> E_ExtractQuantityInformation N_ExtractQuantityInformation_Node0 -- No --> N_ExtractQuantityInformation_Node1 N_ExtractQuantityInformation_Node1 -- No --> E_ExtractQuantityInformation
File: GCX016.cbl
GIVEN:
Location information has been extracted from the array element
WHEN:
The system completes element data extraction
THEN:
- Quantity information including release quantities
- Totals are extracted from the element
File: GCX016.cbl
GIVEN:
Status information contains quantity data
WHEN:
The system processes quantity fields
THEN:
- Quantity information is extracted
- Stored for quantity-based processing logic
β Consolidated Acceptance Criteria
- The system processes the hold disposition → the hold status flag is set to true to indicate cargo is held
- The system updates the cargo status flags → the system sets the hold status flag to indicate the cargo is held
- The system processes the hold code → the hold status flag is set to true and hold processing continues
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetHoldStatusFlag(["Start Step"])
E_SetHoldStatusFlag(["End Step"])
N_SetHoldStatusFlag_Node0{"The system processes the hold
disposition"}:::decision N_SetHoldStatusFlag_Node0_action["The hold status flag is set to true
to indicate cargo is held"]:::main N_SetHoldStatusFlag_Node0 -- Yes --> N_SetHoldStatusFlag_Node0_action N_SetHoldStatusFlag_Node0_action --> E_SetHoldStatusFlag S_SetHoldStatusFlag --> N_SetHoldStatusFlag_Node0 N_SetHoldStatusFlag_Node1{"The system updates the cargo status
flags"}:::decision N_SetHoldStatusFlag_Node1_action["The system sets the hold status
flag to indicate the cargo is held"]:::main N_SetHoldStatusFlag_Node1 -- Yes --> N_SetHoldStatusFlag_Node1_action N_SetHoldStatusFlag_Node1_action --> E_SetHoldStatusFlag N_SetHoldStatusFlag_Node0 -- No --> N_SetHoldStatusFlag_Node1 N_SetHoldStatusFlag_Node2{"The system processes the hold code"}:::decision N_SetHoldStatusFlag_Node2_action["The hold status flag is set to true
and hold processing continues"]:::main N_SetHoldStatusFlag_Node2 -- Yes --> N_SetHoldStatusFlag_Node2_action N_SetHoldStatusFlag_Node2_action --> E_SetHoldStatusFlag N_SetHoldStatusFlag_Node1 -- No --> N_SetHoldStatusFlag_Node2 N_SetHoldStatusFlag_Node2 -- No --> E_SetHoldStatusFlag
disposition"}:::decision N_SetHoldStatusFlag_Node0_action["The hold status flag is set to true
to indicate cargo is held"]:::main N_SetHoldStatusFlag_Node0 -- Yes --> N_SetHoldStatusFlag_Node0_action N_SetHoldStatusFlag_Node0_action --> E_SetHoldStatusFlag S_SetHoldStatusFlag --> N_SetHoldStatusFlag_Node0 N_SetHoldStatusFlag_Node1{"The system updates the cargo status
flags"}:::decision N_SetHoldStatusFlag_Node1_action["The system sets the hold status
flag to indicate the cargo is held"]:::main N_SetHoldStatusFlag_Node1 -- Yes --> N_SetHoldStatusFlag_Node1_action N_SetHoldStatusFlag_Node1_action --> E_SetHoldStatusFlag N_SetHoldStatusFlag_Node0 -- No --> N_SetHoldStatusFlag_Node1 N_SetHoldStatusFlag_Node2{"The system processes the hold code"}:::decision N_SetHoldStatusFlag_Node2_action["The hold status flag is set to true
and hold processing continues"]:::main N_SetHoldStatusFlag_Node2 -- Yes --> N_SetHoldStatusFlag_Node2_action N_SetHoldStatusFlag_Node2_action --> E_SetHoldStatusFlag N_SetHoldStatusFlag_Node1 -- No --> N_SetHoldStatusFlag_Node2 N_SetHoldStatusFlag_Node2 -- No --> E_SetHoldStatusFlag
File: GCX016.cbl
GIVEN:
The disposition code has been identified as a hold code
WHEN:
The system processes the hold disposition
THEN:
The hold status flag is set to true to indicate cargo is held
File: GCX016.cbl
GIVEN:
A hold code has been successfully inserted into the status array
WHEN:
The system updates the cargo status flags
THEN:
The system sets the hold status flag to indicate the cargo is held
File: GCX016.cbl
GIVEN:
A hold disposition code has been identified
WHEN:
The system processes the hold code
THEN:
- The hold status flag is set to true
- Hold processing continues
β Consolidated Acceptance Criteria
- If the hold location → if the hold applies to border location, set border hold flag; otherwise, set destination hold flag
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IsBorderHold(["Start Step"])
E_IsBorderHold(["End Step"])
N_IsBorderHold_Node0{"The system evaluates the hold
location"}:::decision N_IsBorderHold_Node0_action["If the hold applies to border
location, set border hold flag
otherwise, set destination hold flag"]:::main N_IsBorderHold_Node0 -- Yes --> N_IsBorderHold_Node0_action N_IsBorderHold_Node0_action --> E_IsBorderHold S_IsBorderHold --> N_IsBorderHold_Node0 N_IsBorderHold_Node0 -- No --> E_IsBorderHold
location"}:::decision N_IsBorderHold_Node0_action["If the hold applies to border
location, set border hold flag
otherwise, set destination hold flag"]:::main N_IsBorderHold_Node0 -- Yes --> N_IsBorderHold_Node0_action N_IsBorderHold_Node0_action --> E_IsBorderHold S_IsBorderHold --> N_IsBorderHold_Node0 N_IsBorderHold_Node0 -- No --> E_IsBorderHold
File: GCX016.cbl
GIVEN:
A hold status flag has been set and location information is available
WHEN:
The system evaluates the hold location
THEN:
If the hold applies to border location, set border hold flag; otherwise, set destination hold flag
β Consolidated Acceptance Criteria
- The system processes the release disposition → the release status flag is set to true to indicate cargo is released
- Building the S09 segment → copy the release status flag from the array element to the S09 segment release flag field
- The release status is processed → the release status flag is set to true and the released quantity is added to the total released quantity counter
- The system processes the release code → the release status flag is set to true
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetReleaseStatusFlag(["Start Step"])
E_SetReleaseStatusFlag(["End Step"])
N_SetReleaseStatusFlag_Node0{"The system processes the release
disposition"}:::decision N_SetReleaseStatusFlag_Node0_action["The release status flag is set to
true to indicate cargo is released"]:::main N_SetReleaseStatusFlag_Node0 -- Yes --> N_SetReleaseStatusFlag_Node0_action N_SetReleaseStatusFlag_Node0_action --> E_SetReleaseStatusFlag S_SetReleaseStatusFlag --> N_SetReleaseStatusFlag_Node0 N_SetReleaseStatusFlag_Node1{"Building the S09 segment"}:::decision N_SetReleaseStatusFlag_Node1_action["Copy the release status flag from
the array element to the S09 segment
release flag field"]:::main N_SetReleaseStatusFlag_Node1 -- Yes --> N_SetReleaseStatusFlag_Node1_action N_SetReleaseStatusFlag_Node1_action --> E_SetReleaseStatusFlag N_SetReleaseStatusFlag_Node0 -- No --> N_SetReleaseStatusFlag_Node1 N_SetReleaseStatusFlag_Node2{"The release status is processed"}:::decision N_SetReleaseStatusFlag_Node2_action["The release status flag is set to
true and the released quantity is
added to the total released quantity
counter"]:::main N_SetReleaseStatusFlag_Node2 -- Yes --> N_SetReleaseStatusFlag_Node2_action N_SetReleaseStatusFlag_Node2_action --> E_SetReleaseStatusFlag N_SetReleaseStatusFlag_Node1 -- No --> N_SetReleaseStatusFlag_Node2 N_SetReleaseStatusFlag_Node3{"The system processes the release
code"}:::decision N_SetReleaseStatusFlag_Node3_action["The release status flag is set to
true"]:::main N_SetReleaseStatusFlag_Node3 -- Yes --> N_SetReleaseStatusFlag_Node3_action N_SetReleaseStatusFlag_Node3_action --> E_SetReleaseStatusFlag N_SetReleaseStatusFlag_Node2 -- No --> N_SetReleaseStatusFlag_Node3 N_SetReleaseStatusFlag_Node3 -- No --> E_SetReleaseStatusFlag
disposition"}:::decision N_SetReleaseStatusFlag_Node0_action["The release status flag is set to
true to indicate cargo is released"]:::main N_SetReleaseStatusFlag_Node0 -- Yes --> N_SetReleaseStatusFlag_Node0_action N_SetReleaseStatusFlag_Node0_action --> E_SetReleaseStatusFlag S_SetReleaseStatusFlag --> N_SetReleaseStatusFlag_Node0 N_SetReleaseStatusFlag_Node1{"Building the S09 segment"}:::decision N_SetReleaseStatusFlag_Node1_action["Copy the release status flag from
the array element to the S09 segment
release flag field"]:::main N_SetReleaseStatusFlag_Node1 -- Yes --> N_SetReleaseStatusFlag_Node1_action N_SetReleaseStatusFlag_Node1_action --> E_SetReleaseStatusFlag N_SetReleaseStatusFlag_Node0 -- No --> N_SetReleaseStatusFlag_Node1 N_SetReleaseStatusFlag_Node2{"The release status is processed"}:::decision N_SetReleaseStatusFlag_Node2_action["The release status flag is set to
true and the released quantity is
added to the total released quantity
counter"]:::main N_SetReleaseStatusFlag_Node2 -- Yes --> N_SetReleaseStatusFlag_Node2_action N_SetReleaseStatusFlag_Node2_action --> E_SetReleaseStatusFlag N_SetReleaseStatusFlag_Node1 -- No --> N_SetReleaseStatusFlag_Node2 N_SetReleaseStatusFlag_Node3{"The system processes the release
code"}:::decision N_SetReleaseStatusFlag_Node3_action["The release status flag is set to
true"]:::main N_SetReleaseStatusFlag_Node3 -- Yes --> N_SetReleaseStatusFlag_Node3_action N_SetReleaseStatusFlag_Node3_action --> E_SetReleaseStatusFlag N_SetReleaseStatusFlag_Node2 -- No --> N_SetReleaseStatusFlag_Node3 N_SetReleaseStatusFlag_Node3 -- No --> E_SetReleaseStatusFlag
File: GCX016.cbl
GIVEN:
The disposition code has been identified as a release code
WHEN:
The system processes the release disposition
THEN:
The release status flag is set to true to indicate cargo is released
File: GCX016.cbl
GIVEN:
A status array element contains release status information
WHEN:
Building the S09 segment
THEN:
Copy the release status flag from the array element to the S09 segment release flag field
File: GCX016.cbl
GIVEN:
A release disposition code has been identified
WHEN:
The release status is processed
THEN:
- The release status flag is set to true
- The released quantity is added to the total released quantity counter
File: GCX016.cbl
GIVEN:
A release disposition code has been identified
WHEN:
The system processes the release code
THEN:
The release status flag is set to true
β Consolidated Acceptance Criteria
- The system processes the release quantity → the release quantity is updated by adding or subtracting the specified quantity amount
- The quantity calculation is complete and validated → the system updates the release quantity with the calculated value
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UpdateReleaseQuantity(["Start Step"])
E_UpdateReleaseQuantity(["End Step"])
N_UpdateReleaseQuantity_Node0{"The system processes the release
quantity"}:::decision N_UpdateReleaseQuantity_Node0_action["The release quantity is updated by
adding or subtracting the specified
quantity amount"]:::main N_UpdateReleaseQuantity_Node0 -- Yes --> N_UpdateReleaseQuantity_Node0_action N_UpdateReleaseQuantity_Node0_action --> E_UpdateReleaseQuantity S_UpdateReleaseQuantity --> N_UpdateReleaseQuantity_Node0 N_UpdateReleaseQuantity_Node1{"The quantity calculation is
complete and validated"}:::decision N_UpdateReleaseQuantity_Node1_action["The system updates the release
quantity with the calculated value"]:::main N_UpdateReleaseQuantity_Node1 -- Yes --> N_UpdateReleaseQuantity_Node1_action N_UpdateReleaseQuantity_Node1_action --> E_UpdateReleaseQuantity N_UpdateReleaseQuantity_Node0 -- No --> N_UpdateReleaseQuantity_Node1 N_UpdateReleaseQuantity_Node1 -- No --> E_UpdateReleaseQuantity
quantity"}:::decision N_UpdateReleaseQuantity_Node0_action["The release quantity is updated by
adding or subtracting the specified
quantity amount"]:::main N_UpdateReleaseQuantity_Node0 -- Yes --> N_UpdateReleaseQuantity_Node0_action N_UpdateReleaseQuantity_Node0_action --> E_UpdateReleaseQuantity S_UpdateReleaseQuantity --> N_UpdateReleaseQuantity_Node0 N_UpdateReleaseQuantity_Node1{"The quantity calculation is
complete and validated"}:::decision N_UpdateReleaseQuantity_Node1_action["The system updates the release
quantity with the calculated value"]:::main N_UpdateReleaseQuantity_Node1 -- Yes --> N_UpdateReleaseQuantity_Node1_action N_UpdateReleaseQuantity_Node1_action --> E_UpdateReleaseQuantity N_UpdateReleaseQuantity_Node0 -- No --> N_UpdateReleaseQuantity_Node1 N_UpdateReleaseQuantity_Node1 -- No --> E_UpdateReleaseQuantity
File: GCX016.cbl
GIVEN:
A release status flag has been set and quantity information is available
WHEN:
The system processes the release quantity
THEN:
The release quantity is updated by adding or subtracting the specified quantity amount
File: GCX016.cbl
GIVEN:
A calculated release quantity that is valid and non-negative
WHEN:
- The quantity calculation is complete
- Validated
THEN:
The system updates the release quantity with the calculated value
β Consolidated Acceptance Criteria
- The system processes the PTT disposition → the PTT status flag is set to true to indicate cargo can proceed to transfer
- The PTT status is processed → the PTT status flag is set to true and the PTT quantity is validated against cargo requirements
- The system sets PTT status → the PTT status flag is activated for the cargo record
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetPTTStatusFlag(["Start Step"])
E_SetPTTStatusFlag(["End Step"])
N_SetPTTStatusFlag_Node0{"The system processes the PTT
disposition"}:::decision N_SetPTTStatusFlag_Node0_action["The PTT status flag is set to true
to indicate cargo can proceed to
transfer"]:::main N_SetPTTStatusFlag_Node0 -- Yes --> N_SetPTTStatusFlag_Node0_action N_SetPTTStatusFlag_Node0_action --> E_SetPTTStatusFlag S_SetPTTStatusFlag --> N_SetPTTStatusFlag_Node0 N_SetPTTStatusFlag_Node1{"The PTT status is processed"}:::decision N_SetPTTStatusFlag_Node1_action["The PTT status flag is set to true
and the PTT quantity is validated
against cargo requirements"]:::main N_SetPTTStatusFlag_Node1 -- Yes --> N_SetPTTStatusFlag_Node1_action N_SetPTTStatusFlag_Node1_action --> E_SetPTTStatusFlag N_SetPTTStatusFlag_Node0 -- No --> N_SetPTTStatusFlag_Node1 N_SetPTTStatusFlag_Node2{"The system sets PTT status"}:::decision N_SetPTTStatusFlag_Node2_action["The PTT status flag is activated
for the cargo record"]:::main N_SetPTTStatusFlag_Node2 -- Yes --> N_SetPTTStatusFlag_Node2_action N_SetPTTStatusFlag_Node2_action --> E_SetPTTStatusFlag N_SetPTTStatusFlag_Node1 -- No --> N_SetPTTStatusFlag_Node2 N_SetPTTStatusFlag_Node2 -- No --> E_SetPTTStatusFlag
disposition"}:::decision N_SetPTTStatusFlag_Node0_action["The PTT status flag is set to true
to indicate cargo can proceed to
transfer"]:::main N_SetPTTStatusFlag_Node0 -- Yes --> N_SetPTTStatusFlag_Node0_action N_SetPTTStatusFlag_Node0_action --> E_SetPTTStatusFlag S_SetPTTStatusFlag --> N_SetPTTStatusFlag_Node0 N_SetPTTStatusFlag_Node1{"The PTT status is processed"}:::decision N_SetPTTStatusFlag_Node1_action["The PTT status flag is set to true
and the PTT quantity is validated
against cargo requirements"]:::main N_SetPTTStatusFlag_Node1 -- Yes --> N_SetPTTStatusFlag_Node1_action N_SetPTTStatusFlag_Node1_action --> E_SetPTTStatusFlag N_SetPTTStatusFlag_Node0 -- No --> N_SetPTTStatusFlag_Node1 N_SetPTTStatusFlag_Node2{"The system sets PTT status"}:::decision N_SetPTTStatusFlag_Node2_action["The PTT status flag is activated
for the cargo record"]:::main N_SetPTTStatusFlag_Node2 -- Yes --> N_SetPTTStatusFlag_Node2_action N_SetPTTStatusFlag_Node2_action --> E_SetPTTStatusFlag N_SetPTTStatusFlag_Node1 -- No --> N_SetPTTStatusFlag_Node2 N_SetPTTStatusFlag_Node2 -- No --> E_SetPTTStatusFlag
File: GCX016.cbl
GIVEN:
The disposition code has been identified as a PTT code
WHEN:
The system processes the PTT disposition
THEN:
The PTT status flag is set to true to indicate cargo can proceed to transfer
File: GCX016.cbl
GIVEN:
A PTT disposition code has been identified
WHEN:
The PTT status is processed
THEN:
- The ptt status flag is set to true
- The ptt quantity is validated against cargo requirements
File: GCX016.cbl
GIVEN:
PTT quantity validation has passed successfully
WHEN:
The system sets PTT status
THEN:
The PTT status flag is activated for the cargo record
β Consolidated Acceptance Criteria
- The system processes PTT information → pTT information including location and quantity details are saved for later use
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SavePTTInformation(["Start Step"])
E_SavePTTInformation(["End Step"])
N_SavePTTInformation_Node0{"The system processes PTT
information"}:::decision N_SavePTTInformation_Node0_action["PTT information including location
and quantity details are saved for
later use"]:::main N_SavePTTInformation_Node0 -- Yes --> N_SavePTTInformation_Node0_action N_SavePTTInformation_Node0_action --> E_SavePTTInformation S_SavePTTInformation --> N_SavePTTInformation_Node0 N_SavePTTInformation_Node0 -- No --> E_SavePTTInformation
information"}:::decision N_SavePTTInformation_Node0_action["PTT information including location
and quantity details are saved for
later use"]:::main N_SavePTTInformation_Node0 -- Yes --> N_SavePTTInformation_Node0_action N_SavePTTInformation_Node0_action --> E_SavePTTInformation S_SavePTTInformation --> N_SavePTTInformation_Node0 N_SavePTTInformation_Node0 -- No --> E_SavePTTInformation
File: GCX016.cbl
GIVEN:
A PTT status flag has been set
WHEN:
The system processes PTT information
THEN:
- Ptt information including location
- Quantity details are saved for later use
β Consolidated Acceptance Criteria
- The system processes the proceed disposition → the proceed status flag is set to true to indicate cargo can proceed
- The proceed status is processed → the proceed status flag is set to true and the border arrival date is recorded for tracking purposes
- The system processes proceed status assignment → set the proceed status flag to active in the cargo processing variables
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetProceedStatusFlag(["Start Step"])
E_SetProceedStatusFlag(["End Step"])
N_SetProceedStatusFlag_Node0{"The system processes the proceed
disposition"}:::decision N_SetProceedStatusFlag_Node0_action["The proceed status flag is set to
true to indicate cargo can proceed"]:::main N_SetProceedStatusFlag_Node0 -- Yes --> N_SetProceedStatusFlag_Node0_action N_SetProceedStatusFlag_Node0_action --> E_SetProceedStatusFlag S_SetProceedStatusFlag --> N_SetProceedStatusFlag_Node0 N_SetProceedStatusFlag_Node1{"The proceed status is processed"}:::decision N_SetProceedStatusFlag_Node1_action["The proceed status flag is set to
true and the border arrival date is
recorded for tracking purposes"]:::main N_SetProceedStatusFlag_Node1 -- Yes --> N_SetProceedStatusFlag_Node1_action N_SetProceedStatusFlag_Node1_action --> E_SetProceedStatusFlag N_SetProceedStatusFlag_Node0 -- No --> N_SetProceedStatusFlag_Node1 N_SetProceedStatusFlag_Node2{"The system processes proceed status
assignment"}:::decision N_SetProceedStatusFlag_Node2_action["Set the proceed status flag to
active in the cargo processing
variables"]:::main N_SetProceedStatusFlag_Node2 -- Yes --> N_SetProceedStatusFlag_Node2_action N_SetProceedStatusFlag_Node2_action --> E_SetProceedStatusFlag N_SetProceedStatusFlag_Node1 -- No --> N_SetProceedStatusFlag_Node2 N_SetProceedStatusFlag_Node2 -- No --> E_SetProceedStatusFlag
disposition"}:::decision N_SetProceedStatusFlag_Node0_action["The proceed status flag is set to
true to indicate cargo can proceed"]:::main N_SetProceedStatusFlag_Node0 -- Yes --> N_SetProceedStatusFlag_Node0_action N_SetProceedStatusFlag_Node0_action --> E_SetProceedStatusFlag S_SetProceedStatusFlag --> N_SetProceedStatusFlag_Node0 N_SetProceedStatusFlag_Node1{"The proceed status is processed"}:::decision N_SetProceedStatusFlag_Node1_action["The proceed status flag is set to
true and the border arrival date is
recorded for tracking purposes"]:::main N_SetProceedStatusFlag_Node1 -- Yes --> N_SetProceedStatusFlag_Node1_action N_SetProceedStatusFlag_Node1_action --> E_SetProceedStatusFlag N_SetProceedStatusFlag_Node0 -- No --> N_SetProceedStatusFlag_Node1 N_SetProceedStatusFlag_Node2{"The system processes proceed status
assignment"}:::decision N_SetProceedStatusFlag_Node2_action["Set the proceed status flag to
active in the cargo processing
variables"]:::main N_SetProceedStatusFlag_Node2 -- Yes --> N_SetProceedStatusFlag_Node2_action N_SetProceedStatusFlag_Node2_action --> E_SetProceedStatusFlag N_SetProceedStatusFlag_Node1 -- No --> N_SetProceedStatusFlag_Node2 N_SetProceedStatusFlag_Node2 -- No --> E_SetProceedStatusFlag
File: GCX016.cbl
GIVEN:
The disposition code has been identified as a proceed code
WHEN:
The system processes the proceed disposition
THEN:
The proceed status flag is set to true to indicate cargo can proceed
File: GCX016.cbl
GIVEN:
A proceed disposition code has been identified
WHEN:
The proceed status is processed
THEN:
- The proceed status flag is set to true
- The border arrival date is recorded for tracking purposes
File: GCX016.cbl
GIVEN:
Cargo is currently held and proceed flag is set in status array
WHEN:
The system processes proceed status assignment
THEN:
Set the proceed status flag to active in the cargo processing variables
β Consolidated Acceptance Criteria
- The system processes the proceed status → the border arrival date is updated to reflect the proceed processing date
- System processes border arrival information → system updates cargo record with current border arrival date and time
- The system processes border arrival date update → the system updates the border arrival date field with current date and time
- The system updates the border arrival date → the border arrival date is recorded in the cargo record and the system proceeds to clear conflicting hold status
- The arrival status is being applied → the border arrival date is updated with the current system date
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UpdateBorderArrivalDate(["Start Step"])
E_UpdateBorderArrivalDate(["End Step"])
N_UpdateBorderArrivalDate_Node0{"The system processes the proceed
status"}:::decision N_UpdateBorderArrivalDate_Node0_action["The border arrival date is updated
to reflect the proceed processing
date"]:::main N_UpdateBorderArrivalDate_Node0 -- Yes --> N_UpdateBorderArrivalDate_Node0_action N_UpdateBorderArrivalDate_Node0_action --> E_UpdateBorderArrivalDate S_UpdateBorderArrivalDate --> N_UpdateBorderArrivalDate_Node0 N_UpdateBorderArrivalDate_Node1{"System processes border arrival
information"}:::decision N_UpdateBorderArrivalDate_Node1_action["System updates cargo record with
current border arrival date and time"]:::main N_UpdateBorderArrivalDate_Node1 -- Yes --> N_UpdateBorderArrivalDate_Node1_action N_UpdateBorderArrivalDate_Node1_action --> E_UpdateBorderArrivalDate N_UpdateBorderArrivalDate_Node0 -- No --> N_UpdateBorderArrivalDate_Node1 N_UpdateBorderArrivalDate_Node2{"The system processes border arrival
date update"}:::decision N_UpdateBorderArrivalDate_Node2_action["The system updates the border
arrival date field with current date
and time"]:::main N_UpdateBorderArrivalDate_Node2 -- Yes --> N_UpdateBorderArrivalDate_Node2_action N_UpdateBorderArrivalDate_Node2_action --> E_UpdateBorderArrivalDate N_UpdateBorderArrivalDate_Node1 -- No --> N_UpdateBorderArrivalDate_Node2 N_UpdateBorderArrivalDate_Node3{"The system updates the border
arrival date"}:::decision N_UpdateBorderArrivalDate_Node3_action["The border arrival date is recorded
in the cargo record and the system
proceeds to clear conflicting hold
status"]:::main N_UpdateBorderArrivalDate_Node3 -- Yes --> N_UpdateBorderArrivalDate_Node3_action N_UpdateBorderArrivalDate_Node3_action --> E_UpdateBorderArrivalDate N_UpdateBorderArrivalDate_Node2 -- No --> N_UpdateBorderArrivalDate_Node3 N_UpdateBorderArrivalDate_Node4{"The arrival status is being applied"}:::decision N_UpdateBorderArrivalDate_Node4_action["The border arrival date is updated
with the current system date"]:::main N_UpdateBorderArrivalDate_Node4 -- Yes --> N_UpdateBorderArrivalDate_Node4_action N_UpdateBorderArrivalDate_Node4_action --> E_UpdateBorderArrivalDate N_UpdateBorderArrivalDate_Node3 -- No --> N_UpdateBorderArrivalDate_Node4 N_UpdateBorderArrivalDate_Node4 -- No --> E_UpdateBorderArrivalDate
status"}:::decision N_UpdateBorderArrivalDate_Node0_action["The border arrival date is updated
to reflect the proceed processing
date"]:::main N_UpdateBorderArrivalDate_Node0 -- Yes --> N_UpdateBorderArrivalDate_Node0_action N_UpdateBorderArrivalDate_Node0_action --> E_UpdateBorderArrivalDate S_UpdateBorderArrivalDate --> N_UpdateBorderArrivalDate_Node0 N_UpdateBorderArrivalDate_Node1{"System processes border arrival
information"}:::decision N_UpdateBorderArrivalDate_Node1_action["System updates cargo record with
current border arrival date and time"]:::main N_UpdateBorderArrivalDate_Node1 -- Yes --> N_UpdateBorderArrivalDate_Node1_action N_UpdateBorderArrivalDate_Node1_action --> E_UpdateBorderArrivalDate N_UpdateBorderArrivalDate_Node0 -- No --> N_UpdateBorderArrivalDate_Node1 N_UpdateBorderArrivalDate_Node2{"The system processes border arrival
date update"}:::decision N_UpdateBorderArrivalDate_Node2_action["The system updates the border
arrival date field with current date
and time"]:::main N_UpdateBorderArrivalDate_Node2 -- Yes --> N_UpdateBorderArrivalDate_Node2_action N_UpdateBorderArrivalDate_Node2_action --> E_UpdateBorderArrivalDate N_UpdateBorderArrivalDate_Node1 -- No --> N_UpdateBorderArrivalDate_Node2 N_UpdateBorderArrivalDate_Node3{"The system updates the border
arrival date"}:::decision N_UpdateBorderArrivalDate_Node3_action["The border arrival date is recorded
in the cargo record and the system
proceeds to clear conflicting hold
status"]:::main N_UpdateBorderArrivalDate_Node3 -- Yes --> N_UpdateBorderArrivalDate_Node3_action N_UpdateBorderArrivalDate_Node3_action --> E_UpdateBorderArrivalDate N_UpdateBorderArrivalDate_Node2 -- No --> N_UpdateBorderArrivalDate_Node3 N_UpdateBorderArrivalDate_Node4{"The arrival status is being applied"}:::decision N_UpdateBorderArrivalDate_Node4_action["The border arrival date is updated
with the current system date"]:::main N_UpdateBorderArrivalDate_Node4 -- Yes --> N_UpdateBorderArrivalDate_Node4_action N_UpdateBorderArrivalDate_Node4_action --> E_UpdateBorderArrivalDate N_UpdateBorderArrivalDate_Node3 -- No --> N_UpdateBorderArrivalDate_Node4 N_UpdateBorderArrivalDate_Node4 -- No --> E_UpdateBorderArrivalDate
File: GCX016.cbl
GIVEN:
A proceed status flag has been set
WHEN:
The system processes the proceed status
THEN:
The border arrival date is updated to reflect the proceed processing date
File: GCX016.cbl
GIVEN:
Cargo with proceed status and valid bond
WHEN:
System processes border arrival information
THEN:
- System updates cargo record with current border arrival date
- Time
File: GCX016.cbl
GIVEN:
Cargo has border arrival flag set and current system date/time is available
WHEN:
The system processes border arrival date update
THEN:
- The system updates the border arrival date field with current date
- Time
File: GCX016.cbl
GIVEN:
Proceed status has been set in the cargo record
WHEN:
The system updates the border arrival date
THEN:
- The border arrival date is recorded in the cargo record
- The system proceeds to clear conflicting hold status
File: GCX016.cbl
GIVEN:
Cargo is being set to arrival status
WHEN:
The arrival status is being applied
THEN:
The border arrival date is updated with the current system date
β Consolidated Acceptance Criteria
- The system processes the arrival disposition → the arrival status flag is set to true to indicate cargo has arrived
- The arrival status is processed → the arrival status flag is set to true to indicate cargo has reached its destination
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetArrivalStatusFlag(["Start Step"])
E_SetArrivalStatusFlag(["End Step"])
N_SetArrivalStatusFlag_Node0{"The system processes the arrival
disposition"}:::decision N_SetArrivalStatusFlag_Node0_action["The arrival status flag is set to
true to indicate cargo has arrived"]:::main N_SetArrivalStatusFlag_Node0 -- Yes --> N_SetArrivalStatusFlag_Node0_action N_SetArrivalStatusFlag_Node0_action --> E_SetArrivalStatusFlag S_SetArrivalStatusFlag --> N_SetArrivalStatusFlag_Node0 N_SetArrivalStatusFlag_Node1{"The arrival status is processed"}:::decision N_SetArrivalStatusFlag_Node1_action["The arrival status flag is set to
true to indicate cargo has reached
its destination"]:::main N_SetArrivalStatusFlag_Node1 -- Yes --> N_SetArrivalStatusFlag_Node1_action N_SetArrivalStatusFlag_Node1_action --> E_SetArrivalStatusFlag N_SetArrivalStatusFlag_Node0 -- No --> N_SetArrivalStatusFlag_Node1 N_SetArrivalStatusFlag_Node1 -- No --> E_SetArrivalStatusFlag
disposition"}:::decision N_SetArrivalStatusFlag_Node0_action["The arrival status flag is set to
true to indicate cargo has arrived"]:::main N_SetArrivalStatusFlag_Node0 -- Yes --> N_SetArrivalStatusFlag_Node0_action N_SetArrivalStatusFlag_Node0_action --> E_SetArrivalStatusFlag S_SetArrivalStatusFlag --> N_SetArrivalStatusFlag_Node0 N_SetArrivalStatusFlag_Node1{"The arrival status is processed"}:::decision N_SetArrivalStatusFlag_Node1_action["The arrival status flag is set to
true to indicate cargo has reached
its destination"]:::main N_SetArrivalStatusFlag_Node1 -- Yes --> N_SetArrivalStatusFlag_Node1_action N_SetArrivalStatusFlag_Node1_action --> E_SetArrivalStatusFlag N_SetArrivalStatusFlag_Node0 -- No --> N_SetArrivalStatusFlag_Node1 N_SetArrivalStatusFlag_Node1 -- No --> E_SetArrivalStatusFlag
File: GCX016.cbl
GIVEN:
The disposition code has been identified as an arrival code
WHEN:
The system processes the arrival disposition
THEN:
The arrival status flag is set to true to indicate cargo has arrived
File: GCX016.cbl
GIVEN:
An arrival disposition code has been identified
WHEN:
The arrival status is processed
THEN:
The arrival status flag is set to true to indicate cargo has reached its destination
β Consolidated Acceptance Criteria
- The system processes the export disposition → the export status flag is set to true to indicate cargo is being exported
- The system sets export status flag for the cargo → export status flag is activated and cargo is marked for export processing
- The export status is processed → the export status flag is set to true to indicate cargo is being exported
- The system processes export status assignment → the export status flag is set for the cargo record
- The system processes export status for the cargo → the system sets the export status flag to indicate export processing is required
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetExportStatusFlag(["Start Step"])
E_SetExportStatusFlag(["End Step"])
N_SetExportStatusFlag_Node0{"The system processes the export
disposition"}:::decision N_SetExportStatusFlag_Node0_action["The export status flag is set to
true to indicate cargo is being
exported"]:::main N_SetExportStatusFlag_Node0 -- Yes --> N_SetExportStatusFlag_Node0_action N_SetExportStatusFlag_Node0_action --> E_SetExportStatusFlag S_SetExportStatusFlag --> N_SetExportStatusFlag_Node0 N_SetExportStatusFlag_Node1{"The system sets export status flag
for the cargo"}:::decision N_SetExportStatusFlag_Node1_action["Export status flag is activated and
cargo is marked for export
processing"]:::main N_SetExportStatusFlag_Node1 -- Yes --> N_SetExportStatusFlag_Node1_action N_SetExportStatusFlag_Node1_action --> E_SetExportStatusFlag N_SetExportStatusFlag_Node0 -- No --> N_SetExportStatusFlag_Node1 N_SetExportStatusFlag_Node2{"The export status is processed"}:::decision N_SetExportStatusFlag_Node2_action["The export status flag is set to
true to indicate cargo is being
exported"]:::main N_SetExportStatusFlag_Node2 -- Yes --> N_SetExportStatusFlag_Node2_action N_SetExportStatusFlag_Node2_action --> E_SetExportStatusFlag N_SetExportStatusFlag_Node1 -- No --> N_SetExportStatusFlag_Node2 N_SetExportStatusFlag_Node3{"The system processes export status
assignment"}:::decision N_SetExportStatusFlag_Node3_action["The export status flag is set for
the cargo record"]:::main N_SetExportStatusFlag_Node3 -- Yes --> N_SetExportStatusFlag_Node3_action N_SetExportStatusFlag_Node3_action --> E_SetExportStatusFlag N_SetExportStatusFlag_Node2 -- No --> N_SetExportStatusFlag_Node3 N_SetExportStatusFlag_Node4{"The system processes export status
for the cargo"}:::decision N_SetExportStatusFlag_Node4_action["The system sets the export status
flag to indicate export processing
is required"]:::main N_SetExportStatusFlag_Node4 -- Yes --> N_SetExportStatusFlag_Node4_action N_SetExportStatusFlag_Node4_action --> E_SetExportStatusFlag N_SetExportStatusFlag_Node3 -- No --> N_SetExportStatusFlag_Node4 N_SetExportStatusFlag_Node4 -- No --> E_SetExportStatusFlag
disposition"}:::decision N_SetExportStatusFlag_Node0_action["The export status flag is set to
true to indicate cargo is being
exported"]:::main N_SetExportStatusFlag_Node0 -- Yes --> N_SetExportStatusFlag_Node0_action N_SetExportStatusFlag_Node0_action --> E_SetExportStatusFlag S_SetExportStatusFlag --> N_SetExportStatusFlag_Node0 N_SetExportStatusFlag_Node1{"The system sets export status flag
for the cargo"}:::decision N_SetExportStatusFlag_Node1_action["Export status flag is activated and
cargo is marked for export
processing"]:::main N_SetExportStatusFlag_Node1 -- Yes --> N_SetExportStatusFlag_Node1_action N_SetExportStatusFlag_Node1_action --> E_SetExportStatusFlag N_SetExportStatusFlag_Node0 -- No --> N_SetExportStatusFlag_Node1 N_SetExportStatusFlag_Node2{"The export status is processed"}:::decision N_SetExportStatusFlag_Node2_action["The export status flag is set to
true to indicate cargo is being
exported"]:::main N_SetExportStatusFlag_Node2 -- Yes --> N_SetExportStatusFlag_Node2_action N_SetExportStatusFlag_Node2_action --> E_SetExportStatusFlag N_SetExportStatusFlag_Node1 -- No --> N_SetExportStatusFlag_Node2 N_SetExportStatusFlag_Node3{"The system processes export status
assignment"}:::decision N_SetExportStatusFlag_Node3_action["The export status flag is set for
the cargo record"]:::main N_SetExportStatusFlag_Node3 -- Yes --> N_SetExportStatusFlag_Node3_action N_SetExportStatusFlag_Node3_action --> E_SetExportStatusFlag N_SetExportStatusFlag_Node2 -- No --> N_SetExportStatusFlag_Node3 N_SetExportStatusFlag_Node4{"The system processes export status
for the cargo"}:::decision N_SetExportStatusFlag_Node4_action["The system sets the export status
flag to indicate export processing
is required"]:::main N_SetExportStatusFlag_Node4 -- Yes --> N_SetExportStatusFlag_Node4_action N_SetExportStatusFlag_Node4_action --> E_SetExportStatusFlag N_SetExportStatusFlag_Node3 -- No --> N_SetExportStatusFlag_Node4 N_SetExportStatusFlag_Node4 -- No --> E_SetExportStatusFlag
File: GCX016.cbl
GIVEN:
The disposition code has been identified as an export code
WHEN:
The system processes the export disposition
THEN:
The export status flag is set to true to indicate cargo is being exported
File: GCX016.cbl
GIVEN:
Cargo has been determined ready for export
WHEN:
The system sets export status flag for the cargo
THEN:
- Export status flag is activated
- Cargo is marked for export processing
File: GCX016.cbl
GIVEN:
An export disposition code has been identified
WHEN:
The export status is processed
THEN:
The export status flag is set to true to indicate cargo is being exported
File: GCX016.cbl
GIVEN:
Cargo is confirmed to be at destination location and flagged for export
WHEN:
The system processes export status assignment
THEN:
The export status flag is set for the cargo record
File: GCX016.cbl
GIVEN:
A cargo record is being processed for export status AND the cargo requires export processing
WHEN:
The system processes export status for the cargo
THEN:
The system sets the export status flag to indicate export processing is required
β Consolidated Acceptance Criteria
- If the disposition code for FDA hold status → if the disposition code indicates FDA hold status, set the FDA hold processing flag; otherwise, continue to next array element
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IsFDAHoldCode(["Start Step"])
E_IsFDAHoldCode(["End Step"])
N_IsFDAHoldCode_Node0{"The system evaluates the
disposition code for FDA hold status"}:::decision N_IsFDAHoldCode_Node0_action["If the disposition code indicates
FDA hold status, set the FDA hold
processing flag otherwise, continue
to next array element"]:::main N_IsFDAHoldCode_Node0 -- Yes --> N_IsFDAHoldCode_Node0_action N_IsFDAHoldCode_Node0_action --> E_IsFDAHoldCode S_IsFDAHoldCode --> N_IsFDAHoldCode_Node0 N_IsFDAHoldCode_Node0 -- No --> E_IsFDAHoldCode
disposition code for FDA hold status"}:::decision N_IsFDAHoldCode_Node0_action["If the disposition code indicates
FDA hold status, set the FDA hold
processing flag otherwise, continue
to next array element"]:::main N_IsFDAHoldCode_Node0 -- Yes --> N_IsFDAHoldCode_Node0_action N_IsFDAHoldCode_Node0_action --> E_IsFDAHoldCode S_IsFDAHoldCode --> N_IsFDAHoldCode_Node0 N_IsFDAHoldCode_Node0 -- No --> E_IsFDAHoldCode
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
The disposition code is not an export code
WHEN:
The system evaluates the disposition code for FDA hold status
THEN:
If the disposition code indicates FDA hold status, set the FDA hold processing flag; otherwise, continue to next array element
β Consolidated Acceptance Criteria
- The system processes the FDA hold disposition → the FDA hold status flag is set to true to indicate cargo is under FDA hold
- System processes FDA hold assignment → system sets the FDA hold status flag to active state
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetFDAHoldStatusFlag(["Start Step"])
E_SetFDAHoldStatusFlag(["End Step"])
N_SetFDAHoldStatusFlag_Node0{"The system processes the FDA hold
disposition"}:::decision N_SetFDAHoldStatusFlag_Node0_action["The FDA hold status flag is set to
true to indicate cargo is under FDA
hold"]:::main N_SetFDAHoldStatusFlag_Node0 -- Yes --> N_SetFDAHoldStatusFlag_Node0_action N_SetFDAHoldStatusFlag_Node0_action --> E_SetFDAHoldStatusFlag S_SetFDAHoldStatusFlag --> N_SetFDAHoldStatusFlag_Node0 N_SetFDAHoldStatusFlag_Node1{"System processes FDA hold
assignment"}:::decision N_SetFDAHoldStatusFlag_Node1_action["System sets the FDA hold status
flag to active state"]:::main N_SetFDAHoldStatusFlag_Node1 -- Yes --> N_SetFDAHoldStatusFlag_Node1_action N_SetFDAHoldStatusFlag_Node1_action --> E_SetFDAHoldStatusFlag N_SetFDAHoldStatusFlag_Node0 -- No --> N_SetFDAHoldStatusFlag_Node1 N_SetFDAHoldStatusFlag_Node1 -- No --> E_SetFDAHoldStatusFlag
disposition"}:::decision N_SetFDAHoldStatusFlag_Node0_action["The FDA hold status flag is set to
true to indicate cargo is under FDA
hold"]:::main N_SetFDAHoldStatusFlag_Node0 -- Yes --> N_SetFDAHoldStatusFlag_Node0_action N_SetFDAHoldStatusFlag_Node0_action --> E_SetFDAHoldStatusFlag S_SetFDAHoldStatusFlag --> N_SetFDAHoldStatusFlag_Node0 N_SetFDAHoldStatusFlag_Node1{"System processes FDA hold
assignment"}:::decision N_SetFDAHoldStatusFlag_Node1_action["System sets the FDA hold status
flag to active state"]:::main N_SetFDAHoldStatusFlag_Node1 -- Yes --> N_SetFDAHoldStatusFlag_Node1_action N_SetFDAHoldStatusFlag_Node1_action --> E_SetFDAHoldStatusFlag N_SetFDAHoldStatusFlag_Node0 -- No --> N_SetFDAHoldStatusFlag_Node1 N_SetFDAHoldStatusFlag_Node1 -- No --> E_SetFDAHoldStatusFlag
File: GCX016.cbl
GIVEN:
The disposition code has been identified as an FDA hold code
WHEN:
The system processes the FDA hold disposition
THEN:
The FDA hold status flag is set to true to indicate cargo is under FDA hold
File: GCX016.cbl
GIVEN:
FDA hold is required at destination for the cargo
WHEN:
System processes FDA hold assignment
THEN:
System sets the FDA hold status flag to active state
β Consolidated Acceptance Criteria
- The system reaches the end of the array → the status determination analysis is marked as complete with all flags and counters finalized
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CompleteStatusDetermination(["Start Step"])
E_CompleteStatusDetermination(["End Step"])
N_CompleteStatusDetermination_Node0{"The system reaches the end of the
array"}:::decision N_CompleteStatusDetermination_Node0_action["The status determination analysis
is marked as complete with all flags
and counters finalized"]:::main N_CompleteStatusDetermination_Node0 -- Yes --> N_CompleteStatusDetermination_Node0_action N_CompleteStatusDetermination_Node0_action --> E_CompleteStatusDetermination S_CompleteStatusDetermination --> N_CompleteStatusDetermination_Node0 N_CompleteStatusDetermination_Node0 -- No --> E_CompleteStatusDetermination
array"}:::decision N_CompleteStatusDetermination_Node0_action["The status determination analysis
is marked as complete with all flags
and counters finalized"]:::main N_CompleteStatusDetermination_Node0 -- Yes --> N_CompleteStatusDetermination_Node0_action N_CompleteStatusDetermination_Node0_action --> E_CompleteStatusDetermination S_CompleteStatusDetermination --> N_CompleteStatusDetermination_Node0 N_CompleteStatusDetermination_Node0 -- No --> E_CompleteStatusDetermination
File: GCX016.cbl
GIVEN:
All elements in the S09A status array have been processed
WHEN:
The system reaches the end of the array
THEN:
- The status determination analysis is marked as complete with all flags
- Counters finalized
β Consolidated Acceptance Criteria
- The system prepares to return control to the calling process → all analysis results including hold flags, release flags, PTT flags, proceed flags, arrival flags, export flags, FDA hold flags, and quantity totals are returned
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ReturnAnalysisResults(["Start Step"])
E_ReturnAnalysisResults(["End Step"])
N_ReturnAnalysisResults_Node0{"The system prepares to return
control to the calling process"}:::decision N_ReturnAnalysisResults_Node0_action["All analysis results including hold
flags, release flags, PTT flags,
proceed flags, arrival flags, export
flags, FDA hold flags, and quantity
totals are returned"]:::main N_ReturnAnalysisResults_Node0 -- Yes --> N_ReturnAnalysisResults_Node0_action N_ReturnAnalysisResults_Node0_action --> E_ReturnAnalysisResults S_ReturnAnalysisResults --> N_ReturnAnalysisResults_Node0 N_ReturnAnalysisResults_Node0 -- No --> E_ReturnAnalysisResults
control to the calling process"}:::decision N_ReturnAnalysisResults_Node0_action["All analysis results including hold
flags, release flags, PTT flags,
proceed flags, arrival flags, export
flags, FDA hold flags, and quantity
totals are returned"]:::main N_ReturnAnalysisResults_Node0 -- Yes --> N_ReturnAnalysisResults_Node0_action N_ReturnAnalysisResults_Node0_action --> E_ReturnAnalysisResults S_ReturnAnalysisResults --> N_ReturnAnalysisResults_Node0 N_ReturnAnalysisResults_Node0 -- No --> E_ReturnAnalysisResults
File: GCX016.cbl
GIVEN:
The status determination analysis has been completed
WHEN:
The system prepares to return control to the calling process
THEN:
All analysis results including hold flags, release flags, PTT flags, proceed flags, arrival flags, export flags, FDA hold flags, and quantity totals are returned
β Consolidated Acceptance Criteria
- The system needs to extract the disposition code for processing → the system retrieves the status info code from the S09A-STATUS-INFO field of the current array element
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExtractStatusInfoCodefromS09ASTATUSINFO(["Start Step"])
E_ExtractStatusInfoCodefromS09ASTATUSINFO(["End Step"])
N_ExtractStatusInfoCodefromS09ASTATUSINFO_Node0{"The system needs to extract the
disposition code for processing"}:::decision N_ExtractStatusInfoCodefromS09ASTATUSINFO_Node0_action["The system retrieves the status
info code from the S09A-STATUS-INFO
field of the current array element"]:::main N_ExtractStatusInfoCodefromS09ASTATUSINFO_Node0 -- Yes --> N_ExtractStatusInfoCodefromS09ASTATUSINFO_Node0_action N_ExtractStatusInfoCodefromS09ASTATUSINFO_Node0_action --> E_ExtractStatusInfoCodefromS09ASTATUSINFO S_ExtractStatusInfoCodefromS09ASTATUSINFO --> N_ExtractStatusInfoCodefromS09ASTATUSINFO_Node0 N_ExtractStatusInfoCodefromS09ASTATUSINFO_Node0 -- No --> E_ExtractStatusInfoCodefromS09ASTATUSINFO
disposition code for processing"}:::decision N_ExtractStatusInfoCodefromS09ASTATUSINFO_Node0_action["The system retrieves the status
info code from the S09A-STATUS-INFO
field of the current array element"]:::main N_ExtractStatusInfoCodefromS09ASTATUSINFO_Node0 -- Yes --> N_ExtractStatusInfoCodefromS09ASTATUSINFO_Node0_action N_ExtractStatusInfoCodefromS09ASTATUSINFO_Node0_action --> E_ExtractStatusInfoCodefromS09ASTATUSINFO S_ExtractStatusInfoCodefromS09ASTATUSINFO --> N_ExtractStatusInfoCodefromS09ASTATUSINFO_Node0 N_ExtractStatusInfoCodefromS09ASTATUSINFO_Node0 -- No --> E_ExtractStatusInfoCodefromS09ASTATUSINFO
File: GCX016.cbl
GIVEN:
A status array element S09A-ENTRY exists in the cargo status array
WHEN:
The system needs to extract the disposition code for processing
THEN:
The system retrieves the status info code from the S09A-STATUS-INFO field of the current array element
β Consolidated Acceptance Criteria
- The system validates the code format for length and character requirements → the system determines if the code format is valid or invalid based on predefined format rules
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IsStatusInfoCodeValidFormat(["Start Step"])
E_IsStatusInfoCodeValidFormat(["End Step"])
N_IsStatusInfoCodeValidFormat_Node0{"The system validates the code
format for length and character
requirements"}:::decision N_IsStatusInfoCodeValidFormat_Node0_action["The system determines if the code
format is valid or invalid based on
predefined format rules"]:::main N_IsStatusInfoCodeValidFormat_Node0 -- Yes --> N_IsStatusInfoCodeValidFormat_Node0_action N_IsStatusInfoCodeValidFormat_Node0_action --> E_IsStatusInfoCodeValidFormat S_IsStatusInfoCodeValidFormat --> N_IsStatusInfoCodeValidFormat_Node0 N_IsStatusInfoCodeValidFormat_Node0 -- No --> E_IsStatusInfoCodeValidFormat
format for length and character
requirements"}:::decision N_IsStatusInfoCodeValidFormat_Node0_action["The system determines if the code
format is valid or invalid based on
predefined format rules"]:::main N_IsStatusInfoCodeValidFormat_Node0 -- Yes --> N_IsStatusInfoCodeValidFormat_Node0_action N_IsStatusInfoCodeValidFormat_Node0_action --> E_IsStatusInfoCodeValidFormat S_IsStatusInfoCodeValidFormat --> N_IsStatusInfoCodeValidFormat_Node0 N_IsStatusInfoCodeValidFormat_Node0 -- No --> E_IsStatusInfoCodeValidFormat
File: GCX016.cbl
GIVEN:
A disposition code has been extracted from the status array element
WHEN:
- The system validates the code format for length
- Character requirements
THEN:
The system determines if the code format is valid or invalid based on predefined format rules
β Consolidated Acceptance Criteria
- The system calls GCCTBIO to lookup the disposition code in the GCSTBRT DC table → the system searches for the disposition code and returns whether the code exists in the reference table
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_PerformDCTableLookupviaGCCTBIO(["Start Step"])
E_PerformDCTableLookupviaGCCTBIO(["End Step"])
N_PerformDCTableLookupviaGCCTBIO_Node0{"The system calls GCCTBIO to lookup
the disposition code in the GCSTBRT
DC table"}:::decision N_PerformDCTableLookupviaGCCTBIO_Node0_action["The system searches for the
disposition code and returns whether
the code exists in the reference
table"]:::main N_PerformDCTableLookupviaGCCTBIO_Node0 -- Yes --> N_PerformDCTableLookupviaGCCTBIO_Node0_action N_PerformDCTableLookupviaGCCTBIO_Node0_action --> E_PerformDCTableLookupviaGCCTBIO S_PerformDCTableLookupviaGCCTBIO --> N_PerformDCTableLookupviaGCCTBIO_Node0 N_PerformDCTableLookupviaGCCTBIO_Node0 -- No --> E_PerformDCTableLookupviaGCCTBIO
the disposition code in the GCSTBRT
DC table"}:::decision N_PerformDCTableLookupviaGCCTBIO_Node0_action["The system searches for the
disposition code and returns whether
the code exists in the reference
table"]:::main N_PerformDCTableLookupviaGCCTBIO_Node0 -- Yes --> N_PerformDCTableLookupviaGCCTBIO_Node0_action N_PerformDCTableLookupviaGCCTBIO_Node0_action --> E_PerformDCTableLookupviaGCCTBIO S_PerformDCTableLookupviaGCCTBIO --> N_PerformDCTableLookupviaGCCTBIO_Node0 N_PerformDCTableLookupviaGCCTBIO_Node0 -- No --> E_PerformDCTableLookupviaGCCTBIO
File: GCX016.cbl
GIVEN:
A valid format disposition code needs to be validated against the DC table
WHEN:
The system calls GCCTBIO to lookup the disposition code in the GCSTBRT DC table
THEN:
- The system searches for the disposition code
- Returns whether the code exists in the reference table
β Consolidated Acceptance Criteria
- If the lookup results → the system determines if the disposition code was found in the table or not found
- The system searches for the disposition code in the DC table → the system determines if the disposition code exists and sets appropriate processing flags
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_DispositionCodeFoundinDCTable(["Start Step"])
E_DispositionCodeFoundinDCTable(["End Step"])
N_DispositionCodeFoundinDCTable_Node0{"The system evaluates the lookup
results"}:::decision N_DispositionCodeFoundinDCTable_Node0_action["The system determines if the
disposition code was found in the
table or not found"]:::main N_DispositionCodeFoundinDCTable_Node0 -- Yes --> N_DispositionCodeFoundinDCTable_Node0_action N_DispositionCodeFoundinDCTable_Node0_action --> E_DispositionCodeFoundinDCTable S_DispositionCodeFoundinDCTable --> N_DispositionCodeFoundinDCTable_Node0 N_DispositionCodeFoundinDCTable_Node1{"The system searches for the
disposition code in the DC table"}:::decision N_DispositionCodeFoundinDCTable_Node1_action["The system determines if the
disposition code exists and sets
appropriate processing flags"]:::main N_DispositionCodeFoundinDCTable_Node1 -- Yes --> N_DispositionCodeFoundinDCTable_Node1_action N_DispositionCodeFoundinDCTable_Node1_action --> E_DispositionCodeFoundinDCTable N_DispositionCodeFoundinDCTable_Node0 -- No --> N_DispositionCodeFoundinDCTable_Node1 N_DispositionCodeFoundinDCTable_Node1 -- No --> E_DispositionCodeFoundinDCTable
results"}:::decision N_DispositionCodeFoundinDCTable_Node0_action["The system determines if the
disposition code was found in the
table or not found"]:::main N_DispositionCodeFoundinDCTable_Node0 -- Yes --> N_DispositionCodeFoundinDCTable_Node0_action N_DispositionCodeFoundinDCTable_Node0_action --> E_DispositionCodeFoundinDCTable S_DispositionCodeFoundinDCTable --> N_DispositionCodeFoundinDCTable_Node0 N_DispositionCodeFoundinDCTable_Node1{"The system searches for the
disposition code in the DC table"}:::decision N_DispositionCodeFoundinDCTable_Node1_action["The system determines if the
disposition code exists and sets
appropriate processing flags"]:::main N_DispositionCodeFoundinDCTable_Node1 -- Yes --> N_DispositionCodeFoundinDCTable_Node1_action N_DispositionCodeFoundinDCTable_Node1_action --> E_DispositionCodeFoundinDCTable N_DispositionCodeFoundinDCTable_Node0 -- No --> N_DispositionCodeFoundinDCTable_Node1 N_DispositionCodeFoundinDCTable_Node1 -- No --> E_DispositionCodeFoundinDCTable
File: GCX016.cbl
GIVEN:
A disposition code lookup has been performed against the DC table
WHEN:
The system evaluates the lookup results
THEN:
The system determines if the disposition code was found in the table or not found
File: GCX016.cbl
GIVEN:
A disposition code has been extracted from the X4 segment
WHEN:
The system searches for the disposition code in the DC table
THEN:
- The system determines if the disposition code exists
- Sets appropriate processing flags
β Consolidated Acceptance Criteria
- The system extracts the code properties → the system retrieves the code description from DC-DESCRIPTION, counterpart code from DC-COUNTERPART-CODE, and processing instructions from the DC table
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExtractCodeDefinitionfromDCDESCRIPTION(["Start Step"])
E_ExtractCodeDefinitionfromDCDESCRIPTION(["End Step"])
N_ExtractCodeDefinitionfromDCDESCRIPTION_Node0{"The system extracts the code
properties"}:::decision N_ExtractCodeDefinitionfromDCDESCRIPTION_Node0_action["The system retrieves the code
description from DC-DESCRIPTION,
counterpart code from
DC-COUNTERPART-CODE, and processing
instructions from the DC table"]:::main N_ExtractCodeDefinitionfromDCDESCRIPTION_Node0 -- Yes --> N_ExtractCodeDefinitionfromDCDESCRIPTION_Node0_action N_ExtractCodeDefinitionfromDCDESCRIPTION_Node0_action --> E_ExtractCodeDefinitionfromDCDESCRIPTION S_ExtractCodeDefinitionfromDCDESCRIPTION --> N_ExtractCodeDefinitionfromDCDESCRIPTION_Node0 N_ExtractCodeDefinitionfromDCDESCRIPTION_Node0 -- No --> E_ExtractCodeDefinitionfromDCDESCRIPTION
properties"}:::decision N_ExtractCodeDefinitionfromDCDESCRIPTION_Node0_action["The system retrieves the code
description from DC-DESCRIPTION,
counterpart code from
DC-COUNTERPART-CODE, and processing
instructions from the DC table"]:::main N_ExtractCodeDefinitionfromDCDESCRIPTION_Node0 -- Yes --> N_ExtractCodeDefinitionfromDCDESCRIPTION_Node0_action N_ExtractCodeDefinitionfromDCDESCRIPTION_Node0_action --> E_ExtractCodeDefinitionfromDCDESCRIPTION S_ExtractCodeDefinitionfromDCDESCRIPTION --> N_ExtractCodeDefinitionfromDCDESCRIPTION_Node0 N_ExtractCodeDefinitionfromDCDESCRIPTION_Node0 -- No --> E_ExtractCodeDefinitionfromDCDESCRIPTION
File: GCX016.cbl
GIVEN:
A disposition code has been found in the DC reference table
WHEN:
The system extracts the code properties
THEN:
The system retrieves the code description from DC-DESCRIPTION, counterpart code from DC-COUNTERPART-CODE, and processing instructions from the DC table
β Consolidated Acceptance Criteria
- The system completes the validation process → the system sets the code validation flag to valid status and stores the extracted code definition and properties
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetCodeValidationFlagtoValid(["Start Step"])
E_SetCodeValidationFlagtoValid(["End Step"])
N_SetCodeValidationFlagtoValid_Node0{"The system completes the validation
process"}:::decision N_SetCodeValidationFlagtoValid_Node0_action["The system sets the code validation
flag to valid status and stores the
extracted code definition and
properties"]:::main N_SetCodeValidationFlagtoValid_Node0 -- Yes --> N_SetCodeValidationFlagtoValid_Node0_action N_SetCodeValidationFlagtoValid_Node0_action --> E_SetCodeValidationFlagtoValid S_SetCodeValidationFlagtoValid --> N_SetCodeValidationFlagtoValid_Node0 N_SetCodeValidationFlagtoValid_Node0 -- No --> E_SetCodeValidationFlagtoValid
process"}:::decision N_SetCodeValidationFlagtoValid_Node0_action["The system sets the code validation
flag to valid status and stores the
extracted code definition and
properties"]:::main N_SetCodeValidationFlagtoValid_Node0 -- Yes --> N_SetCodeValidationFlagtoValid_Node0_action N_SetCodeValidationFlagtoValid_Node0_action --> E_SetCodeValidationFlagtoValid S_SetCodeValidationFlagtoValid --> N_SetCodeValidationFlagtoValid_Node0 N_SetCodeValidationFlagtoValid_Node0 -- No --> E_SetCodeValidationFlagtoValid
File: GCX016.cbl
GIVEN:
A disposition code has been successfully found in the DC table and its properties extracted
WHEN:
The system completes the validation process
THEN:
- The system sets the code validation flag to valid status
- Stores the extracted code definition
- Properties
β Consolidated Acceptance Criteria
- The code format validation fails due to invalid length or character composition → the system logs an invalid code format error and sets the validation flag to invalid
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogInvalidCodeFormatError(["Start Step"])
E_LogInvalidCodeFormatError(["End Step"])
N_LogInvalidCodeFormatError_Node0{"The code format validation fails
due to invalid length or character
composition"}:::decision N_LogInvalidCodeFormatError_Node0_action["The system logs an invalid code
format error and sets the validation
flag to invalid"]:::exclusion N_LogInvalidCodeFormatError_Node0 -- Yes -->|Alternative| N_LogInvalidCodeFormatError_Node0_action N_LogInvalidCodeFormatError_Node0_action --> E_LogInvalidCodeFormatError S_LogInvalidCodeFormatError --> N_LogInvalidCodeFormatError_Node0 N_LogInvalidCodeFormatError_Node0 -- No --> E_LogInvalidCodeFormatError
due to invalid length or character
composition"}:::decision N_LogInvalidCodeFormatError_Node0_action["The system logs an invalid code
format error and sets the validation
flag to invalid"]:::exclusion N_LogInvalidCodeFormatError_Node0 -- Yes -->|Alternative| N_LogInvalidCodeFormatError_Node0_action N_LogInvalidCodeFormatError_Node0_action --> E_LogInvalidCodeFormatError S_LogInvalidCodeFormatError --> N_LogInvalidCodeFormatError_Node0 N_LogInvalidCodeFormatError_Node0 -- No --> E_LogInvalidCodeFormatError
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
A disposition code has been extracted from the status array
WHEN:
The code format validation fails due to invalid length or character composition
THEN:
- The system logs an invalid code format error
- Sets the validation flag to invalid
β Consolidated Acceptance Criteria
- The disposition code is not found in the reference table → the system logs a code not found error and sets the validation flag to invalid
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogCodeNotFoundError(["Start Step"])
E_LogCodeNotFoundError(["End Step"])
N_LogCodeNotFoundError_Node0{"The disposition code is not found
in the reference table"}:::decision N_LogCodeNotFoundError_Node0_action["The system logs a code not found
error and sets the validation flag
to invalid"]:::main N_LogCodeNotFoundError_Node0 -- Yes --> N_LogCodeNotFoundError_Node0_action N_LogCodeNotFoundError_Node0_action --> E_LogCodeNotFoundError S_LogCodeNotFoundError --> N_LogCodeNotFoundError_Node0 N_LogCodeNotFoundError_Node0 -- No --> E_LogCodeNotFoundError
in the reference table"}:::decision N_LogCodeNotFoundError_Node0_action["The system logs a code not found
error and sets the validation flag
to invalid"]:::main N_LogCodeNotFoundError_Node0 -- Yes --> N_LogCodeNotFoundError_Node0_action N_LogCodeNotFoundError_Node0_action --> E_LogCodeNotFoundError S_LogCodeNotFoundError --> N_LogCodeNotFoundError_Node0 N_LogCodeNotFoundError_Node0 -- No --> E_LogCodeNotFoundError
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
A valid format disposition code has been looked up in the DC table
WHEN:
The disposition code is not found in the reference table
THEN:
- The system logs a code not found error
- Sets the validation flag to invalid
β Consolidated Acceptance Criteria
- The system accesses the status information code field → the status code is extracted and made available for further processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExtractStatusInfoCode(["Start Step"])
E_ExtractStatusInfoCode(["End Step"])
N_ExtractStatusInfoCode_Node0{"The system accesses the status
information code field"}:::decision N_ExtractStatusInfoCode_Node0_action["The status code is extracted and
made available for further
processing"]:::main N_ExtractStatusInfoCode_Node0 -- Yes --> N_ExtractStatusInfoCode_Node0_action N_ExtractStatusInfoCode_Node0_action --> E_ExtractStatusInfoCode S_ExtractStatusInfoCode --> N_ExtractStatusInfoCode_Node0 N_ExtractStatusInfoCode_Node0 -- No --> E_ExtractStatusInfoCode
information code field"}:::decision N_ExtractStatusInfoCode_Node0_action["The status code is extracted and
made available for further
processing"]:::main N_ExtractStatusInfoCode_Node0 -- Yes --> N_ExtractStatusInfoCode_Node0_action N_ExtractStatusInfoCode_Node0_action --> E_ExtractStatusInfoCode S_ExtractStatusInfoCode --> N_ExtractStatusInfoCode_Node0 N_ExtractStatusInfoCode_Node0 -- No --> E_ExtractStatusInfoCode
File: GCX016.cbl
GIVEN:
A S09A array element is being processed
WHEN:
The system accesses the status information code field
THEN:
- The status code is extracted
- Made available for further processing
β Consolidated Acceptance Criteria
- The system processes the location code field → the location code is parsed and prepared for location-specific processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ParseLocationCode(["Start Step"])
E_ParseLocationCode(["End Step"])
N_ParseLocationCode_Node0{"The system processes the location
code field"}:::decision N_ParseLocationCode_Node0_action["The location code is parsed and
prepared for location-specific
processing"]:::main N_ParseLocationCode_Node0 -- Yes --> N_ParseLocationCode_Node0_action N_ParseLocationCode_Node0_action --> E_ParseLocationCode S_ParseLocationCode --> N_ParseLocationCode_Node0 N_ParseLocationCode_Node0 -- No --> E_ParseLocationCode
code field"}:::decision N_ParseLocationCode_Node0_action["The location code is parsed and
prepared for location-specific
processing"]:::main N_ParseLocationCode_Node0 -- Yes --> N_ParseLocationCode_Node0_action N_ParseLocationCode_Node0_action --> E_ParseLocationCode S_ParseLocationCode --> N_ParseLocationCode_Node0 N_ParseLocationCode_Node0 -- No --> E_ParseLocationCode
File: GCX016.cbl
GIVEN:
Status information contains location data
WHEN:
The system processes the location code field
THEN:
- The location code is parsed
- Prepared for location-specific processing
β Consolidated Acceptance Criteria
- If the location code field → the system determines if location code exists and routes to appropriate processing (border, destination, or no location)
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LocationCodePresent(["Start Step"])
E_LocationCodePresent(["End Step"])
N_LocationCodePresent_Node0{"The system evaluates the location
code field"}:::decision N_LocationCodePresent_Node0_action["The system determines if location
code exists and routes to
appropriate processing border,
destination, or no location"]:::main N_LocationCodePresent_Node0 -- Yes --> N_LocationCodePresent_Node0_action N_LocationCodePresent_Node0_action --> E_LocationCodePresent S_LocationCodePresent --> N_LocationCodePresent_Node0 N_LocationCodePresent_Node0 -- No --> E_LocationCodePresent
code field"}:::decision N_LocationCodePresent_Node0_action["The system determines if location
code exists and routes to
appropriate processing border,
destination, or no location"]:::main N_LocationCodePresent_Node0 -- Yes --> N_LocationCodePresent_Node0_action N_LocationCodePresent_Node0_action --> E_LocationCodePresent S_LocationCodePresent --> N_LocationCodePresent_Node0 N_LocationCodePresent_Node0 -- No --> E_LocationCodePresent
File: GCX016.cbl
GIVEN:
Status information is being processed
WHEN:
The system evaluates the location code field
THEN:
- The system determines if location code exists
- Routes to appropriate processing (border, destination, or no location)
β Consolidated Acceptance Criteria
- The system processes border location data → border location information is extracted and stored for border-specific cargo processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExtractBorderLocation(["Start Step"])
E_ExtractBorderLocation(["End Step"])
N_ExtractBorderLocation_Node0{"The system processes border
location data"}:::decision N_ExtractBorderLocation_Node0_action["Border location information is
extracted and stored for
border-specific cargo processing"]:::main N_ExtractBorderLocation_Node0 -- Yes --> N_ExtractBorderLocation_Node0_action N_ExtractBorderLocation_Node0_action --> E_ExtractBorderLocation S_ExtractBorderLocation --> N_ExtractBorderLocation_Node0 N_ExtractBorderLocation_Node0 -- No --> E_ExtractBorderLocation
location data"}:::decision N_ExtractBorderLocation_Node0_action["Border location information is
extracted and stored for
border-specific cargo processing"]:::main N_ExtractBorderLocation_Node0 -- Yes --> N_ExtractBorderLocation_Node0_action N_ExtractBorderLocation_Node0_action --> E_ExtractBorderLocation S_ExtractBorderLocation --> N_ExtractBorderLocation_Node0 N_ExtractBorderLocation_Node0 -- No --> E_ExtractBorderLocation
File: GCX016.cbl
GIVEN:
Location code indicates border location processing
WHEN:
The system processes border location data
THEN:
- Border location information is extracted
- Stored for border-specific cargo processing
β Consolidated Acceptance Criteria
- The system processes destination location data → destination location information is extracted and stored for destination-specific cargo processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExtractDestinationLocation(["Start Step"])
E_ExtractDestinationLocation(["End Step"])
N_ExtractDestinationLocation_Node0{"The system processes destination
location data"}:::decision N_ExtractDestinationLocation_Node0_action["Destination location information is
extracted and stored for
destination-specific cargo
processing"]:::main N_ExtractDestinationLocation_Node0 -- Yes --> N_ExtractDestinationLocation_Node0_action N_ExtractDestinationLocation_Node0_action --> E_ExtractDestinationLocation S_ExtractDestinationLocation --> N_ExtractDestinationLocation_Node0 N_ExtractDestinationLocation_Node0 -- No --> E_ExtractDestinationLocation
location data"}:::decision N_ExtractDestinationLocation_Node0_action["Destination location information is
extracted and stored for
destination-specific cargo
processing"]:::main N_ExtractDestinationLocation_Node0 -- Yes --> N_ExtractDestinationLocation_Node0_action N_ExtractDestinationLocation_Node0_action --> E_ExtractDestinationLocation S_ExtractDestinationLocation --> N_ExtractDestinationLocation_Node0 N_ExtractDestinationLocation_Node0 -- No --> E_ExtractDestinationLocation
File: GCX016.cbl
GIVEN:
Location code indicates destination location processing
WHEN:
The system processes destination location data
THEN:
- Destination location information is extracted
- Stored for destination-specific cargo processing
β Consolidated Acceptance Criteria
- The system processes the flag fields → processing flags are parsed and made available for cargo status determination
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ParseProcessingFlags(["Start Step"])
E_ParseProcessingFlags(["End Step"])
N_ParseProcessingFlags_Node0{"The system processes the flag
fields"}:::decision N_ParseProcessingFlags_Node0_action["Processing flags are parsed and
made available for cargo status
determination"]:::main N_ParseProcessingFlags_Node0 -- Yes --> N_ParseProcessingFlags_Node0_action N_ParseProcessingFlags_Node0_action --> E_ParseProcessingFlags S_ParseProcessingFlags --> N_ParseProcessingFlags_Node0 N_ParseProcessingFlags_Node0 -- No --> E_ParseProcessingFlags
fields"}:::decision N_ParseProcessingFlags_Node0_action["Processing flags are parsed and
made available for cargo status
determination"]:::main N_ParseProcessingFlags_Node0 -- Yes --> N_ParseProcessingFlags_Node0_action N_ParseProcessingFlags_Node0_action --> E_ParseProcessingFlags S_ParseProcessingFlags --> N_ParseProcessingFlags_Node0 N_ParseProcessingFlags_Node0 -- No --> E_ParseProcessingFlags
File: GCX016.cbl
GIVEN:
Status information contains processing flag data
WHEN:
The system processes the flag fields
THEN:
- Processing flags are parsed
- Made available for cargo status determination
β Consolidated Acceptance Criteria
- The system processes the released flag field → the released flag status is extracted and stored for release processing logic
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExtractReleasedFlag(["Start Step"])
E_ExtractReleasedFlag(["End Step"])
N_ExtractReleasedFlag_Node0{"The system processes the released
flag field"}:::decision N_ExtractReleasedFlag_Node0_action["The released flag status is
extracted and stored for release
processing logic"]:::main N_ExtractReleasedFlag_Node0 -- Yes --> N_ExtractReleasedFlag_Node0_action N_ExtractReleasedFlag_Node0_action --> E_ExtractReleasedFlag S_ExtractReleasedFlag --> N_ExtractReleasedFlag_Node0 N_ExtractReleasedFlag_Node0 -- No --> E_ExtractReleasedFlag
flag field"}:::decision N_ExtractReleasedFlag_Node0_action["The released flag status is
extracted and stored for release
processing logic"]:::main N_ExtractReleasedFlag_Node0 -- Yes --> N_ExtractReleasedFlag_Node0_action N_ExtractReleasedFlag_Node0_action --> E_ExtractReleasedFlag S_ExtractReleasedFlag --> N_ExtractReleasedFlag_Node0 N_ExtractReleasedFlag_Node0 -- No --> E_ExtractReleasedFlag
File: GCX016.cbl
GIVEN:
Status information contains release flag data
WHEN:
The system processes the released flag field
THEN:
- The released flag status is extracted
- Stored for release processing logic
β Consolidated Acceptance Criteria
- The system processes the hold flag field → the hold flag status is extracted and stored for hold processing logic
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExtractHoldFlag(["Start Step"])
E_ExtractHoldFlag(["End Step"])
N_ExtractHoldFlag_Node0{"The system processes the hold flag
field"}:::decision N_ExtractHoldFlag_Node0_action["The hold flag status is extracted
and stored for hold processing logic"]:::main N_ExtractHoldFlag_Node0 -- Yes --> N_ExtractHoldFlag_Node0_action N_ExtractHoldFlag_Node0_action --> E_ExtractHoldFlag S_ExtractHoldFlag --> N_ExtractHoldFlag_Node0 N_ExtractHoldFlag_Node0 -- No --> E_ExtractHoldFlag
field"}:::decision N_ExtractHoldFlag_Node0_action["The hold flag status is extracted
and stored for hold processing logic"]:::main N_ExtractHoldFlag_Node0 -- Yes --> N_ExtractHoldFlag_Node0_action N_ExtractHoldFlag_Node0_action --> E_ExtractHoldFlag S_ExtractHoldFlag --> N_ExtractHoldFlag_Node0 N_ExtractHoldFlag_Node0 -- No --> E_ExtractHoldFlag
File: GCX016.cbl
GIVEN:
Status information contains hold flag data
WHEN:
The system processes the hold flag field
THEN:
- The hold flag status is extracted
- Stored for hold processing logic
β Consolidated Acceptance Criteria
- The system processes the PTT flag field → the PTT flag status is extracted and stored for transfer processing logic
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExtractPTTFlag(["Start Step"])
E_ExtractPTTFlag(["End Step"])
N_ExtractPTTFlag_Node0{"The system processes the PTT flag
field"}:::decision N_ExtractPTTFlag_Node0_action["The PTT flag status is extracted
and stored for transfer processing
logic"]:::main N_ExtractPTTFlag_Node0 -- Yes --> N_ExtractPTTFlag_Node0_action N_ExtractPTTFlag_Node0_action --> E_ExtractPTTFlag S_ExtractPTTFlag --> N_ExtractPTTFlag_Node0 N_ExtractPTTFlag_Node0 -- No --> E_ExtractPTTFlag
field"}:::decision N_ExtractPTTFlag_Node0_action["The PTT flag status is extracted
and stored for transfer processing
logic"]:::main N_ExtractPTTFlag_Node0 -- Yes --> N_ExtractPTTFlag_Node0_action N_ExtractPTTFlag_Node0_action --> E_ExtractPTTFlag S_ExtractPTTFlag --> N_ExtractPTTFlag_Node0 N_ExtractPTTFlag_Node0 -- No --> E_ExtractPTTFlag
File: GCX016.cbl
GIVEN:
Status information contains PTT flag data
WHEN:
The system processes the PTT flag field
THEN:
- The ptt flag status is extracted
- Stored for transfer processing logic
β Consolidated Acceptance Criteria
- The system processes the proceed flag field → the proceed flag status is extracted and stored for proceed processing logic
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExtractProceedFlag(["Start Step"])
E_ExtractProceedFlag(["End Step"])
N_ExtractProceedFlag_Node0{"The system processes the proceed
flag field"}:::decision N_ExtractProceedFlag_Node0_action["The proceed flag status is
extracted and stored for proceed
processing logic"]:::main N_ExtractProceedFlag_Node0 -- Yes --> N_ExtractProceedFlag_Node0_action N_ExtractProceedFlag_Node0_action --> E_ExtractProceedFlag S_ExtractProceedFlag --> N_ExtractProceedFlag_Node0 N_ExtractProceedFlag_Node0 -- No --> E_ExtractProceedFlag
flag field"}:::decision N_ExtractProceedFlag_Node0_action["The proceed flag status is
extracted and stored for proceed
processing logic"]:::main N_ExtractProceedFlag_Node0 -- Yes --> N_ExtractProceedFlag_Node0_action N_ExtractProceedFlag_Node0_action --> E_ExtractProceedFlag S_ExtractProceedFlag --> N_ExtractProceedFlag_Node0 N_ExtractProceedFlag_Node0 -- No --> E_ExtractProceedFlag
File: GCX016.cbl
GIVEN:
Status information contains proceed flag data
WHEN:
The system processes the proceed flag field
THEN:
- The proceed flag status is extracted
- Stored for proceed processing logic
β Consolidated Acceptance Criteria
- The system processes regulatory indicator fields → regulatory indicators are parsed and prepared for compliance processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ParseRegulatoryIndicators(["Start Step"])
E_ParseRegulatoryIndicators(["End Step"])
N_ParseRegulatoryIndicators_Node0{"The system processes regulatory
indicator fields"}:::decision N_ParseRegulatoryIndicators_Node0_action["Regulatory indicators are parsed
and prepared for compliance
processing"]:::main N_ParseRegulatoryIndicators_Node0 -- Yes --> N_ParseRegulatoryIndicators_Node0_action N_ParseRegulatoryIndicators_Node0_action --> E_ParseRegulatoryIndicators S_ParseRegulatoryIndicators --> N_ParseRegulatoryIndicators_Node0 N_ParseRegulatoryIndicators_Node0 -- No --> E_ParseRegulatoryIndicators
indicator fields"}:::decision N_ParseRegulatoryIndicators_Node0_action["Regulatory indicators are parsed
and prepared for compliance
processing"]:::main N_ParseRegulatoryIndicators_Node0 -- Yes --> N_ParseRegulatoryIndicators_Node0_action N_ParseRegulatoryIndicators_Node0_action --> E_ParseRegulatoryIndicators S_ParseRegulatoryIndicators --> N_ParseRegulatoryIndicators_Node0 N_ParseRegulatoryIndicators_Node0 -- No --> E_ParseRegulatoryIndicators
File: GCX016.cbl
GIVEN:
Status information contains regulatory indicator data
WHEN:
The system processes regulatory indicator fields
THEN:
- Regulatory indicators are parsed
- Prepared for compliance processing
β Consolidated Acceptance Criteria
- The system processes the FDA hold indicator field → the FDA hold indicator is extracted and stored for FDA compliance processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExtractFDAHoldIndicator(["Start Step"])
E_ExtractFDAHoldIndicator(["End Step"])
N_ExtractFDAHoldIndicator_Node0{"The system processes the FDA hold
indicator field"}:::decision N_ExtractFDAHoldIndicator_Node0_action["The FDA hold indicator is extracted
and stored for FDA compliance
processing"]:::main N_ExtractFDAHoldIndicator_Node0 -- Yes --> N_ExtractFDAHoldIndicator_Node0_action N_ExtractFDAHoldIndicator_Node0_action --> E_ExtractFDAHoldIndicator S_ExtractFDAHoldIndicator --> N_ExtractFDAHoldIndicator_Node0 N_ExtractFDAHoldIndicator_Node0 -- No --> E_ExtractFDAHoldIndicator
indicator field"}:::decision N_ExtractFDAHoldIndicator_Node0_action["The FDA hold indicator is extracted
and stored for FDA compliance
processing"]:::main N_ExtractFDAHoldIndicator_Node0 -- Yes --> N_ExtractFDAHoldIndicator_Node0_action N_ExtractFDAHoldIndicator_Node0_action --> E_ExtractFDAHoldIndicator S_ExtractFDAHoldIndicator --> N_ExtractFDAHoldIndicator_Node0 N_ExtractFDAHoldIndicator_Node0 -- No --> E_ExtractFDAHoldIndicator
File: GCX016.cbl
GIVEN:
Status information contains FDA regulatory data
WHEN:
The system processes the FDA hold indicator field
THEN:
- The fda hold indicator is extracted
- Stored for fda compliance processing
β Consolidated Acceptance Criteria
- The system processes the customs hold indicator field → the customs hold indicator is extracted and stored for customs compliance processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExtractCustomsHoldIndicator(["Start Step"])
E_ExtractCustomsHoldIndicator(["End Step"])
N_ExtractCustomsHoldIndicator_Node0{"The system processes the customs
hold indicator field"}:::decision N_ExtractCustomsHoldIndicator_Node0_action["The customs hold indicator is
extracted and stored for customs
compliance processing"]:::main N_ExtractCustomsHoldIndicator_Node0 -- Yes --> N_ExtractCustomsHoldIndicator_Node0_action N_ExtractCustomsHoldIndicator_Node0_action --> E_ExtractCustomsHoldIndicator S_ExtractCustomsHoldIndicator --> N_ExtractCustomsHoldIndicator_Node0 N_ExtractCustomsHoldIndicator_Node0 -- No --> E_ExtractCustomsHoldIndicator
hold indicator field"}:::decision N_ExtractCustomsHoldIndicator_Node0_action["The customs hold indicator is
extracted and stored for customs
compliance processing"]:::main N_ExtractCustomsHoldIndicator_Node0 -- Yes --> N_ExtractCustomsHoldIndicator_Node0_action N_ExtractCustomsHoldIndicator_Node0_action --> E_ExtractCustomsHoldIndicator S_ExtractCustomsHoldIndicator --> N_ExtractCustomsHoldIndicator_Node0 N_ExtractCustomsHoldIndicator_Node0 -- No --> E_ExtractCustomsHoldIndicator
File: GCX016.cbl
GIVEN:
Status information contains customs regulatory data
WHEN:
The system processes the customs hold indicator field
THEN:
- The customs hold indicator is extracted
- Stored for customs compliance processing
β Consolidated Acceptance Criteria
- The system processes the seizure indicator field → the seizure indicator is extracted and stored for seizure processing logic
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExtractSeizureIndicator(["Start Step"])
E_ExtractSeizureIndicator(["End Step"])
N_ExtractSeizureIndicator_Node0{"The system processes the seizure
indicator field"}:::decision N_ExtractSeizureIndicator_Node0_action["The seizure indicator is extracted
and stored for seizure processing
logic"]:::main N_ExtractSeizureIndicator_Node0 -- Yes --> N_ExtractSeizureIndicator_Node0_action N_ExtractSeizureIndicator_Node0_action --> E_ExtractSeizureIndicator S_ExtractSeizureIndicator --> N_ExtractSeizureIndicator_Node0 N_ExtractSeizureIndicator_Node0 -- No --> E_ExtractSeizureIndicator
indicator field"}:::decision N_ExtractSeizureIndicator_Node0_action["The seizure indicator is extracted
and stored for seizure processing
logic"]:::main N_ExtractSeizureIndicator_Node0 -- Yes --> N_ExtractSeizureIndicator_Node0_action N_ExtractSeizureIndicator_Node0_action --> E_ExtractSeizureIndicator S_ExtractSeizureIndicator --> N_ExtractSeizureIndicator_Node0 N_ExtractSeizureIndicator_Node0 -- No --> E_ExtractSeizureIndicator
File: GCX016.cbl
GIVEN:
Status information contains seizure indicator data
WHEN:
The system processes the seizure indicator field
THEN:
- The seizure indicator is extracted
- Stored for seizure processing logic
β Consolidated Acceptance Criteria
- The system processes the entry number field → the entry number is extracted and stored for customs entry processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExtractEntryNumber(["Start Step"])
E_ExtractEntryNumber(["End Step"])
N_ExtractEntryNumber_Node0{"The system processes the entry
number field"}:::decision N_ExtractEntryNumber_Node0_action["The entry number is extracted and
stored for customs entry processing"]:::main N_ExtractEntryNumber_Node0 -- Yes --> N_ExtractEntryNumber_Node0_action N_ExtractEntryNumber_Node0_action --> E_ExtractEntryNumber S_ExtractEntryNumber --> N_ExtractEntryNumber_Node0 N_ExtractEntryNumber_Node0 -- No --> E_ExtractEntryNumber
number field"}:::decision N_ExtractEntryNumber_Node0_action["The entry number is extracted and
stored for customs entry processing"]:::main N_ExtractEntryNumber_Node0 -- Yes --> N_ExtractEntryNumber_Node0_action N_ExtractEntryNumber_Node0_action --> E_ExtractEntryNumber S_ExtractEntryNumber --> N_ExtractEntryNumber_Node0 N_ExtractEntryNumber_Node0 -- No --> E_ExtractEntryNumber
File: GCX016.cbl
GIVEN:
Status information contains entry number data
WHEN:
The system processes the entry number field
THEN:
- The entry number is extracted
- Stored for customs entry processing
β Consolidated Acceptance Criteria
- The system processes date stamp fields → date stamps are extracted and stored for time-based processing logic
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExtractDateStamps(["Start Step"])
E_ExtractDateStamps(["End Step"])
N_ExtractDateStamps_Node0{"The system processes date stamp
fields"}:::decision N_ExtractDateStamps_Node0_action["Date stamps are extracted and
stored for time-based processing
logic"]:::main N_ExtractDateStamps_Node0 -- Yes --> N_ExtractDateStamps_Node0_action N_ExtractDateStamps_Node0_action --> E_ExtractDateStamps S_ExtractDateStamps --> N_ExtractDateStamps_Node0 N_ExtractDateStamps_Node0 -- No --> E_ExtractDateStamps
fields"}:::decision N_ExtractDateStamps_Node0_action["Date stamps are extracted and
stored for time-based processing
logic"]:::main N_ExtractDateStamps_Node0 -- Yes --> N_ExtractDateStamps_Node0_action N_ExtractDateStamps_Node0_action --> E_ExtractDateStamps S_ExtractDateStamps --> N_ExtractDateStamps_Node0 N_ExtractDateStamps_Node0 -- No --> E_ExtractDateStamps
File: GCX016.cbl
GIVEN:
Status information contains date stamp data
WHEN:
The system processes date stamp fields
THEN:
- Date stamps are extracted
- Stored for time-based processing logic
β Consolidated Acceptance Criteria
- The system performs consistency validation checks → the system determines if the status information is valid and consistent for processing
- Status consistency validation is performed → the final status array is validated for logical consistency and business rule compliance
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ValidateStatusConsistency(["Start Step"])
E_ValidateStatusConsistency(["End Step"])
N_ValidateStatusConsistency_Node0{"The system performs consistency
validation checks"}:::decision N_ValidateStatusConsistency_Node0_action["The system determines if the status
information is valid and consistent
for processing"]:::main N_ValidateStatusConsistency_Node0 -- Yes --> N_ValidateStatusConsistency_Node0_action N_ValidateStatusConsistency_Node0_action --> E_ValidateStatusConsistency S_ValidateStatusConsistency --> N_ValidateStatusConsistency_Node0 N_ValidateStatusConsistency_Node1{"Status consistency validation is
performed"}:::decision N_ValidateStatusConsistency_Node1_action["The final status array is validated
for logical consistency and business
rule compliance"]:::main N_ValidateStatusConsistency_Node1 -- Yes --> N_ValidateStatusConsistency_Node1_action N_ValidateStatusConsistency_Node1_action --> E_ValidateStatusConsistency N_ValidateStatusConsistency_Node0 -- No --> N_ValidateStatusConsistency_Node1 N_ValidateStatusConsistency_Node1 -- No --> E_ValidateStatusConsistency
validation checks"}:::decision N_ValidateStatusConsistency_Node0_action["The system determines if the status
information is valid and consistent
for processing"]:::main N_ValidateStatusConsistency_Node0 -- Yes --> N_ValidateStatusConsistency_Node0_action N_ValidateStatusConsistency_Node0_action --> E_ValidateStatusConsistency S_ValidateStatusConsistency --> N_ValidateStatusConsistency_Node0 N_ValidateStatusConsistency_Node1{"Status consistency validation is
performed"}:::decision N_ValidateStatusConsistency_Node1_action["The final status array is validated
for logical consistency and business
rule compliance"]:::main N_ValidateStatusConsistency_Node1 -- Yes --> N_ValidateStatusConsistency_Node1_action N_ValidateStatusConsistency_Node1_action --> E_ValidateStatusConsistency N_ValidateStatusConsistency_Node0 -- No --> N_ValidateStatusConsistency_Node1 N_ValidateStatusConsistency_Node1 -- No --> E_ValidateStatusConsistency
File: GCX016.cbl
GIVEN:
All status information has been extracted from the array element
WHEN:
The system performs consistency validation checks
THEN:
- The system determines if the status information is valid
- Consistent for processing
File: GCX016.cbl
GIVEN:
Status processing and any required restoration has been completed
WHEN:
Status consistency validation is performed
THEN:
- The final status array is validated for logical consistency
- Business rule compliance
β Consolidated Acceptance Criteria
- If the overall validity of the status data → the system determines if status is valid and routes to appropriate processing (set flags or log invalid status)
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_StatusValid(["Start Step"])
E_StatusValid(["End Step"])
N_StatusValid_Node0{"The system evaluates the overall
validity of the status data"}:::decision N_StatusValid_Node0_action["The system determines if status is
valid and routes to appropriate
processing set flags or log invalid
status"]:::main N_StatusValid_Node0 -- Yes --> N_StatusValid_Node0_action N_StatusValid_Node0_action --> E_StatusValid S_StatusValid --> N_StatusValid_Node0 N_StatusValid_Node0 -- No --> E_StatusValid
validity of the status data"}:::decision N_StatusValid_Node0_action["The system determines if status is
valid and routes to appropriate
processing set flags or log invalid
status"]:::main N_StatusValid_Node0 -- Yes --> N_StatusValid_Node0_action N_StatusValid_Node0_action --> E_StatusValid S_StatusValid --> N_StatusValid_Node0 N_StatusValid_Node0 -- No --> E_StatusValid
File: GCX016.cbl
GIVEN:
Status information has been extracted and validated
WHEN:
The system evaluates the overall validity of the status data
THEN:
- The system determines if status is valid
- Routes to appropriate processing (set flags or log invalid status)
β Consolidated Acceptance Criteria
- The system processes valid status data → appropriate status flags are set based on the extracted information for subsequent cargo processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetStatusFlags(["Start Step"])
E_SetStatusFlags(["End Step"])
N_SetStatusFlags_Node0{"The system processes valid status
data"}:::decision N_SetStatusFlags_Node0_action["Appropriate status flags are set
based on the extracted information
for subsequent cargo processing"]:::main N_SetStatusFlags_Node0 -- Yes --> N_SetStatusFlags_Node0_action N_SetStatusFlags_Node0_action --> E_SetStatusFlags S_SetStatusFlags --> N_SetStatusFlags_Node0 N_SetStatusFlags_Node0 -- No --> E_SetStatusFlags
data"}:::decision N_SetStatusFlags_Node0_action["Appropriate status flags are set
based on the extracted information
for subsequent cargo processing"]:::main N_SetStatusFlags_Node0 -- Yes --> N_SetStatusFlags_Node0_action N_SetStatusFlags_Node0_action --> E_SetStatusFlags S_SetStatusFlags --> N_SetStatusFlags_Node0 N_SetStatusFlags_Node0 -- No --> E_SetStatusFlags
File: GCX016.cbl
GIVEN:
Status information has been validated as correct and consistent
WHEN:
The system processes valid status data
THEN:
Appropriate status flags are set based on the extracted information for subsequent cargo processing
β Consolidated Acceptance Criteria
- The system encounters invalid status data → the invalid status information is logged for audit purposes and error tracking
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogInvalidStatus(["Start Step"])
E_LogInvalidStatus(["End Step"])
N_LogInvalidStatus_Node0{"The system encounters invalid
status data"}:::decision N_LogInvalidStatus_Node0_action["The invalid status information is
logged for audit purposes and error
tracking"]:::exclusion N_LogInvalidStatus_Node0 -- Yes -->|Alternative| N_LogInvalidStatus_Node0_action N_LogInvalidStatus_Node0_action --> E_LogInvalidStatus S_LogInvalidStatus --> N_LogInvalidStatus_Node0 N_LogInvalidStatus_Node0 -- No --> E_LogInvalidStatus
status data"}:::decision N_LogInvalidStatus_Node0_action["The invalid status information is
logged for audit purposes and error
tracking"]:::exclusion N_LogInvalidStatus_Node0 -- Yes -->|Alternative| N_LogInvalidStatus_Node0_action N_LogInvalidStatus_Node0_action --> E_LogInvalidStatus S_LogInvalidStatus --> N_LogInvalidStatus_Node0 N_LogInvalidStatus_Node0 -- No --> E_LogInvalidStatus
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
Status information has been determined to be invalid or inconsistent
WHEN:
The system encounters invalid status data
THEN:
- The invalid status information is logged for audit purposes
- Error tracking
β Consolidated Acceptance Criteria
- If flag combinations for conflicts → a hold/release conflict is identified when both flag types are active simultaneously
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CheckHoldReleaseConflict(["Start Step"])
E_CheckHoldReleaseConflict(["End Step"])
N_CheckHoldReleaseConflict_Node0{"The system evaluates flag
combinations for conflicts"}:::decision N_CheckHoldReleaseConflict_Node0_action["A holdrelease conflict is
identified when both flag types are
active simultaneously"]:::main N_CheckHoldReleaseConflict_Node0 -- Yes --> N_CheckHoldReleaseConflict_Node0_action N_CheckHoldReleaseConflict_Node0_action --> E_CheckHoldReleaseConflict S_CheckHoldReleaseConflict --> N_CheckHoldReleaseConflict_Node0 N_CheckHoldReleaseConflict_Node0 -- No --> E_CheckHoldReleaseConflict
combinations for conflicts"}:::decision N_CheckHoldReleaseConflict_Node0_action["A holdrelease conflict is
identified when both flag types are
active simultaneously"]:::main N_CheckHoldReleaseConflict_Node0 -- Yes --> N_CheckHoldReleaseConflict_Node0_action N_CheckHoldReleaseConflict_Node0_action --> E_CheckHoldReleaseConflict S_CheckHoldReleaseConflict --> N_CheckHoldReleaseConflict_Node0 N_CheckHoldReleaseConflict_Node0 -- No --> E_CheckHoldReleaseConflict
File: GCX016.cbl
GIVEN:
Cargo status analysis is being performed AND hold flags have been set during processing AND release flags have been set during processing
WHEN:
The system evaluates flag combinations for conflicts
THEN:
A hold/release conflict is identified when both flag types are active simultaneously
β Consolidated Acceptance Criteria
- The system applies conflict resolution rules → hold flags take priority AND release flags are overridden AND hold status is preserved
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ApplyHoldPriorityRule(["Start Step"])
E_ApplyHoldPriorityRule(["End Step"])
N_ApplyHoldPriorityRule_Node0{"The system applies conflict
resolution rules"}:::decision N_ApplyHoldPriorityRule_Node0_action["Hold flags take priority AND
release flags are overridden AND
hold status is preserved"]:::main N_ApplyHoldPriorityRule_Node0 -- Yes --> N_ApplyHoldPriorityRule_Node0_action N_ApplyHoldPriorityRule_Node0_action --> E_ApplyHoldPriorityRule S_ApplyHoldPriorityRule --> N_ApplyHoldPriorityRule_Node0 N_ApplyHoldPriorityRule_Node0 -- No --> E_ApplyHoldPriorityRule
resolution rules"}:::decision N_ApplyHoldPriorityRule_Node0_action["Hold flags take priority AND
release flags are overridden AND
hold status is preserved"]:::main N_ApplyHoldPriorityRule_Node0 -- Yes --> N_ApplyHoldPriorityRule_Node0_action N_ApplyHoldPriorityRule_Node0_action --> E_ApplyHoldPriorityRule S_ApplyHoldPriorityRule --> N_ApplyHoldPriorityRule_Node0 N_ApplyHoldPriorityRule_Node0 -- No --> E_ApplyHoldPriorityRule
File: GCX016.cbl
GIVEN:
A hold/release conflict exists AND both hold and release flags are set
WHEN:
The system applies conflict resolution rules
THEN:
- Hold flags take priority
- Release flags are overridden
- Hold status is preserved
β Consolidated Acceptance Criteria
- The system validates PTT quantity requirements → pTT quantities are valid when release quantities meet or exceed required thresholds for PTT status
- Cargo quantities meet or exceed PTT threshold requirements → system validates PTT quantity eligibility
- The system validates PTT quantities against current cargo quantities and thresholds → the system determines if quantities match the PTT requirements for status maintenance
- The system validates PTT quantities against business thresholds → the system confirms PTT quantities are valid for continued processing or flags invalid quantities for correction
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ValidatePTTQuantities(["Start Step"])
E_ValidatePTTQuantities(["End Step"])
N_ValidatePTTQuantities_Node0{"The system validates PTT quantity
requirements"}:::decision N_ValidatePTTQuantities_Node0_action["PTT quantities are valid when
release quantities meet or exceed
required thresholds for PTT status"]:::main N_ValidatePTTQuantities_Node0 -- Yes --> N_ValidatePTTQuantities_Node0_action N_ValidatePTTQuantities_Node0_action --> E_ValidatePTTQuantities S_ValidatePTTQuantities --> N_ValidatePTTQuantities_Node0 N_ValidatePTTQuantities_Node1{"Cargo quantities meet or exceed PTT
threshold requirements"}:::decision N_ValidatePTTQuantities_Node1_action["System validates PTT quantity
eligibility"]:::main N_ValidatePTTQuantities_Node1 -- Yes --> N_ValidatePTTQuantities_Node1_action N_ValidatePTTQuantities_Node1_action --> E_ValidatePTTQuantities N_ValidatePTTQuantities_Node0 -- No --> N_ValidatePTTQuantities_Node1 N_ValidatePTTQuantities_Node2{"The system validates PTT quantities
against current cargo quantities and
thresholds"}:::decision N_ValidatePTTQuantities_Node2_action["The system determines if quantities
match the PTT requirements for
status maintenance"]:::main N_ValidatePTTQuantities_Node2 -- Yes --> N_ValidatePTTQuantities_Node2_action N_ValidatePTTQuantities_Node2_action --> E_ValidatePTTQuantities N_ValidatePTTQuantities_Node1 -- No --> N_ValidatePTTQuantities_Node2 N_ValidatePTTQuantities_Node3{"The system validates PTT quantities
against business thresholds"}:::decision N_ValidatePTTQuantities_Node3_action["The system confirms PTT quantities
are valid for continued processing
or flags invalid quantities for
correction"]:::main N_ValidatePTTQuantities_Node3 -- Yes --> N_ValidatePTTQuantities_Node3_action N_ValidatePTTQuantities_Node3_action --> E_ValidatePTTQuantities N_ValidatePTTQuantities_Node2 -- No --> N_ValidatePTTQuantities_Node3 N_ValidatePTTQuantities_Node3 -- No --> E_ValidatePTTQuantities
requirements"}:::decision N_ValidatePTTQuantities_Node0_action["PTT quantities are valid when
release quantities meet or exceed
required thresholds for PTT status"]:::main N_ValidatePTTQuantities_Node0 -- Yes --> N_ValidatePTTQuantities_Node0_action N_ValidatePTTQuantities_Node0_action --> E_ValidatePTTQuantities S_ValidatePTTQuantities --> N_ValidatePTTQuantities_Node0 N_ValidatePTTQuantities_Node1{"Cargo quantities meet or exceed PTT
threshold requirements"}:::decision N_ValidatePTTQuantities_Node1_action["System validates PTT quantity
eligibility"]:::main N_ValidatePTTQuantities_Node1 -- Yes --> N_ValidatePTTQuantities_Node1_action N_ValidatePTTQuantities_Node1_action --> E_ValidatePTTQuantities N_ValidatePTTQuantities_Node0 -- No --> N_ValidatePTTQuantities_Node1 N_ValidatePTTQuantities_Node2{"The system validates PTT quantities
against current cargo quantities and
thresholds"}:::decision N_ValidatePTTQuantities_Node2_action["The system determines if quantities
match the PTT requirements for
status maintenance"]:::main N_ValidatePTTQuantities_Node2 -- Yes --> N_ValidatePTTQuantities_Node2_action N_ValidatePTTQuantities_Node2_action --> E_ValidatePTTQuantities N_ValidatePTTQuantities_Node1 -- No --> N_ValidatePTTQuantities_Node2 N_ValidatePTTQuantities_Node3{"The system validates PTT quantities
against business thresholds"}:::decision N_ValidatePTTQuantities_Node3_action["The system confirms PTT quantities
are valid for continued processing
or flags invalid quantities for
correction"]:::main N_ValidatePTTQuantities_Node3 -- Yes --> N_ValidatePTTQuantities_Node3_action N_ValidatePTTQuantities_Node3_action --> E_ValidatePTTQuantities N_ValidatePTTQuantities_Node2 -- No --> N_ValidatePTTQuantities_Node3 N_ValidatePTTQuantities_Node3 -- No --> E_ValidatePTTQuantities
File: GCX016.cbl
GIVEN:
PTT flag is set for cargo AND cargo has defined total quantities AND cargo has defined release quantities
WHEN:
The system validates PTT quantity requirements
THEN:
PTT quantities are valid when release quantities meet or exceed required thresholds for PTT status
File: GCX016.cbl
GIVEN:
PTT status is detected in cargo status array
WHEN:
Cargo quantities meet or exceed PTT threshold requirements
THEN:
System validates PTT quantity eligibility
File: GCX016.cbl
GIVEN:
A cargo record requiring PTT quantity validation with stored quantity information
WHEN:
- The system validates ptt quantities against current cargo quantities
- Thresholds
THEN:
The system determines if quantities match the PTT requirements for status maintenance
File: GCX016.cbl
GIVEN:
PTT status information has been saved
WHEN:
The system validates PTT quantities against business thresholds
THEN:
The system confirms PTT quantities are valid for continued processing or flags invalid quantities for correction
β Consolidated Acceptance Criteria
- The system processes invalid PTT quantities → pTT flag is cleared AND PTT status is removed from cargo
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ClearPTTFlag(["Start Step"])
E_ClearPTTFlag(["End Step"])
N_ClearPTTFlag_Node0{"The system processes invalid PTT
quantities"}:::decision N_ClearPTTFlag_Node0_action["PTT flag is cleared AND PTT status
is removed from cargo"]:::exclusion N_ClearPTTFlag_Node0 -- Yes -->|Alternative| N_ClearPTTFlag_Node0_action N_ClearPTTFlag_Node0_action --> E_ClearPTTFlag S_ClearPTTFlag --> N_ClearPTTFlag_Node0 N_ClearPTTFlag_Node0 -- No --> E_ClearPTTFlag
quantities"}:::decision N_ClearPTTFlag_Node0_action["PTT flag is cleared AND PTT status
is removed from cargo"]:::exclusion N_ClearPTTFlag_Node0 -- Yes -->|Alternative| N_ClearPTTFlag_Node0_action N_ClearPTTFlag_Node0_action --> E_ClearPTTFlag S_ClearPTTFlag --> N_ClearPTTFlag_Node0 N_ClearPTTFlag_Node0 -- No --> E_ClearPTTFlag
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
PTT flag is set AND PTT quantity validation has been performed AND PTT quantities are determined to be invalid
WHEN:
The system processes invalid PTT quantities
THEN:
- Ptt flag is cleared
- Ptt status is removed from cargo
β Consolidated Acceptance Criteria
- The system processes valid PTT quantities → pTT status is preserved AND PTT flag remains active
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_PreservePTTStatus(["Start Step"])
E_PreservePTTStatus(["End Step"])
N_PreservePTTStatus_Node0{"The system processes valid PTT
quantities"}:::decision N_PreservePTTStatus_Node0_action["PTT status is preserved AND PTT
flag remains active"]:::main N_PreservePTTStatus_Node0 -- Yes --> N_PreservePTTStatus_Node0_action N_PreservePTTStatus_Node0_action --> E_PreservePTTStatus S_PreservePTTStatus --> N_PreservePTTStatus_Node0 N_PreservePTTStatus_Node0 -- No --> E_PreservePTTStatus
quantities"}:::decision N_PreservePTTStatus_Node0_action["PTT status is preserved AND PTT
flag remains active"]:::main N_PreservePTTStatus_Node0 -- Yes --> N_PreservePTTStatus_Node0_action N_PreservePTTStatus_Node0_action --> E_PreservePTTStatus S_PreservePTTStatus --> N_PreservePTTStatus_Node0 N_PreservePTTStatus_Node0 -- No --> E_PreservePTTStatus
File: GCX016.cbl
GIVEN:
PTT flag is set AND PTT quantity validation has been performed AND PTT quantities are determined to be valid
WHEN:
The system processes valid PTT quantities
THEN:
- Ptt status is preserved
- Ptt flag remains active
β Consolidated Acceptance Criteria
- If FDA hold location requirements → fDA hold at destination is true when FDA requirements apply to destination location AND false when FDA requirements apply to other locations
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_FDAatDestination(["Start Step"])
E_FDAatDestination(["End Step"])
N_FDAatDestination_Node0{"The system evaluates FDA hold
location requirements"}:::decision N_FDAatDestination_Node0_action["FDA hold at destination is true
when FDA requirements apply to
destination location AND false when
FDA requirements apply to other
locations"]:::main N_FDAatDestination_Node0 -- Yes --> N_FDAatDestination_Node0_action N_FDAatDestination_Node0_action --> E_FDAatDestination S_FDAatDestination --> N_FDAatDestination_Node0 N_FDAatDestination_Node0 -- No --> E_FDAatDestination
location requirements"}:::decision N_FDAatDestination_Node0_action["FDA hold at destination is true
when FDA requirements apply to
destination location AND false when
FDA requirements apply to other
locations"]:::main N_FDAatDestination_Node0 -- Yes --> N_FDAatDestination_Node0_action N_FDAatDestination_Node0_action --> E_FDAatDestination S_FDAatDestination --> N_FDAatDestination_Node0 N_FDAatDestination_Node0 -- No --> E_FDAatDestination
File: GCX016.cbl
GIVEN:
FDA hold flag is set AND cargo has destination location information
WHEN:
The system evaluates FDA hold location requirements
THEN:
- Fda hold at destination is true when fda requirements apply to destination location
- False when fda requirements apply to other locations
β Consolidated Acceptance Criteria
- The system applies FDA override logic → fDA hold status takes highest priority AND overrides all conflicting status flags
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetFDAHoldPriority(["Start Step"])
E_SetFDAHoldPriority(["End Step"])
N_SetFDAHoldPriority_Node0{"The system applies FDA override
logic"}:::decision N_SetFDAHoldPriority_Node0_action["FDA hold status takes highest
priority AND overrides all
conflicting status flags"]:::main N_SetFDAHoldPriority_Node0 -- Yes --> N_SetFDAHoldPriority_Node0_action N_SetFDAHoldPriority_Node0_action --> E_SetFDAHoldPriority S_SetFDAHoldPriority --> N_SetFDAHoldPriority_Node0 N_SetFDAHoldPriority_Node0 -- No --> E_SetFDAHoldPriority
logic"}:::decision N_SetFDAHoldPriority_Node0_action["FDA hold status takes highest
priority AND overrides all
conflicting status flags"]:::main N_SetFDAHoldPriority_Node0 -- Yes --> N_SetFDAHoldPriority_Node0_action N_SetFDAHoldPriority_Node0_action --> E_SetFDAHoldPriority S_SetFDAHoldPriority --> N_SetFDAHoldPriority_Node0 N_SetFDAHoldPriority_Node0 -- No --> E_SetFDAHoldPriority
File: GCX016.cbl
GIVEN:
FDA hold flag is set AND FDA hold applies at destination location
WHEN:
The system applies FDA override logic
THEN:
- Fda hold status takes highest priority
- Overrides all conflicting status flags
β Consolidated Acceptance Criteria
- If proceed flag status → proceed flag is set when cargo is authorized to proceed AND proceed flag is not set when cargo is not authorized to proceed
- The system checks the proceed flag in the status array → if proceed flag is set, continue to border arrival validation, otherwise skip proceed processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ProceedFlagSet(["Start Step"])
E_ProceedFlagSet(["End Step"])
N_ProceedFlagSet_Node0{"The system evaluates proceed flag
status"}:::decision N_ProceedFlagSet_Node0_action["Proceed flag is set when cargo is
authorized to proceed AND proceed
flag is not set when cargo is not
authorized to proceed"]:::main N_ProceedFlagSet_Node0 -- Yes --> N_ProceedFlagSet_Node0_action N_ProceedFlagSet_Node0_action --> E_ProceedFlagSet S_ProceedFlagSet --> N_ProceedFlagSet_Node0 N_ProceedFlagSet_Node1{"The system checks the proceed flag
in the status array"}:::decision N_ProceedFlagSet_Node1_action["If proceed flag is set, continue to
border arrival validation, otherwise
skip proceed processing"]:::main N_ProceedFlagSet_Node1 -- Yes --> N_ProceedFlagSet_Node1_action N_ProceedFlagSet_Node1_action --> E_ProceedFlagSet N_ProceedFlagSet_Node0 -- No --> N_ProceedFlagSet_Node1 N_ProceedFlagSet_Node1 -- No --> E_ProceedFlagSet
status"}:::decision N_ProceedFlagSet_Node0_action["Proceed flag is set when cargo is
authorized to proceed AND proceed
flag is not set when cargo is not
authorized to proceed"]:::main N_ProceedFlagSet_Node0 -- Yes --> N_ProceedFlagSet_Node0_action N_ProceedFlagSet_Node0_action --> E_ProceedFlagSet S_ProceedFlagSet --> N_ProceedFlagSet_Node0 N_ProceedFlagSet_Node1{"The system checks the proceed flag
in the status array"}:::decision N_ProceedFlagSet_Node1_action["If proceed flag is set, continue to
border arrival validation, otherwise
skip proceed processing"]:::main N_ProceedFlagSet_Node1 -- Yes --> N_ProceedFlagSet_Node1_action N_ProceedFlagSet_Node1_action --> E_ProceedFlagSet N_ProceedFlagSet_Node0 -- No --> N_ProceedFlagSet_Node1 N_ProceedFlagSet_Node1 -- No --> E_ProceedFlagSet
File: GCX016.cbl
GIVEN:
Cargo status analysis is in progress AND proceed flag evaluation is required
WHEN:
The system evaluates proceed flag status
THEN:
- Proceed flag is set when cargo is authorized to proceed
- Proceed flag is not set when cargo is not authorized to proceed
File: GCX016.cbl
GIVEN:
Cargo status analysis is complete and status array is available
WHEN:
The system checks the proceed flag in the status array
THEN:
If proceed flag is set, continue to border arrival validation, otherwise skip proceed processing
β Consolidated Acceptance Criteria
- The system processes proceed flag activation → border arrival status is set AND border arrival date is recorded
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetBorderArrivalStatus(["Start Step"])
E_SetBorderArrivalStatus(["End Step"])
N_SetBorderArrivalStatus_Node0{"The system processes proceed flag
activation"}:::decision N_SetBorderArrivalStatus_Node0_action["Border arrival status is set AND
border arrival date is recorded"]:::main N_SetBorderArrivalStatus_Node0 -- Yes --> N_SetBorderArrivalStatus_Node0_action N_SetBorderArrivalStatus_Node0_action --> E_SetBorderArrivalStatus S_SetBorderArrivalStatus --> N_SetBorderArrivalStatus_Node0 N_SetBorderArrivalStatus_Node0 -- No --> E_SetBorderArrivalStatus
activation"}:::decision N_SetBorderArrivalStatus_Node0_action["Border arrival status is set AND
border arrival date is recorded"]:::main N_SetBorderArrivalStatus_Node0 -- Yes --> N_SetBorderArrivalStatus_Node0_action N_SetBorderArrivalStatus_Node0_action --> E_SetBorderArrivalStatus S_SetBorderArrivalStatus --> N_SetBorderArrivalStatus_Node0 N_SetBorderArrivalStatus_Node0 -- No --> E_SetBorderArrivalStatus
File: GCX016.cbl
GIVEN:
Proceed flag is set AND cargo requires border arrival processing
WHEN:
The system processes proceed flag activation
THEN:
- Border arrival status is set
- Border arrival date is recorded
β Consolidated Acceptance Criteria
- If export flag status → export flag is set when cargo is designated for export AND export flag is not set when cargo is not designated for export
- The system checks the export flag status → if export flag is set, proceed to cargo status verification; otherwise skip export processing and continue to next step
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExportFlagSet(["Start Step"])
E_ExportFlagSet(["End Step"])
N_ExportFlagSet_Node0{"The system evaluates export flag
status"}:::decision N_ExportFlagSet_Node0_action["Export flag is set when cargo is
designated for export AND export
flag is not set when cargo is not
designated for export"]:::main N_ExportFlagSet_Node0 -- Yes --> N_ExportFlagSet_Node0_action N_ExportFlagSet_Node0_action --> E_ExportFlagSet S_ExportFlagSet --> N_ExportFlagSet_Node0 N_ExportFlagSet_Node1{"The system checks the export flag
status"}:::decision N_ExportFlagSet_Node1_action["If export flag is set, proceed to
cargo status verification otherwise
skip export processing and continue
to next step"]:::main N_ExportFlagSet_Node1 -- Yes --> N_ExportFlagSet_Node1_action N_ExportFlagSet_Node1_action --> E_ExportFlagSet N_ExportFlagSet_Node0 -- No --> N_ExportFlagSet_Node1 N_ExportFlagSet_Node1 -- No --> E_ExportFlagSet
status"}:::decision N_ExportFlagSet_Node0_action["Export flag is set when cargo is
designated for export AND export
flag is not set when cargo is not
designated for export"]:::main N_ExportFlagSet_Node0 -- Yes --> N_ExportFlagSet_Node0_action N_ExportFlagSet_Node0_action --> E_ExportFlagSet S_ExportFlagSet --> N_ExportFlagSet_Node0 N_ExportFlagSet_Node1{"The system checks the export flag
status"}:::decision N_ExportFlagSet_Node1_action["If export flag is set, proceed to
cargo status verification otherwise
skip export processing and continue
to next step"]:::main N_ExportFlagSet_Node1 -- Yes --> N_ExportFlagSet_Node1_action N_ExportFlagSet_Node1_action --> E_ExportFlagSet N_ExportFlagSet_Node0 -- No --> N_ExportFlagSet_Node1 N_ExportFlagSet_Node1 -- No --> E_ExportFlagSet
File: GCX016.cbl
GIVEN:
Cargo status analysis is in progress AND export flag evaluation is required
WHEN:
The system evaluates export flag status
THEN:
- Export flag is set when cargo is designated for export
- Export flag is not set when cargo is not designated for export
File: GCX016.cbl
GIVEN:
A cargo record has completed status analysis
WHEN:
The system checks the export flag status
THEN:
- If export flag is set, proceed to cargo status verification; otherwise skip export processing
- Continue to next step
β Consolidated Acceptance Criteria
- The system completes export flag processing → export status is assigned to cargo AND export processing indicators are set
- The export flag is set for the cargo → the cargo status is updated to export status
- Cargo export conditions are met → system sets export status flag for the cargo
- Export status flag is present in the cargo evaluation → the system sets export status and clears the destination index
- The system sets the export status → the export status is established based on current cargo export conditions and requirements
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetExportStatus(["Start Step"])
E_SetExportStatus(["End Step"])
N_SetExportStatus_Node0{"The system completes export flag
processing"}:::decision N_SetExportStatus_Node0_action["Export status is assigned to cargo
AND export processing indicators are
set"]:::main N_SetExportStatus_Node0 -- Yes --> N_SetExportStatus_Node0_action N_SetExportStatus_Node0_action --> E_SetExportStatus S_SetExportStatus --> N_SetExportStatus_Node0 N_SetExportStatus_Node1{"The export flag is set for the
cargo"}:::decision N_SetExportStatus_Node1_action["The cargo status is updated to
export status"]:::main N_SetExportStatus_Node1 -- Yes --> N_SetExportStatus_Node1_action N_SetExportStatus_Node1_action --> E_SetExportStatus N_SetExportStatus_Node0 -- No --> N_SetExportStatus_Node1 N_SetExportStatus_Node2{"Cargo export conditions are met"}:::decision N_SetExportStatus_Node2_action["System sets export status flag for
the cargo"]:::main N_SetExportStatus_Node2 -- Yes --> N_SetExportStatus_Node2_action N_SetExportStatus_Node2_action --> E_SetExportStatus N_SetExportStatus_Node1 -- No --> N_SetExportStatus_Node2 N_SetExportStatus_Node3{"Export status flag is present in
the cargo evaluation"}:::decision N_SetExportStatus_Node3_action["The system sets export status and
clears the destination index"]:::main N_SetExportStatus_Node3 -- Yes --> N_SetExportStatus_Node3_action N_SetExportStatus_Node3_action --> E_SetExportStatus N_SetExportStatus_Node2 -- No --> N_SetExportStatus_Node3 N_SetExportStatus_Node4{"The system sets the export status"}:::decision N_SetExportStatus_Node4_action["The export status is established
based on current cargo export
conditions and requirements"]:::main N_SetExportStatus_Node4 -- Yes --> N_SetExportStatus_Node4_action N_SetExportStatus_Node4_action --> E_SetExportStatus N_SetExportStatus_Node3 -- No --> N_SetExportStatus_Node4 N_SetExportStatus_Node4 -- No --> E_SetExportStatus
processing"}:::decision N_SetExportStatus_Node0_action["Export status is assigned to cargo
AND export processing indicators are
set"]:::main N_SetExportStatus_Node0 -- Yes --> N_SetExportStatus_Node0_action N_SetExportStatus_Node0_action --> E_SetExportStatus S_SetExportStatus --> N_SetExportStatus_Node0 N_SetExportStatus_Node1{"The export flag is set for the
cargo"}:::decision N_SetExportStatus_Node1_action["The cargo status is updated to
export status"]:::main N_SetExportStatus_Node1 -- Yes --> N_SetExportStatus_Node1_action N_SetExportStatus_Node1_action --> E_SetExportStatus N_SetExportStatus_Node0 -- No --> N_SetExportStatus_Node1 N_SetExportStatus_Node2{"Cargo export conditions are met"}:::decision N_SetExportStatus_Node2_action["System sets export status flag for
the cargo"]:::main N_SetExportStatus_Node2 -- Yes --> N_SetExportStatus_Node2_action N_SetExportStatus_Node2_action --> E_SetExportStatus N_SetExportStatus_Node1 -- No --> N_SetExportStatus_Node2 N_SetExportStatus_Node3{"Export status flag is present in
the cargo evaluation"}:::decision N_SetExportStatus_Node3_action["The system sets export status and
clears the destination index"]:::main N_SetExportStatus_Node3 -- Yes --> N_SetExportStatus_Node3_action N_SetExportStatus_Node3_action --> E_SetExportStatus N_SetExportStatus_Node2 -- No --> N_SetExportStatus_Node3 N_SetExportStatus_Node4{"The system sets the export status"}:::decision N_SetExportStatus_Node4_action["The export status is established
based on current cargo export
conditions and requirements"]:::main N_SetExportStatus_Node4 -- Yes --> N_SetExportStatus_Node4_action N_SetExportStatus_Node4_action --> E_SetExportStatus N_SetExportStatus_Node3 -- No --> N_SetExportStatus_Node4 N_SetExportStatus_Node4 -- No --> E_SetExportStatus
File: GCX016.cbl
GIVEN:
Export flag is set AND destination index has been cleared
WHEN:
The system completes export flag processing
THEN:
- Export status is assigned to cargo
- Export processing indicators are set
File: GCX016.cbl
GIVEN:
A cargo record exists and export processing is being performed
WHEN:
The export flag is set for the cargo
THEN:
The cargo status is updated to export status
File: GCX016.cbl
GIVEN:
Export status is detected in cargo status array
WHEN:
Cargo export conditions are met
THEN:
System sets export status flag for the cargo
File: GCX016.cbl
GIVEN:
A cargo record being evaluated for export status
WHEN:
Export status flag is present in the cargo evaluation
THEN:
- The system sets export status
- Clears the destination index
File: GCX016.cbl
GIVEN:
New destination index parameters are being calculated AND export status information is available
WHEN:
The system sets the export status
THEN:
- The export status is established based on current cargo export conditions
- Requirements
β Consolidated Acceptance Criteria
- If arrival flag status → arrival flag is set when cargo has arrived at destination AND arrival flag is not set when cargo has not arrived at destination
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ArrivalFlagSet(["Start Step"])
E_ArrivalFlagSet(["End Step"])
N_ArrivalFlagSet_Node0{"The system evaluates arrival flag
status"}:::decision N_ArrivalFlagSet_Node0_action["Arrival flag is set when cargo has
arrived at destination AND arrival
flag is not set when cargo has not
arrived at destination"]:::main N_ArrivalFlagSet_Node0 -- Yes --> N_ArrivalFlagSet_Node0_action N_ArrivalFlagSet_Node0_action --> E_ArrivalFlagSet S_ArrivalFlagSet --> N_ArrivalFlagSet_Node0 N_ArrivalFlagSet_Node0 -- No --> E_ArrivalFlagSet
status"}:::decision N_ArrivalFlagSet_Node0_action["Arrival flag is set when cargo has
arrived at destination AND arrival
flag is not set when cargo has not
arrived at destination"]:::main N_ArrivalFlagSet_Node0 -- Yes --> N_ArrivalFlagSet_Node0_action N_ArrivalFlagSet_Node0_action --> E_ArrivalFlagSet S_ArrivalFlagSet --> N_ArrivalFlagSet_Node0 N_ArrivalFlagSet_Node0 -- No --> E_ArrivalFlagSet
File: GCX016.cbl
GIVEN:
Cargo status analysis is in progress AND arrival flag evaluation is required
WHEN:
The system evaluates arrival flag status
THEN:
- Arrival flag is set when cargo has arrived at destination
- Arrival flag is not set when cargo has not arrived at destination
β Consolidated Acceptance Criteria
- The system processes arrival flag activation → arrival status is assigned to cargo AND arrival date and time are recorded
- The arrival flag is set for the cargo → the cargo status is updated to arrival status and the border arrival date is set to current date
- Cargo arrival conditions are met → system sets arrival status flag for the cargo
- Arrival status flag is present in the evaluation → the system sets arrival status and clears the destination index
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetArrivalStatus(["Start Step"])
E_SetArrivalStatus(["End Step"])
N_SetArrivalStatus_Node0{"The system processes arrival flag
activation"}:::decision N_SetArrivalStatus_Node0_action["Arrival status is assigned to cargo
AND arrival date and time are
recorded"]:::main N_SetArrivalStatus_Node0 -- Yes --> N_SetArrivalStatus_Node0_action N_SetArrivalStatus_Node0_action --> E_SetArrivalStatus S_SetArrivalStatus --> N_SetArrivalStatus_Node0 N_SetArrivalStatus_Node1{"The arrival flag is set for the
cargo"}:::decision N_SetArrivalStatus_Node1_action["The cargo status is updated to
arrival status and the border
arrival date is set to current date"]:::main N_SetArrivalStatus_Node1 -- Yes --> N_SetArrivalStatus_Node1_action N_SetArrivalStatus_Node1_action --> E_SetArrivalStatus N_SetArrivalStatus_Node0 -- No --> N_SetArrivalStatus_Node1 N_SetArrivalStatus_Node2{"Cargo arrival conditions are met"}:::decision N_SetArrivalStatus_Node2_action["System sets arrival status flag for
the cargo"]:::main N_SetArrivalStatus_Node2 -- Yes --> N_SetArrivalStatus_Node2_action N_SetArrivalStatus_Node2_action --> E_SetArrivalStatus N_SetArrivalStatus_Node1 -- No --> N_SetArrivalStatus_Node2 N_SetArrivalStatus_Node3{"Arrival status flag is present in
the evaluation"}:::decision N_SetArrivalStatus_Node3_action["The system sets arrival status and
clears the destination index"]:::main N_SetArrivalStatus_Node3 -- Yes --> N_SetArrivalStatus_Node3_action N_SetArrivalStatus_Node3_action --> E_SetArrivalStatus N_SetArrivalStatus_Node2 -- No --> N_SetArrivalStatus_Node3 N_SetArrivalStatus_Node3 -- No --> E_SetArrivalStatus
activation"}:::decision N_SetArrivalStatus_Node0_action["Arrival status is assigned to cargo
AND arrival date and time are
recorded"]:::main N_SetArrivalStatus_Node0 -- Yes --> N_SetArrivalStatus_Node0_action N_SetArrivalStatus_Node0_action --> E_SetArrivalStatus S_SetArrivalStatus --> N_SetArrivalStatus_Node0 N_SetArrivalStatus_Node1{"The arrival flag is set for the
cargo"}:::decision N_SetArrivalStatus_Node1_action["The cargo status is updated to
arrival status and the border
arrival date is set to current date"]:::main N_SetArrivalStatus_Node1 -- Yes --> N_SetArrivalStatus_Node1_action N_SetArrivalStatus_Node1_action --> E_SetArrivalStatus N_SetArrivalStatus_Node0 -- No --> N_SetArrivalStatus_Node1 N_SetArrivalStatus_Node2{"Cargo arrival conditions are met"}:::decision N_SetArrivalStatus_Node2_action["System sets arrival status flag for
the cargo"]:::main N_SetArrivalStatus_Node2 -- Yes --> N_SetArrivalStatus_Node2_action N_SetArrivalStatus_Node2_action --> E_SetArrivalStatus N_SetArrivalStatus_Node1 -- No --> N_SetArrivalStatus_Node2 N_SetArrivalStatus_Node3{"Arrival status flag is present in
the evaluation"}:::decision N_SetArrivalStatus_Node3_action["The system sets arrival status and
clears the destination index"]:::main N_SetArrivalStatus_Node3 -- Yes --> N_SetArrivalStatus_Node3_action N_SetArrivalStatus_Node3_action --> E_SetArrivalStatus N_SetArrivalStatus_Node2 -- No --> N_SetArrivalStatus_Node3 N_SetArrivalStatus_Node3 -- No --> E_SetArrivalStatus
File: GCX016.cbl
GIVEN:
Arrival flag is set AND cargo requires arrival status processing
WHEN:
The system processes arrival flag activation
THEN:
- Arrival status is assigned to cargo
- Arrival date
- Time are recorded
File: GCX016.cbl
GIVEN:
A cargo record exists and arrival processing is being performed
WHEN:
The arrival flag is set for the cargo
THEN:
- The cargo status is updated to arrival status
- The border arrival date is set to current date
File: GCX016.cbl
GIVEN:
Arrival status is detected in cargo status array
WHEN:
Cargo arrival conditions are met
THEN:
System sets arrival status flag for the cargo
File: GCX016.cbl
GIVEN:
A cargo record being processed for arrival status
WHEN:
Arrival status flag is present in the evaluation
THEN:
- The system sets arrival status
- Clears the destination index
β Consolidated Acceptance Criteria
- If flag combinations for conflicts → multiple conflicting states exist when incompatible status flags are simultaneously active AND no conflicts exist when status flags are compatible
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MultipleConflictingStates(["Start Step"])
E_MultipleConflictingStates(["End Step"])
N_MultipleConflictingStates_Node0{"The system evaluates flag
combinations for conflicts"}:::decision N_MultipleConflictingStates_Node0_action["Multiple conflicting states exist
when incompatible status flags are
simultaneously active AND no
conflicts exist when status flags
are compatible"]:::main N_MultipleConflictingStates_Node0 -- Yes --> N_MultipleConflictingStates_Node0_action N_MultipleConflictingStates_Node0_action --> E_MultipleConflictingStates S_MultipleConflictingStates --> N_MultipleConflictingStates_Node0 N_MultipleConflictingStates_Node0 -- No --> E_MultipleConflictingStates
combinations for conflicts"}:::decision N_MultipleConflictingStates_Node0_action["Multiple conflicting states exist
when incompatible status flags are
simultaneously active AND no
conflicts exist when status flags
are compatible"]:::main N_MultipleConflictingStates_Node0 -- Yes --> N_MultipleConflictingStates_Node0_action N_MultipleConflictingStates_Node0_action --> E_MultipleConflictingStates S_MultipleConflictingStates --> N_MultipleConflictingStates_Node0 N_MultipleConflictingStates_Node0 -- No --> E_MultipleConflictingStates
File: GCX016.cbl
GIVEN:
Final status determination is in progress AND multiple status flags are set
WHEN:
The system evaluates flag combinations for conflicts
THEN:
- Multiple conflicting states exist when incompatible status flags are simultaneously active
- No conflicts exist when status flags are compatible
β Consolidated Acceptance Criteria
- The system resolves status conflicts → highest priority business rule is applied AND lower priority rules are subordinated according to established hierarchy
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ApplyBusinessRulePriority(["Start Step"])
E_ApplyBusinessRulePriority(["End Step"])
N_ApplyBusinessRulePriority_Node0{"The system resolves status
conflicts"}:::decision N_ApplyBusinessRulePriority_Node0_action["Highest priority business rule is
applied AND lower priority rules are
subordinated according to
established hierarchy"]:::main N_ApplyBusinessRulePriority_Node0 -- Yes --> N_ApplyBusinessRulePriority_Node0_action N_ApplyBusinessRulePriority_Node0_action --> E_ApplyBusinessRulePriority S_ApplyBusinessRulePriority --> N_ApplyBusinessRulePriority_Node0 N_ApplyBusinessRulePriority_Node0 -- No --> E_ApplyBusinessRulePriority
conflicts"}:::decision N_ApplyBusinessRulePriority_Node0_action["Highest priority business rule is
applied AND lower priority rules are
subordinated according to
established hierarchy"]:::main N_ApplyBusinessRulePriority_Node0 -- Yes --> N_ApplyBusinessRulePriority_Node0_action N_ApplyBusinessRulePriority_Node0_action --> E_ApplyBusinessRulePriority S_ApplyBusinessRulePriority --> N_ApplyBusinessRulePriority_Node0 N_ApplyBusinessRulePriority_Node0 -- No --> E_ApplyBusinessRulePriority
File: GCX016.cbl
GIVEN:
Multiple conflicting states have been detected AND business rule priorities are defined
WHEN:
The system resolves status conflicts
THEN:
- Highest priority business rule is applied
- Lower priority rules are subordinated according to established hierarchy
β Consolidated Acceptance Criteria
- The system finalizes status assignment → primary status flag is set to the highest priority status AND primary status becomes the active cargo status
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetPrimaryStatusFlag(["Start Step"])
E_SetPrimaryStatusFlag(["End Step"])
N_SetPrimaryStatusFlag_Node0{"The system finalizes status
assignment"}:::decision N_SetPrimaryStatusFlag_Node0_action["Primary status flag is set to the
highest priority status AND primary
status becomes the active cargo
status"]:::main N_SetPrimaryStatusFlag_Node0 -- Yes --> N_SetPrimaryStatusFlag_Node0_action N_SetPrimaryStatusFlag_Node0_action --> E_SetPrimaryStatusFlag S_SetPrimaryStatusFlag --> N_SetPrimaryStatusFlag_Node0 N_SetPrimaryStatusFlag_Node0 -- No --> E_SetPrimaryStatusFlag
assignment"}:::decision N_SetPrimaryStatusFlag_Node0_action["Primary status flag is set to the
highest priority status AND primary
status becomes the active cargo
status"]:::main N_SetPrimaryStatusFlag_Node0 -- Yes --> N_SetPrimaryStatusFlag_Node0_action N_SetPrimaryStatusFlag_Node0_action --> E_SetPrimaryStatusFlag S_SetPrimaryStatusFlag --> N_SetPrimaryStatusFlag_Node0 N_SetPrimaryStatusFlag_Node0 -- No --> E_SetPrimaryStatusFlag
File: GCX016.cbl
GIVEN:
Business rule priority has been applied AND winning status has been determined
WHEN:
The system finalizes status assignment
THEN:
- Primary status flag is set to the highest priority status
- Primary status becomes the active cargo status
β Consolidated Acceptance Criteria
- The system completes conflict resolution → all conflicting flags are cleared AND only the primary status flag remains active
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ClearConflictingFlags(["Start Step"])
E_ClearConflictingFlags(["End Step"])
N_ClearConflictingFlags_Node0{"The system completes conflict
resolution"}:::decision N_ClearConflictingFlags_Node0_action["All conflicting flags are cleared
AND only the primary status flag
remains active"]:::main N_ClearConflictingFlags_Node0 -- Yes --> N_ClearConflictingFlags_Node0_action N_ClearConflictingFlags_Node0_action --> E_ClearConflictingFlags S_ClearConflictingFlags --> N_ClearConflictingFlags_Node0 N_ClearConflictingFlags_Node0 -- No --> E_ClearConflictingFlags
resolution"}:::decision N_ClearConflictingFlags_Node0_action["All conflicting flags are cleared
AND only the primary status flag
remains active"]:::main N_ClearConflictingFlags_Node0 -- Yes --> N_ClearConflictingFlags_Node0_action N_ClearConflictingFlags_Node0_action --> E_ClearConflictingFlags S_ClearConflictingFlags --> N_ClearConflictingFlags_Node0 N_ClearConflictingFlags_Node0 -- No --> E_ClearConflictingFlags
File: GCX016.cbl
GIVEN:
Primary status flag has been set AND conflicting flags still exist
WHEN:
The system completes conflict resolution
THEN:
- All conflicting flags are cleared
- Only the primary status flag remains active
β Consolidated Acceptance Criteria
- If disposition codes for FDA holds (A3 codes) in the status array → fDA hold codes are identified and given highest priority precedence over all other hold and release codes
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CheckforFDAHoldCodes(["Start Step"])
E_CheckforFDAHoldCodes(["End Step"])
N_CheckforFDAHoldCodes_Node0{"The system evaluates disposition
codes for FDA holds A3 codes in the
status array"}:::decision N_CheckforFDAHoldCodes_Node0_action["FDA hold codes are identified and
given highest priority precedence
over all other hold and release
codes"]:::main N_CheckforFDAHoldCodes_Node0 -- Yes --> N_CheckforFDAHoldCodes_Node0_action N_CheckforFDAHoldCodes_Node0_action --> E_CheckforFDAHoldCodes S_CheckforFDAHoldCodes --> N_CheckforFDAHoldCodes_Node0 N_CheckforFDAHoldCodes_Node0 -- No --> E_CheckforFDAHoldCodes
codes for FDA holds A3 codes in the
status array"}:::decision N_CheckforFDAHoldCodes_Node0_action["FDA hold codes are identified and
given highest priority precedence
over all other hold and release
codes"]:::main N_CheckforFDAHoldCodes_Node0 -- Yes --> N_CheckforFDAHoldCodes_Node0_action N_CheckforFDAHoldCodes_Node0_action --> E_CheckforFDAHoldCodes S_CheckforFDAHoldCodes --> N_CheckforFDAHoldCodes_Node0 N_CheckforFDAHoldCodes_Node0 -- No --> E_CheckforFDAHoldCodes
File: GCX016.cbl
GIVEN:
A cargo status array contains multiple disposition codes including potential FDA hold codes
WHEN:
The system evaluates disposition codes for FDA holds (A3 codes) in the status array
THEN:
- Fda hold codes are identified
- Given highest priority precedence over all other hold
- Release codes
β Consolidated Acceptance Criteria
- The system resolves conflicting disposition codes with FDA holds present → fDA hold status is set as the final cargo status with highest regulatory precedence, and cargo status is set to HOLDFDA
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ApplyFDAHoldPriorityHighestPrecedence(["Start Step"])
E_ApplyFDAHoldPriorityHighestPrecedence(["End Step"])
N_ApplyFDAHoldPriorityHighestPrecedence_Node0{"The system resolves conflicting
disposition codes with FDA holds
present"}:::decision N_ApplyFDAHoldPriorityHighestPrecedence_Node0_action["FDA hold status is set as the final
cargo status with highest regulatory
precedence, and cargo status is set
to HOLDFDA"]:::main N_ApplyFDAHoldPriorityHighestPrecedence_Node0 -- Yes --> N_ApplyFDAHoldPriorityHighestPrecedence_Node0_action N_ApplyFDAHoldPriorityHighestPrecedence_Node0_action --> E_ApplyFDAHoldPriorityHighestPrecedence S_ApplyFDAHoldPriorityHighestPrecedence --> N_ApplyFDAHoldPriorityHighestPrecedence_Node0 N_ApplyFDAHoldPriorityHighestPrecedence_Node0 -- No --> E_ApplyFDAHoldPriorityHighestPrecedence
disposition codes with FDA holds
present"}:::decision N_ApplyFDAHoldPriorityHighestPrecedence_Node0_action["FDA hold status is set as the final
cargo status with highest regulatory
precedence, and cargo status is set
to HOLDFDA"]:::main N_ApplyFDAHoldPriorityHighestPrecedence_Node0 -- Yes --> N_ApplyFDAHoldPriorityHighestPrecedence_Node0_action N_ApplyFDAHoldPriorityHighestPrecedence_Node0_action --> E_ApplyFDAHoldPriorityHighestPrecedence S_ApplyFDAHoldPriorityHighestPrecedence --> N_ApplyFDAHoldPriorityHighestPrecedence_Node0 N_ApplyFDAHoldPriorityHighestPrecedence_Node0 -- No --> E_ApplyFDAHoldPriorityHighestPrecedence
File: GCX016.cbl
GIVEN:
FDA hold codes are detected in the cargo status array
WHEN:
The system resolves conflicting disposition codes with FDA holds present
THEN:
FDA hold status is set as the final cargo status with highest regulatory precedence, and cargo status is set to HOLDFDA
β Consolidated Acceptance Criteria
- If hold code priorities for customs holds → customs hold codes are given priority over release codes and proceed codes but lower priority than FDA holds
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ApplyCustomsHoldPriority(["Start Step"])
E_ApplyCustomsHoldPriority(["End Step"])
N_ApplyCustomsHoldPriority_Node0{"The system evaluates hold code
priorities for customs holds"}:::decision N_ApplyCustomsHoldPriority_Node0_action["Customs hold codes are given
priority over release codes and
proceed codes but lower priority
than FDA holds"]:::main N_ApplyCustomsHoldPriority_Node0 -- Yes --> N_ApplyCustomsHoldPriority_Node0_action N_ApplyCustomsHoldPriority_Node0_action --> E_ApplyCustomsHoldPriority S_ApplyCustomsHoldPriority --> N_ApplyCustomsHoldPriority_Node0 N_ApplyCustomsHoldPriority_Node0 -- No --> E_ApplyCustomsHoldPriority
priorities for customs holds"}:::decision N_ApplyCustomsHoldPriority_Node0_action["Customs hold codes are given
priority over release codes and
proceed codes but lower priority
than FDA holds"]:::main N_ApplyCustomsHoldPriority_Node0 -- Yes --> N_ApplyCustomsHoldPriority_Node0_action N_ApplyCustomsHoldPriority_Node0_action --> E_ApplyCustomsHoldPriority S_ApplyCustomsHoldPriority --> N_ApplyCustomsHoldPriority_Node0 N_ApplyCustomsHoldPriority_Node0 -- No --> E_ApplyCustomsHoldPriority
File: GCX016.cbl
GIVEN:
Customs hold codes are present in the status array and no FDA hold codes exist
WHEN:
The system evaluates hold code priorities for customs holds
THEN:
- Customs hold codes are given priority over release codes
- Proceed codes but lower priority than fda holds
β Consolidated Acceptance Criteria
- If release code priorities → release codes are processed and applied to determine cargo release status based on quantity validation
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ApplyReleaseCodePriority(["Start Step"])
E_ApplyReleaseCodePriority(["End Step"])
N_ApplyReleaseCodePriority_Node0{"The system evaluates release code
priorities"}:::decision N_ApplyReleaseCodePriority_Node0_action["Release codes are processed and
applied to determine cargo release
status based on quantity validation"]:::main N_ApplyReleaseCodePriority_Node0 -- Yes --> N_ApplyReleaseCodePriority_Node0_action N_ApplyReleaseCodePriority_Node0_action --> E_ApplyReleaseCodePriority S_ApplyReleaseCodePriority --> N_ApplyReleaseCodePriority_Node0 N_ApplyReleaseCodePriority_Node0 -- No --> E_ApplyReleaseCodePriority
priorities"}:::decision N_ApplyReleaseCodePriority_Node0_action["Release codes are processed and
applied to determine cargo release
status based on quantity validation"]:::main N_ApplyReleaseCodePriority_Node0 -- Yes --> N_ApplyReleaseCodePriority_Node0_action N_ApplyReleaseCodePriority_Node0_action --> E_ApplyReleaseCodePriority S_ApplyReleaseCodePriority --> N_ApplyReleaseCodePriority_Node0 N_ApplyReleaseCodePriority_Node0 -- No --> E_ApplyReleaseCodePriority
File: GCX016.cbl
GIVEN:
Release codes are present in the status array and no FDA or customs hold codes exist
WHEN:
The system evaluates release code priorities
THEN:
- Release codes are processed
- Applied to determine cargo release status based on quantity validation
β Consolidated Acceptance Criteria
- If PTT priority against other disposition codes → pTT status is applied for partial release scenarios while maintaining hold status on remaining quantities
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ApplyPTTPriorityforPartialRelease(["Start Step"])
E_ApplyPTTPriorityforPartialRelease(["End Step"])
N_ApplyPTTPriorityforPartialRelease_Node0{"The system evaluates PTT priority
against other disposition codes"}:::decision N_ApplyPTTPriorityforPartialRelease_Node0_action["PTT status is applied for partial
release scenarios while maintaining
hold status on remaining quantities"]:::main N_ApplyPTTPriorityforPartialRelease_Node0 -- Yes --> N_ApplyPTTPriorityforPartialRelease_Node0_action N_ApplyPTTPriorityforPartialRelease_Node0_action --> E_ApplyPTTPriorityforPartialRelease S_ApplyPTTPriorityforPartialRelease --> N_ApplyPTTPriorityforPartialRelease_Node0 N_ApplyPTTPriorityforPartialRelease_Node0 -- No --> E_ApplyPTTPriorityforPartialRelease
against other disposition codes"}:::decision N_ApplyPTTPriorityforPartialRelease_Node0_action["PTT status is applied for partial
release scenarios while maintaining
hold status on remaining quantities"]:::main N_ApplyPTTPriorityforPartialRelease_Node0 -- Yes --> N_ApplyPTTPriorityforPartialRelease_Node0_action N_ApplyPTTPriorityforPartialRelease_Node0_action --> E_ApplyPTTPriorityforPartialRelease S_ApplyPTTPriorityforPartialRelease --> N_ApplyPTTPriorityforPartialRelease_Node0 N_ApplyPTTPriorityforPartialRelease_Node0 -- No --> E_ApplyPTTPriorityforPartialRelease
File: GCX016.cbl
GIVEN:
PTT status conditions are present and cargo has partial release quantities
WHEN:
The system evaluates PTT priority against other disposition codes
THEN:
PTT status is applied for partial release scenarios while maintaining hold status on remaining quantities
β Consolidated Acceptance Criteria
- If proceed code priorities → proceed codes are applied to set cargo proceed status with appropriate location and timing information
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ApplyProceedPriority(["Start Step"])
E_ApplyProceedPriority(["End Step"])
N_ApplyProceedPriority_Node0{"The system evaluates proceed code
priorities"}:::decision N_ApplyProceedPriority_Node0_action["Proceed codes are applied to set
cargo proceed status with
appropriate location and timing
information"]:::main N_ApplyProceedPriority_Node0 -- Yes --> N_ApplyProceedPriority_Node0_action N_ApplyProceedPriority_Node0_action --> E_ApplyProceedPriority S_ApplyProceedPriority --> N_ApplyProceedPriority_Node0 N_ApplyProceedPriority_Node0 -- No --> E_ApplyProceedPriority
priorities"}:::decision N_ApplyProceedPriority_Node0_action["Proceed codes are applied to set
cargo proceed status with
appropriate location and timing
information"]:::main N_ApplyProceedPriority_Node0 -- Yes --> N_ApplyProceedPriority_Node0_action N_ApplyProceedPriority_Node0_action --> E_ApplyProceedPriority S_ApplyProceedPriority --> N_ApplyProceedPriority_Node0 N_ApplyProceedPriority_Node0 -- No --> E_ApplyProceedPriority
File: GCX016.cbl
GIVEN:
Proceed codes are present in the status array and no higher priority hold or release codes exist
WHEN:
The system evaluates proceed code priorities
THEN:
- Proceed codes are applied to set cargo proceed status with appropriate location
- Timing information
β Consolidated Acceptance Criteria
- Released quantity is less than total cargo quantity → partial release status is set with HOLDPCS (hold pieces) status applied to remaining unreleased quantities
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetPartialReleasewithHoldonPieces(["Start Step"])
E_SetPartialReleasewithHoldonPieces(["End Step"])
N_SetPartialReleasewithHoldonPieces_Node0{"Released quantity is less than
total cargo quantity"}:::decision N_SetPartialReleasewithHoldonPieces_Node0_action["Partial release status is set with
HOLDPCS hold pieces status applied
to remaining unreleased quantities"]:::main N_SetPartialReleasewithHoldonPieces_Node0 -- Yes --> N_SetPartialReleasewithHoldonPieces_Node0_action N_SetPartialReleasewithHoldonPieces_Node0_action --> E_SetPartialReleasewithHoldonPieces S_SetPartialReleasewithHoldonPieces --> N_SetPartialReleasewithHoldonPieces_Node0 N_SetPartialReleasewithHoldonPieces_Node0 -- No --> E_SetPartialReleasewithHoldonPieces
total cargo quantity"}:::decision N_SetPartialReleasewithHoldonPieces_Node0_action["Partial release status is set with
HOLDPCS hold pieces status applied
to remaining unreleased quantities"]:::main N_SetPartialReleasewithHoldonPieces_Node0 -- Yes --> N_SetPartialReleasewithHoldonPieces_Node0_action N_SetPartialReleasewithHoldonPieces_Node0_action --> E_SetPartialReleasewithHoldonPieces S_SetPartialReleasewithHoldonPieces --> N_SetPartialReleasewithHoldonPieces_Node0 N_SetPartialReleasewithHoldonPieces_Node0 -- No --> E_SetPartialReleasewithHoldonPieces
File: GCX016.cbl
GIVEN:
Cargo has release codes and quantity validation shows partial release
WHEN:
Released quantity is less than total cargo quantity
THEN:
Partial release status is set with HOLDPCS (hold pieces) status applied to remaining unreleased quantities
β Consolidated Acceptance Criteria
- The system resolves final cargo status based on priority hierarchy → final cargo status is set according to the highest priority rule: FDA holds > customs holds > releases > PTT > proceed codes
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetFinalCargoStatusBasedonPriorityRules(["Start Step"])
E_SetFinalCargoStatusBasedonPriorityRules(["End Step"])
N_SetFinalCargoStatusBasedonPriorityRules_Node0{"The system resolves final cargo
status based on priority hierarchy"}:::decision N_SetFinalCargoStatusBasedonPriorityRules_Node0_action["Final cargo status is set according
to the highest priority rule: FDA
holds customs holds releases PTT
proceed codes"]:::main N_SetFinalCargoStatusBasedonPriorityRules_Node0 -- Yes --> N_SetFinalCargoStatusBasedonPriorityRules_Node0_action N_SetFinalCargoStatusBasedonPriorityRules_Node0_action --> E_SetFinalCargoStatusBasedonPriorityRules S_SetFinalCargoStatusBasedonPriorityRules --> N_SetFinalCargoStatusBasedonPriorityRules_Node0 N_SetFinalCargoStatusBasedonPriorityRules_Node0 -- No --> E_SetFinalCargoStatusBasedonPriorityRules
status based on priority hierarchy"}:::decision N_SetFinalCargoStatusBasedonPriorityRules_Node0_action["Final cargo status is set according
to the highest priority rule: FDA
holds customs holds releases PTT
proceed codes"]:::main N_SetFinalCargoStatusBasedonPriorityRules_Node0 -- Yes --> N_SetFinalCargoStatusBasedonPriorityRules_Node0_action N_SetFinalCargoStatusBasedonPriorityRules_Node0_action --> E_SetFinalCargoStatusBasedonPriorityRules S_SetFinalCargoStatusBasedonPriorityRules --> N_SetFinalCargoStatusBasedonPriorityRules_Node0 N_SetFinalCargoStatusBasedonPriorityRules_Node0 -- No --> E_SetFinalCargoStatusBasedonPriorityRules
File: GCX016.cbl
GIVEN:
All disposition codes have been evaluated and priorities assigned
WHEN:
The system resolves final cargo status based on priority hierarchy
THEN:
Final cargo status is set according to the highest priority rule: FDA holds > customs holds > releases > PTT > proceed codes
β Consolidated Acceptance Criteria
- The system updates the status array with resolved status → status array is updated with the final resolved disposition codes and conflicting codes are removed or superseded
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UpdateStatusArraywithResolvedStatus(["Start Step"])
E_UpdateStatusArraywithResolvedStatus(["End Step"])
N_UpdateStatusArraywithResolvedStatus_Node0{"The system updates the status array
with resolved status"}:::decision N_UpdateStatusArraywithResolvedStatus_Node0_action["Status array is updated with the
final resolved disposition codes and
conflicting codes are removed or
superseded"]:::main N_UpdateStatusArraywithResolvedStatus_Node0 -- Yes --> N_UpdateStatusArraywithResolvedStatus_Node0_action N_UpdateStatusArraywithResolvedStatus_Node0_action --> E_UpdateStatusArraywithResolvedStatus S_UpdateStatusArraywithResolvedStatus --> N_UpdateStatusArraywithResolvedStatus_Node0 N_UpdateStatusArraywithResolvedStatus_Node0 -- No --> E_UpdateStatusArraywithResolvedStatus
with resolved status"}:::decision N_UpdateStatusArraywithResolvedStatus_Node0_action["Status array is updated with the
final resolved disposition codes and
conflicting codes are removed or
superseded"]:::main N_UpdateStatusArraywithResolvedStatus_Node0 -- Yes --> N_UpdateStatusArraywithResolvedStatus_Node0_action N_UpdateStatusArraywithResolvedStatus_Node0_action --> E_UpdateStatusArraywithResolvedStatus S_UpdateStatusArraywithResolvedStatus --> N_UpdateStatusArraywithResolvedStatus_Node0 N_UpdateStatusArraywithResolvedStatus_Node0 -- No --> E_UpdateStatusArraywithResolvedStatus
File: GCX016.cbl
GIVEN:
Final cargo status has been determined through priority rule resolution
WHEN:
The system updates the status array with resolved status
THEN:
- Status array is updated with the final resolved disposition codes
- Conflicting codes are removed or superseded
β Consolidated Acceptance Criteria
- The cargo status is set to manual release (MRL) → the destination index must be cleared and the cargo routing constraints removed
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ManualReleaseProcessing(["Start Step"])
E_ManualReleaseProcessing(["End Step"])
N_ManualReleaseProcessing_Node0{"The cargo status is set to manual
release MRL"}:::decision N_ManualReleaseProcessing_Node0_action["The destination index must be
cleared and the cargo routing
constraints removed"]:::main N_ManualReleaseProcessing_Node0 -- Yes --> N_ManualReleaseProcessing_Node0_action N_ManualReleaseProcessing_Node0_action --> E_ManualReleaseProcessing S_ManualReleaseProcessing --> N_ManualReleaseProcessing_Node0 N_ManualReleaseProcessing_Node0 -- No --> E_ManualReleaseProcessing
release MRL"}:::decision N_ManualReleaseProcessing_Node0_action["The destination index must be
cleared and the cargo routing
constraints removed"]:::main N_ManualReleaseProcessing_Node0 -- Yes --> N_ManualReleaseProcessing_Node0_action N_ManualReleaseProcessing_Node0_action --> E_ManualReleaseProcessing S_ManualReleaseProcessing --> N_ManualReleaseProcessing_Node0 N_ManualReleaseProcessing_Node0 -- No --> E_ManualReleaseProcessing
File: GCX016.cbl
GIVEN:
A cargo record exists with an active destination index
WHEN:
The cargo status is set to manual release (MRL)
THEN:
- The destination index must be cleared
- The cargo routing constraints removed
β Consolidated Acceptance Criteria
- The system processes the manual release → the system must search for matching Canadian manifest records by waybill and generate appropriate coordination messages
- The system processes the manual release workflow → the system initiates Canadian manifest coordination processing to synchronize release information across border systems
- The system searches for corresponding Canadian manifest records using waybill information → canadian manifest coordination is initiated to maintain cross-border cargo visibility
- Destination index has been cleared and status saved → system searches for corresponding Canadian manifest records for coordination
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ProcessCanadianManifestCoordination(["Start Step"])
E_ProcessCanadianManifestCoordination(["End Step"])
N_ProcessCanadianManifestCoordination_Node0{"The system processes the manual
release"}:::decision N_ProcessCanadianManifestCoordination_Node0_action["The system must search for matching
Canadian manifest records by waybill
and generate appropriate
coordination messages"]:::main N_ProcessCanadianManifestCoordination_Node0 -- Yes --> N_ProcessCanadianManifestCoordination_Node0_action N_ProcessCanadianManifestCoordination_Node0_action --> E_ProcessCanadianManifestCoordination S_ProcessCanadianManifestCoordination --> N_ProcessCanadianManifestCoordination_Node0 N_ProcessCanadianManifestCoordination_Node1{"The system processes the manual
release workflow"}:::decision N_ProcessCanadianManifestCoordination_Node1_action["The system initiates Canadian
manifest coordination processing to
synchronize release information
across border systems"]:::main N_ProcessCanadianManifestCoordination_Node1 -- Yes --> N_ProcessCanadianManifestCoordination_Node1_action N_ProcessCanadianManifestCoordination_Node1_action --> E_ProcessCanadianManifestCoordination N_ProcessCanadianManifestCoordination_Node0 -- No --> N_ProcessCanadianManifestCoordination_Node1 N_ProcessCanadianManifestCoordination_Node2{"The system searches for
corresponding Canadian manifest
records using waybill information"}:::decision N_ProcessCanadianManifestCoordination_Node2_action["Canadian manifest coordination is
initiated to maintain cross-border
cargo visibility"]:::main N_ProcessCanadianManifestCoordination_Node2 -- Yes --> N_ProcessCanadianManifestCoordination_Node2_action N_ProcessCanadianManifestCoordination_Node2_action --> E_ProcessCanadianManifestCoordination N_ProcessCanadianManifestCoordination_Node1 -- No --> N_ProcessCanadianManifestCoordination_Node2 N_ProcessCanadianManifestCoordination_Node3{"Destination index has been cleared
and status saved"}:::decision N_ProcessCanadianManifestCoordination_Node3_action["System searches for corresponding
Canadian manifest records for
coordination"]:::main N_ProcessCanadianManifestCoordination_Node3 -- Yes --> N_ProcessCanadianManifestCoordination_Node3_action N_ProcessCanadianManifestCoordination_Node3_action --> E_ProcessCanadianManifestCoordination N_ProcessCanadianManifestCoordination_Node2 -- No --> N_ProcessCanadianManifestCoordination_Node3 N_ProcessCanadianManifestCoordination_Node3 -- No --> E_ProcessCanadianManifestCoordination
release"}:::decision N_ProcessCanadianManifestCoordination_Node0_action["The system must search for matching
Canadian manifest records by waybill
and generate appropriate
coordination messages"]:::main N_ProcessCanadianManifestCoordination_Node0 -- Yes --> N_ProcessCanadianManifestCoordination_Node0_action N_ProcessCanadianManifestCoordination_Node0_action --> E_ProcessCanadianManifestCoordination S_ProcessCanadianManifestCoordination --> N_ProcessCanadianManifestCoordination_Node0 N_ProcessCanadianManifestCoordination_Node1{"The system processes the manual
release workflow"}:::decision N_ProcessCanadianManifestCoordination_Node1_action["The system initiates Canadian
manifest coordination processing to
synchronize release information
across border systems"]:::main N_ProcessCanadianManifestCoordination_Node1 -- Yes --> N_ProcessCanadianManifestCoordination_Node1_action N_ProcessCanadianManifestCoordination_Node1_action --> E_ProcessCanadianManifestCoordination N_ProcessCanadianManifestCoordination_Node0 -- No --> N_ProcessCanadianManifestCoordination_Node1 N_ProcessCanadianManifestCoordination_Node2{"The system searches for
corresponding Canadian manifest
records using waybill information"}:::decision N_ProcessCanadianManifestCoordination_Node2_action["Canadian manifest coordination is
initiated to maintain cross-border
cargo visibility"]:::main N_ProcessCanadianManifestCoordination_Node2 -- Yes --> N_ProcessCanadianManifestCoordination_Node2_action N_ProcessCanadianManifestCoordination_Node2_action --> E_ProcessCanadianManifestCoordination N_ProcessCanadianManifestCoordination_Node1 -- No --> N_ProcessCanadianManifestCoordination_Node2 N_ProcessCanadianManifestCoordination_Node3{"Destination index has been cleared
and status saved"}:::decision N_ProcessCanadianManifestCoordination_Node3_action["System searches for corresponding
Canadian manifest records for
coordination"]:::main N_ProcessCanadianManifestCoordination_Node3 -- Yes --> N_ProcessCanadianManifestCoordination_Node3_action N_ProcessCanadianManifestCoordination_Node3_action --> E_ProcessCanadianManifestCoordination N_ProcessCanadianManifestCoordination_Node2 -- No --> N_ProcessCanadianManifestCoordination_Node3 N_ProcessCanadianManifestCoordination_Node3 -- No --> E_ProcessCanadianManifestCoordination
File: GCX016.cbl
GIVEN:
A cargo record has been manually released and Canadian manifest coordination is required
WHEN:
The system processes the manual release
THEN:
- The system must search for matching canadian manifest records by waybill
- Generate appropriate coordination messages
File: GCX016.cbl
GIVEN:
CPRS cargo with cleared destination index is being manually released
WHEN:
The system processes the manual release workflow
THEN:
The system initiates Canadian manifest coordination processing to synchronize release information across border systems
File: GCX016.cbl
GIVEN:
CPRS cargo that has been updated to released status
WHEN:
The system searches for corresponding Canadian manifest records using waybill information
THEN:
Canadian manifest coordination is initiated to maintain cross-border cargo visibility
File: GCX016.cbl
GIVEN:
A cargo record undergoing manual release
WHEN:
- Destination index has been cleared
- Status saved
THEN:
System searches for corresponding Canadian manifest records for coordination
β Consolidated Acceptance Criteria
- The cargo requires FDA hold at destination location → the system must set FDA hold status (HOLDFDA) with appropriate FDA codes and prevent cargo release until FDA clearance
- FDA hold conditions are present at the destination location → the cargo status should be set to FDA hold with code 66
- The system checks for FDA hold codes (A3 disposition codes) in the destination hold context → the FDA destination hold flag is set if FDA hold codes are present at destination
- The cargo has destination hold conditions AND A3 disposition codes are present → the system sets FDA hold status with specific FDA codes
- FDA hold conditions are present at the destination location → the system sets FDA hold status with status code 66
- FDA hold conditions are detected at the destination → the system sets FDA hold status and applies the appropriate FDA status code
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_FDAHoldatDestination(["Start Step"])
E_FDAHoldatDestination(["End Step"])
N_FDAHoldatDestination_Node0{"The cargo requires FDA hold at
destination location"}:::decision N_FDAHoldatDestination_Node0_action["The system must set FDA hold status
HOLDFDA with appropriate FDA codes
and prevent cargo release until FDA
clearance"]:::main N_FDAHoldatDestination_Node0 -- Yes --> N_FDAHoldatDestination_Node0_action N_FDAHoldatDestination_Node0_action --> E_FDAHoldatDestination S_FDAHoldatDestination --> N_FDAHoldatDestination_Node0 N_FDAHoldatDestination_Node1{"FDA hold conditions are present at
the destination location"}:::decision N_FDAHoldatDestination_Node1_action["The cargo status should be set to
FDA hold with code 66"]:::main N_FDAHoldatDestination_Node1 -- Yes --> N_FDAHoldatDestination_Node1_action N_FDAHoldatDestination_Node1_action --> E_FDAHoldatDestination N_FDAHoldatDestination_Node0 -- No --> N_FDAHoldatDestination_Node1 N_FDAHoldatDestination_Node2{"The system checks for FDA hold
codes A3 disposition codes in the
destination hold context"}:::decision N_FDAHoldatDestination_Node2_action["The FDA destination hold flag is
set if FDA hold codes are present at
destination"]:::main N_FDAHoldatDestination_Node2 -- Yes --> N_FDAHoldatDestination_Node2_action N_FDAHoldatDestination_Node2_action --> E_FDAHoldatDestination N_FDAHoldatDestination_Node1 -- No --> N_FDAHoldatDestination_Node2 N_FDAHoldatDestination_Node3{"The cargo has destination hold
conditions AND A3 disposition codes
are present"}:::decision N_FDAHoldatDestination_Node3_action["The system sets FDA hold status
with specific FDA codes"]:::main N_FDAHoldatDestination_Node3 -- Yes --> N_FDAHoldatDestination_Node3_action N_FDAHoldatDestination_Node3_action --> E_FDAHoldatDestination N_FDAHoldatDestination_Node2 -- No --> N_FDAHoldatDestination_Node3 N_FDAHoldatDestination_Node4{"FDA hold conditions are present at
the destination location"}:::decision N_FDAHoldatDestination_Node4_action["The system sets FDA hold status
with status code 66"]:::main N_FDAHoldatDestination_Node4 -- Yes --> N_FDAHoldatDestination_Node4_action N_FDAHoldatDestination_Node4_action --> E_FDAHoldatDestination N_FDAHoldatDestination_Node3 -- No --> N_FDAHoldatDestination_Node4 N_FDAHoldatDestination_Node5{"FDA hold conditions are detected at
the destination"}:::decision N_FDAHoldatDestination_Node5_action["The system sets FDA hold status and
applies the appropriate FDA status
code"]:::main N_FDAHoldatDestination_Node5 -- Yes --> N_FDAHoldatDestination_Node5_action N_FDAHoldatDestination_Node5_action --> E_FDAHoldatDestination N_FDAHoldatDestination_Node4 -- No --> N_FDAHoldatDestination_Node5 N_FDAHoldatDestination_Node5 -- No --> E_FDAHoldatDestination
destination location"}:::decision N_FDAHoldatDestination_Node0_action["The system must set FDA hold status
HOLDFDA with appropriate FDA codes
and prevent cargo release until FDA
clearance"]:::main N_FDAHoldatDestination_Node0 -- Yes --> N_FDAHoldatDestination_Node0_action N_FDAHoldatDestination_Node0_action --> E_FDAHoldatDestination S_FDAHoldatDestination --> N_FDAHoldatDestination_Node0 N_FDAHoldatDestination_Node1{"FDA hold conditions are present at
the destination location"}:::decision N_FDAHoldatDestination_Node1_action["The cargo status should be set to
FDA hold with code 66"]:::main N_FDAHoldatDestination_Node1 -- Yes --> N_FDAHoldatDestination_Node1_action N_FDAHoldatDestination_Node1_action --> E_FDAHoldatDestination N_FDAHoldatDestination_Node0 -- No --> N_FDAHoldatDestination_Node1 N_FDAHoldatDestination_Node2{"The system checks for FDA hold
codes A3 disposition codes in the
destination hold context"}:::decision N_FDAHoldatDestination_Node2_action["The FDA destination hold flag is
set if FDA hold codes are present at
destination"]:::main N_FDAHoldatDestination_Node2 -- Yes --> N_FDAHoldatDestination_Node2_action N_FDAHoldatDestination_Node2_action --> E_FDAHoldatDestination N_FDAHoldatDestination_Node1 -- No --> N_FDAHoldatDestination_Node2 N_FDAHoldatDestination_Node3{"The cargo has destination hold
conditions AND A3 disposition codes
are present"}:::decision N_FDAHoldatDestination_Node3_action["The system sets FDA hold status
with specific FDA codes"]:::main N_FDAHoldatDestination_Node3 -- Yes --> N_FDAHoldatDestination_Node3_action N_FDAHoldatDestination_Node3_action --> E_FDAHoldatDestination N_FDAHoldatDestination_Node2 -- No --> N_FDAHoldatDestination_Node3 N_FDAHoldatDestination_Node4{"FDA hold conditions are present at
the destination location"}:::decision N_FDAHoldatDestination_Node4_action["The system sets FDA hold status
with status code 66"]:::main N_FDAHoldatDestination_Node4 -- Yes --> N_FDAHoldatDestination_Node4_action N_FDAHoldatDestination_Node4_action --> E_FDAHoldatDestination N_FDAHoldatDestination_Node3 -- No --> N_FDAHoldatDestination_Node4 N_FDAHoldatDestination_Node5{"FDA hold conditions are detected at
the destination"}:::decision N_FDAHoldatDestination_Node5_action["The system sets FDA hold status and
applies the appropriate FDA status
code"]:::main N_FDAHoldatDestination_Node5 -- Yes --> N_FDAHoldatDestination_Node5_action N_FDAHoldatDestination_Node5_action --> E_FDAHoldatDestination N_FDAHoldatDestination_Node4 -- No --> N_FDAHoldatDestination_Node5 N_FDAHoldatDestination_Node5 -- No --> E_FDAHoldatDestination
File: GCX016.cbl
GIVEN:
A cargo record is being processed for status change
WHEN:
The cargo requires FDA hold at destination location
THEN:
- The system must set fda hold status (holdfda) with appropriate fda codes
- Prevent cargo release until fda clearance
File: GCX016.cbl
GIVEN:
A cargo record is being evaluated for FDA hold requirements
WHEN:
FDA hold conditions are present at the destination location
THEN:
The cargo status should be set to FDA hold with code 66
File: GCX016.cbl
GIVEN:
A cargo record with destination hold status and FDA-related disposition codes in the status array
WHEN:
The system checks for FDA hold codes (A3 disposition codes) in the destination hold context
THEN:
The FDA destination hold flag is set if FDA hold codes are present at destination
File: GCX016.cbl
GIVEN:
A cargo record is being evaluated for status assignment
WHEN:
- The cargo has destination hold conditions
- A3 disposition codes are present
THEN:
The system sets FDA hold status with specific FDA codes
File: GCX016.cbl
GIVEN:
A cargo record is undergoing status evaluation
WHEN:
FDA hold conditions are present at the destination location
THEN:
The system sets FDA hold status with status code 66
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
A cargo record is being evaluated for final status and manual release is not applicable
WHEN:
FDA hold conditions are detected at the destination
THEN:
- The system sets fda hold status
- Applies the appropriate fda status code
β Consolidated Acceptance Criteria
- The cargo undergoes status change processing → the system must save the current PTT status and validate that quantity thresholds are met before allowing status changes
- The cargo meets PTT quantity requirements AND has appropriate disposition codes → the system validates PTT quantity requirements and saves/restores PTT status accordingly
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_PTTStatusRequired(["Start Step"])
E_PTTStatusRequired(["End Step"])
N_PTTStatusRequired_Node0{"The cargo undergoes status change
processing"}:::decision N_PTTStatusRequired_Node0_action["The system must save the current
PTT status and validate that
quantity thresholds are met before
allowing status changes"]:::main N_PTTStatusRequired_Node0 -- Yes --> N_PTTStatusRequired_Node0_action N_PTTStatusRequired_Node0_action --> E_PTTStatusRequired S_PTTStatusRequired --> N_PTTStatusRequired_Node0 N_PTTStatusRequired_Node1{"The cargo meets PTT quantity
requirements AND has appropriate
disposition codes"}:::decision N_PTTStatusRequired_Node1_action["The system validates PTT quantity
requirements and savesrestores PTT
status accordingly"]:::main N_PTTStatusRequired_Node1 -- Yes --> N_PTTStatusRequired_Node1_action N_PTTStatusRequired_Node1_action --> E_PTTStatusRequired N_PTTStatusRequired_Node0 -- No --> N_PTTStatusRequired_Node1 N_PTTStatusRequired_Node1 -- No --> E_PTTStatusRequired
processing"}:::decision N_PTTStatusRequired_Node0_action["The system must save the current
PTT status and validate that
quantity thresholds are met before
allowing status changes"]:::main N_PTTStatusRequired_Node0 -- Yes --> N_PTTStatusRequired_Node0_action N_PTTStatusRequired_Node0_action --> E_PTTStatusRequired S_PTTStatusRequired --> N_PTTStatusRequired_Node0 N_PTTStatusRequired_Node1{"The cargo meets PTT quantity
requirements AND has appropriate
disposition codes"}:::decision N_PTTStatusRequired_Node1_action["The system validates PTT quantity
requirements and savesrestores PTT
status accordingly"]:::main N_PTTStatusRequired_Node1 -- Yes --> N_PTTStatusRequired_Node1_action N_PTTStatusRequired_Node1_action --> E_PTTStatusRequired N_PTTStatusRequired_Node0 -- No --> N_PTTStatusRequired_Node1 N_PTTStatusRequired_Node1 -- No --> E_PTTStatusRequired
File: GCX016.cbl
GIVEN:
A cargo record currently has PTT status assigned
WHEN:
The cargo undergoes status change processing
THEN:
- The system must save the current ptt status
- Validate that quantity thresholds are met before allowing status changes
File: GCX016.cbl
GIVEN:
A cargo record is being processed for status determination
WHEN:
- The cargo meets ptt quantity requirements
- Has appropriate disposition codes
THEN:
- The system validates ptt quantity requirements
- Saves/restores ptt status accordingly
β Consolidated Acceptance Criteria
- If full release conditions → the destination index must be cleared and all routing restrictions removed
- The released quantity is greater than or equal to the total cargo quantity → the system clears the destination index and processes full release
- All full release conditions are met → the system processes full release and clears the destination index
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_FullReleaseConditionsMet(["Start Step"])
E_FullReleaseConditionsMet(["End Step"])
N_FullReleaseConditionsMet_Node0{"The system evaluates full release
conditions"}:::decision N_FullReleaseConditionsMet_Node0_action["The destination index must be
cleared and all routing restrictions
removed"]:::main N_FullReleaseConditionsMet_Node0 -- Yes --> N_FullReleaseConditionsMet_Node0_action N_FullReleaseConditionsMet_Node0_action --> E_FullReleaseConditionsMet S_FullReleaseConditionsMet --> N_FullReleaseConditionsMet_Node0 N_FullReleaseConditionsMet_Node1{"The released quantity is greater
than or equal to the total cargo
quantity"}:::decision N_FullReleaseConditionsMet_Node1_action["The system clears the destination
index and processes full release"]:::main N_FullReleaseConditionsMet_Node1 -- Yes --> N_FullReleaseConditionsMet_Node1_action N_FullReleaseConditionsMet_Node1_action --> E_FullReleaseConditionsMet N_FullReleaseConditionsMet_Node0 -- No --> N_FullReleaseConditionsMet_Node1 N_FullReleaseConditionsMet_Node2{"All full release conditions are met"}:::decision N_FullReleaseConditionsMet_Node2_action["The system processes full release
and clears the destination index"]:::main N_FullReleaseConditionsMet_Node2 -- Yes --> N_FullReleaseConditionsMet_Node2_action N_FullReleaseConditionsMet_Node2_action --> E_FullReleaseConditionsMet N_FullReleaseConditionsMet_Node1 -- No --> N_FullReleaseConditionsMet_Node2 N_FullReleaseConditionsMet_Node2 -- No --> E_FullReleaseConditionsMet
conditions"}:::decision N_FullReleaseConditionsMet_Node0_action["The destination index must be
cleared and all routing restrictions
removed"]:::main N_FullReleaseConditionsMet_Node0 -- Yes --> N_FullReleaseConditionsMet_Node0_action N_FullReleaseConditionsMet_Node0_action --> E_FullReleaseConditionsMet S_FullReleaseConditionsMet --> N_FullReleaseConditionsMet_Node0 N_FullReleaseConditionsMet_Node1{"The released quantity is greater
than or equal to the total cargo
quantity"}:::decision N_FullReleaseConditionsMet_Node1_action["The system clears the destination
index and processes full release"]:::main N_FullReleaseConditionsMet_Node1 -- Yes --> N_FullReleaseConditionsMet_Node1_action N_FullReleaseConditionsMet_Node1_action --> E_FullReleaseConditionsMet N_FullReleaseConditionsMet_Node0 -- No --> N_FullReleaseConditionsMet_Node1 N_FullReleaseConditionsMet_Node2{"All full release conditions are met"}:::decision N_FullReleaseConditionsMet_Node2_action["The system processes full release
and clears the destination index"]:::main N_FullReleaseConditionsMet_Node2 -- Yes --> N_FullReleaseConditionsMet_Node2_action N_FullReleaseConditionsMet_Node2_action --> E_FullReleaseConditionsMet N_FullReleaseConditionsMet_Node1 -- No --> N_FullReleaseConditionsMet_Node2 N_FullReleaseConditionsMet_Node2 -- No --> E_FullReleaseConditionsMet
File: GCX016.cbl
GIVEN:
A cargo record has released quantity equal to or greater than total quantity
WHEN:
The system evaluates full release conditions
THEN:
- The destination index must be cleared
- All routing restrictions removed
File: GCX016.cbl
GIVEN:
A cargo record with release quantity information
WHEN:
The released quantity is greater than or equal to the total cargo quantity
THEN:
- The system clears the destination index
- Processes full release
File: GCX016.cbl
GIVEN:
A cargo record is being evaluated for release status and released quantity equals or exceeds total quantity
WHEN:
All full release conditions are met
THEN:
- The system processes full release
- Clears the destination index
β Consolidated Acceptance Criteria
- The cargo status is being changed to a non-released status → the system must detect the unrelease scenario and flag it for notification processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_DetectUnreleaseScenario(["Start Step"])
E_DetectUnreleaseScenario(["End Step"])
N_DetectUnreleaseScenario_Node0{"The cargo status is being changed
to a non-released status"}:::decision N_DetectUnreleaseScenario_Node0_action["The system must detect the
unrelease scenario and flag it for
notification processing"]:::main N_DetectUnreleaseScenario_Node0 -- Yes --> N_DetectUnreleaseScenario_Node0_action N_DetectUnreleaseScenario_Node0_action --> E_DetectUnreleaseScenario S_DetectUnreleaseScenario --> N_DetectUnreleaseScenario_Node0 N_DetectUnreleaseScenario_Node0 -- No --> E_DetectUnreleaseScenario
to a non-released status"}:::decision N_DetectUnreleaseScenario_Node0_action["The system must detect the
unrelease scenario and flag it for
notification processing"]:::main N_DetectUnreleaseScenario_Node0 -- Yes --> N_DetectUnreleaseScenario_Node0_action N_DetectUnreleaseScenario_Node0_action --> E_DetectUnreleaseScenario S_DetectUnreleaseScenario --> N_DetectUnreleaseScenario_Node0 N_DetectUnreleaseScenario_Node0 -- No --> E_DetectUnreleaseScenario
File: GCX016.cbl
GIVEN:
A cargo record was previously in released status
WHEN:
The cargo status is being changed to a non-released status
THEN:
- The system must detect the unrelease scenario
- Flag it for notification processing
β Consolidated Acceptance Criteria
- The arrival status is being updated → the system must re-establish the destination index based on the new arrival status and update routing information
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ArrivalStatusChange(["Start Step"])
E_ArrivalStatusChange(["End Step"])
N_ArrivalStatusChange_Node0{"The arrival status is being updated"}:::decision
N_ArrivalStatusChange_Node0_action["The system must re-establish the
destination index based on the new
arrival status and update routing
information"]:::main N_ArrivalStatusChange_Node0 -- Yes --> N_ArrivalStatusChange_Node0_action N_ArrivalStatusChange_Node0_action --> E_ArrivalStatusChange S_ArrivalStatusChange --> N_ArrivalStatusChange_Node0 N_ArrivalStatusChange_Node0 -- No --> E_ArrivalStatusChange
destination index based on the new
arrival status and update routing
information"]:::main N_ArrivalStatusChange_Node0 -- Yes --> N_ArrivalStatusChange_Node0_action N_ArrivalStatusChange_Node0_action --> E_ArrivalStatusChange S_ArrivalStatusChange --> N_ArrivalStatusChange_Node0 N_ArrivalStatusChange_Node0 -- No --> E_ArrivalStatusChange
File: GCX016.cbl
GIVEN:
A cargo record is undergoing arrival status processing
WHEN:
The arrival status is being updated
THEN:
- The system must re-establish the destination index based on the new arrival status
- Update routing information
β Consolidated Acceptance Criteria
- The destination index is re-established for arrival → the bond start date must be updated to reflect the current arrival date and time
- The system processes bond changes for the cargo → the system updates the bond start date based on the new bond processing requirements
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UpdateBondStartDate(["Start Step"])
E_UpdateBondStartDate(["End Step"])
N_UpdateBondStartDate_Node0{"The destination index is
re-established for arrival"}:::decision N_UpdateBondStartDate_Node0_action["The bond start date must be updated
to reflect the current arrival date
and time"]:::main N_UpdateBondStartDate_Node0 -- Yes --> N_UpdateBondStartDate_Node0_action N_UpdateBondStartDate_Node0_action --> E_UpdateBondStartDate S_UpdateBondStartDate --> N_UpdateBondStartDate_Node0 N_UpdateBondStartDate_Node1{"The system processes bond changes
for the cargo"}:::decision N_UpdateBondStartDate_Node1_action["The system updates the bond start
date based on the new bond
processing requirements"]:::main N_UpdateBondStartDate_Node1 -- Yes --> N_UpdateBondStartDate_Node1_action N_UpdateBondStartDate_Node1_action --> E_UpdateBondStartDate N_UpdateBondStartDate_Node0 -- No --> N_UpdateBondStartDate_Node1 N_UpdateBondStartDate_Node1 -- No --> E_UpdateBondStartDate
re-established for arrival"}:::decision N_UpdateBondStartDate_Node0_action["The bond start date must be updated
to reflect the current arrival date
and time"]:::main N_UpdateBondStartDate_Node0 -- Yes --> N_UpdateBondStartDate_Node0_action N_UpdateBondStartDate_Node0_action --> E_UpdateBondStartDate S_UpdateBondStartDate --> N_UpdateBondStartDate_Node0 N_UpdateBondStartDate_Node1{"The system processes bond changes
for the cargo"}:::decision N_UpdateBondStartDate_Node1_action["The system updates the bond start
date based on the new bond
processing requirements"]:::main N_UpdateBondStartDate_Node1 -- Yes --> N_UpdateBondStartDate_Node1_action N_UpdateBondStartDate_Node1_action --> E_UpdateBondStartDate N_UpdateBondStartDate_Node0 -- No --> N_UpdateBondStartDate_Node1 N_UpdateBondStartDate_Node1 -- No --> E_UpdateBondStartDate
File: GCX016.cbl
GIVEN:
A cargo record has arrival status being processed
WHEN:
The destination index is re-established for arrival
THEN:
- The bond start date must be updated to reflect the current arrival date
- Time
File: GCX016.cbl
GIVEN:
A cargo record has bond processing requirements AND the bond information has changed
WHEN:
The system processes bond changes for the cargo
THEN:
The system updates the bond start date based on the new bond processing requirements
β Consolidated Acceptance Criteria
- The export status is being updated → the destination index must be cleared as export cargo does not require domestic destination routing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExportStatusChange(["Start Step"])
E_ExportStatusChange(["End Step"])
N_ExportStatusChange_Node0{"The export status is being updated"}:::decision
N_ExportStatusChange_Node0_action["The destination index must be
cleared as export cargo does not
require domestic destination routing"]:::main N_ExportStatusChange_Node0 -- Yes --> N_ExportStatusChange_Node0_action N_ExportStatusChange_Node0_action --> E_ExportStatusChange S_ExportStatusChange --> N_ExportStatusChange_Node0 N_ExportStatusChange_Node0 -- No --> E_ExportStatusChange
cleared as export cargo does not
require domestic destination routing"]:::main N_ExportStatusChange_Node0 -- Yes --> N_ExportStatusChange_Node0_action N_ExportStatusChange_Node0_action --> E_ExportStatusChange S_ExportStatusChange --> N_ExportStatusChange_Node0 N_ExportStatusChange_Node0 -- No --> E_ExportStatusChange
File: GCX016.cbl
GIVEN:
A cargo record is being processed for export status change
WHEN:
The export status is being updated
THEN:
The destination index must be cleared as export cargo does not require domestic destination routing
β Consolidated Acceptance Criteria
- The export status processing occurs → the export bond date must be updated to reflect the current export processing date
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UpdateExportBondDate(["Start Step"])
E_UpdateExportBondDate(["End Step"])
N_UpdateExportBondDate_Node0{"The export status processing occurs"}:::decision
N_UpdateExportBondDate_Node0_action["The export bond date must be
updated to reflect the current
export processing date"]:::main N_UpdateExportBondDate_Node0 -- Yes --> N_UpdateExportBondDate_Node0_action N_UpdateExportBondDate_Node0_action --> E_UpdateExportBondDate S_UpdateExportBondDate --> N_UpdateExportBondDate_Node0 N_UpdateExportBondDate_Node0 -- No --> E_UpdateExportBondDate
updated to reflect the current
export processing date"]:::main N_UpdateExportBondDate_Node0 -- Yes --> N_UpdateExportBondDate_Node0_action N_UpdateExportBondDate_Node0_action --> E_UpdateExportBondDate S_UpdateExportBondDate --> N_UpdateExportBondDate_Node0 N_UpdateExportBondDate_Node0 -- No --> E_UpdateExportBondDate
File: GCX016.cbl
GIVEN:
A cargo record is being processed for export with cleared destination index
WHEN:
The export status processing occurs
THEN:
The export bond date must be updated to reflect the current export processing date
β Consolidated Acceptance Criteria
- Age calculation processing is triggered → the system must calculate cargo age using Julian date format and provide accurate age information
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CalculateCargoAgeUsingJulianDates(["Start Step"])
E_CalculateCargoAgeUsingJulianDates(["End Step"])
N_CalculateCargoAgeUsingJulianDates_Node0{"Age calculation processing is
triggered"}:::decision N_CalculateCargoAgeUsingJulianDates_Node0_action["The system must calculate cargo age
using Julian date format and provide
accurate age information"]:::main N_CalculateCargoAgeUsingJulianDates_Node0 -- Yes --> N_CalculateCargoAgeUsingJulianDates_Node0_action N_CalculateCargoAgeUsingJulianDates_Node0_action --> E_CalculateCargoAgeUsingJulianDates S_CalculateCargoAgeUsingJulianDates --> N_CalculateCargoAgeUsingJulianDates_Node0 N_CalculateCargoAgeUsingJulianDates_Node0 -- No --> E_CalculateCargoAgeUsingJulianDates
triggered"}:::decision N_CalculateCargoAgeUsingJulianDates_Node0_action["The system must calculate cargo age
using Julian date format and provide
accurate age information"]:::main N_CalculateCargoAgeUsingJulianDates_Node0 -- Yes --> N_CalculateCargoAgeUsingJulianDates_Node0_action N_CalculateCargoAgeUsingJulianDates_Node0_action --> E_CalculateCargoAgeUsingJulianDates S_CalculateCargoAgeUsingJulianDates --> N_CalculateCargoAgeUsingJulianDates_Node0 N_CalculateCargoAgeUsingJulianDates_Node0 -- No --> E_CalculateCargoAgeUsingJulianDates
File: GCX016.cbl
GIVEN:
A cargo record requires age calculation for bond or compliance purposes
WHEN:
Age calculation processing is triggered
THEN:
- The system must calculate cargo age using julian date format
- Provide accurate age information
β Consolidated Acceptance Criteria
- Bond date management processing occurs → the system must update all relevant bond date management records with the calculated age information
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UpdateBondDateManagement(["Start Step"])
E_UpdateBondDateManagement(["End Step"])
N_UpdateBondDateManagement_Node0{"Bond date management processing
occurs"}:::decision N_UpdateBondDateManagement_Node0_action["The system must update all relevant
bond date management records with
the calculated age information"]:::main N_UpdateBondDateManagement_Node0 -- Yes --> N_UpdateBondDateManagement_Node0_action N_UpdateBondDateManagement_Node0_action --> E_UpdateBondDateManagement S_UpdateBondDateManagement --> N_UpdateBondDateManagement_Node0 N_UpdateBondDateManagement_Node0 -- No --> E_UpdateBondDateManagement
occurs"}:::decision N_UpdateBondDateManagement_Node0_action["The system must update all relevant
bond date management records with
the calculated age information"]:::main N_UpdateBondDateManagement_Node0 -- Yes --> N_UpdateBondDateManagement_Node0_action N_UpdateBondDateManagement_Node0_action --> E_UpdateBondDateManagement S_UpdateBondDateManagement --> N_UpdateBondDateManagement_Node0 N_UpdateBondDateManagement_Node0 -- No --> E_UpdateBondDateManagement
File: GCX016.cbl
GIVEN:
Cargo age has been calculated using Julian dates
WHEN:
Bond date management processing occurs
THEN:
The system must update all relevant bond date management records with the calculated age information
β Consolidated Acceptance Criteria
- If cross-border coordination requirements → the system must determine if cross-border coordination is needed based on cargo movement patterns and international requirements
- If cross-border coordination requirements → the system determines if Canadian manifest coordination is needed based on cargo release status and processing type
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CrossBorderCoordinationNeeded(["Start Step"])
E_CrossBorderCoordinationNeeded(["End Step"])
N_CrossBorderCoordinationNeeded_Node0{"The system evaluates cross-border
coordination requirements"}:::decision N_CrossBorderCoordinationNeeded_Node0_action["The system must determine if
cross-border coordination is needed
based on cargo movement patterns and
international requirements"]:::main N_CrossBorderCoordinationNeeded_Node0 -- Yes --> N_CrossBorderCoordinationNeeded_Node0_action N_CrossBorderCoordinationNeeded_Node0_action --> E_CrossBorderCoordinationNeeded S_CrossBorderCoordinationNeeded --> N_CrossBorderCoordinationNeeded_Node0 N_CrossBorderCoordinationNeeded_Node1{"The system evaluates cross-border
coordination requirements"}:::decision N_CrossBorderCoordinationNeeded_Node1_action["The system determines if Canadian
manifest coordination is needed
based on cargo release status and
processing type"]:::main N_CrossBorderCoordinationNeeded_Node1 -- Yes --> N_CrossBorderCoordinationNeeded_Node1_action N_CrossBorderCoordinationNeeded_Node1_action --> E_CrossBorderCoordinationNeeded N_CrossBorderCoordinationNeeded_Node0 -- No --> N_CrossBorderCoordinationNeeded_Node1 N_CrossBorderCoordinationNeeded_Node1 -- No --> E_CrossBorderCoordinationNeeded
coordination requirements"}:::decision N_CrossBorderCoordinationNeeded_Node0_action["The system must determine if
cross-border coordination is needed
based on cargo movement patterns and
international requirements"]:::main N_CrossBorderCoordinationNeeded_Node0 -- Yes --> N_CrossBorderCoordinationNeeded_Node0_action N_CrossBorderCoordinationNeeded_Node0_action --> E_CrossBorderCoordinationNeeded S_CrossBorderCoordinationNeeded --> N_CrossBorderCoordinationNeeded_Node0 N_CrossBorderCoordinationNeeded_Node1{"The system evaluates cross-border
coordination requirements"}:::decision N_CrossBorderCoordinationNeeded_Node1_action["The system determines if Canadian
manifest coordination is needed
based on cargo release status and
processing type"]:::main N_CrossBorderCoordinationNeeded_Node1 -- Yes --> N_CrossBorderCoordinationNeeded_Node1_action N_CrossBorderCoordinationNeeded_Node1_action --> E_CrossBorderCoordinationNeeded N_CrossBorderCoordinationNeeded_Node0 -- No --> N_CrossBorderCoordinationNeeded_Node1 N_CrossBorderCoordinationNeeded_Node1 -- No --> E_CrossBorderCoordinationNeeded
File: GCX016.cbl
GIVEN:
A cargo record has undergone status changes with updated bond date management
WHEN:
The system evaluates cross-border coordination requirements
THEN:
- The system must determine if cross-border coordination is needed based on cargo movement patterns
- International requirements
File: GCX016.cbl
GIVEN:
A cargo record has been processed for status changes AND destination index has been re-established
WHEN:
The system evaluates cross-border coordination requirements
THEN:
- The system determines if canadian manifest coordination is needed based on cargo release status
- Processing type
β Consolidated Acceptance Criteria
- The system searches for Canadian manifest coordination → the system must find and retrieve all matching Canadian manifest records by waybill and equipment identifiers
- The system searches for Canadian manifest records using the equipment ID → the system retrieves all matching Canadian manifest records for cross-border coordination
- The system searches for matching Canadian manifests using equipment ID → the system should access the Canadian cargo database to find related records
- The system searches for matching Canadian manifests → all corresponding Canadian manifest records are identified and retrieved
- The system searches for Canadian manifest coordination → the system calls B583-PROCESS-CDN-MFST to find and process matching Canadian manifest records by waybill
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_FindMatchingCanadianManifests(["Start Step"])
E_FindMatchingCanadianManifests(["End Step"])
N_FindMatchingCanadianManifests_Node0{"The system searches for Canadian
manifest coordination"}:::decision N_FindMatchingCanadianManifests_Node0_action["The system must find and retrieve
all matching Canadian manifest
records by waybill and equipment
identifiers"]:::main N_FindMatchingCanadianManifests_Node0 -- Yes --> N_FindMatchingCanadianManifests_Node0_action N_FindMatchingCanadianManifests_Node0_action --> E_FindMatchingCanadianManifests S_FindMatchingCanadianManifests --> N_FindMatchingCanadianManifests_Node0 N_FindMatchingCanadianManifests_Node1{"The system searches for Canadian
manifest records using the equipment
ID"}:::decision N_FindMatchingCanadianManifests_Node1_action["The system retrieves all matching
Canadian manifest records for
cross-border coordination"]:::main N_FindMatchingCanadianManifests_Node1 -- Yes --> N_FindMatchingCanadianManifests_Node1_action N_FindMatchingCanadianManifests_Node1_action --> E_FindMatchingCanadianManifests N_FindMatchingCanadianManifests_Node0 -- No --> N_FindMatchingCanadianManifests_Node1 N_FindMatchingCanadianManifests_Node2{"the system searches for matching
Canadian manifests using equipment
ID"}:::decision N_FindMatchingCanadianManifests_Node2_action["the system should access the
Canadian cargo database to find
related records"]:::main N_FindMatchingCanadianManifests_Node2 -- Yes --> N_FindMatchingCanadianManifests_Node2_action N_FindMatchingCanadianManifests_Node2_action --> E_FindMatchingCanadianManifests N_FindMatchingCanadianManifests_Node1 -- No --> N_FindMatchingCanadianManifests_Node2 N_FindMatchingCanadianManifests_Node3{"The system searches for matching
Canadian manifests"}:::decision N_FindMatchingCanadianManifests_Node3_action["All corresponding Canadian manifest
records are identified and retrieved"]:::main N_FindMatchingCanadianManifests_Node3 -- Yes --> N_FindMatchingCanadianManifests_Node3_action N_FindMatchingCanadianManifests_Node3_action --> E_FindMatchingCanadianManifests N_FindMatchingCanadianManifests_Node2 -- No --> N_FindMatchingCanadianManifests_Node3 N_FindMatchingCanadianManifests_Node4{"The system searches for Canadian
manifest coordination"}:::decision N_FindMatchingCanadianManifests_Node4_action["The system calls
B583-PROCESS-CDN-MFST to find and
process matching Canadian manifest
records by waybill"]:::main N_FindMatchingCanadianManifests_Node4 -- Yes --> N_FindMatchingCanadianManifests_Node4_action N_FindMatchingCanadianManifests_Node4_action --> E_FindMatchingCanadianManifests N_FindMatchingCanadianManifests_Node3 -- No --> N_FindMatchingCanadianManifests_Node4 N_FindMatchingCanadianManifests_Node4 -- No --> E_FindMatchingCanadianManifests
manifest coordination"}:::decision N_FindMatchingCanadianManifests_Node0_action["The system must find and retrieve
all matching Canadian manifest
records by waybill and equipment
identifiers"]:::main N_FindMatchingCanadianManifests_Node0 -- Yes --> N_FindMatchingCanadianManifests_Node0_action N_FindMatchingCanadianManifests_Node0_action --> E_FindMatchingCanadianManifests S_FindMatchingCanadianManifests --> N_FindMatchingCanadianManifests_Node0 N_FindMatchingCanadianManifests_Node1{"The system searches for Canadian
manifest records using the equipment
ID"}:::decision N_FindMatchingCanadianManifests_Node1_action["The system retrieves all matching
Canadian manifest records for
cross-border coordination"]:::main N_FindMatchingCanadianManifests_Node1 -- Yes --> N_FindMatchingCanadianManifests_Node1_action N_FindMatchingCanadianManifests_Node1_action --> E_FindMatchingCanadianManifests N_FindMatchingCanadianManifests_Node0 -- No --> N_FindMatchingCanadianManifests_Node1 N_FindMatchingCanadianManifests_Node2{"the system searches for matching
Canadian manifests using equipment
ID"}:::decision N_FindMatchingCanadianManifests_Node2_action["the system should access the
Canadian cargo database to find
related records"]:::main N_FindMatchingCanadianManifests_Node2 -- Yes --> N_FindMatchingCanadianManifests_Node2_action N_FindMatchingCanadianManifests_Node2_action --> E_FindMatchingCanadianManifests N_FindMatchingCanadianManifests_Node1 -- No --> N_FindMatchingCanadianManifests_Node2 N_FindMatchingCanadianManifests_Node3{"The system searches for matching
Canadian manifests"}:::decision N_FindMatchingCanadianManifests_Node3_action["All corresponding Canadian manifest
records are identified and retrieved"]:::main N_FindMatchingCanadianManifests_Node3 -- Yes --> N_FindMatchingCanadianManifests_Node3_action N_FindMatchingCanadianManifests_Node3_action --> E_FindMatchingCanadianManifests N_FindMatchingCanadianManifests_Node2 -- No --> N_FindMatchingCanadianManifests_Node3 N_FindMatchingCanadianManifests_Node4{"The system searches for Canadian
manifest coordination"}:::decision N_FindMatchingCanadianManifests_Node4_action["The system calls
B583-PROCESS-CDN-MFST to find and
process matching Canadian manifest
records by waybill"]:::main N_FindMatchingCanadianManifests_Node4 -- Yes --> N_FindMatchingCanadianManifests_Node4_action N_FindMatchingCanadianManifests_Node4_action --> E_FindMatchingCanadianManifests N_FindMatchingCanadianManifests_Node3 -- No --> N_FindMatchingCanadianManifests_Node4 N_FindMatchingCanadianManifests_Node4 -- No --> E_FindMatchingCanadianManifests
File: GCX016.cbl
GIVEN:
Cross-border coordination has been determined as necessary
WHEN:
The system searches for Canadian manifest coordination
THEN:
- The system must find
- Retrieve all matching canadian manifest records by waybill
- Equipment identifiers
File: GCX016.cbl
GIVEN:
US cargo has been released and equipment ID is available
WHEN:
The system searches for Canadian manifest records using the equipment ID
THEN:
The system retrieves all matching Canadian manifest records for cross-border coordination
File: GCX016.cbl
GIVEN:
Canadian manifest coordination is required
WHEN:
the system searches for matching Canadian manifests using equipment ID
THEN:
the system should access the Canadian cargo database to find related records
File: GCX016.cbl
GIVEN:
Fully released cargo that requires Canadian manifest coordination
WHEN:
The system searches for matching Canadian manifests
THEN:
- All corresponding canadian manifest records are identified
- Retrieved
File: GCX016.cbl
GIVEN:
Cross-border coordination is required for a cargo record AND the cargo has been released
WHEN:
The system searches for Canadian manifest coordination
THEN:
- The system calls b583-process-cdn-mfst to find
- Process matching canadian manifest records by waybill
β Consolidated Acceptance Criteria
- Cross-border coordination processing occurs → the system must generate Canadian log messages with cargo release information and cross-border status updates
- The system processes Canadian manifest coordination → the system generates log messages to GCX105 system with cargo release information for Canadian coordination
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GenerateCanadianLogMessages(["Start Step"])
E_GenerateCanadianLogMessages(["End Step"])
N_GenerateCanadianLogMessages_Node0{"Cross-border coordination
processing occurs"}:::decision N_GenerateCanadianLogMessages_Node0_action["The system must generate Canadian
log messages with cargo release
information and cross-border status
updates"]:::main N_GenerateCanadianLogMessages_Node0 -- Yes --> N_GenerateCanadianLogMessages_Node0_action N_GenerateCanadianLogMessages_Node0_action --> E_GenerateCanadianLogMessages S_GenerateCanadianLogMessages --> N_GenerateCanadianLogMessages_Node0 N_GenerateCanadianLogMessages_Node1{"The system processes Canadian
manifest coordination"}:::decision N_GenerateCanadianLogMessages_Node1_action["The system generates log messages
to GCX105 system with cargo release
information for Canadian
coordination"]:::main N_GenerateCanadianLogMessages_Node1 -- Yes --> N_GenerateCanadianLogMessages_Node1_action N_GenerateCanadianLogMessages_Node1_action --> E_GenerateCanadianLogMessages N_GenerateCanadianLogMessages_Node0 -- No --> N_GenerateCanadianLogMessages_Node1 N_GenerateCanadianLogMessages_Node1 -- No --> E_GenerateCanadianLogMessages
processing occurs"}:::decision N_GenerateCanadianLogMessages_Node0_action["The system must generate Canadian
log messages with cargo release
information and cross-border status
updates"]:::main N_GenerateCanadianLogMessages_Node0 -- Yes --> N_GenerateCanadianLogMessages_Node0_action N_GenerateCanadianLogMessages_Node0_action --> E_GenerateCanadianLogMessages S_GenerateCanadianLogMessages --> N_GenerateCanadianLogMessages_Node0 N_GenerateCanadianLogMessages_Node1{"The system processes Canadian
manifest coordination"}:::decision N_GenerateCanadianLogMessages_Node1_action["The system generates log messages
to GCX105 system with cargo release
information for Canadian
coordination"]:::main N_GenerateCanadianLogMessages_Node1 -- Yes --> N_GenerateCanadianLogMessages_Node1_action N_GenerateCanadianLogMessages_Node1_action --> E_GenerateCanadianLogMessages N_GenerateCanadianLogMessages_Node0 -- No --> N_GenerateCanadianLogMessages_Node1 N_GenerateCanadianLogMessages_Node1 -- No --> E_GenerateCanadianLogMessages
File: GCX016.cbl
GIVEN:
Matching Canadian manifest records have been found
WHEN:
Cross-border coordination processing occurs
THEN:
- The system must generate canadian log messages with cargo release information
- Cross-border status updates
File: GCX016.cbl
GIVEN:
Matching Canadian manifest records have been found AND cross-border coordination is active
WHEN:
The system processes Canadian manifest coordination
THEN:
The system generates log messages to GCX105 system with cargo release information for Canadian coordination
β Consolidated Acceptance Criteria
- The cross-border coordination process completes → the system must update the cross-border status to reflect completed coordination and maintain accurate international shipment tracking
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UpdateCrossBorderStatus(["Start Step"])
E_UpdateCrossBorderStatus(["End Step"])
N_UpdateCrossBorderStatus_Node0{"The cross-border coordination
process completes"}:::decision N_UpdateCrossBorderStatus_Node0_action["The system must update the
cross-border status to reflect
completed coordination and maintain
accurate international shipment
tracking"]:::main N_UpdateCrossBorderStatus_Node0 -- Yes --> N_UpdateCrossBorderStatus_Node0_action N_UpdateCrossBorderStatus_Node0_action --> E_UpdateCrossBorderStatus S_UpdateCrossBorderStatus --> N_UpdateCrossBorderStatus_Node0 N_UpdateCrossBorderStatus_Node0 -- No --> E_UpdateCrossBorderStatus
process completes"}:::decision N_UpdateCrossBorderStatus_Node0_action["The system must update the
cross-border status to reflect
completed coordination and maintain
accurate international shipment
tracking"]:::main N_UpdateCrossBorderStatus_Node0 -- Yes --> N_UpdateCrossBorderStatus_Node0_action N_UpdateCrossBorderStatus_Node0_action --> E_UpdateCrossBorderStatus S_UpdateCrossBorderStatus --> N_UpdateCrossBorderStatus_Node0 N_UpdateCrossBorderStatus_Node0 -- No --> E_UpdateCrossBorderStatus
File: GCX016.cbl
GIVEN:
Canadian log messages have been generated for cross-border coordination
WHEN:
The cross-border coordination process completes
THEN:
- The system must update the cross-border status to reflect completed coordination
- Maintain accurate international shipment tracking
β Consolidated Acceptance Criteria
- The system initiates Canadian manifest coordination processing → the equipment ID is extracted from the US cargo record for Canadian database search
- The system needs to identify the associated equipment for Canadian manifest lookup → the system should extract the equipment ID from the US cargo record for cross-reference matching
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GetEquipmentIDfromUSCargo(["Start Step"])
E_GetEquipmentIDfromUSCargo(["End Step"])
N_GetEquipmentIDfromUSCargo_Node0{"The system initiates Canadian
manifest coordination processing"}:::decision N_GetEquipmentIDfromUSCargo_Node0_action["The equipment ID is extracted from
the US cargo record for Canadian
database search"]:::main N_GetEquipmentIDfromUSCargo_Node0 -- Yes --> N_GetEquipmentIDfromUSCargo_Node0_action N_GetEquipmentIDfromUSCargo_Node0_action --> E_GetEquipmentIDfromUSCargo S_GetEquipmentIDfromUSCargo --> N_GetEquipmentIDfromUSCargo_Node0 N_GetEquipmentIDfromUSCargo_Node1{"The system needs to identify the
associated equipment for Canadian
manifest lookup"}:::decision N_GetEquipmentIDfromUSCargo_Node1_action["The system should extract the
equipment ID from the US cargo
record for cross-reference matching"]:::main N_GetEquipmentIDfromUSCargo_Node1 -- Yes --> N_GetEquipmentIDfromUSCargo_Node1_action N_GetEquipmentIDfromUSCargo_Node1_action --> E_GetEquipmentIDfromUSCargo N_GetEquipmentIDfromUSCargo_Node0 -- No --> N_GetEquipmentIDfromUSCargo_Node1 N_GetEquipmentIDfromUSCargo_Node1 -- No --> E_GetEquipmentIDfromUSCargo
manifest coordination processing"}:::decision N_GetEquipmentIDfromUSCargo_Node0_action["The equipment ID is extracted from
the US cargo record for Canadian
database search"]:::main N_GetEquipmentIDfromUSCargo_Node0 -- Yes --> N_GetEquipmentIDfromUSCargo_Node0_action N_GetEquipmentIDfromUSCargo_Node0_action --> E_GetEquipmentIDfromUSCargo S_GetEquipmentIDfromUSCargo --> N_GetEquipmentIDfromUSCargo_Node0 N_GetEquipmentIDfromUSCargo_Node1{"The system needs to identify the
associated equipment for Canadian
manifest lookup"}:::decision N_GetEquipmentIDfromUSCargo_Node1_action["The system should extract the
equipment ID from the US cargo
record for cross-reference matching"]:::main N_GetEquipmentIDfromUSCargo_Node1 -- Yes --> N_GetEquipmentIDfromUSCargo_Node1_action N_GetEquipmentIDfromUSCargo_Node1_action --> E_GetEquipmentIDfromUSCargo N_GetEquipmentIDfromUSCargo_Node0 -- No --> N_GetEquipmentIDfromUSCargo_Node1 N_GetEquipmentIDfromUSCargo_Node1 -- No --> E_GetEquipmentIDfromUSCargo
File: GCX016.cbl
GIVEN:
A US cargo record exists with equipment information
WHEN:
The system initiates Canadian manifest coordination processing
THEN:
The equipment ID is extracted from the US cargo record for Canadian database search
File: GCX016.cbl
GIVEN:
A US cargo record is confirmed as released
WHEN:
The system needs to identify the associated equipment for Canadian manifest lookup
THEN:
The system should extract the equipment ID from the US cargo record for cross-reference matching
β Consolidated Acceptance Criteria
- The system searches the Canadian cargo database → the system retrieves Canadian cargo records matching the equipment ID
- The system searches the Canadian cargo database using the equipment ID → the system retrieves matching Canadian cargo records if they exist
- The system searches for corresponding Canadian cargo records → the system should query the Canadian cargo database using the equipment ID as the search key
- The system searches the Canadian cargo database → canadian waybill records are retrieved based on the equipment ID match
- The system searches the Canadian cargo database → canadian cargo records matching the equipment identifier are retrieved
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SearchCanadianCargoDatabase(["Start Step"])
E_SearchCanadianCargoDatabase(["End Step"])
N_SearchCanadianCargoDatabase_Node0{"The system searches the Canadian
cargo database"}:::decision N_SearchCanadianCargoDatabase_Node0_action["The system retrieves Canadian cargo
records matching the equipment ID"]:::main N_SearchCanadianCargoDatabase_Node0 -- Yes --> N_SearchCanadianCargoDatabase_Node0_action N_SearchCanadianCargoDatabase_Node0_action --> E_SearchCanadianCargoDatabase S_SearchCanadianCargoDatabase --> N_SearchCanadianCargoDatabase_Node0 N_SearchCanadianCargoDatabase_Node1{"The system searches the Canadian
cargo database using the equipment
ID"}:::decision N_SearchCanadianCargoDatabase_Node1_action["The system retrieves matching
Canadian cargo records if they exist"]:::main N_SearchCanadianCargoDatabase_Node1 -- Yes --> N_SearchCanadianCargoDatabase_Node1_action N_SearchCanadianCargoDatabase_Node1_action --> E_SearchCanadianCargoDatabase N_SearchCanadianCargoDatabase_Node0 -- No --> N_SearchCanadianCargoDatabase_Node1 N_SearchCanadianCargoDatabase_Node2{"The system searches for
corresponding Canadian cargo records"}:::decision N_SearchCanadianCargoDatabase_Node2_action["The system should query the
Canadian cargo database using the
equipment ID as the search key"]:::main N_SearchCanadianCargoDatabase_Node2 -- Yes --> N_SearchCanadianCargoDatabase_Node2_action N_SearchCanadianCargoDatabase_Node2_action --> E_SearchCanadianCargoDatabase N_SearchCanadianCargoDatabase_Node1 -- No --> N_SearchCanadianCargoDatabase_Node2 N_SearchCanadianCargoDatabase_Node3{"The system searches the Canadian
cargo database"}:::decision N_SearchCanadianCargoDatabase_Node3_action["Canadian waybill records are
retrieved based on the equipment ID
match"]:::main N_SearchCanadianCargoDatabase_Node3 -- Yes --> N_SearchCanadianCargoDatabase_Node3_action N_SearchCanadianCargoDatabase_Node3_action --> E_SearchCanadianCargoDatabase N_SearchCanadianCargoDatabase_Node2 -- No --> N_SearchCanadianCargoDatabase_Node3 N_SearchCanadianCargoDatabase_Node4{"The system searches the Canadian
cargo database"}:::decision N_SearchCanadianCargoDatabase_Node4_action["Canadian cargo records matching the
equipment identifier are retrieved"]:::main N_SearchCanadianCargoDatabase_Node4 -- Yes --> N_SearchCanadianCargoDatabase_Node4_action N_SearchCanadianCargoDatabase_Node4_action --> E_SearchCanadianCargoDatabase N_SearchCanadianCargoDatabase_Node3 -- No --> N_SearchCanadianCargoDatabase_Node4 N_SearchCanadianCargoDatabase_Node4 -- No --> E_SearchCanadianCargoDatabase
cargo database"}:::decision N_SearchCanadianCargoDatabase_Node0_action["The system retrieves Canadian cargo
records matching the equipment ID"]:::main N_SearchCanadianCargoDatabase_Node0 -- Yes --> N_SearchCanadianCargoDatabase_Node0_action N_SearchCanadianCargoDatabase_Node0_action --> E_SearchCanadianCargoDatabase S_SearchCanadianCargoDatabase --> N_SearchCanadianCargoDatabase_Node0 N_SearchCanadianCargoDatabase_Node1{"The system searches the Canadian
cargo database using the equipment
ID"}:::decision N_SearchCanadianCargoDatabase_Node1_action["The system retrieves matching
Canadian cargo records if they exist"]:::main N_SearchCanadianCargoDatabase_Node1 -- Yes --> N_SearchCanadianCargoDatabase_Node1_action N_SearchCanadianCargoDatabase_Node1_action --> E_SearchCanadianCargoDatabase N_SearchCanadianCargoDatabase_Node0 -- No --> N_SearchCanadianCargoDatabase_Node1 N_SearchCanadianCargoDatabase_Node2{"The system searches for
corresponding Canadian cargo records"}:::decision N_SearchCanadianCargoDatabase_Node2_action["The system should query the
Canadian cargo database using the
equipment ID as the search key"]:::main N_SearchCanadianCargoDatabase_Node2 -- Yes --> N_SearchCanadianCargoDatabase_Node2_action N_SearchCanadianCargoDatabase_Node2_action --> E_SearchCanadianCargoDatabase N_SearchCanadianCargoDatabase_Node1 -- No --> N_SearchCanadianCargoDatabase_Node2 N_SearchCanadianCargoDatabase_Node3{"The system searches the Canadian
cargo database"}:::decision N_SearchCanadianCargoDatabase_Node3_action["Canadian waybill records are
retrieved based on the equipment ID
match"]:::main N_SearchCanadianCargoDatabase_Node3 -- Yes --> N_SearchCanadianCargoDatabase_Node3_action N_SearchCanadianCargoDatabase_Node3_action --> E_SearchCanadianCargoDatabase N_SearchCanadianCargoDatabase_Node2 -- No --> N_SearchCanadianCargoDatabase_Node3 N_SearchCanadianCargoDatabase_Node4{"The system searches the Canadian
cargo database"}:::decision N_SearchCanadianCargoDatabase_Node4_action["Canadian cargo records matching the
equipment identifier are retrieved"]:::main N_SearchCanadianCargoDatabase_Node4 -- Yes --> N_SearchCanadianCargoDatabase_Node4_action N_SearchCanadianCargoDatabase_Node4_action --> E_SearchCanadianCargoDatabase N_SearchCanadianCargoDatabase_Node3 -- No --> N_SearchCanadianCargoDatabase_Node4 N_SearchCanadianCargoDatabase_Node4 -- No --> E_SearchCanadianCargoDatabase
File: GCX016.cbl
GIVEN:
An equipment ID has been extracted from US cargo record
WHEN:
The system searches the Canadian cargo database
THEN:
The system retrieves Canadian cargo records matching the equipment ID
File: GCX016.cbl
GIVEN:
A US cargo equipment ID is provided for Canadian cargo lookup
WHEN:
The system searches the Canadian cargo database using the equipment ID
THEN:
The system retrieves matching Canadian cargo records if they exist
File: GCX016.cbl
GIVEN:
An equipment ID has been extracted from the US cargo record
WHEN:
The system searches for corresponding Canadian cargo records
THEN:
The system should query the Canadian cargo database using the equipment ID as the search key
File: GCX016.cbl
GIVEN:
An equipment ID has been extracted from US cargo
WHEN:
The system searches the Canadian cargo database
THEN:
Canadian waybill records are retrieved based on the equipment ID match
File: GCX016.cbl
GIVEN:
An equipment identifier has been formatted for Canadian system
WHEN:
The system searches the Canadian cargo database
THEN:
Canadian cargo records matching the equipment identifier are retrieved
β Consolidated Acceptance Criteria
- If the search results → the system determines if Canadian cargo records were found and routes processing accordingly
- If the search results → the system determines if Canadian cargo records were found or not found
- If the search results → the system should determine if one or more Canadian cargo records were found and proceed accordingly or skip cross-border coordination if no matches exist
- If search results → the system determines if Canadian cargo records exist and proceeds accordingly
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CanadianCargoFound(["Start Step"])
E_CanadianCargoFound(["End Step"])
N_CanadianCargoFound_Node0{"The system evaluates the search
results"}:::decision N_CanadianCargoFound_Node0_action["The system determines if Canadian
cargo records were found and routes
processing accordingly"]:::main N_CanadianCargoFound_Node0 -- Yes --> N_CanadianCargoFound_Node0_action N_CanadianCargoFound_Node0_action --> E_CanadianCargoFound S_CanadianCargoFound --> N_CanadianCargoFound_Node0 N_CanadianCargoFound_Node1{"The system evaluates the search
results"}:::decision N_CanadianCargoFound_Node1_action["The system determines if Canadian
cargo records were found or not
found"]:::main N_CanadianCargoFound_Node1 -- Yes --> N_CanadianCargoFound_Node1_action N_CanadianCargoFound_Node1_action --> E_CanadianCargoFound N_CanadianCargoFound_Node0 -- No --> N_CanadianCargoFound_Node1 N_CanadianCargoFound_Node2{"The system evaluates the search
results"}:::decision N_CanadianCargoFound_Node2_action["The system should determine if one
or more Canadian cargo records were
found and proceed accordingly or
skip cross-border coordination if no
matches exist"]:::main N_CanadianCargoFound_Node2 -- Yes --> N_CanadianCargoFound_Node2_action N_CanadianCargoFound_Node2_action --> E_CanadianCargoFound N_CanadianCargoFound_Node1 -- No --> N_CanadianCargoFound_Node2 N_CanadianCargoFound_Node3{"The system evaluates search results"}:::decision N_CanadianCargoFound_Node3_action["The system determines if Canadian
cargo records exist and proceeds
accordingly"]:::main N_CanadianCargoFound_Node3 -- Yes --> N_CanadianCargoFound_Node3_action N_CanadianCargoFound_Node3_action --> E_CanadianCargoFound N_CanadianCargoFound_Node2 -- No --> N_CanadianCargoFound_Node3 N_CanadianCargoFound_Node3 -- No --> E_CanadianCargoFound
results"}:::decision N_CanadianCargoFound_Node0_action["The system determines if Canadian
cargo records were found and routes
processing accordingly"]:::main N_CanadianCargoFound_Node0 -- Yes --> N_CanadianCargoFound_Node0_action N_CanadianCargoFound_Node0_action --> E_CanadianCargoFound S_CanadianCargoFound --> N_CanadianCargoFound_Node0 N_CanadianCargoFound_Node1{"The system evaluates the search
results"}:::decision N_CanadianCargoFound_Node1_action["The system determines if Canadian
cargo records were found or not
found"]:::main N_CanadianCargoFound_Node1 -- Yes --> N_CanadianCargoFound_Node1_action N_CanadianCargoFound_Node1_action --> E_CanadianCargoFound N_CanadianCargoFound_Node0 -- No --> N_CanadianCargoFound_Node1 N_CanadianCargoFound_Node2{"The system evaluates the search
results"}:::decision N_CanadianCargoFound_Node2_action["The system should determine if one
or more Canadian cargo records were
found and proceed accordingly or
skip cross-border coordination if no
matches exist"]:::main N_CanadianCargoFound_Node2 -- Yes --> N_CanadianCargoFound_Node2_action N_CanadianCargoFound_Node2_action --> E_CanadianCargoFound N_CanadianCargoFound_Node1 -- No --> N_CanadianCargoFound_Node2 N_CanadianCargoFound_Node3{"The system evaluates search results"}:::decision N_CanadianCargoFound_Node3_action["The system determines if Canadian
cargo records exist and proceeds
accordingly"]:::main N_CanadianCargoFound_Node3 -- Yes --> N_CanadianCargoFound_Node3_action N_CanadianCargoFound_Node3_action --> E_CanadianCargoFound N_CanadianCargoFound_Node2 -- No --> N_CanadianCargoFound_Node3 N_CanadianCargoFound_Node3 -- No --> E_CanadianCargoFound
File: GCX016.cbl
GIVEN:
A search has been performed in the Canadian cargo database using equipment ID
WHEN:
The system evaluates the search results
THEN:
- The system determines if canadian cargo records were found
- Routes processing accordingly
File: GCX016.cbl
GIVEN:
A search has been performed in the Canadian cargo database
WHEN:
The system evaluates the search results
THEN:
The system determines if Canadian cargo records were found or not found
File: GCX016.cbl
GIVEN:
Equipment ID matching has been performed against Canadian cargo database
WHEN:
The system evaluates the search results
THEN:
- The system should determine if one or more canadian cargo records were found
- Proceed accordingly or skip cross-border coordination if no matches exist
File: GCX016.cbl
GIVEN:
A search has been performed in the Canadian cargo database
WHEN:
The system evaluates search results
THEN:
- The system determines if canadian cargo records exist
- Proceeds accordingly
β Consolidated Acceptance Criteria
- The system validates the record status → the system checks that records are not deleted and have valid processing status
- System validates Canadian record status → record status is checked to determine if record is valid for cross-border processing
- The system validates the record status → the system should verify the Canadian record is in a valid state for processing
- The system checks the record status and deletion flags → only non-deleted and valid status records are accepted for processing
- The system validates record eligibility for cross-border coordination → the system should verify that Canadian records are in valid status and exclude any records that are deleted or in unusable status
- The system validates the record status → the record status is checked for validity and active status
- The system validates record status → the system confirms the Canadian record is valid and active for processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ValidateCanadianRecordStatus(["Start Step"])
E_ValidateCanadianRecordStatus(["End Step"])
N_ValidateCanadianRecordStatus_Node0{"The system validates the record
status"}:::decision N_ValidateCanadianRecordStatus_Node0_action["The system checks that records are
not deleted and have valid
processing status"]:::main N_ValidateCanadianRecordStatus_Node0 -- Yes --> N_ValidateCanadianRecordStatus_Node0_action N_ValidateCanadianRecordStatus_Node0_action --> E_ValidateCanadianRecordStatus S_ValidateCanadianRecordStatus --> N_ValidateCanadianRecordStatus_Node0 N_ValidateCanadianRecordStatus_Node1{"System validates Canadian record
status"}:::decision N_ValidateCanadianRecordStatus_Node1_action["Record status is checked to
determine if record is valid for
cross-border processing"]:::main N_ValidateCanadianRecordStatus_Node1 -- Yes --> N_ValidateCanadianRecordStatus_Node1_action N_ValidateCanadianRecordStatus_Node1_action --> E_ValidateCanadianRecordStatus N_ValidateCanadianRecordStatus_Node0 -- No --> N_ValidateCanadianRecordStatus_Node1 N_ValidateCanadianRecordStatus_Node2{"The system validates the record
status"}:::decision N_ValidateCanadianRecordStatus_Node2_action["The system should verify the
Canadian record is in a valid state
for processing"]:::main N_ValidateCanadianRecordStatus_Node2 -- Yes --> N_ValidateCanadianRecordStatus_Node2_action N_ValidateCanadianRecordStatus_Node2_action --> E_ValidateCanadianRecordStatus N_ValidateCanadianRecordStatus_Node1 -- No --> N_ValidateCanadianRecordStatus_Node2 N_ValidateCanadianRecordStatus_Node3{"The system checks the record status
and deletion flags"}:::decision N_ValidateCanadianRecordStatus_Node3_action["Only non-deleted and valid status
records are accepted for processing"]:::main N_ValidateCanadianRecordStatus_Node3 -- Yes --> N_ValidateCanadianRecordStatus_Node3_action N_ValidateCanadianRecordStatus_Node3_action --> E_ValidateCanadianRecordStatus N_ValidateCanadianRecordStatus_Node2 -- No --> N_ValidateCanadianRecordStatus_Node3 N_ValidateCanadianRecordStatus_Node4{"The system validates record
eligibility for cross-border
coordination"}:::decision N_ValidateCanadianRecordStatus_Node4_action["The system should verify that
Canadian records are in valid status
and exclude any records that are
deleted or in unusable status"]:::main N_ValidateCanadianRecordStatus_Node4 -- Yes --> N_ValidateCanadianRecordStatus_Node4_action N_ValidateCanadianRecordStatus_Node4_action --> E_ValidateCanadianRecordStatus N_ValidateCanadianRecordStatus_Node3 -- No --> N_ValidateCanadianRecordStatus_Node4 N_ValidateCanadianRecordStatus_Node5{"The system validates the record
status"}:::decision N_ValidateCanadianRecordStatus_Node5_action["The record status is checked for
validity and active status"]:::main N_ValidateCanadianRecordStatus_Node5 -- Yes --> N_ValidateCanadianRecordStatus_Node5_action N_ValidateCanadianRecordStatus_Node5_action --> E_ValidateCanadianRecordStatus N_ValidateCanadianRecordStatus_Node4 -- No --> N_ValidateCanadianRecordStatus_Node5 N_ValidateCanadianRecordStatus_Node6{"The system validates record status"}:::decision N_ValidateCanadianRecordStatus_Node6_action["The system confirms the Canadian
record is valid and active for
processing"]:::main N_ValidateCanadianRecordStatus_Node6 -- Yes --> N_ValidateCanadianRecordStatus_Node6_action N_ValidateCanadianRecordStatus_Node6_action --> E_ValidateCanadianRecordStatus N_ValidateCanadianRecordStatus_Node5 -- No --> N_ValidateCanadianRecordStatus_Node6 N_ValidateCanadianRecordStatus_Node6 -- No --> E_ValidateCanadianRecordStatus
status"}:::decision N_ValidateCanadianRecordStatus_Node0_action["The system checks that records are
not deleted and have valid
processing status"]:::main N_ValidateCanadianRecordStatus_Node0 -- Yes --> N_ValidateCanadianRecordStatus_Node0_action N_ValidateCanadianRecordStatus_Node0_action --> E_ValidateCanadianRecordStatus S_ValidateCanadianRecordStatus --> N_ValidateCanadianRecordStatus_Node0 N_ValidateCanadianRecordStatus_Node1{"System validates Canadian record
status"}:::decision N_ValidateCanadianRecordStatus_Node1_action["Record status is checked to
determine if record is valid for
cross-border processing"]:::main N_ValidateCanadianRecordStatus_Node1 -- Yes --> N_ValidateCanadianRecordStatus_Node1_action N_ValidateCanadianRecordStatus_Node1_action --> E_ValidateCanadianRecordStatus N_ValidateCanadianRecordStatus_Node0 -- No --> N_ValidateCanadianRecordStatus_Node1 N_ValidateCanadianRecordStatus_Node2{"The system validates the record
status"}:::decision N_ValidateCanadianRecordStatus_Node2_action["The system should verify the
Canadian record is in a valid state
for processing"]:::main N_ValidateCanadianRecordStatus_Node2 -- Yes --> N_ValidateCanadianRecordStatus_Node2_action N_ValidateCanadianRecordStatus_Node2_action --> E_ValidateCanadianRecordStatus N_ValidateCanadianRecordStatus_Node1 -- No --> N_ValidateCanadianRecordStatus_Node2 N_ValidateCanadianRecordStatus_Node3{"The system checks the record status
and deletion flags"}:::decision N_ValidateCanadianRecordStatus_Node3_action["Only non-deleted and valid status
records are accepted for processing"]:::main N_ValidateCanadianRecordStatus_Node3 -- Yes --> N_ValidateCanadianRecordStatus_Node3_action N_ValidateCanadianRecordStatus_Node3_action --> E_ValidateCanadianRecordStatus N_ValidateCanadianRecordStatus_Node2 -- No --> N_ValidateCanadianRecordStatus_Node3 N_ValidateCanadianRecordStatus_Node4{"The system validates record
eligibility for cross-border
coordination"}:::decision N_ValidateCanadianRecordStatus_Node4_action["The system should verify that
Canadian records are in valid status
and exclude any records that are
deleted or in unusable status"]:::main N_ValidateCanadianRecordStatus_Node4 -- Yes --> N_ValidateCanadianRecordStatus_Node4_action N_ValidateCanadianRecordStatus_Node4_action --> E_ValidateCanadianRecordStatus N_ValidateCanadianRecordStatus_Node3 -- No --> N_ValidateCanadianRecordStatus_Node4 N_ValidateCanadianRecordStatus_Node5{"The system validates the record
status"}:::decision N_ValidateCanadianRecordStatus_Node5_action["The record status is checked for
validity and active status"]:::main N_ValidateCanadianRecordStatus_Node5 -- Yes --> N_ValidateCanadianRecordStatus_Node5_action N_ValidateCanadianRecordStatus_Node5_action --> E_ValidateCanadianRecordStatus N_ValidateCanadianRecordStatus_Node4 -- No --> N_ValidateCanadianRecordStatus_Node5 N_ValidateCanadianRecordStatus_Node6{"The system validates record status"}:::decision N_ValidateCanadianRecordStatus_Node6_action["The system confirms the Canadian
record is valid and active for
processing"]:::main N_ValidateCanadianRecordStatus_Node6 -- Yes --> N_ValidateCanadianRecordStatus_Node6_action N_ValidateCanadianRecordStatus_Node6_action --> E_ValidateCanadianRecordStatus N_ValidateCanadianRecordStatus_Node5 -- No --> N_ValidateCanadianRecordStatus_Node6 N_ValidateCanadianRecordStatus_Node6 -- No --> E_ValidateCanadianRecordStatus
File: GCX016.cbl
GIVEN:
Canadian cargo records have been found for the equipment ID
WHEN:
The system validates the record status
THEN:
- The system checks that records are not deleted
- Have valid processing status
File: GCX016.cbl
GIVEN:
Canadian cargo records have been found for the equipment ID
WHEN:
System validates Canadian record status
THEN:
Record status is checked to determine if record is valid for cross-border processing
File: GCX016.cbl
GIVEN:
A Canadian cargo record has been found
WHEN:
The system validates the record status
THEN:
The system should verify the Canadian record is in a valid state for processing
File: GCX016.cbl
GIVEN:
Canadian cargo records are found in the database
WHEN:
- The system checks the record status
- Deletion flags
THEN:
- Only non-deleted
- Valid status records are accepted for processing
File: GCX016.cbl
GIVEN:
Canadian cargo records have been identified for processing
WHEN:
The system validates record eligibility for cross-border coordination
THEN:
- The system should verify that canadian records are in valid status
- Exclude any records that are deleted or in unusable status
File: GCX016.cbl
GIVEN:
A Canadian cargo record has been retrieved from the database
WHEN:
The system validates the record status
THEN:
- The record status is checked for validity
- Active status
File: GCX016.cbl
GIVEN:
Canadian cargo records have been found
WHEN:
The system validates record status
THEN:
- The system confirms the canadian record is valid
- Active for processing
β Consolidated Acceptance Criteria
- If record validity → the system determines if records are valid for processing or should be excluded due to deletion or invalid status
- The system performs final validity assessment → the system should determine if the record is valid for cross-border coordination and proceed with coordination if valid, or skip to no match processing if invalid
- The system determines record validity → the system confirms if the record is valid for cross-border matching or requires alternative processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RecordValid(["Start Step"])
E_RecordValid(["End Step"])
N_RecordValid_Node0{"The system evaluates record
validity"}:::decision N_RecordValid_Node0_action["The system determines if records
are valid for processing or should
be excluded due to deletion or
invalid status"]:::main N_RecordValid_Node0 -- Yes --> N_RecordValid_Node0_action N_RecordValid_Node0_action --> E_RecordValid S_RecordValid --> N_RecordValid_Node0 N_RecordValid_Node1{"The system performs final validity
assessment"}:::decision N_RecordValid_Node1_action["The system should determine if the
record is valid for cross-border
coordination and proceed with
coordination if valid, or skip to no
match processing if invalid"]:::main N_RecordValid_Node1 -- Yes --> N_RecordValid_Node1_action N_RecordValid_Node1_action --> E_RecordValid N_RecordValid_Node0 -- No --> N_RecordValid_Node1 N_RecordValid_Node2{"The system determines record
validity"}:::decision N_RecordValid_Node2_action["The system confirms if the record
is valid for cross-border matching
or requires alternative processing"]:::main N_RecordValid_Node2 -- Yes --> N_RecordValid_Node2_action N_RecordValid_Node2_action --> E_RecordValid N_RecordValid_Node1 -- No --> N_RecordValid_Node2 N_RecordValid_Node2 -- No --> E_RecordValid
validity"}:::decision N_RecordValid_Node0_action["The system determines if records
are valid for processing or should
be excluded due to deletion or
invalid status"]:::main N_RecordValid_Node0 -- Yes --> N_RecordValid_Node0_action N_RecordValid_Node0_action --> E_RecordValid S_RecordValid --> N_RecordValid_Node0 N_RecordValid_Node1{"The system performs final validity
assessment"}:::decision N_RecordValid_Node1_action["The system should determine if the
record is valid for cross-border
coordination and proceed with
coordination if valid, or skip to no
match processing if invalid"]:::main N_RecordValid_Node1 -- Yes --> N_RecordValid_Node1_action N_RecordValid_Node1_action --> E_RecordValid N_RecordValid_Node0 -- No --> N_RecordValid_Node1 N_RecordValid_Node2{"The system determines record
validity"}:::decision N_RecordValid_Node2_action["The system confirms if the record
is valid for cross-border matching
or requires alternative processing"]:::main N_RecordValid_Node2 -- Yes --> N_RecordValid_Node2_action N_RecordValid_Node2_action --> E_RecordValid N_RecordValid_Node1 -- No --> N_RecordValid_Node2 N_RecordValid_Node2 -- No --> E_RecordValid
File: GCX016.cbl
GIVEN:
Canadian cargo records have been retrieved and status validated
WHEN:
The system evaluates record validity
THEN:
The system determines if records are valid for processing or should be excluded due to deletion or invalid status
File: GCX016.cbl
GIVEN:
Canadian cargo record has passed deleted and unusable status checks
WHEN:
The system performs final validity assessment
THEN:
- The system should determine if the record is valid for cross-border coordination
- Proceed with coordination if valid, or skip to no match processing if invalid
File: GCX016.cbl
GIVEN:
Canadian cargo record status has been validated
WHEN:
The system determines record validity
THEN:
The system confirms if the record is valid for cross-border matching or requires alternative processing
β Consolidated Acceptance Criteria
- The system performs equipment ID matching → the system compares US cargo equipment ID with Canadian cargo equipment ID for exact match
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MatchEquipmentIDwithCanadianCargo(["Start Step"])
E_MatchEquipmentIDwithCanadianCargo(["End Step"])
N_MatchEquipmentIDwithCanadianCargo_Node0{"The system performs equipment ID
matching"}:::decision N_MatchEquipmentIDwithCanadianCargo_Node0_action["The system compares US cargo
equipment ID with Canadian cargo
equipment ID for exact match"]:::main N_MatchEquipmentIDwithCanadianCargo_Node0 -- Yes --> N_MatchEquipmentIDwithCanadianCargo_Node0_action N_MatchEquipmentIDwithCanadianCargo_Node0_action --> E_MatchEquipmentIDwithCanadianCargo S_MatchEquipmentIDwithCanadianCargo --> N_MatchEquipmentIDwithCanadianCargo_Node0 N_MatchEquipmentIDwithCanadianCargo_Node0 -- No --> E_MatchEquipmentIDwithCanadianCargo
matching"}:::decision N_MatchEquipmentIDwithCanadianCargo_Node0_action["The system compares US cargo
equipment ID with Canadian cargo
equipment ID for exact match"]:::main N_MatchEquipmentIDwithCanadianCargo_Node0 -- Yes --> N_MatchEquipmentIDwithCanadianCargo_Node0_action N_MatchEquipmentIDwithCanadianCargo_Node0_action --> E_MatchEquipmentIDwithCanadianCargo S_MatchEquipmentIDwithCanadianCargo --> N_MatchEquipmentIDwithCanadianCargo_Node0 N_MatchEquipmentIDwithCanadianCargo_Node0 -- No --> E_MatchEquipmentIDwithCanadianCargo
File: GCX016.cbl
GIVEN:
Valid Canadian cargo records exist and US cargo equipment ID is available
WHEN:
The system performs equipment ID matching
THEN:
The system compares US cargo equipment ID with Canadian cargo equipment ID for exact match
β Consolidated Acceptance Criteria
- If the match results → the system determines if equipment IDs match exactly and routes to appropriate processing path
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_EquipmentIDMatches(["Start Step"])
E_EquipmentIDMatches(["End Step"])
N_EquipmentIDMatches_Node0{"The system evaluates the match
results"}:::decision N_EquipmentIDMatches_Node0_action["The system determines if equipment
IDs match exactly and routes to
appropriate processing path"]:::main N_EquipmentIDMatches_Node0 -- Yes --> N_EquipmentIDMatches_Node0_action N_EquipmentIDMatches_Node0_action --> E_EquipmentIDMatches S_EquipmentIDMatches --> N_EquipmentIDMatches_Node0 N_EquipmentIDMatches_Node0 -- No --> E_EquipmentIDMatches
results"}:::decision N_EquipmentIDMatches_Node0_action["The system determines if equipment
IDs match exactly and routes to
appropriate processing path"]:::main N_EquipmentIDMatches_Node0 -- Yes --> N_EquipmentIDMatches_Node0_action N_EquipmentIDMatches_Node0_action --> E_EquipmentIDMatches S_EquipmentIDMatches --> N_EquipmentIDMatches_Node0 N_EquipmentIDMatches_Node0 -- No --> E_EquipmentIDMatches
File: GCX016.cbl
GIVEN:
Equipment ID comparison has been performed between US and Canadian cargo records
WHEN:
The system evaluates the match results
THEN:
- The system determines if equipment ids match exactly
- Routes to appropriate processing path
β Consolidated Acceptance Criteria
- The system generates cross-border coordination log → the system creates a log message with US cargo details, Canadian cargo details, and coordination timestamp
- The system generates cross-border log message → cross-border coordination message is created and logged to Canadian manifest records
- The system generates a cross-border coordination log message → a detailed log message is created containing cargo release information, waybill details, and cross-border coordination data
- Canadian cargo records are found and linked to US cargo → a log message is generated documenting the cross-border cargo release coordination
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GenerateCrossBorderLogMessage(["Start Step"])
E_GenerateCrossBorderLogMessage(["End Step"])
N_GenerateCrossBorderLogMessage_Node0{"The system generates cross-border
coordination log"}:::decision N_GenerateCrossBorderLogMessage_Node0_action["The system creates a log message
with US cargo details, Canadian
cargo details, and coordination
timestamp"]:::main N_GenerateCrossBorderLogMessage_Node0 -- Yes --> N_GenerateCrossBorderLogMessage_Node0_action N_GenerateCrossBorderLogMessage_Node0_action --> E_GenerateCrossBorderLogMessage S_GenerateCrossBorderLogMessage --> N_GenerateCrossBorderLogMessage_Node0 N_GenerateCrossBorderLogMessage_Node1{"The system generates cross-border
log message"}:::decision N_GenerateCrossBorderLogMessage_Node1_action["Cross-border coordination message
is created and logged to Canadian
manifest records"]:::main N_GenerateCrossBorderLogMessage_Node1 -- Yes --> N_GenerateCrossBorderLogMessage_Node1_action N_GenerateCrossBorderLogMessage_Node1_action --> E_GenerateCrossBorderLogMessage N_GenerateCrossBorderLogMessage_Node0 -- No --> N_GenerateCrossBorderLogMessage_Node1 N_GenerateCrossBorderLogMessage_Node2{"The system generates a cross-border
coordination log message"}:::decision N_GenerateCrossBorderLogMessage_Node2_action["A detailed log message is created
containing cargo release
information, waybill details, and
cross-border coordination data"]:::main N_GenerateCrossBorderLogMessage_Node2 -- Yes --> N_GenerateCrossBorderLogMessage_Node2_action N_GenerateCrossBorderLogMessage_Node2_action --> E_GenerateCrossBorderLogMessage N_GenerateCrossBorderLogMessage_Node1 -- No --> N_GenerateCrossBorderLogMessage_Node2 N_GenerateCrossBorderLogMessage_Node3{"Canadian cargo records are found
and linked to US cargo"}:::decision N_GenerateCrossBorderLogMessage_Node3_action["A log message is generated
documenting the cross-border cargo
release coordination"]:::main N_GenerateCrossBorderLogMessage_Node3 -- Yes --> N_GenerateCrossBorderLogMessage_Node3_action N_GenerateCrossBorderLogMessage_Node3_action --> E_GenerateCrossBorderLogMessage N_GenerateCrossBorderLogMessage_Node2 -- No --> N_GenerateCrossBorderLogMessage_Node3 N_GenerateCrossBorderLogMessage_Node3 -- No --> E_GenerateCrossBorderLogMessage
coordination log"}:::decision N_GenerateCrossBorderLogMessage_Node0_action["The system creates a log message
with US cargo details, Canadian
cargo details, and coordination
timestamp"]:::main N_GenerateCrossBorderLogMessage_Node0 -- Yes --> N_GenerateCrossBorderLogMessage_Node0_action N_GenerateCrossBorderLogMessage_Node0_action --> E_GenerateCrossBorderLogMessage S_GenerateCrossBorderLogMessage --> N_GenerateCrossBorderLogMessage_Node0 N_GenerateCrossBorderLogMessage_Node1{"The system generates cross-border
log message"}:::decision N_GenerateCrossBorderLogMessage_Node1_action["Cross-border coordination message
is created and logged to Canadian
manifest records"]:::main N_GenerateCrossBorderLogMessage_Node1 -- Yes --> N_GenerateCrossBorderLogMessage_Node1_action N_GenerateCrossBorderLogMessage_Node1_action --> E_GenerateCrossBorderLogMessage N_GenerateCrossBorderLogMessage_Node0 -- No --> N_GenerateCrossBorderLogMessage_Node1 N_GenerateCrossBorderLogMessage_Node2{"The system generates a cross-border
coordination log message"}:::decision N_GenerateCrossBorderLogMessage_Node2_action["A detailed log message is created
containing cargo release
information, waybill details, and
cross-border coordination data"]:::main N_GenerateCrossBorderLogMessage_Node2 -- Yes --> N_GenerateCrossBorderLogMessage_Node2_action N_GenerateCrossBorderLogMessage_Node2_action --> E_GenerateCrossBorderLogMessage N_GenerateCrossBorderLogMessage_Node1 -- No --> N_GenerateCrossBorderLogMessage_Node2 N_GenerateCrossBorderLogMessage_Node3{"Canadian cargo records are found
and linked to US cargo"}:::decision N_GenerateCrossBorderLogMessage_Node3_action["A log message is generated
documenting the cross-border cargo
release coordination"]:::main N_GenerateCrossBorderLogMessage_Node3 -- Yes --> N_GenerateCrossBorderLogMessage_Node3_action N_GenerateCrossBorderLogMessage_Node3_action --> E_GenerateCrossBorderLogMessage N_GenerateCrossBorderLogMessage_Node2 -- No --> N_GenerateCrossBorderLogMessage_Node3 N_GenerateCrossBorderLogMessage_Node3 -- No --> E_GenerateCrossBorderLogMessage
File: GCX016.cbl
GIVEN:
US and Canadian cargo records have matching equipment IDs
WHEN:
The system generates cross-border coordination log
THEN:
The system creates a log message with US cargo details, Canadian cargo details, and coordination timestamp
File: GCX016.cbl
GIVEN:
Matching Canadian manifest records have been found
WHEN:
The system generates cross-border log message
THEN:
- Cross-border coordination message is created
- Logged to canadian manifest records
File: GCX016.cbl
GIVEN:
A matching Canadian manifest has been found for released US cargo
WHEN:
The system generates a cross-border coordination log message
THEN:
A detailed log message is created containing cargo release information, waybill details, and cross-border coordination data
File: GCX016.cbl
GIVEN:
Cross-border cargo coordination is being processed
WHEN:
- Canadian cargo records are found
- Linked to us cargo
THEN:
A log message is generated documenting the cross-border cargo release coordination
β Consolidated Acceptance Criteria
- The system updates Canadian CCN record → the Canadian cargo record is updated with US release status, release quantities, and coordination timestamp
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UpdateCanadianCCNwithUSReleaseStatus(["Start Step"])
E_UpdateCanadianCCNwithUSReleaseStatus(["End Step"])
N_UpdateCanadianCCNwithUSReleaseStatus_Node0{"The system updates Canadian CCN
record"}:::decision N_UpdateCanadianCCNwithUSReleaseStatus_Node0_action["The Canadian cargo record is
updated with US release status,
release quantities, and coordination
timestamp"]:::main N_UpdateCanadianCCNwithUSReleaseStatus_Node0 -- Yes --> N_UpdateCanadianCCNwithUSReleaseStatus_Node0_action N_UpdateCanadianCCNwithUSReleaseStatus_Node0_action --> E_UpdateCanadianCCNwithUSReleaseStatus S_UpdateCanadianCCNwithUSReleaseStatus --> N_UpdateCanadianCCNwithUSReleaseStatus_Node0 N_UpdateCanadianCCNwithUSReleaseStatus_Node0 -- No --> E_UpdateCanadianCCNwithUSReleaseStatus
record"}:::decision N_UpdateCanadianCCNwithUSReleaseStatus_Node0_action["The Canadian cargo record is
updated with US release status,
release quantities, and coordination
timestamp"]:::main N_UpdateCanadianCCNwithUSReleaseStatus_Node0 -- Yes --> N_UpdateCanadianCCNwithUSReleaseStatus_Node0_action N_UpdateCanadianCCNwithUSReleaseStatus_Node0_action --> E_UpdateCanadianCCNwithUSReleaseStatus S_UpdateCanadianCCNwithUSReleaseStatus --> N_UpdateCanadianCCNwithUSReleaseStatus_Node0 N_UpdateCanadianCCNwithUSReleaseStatus_Node0 -- No --> E_UpdateCanadianCCNwithUSReleaseStatus
File: GCX016.cbl
GIVEN:
US and Canadian cargo records are successfully matched and cross-border log generated
WHEN:
The system updates Canadian CCN record
THEN:
The Canadian cargo record is updated with US release status, release quantities, and coordination timestamp
β Consolidated Acceptance Criteria
- The system creates audit trail entry → the system records coordination details, timestamp, user information, and status changes in audit trail
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CreateAuditTrailEntry(["Start Step"])
E_CreateAuditTrailEntry(["End Step"])
N_CreateAuditTrailEntry_Node0{"The system creates audit trail
entry"}:::decision N_CreateAuditTrailEntry_Node0_action["The system records coordination
details, timestamp, user
information, and status changes in
audit trail"]:::main N_CreateAuditTrailEntry_Node0 -- Yes --> N_CreateAuditTrailEntry_Node0_action N_CreateAuditTrailEntry_Node0_action --> E_CreateAuditTrailEntry S_CreateAuditTrailEntry --> N_CreateAuditTrailEntry_Node0 N_CreateAuditTrailEntry_Node0 -- No --> E_CreateAuditTrailEntry
entry"}:::decision N_CreateAuditTrailEntry_Node0_action["The system records coordination
details, timestamp, user
information, and status changes in
audit trail"]:::main N_CreateAuditTrailEntry_Node0 -- Yes --> N_CreateAuditTrailEntry_Node0_action N_CreateAuditTrailEntry_Node0_action --> E_CreateAuditTrailEntry S_CreateAuditTrailEntry --> N_CreateAuditTrailEntry_Node0 N_CreateAuditTrailEntry_Node0 -- No --> E_CreateAuditTrailEntry
File: GCX016.cbl
GIVEN:
Canadian CCN has been updated with US release status
WHEN:
The system creates audit trail entry
THEN:
The system records coordination details, timestamp, user information, and status changes in audit trail
β Consolidated Acceptance Criteria
- The system sends notification to Canadian system → the system transmits notification message with cargo release details and coordination status to Canadian system
- The system sends notification to Canadian system about cargo unrelease → canadian system receives notification of cargo status change to unreleased
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SendNotificationtoCanadianSystem(["Start Step"])
E_SendNotificationtoCanadianSystem(["End Step"])
N_SendNotificationtoCanadianSystem_Node0{"The system sends notification to
Canadian system"}:::decision N_SendNotificationtoCanadianSystem_Node0_action["The system transmits notification
message with cargo release details
and coordination status to Canadian
system"]:::main N_SendNotificationtoCanadianSystem_Node0 -- Yes --> N_SendNotificationtoCanadianSystem_Node0_action N_SendNotificationtoCanadianSystem_Node0_action --> E_SendNotificationtoCanadianSystem S_SendNotificationtoCanadianSystem --> N_SendNotificationtoCanadianSystem_Node0 N_SendNotificationtoCanadianSystem_Node1{"The system sends notification to
Canadian system about cargo
unrelease"}:::decision N_SendNotificationtoCanadianSystem_Node1_action["Canadian system receives
notification of cargo status change
to unreleased"]:::main N_SendNotificationtoCanadianSystem_Node1 -- Yes --> N_SendNotificationtoCanadianSystem_Node1_action N_SendNotificationtoCanadianSystem_Node1_action --> E_SendNotificationtoCanadianSystem N_SendNotificationtoCanadianSystem_Node0 -- No --> N_SendNotificationtoCanadianSystem_Node1 N_SendNotificationtoCanadianSystem_Node1 -- No --> E_SendNotificationtoCanadianSystem
Canadian system"}:::decision N_SendNotificationtoCanadianSystem_Node0_action["The system transmits notification
message with cargo release details
and coordination status to Canadian
system"]:::main N_SendNotificationtoCanadianSystem_Node0 -- Yes --> N_SendNotificationtoCanadianSystem_Node0_action N_SendNotificationtoCanadianSystem_Node0_action --> E_SendNotificationtoCanadianSystem S_SendNotificationtoCanadianSystem --> N_SendNotificationtoCanadianSystem_Node0 N_SendNotificationtoCanadianSystem_Node1{"The system sends notification to
Canadian system about cargo
unrelease"}:::decision N_SendNotificationtoCanadianSystem_Node1_action["Canadian system receives
notification of cargo status change
to unreleased"]:::main N_SendNotificationtoCanadianSystem_Node1 -- Yes --> N_SendNotificationtoCanadianSystem_Node1_action N_SendNotificationtoCanadianSystem_Node1_action --> E_SendNotificationtoCanadianSystem N_SendNotificationtoCanadianSystem_Node0 -- No --> N_SendNotificationtoCanadianSystem_Node1 N_SendNotificationtoCanadianSystem_Node1 -- No --> E_SendNotificationtoCanadianSystem
File: GCX016.cbl
GIVEN:
Audit trail entry has been created for cross-border coordination
WHEN:
The system sends notification to Canadian system
THEN:
- The system transmits notification message with cargo release details
- Coordination status to canadian system
File: GCX016.cbl
GIVEN:
Canadian manifest cross-reference has been processed
WHEN:
The system sends notification to Canadian system about cargo unrelease
THEN:
Canadian system receives notification of cargo status change to unreleased
β Consolidated Acceptance Criteria
- The system logs coordination completion → the system records successful coordination completion with timestamp and processing details
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogCoordinationComplete(["Start Step"])
E_LogCoordinationComplete(["End Step"])
N_LogCoordinationComplete_Node0{"The system logs coordination
completion"}:::decision N_LogCoordinationComplete_Node0_action["The system records successful
coordination completion with
timestamp and processing details"]:::main N_LogCoordinationComplete_Node0 -- Yes --> N_LogCoordinationComplete_Node0_action N_LogCoordinationComplete_Node0_action --> E_LogCoordinationComplete S_LogCoordinationComplete --> N_LogCoordinationComplete_Node0 N_LogCoordinationComplete_Node0 -- No --> E_LogCoordinationComplete
completion"}:::decision N_LogCoordinationComplete_Node0_action["The system records successful
coordination completion with
timestamp and processing details"]:::main N_LogCoordinationComplete_Node0 -- Yes --> N_LogCoordinationComplete_Node0_action N_LogCoordinationComplete_Node0_action --> E_LogCoordinationComplete S_LogCoordinationComplete --> N_LogCoordinationComplete_Node0 N_LogCoordinationComplete_Node0 -- No --> E_LogCoordinationComplete
File: GCX016.cbl
GIVEN:
Notification has been sent to Canadian system
WHEN:
The system logs coordination completion
THEN:
- The system records successful coordination completion with timestamp
- Processing details
β Consolidated Acceptance Criteria
- The system processes no match condition → the system routes to no match processing path without updating Canadian records
- The system determines no valid Canadian matches exist → the system should proceed to skip cross-border coordination and complete processing without Canadian cargo updates
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_NoCanadianMatchFound(["Start Step"])
E_NoCanadianMatchFound(["End Step"])
N_NoCanadianMatchFound_Node0{"The system processes no match
condition"}:::decision N_NoCanadianMatchFound_Node0_action["The system routes to no match
processing path without updating
Canadian records"]:::main N_NoCanadianMatchFound_Node0 -- Yes --> N_NoCanadianMatchFound_Node0_action N_NoCanadianMatchFound_Node0_action --> E_NoCanadianMatchFound S_NoCanadianMatchFound --> N_NoCanadianMatchFound_Node0 N_NoCanadianMatchFound_Node1{"The system determines no valid
Canadian matches exist"}:::decision N_NoCanadianMatchFound_Node1_action["The system should proceed to skip
cross-border coordination and
complete processing without Canadian
cargo updates"]:::main N_NoCanadianMatchFound_Node1 -- Yes --> N_NoCanadianMatchFound_Node1_action N_NoCanadianMatchFound_Node1_action --> E_NoCanadianMatchFound N_NoCanadianMatchFound_Node0 -- No --> N_NoCanadianMatchFound_Node1 N_NoCanadianMatchFound_Node1 -- No --> E_NoCanadianMatchFound
condition"}:::decision N_NoCanadianMatchFound_Node0_action["The system routes to no match
processing path without updating
Canadian records"]:::main N_NoCanadianMatchFound_Node0 -- Yes --> N_NoCanadianMatchFound_Node0_action N_NoCanadianMatchFound_Node0_action --> E_NoCanadianMatchFound S_NoCanadianMatchFound --> N_NoCanadianMatchFound_Node0 N_NoCanadianMatchFound_Node1{"The system determines no valid
Canadian matches exist"}:::decision N_NoCanadianMatchFound_Node1_action["The system should proceed to skip
cross-border coordination and
complete processing without Canadian
cargo updates"]:::main N_NoCanadianMatchFound_Node1 -- Yes --> N_NoCanadianMatchFound_Node1_action N_NoCanadianMatchFound_Node1_action --> E_NoCanadianMatchFound N_NoCanadianMatchFound_Node0 -- No --> N_NoCanadianMatchFound_Node1 N_NoCanadianMatchFound_Node1 -- No --> E_NoCanadianMatchFound
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
Canadian cargo search returns no results OR Canadian records are invalid OR equipment IDs do not match
WHEN:
The system processes no match condition
THEN:
The system routes to no match processing path without updating Canadian records
File: GCX016.cbl
GIVEN:
Equipment ID search in Canadian cargo database yields no results or all records are invalid
WHEN:
The system determines no valid Canadian matches exist
THEN:
- The system should proceed to skip cross-border coordination
- Complete processing without canadian cargo updates
β Consolidated Acceptance Criteria
- The system logs no match status → the system records no match condition with equipment ID, search criteria, and timestamp for audit purposes
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogNoMatchStatus(["Start Step"])
E_LogNoMatchStatus(["End Step"])
N_LogNoMatchStatus_Node0{"The system logs no match status"}:::decision
N_LogNoMatchStatus_Node0_action["The system records no match
condition with equipment ID, search
criteria, and timestamp for audit
purposes"]:::main N_LogNoMatchStatus_Node0 -- Yes --> N_LogNoMatchStatus_Node0_action N_LogNoMatchStatus_Node0_action --> E_LogNoMatchStatus S_LogNoMatchStatus --> N_LogNoMatchStatus_Node0 N_LogNoMatchStatus_Node0 -- No --> E_LogNoMatchStatus
condition with equipment ID, search
criteria, and timestamp for audit
purposes"]:::main N_LogNoMatchStatus_Node0 -- Yes --> N_LogNoMatchStatus_Node0_action N_LogNoMatchStatus_Node0_action --> E_LogNoMatchStatus S_LogNoMatchStatus --> N_LogNoMatchStatus_Node0 N_LogNoMatchStatus_Node0 -- No --> E_LogNoMatchStatus
File: GCX016.cbl
GIVEN:
No matching Canadian cargo records were found or records were invalid
WHEN:
The system logs no match status
THEN:
The system records no match condition with equipment ID, search criteria, and timestamp for audit purposes
β Consolidated Acceptance Criteria
- The system continues processing → the system proceeds with normal US cargo processing workflow
- Main processing workflow needs to continue → the system resumes normal cargo processing operations and continues with the next step in the business workflow
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ContinueProcessing(["Start Step"])
E_ContinueProcessing(["End Step"])
N_ContinueProcessing_Node0{"The system continues processing"}:::decision
N_ContinueProcessing_Node0_action["The system proceeds with normal US
cargo processing workflow"]:::main N_ContinueProcessing_Node0 -- Yes --> N_ContinueProcessing_Node0_action N_ContinueProcessing_Node0_action --> E_ContinueProcessing S_ContinueProcessing --> N_ContinueProcessing_Node0 N_ContinueProcessing_Node1{"Main processing workflow needs to
continue"}:::decision N_ContinueProcessing_Node1_action["The system resumes normal cargo
processing operations and continues
with the next step in the business
workflow"]:::main N_ContinueProcessing_Node1 -- Yes --> N_ContinueProcessing_Node1_action N_ContinueProcessing_Node1_action --> E_ContinueProcessing N_ContinueProcessing_Node0 -- No --> N_ContinueProcessing_Node1 N_ContinueProcessing_Node1 -- No --> E_ContinueProcessing
cargo processing workflow"]:::main N_ContinueProcessing_Node0 -- Yes --> N_ContinueProcessing_Node0_action N_ContinueProcessing_Node0_action --> E_ContinueProcessing S_ContinueProcessing --> N_ContinueProcessing_Node0 N_ContinueProcessing_Node1{"Main processing workflow needs to
continue"}:::decision N_ContinueProcessing_Node1_action["The system resumes normal cargo
processing operations and continues
with the next step in the business
workflow"]:::main N_ContinueProcessing_Node1 -- Yes --> N_ContinueProcessing_Node1_action N_ContinueProcessing_Node1_action --> E_ContinueProcessing N_ContinueProcessing_Node0 -- No --> N_ContinueProcessing_Node1 N_ContinueProcessing_Node1 -- No --> E_ContinueProcessing
File: GCX016.cbl
GIVEN:
Cross-border coordination is complete OR no Canadian match was found and logged
WHEN:
The system continues processing
THEN:
The system proceeds with normal US cargo processing workflow
File: GCX016.cbl
GIVEN:
Audit logging activities have been completed (successfully or with error handling)
WHEN:
Main processing workflow needs to continue
THEN:
- The system resumes normal cargo processing operations
- Continues with the next step in the business workflow
β Consolidated Acceptance Criteria
- System executes database query on Canadian cargo records → database query is performed to search for matching Canadian cargo records
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExecuteDatabaseQueryonCanadianCargoRecords(["Start Step"])
E_ExecuteDatabaseQueryonCanadianCargoRecords(["End Step"])
N_ExecuteDatabaseQueryonCanadianCargoRecords_Node0{"System executes database query on
Canadian cargo records"}:::decision N_ExecuteDatabaseQueryonCanadianCargoRecords_Node0_action["Database query is performed to
search for matching Canadian cargo
records"]:::main N_ExecuteDatabaseQueryonCanadianCargoRecords_Node0 -- Yes --> N_ExecuteDatabaseQueryonCanadianCargoRecords_Node0_action N_ExecuteDatabaseQueryonCanadianCargoRecords_Node0_action --> E_ExecuteDatabaseQueryonCanadianCargoRecords S_ExecuteDatabaseQueryonCanadianCargoRecords --> N_ExecuteDatabaseQueryonCanadianCargoRecords_Node0 N_ExecuteDatabaseQueryonCanadianCargoRecords_Node0 -- No --> E_ExecuteDatabaseQueryonCanadianCargoRecords
Canadian cargo records"}:::decision N_ExecuteDatabaseQueryonCanadianCargoRecords_Node0_action["Database query is performed to
search for matching Canadian cargo
records"]:::main N_ExecuteDatabaseQueryonCanadianCargoRecords_Node0 -- Yes --> N_ExecuteDatabaseQueryonCanadianCargoRecords_Node0_action N_ExecuteDatabaseQueryonCanadianCargoRecords_Node0_action --> E_ExecuteDatabaseQueryonCanadianCargoRecords S_ExecuteDatabaseQueryonCanadianCargoRecords --> N_ExecuteDatabaseQueryonCanadianCargoRecords_Node0 N_ExecuteDatabaseQueryonCanadianCargoRecords_Node0 -- No --> E_ExecuteDatabaseQueryonCanadianCargoRecords
File: GCX016.cbl
GIVEN:
Equipment ID is provided for cross-border matching
WHEN:
System executes database query on Canadian cargo records
THEN:
Database query is performed to search for matching Canadian cargo records
β Consolidated Acceptance Criteria
- System searches by equipment ID match → canadian cargo records are filtered based on equipment ID matching criteria
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SearchbyEquipmentIDMatch(["Start Step"])
E_SearchbyEquipmentIDMatch(["End Step"])
N_SearchbyEquipmentIDMatch_Node0{"System searches by equipment ID
match"}:::decision N_SearchbyEquipmentIDMatch_Node0_action["Canadian cargo records are filtered
based on equipment ID matching
criteria"]:::main N_SearchbyEquipmentIDMatch_Node0 -- Yes --> N_SearchbyEquipmentIDMatch_Node0_action N_SearchbyEquipmentIDMatch_Node0_action --> E_SearchbyEquipmentIDMatch S_SearchbyEquipmentIDMatch --> N_SearchbyEquipmentIDMatch_Node0 N_SearchbyEquipmentIDMatch_Node0 -- No --> E_SearchbyEquipmentIDMatch
match"}:::decision N_SearchbyEquipmentIDMatch_Node0_action["Canadian cargo records are filtered
based on equipment ID matching
criteria"]:::main N_SearchbyEquipmentIDMatch_Node0 -- Yes --> N_SearchbyEquipmentIDMatch_Node0_action N_SearchbyEquipmentIDMatch_Node0_action --> E_SearchbyEquipmentIDMatch S_SearchbyEquipmentIDMatch --> N_SearchbyEquipmentIDMatch_Node0 N_SearchbyEquipmentIDMatch_Node0 -- No --> E_SearchbyEquipmentIDMatch
File: GCX016.cbl
GIVEN:
Database query is executed on Canadian cargo records
WHEN:
System searches by equipment ID match
THEN:
Canadian cargo records are filtered based on equipment ID matching criteria
β Consolidated Acceptance Criteria
- System checks if Canadian cargo records are found → system determines if records exist and routes processing accordingly - if records found proceed to validation, if no records found log no valid records
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CanadianCargoRecordsFound(["Start Step"])
E_CanadianCargoRecordsFound(["End Step"])
N_CanadianCargoRecordsFound_Node0{"System checks if Canadian cargo
records are found"}:::decision N_CanadianCargoRecordsFound_Node0_action["System determines if records exist
and routes processing accordingly -
if records found proceed to
validation, if no records found log
no valid records"]:::main N_CanadianCargoRecordsFound_Node0 -- Yes --> N_CanadianCargoRecordsFound_Node0_action N_CanadianCargoRecordsFound_Node0_action --> E_CanadianCargoRecordsFound S_CanadianCargoRecordsFound --> N_CanadianCargoRecordsFound_Node0 N_CanadianCargoRecordsFound_Node0 -- No --> E_CanadianCargoRecordsFound
records are found"}:::decision N_CanadianCargoRecordsFound_Node0_action["System determines if records exist
and routes processing accordingly -
if records found proceed to
validation, if no records found log
no valid records"]:::main N_CanadianCargoRecordsFound_Node0 -- Yes --> N_CanadianCargoRecordsFound_Node0_action N_CanadianCargoRecordsFound_Node0_action --> E_CanadianCargoRecordsFound S_CanadianCargoRecordsFound --> N_CanadianCargoRecordsFound_Node0 N_CanadianCargoRecordsFound_Node0 -- No --> E_CanadianCargoRecordsFound
File: GCX016.cbl
GIVEN:
Equipment ID search has been performed on Canadian cargo database
WHEN:
System checks if Canadian cargo records are found
THEN:
- System determines if records exist
- Routes processing accordingly - if records found proceed to validation, if no records found log no valid records
β Consolidated Acceptance Criteria
- System checks if record is valid for processing → system routes to appropriate processing path - if valid return record, if deleted exclude record, if unusable exclude record
- If record deletion status and bond creation flags → deleted records and new bond created records are filtered out from processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RecordValidforProcessing(["Start Step"])
E_RecordValidforProcessing(["End Step"])
N_RecordValidforProcessing_Node0{"System checks if record is valid
for processing"}:::decision N_RecordValidforProcessing_Node0_action["System routes to appropriate
processing path - if valid return
record, if deleted exclude record,
if unusable exclude record"]:::main N_RecordValidforProcessing_Node0 -- Yes --> N_RecordValidforProcessing_Node0_action N_RecordValidforProcessing_Node0_action --> E_RecordValidforProcessing S_RecordValidforProcessing --> N_RecordValidforProcessing_Node0 N_RecordValidforProcessing_Node1{"The system evaluates record
deletion status and bond creation
flags"}:::decision N_RecordValidforProcessing_Node1_action["Deleted records and new bond
created records are filtered out
from processing"]:::main N_RecordValidforProcessing_Node1 -- Yes --> N_RecordValidforProcessing_Node1_action N_RecordValidforProcessing_Node1_action --> E_RecordValidforProcessing N_RecordValidforProcessing_Node0 -- No --> N_RecordValidforProcessing_Node1 N_RecordValidforProcessing_Node1 -- No --> E_RecordValidforProcessing
for processing"}:::decision N_RecordValidforProcessing_Node0_action["System routes to appropriate
processing path - if valid return
record, if deleted exclude record,
if unusable exclude record"]:::main N_RecordValidforProcessing_Node0 -- Yes --> N_RecordValidforProcessing_Node0_action N_RecordValidforProcessing_Node0_action --> E_RecordValidforProcessing S_RecordValidforProcessing --> N_RecordValidforProcessing_Node0 N_RecordValidforProcessing_Node1{"The system evaluates record
deletion status and bond creation
flags"}:::decision N_RecordValidforProcessing_Node1_action["Deleted records and new bond
created records are filtered out
from processing"]:::main N_RecordValidforProcessing_Node1 -- Yes --> N_RecordValidforProcessing_Node1_action N_RecordValidforProcessing_Node1_action --> E_RecordValidforProcessing N_RecordValidforProcessing_Node0 -- No --> N_RecordValidforProcessing_Node1 N_RecordValidforProcessing_Node1 -- No --> E_RecordValidforProcessing
File: GCX016.cbl
GIVEN:
Canadian record status has been validated
WHEN:
System checks if record is valid for processing
THEN:
System routes to appropriate processing path - if valid return record, if deleted exclude record, if unusable exclude record
File: GCX016.cbl
GIVEN:
Canadian cargo records are retrieved from the database
WHEN:
- The system evaluates record deletion status
- Bond creation flags
THEN:
- Deleted records
- New bond created records are filtered out from processing
β Consolidated Acceptance Criteria
- System processes record validation results → deleted record is excluded from processing and system logs no valid Canadian records found
- The system encounters records marked as deleted → the system should exclude deleted records from further processing and continue with remaining valid records
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExcludeDeletedRecords(["Start Step"])
E_ExcludeDeletedRecords(["End Step"])
N_ExcludeDeletedRecords_Node0{"System processes record validation
results"}:::decision N_ExcludeDeletedRecords_Node0_action["Deleted record is excluded from
processing and system logs no valid
Canadian records found"]:::main N_ExcludeDeletedRecords_Node0 -- Yes --> N_ExcludeDeletedRecords_Node0_action N_ExcludeDeletedRecords_Node0_action --> E_ExcludeDeletedRecords S_ExcludeDeletedRecords --> N_ExcludeDeletedRecords_Node0 N_ExcludeDeletedRecords_Node1{"The system encounters records
marked as deleted"}:::decision N_ExcludeDeletedRecords_Node1_action["The system should exclude deleted
records from further processing and
continue with remaining valid
records"]:::main N_ExcludeDeletedRecords_Node1 -- Yes --> N_ExcludeDeletedRecords_Node1_action N_ExcludeDeletedRecords_Node1_action --> E_ExcludeDeletedRecords N_ExcludeDeletedRecords_Node0 -- No --> N_ExcludeDeletedRecords_Node1 N_ExcludeDeletedRecords_Node1 -- No --> E_ExcludeDeletedRecords
results"}:::decision N_ExcludeDeletedRecords_Node0_action["Deleted record is excluded from
processing and system logs no valid
Canadian records found"]:::main N_ExcludeDeletedRecords_Node0 -- Yes --> N_ExcludeDeletedRecords_Node0_action N_ExcludeDeletedRecords_Node0_action --> E_ExcludeDeletedRecords S_ExcludeDeletedRecords --> N_ExcludeDeletedRecords_Node0 N_ExcludeDeletedRecords_Node1{"The system encounters records
marked as deleted"}:::decision N_ExcludeDeletedRecords_Node1_action["The system should exclude deleted
records from further processing and
continue with remaining valid
records"]:::main N_ExcludeDeletedRecords_Node1 -- Yes --> N_ExcludeDeletedRecords_Node1_action N_ExcludeDeletedRecords_Node1_action --> E_ExcludeDeletedRecords N_ExcludeDeletedRecords_Node0 -- No --> N_ExcludeDeletedRecords_Node1 N_ExcludeDeletedRecords_Node1 -- No --> E_ExcludeDeletedRecords
File: GCX016.cbl
GIVEN:
Canadian cargo record has been identified as deleted
WHEN:
System processes record validation results
THEN:
- Deleted record is excluded from processing
- System logs no valid canadian records found
File: GCX016.cbl
GIVEN:
Canadian cargo records are being validated for cross-border coordination
WHEN:
The system encounters records marked as deleted
THEN:
- The system should exclude deleted records from further processing
- Continue with remaining valid records
β Consolidated Acceptance Criteria
- System processes record validation results → unusable record is excluded from processing and system logs no valid Canadian records found
- The system encounters records in unusable status → the system should exclude unusable records from cross-border coordination processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExcludeUnusableRecords(["Start Step"])
E_ExcludeUnusableRecords(["End Step"])
N_ExcludeUnusableRecords_Node0{"System processes record validation
results"}:::decision N_ExcludeUnusableRecords_Node0_action["Unusable record is excluded from
processing and system logs no valid
Canadian records found"]:::main N_ExcludeUnusableRecords_Node0 -- Yes --> N_ExcludeUnusableRecords_Node0_action N_ExcludeUnusableRecords_Node0_action --> E_ExcludeUnusableRecords S_ExcludeUnusableRecords --> N_ExcludeUnusableRecords_Node0 N_ExcludeUnusableRecords_Node1{"The system encounters records in
unusable status"}:::decision N_ExcludeUnusableRecords_Node1_action["The system should exclude unusable
records from cross-border
coordination processing"]:::main N_ExcludeUnusableRecords_Node1 -- Yes --> N_ExcludeUnusableRecords_Node1_action N_ExcludeUnusableRecords_Node1_action --> E_ExcludeUnusableRecords N_ExcludeUnusableRecords_Node0 -- No --> N_ExcludeUnusableRecords_Node1 N_ExcludeUnusableRecords_Node1 -- No --> E_ExcludeUnusableRecords
results"}:::decision N_ExcludeUnusableRecords_Node0_action["Unusable record is excluded from
processing and system logs no valid
Canadian records found"]:::main N_ExcludeUnusableRecords_Node0 -- Yes --> N_ExcludeUnusableRecords_Node0_action N_ExcludeUnusableRecords_Node0_action --> E_ExcludeUnusableRecords S_ExcludeUnusableRecords --> N_ExcludeUnusableRecords_Node0 N_ExcludeUnusableRecords_Node1{"The system encounters records in
unusable status"}:::decision N_ExcludeUnusableRecords_Node1_action["The system should exclude unusable
records from cross-border
coordination processing"]:::main N_ExcludeUnusableRecords_Node1 -- Yes --> N_ExcludeUnusableRecords_Node1_action N_ExcludeUnusableRecords_Node1_action --> E_ExcludeUnusableRecords N_ExcludeUnusableRecords_Node0 -- No --> N_ExcludeUnusableRecords_Node1 N_ExcludeUnusableRecords_Node1 -- No --> E_ExcludeUnusableRecords
File: GCX016.cbl
GIVEN:
Canadian cargo record has been identified as unusable
WHEN:
System processes record validation results
THEN:
- Unusable record is excluded from processing
- System logs no valid canadian records found
File: GCX016.cbl
GIVEN:
Canadian cargo records are being validated after deleted record exclusion
WHEN:
The system encounters records in unusable status
THEN:
The system should exclude unusable records from cross-border coordination processing
β Consolidated Acceptance Criteria
- System processes valid record → valid Canadian cargo record is returned for cross-border coordination
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ReturnValidCanadianCargoRecord(["Start Step"])
E_ReturnValidCanadianCargoRecord(["End Step"])
N_ReturnValidCanadianCargoRecord_Node0{"System processes valid record"}:::decision
N_ReturnValidCanadianCargoRecord_Node0_action["Valid Canadian cargo record is
returned for cross-border
coordination"]:::main N_ReturnValidCanadianCargoRecord_Node0 -- Yes --> N_ReturnValidCanadianCargoRecord_Node0_action N_ReturnValidCanadianCargoRecord_Node0_action --> E_ReturnValidCanadianCargoRecord S_ReturnValidCanadianCargoRecord --> N_ReturnValidCanadianCargoRecord_Node0 N_ReturnValidCanadianCargoRecord_Node0 -- No --> E_ReturnValidCanadianCargoRecord
returned for cross-border
coordination"]:::main N_ReturnValidCanadianCargoRecord_Node0 -- Yes --> N_ReturnValidCanadianCargoRecord_Node0_action N_ReturnValidCanadianCargoRecord_Node0_action --> E_ReturnValidCanadianCargoRecord S_ReturnValidCanadianCargoRecord --> N_ReturnValidCanadianCargoRecord_Node0 N_ReturnValidCanadianCargoRecord_Node0 -- No --> E_ReturnValidCanadianCargoRecord
File: GCX016.cbl
GIVEN:
Canadian cargo record has been validated as suitable for processing
WHEN:
System processes valid record
THEN:
Valid Canadian cargo record is returned for cross-border coordination
β Consolidated Acceptance Criteria
- System completes Canadian cargo record search and validation → system logs that no valid Canadian records were found and continues with cross-border coordination
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogNoValidCanadianRecordsFound(["Start Step"])
E_LogNoValidCanadianRecordsFound(["End Step"])
N_LogNoValidCanadianRecordsFound_Node0{"System completes Canadian cargo
record search and validation"}:::decision N_LogNoValidCanadianRecordsFound_Node0_action["System logs that no valid Canadian
records were found and continues
with cross-border coordination"]:::main N_LogNoValidCanadianRecordsFound_Node0 -- Yes --> N_LogNoValidCanadianRecordsFound_Node0_action N_LogNoValidCanadianRecordsFound_Node0_action --> E_LogNoValidCanadianRecordsFound S_LogNoValidCanadianRecordsFound --> N_LogNoValidCanadianRecordsFound_Node0 N_LogNoValidCanadianRecordsFound_Node0 -- No --> E_LogNoValidCanadianRecordsFound
record search and validation"}:::decision N_LogNoValidCanadianRecordsFound_Node0_action["System logs that no valid Canadian
records were found and continues
with cross-border coordination"]:::main N_LogNoValidCanadianRecordsFound_Node0 -- Yes --> N_LogNoValidCanadianRecordsFound_Node0_action N_LogNoValidCanadianRecordsFound_Node0_action --> E_LogNoValidCanadianRecordsFound S_LogNoValidCanadianRecordsFound --> N_LogNoValidCanadianRecordsFound_Node0 N_LogNoValidCanadianRecordsFound_Node0 -- No --> E_LogNoValidCanadianRecordsFound
File: GCX016.cbl
GIVEN:
No Canadian cargo records exist OR all found records are deleted OR all found records are unusable
WHEN:
- System completes canadian cargo record search
- Validation
THEN:
- System logs that no valid canadian records were found
- Continues with cross-border coordination
β Consolidated Acceptance Criteria
- The system checks the cargo release status → the system determines if the cargo is released and proceeds with cross-border processing or terminates the process
- The system checks the cargo release status for cross-border coordination → the system should proceed with Canadian manifest processing only if the US cargo is in released status, otherwise skip cross-border coordination
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_USCargoReleased(["Start Step"])
E_USCargoReleased(["End Step"])
N_USCargoReleased_Node0{"The system checks the cargo release
status"}:::decision N_USCargoReleased_Node0_action["The system determines if the cargo
is released and proceeds with
cross-border processing or
terminates the process"]:::main N_USCargoReleased_Node0 -- Yes --> N_USCargoReleased_Node0_action N_USCargoReleased_Node0_action --> E_USCargoReleased S_USCargoReleased --> N_USCargoReleased_Node0 N_USCargoReleased_Node1{"The system checks the cargo release
status for cross-border coordination"}:::decision N_USCargoReleased_Node1_action["The system should proceed with
Canadian manifest processing only if
the US cargo is in released status,
otherwise skip cross-border
coordination"]:::main N_USCargoReleased_Node1 -- Yes --> N_USCargoReleased_Node1_action N_USCargoReleased_Node1_action --> E_USCargoReleased N_USCargoReleased_Node0 -- No --> N_USCargoReleased_Node1 N_USCargoReleased_Node1 -- No --> E_USCargoReleased
status"}:::decision N_USCargoReleased_Node0_action["The system determines if the cargo
is released and proceeds with
cross-border processing or
terminates the process"]:::main N_USCargoReleased_Node0 -- Yes --> N_USCargoReleased_Node0_action N_USCargoReleased_Node0_action --> E_USCargoReleased S_USCargoReleased --> N_USCargoReleased_Node0 N_USCargoReleased_Node1{"The system checks the cargo release
status for cross-border coordination"}:::decision N_USCargoReleased_Node1_action["The system should proceed with
Canadian manifest processing only if
the US cargo is in released status,
otherwise skip cross-border
coordination"]:::main N_USCargoReleased_Node1 -- Yes --> N_USCargoReleased_Node1_action N_USCargoReleased_Node1_action --> E_USCargoReleased N_USCargoReleased_Node0 -- No --> N_USCargoReleased_Node1 N_USCargoReleased_Node1 -- No --> E_USCargoReleased
File: GCX016.cbl
GIVEN:
A cargo record exists in the system
WHEN:
The system checks the cargo release status
THEN:
- The system determines if the cargo is released
- Proceeds with cross-border processing or terminates the process
File: GCX016.cbl
GIVEN:
A US cargo record exists in the system
WHEN:
The system checks the cargo release status for cross-border coordination
THEN:
The system should proceed with Canadian manifest processing only if the US cargo is in released status, otherwise skip cross-border coordination
β Consolidated Acceptance Criteria
- The search results are evaluated → if Canadian manifest records are found, continue processing; otherwise terminate cross-border log generation
- The system checks for Canadian manifest existence → canadian manifest is found if matching records exist and are not marked as deleted
- The system searches Canadian manifest records by waybill and equipment information → if Canadian manifest records are found, special logging is generated; otherwise, standard processing continues
- The system searches Canadian manifest database using cargo identifiers → processing branches to update Canadian records if found, or continues to status restoration if not found
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CanadianManifestFound(["Start Step"])
E_CanadianManifestFound(["End Step"])
N_CanadianManifestFound_Node0{"The search results are evaluated"}:::decision
N_CanadianManifestFound_Node0_action["If Canadian manifest records are
found, continue processing otherwise
terminate cross-border log
generation"]:::exclusion N_CanadianManifestFound_Node0 -- Yes -->|Alternative| N_CanadianManifestFound_Node0_action N_CanadianManifestFound_Node0_action --> E_CanadianManifestFound S_CanadianManifestFound --> N_CanadianManifestFound_Node0 N_CanadianManifestFound_Node1{"the system checks for Canadian
manifest existence"}:::decision N_CanadianManifestFound_Node1_action["Canadian manifest is found if
matching records exist and are not
marked as deleted"]:::main N_CanadianManifestFound_Node1 -- Yes --> N_CanadianManifestFound_Node1_action N_CanadianManifestFound_Node1_action --> E_CanadianManifestFound N_CanadianManifestFound_Node0 -- No --> N_CanadianManifestFound_Node1 N_CanadianManifestFound_Node2{"The system searches Canadian
manifest records by waybill and
equipment information"}:::decision N_CanadianManifestFound_Node2_action["If Canadian manifest records are
found, special logging is generated
otherwise, standard processing
continues"]:::main N_CanadianManifestFound_Node2 -- Yes --> N_CanadianManifestFound_Node2_action N_CanadianManifestFound_Node2_action --> E_CanadianManifestFound N_CanadianManifestFound_Node1 -- No --> N_CanadianManifestFound_Node2 N_CanadianManifestFound_Node3{"The system searches Canadian
manifest database using cargo
identifiers"}:::decision N_CanadianManifestFound_Node3_action["Processing branches to update
Canadian records if found, or
continues to status restoration if
not found"]:::main N_CanadianManifestFound_Node3 -- Yes --> N_CanadianManifestFound_Node3_action N_CanadianManifestFound_Node3_action --> E_CanadianManifestFound N_CanadianManifestFound_Node2 -- No --> N_CanadianManifestFound_Node3 N_CanadianManifestFound_Node3 -- No --> E_CanadianManifestFound
found, continue processing otherwise
terminate cross-border log
generation"]:::exclusion N_CanadianManifestFound_Node0 -- Yes -->|Alternative| N_CanadianManifestFound_Node0_action N_CanadianManifestFound_Node0_action --> E_CanadianManifestFound S_CanadianManifestFound --> N_CanadianManifestFound_Node0 N_CanadianManifestFound_Node1{"the system checks for Canadian
manifest existence"}:::decision N_CanadianManifestFound_Node1_action["Canadian manifest is found if
matching records exist and are not
marked as deleted"]:::main N_CanadianManifestFound_Node1 -- Yes --> N_CanadianManifestFound_Node1_action N_CanadianManifestFound_Node1_action --> E_CanadianManifestFound N_CanadianManifestFound_Node0 -- No --> N_CanadianManifestFound_Node1 N_CanadianManifestFound_Node2{"The system searches Canadian
manifest records by waybill and
equipment information"}:::decision N_CanadianManifestFound_Node2_action["If Canadian manifest records are
found, special logging is generated
otherwise, standard processing
continues"]:::main N_CanadianManifestFound_Node2 -- Yes --> N_CanadianManifestFound_Node2_action N_CanadianManifestFound_Node2_action --> E_CanadianManifestFound N_CanadianManifestFound_Node1 -- No --> N_CanadianManifestFound_Node2 N_CanadianManifestFound_Node3{"The system searches Canadian
manifest database using cargo
identifiers"}:::decision N_CanadianManifestFound_Node3_action["Processing branches to update
Canadian records if found, or
continues to status restoration if
not found"]:::main N_CanadianManifestFound_Node3 -- Yes --> N_CanadianManifestFound_Node3_action N_CanadianManifestFound_Node3_action --> E_CanadianManifestFound N_CanadianManifestFound_Node2 -- No --> N_CanadianManifestFound_Node3 N_CanadianManifestFound_Node3 -- No --> E_CanadianManifestFound
File: GCX016.cbl
GIVEN:
The system has searched for Canadian manifest records
WHEN:
The search results are evaluated
THEN:
If Canadian manifest records are found, continue processing; otherwise terminate cross-border log generation
File: GCX016.cbl
GIVEN:
equipment ID lookup has been performed against Canadian cargo records
WHEN:
the system checks for Canadian manifest existence
THEN:
- Canadian manifest is found if matching records exist
- Are not marked as deleted
File: GCX016.cbl
GIVEN:
Released CPRS cargo requiring Canadian manifest coordination
WHEN:
- The system searches canadian manifest records by waybill
- Equipment information
THEN:
If Canadian manifest records are found, special logging is generated; otherwise, standard processing continues
File: GCX016.cbl
GIVEN:
A search for Canadian manifest records has been initiated
WHEN:
The system searches Canadian manifest database using cargo identifiers
THEN:
Processing branches to update Canadian records if found, or continues to status restoration if not found
β Consolidated Acceptance Criteria
- The system extracts cargo details from both US and Canadian records → all relevant cargo information including waybill, car ID, and cargo descriptions are captured for cross-border coordination
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExtractCargoDetails(["Start Step"])
E_ExtractCargoDetails(["End Step"])
N_ExtractCargoDetails_Node0{"The system extracts cargo details
from both US and Canadian records"}:::decision N_ExtractCargoDetails_Node0_action["All relevant cargo information
including waybill, car ID, and cargo
descriptions are captured for
cross-border coordination"]:::main N_ExtractCargoDetails_Node0 -- Yes --> N_ExtractCargoDetails_Node0_action N_ExtractCargoDetails_Node0_action --> E_ExtractCargoDetails S_ExtractCargoDetails --> N_ExtractCargoDetails_Node0 N_ExtractCargoDetails_Node0 -- No --> E_ExtractCargoDetails
from both US and Canadian records"}:::decision N_ExtractCargoDetails_Node0_action["All relevant cargo information
including waybill, car ID, and cargo
descriptions are captured for
cross-border coordination"]:::main N_ExtractCargoDetails_Node0 -- Yes --> N_ExtractCargoDetails_Node0_action N_ExtractCargoDetails_Node0_action --> E_ExtractCargoDetails S_ExtractCargoDetails --> N_ExtractCargoDetails_Node0 N_ExtractCargoDetails_Node0 -- No --> E_ExtractCargoDetails
File: GCX016.cbl
GIVEN:
Canadian manifest records have been found
WHEN:
- The system extracts cargo details from both us
- Canadian records
THEN:
All relevant cargo information including waybill, car ID, and cargo descriptions are captured for cross-border coordination
β Consolidated Acceptance Criteria
- The system captures status change information → all status transitions including timestamps, disposition codes, and release quantities are recorded for the audit trail
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CaptureStatusChanges(["Start Step"])
E_CaptureStatusChanges(["End Step"])
N_CaptureStatusChanges_Node0{"The system captures status change
information"}:::decision N_CaptureStatusChanges_Node0_action["All status transitions including
timestamps, disposition codes, and
release quantities are recorded for
the audit trail"]:::main N_CaptureStatusChanges_Node0 -- Yes --> N_CaptureStatusChanges_Node0_action N_CaptureStatusChanges_Node0_action --> E_CaptureStatusChanges S_CaptureStatusChanges --> N_CaptureStatusChanges_Node0 N_CaptureStatusChanges_Node0 -- No --> E_CaptureStatusChanges
information"}:::decision N_CaptureStatusChanges_Node0_action["All status transitions including
timestamps, disposition codes, and
release quantities are recorded for
the audit trail"]:::main N_CaptureStatusChanges_Node0 -- Yes --> N_CaptureStatusChanges_Node0_action N_CaptureStatusChanges_Node0_action --> E_CaptureStatusChanges S_CaptureStatusChanges --> N_CaptureStatusChanges_Node0 N_CaptureStatusChanges_Node0 -- No --> E_CaptureStatusChanges
File: GCX016.cbl
GIVEN:
Cargo details have been extracted
WHEN:
The system captures status change information
THEN:
All status transitions including timestamps, disposition codes, and release quantities are recorded for the audit trail
β Consolidated Acceptance Criteria
- The system builds cross-border coordination information → border crossing details, customs release information, and coordination data are assembled for Canadian system notification
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_BuildCrossBorderCoordinationInfo(["Start Step"])
E_BuildCrossBorderCoordinationInfo(["End Step"])
N_BuildCrossBorderCoordinationInfo_Node0{"The system builds cross-border
coordination information"}:::decision N_BuildCrossBorderCoordinationInfo_Node0_action["Border crossing details, customs
release information, and
coordination data are assembled for
Canadian system notification"]:::main N_BuildCrossBorderCoordinationInfo_Node0 -- Yes --> N_BuildCrossBorderCoordinationInfo_Node0_action N_BuildCrossBorderCoordinationInfo_Node0_action --> E_BuildCrossBorderCoordinationInfo S_BuildCrossBorderCoordinationInfo --> N_BuildCrossBorderCoordinationInfo_Node0 N_BuildCrossBorderCoordinationInfo_Node0 -- No --> E_BuildCrossBorderCoordinationInfo
coordination information"}:::decision N_BuildCrossBorderCoordinationInfo_Node0_action["Border crossing details, customs
release information, and
coordination data are assembled for
Canadian system notification"]:::main N_BuildCrossBorderCoordinationInfo_Node0 -- Yes --> N_BuildCrossBorderCoordinationInfo_Node0_action N_BuildCrossBorderCoordinationInfo_Node0_action --> E_BuildCrossBorderCoordinationInfo S_BuildCrossBorderCoordinationInfo --> N_BuildCrossBorderCoordinationInfo_Node0 N_BuildCrossBorderCoordinationInfo_Node0 -- No --> E_BuildCrossBorderCoordinationInfo
File: GCX016.cbl
GIVEN:
Status changes have been captured
WHEN:
The system builds cross-border coordination information
THEN:
Border crossing details, customs release information, and coordination data are assembled for Canadian system notification
β Consolidated Acceptance Criteria
- The system formats the audit trail message → the message is structured with proper headers, cargo details, and status information according to cross-border communication protocols
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_FormatAuditTrailMessage(["Start Step"])
E_FormatAuditTrailMessage(["End Step"])
N_FormatAuditTrailMessage_Node0{"The system formats the audit trail
message"}:::decision N_FormatAuditTrailMessage_Node0_action["The message is structured with
proper headers, cargo details, and
status information according to
cross-border communication protocols"]:::main N_FormatAuditTrailMessage_Node0 -- Yes --> N_FormatAuditTrailMessage_Node0_action N_FormatAuditTrailMessage_Node0_action --> E_FormatAuditTrailMessage S_FormatAuditTrailMessage --> N_FormatAuditTrailMessage_Node0 N_FormatAuditTrailMessage_Node0 -- No --> E_FormatAuditTrailMessage
message"}:::decision N_FormatAuditTrailMessage_Node0_action["The message is structured with
proper headers, cargo details, and
status information according to
cross-border communication protocols"]:::main N_FormatAuditTrailMessage_Node0 -- Yes --> N_FormatAuditTrailMessage_Node0_action N_FormatAuditTrailMessage_Node0_action --> E_FormatAuditTrailMessage S_FormatAuditTrailMessage --> N_FormatAuditTrailMessage_Node0 N_FormatAuditTrailMessage_Node0 -- No --> E_FormatAuditTrailMessage
File: GCX016.cbl
GIVEN:
Cross-border coordination information has been built
WHEN:
The system formats the audit trail message
THEN:
The message is structured with proper headers, cargo details, and status information according to cross-border communication protocols
β Consolidated Acceptance Criteria
- Equipment ID information is included in the message → car initial, car number, and other equipment identifiers are added to enable proper cargo tracking across borders
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IncludeEquipmentIDInformation(["Start Step"])
E_IncludeEquipmentIDInformation(["End Step"])
N_IncludeEquipmentIDInformation_Node0{"Equipment ID information is
included in the message"}:::decision N_IncludeEquipmentIDInformation_Node0_action["Car initial, car number, and other
equipment identifiers are added to
enable proper cargo tracking across
borders"]:::main N_IncludeEquipmentIDInformation_Node0 -- Yes --> N_IncludeEquipmentIDInformation_Node0_action N_IncludeEquipmentIDInformation_Node0_action --> E_IncludeEquipmentIDInformation S_IncludeEquipmentIDInformation --> N_IncludeEquipmentIDInformation_Node0 N_IncludeEquipmentIDInformation_Node0 -- No --> E_IncludeEquipmentIDInformation
included in the message"}:::decision N_IncludeEquipmentIDInformation_Node0_action["Car initial, car number, and other
equipment identifiers are added to
enable proper cargo tracking across
borders"]:::main N_IncludeEquipmentIDInformation_Node0 -- Yes --> N_IncludeEquipmentIDInformation_Node0_action N_IncludeEquipmentIDInformation_Node0_action --> E_IncludeEquipmentIDInformation S_IncludeEquipmentIDInformation --> N_IncludeEquipmentIDInformation_Node0 N_IncludeEquipmentIDInformation_Node0 -- No --> E_IncludeEquipmentIDInformation
File: GCX016.cbl
GIVEN:
The audit trail message has been formatted
WHEN:
Equipment ID information is included in the message
THEN:
Car initial, car number, and other equipment identifiers are added to enable proper cargo tracking across borders
β Consolidated Acceptance Criteria
- Release status details are added to the message → release quantities, disposition codes, release dates, and customs clearance information are included in the log message
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AddReleaseStatusDetails(["Start Step"])
E_AddReleaseStatusDetails(["End Step"])
N_AddReleaseStatusDetails_Node0{"Release status details are added to
the message"}:::decision N_AddReleaseStatusDetails_Node0_action["Release quantities, disposition
codes, release dates, and customs
clearance information are included
in the log message"]:::main N_AddReleaseStatusDetails_Node0 -- Yes --> N_AddReleaseStatusDetails_Node0_action N_AddReleaseStatusDetails_Node0_action --> E_AddReleaseStatusDetails S_AddReleaseStatusDetails --> N_AddReleaseStatusDetails_Node0 N_AddReleaseStatusDetails_Node0 -- No --> E_AddReleaseStatusDetails
the message"}:::decision N_AddReleaseStatusDetails_Node0_action["Release quantities, disposition
codes, release dates, and customs
clearance information are included
in the log message"]:::main N_AddReleaseStatusDetails_Node0 -- Yes --> N_AddReleaseStatusDetails_Node0_action N_AddReleaseStatusDetails_Node0_action --> E_AddReleaseStatusDetails S_AddReleaseStatusDetails --> N_AddReleaseStatusDetails_Node0 N_AddReleaseStatusDetails_Node0 -- No --> E_AddReleaseStatusDetails
File: GCX016.cbl
GIVEN:
Equipment ID information has been included
WHEN:
Release status details are added to the message
THEN:
Release quantities, disposition codes, release dates, and customs clearance information are included in the log message
β Consolidated Acceptance Criteria
- Border crossing information is added to the message → border location codes, crossing dates, and customs port information are included to complete the cross-border coordination data
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AddBorderCrossingInformation(["Start Step"])
E_AddBorderCrossingInformation(["End Step"])
N_AddBorderCrossingInformation_Node0{"Border crossing information is
added to the message"}:::decision N_AddBorderCrossingInformation_Node0_action["Border location codes, crossing
dates, and customs port information
are included to complete the
cross-border coordination data"]:::main N_AddBorderCrossingInformation_Node0 -- Yes --> N_AddBorderCrossingInformation_Node0_action N_AddBorderCrossingInformation_Node0_action --> E_AddBorderCrossingInformation S_AddBorderCrossingInformation --> N_AddBorderCrossingInformation_Node0 N_AddBorderCrossingInformation_Node0 -- No --> E_AddBorderCrossingInformation
added to the message"}:::decision N_AddBorderCrossingInformation_Node0_action["Border location codes, crossing
dates, and customs port information
are included to complete the
cross-border coordination data"]:::main N_AddBorderCrossingInformation_Node0 -- Yes --> N_AddBorderCrossingInformation_Node0_action N_AddBorderCrossingInformation_Node0_action --> E_AddBorderCrossingInformation S_AddBorderCrossingInformation --> N_AddBorderCrossingInformation_Node0 N_AddBorderCrossingInformation_Node0 -- No --> E_AddBorderCrossingInformation
File: GCX016.cbl
GIVEN:
Release status details have been added
WHEN:
Border crossing information is added to the message
THEN:
Border location codes, crossing dates, and customs port information are included to complete the cross-border coordination data
β Consolidated Acceptance Criteria
- The log message is generated for the Canadian system → a complete cross-border log message is created with all cargo details, status changes, and coordination information formatted for Canadian system consumption
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GenerateLogMessageforCanadianSystem(["Start Step"])
E_GenerateLogMessageforCanadianSystem(["End Step"])
N_GenerateLogMessageforCanadianSystem_Node0{"The log message is generated for
the Canadian system"}:::decision N_GenerateLogMessageforCanadianSystem_Node0_action["A complete cross-border log message
is created with all cargo details,
status changes, and coordination
information formatted for Canadian
system consumption"]:::main N_GenerateLogMessageforCanadianSystem_Node0 -- Yes --> N_GenerateLogMessageforCanadianSystem_Node0_action N_GenerateLogMessageforCanadianSystem_Node0_action --> E_GenerateLogMessageforCanadianSystem S_GenerateLogMessageforCanadianSystem --> N_GenerateLogMessageforCanadianSystem_Node0 N_GenerateLogMessageforCanadianSystem_Node0 -- No --> E_GenerateLogMessageforCanadianSystem
the Canadian system"}:::decision N_GenerateLogMessageforCanadianSystem_Node0_action["A complete cross-border log message
is created with all cargo details,
status changes, and coordination
information formatted for Canadian
system consumption"]:::main N_GenerateLogMessageforCanadianSystem_Node0 -- Yes --> N_GenerateLogMessageforCanadianSystem_Node0_action N_GenerateLogMessageforCanadianSystem_Node0_action --> E_GenerateLogMessageforCanadianSystem S_GenerateLogMessageforCanadianSystem --> N_GenerateLogMessageforCanadianSystem_Node0 N_GenerateLogMessageforCanadianSystem_Node0 -- No --> E_GenerateLogMessageforCanadianSystem
File: GCX016.cbl
GIVEN:
Border crossing information has been added
WHEN:
The log message is generated for the Canadian system
THEN:
A complete cross-border log message is created with all cargo details, status changes, and coordination information formatted for Canadian system consumption
β Consolidated Acceptance Criteria
- The message is sent to Canadian CCN → the cross-border log message is successfully transmitted to the Canadian system for cargo coordination and tracking
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SendMessagetoCanadianCCN(["Start Step"])
E_SendMessagetoCanadianCCN(["End Step"])
N_SendMessagetoCanadianCCN_Node0{"The message is sent to Canadian CCN"}:::decision
N_SendMessagetoCanadianCCN_Node0_action["The cross-border log message is
successfully transmitted to the
Canadian system for cargo
coordination and tracking"]:::main N_SendMessagetoCanadianCCN_Node0 -- Yes --> N_SendMessagetoCanadianCCN_Node0_action N_SendMessagetoCanadianCCN_Node0_action --> E_SendMessagetoCanadianCCN S_SendMessagetoCanadianCCN --> N_SendMessagetoCanadianCCN_Node0 N_SendMessagetoCanadianCCN_Node0 -- No --> E_SendMessagetoCanadianCCN
successfully transmitted to the
Canadian system for cargo
coordination and tracking"]:::main N_SendMessagetoCanadianCCN_Node0 -- Yes --> N_SendMessagetoCanadianCCN_Node0_action N_SendMessagetoCanadianCCN_Node0_action --> E_SendMessagetoCanadianCCN S_SendMessagetoCanadianCCN --> N_SendMessagetoCanadianCCN_Node0 N_SendMessagetoCanadianCCN_Node0 -- No --> E_SendMessagetoCanadianCCN
File: GCX016.cbl
GIVEN:
The log message has been generated for the Canadian system
WHEN:
The message is sent to Canadian CCN
THEN:
- The cross-border log message is successfully transmitted to the canadian system for cargo coordination
- Tracking
β Consolidated Acceptance Criteria
- The audit trail is updated → the cross-border log message transmission is recorded with timestamp, message content, and transmission status for compliance and tracking purposes
- The system receives successful completion confirmation → the system shall update internal audit trail records and continue with normal processing flow
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UpdateAuditTrail(["Start Step"])
E_UpdateAuditTrail(["End Step"])
N_UpdateAuditTrail_Node0{"The audit trail is updated"}:::decision
N_UpdateAuditTrail_Node0_action["The cross-border log message
transmission is recorded with
timestamp, message content, and
transmission status for compliance
and tracking purposes"]:::main N_UpdateAuditTrail_Node0 -- Yes --> N_UpdateAuditTrail_Node0_action N_UpdateAuditTrail_Node0_action --> E_UpdateAuditTrail S_UpdateAuditTrail --> N_UpdateAuditTrail_Node0 N_UpdateAuditTrail_Node1{"The system receives successful
completion confirmation"}:::decision N_UpdateAuditTrail_Node1_action["The system shall update internal
audit trail records and continue
with normal processing flow"]:::main N_UpdateAuditTrail_Node1 -- Yes --> N_UpdateAuditTrail_Node1_action N_UpdateAuditTrail_Node1_action --> E_UpdateAuditTrail N_UpdateAuditTrail_Node0 -- No --> N_UpdateAuditTrail_Node1 N_UpdateAuditTrail_Node1 -- No --> E_UpdateAuditTrail
transmission is recorded with
timestamp, message content, and
transmission status for compliance
and tracking purposes"]:::main N_UpdateAuditTrail_Node0 -- Yes --> N_UpdateAuditTrail_Node0_action N_UpdateAuditTrail_Node0_action --> E_UpdateAuditTrail S_UpdateAuditTrail --> N_UpdateAuditTrail_Node0 N_UpdateAuditTrail_Node1{"The system receives successful
completion confirmation"}:::decision N_UpdateAuditTrail_Node1_action["The system shall update internal
audit trail records and continue
with normal processing flow"]:::main N_UpdateAuditTrail_Node1 -- Yes --> N_UpdateAuditTrail_Node1_action N_UpdateAuditTrail_Node1_action --> E_UpdateAuditTrail N_UpdateAuditTrail_Node0 -- No --> N_UpdateAuditTrail_Node1 N_UpdateAuditTrail_Node1 -- No --> E_UpdateAuditTrail
File: GCX016.cbl
GIVEN:
The message has been sent to Canadian CCN
WHEN:
The audit trail is updated
THEN:
- The cross-border log message transmission is recorded with timestamp, message content, and transmission status for compliance
- Tracking purposes
File: GCX016.cbl
GIVEN:
The GCT1051E logging transaction completed successfully
WHEN:
The system receives successful completion confirmation
THEN:
- The system shall update internal audit trail records
- Continue with normal processing flow
β Consolidated Acceptance Criteria
- The system checks the bond start date field in the cargo record → if bond start date is present, proceed with age calculation; if bond start date is missing or blank, skip age calculation and end the process
- The system checks for bond start date availability → if bond start date is available, proceed with age calculation; otherwise set age to zero
- The bond start date field is evaluated → if bond start date is present and valid, proceed with Julian conversion, otherwise use default age value
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_BondStartDateAvailable(["Start Step"])
E_BondStartDateAvailable(["End Step"])
N_BondStartDateAvailable_Node0{"The system checks the bond start
date field in the cargo record"}:::decision N_BondStartDateAvailable_Node0_action["If bond start date is present,
proceed with age calculation if bond
start date is missing or blank, skip
age calculation and end the process"]:::main N_BondStartDateAvailable_Node0 -- Yes --> N_BondStartDateAvailable_Node0_action N_BondStartDateAvailable_Node0_action --> E_BondStartDateAvailable S_BondStartDateAvailable --> N_BondStartDateAvailable_Node0 N_BondStartDateAvailable_Node1{"The system checks for bond start
date availability"}:::decision N_BondStartDateAvailable_Node1_action["If bond start date is available,
proceed with age calculation
otherwise set age to zero"]:::main N_BondStartDateAvailable_Node1 -- Yes --> N_BondStartDateAvailable_Node1_action N_BondStartDateAvailable_Node1_action --> E_BondStartDateAvailable N_BondStartDateAvailable_Node0 -- No --> N_BondStartDateAvailable_Node1 N_BondStartDateAvailable_Node2{"The bond start date field is
evaluated"}:::decision N_BondStartDateAvailable_Node2_action["If bond start date is present and
valid, proceed with Julian
conversion, otherwise use default
age value"]:::main N_BondStartDateAvailable_Node2 -- Yes --> N_BondStartDateAvailable_Node2_action N_BondStartDateAvailable_Node2_action --> E_BondStartDateAvailable N_BondStartDateAvailable_Node1 -- No --> N_BondStartDateAvailable_Node2 N_BondStartDateAvailable_Node2 -- No --> E_BondStartDateAvailable
date field in the cargo record"}:::decision N_BondStartDateAvailable_Node0_action["If bond start date is present,
proceed with age calculation if bond
start date is missing or blank, skip
age calculation and end the process"]:::main N_BondStartDateAvailable_Node0 -- Yes --> N_BondStartDateAvailable_Node0_action N_BondStartDateAvailable_Node0_action --> E_BondStartDateAvailable S_BondStartDateAvailable --> N_BondStartDateAvailable_Node0 N_BondStartDateAvailable_Node1{"The system checks for bond start
date availability"}:::decision N_BondStartDateAvailable_Node1_action["If bond start date is available,
proceed with age calculation
otherwise set age to zero"]:::main N_BondStartDateAvailable_Node1 -- Yes --> N_BondStartDateAvailable_Node1_action N_BondStartDateAvailable_Node1_action --> E_BondStartDateAvailable N_BondStartDateAvailable_Node0 -- No --> N_BondStartDateAvailable_Node1 N_BondStartDateAvailable_Node2{"The bond start date field is
evaluated"}:::decision N_BondStartDateAvailable_Node2_action["If bond start date is present and
valid, proceed with Julian
conversion, otherwise use default
age value"]:::main N_BondStartDateAvailable_Node2 -- Yes --> N_BondStartDateAvailable_Node2_action N_BondStartDateAvailable_Node2_action --> E_BondStartDateAvailable N_BondStartDateAvailable_Node1 -- No --> N_BondStartDateAvailable_Node2 N_BondStartDateAvailable_Node2 -- No --> E_BondStartDateAvailable
File: GCX016.cbl
GIVEN:
A cargo record is being processed for age calculation
WHEN:
The system checks the bond start date field in the cargo record
THEN:
- If bond start date is present, proceed with age calculation; if bond start date is missing or blank, skip age calculation
- End the process
File: GCX016.cbl
GIVEN:
A cargo record is being processed for age calculation
WHEN:
The system checks for bond start date availability
THEN:
If bond start date is available, proceed with age calculation; otherwise set age to zero
File: GCX016.cbl
GIVEN:
A cargo record is being processed for age calculation
WHEN:
The bond start date field is evaluated
THEN:
- If bond start date is present
- Valid, proceed with julian conversion, otherwise use default age value
β Consolidated Acceptance Criteria
- The system needs to calculate cargo age → convert the bond start date to Julian format using the date conversion utility
- Age calculation requires Julian date format → the bond start date is converted to Julian format using date conversion utilities
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ConvertBondStartDatetoJulianFormat(["Start Step"])
E_ConvertBondStartDatetoJulianFormat(["End Step"])
N_ConvertBondStartDatetoJulianFormat_Node0{"The system needs to calculate cargo
age"}:::decision N_ConvertBondStartDatetoJulianFormat_Node0_action["Convert the bond start date to
Julian format using the date
conversion utility"]:::main N_ConvertBondStartDatetoJulianFormat_Node0 -- Yes --> N_ConvertBondStartDatetoJulianFormat_Node0_action N_ConvertBondStartDatetoJulianFormat_Node0_action --> E_ConvertBondStartDatetoJulianFormat S_ConvertBondStartDatetoJulianFormat --> N_ConvertBondStartDatetoJulianFormat_Node0 N_ConvertBondStartDatetoJulianFormat_Node1{"Age calculation requires Julian
date format"}:::decision N_ConvertBondStartDatetoJulianFormat_Node1_action["The bond start date is converted to
Julian format using date conversion
utilities"]:::main N_ConvertBondStartDatetoJulianFormat_Node1 -- Yes --> N_ConvertBondStartDatetoJulianFormat_Node1_action N_ConvertBondStartDatetoJulianFormat_Node1_action --> E_ConvertBondStartDatetoJulianFormat N_ConvertBondStartDatetoJulianFormat_Node0 -- No --> N_ConvertBondStartDatetoJulianFormat_Node1 N_ConvertBondStartDatetoJulianFormat_Node1 -- No --> E_ConvertBondStartDatetoJulianFormat
age"}:::decision N_ConvertBondStartDatetoJulianFormat_Node0_action["Convert the bond start date to
Julian format using the date
conversion utility"]:::main N_ConvertBondStartDatetoJulianFormat_Node0 -- Yes --> N_ConvertBondStartDatetoJulianFormat_Node0_action N_ConvertBondStartDatetoJulianFormat_Node0_action --> E_ConvertBondStartDatetoJulianFormat S_ConvertBondStartDatetoJulianFormat --> N_ConvertBondStartDatetoJulianFormat_Node0 N_ConvertBondStartDatetoJulianFormat_Node1{"Age calculation requires Julian
date format"}:::decision N_ConvertBondStartDatetoJulianFormat_Node1_action["The bond start date is converted to
Julian format using date conversion
utilities"]:::main N_ConvertBondStartDatetoJulianFormat_Node1 -- Yes --> N_ConvertBondStartDatetoJulianFormat_Node1_action N_ConvertBondStartDatetoJulianFormat_Node1_action --> E_ConvertBondStartDatetoJulianFormat N_ConvertBondStartDatetoJulianFormat_Node0 -- No --> N_ConvertBondStartDatetoJulianFormat_Node1 N_ConvertBondStartDatetoJulianFormat_Node1 -- No --> E_ConvertBondStartDatetoJulianFormat
File: GCX016.cbl
GIVEN:
A valid bond start date exists in the cargo record
WHEN:
The system needs to calculate cargo age
THEN:
Convert the bond start date to Julian format using the date conversion utility
File: GCX016.cbl
GIVEN:
A valid bond start date exists in the cargo record
WHEN:
Age calculation requires Julian date format
THEN:
The bond start date is converted to Julian format using date conversion utilities
β Consolidated Acceptance Criteria
- Age calculation is being performed → convert the current system date to Julian format using the date conversion utility
- Age calculation requires Julian date format for comparison → the current date is converted to Julian format using date conversion utilities
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ConvertCurrentDatetoJulianFormat(["Start Step"])
E_ConvertCurrentDatetoJulianFormat(["End Step"])
N_ConvertCurrentDatetoJulianFormat_Node0{"Age calculation is being performed"}:::decision
N_ConvertCurrentDatetoJulianFormat_Node0_action["Convert the current system date to
Julian format using the date
conversion utility"]:::main N_ConvertCurrentDatetoJulianFormat_Node0 -- Yes --> N_ConvertCurrentDatetoJulianFormat_Node0_action N_ConvertCurrentDatetoJulianFormat_Node0_action --> E_ConvertCurrentDatetoJulianFormat S_ConvertCurrentDatetoJulianFormat --> N_ConvertCurrentDatetoJulianFormat_Node0 N_ConvertCurrentDatetoJulianFormat_Node1{"Age calculation requires Julian
date format for comparison"}:::decision N_ConvertCurrentDatetoJulianFormat_Node1_action["The current date is converted to
Julian format using date conversion
utilities"]:::main N_ConvertCurrentDatetoJulianFormat_Node1 -- Yes --> N_ConvertCurrentDatetoJulianFormat_Node1_action N_ConvertCurrentDatetoJulianFormat_Node1_action --> E_ConvertCurrentDatetoJulianFormat N_ConvertCurrentDatetoJulianFormat_Node0 -- No --> N_ConvertCurrentDatetoJulianFormat_Node1 N_ConvertCurrentDatetoJulianFormat_Node1 -- No --> E_ConvertCurrentDatetoJulianFormat
Julian format using the date
conversion utility"]:::main N_ConvertCurrentDatetoJulianFormat_Node0 -- Yes --> N_ConvertCurrentDatetoJulianFormat_Node0_action N_ConvertCurrentDatetoJulianFormat_Node0_action --> E_ConvertCurrentDatetoJulianFormat S_ConvertCurrentDatetoJulianFormat --> N_ConvertCurrentDatetoJulianFormat_Node0 N_ConvertCurrentDatetoJulianFormat_Node1{"Age calculation requires Julian
date format for comparison"}:::decision N_ConvertCurrentDatetoJulianFormat_Node1_action["The current date is converted to
Julian format using date conversion
utilities"]:::main N_ConvertCurrentDatetoJulianFormat_Node1 -- Yes --> N_ConvertCurrentDatetoJulianFormat_Node1_action N_ConvertCurrentDatetoJulianFormat_Node1_action --> E_ConvertCurrentDatetoJulianFormat N_ConvertCurrentDatetoJulianFormat_Node0 -- No --> N_ConvertCurrentDatetoJulianFormat_Node1 N_ConvertCurrentDatetoJulianFormat_Node1 -- No --> E_ConvertCurrentDatetoJulianFormat
File: GCX016.cbl
GIVEN:
The current system date is available
WHEN:
Age calculation is being performed
THEN:
Convert the current system date to Julian format using the date conversion utility
File: GCX016.cbl
GIVEN:
The current system date has been retrieved
WHEN:
Age calculation requires Julian date format for comparison
THEN:
The current date is converted to Julian format using date conversion utilities
β Consolidated Acceptance Criteria
- The system performs age calculation → calculate age in days by subtracting bond start Julian date from current Julian date
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CalculateAgeinDaysCurrentJulianBondStartJulian(["Start Step"])
E_CalculateAgeinDaysCurrentJulianBondStartJulian(["End Step"])
N_CalculateAgeinDaysCurrentJulianBondStartJulian_Node0{"The system performs age calculation"}:::decision
N_CalculateAgeinDaysCurrentJulianBondStartJulian_Node0_action["Calculate age in days by
subtracting bond start Julian date
from current Julian date"]:::main N_CalculateAgeinDaysCurrentJulianBondStartJulian_Node0 -- Yes --> N_CalculateAgeinDaysCurrentJulianBondStartJulian_Node0_action N_CalculateAgeinDaysCurrentJulianBondStartJulian_Node0_action --> E_CalculateAgeinDaysCurrentJulianBondStartJulian S_CalculateAgeinDaysCurrentJulianBondStartJulian --> N_CalculateAgeinDaysCurrentJulianBondStartJulian_Node0 N_CalculateAgeinDaysCurrentJulianBondStartJulian_Node0 -- No --> E_CalculateAgeinDaysCurrentJulianBondStartJulian
subtracting bond start Julian date
from current Julian date"]:::main N_CalculateAgeinDaysCurrentJulianBondStartJulian_Node0 -- Yes --> N_CalculateAgeinDaysCurrentJulianBondStartJulian_Node0_action N_CalculateAgeinDaysCurrentJulianBondStartJulian_Node0_action --> E_CalculateAgeinDaysCurrentJulianBondStartJulian S_CalculateAgeinDaysCurrentJulianBondStartJulian --> N_CalculateAgeinDaysCurrentJulianBondStartJulian_Node0 N_CalculateAgeinDaysCurrentJulianBondStartJulian_Node0 -- No --> E_CalculateAgeinDaysCurrentJulianBondStartJulian
File: GCX016.cbl
GIVEN:
Both bond start date and current date are converted to Julian format
WHEN:
The system performs age calculation
THEN:
Calculate age in days by subtracting bond start Julian date from current Julian date
β Consolidated Acceptance Criteria
- If destination indexing requirements → if age is greater than the destination indexing threshold, set destination index required flag; otherwise clear the destination index flag
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AgeThresholdforDestinationIndexing(["Start Step"])
E_AgeThresholdforDestinationIndexing(["End Step"])
N_AgeThresholdforDestinationIndexing_Node0{"The system evaluates destination
indexing requirements"}:::decision N_AgeThresholdforDestinationIndexing_Node0_action["If age is greater than the
destination indexing threshold, set
destination index required flag
otherwise clear the destination
index flag"]:::main N_AgeThresholdforDestinationIndexing_Node0 -- Yes --> N_AgeThresholdforDestinationIndexing_Node0_action N_AgeThresholdforDestinationIndexing_Node0_action --> E_AgeThresholdforDestinationIndexing S_AgeThresholdforDestinationIndexing --> N_AgeThresholdforDestinationIndexing_Node0 N_AgeThresholdforDestinationIndexing_Node0 -- No --> E_AgeThresholdforDestinationIndexing
indexing requirements"}:::decision N_AgeThresholdforDestinationIndexing_Node0_action["If age is greater than the
destination indexing threshold, set
destination index required flag
otherwise clear the destination
index flag"]:::main N_AgeThresholdforDestinationIndexing_Node0 -- Yes --> N_AgeThresholdforDestinationIndexing_Node0_action N_AgeThresholdforDestinationIndexing_Node0_action --> E_AgeThresholdforDestinationIndexing S_AgeThresholdforDestinationIndexing --> N_AgeThresholdforDestinationIndexing_Node0 N_AgeThresholdforDestinationIndexing_Node0 -- No --> E_AgeThresholdforDestinationIndexing
File: GCX016.cbl
GIVEN:
Cargo age in days has been calculated
WHEN:
The system evaluates destination indexing requirements
THEN:
If age is greater than the destination indexing threshold, set destination index required flag; otherwise clear the destination index flag
β Consolidated Acceptance Criteria
- The system processes destination indexing requirements → set the destination index required flag to indicate that destination indexing is needed
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetDestinationIndexRequiredFlag(["Start Step"])
E_SetDestinationIndexRequiredFlag(["End Step"])
N_SetDestinationIndexRequiredFlag_Node0{"The system processes destination
indexing requirements"}:::decision N_SetDestinationIndexRequiredFlag_Node0_action["Set the destination index required
flag to indicate that destination
indexing is needed"]:::main N_SetDestinationIndexRequiredFlag_Node0 -- Yes --> N_SetDestinationIndexRequiredFlag_Node0_action N_SetDestinationIndexRequiredFlag_Node0_action --> E_SetDestinationIndexRequiredFlag S_SetDestinationIndexRequiredFlag --> N_SetDestinationIndexRequiredFlag_Node0 N_SetDestinationIndexRequiredFlag_Node0 -- No --> E_SetDestinationIndexRequiredFlag
indexing requirements"}:::decision N_SetDestinationIndexRequiredFlag_Node0_action["Set the destination index required
flag to indicate that destination
indexing is needed"]:::main N_SetDestinationIndexRequiredFlag_Node0 -- Yes --> N_SetDestinationIndexRequiredFlag_Node0_action N_SetDestinationIndexRequiredFlag_Node0_action --> E_SetDestinationIndexRequiredFlag S_SetDestinationIndexRequiredFlag --> N_SetDestinationIndexRequiredFlag_Node0 N_SetDestinationIndexRequiredFlag_Node0 -- No --> E_SetDestinationIndexRequiredFlag
File: GCX016.cbl
GIVEN:
Cargo age exceeds the destination indexing threshold
WHEN:
The system processes destination indexing requirements
THEN:
Set the destination index required flag to indicate that destination indexing is needed
β Consolidated Acceptance Criteria
- The system processes destination indexing requirements → clear the destination index flag to indicate that destination indexing is not required
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ClearDestinationIndexFlag(["Start Step"])
E_ClearDestinationIndexFlag(["End Step"])
N_ClearDestinationIndexFlag_Node0{"The system processes destination
indexing requirements"}:::decision N_ClearDestinationIndexFlag_Node0_action["Clear the destination index flag to
indicate that destination indexing
is not required"]:::main N_ClearDestinationIndexFlag_Node0 -- Yes --> N_ClearDestinationIndexFlag_Node0_action N_ClearDestinationIndexFlag_Node0_action --> E_ClearDestinationIndexFlag S_ClearDestinationIndexFlag --> N_ClearDestinationIndexFlag_Node0 N_ClearDestinationIndexFlag_Node0 -- No --> E_ClearDestinationIndexFlag
indexing requirements"}:::decision N_ClearDestinationIndexFlag_Node0_action["Clear the destination index flag to
indicate that destination indexing
is not required"]:::main N_ClearDestinationIndexFlag_Node0 -- Yes --> N_ClearDestinationIndexFlag_Node0_action N_ClearDestinationIndexFlag_Node0_action --> E_ClearDestinationIndexFlag S_ClearDestinationIndexFlag --> N_ClearDestinationIndexFlag_Node0 N_ClearDestinationIndexFlag_Node0 -- No --> E_ClearDestinationIndexFlag
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
Cargo age does not exceed the destination indexing threshold
WHEN:
The system processes destination indexing requirements
THEN:
Clear the destination index flag to indicate that destination indexing is not required
β Consolidated Acceptance Criteria
- The system completes age calculation processing → update the cargo record with the calculated age information and destination index flag status
- The cargo record needs to be updated with age information → the cargo record is updated with the calculated age value
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UpdateCargoRecordwithAgeInformation(["Start Step"])
E_UpdateCargoRecordwithAgeInformation(["End Step"])
N_UpdateCargoRecordwithAgeInformation_Node0{"The system completes age
calculation processing"}:::decision N_UpdateCargoRecordwithAgeInformation_Node0_action["Update the cargo record with the
calculated age information and
destination index flag status"]:::main N_UpdateCargoRecordwithAgeInformation_Node0 -- Yes --> N_UpdateCargoRecordwithAgeInformation_Node0_action N_UpdateCargoRecordwithAgeInformation_Node0_action --> E_UpdateCargoRecordwithAgeInformation S_UpdateCargoRecordwithAgeInformation --> N_UpdateCargoRecordwithAgeInformation_Node0 N_UpdateCargoRecordwithAgeInformation_Node1{"The cargo record needs to be
updated with age information"}:::decision N_UpdateCargoRecordwithAgeInformation_Node1_action["The cargo record is updated with
the calculated age value"]:::main N_UpdateCargoRecordwithAgeInformation_Node1 -- Yes --> N_UpdateCargoRecordwithAgeInformation_Node1_action N_UpdateCargoRecordwithAgeInformation_Node1_action --> E_UpdateCargoRecordwithAgeInformation N_UpdateCargoRecordwithAgeInformation_Node0 -- No --> N_UpdateCargoRecordwithAgeInformation_Node1 N_UpdateCargoRecordwithAgeInformation_Node1 -- No --> E_UpdateCargoRecordwithAgeInformation
calculation processing"}:::decision N_UpdateCargoRecordwithAgeInformation_Node0_action["Update the cargo record with the
calculated age information and
destination index flag status"]:::main N_UpdateCargoRecordwithAgeInformation_Node0 -- Yes --> N_UpdateCargoRecordwithAgeInformation_Node0_action N_UpdateCargoRecordwithAgeInformation_Node0_action --> E_UpdateCargoRecordwithAgeInformation S_UpdateCargoRecordwithAgeInformation --> N_UpdateCargoRecordwithAgeInformation_Node0 N_UpdateCargoRecordwithAgeInformation_Node1{"The cargo record needs to be
updated with age information"}:::decision N_UpdateCargoRecordwithAgeInformation_Node1_action["The cargo record is updated with
the calculated age value"]:::main N_UpdateCargoRecordwithAgeInformation_Node1 -- Yes --> N_UpdateCargoRecordwithAgeInformation_Node1_action N_UpdateCargoRecordwithAgeInformation_Node1_action --> E_UpdateCargoRecordwithAgeInformation N_UpdateCargoRecordwithAgeInformation_Node0 -- No --> N_UpdateCargoRecordwithAgeInformation_Node1 N_UpdateCargoRecordwithAgeInformation_Node1 -- No --> E_UpdateCargoRecordwithAgeInformation
File: GCX016.cbl
GIVEN:
Cargo age has been calculated and destination index requirements determined
WHEN:
The system completes age calculation processing
THEN:
- Update the cargo record with the calculated age information
- Destination index flag status
File: GCX016.cbl
GIVEN:
Cargo age has been calculated and validated
WHEN:
The cargo record needs to be updated with age information
THEN:
The cargo record is updated with the calculated age value
β Consolidated Acceptance Criteria
- The system checks if the disposition code has quantity action requirements → the system should proceed to quantity management if action is required, otherwise skip quantity processing
- If if the disposition code has an associated quantity action → the system should proceed to quantity processing if action exists, otherwise skip quantity calculations
- The system checks if the disposition code has an associated quantity action in the DC table → the system determines whether quantity processing is required and proceeds accordingly
- If if the disposition code has quantity action requirements → the system should proceed with quantity processing if action exists, otherwise skip quantity operations
- The system checks if the disposition code has quantity action defined → if quantity action exists, proceed with quantity calculation, otherwise skip quantity processing
- The system checks if the disposition code has quantity action requirements → the system determines whether to proceed with quantity action formatting or skip quantity processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_DispositionCodeHasQuantityAction(["Start Step"])
E_DispositionCodeHasQuantityAction(["End Step"])
N_DispositionCodeHasQuantityAction_Node0{"The system checks if the
disposition code has quantity action
requirements"}:::decision N_DispositionCodeHasQuantityAction_Node0_action["The system should proceed to
quantity management if action is
required, otherwise skip quantity
processing"]:::main N_DispositionCodeHasQuantityAction_Node0 -- Yes --> N_DispositionCodeHasQuantityAction_Node0_action N_DispositionCodeHasQuantityAction_Node0_action --> E_DispositionCodeHasQuantityAction S_DispositionCodeHasQuantityAction --> N_DispositionCodeHasQuantityAction_Node0 N_DispositionCodeHasQuantityAction_Node1{"The system evaluates if the
disposition code has an associated
quantity action"}:::decision N_DispositionCodeHasQuantityAction_Node1_action["The system should proceed to
quantity processing if action
exists, otherwise skip quantity
calculations"]:::main N_DispositionCodeHasQuantityAction_Node1 -- Yes --> N_DispositionCodeHasQuantityAction_Node1_action N_DispositionCodeHasQuantityAction_Node1_action --> E_DispositionCodeHasQuantityAction N_DispositionCodeHasQuantityAction_Node0 -- No --> N_DispositionCodeHasQuantityAction_Node1 N_DispositionCodeHasQuantityAction_Node2{"The system checks if the
disposition code has an associated
quantity action in the DC table"}:::decision N_DispositionCodeHasQuantityAction_Node2_action["The system determines whether
quantity processing is required and
proceeds accordingly"]:::main N_DispositionCodeHasQuantityAction_Node2 -- Yes --> N_DispositionCodeHasQuantityAction_Node2_action N_DispositionCodeHasQuantityAction_Node2_action --> E_DispositionCodeHasQuantityAction N_DispositionCodeHasQuantityAction_Node1 -- No --> N_DispositionCodeHasQuantityAction_Node2 N_DispositionCodeHasQuantityAction_Node3{"The system evaluates if the
disposition code has quantity action
requirements"}:::decision N_DispositionCodeHasQuantityAction_Node3_action["The system should proceed with
quantity processing if action
exists, otherwise skip quantity
operations"]:::main N_DispositionCodeHasQuantityAction_Node3 -- Yes --> N_DispositionCodeHasQuantityAction_Node3_action N_DispositionCodeHasQuantityAction_Node3_action --> E_DispositionCodeHasQuantityAction N_DispositionCodeHasQuantityAction_Node2 -- No --> N_DispositionCodeHasQuantityAction_Node3 N_DispositionCodeHasQuantityAction_Node4{"The system checks if the
disposition code has quantity action
defined"}:::decision N_DispositionCodeHasQuantityAction_Node4_action["If quantity action exists, proceed
with quantity calculation, otherwise
skip quantity processing"]:::main N_DispositionCodeHasQuantityAction_Node4 -- Yes --> N_DispositionCodeHasQuantityAction_Node4_action N_DispositionCodeHasQuantityAction_Node4_action --> E_DispositionCodeHasQuantityAction N_DispositionCodeHasQuantityAction_Node3 -- No --> N_DispositionCodeHasQuantityAction_Node4 N_DispositionCodeHasQuantityAction_Node5{"The system checks if the
disposition code has quantity action
requirements"}:::decision N_DispositionCodeHasQuantityAction_Node5_action["The system determines whether to
proceed with quantity action
formatting or skip quantity
processing"]:::main N_DispositionCodeHasQuantityAction_Node5 -- Yes --> N_DispositionCodeHasQuantityAction_Node5_action N_DispositionCodeHasQuantityAction_Node5_action --> E_DispositionCodeHasQuantityAction N_DispositionCodeHasQuantityAction_Node4 -- No --> N_DispositionCodeHasQuantityAction_Node5 N_DispositionCodeHasQuantityAction_Node5 -- No --> E_DispositionCodeHasQuantityAction
disposition code has quantity action
requirements"}:::decision N_DispositionCodeHasQuantityAction_Node0_action["The system should proceed to
quantity management if action is
required, otherwise skip quantity
processing"]:::main N_DispositionCodeHasQuantityAction_Node0 -- Yes --> N_DispositionCodeHasQuantityAction_Node0_action N_DispositionCodeHasQuantityAction_Node0_action --> E_DispositionCodeHasQuantityAction S_DispositionCodeHasQuantityAction --> N_DispositionCodeHasQuantityAction_Node0 N_DispositionCodeHasQuantityAction_Node1{"The system evaluates if the
disposition code has an associated
quantity action"}:::decision N_DispositionCodeHasQuantityAction_Node1_action["The system should proceed to
quantity processing if action
exists, otherwise skip quantity
calculations"]:::main N_DispositionCodeHasQuantityAction_Node1 -- Yes --> N_DispositionCodeHasQuantityAction_Node1_action N_DispositionCodeHasQuantityAction_Node1_action --> E_DispositionCodeHasQuantityAction N_DispositionCodeHasQuantityAction_Node0 -- No --> N_DispositionCodeHasQuantityAction_Node1 N_DispositionCodeHasQuantityAction_Node2{"The system checks if the
disposition code has an associated
quantity action in the DC table"}:::decision N_DispositionCodeHasQuantityAction_Node2_action["The system determines whether
quantity processing is required and
proceeds accordingly"]:::main N_DispositionCodeHasQuantityAction_Node2 -- Yes --> N_DispositionCodeHasQuantityAction_Node2_action N_DispositionCodeHasQuantityAction_Node2_action --> E_DispositionCodeHasQuantityAction N_DispositionCodeHasQuantityAction_Node1 -- No --> N_DispositionCodeHasQuantityAction_Node2 N_DispositionCodeHasQuantityAction_Node3{"The system evaluates if the
disposition code has quantity action
requirements"}:::decision N_DispositionCodeHasQuantityAction_Node3_action["The system should proceed with
quantity processing if action
exists, otherwise skip quantity
operations"]:::main N_DispositionCodeHasQuantityAction_Node3 -- Yes --> N_DispositionCodeHasQuantityAction_Node3_action N_DispositionCodeHasQuantityAction_Node3_action --> E_DispositionCodeHasQuantityAction N_DispositionCodeHasQuantityAction_Node2 -- No --> N_DispositionCodeHasQuantityAction_Node3 N_DispositionCodeHasQuantityAction_Node4{"The system checks if the
disposition code has quantity action
defined"}:::decision N_DispositionCodeHasQuantityAction_Node4_action["If quantity action exists, proceed
with quantity calculation, otherwise
skip quantity processing"]:::main N_DispositionCodeHasQuantityAction_Node4 -- Yes --> N_DispositionCodeHasQuantityAction_Node4_action N_DispositionCodeHasQuantityAction_Node4_action --> E_DispositionCodeHasQuantityAction N_DispositionCodeHasQuantityAction_Node3 -- No --> N_DispositionCodeHasQuantityAction_Node4 N_DispositionCodeHasQuantityAction_Node5{"The system checks if the
disposition code has quantity action
requirements"}:::decision N_DispositionCodeHasQuantityAction_Node5_action["The system determines whether to
proceed with quantity action
formatting or skip quantity
processing"]:::main N_DispositionCodeHasQuantityAction_Node5 -- Yes --> N_DispositionCodeHasQuantityAction_Node5_action N_DispositionCodeHasQuantityAction_Node5_action --> E_DispositionCodeHasQuantityAction N_DispositionCodeHasQuantityAction_Node4 -- No --> N_DispositionCodeHasQuantityAction_Node5 N_DispositionCodeHasQuantityAction_Node5 -- No --> E_DispositionCodeHasQuantityAction
File: GCX016.cbl
GIVEN:
A disposition code is being processed for cargo
WHEN:
The system checks if the disposition code has quantity action requirements
THEN:
The system should proceed to quantity management if action is required, otherwise skip quantity processing
File: GCX016.cbl
GIVEN:
A disposition code is being processed for cargo release
WHEN:
The system evaluates if the disposition code has an associated quantity action
THEN:
The system should proceed to quantity processing if action exists, otherwise skip quantity calculations
File: GCX016.cbl
GIVEN:
A disposition code is received in the X4 segment
WHEN:
The system checks if the disposition code has an associated quantity action in the DC table
THEN:
- The system determines whether quantity processing is required
- Proceeds accordingly
File: GCX016.cbl
GIVEN:
A disposition code is being processed for cargo release
WHEN:
The system evaluates if the disposition code has quantity action requirements
THEN:
The system should proceed with quantity processing if action exists, otherwise skip quantity operations
File: GCX016.cbl
GIVEN:
A disposition code is being processed for cargo release
WHEN:
The system checks if the disposition code has quantity action defined
THEN:
If quantity action exists, proceed with quantity calculation, otherwise skip quantity processing
File: GCX016.cbl
GIVEN:
A disposition code is being processed for quantity action message formatting
WHEN:
The system checks if the disposition code has quantity action requirements
THEN:
The system determines whether to proceed with quantity action formatting or skip quantity processing
β Consolidated Acceptance Criteria
- The system needs to access current quantity information → the system should retrieve both total cargo quantity and current released quantity from the cargo record
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GetCurrentCargoQuantities(["Start Step"])
E_GetCurrentCargoQuantities(["End Step"])
N_GetCurrentCargoQuantities_Node0{"The system needs to access current
quantity information"}:::decision N_GetCurrentCargoQuantities_Node0_action["The system should retrieve both
total cargo quantity and current
released quantity from the cargo
record"]:::main N_GetCurrentCargoQuantities_Node0 -- Yes --> N_GetCurrentCargoQuantities_Node0_action N_GetCurrentCargoQuantities_Node0_action --> E_GetCurrentCargoQuantities S_GetCurrentCargoQuantities --> N_GetCurrentCargoQuantities_Node0 N_GetCurrentCargoQuantities_Node0 -- No --> E_GetCurrentCargoQuantities
quantity information"}:::decision N_GetCurrentCargoQuantities_Node0_action["The system should retrieve both
total cargo quantity and current
released quantity from the cargo
record"]:::main N_GetCurrentCargoQuantities_Node0 -- Yes --> N_GetCurrentCargoQuantities_Node0_action N_GetCurrentCargoQuantities_Node0_action --> E_GetCurrentCargoQuantities S_GetCurrentCargoQuantities --> N_GetCurrentCargoQuantities_Node0 N_GetCurrentCargoQuantities_Node0 -- No --> E_GetCurrentCargoQuantities
File: GCX016.cbl
GIVEN:
A cargo record requires quantity processing
WHEN:
The system needs to access current quantity information
THEN:
- The system should retrieve both total cargo quantity
- Current released quantity from the cargo record
β Consolidated Acceptance Criteria
- The system processes the disposition code → the system should extract and validate the quantity value from the disposition code
- The system needs to perform quantity calculations → the system extracts the quantity value from the disposition code message
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GetDispositionCodeQuantity(["Start Step"])
E_GetDispositionCodeQuantity(["End Step"])
N_GetDispositionCodeQuantity_Node0{"The system processes the
disposition code"}:::decision N_GetDispositionCodeQuantity_Node0_action["The system should extract and
validate the quantity value from the
disposition code"]:::main N_GetDispositionCodeQuantity_Node0 -- Yes --> N_GetDispositionCodeQuantity_Node0_action N_GetDispositionCodeQuantity_Node0_action --> E_GetDispositionCodeQuantity S_GetDispositionCodeQuantity --> N_GetDispositionCodeQuantity_Node0 N_GetDispositionCodeQuantity_Node1{"The system needs to perform
quantity calculations"}:::decision N_GetDispositionCodeQuantity_Node1_action["The system extracts the quantity
value from the disposition code
message"]:::main N_GetDispositionCodeQuantity_Node1 -- Yes --> N_GetDispositionCodeQuantity_Node1_action N_GetDispositionCodeQuantity_Node1_action --> E_GetDispositionCodeQuantity N_GetDispositionCodeQuantity_Node0 -- No --> N_GetDispositionCodeQuantity_Node1 N_GetDispositionCodeQuantity_Node1 -- No --> E_GetDispositionCodeQuantity
disposition code"}:::decision N_GetDispositionCodeQuantity_Node0_action["The system should extract and
validate the quantity value from the
disposition code"]:::main N_GetDispositionCodeQuantity_Node0 -- Yes --> N_GetDispositionCodeQuantity_Node0_action N_GetDispositionCodeQuantity_Node0_action --> E_GetDispositionCodeQuantity S_GetDispositionCodeQuantity --> N_GetDispositionCodeQuantity_Node0 N_GetDispositionCodeQuantity_Node1{"The system needs to perform
quantity calculations"}:::decision N_GetDispositionCodeQuantity_Node1_action["The system extracts the quantity
value from the disposition code
message"]:::main N_GetDispositionCodeQuantity_Node1 -- Yes --> N_GetDispositionCodeQuantity_Node1_action N_GetDispositionCodeQuantity_Node1_action --> E_GetDispositionCodeQuantity N_GetDispositionCodeQuantity_Node0 -- No --> N_GetDispositionCodeQuantity_Node1 N_GetDispositionCodeQuantity_Node1 -- No --> E_GetDispositionCodeQuantity
File: GCX016.cbl
GIVEN:
A disposition code contains quantity information
WHEN:
The system processes the disposition code
THEN:
- The system should extract
- Validate the quantity value from the disposition code
File: GCX016.cbl
GIVEN:
A disposition code with quantity action instructions
WHEN:
The system needs to perform quantity calculations
THEN:
The system extracts the quantity value from the disposition code message
β Consolidated Acceptance Criteria
- If the disposition code action type → the system should determine if the action is ADD_QUANTITY or SUBTRACT_QUANTITY based on the disposition code type
- If the type of quantity action required → the system should identify whether to add or subtract the quantity from current released amount
- If the quantity action type → the system should route to add operation for increase actions or subtract operation for decrease actions
- If the quantity action type → the system determines if the action is ADD_QUANTITY or SUBTRACT_QUANTITY
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_QuantityActionType(["Start Step"])
E_QuantityActionType(["End Step"])
N_QuantityActionType_Node0{"The system evaluates the
disposition code action type"}:::decision N_QuantityActionType_Node0_action["The system should determine if the
action is ADDQUANTITY or
SUBTRACTQUANTITY based on the
disposition code type"]:::main N_QuantityActionType_Node0 -- Yes --> N_QuantityActionType_Node0_action N_QuantityActionType_Node0_action --> E_QuantityActionType S_QuantityActionType --> N_QuantityActionType_Node0 N_QuantityActionType_Node1{"The system evaluates the type of
quantity action required"}:::decision N_QuantityActionType_Node1_action["The system should identify whether
to add or subtract the quantity from
current released amount"]:::main N_QuantityActionType_Node1 -- Yes --> N_QuantityActionType_Node1_action N_QuantityActionType_Node1_action --> E_QuantityActionType N_QuantityActionType_Node0 -- No --> N_QuantityActionType_Node1 N_QuantityActionType_Node2{"The system evaluates the quantity
action type"}:::decision N_QuantityActionType_Node2_action["The system should route to add
operation for increase actions or
subtract operation for decrease
actions"]:::main N_QuantityActionType_Node2 -- Yes --> N_QuantityActionType_Node2_action N_QuantityActionType_Node2_action --> E_QuantityActionType N_QuantityActionType_Node1 -- No --> N_QuantityActionType_Node2 N_QuantityActionType_Node3{"The system evaluates the quantity
action type"}:::decision N_QuantityActionType_Node3_action["The system determines if the action
is ADDQUANTITY or SUBTRACTQUANTITY"]:::main N_QuantityActionType_Node3 -- Yes --> N_QuantityActionType_Node3_action N_QuantityActionType_Node3_action --> E_QuantityActionType N_QuantityActionType_Node2 -- No --> N_QuantityActionType_Node3 N_QuantityActionType_Node3 -- No --> E_QuantityActionType
disposition code action type"}:::decision N_QuantityActionType_Node0_action["The system should determine if the
action is ADDQUANTITY or
SUBTRACTQUANTITY based on the
disposition code type"]:::main N_QuantityActionType_Node0 -- Yes --> N_QuantityActionType_Node0_action N_QuantityActionType_Node0_action --> E_QuantityActionType S_QuantityActionType --> N_QuantityActionType_Node0 N_QuantityActionType_Node1{"The system evaluates the type of
quantity action required"}:::decision N_QuantityActionType_Node1_action["The system should identify whether
to add or subtract the quantity from
current released amount"]:::main N_QuantityActionType_Node1 -- Yes --> N_QuantityActionType_Node1_action N_QuantityActionType_Node1_action --> E_QuantityActionType N_QuantityActionType_Node0 -- No --> N_QuantityActionType_Node1 N_QuantityActionType_Node2{"The system evaluates the quantity
action type"}:::decision N_QuantityActionType_Node2_action["The system should route to add
operation for increase actions or
subtract operation for decrease
actions"]:::main N_QuantityActionType_Node2 -- Yes --> N_QuantityActionType_Node2_action N_QuantityActionType_Node2_action --> E_QuantityActionType N_QuantityActionType_Node1 -- No --> N_QuantityActionType_Node2 N_QuantityActionType_Node3{"The system evaluates the quantity
action type"}:::decision N_QuantityActionType_Node3_action["The system determines if the action
is ADDQUANTITY or SUBTRACTQUANTITY"]:::main N_QuantityActionType_Node3 -- Yes --> N_QuantityActionType_Node3_action N_QuantityActionType_Node3_action --> E_QuantityActionType N_QuantityActionType_Node2 -- No --> N_QuantityActionType_Node3 N_QuantityActionType_Node3 -- No --> E_QuantityActionType
File: GCX016.cbl
GIVEN:
A disposition code has been validated to contain quantity action
WHEN:
The system evaluates the disposition code action type
THEN:
The system should determine if the action is ADD_QUANTITY or SUBTRACT_QUANTITY based on the disposition code type
File: GCX016.cbl
GIVEN:
A disposition code with quantity action is being processed
WHEN:
The system evaluates the type of quantity action required
THEN:
The system should identify whether to add or subtract the quantity from current released amount
File: GCX016.cbl
GIVEN:
Disposition code details have been retrieved from DC table
WHEN:
The system evaluates the quantity action type
THEN:
The system should route to add operation for increase actions or subtract operation for decrease actions
File: GCX016.cbl
GIVEN:
A disposition code with quantity action and extracted quantity value
WHEN:
The system evaluates the quantity action type
THEN:
The system determines if the action is ADD_QUANTITY or SUBTRACT_QUANTITY
β Consolidated Acceptance Criteria
- The system validates the resulting released quantity → the system should check if the released quantity is negative and flag invalid results
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ReleasedQuantityValid(["Start Step"])
E_ReleasedQuantityValid(["End Step"])
N_ReleasedQuantityValid_Node0{"The system validates the resulting
released quantity"}:::decision N_ReleasedQuantityValid_Node0_action["The system should check if the
released quantity is negative and
flag invalid results"]:::main N_ReleasedQuantityValid_Node0 -- Yes --> N_ReleasedQuantityValid_Node0_action N_ReleasedQuantityValid_Node0_action --> E_ReleasedQuantityValid S_ReleasedQuantityValid --> N_ReleasedQuantityValid_Node0 N_ReleasedQuantityValid_Node0 -- No --> E_ReleasedQuantityValid
released quantity"}:::decision N_ReleasedQuantityValid_Node0_action["The system should check if the
released quantity is negative and
flag invalid results"]:::main N_ReleasedQuantityValid_Node0 -- Yes --> N_ReleasedQuantityValid_Node0_action N_ReleasedQuantityValid_Node0_action --> E_ReleasedQuantityValid S_ReleasedQuantityValid --> N_ReleasedQuantityValid_Node0 N_ReleasedQuantityValid_Node0 -- No --> E_ReleasedQuantityValid
File: GCX016.cbl
GIVEN:
A quantity operation has been performed on released quantity
WHEN:
The system validates the resulting released quantity
THEN:
- The system should check if the released quantity is negative
- Flag invalid results
β Consolidated Acceptance Criteria
- The system updates the cargo record → the system should store the new released quantity in the cargo record
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UpdateCargoReleasedQuantity(["Start Step"])
E_UpdateCargoReleasedQuantity(["End Step"])
N_UpdateCargoReleasedQuantity_Node0{"The system updates the cargo record"}:::decision
N_UpdateCargoReleasedQuantity_Node0_action["The system should store the new
released quantity in the cargo
record"]:::main N_UpdateCargoReleasedQuantity_Node0 -- Yes --> N_UpdateCargoReleasedQuantity_Node0_action N_UpdateCargoReleasedQuantity_Node0_action --> E_UpdateCargoReleasedQuantity S_UpdateCargoReleasedQuantity --> N_UpdateCargoReleasedQuantity_Node0 N_UpdateCargoReleasedQuantity_Node0 -- No --> E_UpdateCargoReleasedQuantity
released quantity in the cargo
record"]:::main N_UpdateCargoReleasedQuantity_Node0 -- Yes --> N_UpdateCargoReleasedQuantity_Node0_action N_UpdateCargoReleasedQuantity_Node0_action --> E_UpdateCargoReleasedQuantity S_UpdateCargoReleasedQuantity --> N_UpdateCargoReleasedQuantity_Node0 N_UpdateCargoReleasedQuantity_Node0 -- No --> E_UpdateCargoReleasedQuantity
File: GCX016.cbl
GIVEN:
A valid released quantity has been calculated
WHEN:
The system updates the cargo record
THEN:
The system should store the new released quantity in the cargo record
β Consolidated Acceptance Criteria
- If release completion status → the system should determine if released quantity equals or exceeds total quantity for full release status
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ReleasedTotalQuantity(["Start Step"])
E_ReleasedTotalQuantity(["End Step"])
N_ReleasedTotalQuantity_Node0{"The system evaluates release
completion status"}:::decision N_ReleasedTotalQuantity_Node0_action["The system should determine if
released quantity equals or exceeds
total quantity for full release
status"]:::main N_ReleasedTotalQuantity_Node0 -- Yes --> N_ReleasedTotalQuantity_Node0_action N_ReleasedTotalQuantity_Node0_action --> E_ReleasedTotalQuantity S_ReleasedTotalQuantity --> N_ReleasedTotalQuantity_Node0 N_ReleasedTotalQuantity_Node0 -- No --> E_ReleasedTotalQuantity
completion status"}:::decision N_ReleasedTotalQuantity_Node0_action["The system should determine if
released quantity equals or exceeds
total quantity for full release
status"]:::main N_ReleasedTotalQuantity_Node0 -- Yes --> N_ReleasedTotalQuantity_Node0_action N_ReleasedTotalQuantity_Node0_action --> E_ReleasedTotalQuantity S_ReleasedTotalQuantity --> N_ReleasedTotalQuantity_Node0 N_ReleasedTotalQuantity_Node0 -- No --> E_ReleasedTotalQuantity
File: GCX016.cbl
GIVEN:
Cargo has updated released quantity and known total quantity
WHEN:
The system evaluates release completion status
THEN:
The system should determine if released quantity equals or exceeds total quantity for full release status
β Consolidated Acceptance Criteria
- The system assigns release status → the system should mark the cargo as fully released and update appropriate status flags
- The system finalizes the release process → the system marks the cargo as fully released
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MarkCargoasFullyReleased(["Start Step"])
E_MarkCargoasFullyReleased(["End Step"])
N_MarkCargoasFullyReleased_Node0{"The system assigns release status"}:::decision
N_MarkCargoasFullyReleased_Node0_action["The system should mark the cargo as
fully released and update
appropriate status flags"]:::main N_MarkCargoasFullyReleased_Node0 -- Yes --> N_MarkCargoasFullyReleased_Node0_action N_MarkCargoasFullyReleased_Node0_action --> E_MarkCargoasFullyReleased S_MarkCargoasFullyReleased --> N_MarkCargoasFullyReleased_Node0 N_MarkCargoasFullyReleased_Node1{"The system finalizes the release
process"}:::decision N_MarkCargoasFullyReleased_Node1_action["The system marks the cargo as fully
released"]:::main N_MarkCargoasFullyReleased_Node1 -- Yes --> N_MarkCargoasFullyReleased_Node1_action N_MarkCargoasFullyReleased_Node1_action --> E_MarkCargoasFullyReleased N_MarkCargoasFullyReleased_Node0 -- No --> N_MarkCargoasFullyReleased_Node1 N_MarkCargoasFullyReleased_Node1 -- No --> E_MarkCargoasFullyReleased
fully released and update
appropriate status flags"]:::main N_MarkCargoasFullyReleased_Node0 -- Yes --> N_MarkCargoasFullyReleased_Node0_action N_MarkCargoasFullyReleased_Node0_action --> E_MarkCargoasFullyReleased S_MarkCargoasFullyReleased --> N_MarkCargoasFullyReleased_Node0 N_MarkCargoasFullyReleased_Node1{"The system finalizes the release
process"}:::decision N_MarkCargoasFullyReleased_Node1_action["The system marks the cargo as fully
released"]:::main N_MarkCargoasFullyReleased_Node1 -- Yes --> N_MarkCargoasFullyReleased_Node1_action N_MarkCargoasFullyReleased_Node1_action --> E_MarkCargoasFullyReleased N_MarkCargoasFullyReleased_Node0 -- No --> N_MarkCargoasFullyReleased_Node1 N_MarkCargoasFullyReleased_Node1 -- No --> E_MarkCargoasFullyReleased
File: GCX016.cbl
GIVEN:
Cargo released quantity equals or exceeds total quantity
WHEN:
The system assigns release status
THEN:
- The system should mark the cargo as fully released
- Update appropriate status flags
File: GCX016.cbl
GIVEN:
All release processing steps are completed
WHEN:
The system finalizes the release process
THEN:
The system marks the cargo as fully released
β Consolidated Acceptance Criteria
- The system assigns release status → the system should mark the cargo as partially released and maintain hold status for remaining quantity
- The system finalizes partial release processing → the system marks the cargo record with partial release status indicators and maintains tracking of unreleased portions
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MarkCargoasPartiallyReleased(["Start Step"])
E_MarkCargoasPartiallyReleased(["End Step"])
N_MarkCargoasPartiallyReleased_Node0{"The system assigns release status"}:::decision
N_MarkCargoasPartiallyReleased_Node0_action["The system should mark the cargo as
partially released and maintain hold
status for remaining quantity"]:::main N_MarkCargoasPartiallyReleased_Node0 -- Yes --> N_MarkCargoasPartiallyReleased_Node0_action N_MarkCargoasPartiallyReleased_Node0_action --> E_MarkCargoasPartiallyReleased S_MarkCargoasPartiallyReleased --> N_MarkCargoasPartiallyReleased_Node0 N_MarkCargoasPartiallyReleased_Node1{"The system finalizes partial
release processing"}:::decision N_MarkCargoasPartiallyReleased_Node1_action["The system marks the cargo record
with partial release status
indicators and maintains tracking of
unreleased portions"]:::main N_MarkCargoasPartiallyReleased_Node1 -- Yes --> N_MarkCargoasPartiallyReleased_Node1_action N_MarkCargoasPartiallyReleased_Node1_action --> E_MarkCargoasPartiallyReleased N_MarkCargoasPartiallyReleased_Node0 -- No --> N_MarkCargoasPartiallyReleased_Node1 N_MarkCargoasPartiallyReleased_Node1 -- No --> E_MarkCargoasPartiallyReleased
partially released and maintain hold
status for remaining quantity"]:::main N_MarkCargoasPartiallyReleased_Node0 -- Yes --> N_MarkCargoasPartiallyReleased_Node0_action N_MarkCargoasPartiallyReleased_Node0_action --> E_MarkCargoasPartiallyReleased S_MarkCargoasPartiallyReleased --> N_MarkCargoasPartiallyReleased_Node0 N_MarkCargoasPartiallyReleased_Node1{"The system finalizes partial
release processing"}:::decision N_MarkCargoasPartiallyReleased_Node1_action["The system marks the cargo record
with partial release status
indicators and maintains tracking of
unreleased portions"]:::main N_MarkCargoasPartiallyReleased_Node1 -- Yes --> N_MarkCargoasPartiallyReleased_Node1_action N_MarkCargoasPartiallyReleased_Node1_action --> E_MarkCargoasPartiallyReleased N_MarkCargoasPartiallyReleased_Node0 -- No --> N_MarkCargoasPartiallyReleased_Node1 N_MarkCargoasPartiallyReleased_Node1 -- No --> E_MarkCargoasPartiallyReleased
File: GCX016.cbl
GIVEN:
Cargo released quantity is less than total quantity
WHEN:
The system assigns release status
THEN:
- The system should mark the cargo as partially released
- Maintain hold status for remaining quantity
File: GCX016.cbl
GIVEN:
A cargo record that has been processed for partial release with remaining held quantity preserved
WHEN:
The system finalizes partial release processing
THEN:
- The system marks the cargo record with partial release status indicators
- Maintains tracking of unreleased portions
β Consolidated Acceptance Criteria
- The system calculates remaining held quantity → the system should compute held quantity as total quantity minus released quantity
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CalculateRemainingHeldQuantity(["Start Step"])
E_CalculateRemainingHeldQuantity(["End Step"])
N_CalculateRemainingHeldQuantity_Node0{"The system calculates remaining
held quantity"}:::decision N_CalculateRemainingHeldQuantity_Node0_action["The system should compute held
quantity as total quantity minus
released quantity"]:::main N_CalculateRemainingHeldQuantity_Node0 -- Yes --> N_CalculateRemainingHeldQuantity_Node0_action N_CalculateRemainingHeldQuantity_Node0_action --> E_CalculateRemainingHeldQuantity S_CalculateRemainingHeldQuantity --> N_CalculateRemainingHeldQuantity_Node0 N_CalculateRemainingHeldQuantity_Node0 -- No --> E_CalculateRemainingHeldQuantity
held quantity"}:::decision N_CalculateRemainingHeldQuantity_Node0_action["The system should compute held
quantity as total quantity minus
released quantity"]:::main N_CalculateRemainingHeldQuantity_Node0 -- Yes --> N_CalculateRemainingHeldQuantity_Node0_action N_CalculateRemainingHeldQuantity_Node0_action --> E_CalculateRemainingHeldQuantity S_CalculateRemainingHeldQuantity --> N_CalculateRemainingHeldQuantity_Node0 N_CalculateRemainingHeldQuantity_Node0 -- No --> E_CalculateRemainingHeldQuantity
File: GCX016.cbl
GIVEN:
Cargo has total quantity and released quantity values
WHEN:
The system calculates remaining held quantity
THEN:
The system should compute held quantity as total quantity minus released quantity
β Consolidated Acceptance Criteria
- The system updates cargo status → the system should set appropriate cargo status codes based on quantity relationships and release completion
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UpdateCargoStatusBasedonQuantities(["Start Step"])
E_UpdateCargoStatusBasedonQuantities(["End Step"])
N_UpdateCargoStatusBasedonQuantities_Node0{"The system updates cargo status"}:::decision
N_UpdateCargoStatusBasedonQuantities_Node0_action["The system should set appropriate
cargo status codes based on quantity
relationships and release completion"]:::main N_UpdateCargoStatusBasedonQuantities_Node0 -- Yes --> N_UpdateCargoStatusBasedonQuantities_Node0_action N_UpdateCargoStatusBasedonQuantities_Node0_action --> E_UpdateCargoStatusBasedonQuantities S_UpdateCargoStatusBasedonQuantities --> N_UpdateCargoStatusBasedonQuantities_Node0 N_UpdateCargoStatusBasedonQuantities_Node0 -- No --> E_UpdateCargoStatusBasedonQuantities
cargo status codes based on quantity
relationships and release completion"]:::main N_UpdateCargoStatusBasedonQuantities_Node0 -- Yes --> N_UpdateCargoStatusBasedonQuantities_Node0_action N_UpdateCargoStatusBasedonQuantities_Node0_action --> E_UpdateCargoStatusBasedonQuantities S_UpdateCargoStatusBasedonQuantities --> N_UpdateCargoStatusBasedonQuantities_Node0 N_UpdateCargoStatusBasedonQuantities_Node0 -- No --> E_UpdateCargoStatusBasedonQuantities
File: GCX016.cbl
GIVEN:
Cargo has calculated total, released, and held quantities
WHEN:
The system updates cargo status
THEN:
- The system should set appropriate cargo status codes based on quantity relationships
- Release completion
β Consolidated Acceptance Criteria
- The system compares cargo quantities with broker entry quantities → the system should identify mismatches between cargo quantities and broker declared quantities
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_QuantityMismatchwithBrokerEntry(["Start Step"])
E_QuantityMismatchwithBrokerEntry(["End Step"])
N_QuantityMismatchwithBrokerEntry_Node0{"The system compares cargo
quantities with broker entry
quantities"}:::decision N_QuantityMismatchwithBrokerEntry_Node0_action["The system should identify
mismatches between cargo quantities
and broker declared quantities"]:::main N_QuantityMismatchwithBrokerEntry_Node0 -- Yes --> N_QuantityMismatchwithBrokerEntry_Node0_action N_QuantityMismatchwithBrokerEntry_Node0_action --> E_QuantityMismatchwithBrokerEntry S_QuantityMismatchwithBrokerEntry --> N_QuantityMismatchwithBrokerEntry_Node0 N_QuantityMismatchwithBrokerEntry_Node0 -- No --> E_QuantityMismatchwithBrokerEntry
quantities with broker entry
quantities"}:::decision N_QuantityMismatchwithBrokerEntry_Node0_action["The system should identify
mismatches between cargo quantities
and broker declared quantities"]:::main N_QuantityMismatchwithBrokerEntry_Node0 -- Yes --> N_QuantityMismatchwithBrokerEntry_Node0_action N_QuantityMismatchwithBrokerEntry_Node0_action --> E_QuantityMismatchwithBrokerEntry S_QuantityMismatchwithBrokerEntry --> N_QuantityMismatchwithBrokerEntry_Node0 N_QuantityMismatchwithBrokerEntry_Node0 -- No --> E_QuantityMismatchwithBrokerEntry
File: GCX016.cbl
GIVEN:
Cargo has processed quantities and broker entry contains quantity information
WHEN:
The system compares cargo quantities with broker entry quantities
THEN:
- The system should identify mismatches between cargo quantities
- Broker declared quantities
β Consolidated Acceptance Criteria
- The system processes broker notifications → the system should generate and send a quantity mismatch notification to the appropriate broker
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GenerateBrokerNotificationforMismatch(["Start Step"])
E_GenerateBrokerNotificationforMismatch(["End Step"])
N_GenerateBrokerNotificationforMismatch_Node0{"The system processes broker
notifications"}:::decision N_GenerateBrokerNotificationforMismatch_Node0_action["The system should generate and send
a quantity mismatch notification to
the appropriate broker"]:::main N_GenerateBrokerNotificationforMismatch_Node0 -- Yes --> N_GenerateBrokerNotificationforMismatch_Node0_action N_GenerateBrokerNotificationforMismatch_Node0_action --> E_GenerateBrokerNotificationforMismatch S_GenerateBrokerNotificationforMismatch --> N_GenerateBrokerNotificationforMismatch_Node0 N_GenerateBrokerNotificationforMismatch_Node0 -- No --> E_GenerateBrokerNotificationforMismatch
notifications"}:::decision N_GenerateBrokerNotificationforMismatch_Node0_action["The system should generate and send
a quantity mismatch notification to
the appropriate broker"]:::main N_GenerateBrokerNotificationforMismatch_Node0 -- Yes --> N_GenerateBrokerNotificationforMismatch_Node0_action N_GenerateBrokerNotificationforMismatch_Node0_action --> E_GenerateBrokerNotificationforMismatch S_GenerateBrokerNotificationforMismatch --> N_GenerateBrokerNotificationforMismatch_Node0 N_GenerateBrokerNotificationforMismatch_Node0 -- No --> E_GenerateBrokerNotificationforMismatch
File: GCX016.cbl
GIVEN:
A quantity mismatch has been detected between cargo and broker entry
WHEN:
The system processes broker notifications
THEN:
- The system should generate
- Send a quantity mismatch notification to the appropriate broker
β Consolidated Acceptance Criteria
- The system completes quantity management operations → the system should log all quantity changes, status updates, and related transaction details for audit purposes
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogQuantityChanges(["Start Step"])
E_LogQuantityChanges(["End Step"])
N_LogQuantityChanges_Node0{"The system completes quantity
management operations"}:::decision N_LogQuantityChanges_Node0_action["The system should log all quantity
changes, status updates, and related
transaction details for audit
purposes"]:::main N_LogQuantityChanges_Node0 -- Yes --> N_LogQuantityChanges_Node0_action N_LogQuantityChanges_Node0_action --> E_LogQuantityChanges S_LogQuantityChanges --> N_LogQuantityChanges_Node0 N_LogQuantityChanges_Node0 -- No --> E_LogQuantityChanges
management operations"}:::decision N_LogQuantityChanges_Node0_action["The system should log all quantity
changes, status updates, and related
transaction details for audit
purposes"]:::main N_LogQuantityChanges_Node0 -- Yes --> N_LogQuantityChanges_Node0_action N_LogQuantityChanges_Node0_action --> E_LogQuantityChanges S_LogQuantityChanges --> N_LogQuantityChanges_Node0 N_LogQuantityChanges_Node0 -- No --> E_LogQuantityChanges
File: GCX016.cbl
GIVEN:
Quantity changes have been processed for cargo
WHEN:
The system completes quantity management operations
THEN:
The system should log all quantity changes, status updates, and related transaction details for audit purposes
β Consolidated Acceptance Criteria
- System compares broker entry quantity against manifest quantity → system identifies quantity mismatch and flags for broker notification
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CompareBrokerEntryQuantityvsManifestQuantity(["Start Step"])
E_CompareBrokerEntryQuantityvsManifestQuantity(["End Step"])
N_CompareBrokerEntryQuantityvsManifestQuantity_Node0{"System compares broker entry
quantity against manifest quantity"}:::decision N_CompareBrokerEntryQuantityvsManifestQuantity_Node0_action["System identifies quantity mismatch
and flags for broker notification"]:::main N_CompareBrokerEntryQuantityvsManifestQuantity_Node0 -- Yes --> N_CompareBrokerEntryQuantityvsManifestQuantity_Node0_action N_CompareBrokerEntryQuantityvsManifestQuantity_Node0_action --> E_CompareBrokerEntryQuantityvsManifestQuantity S_CompareBrokerEntryQuantityvsManifestQuantity --> N_CompareBrokerEntryQuantityvsManifestQuantity_Node0 N_CompareBrokerEntryQuantityvsManifestQuantity_Node0 -- No --> E_CompareBrokerEntryQuantityvsManifestQuantity
quantity against manifest quantity"}:::decision N_CompareBrokerEntryQuantityvsManifestQuantity_Node0_action["System identifies quantity mismatch
and flags for broker notification"]:::main N_CompareBrokerEntryQuantityvsManifestQuantity_Node0 -- Yes --> N_CompareBrokerEntryQuantityvsManifestQuantity_Node0_action N_CompareBrokerEntryQuantityvsManifestQuantity_Node0_action --> E_CompareBrokerEntryQuantityvsManifestQuantity S_CompareBrokerEntryQuantityvsManifestQuantity --> N_CompareBrokerEntryQuantityvsManifestQuantity_Node0 N_CompareBrokerEntryQuantityvsManifestQuantity_Node0 -- No --> E_CompareBrokerEntryQuantityvsManifestQuantity
File: GCX016.cbl
GIVEN:
Cargo processing is complete and broker entry quantities exist
WHEN:
System compares broker entry quantity against manifest quantity
THEN:
- System identifies quantity mismatch
- Flags for broker notification
β Consolidated Acceptance Criteria
- System needs to send broker notification → system retrieves broker information from GCSTBRT broker tables including contact details and notification configuration
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RetrieveBrokerInformationfromBKB1Tables(["Start Step"])
E_RetrieveBrokerInformationfromBKB1Tables(["End Step"])
N_RetrieveBrokerInformationfromBKB1Tables_Node0{"System needs to send broker
notification"}:::decision N_RetrieveBrokerInformationfromBKB1Tables_Node0_action["System retrieves broker information
from GCSTBRT broker tables including
contact details and notification
configuration"]:::main N_RetrieveBrokerInformationfromBKB1Tables_Node0 -- Yes --> N_RetrieveBrokerInformationfromBKB1Tables_Node0_action N_RetrieveBrokerInformationfromBKB1Tables_Node0_action --> E_RetrieveBrokerInformationfromBKB1Tables S_RetrieveBrokerInformationfromBKB1Tables --> N_RetrieveBrokerInformationfromBKB1Tables_Node0 N_RetrieveBrokerInformationfromBKB1Tables_Node0 -- No --> E_RetrieveBrokerInformationfromBKB1Tables
notification"}:::decision N_RetrieveBrokerInformationfromBKB1Tables_Node0_action["System retrieves broker information
from GCSTBRT broker tables including
contact details and notification
configuration"]:::main N_RetrieveBrokerInformationfromBKB1Tables_Node0 -- Yes --> N_RetrieveBrokerInformationfromBKB1Tables_Node0_action N_RetrieveBrokerInformationfromBKB1Tables_Node0_action --> E_RetrieveBrokerInformationfromBKB1Tables S_RetrieveBrokerInformationfromBKB1Tables --> N_RetrieveBrokerInformationfromBKB1Tables_Node0 N_RetrieveBrokerInformationfromBKB1Tables_Node0 -- No --> E_RetrieveBrokerInformationfromBKB1Tables
File: GCX016.cbl
GIVEN:
A quantity mismatch has been detected for cargo
WHEN:
System needs to send broker notification
THEN:
- System retrieves broker information from gcstbrt broker tables including contact details
- Notification configuration
β Consolidated Acceptance Criteria
- System checks broker notification configuration settings → system proceeds with notification only if broker is configured for notifications, otherwise skips notification process
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_BrokerConfiguredforNotifications(["Start Step"])
E_BrokerConfiguredforNotifications(["End Step"])
N_BrokerConfiguredforNotifications_Node0{"System checks broker notification
configuration settings"}:::decision N_BrokerConfiguredforNotifications_Node0_action["System proceeds with notification
only if broker is configured for
notifications, otherwise skips
notification process"]:::main N_BrokerConfiguredforNotifications_Node0 -- Yes --> N_BrokerConfiguredforNotifications_Node0_action N_BrokerConfiguredforNotifications_Node0_action --> E_BrokerConfiguredforNotifications S_BrokerConfiguredforNotifications --> N_BrokerConfiguredforNotifications_Node0 N_BrokerConfiguredforNotifications_Node0 -- No --> E_BrokerConfiguredforNotifications
configuration settings"}:::decision N_BrokerConfiguredforNotifications_Node0_action["System proceeds with notification
only if broker is configured for
notifications, otherwise skips
notification process"]:::main N_BrokerConfiguredforNotifications_Node0 -- Yes --> N_BrokerConfiguredforNotifications_Node0_action N_BrokerConfiguredforNotifications_Node0_action --> E_BrokerConfiguredforNotifications S_BrokerConfiguredforNotifications --> N_BrokerConfiguredforNotifications_Node0 N_BrokerConfiguredforNotifications_Node0 -- No --> E_BrokerConfiguredforNotifications
File: GCX016.cbl
GIVEN:
Broker information has been retrieved from broker tables
WHEN:
System checks broker notification configuration settings
THEN:
System proceeds with notification only if broker is configured for notifications, otherwise skips notification process
β Consolidated Acceptance Criteria
- System validates the disposition code against notification criteria → system proceeds with notification preparation only if disposition code is valid for broker notifications
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ValidateDispositionCodeforBrokerNotifications(["Start Step"])
E_ValidateDispositionCodeforBrokerNotifications(["End Step"])
N_ValidateDispositionCodeforBrokerNotifications_Node0{"System validates the disposition
code against notification criteria"}:::decision N_ValidateDispositionCodeforBrokerNotifications_Node0_action["System proceeds with notification
preparation only if disposition code
is valid for broker notifications"]:::main N_ValidateDispositionCodeforBrokerNotifications_Node0 -- Yes --> N_ValidateDispositionCodeforBrokerNotifications_Node0_action N_ValidateDispositionCodeforBrokerNotifications_Node0_action --> E_ValidateDispositionCodeforBrokerNotifications S_ValidateDispositionCodeforBrokerNotifications --> N_ValidateDispositionCodeforBrokerNotifications_Node0 N_ValidateDispositionCodeforBrokerNotifications_Node0 -- No --> E_ValidateDispositionCodeforBrokerNotifications
code against notification criteria"}:::decision N_ValidateDispositionCodeforBrokerNotifications_Node0_action["System proceeds with notification
preparation only if disposition code
is valid for broker notifications"]:::main N_ValidateDispositionCodeforBrokerNotifications_Node0 -- Yes --> N_ValidateDispositionCodeforBrokerNotifications_Node0_action N_ValidateDispositionCodeforBrokerNotifications_Node0_action --> E_ValidateDispositionCodeforBrokerNotifications S_ValidateDispositionCodeforBrokerNotifications --> N_ValidateDispositionCodeforBrokerNotifications_Node0 N_ValidateDispositionCodeforBrokerNotifications_Node0 -- No --> E_ValidateDispositionCodeforBrokerNotifications
File: GCX016.cbl
GIVEN:
Broker is configured for notifications and quantity mismatch exists
WHEN:
System validates the disposition code against notification criteria
THEN:
System proceeds with notification preparation only if disposition code is valid for broker notifications
β Consolidated Acceptance Criteria
- System prepares the notification message → system creates formatted email message with quantity mismatch details, broker entry numbers, and relevant cargo information
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_PrepareQuantityMismatchEmailMessage(["Start Step"])
E_PrepareQuantityMismatchEmailMessage(["End Step"])
N_PrepareQuantityMismatchEmailMessage_Node0{"System prepares the notification
message"}:::decision N_PrepareQuantityMismatchEmailMessage_Node0_action["System creates formatted email
message with quantity mismatch
details, broker entry numbers, and
relevant cargo information"]:::main N_PrepareQuantityMismatchEmailMessage_Node0 -- Yes --> N_PrepareQuantityMismatchEmailMessage_Node0_action N_PrepareQuantityMismatchEmailMessage_Node0_action --> E_PrepareQuantityMismatchEmailMessage S_PrepareQuantityMismatchEmailMessage --> N_PrepareQuantityMismatchEmailMessage_Node0 N_PrepareQuantityMismatchEmailMessage_Node0 -- No --> E_PrepareQuantityMismatchEmailMessage
message"}:::decision N_PrepareQuantityMismatchEmailMessage_Node0_action["System creates formatted email
message with quantity mismatch
details, broker entry numbers, and
relevant cargo information"]:::main N_PrepareQuantityMismatchEmailMessage_Node0 -- Yes --> N_PrepareQuantityMismatchEmailMessage_Node0_action N_PrepareQuantityMismatchEmailMessage_Node0_action --> E_PrepareQuantityMismatchEmailMessage S_PrepareQuantityMismatchEmailMessage --> N_PrepareQuantityMismatchEmailMessage_Node0 N_PrepareQuantityMismatchEmailMessage_Node0 -- No --> E_PrepareQuantityMismatchEmailMessage
File: GCX016.cbl
GIVEN:
Disposition code is valid for broker notifications
WHEN:
System prepares the notification message
THEN:
System creates formatted email message with quantity mismatch details, broker entry numbers, and relevant cargo information
β Consolidated Acceptance Criteria
- System formats the message content → system includes broker entry numbers, expected quantities, actual quantities, and variance details in the notification
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IncludeBrokerEntryNumbersandQuantities(["Start Step"])
E_IncludeBrokerEntryNumbersandQuantities(["End Step"])
N_IncludeBrokerEntryNumbersandQuantities_Node0{"System formats the message content"}:::decision
N_IncludeBrokerEntryNumbersandQuantities_Node0_action["System includes broker entry
numbers, expected quantities, actual
quantities, and variance details in
the notification"]:::main N_IncludeBrokerEntryNumbersandQuantities_Node0 -- Yes --> N_IncludeBrokerEntryNumbersandQuantities_Node0_action N_IncludeBrokerEntryNumbersandQuantities_Node0_action --> E_IncludeBrokerEntryNumbersandQuantities S_IncludeBrokerEntryNumbersandQuantities --> N_IncludeBrokerEntryNumbersandQuantities_Node0 N_IncludeBrokerEntryNumbersandQuantities_Node0 -- No --> E_IncludeBrokerEntryNumbersandQuantities
numbers, expected quantities, actual
quantities, and variance details in
the notification"]:::main N_IncludeBrokerEntryNumbersandQuantities_Node0 -- Yes --> N_IncludeBrokerEntryNumbersandQuantities_Node0_action N_IncludeBrokerEntryNumbersandQuantities_Node0_action --> E_IncludeBrokerEntryNumbersandQuantities S_IncludeBrokerEntryNumbersandQuantities --> N_IncludeBrokerEntryNumbersandQuantities_Node0 N_IncludeBrokerEntryNumbersandQuantities_Node0 -- No --> E_IncludeBrokerEntryNumbersandQuantities
File: GCX016.cbl
GIVEN:
Email message preparation is in progress
WHEN:
System formats the message content
THEN:
System includes broker entry numbers, expected quantities, actual quantities, and variance details in the notification
β Consolidated Acceptance Criteria
- System formats the mismatch details → system creates structured report format showing discrepancies, affected cargo, and recommended actions for broker review
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_FormatMismatchDetailsforReport(["Start Step"])
E_FormatMismatchDetailsforReport(["End Step"])
N_FormatMismatchDetailsforReport_Node0{"System formats the mismatch details"}:::decision
N_FormatMismatchDetailsforReport_Node0_action["System creates structured report
format showing discrepancies,
affected cargo, and recommended
actions for broker review"]:::main N_FormatMismatchDetailsforReport_Node0 -- Yes --> N_FormatMismatchDetailsforReport_Node0_action N_FormatMismatchDetailsforReport_Node0_action --> E_FormatMismatchDetailsforReport S_FormatMismatchDetailsforReport --> N_FormatMismatchDetailsforReport_Node0 N_FormatMismatchDetailsforReport_Node0 -- No --> E_FormatMismatchDetailsforReport
format showing discrepancies,
affected cargo, and recommended
actions for broker review"]:::main N_FormatMismatchDetailsforReport_Node0 -- Yes --> N_FormatMismatchDetailsforReport_Node0_action N_FormatMismatchDetailsforReport_Node0_action --> E_FormatMismatchDetailsforReport S_FormatMismatchDetailsforReport --> N_FormatMismatchDetailsforReport_Node0 N_FormatMismatchDetailsforReport_Node0 -- No --> E_FormatMismatchDetailsforReport
File: GCX016.cbl
GIVEN:
Broker entry numbers and quantities have been included in message
WHEN:
System formats the mismatch details
THEN:
System creates structured report format showing discrepancies, affected cargo, and recommended actions for broker review
β Consolidated Acceptance Criteria
- System determines routing method → system routes via internet email if broker is configured for email notifications, otherwise routes via traditional Merlin messaging system
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_EmailorMerlinRouting(["Start Step"])
E_EmailorMerlinRouting(["End Step"])
N_EmailorMerlinRouting_Node0{"System determines routing method"}:::decision
N_EmailorMerlinRouting_Node0_action["System routes via internet email if
broker is configured for email
notifications, otherwise routes via
traditional Merlin messaging system"]:::main N_EmailorMerlinRouting_Node0 -- Yes --> N_EmailorMerlinRouting_Node0_action N_EmailorMerlinRouting_Node0_action --> E_EmailorMerlinRouting S_EmailorMerlinRouting --> N_EmailorMerlinRouting_Node0 N_EmailorMerlinRouting_Node0 -- No --> E_EmailorMerlinRouting
broker is configured for email
notifications, otherwise routes via
traditional Merlin messaging system"]:::main N_EmailorMerlinRouting_Node0 -- Yes --> N_EmailorMerlinRouting_Node0_action N_EmailorMerlinRouting_Node0_action --> E_EmailorMerlinRouting S_EmailorMerlinRouting --> N_EmailorMerlinRouting_Node0 N_EmailorMerlinRouting_Node0 -- No --> E_EmailorMerlinRouting
File: GCX016.cbl
GIVEN:
Mismatch details have been formatted for report
WHEN:
System determines routing method
THEN:
System routes via internet email if broker is configured for email notifications, otherwise routes via traditional Merlin messaging system
β Consolidated Acceptance Criteria
- System routes the notification → system sends notification through internet email system using broker's registered email address
- The system routes the CIH hold notification → the system sends the notification via internet email to the configured address
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RouteviaInternetEmail(["Start Step"])
E_RouteviaInternetEmail(["End Step"])
N_RouteviaInternetEmail_Node0{"System routes the notification"}:::decision
N_RouteviaInternetEmail_Node0_action["System sends notification through
internet email system using broker s
registered email address"]:::main N_RouteviaInternetEmail_Node0 -- Yes --> N_RouteviaInternetEmail_Node0_action N_RouteviaInternetEmail_Node0_action --> E_RouteviaInternetEmail S_RouteviaInternetEmail --> N_RouteviaInternetEmail_Node0 N_RouteviaInternetEmail_Node1{"The system routes the CIH hold
notification"}:::decision N_RouteviaInternetEmail_Node1_action["The system sends the notification
via internet email to the configured
address"]:::main N_RouteviaInternetEmail_Node1 -- Yes --> N_RouteviaInternetEmail_Node1_action N_RouteviaInternetEmail_Node1_action --> E_RouteviaInternetEmail N_RouteviaInternetEmail_Node0 -- No --> N_RouteviaInternetEmail_Node1 N_RouteviaInternetEmail_Node1 -- No --> E_RouteviaInternetEmail
internet email system using broker s
registered email address"]:::main N_RouteviaInternetEmail_Node0 -- Yes --> N_RouteviaInternetEmail_Node0_action N_RouteviaInternetEmail_Node0_action --> E_RouteviaInternetEmail S_RouteviaInternetEmail --> N_RouteviaInternetEmail_Node0 N_RouteviaInternetEmail_Node1{"The system routes the CIH hold
notification"}:::decision N_RouteviaInternetEmail_Node1_action["The system sends the notification
via internet email to the configured
address"]:::main N_RouteviaInternetEmail_Node1 -- Yes --> N_RouteviaInternetEmail_Node1_action N_RouteviaInternetEmail_Node1_action --> E_RouteviaInternetEmail N_RouteviaInternetEmail_Node0 -- No --> N_RouteviaInternetEmail_Node1 N_RouteviaInternetEmail_Node1 -- No --> E_RouteviaInternetEmail
File: GCX016.cbl
GIVEN:
Broker is configured for email notifications
WHEN:
System routes the notification
THEN:
System sends notification through internet email system using broker's registered email address
File: GCX016.cbl
GIVEN:
Email preference is available for the payer of freight entity
WHEN:
The system routes the CIH hold notification
THEN:
The system sends the notification via internet email to the configured address
β Consolidated Acceptance Criteria
- System routes the notification → system sends notification through traditional Merlin messaging system using broker's Merlin ID
- The system routes the CIH hold notification → the system sends the notification via traditional Merlin messaging system
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RouteviaTraditionalMerlin(["Start Step"])
E_RouteviaTraditionalMerlin(["End Step"])
N_RouteviaTraditionalMerlin_Node0{"System routes the notification"}:::decision
N_RouteviaTraditionalMerlin_Node0_action["System sends notification through
traditional Merlin messaging system
using broker s Merlin ID"]:::main N_RouteviaTraditionalMerlin_Node0 -- Yes --> N_RouteviaTraditionalMerlin_Node0_action N_RouteviaTraditionalMerlin_Node0_action --> E_RouteviaTraditionalMerlin S_RouteviaTraditionalMerlin --> N_RouteviaTraditionalMerlin_Node0 N_RouteviaTraditionalMerlin_Node1{"The system routes the CIH hold
notification"}:::decision N_RouteviaTraditionalMerlin_Node1_action["The system sends the notification
via traditional Merlin messaging
system"]:::main N_RouteviaTraditionalMerlin_Node1 -- Yes --> N_RouteviaTraditionalMerlin_Node1_action N_RouteviaTraditionalMerlin_Node1_action --> E_RouteviaTraditionalMerlin N_RouteviaTraditionalMerlin_Node0 -- No --> N_RouteviaTraditionalMerlin_Node1 N_RouteviaTraditionalMerlin_Node1 -- No --> E_RouteviaTraditionalMerlin
traditional Merlin messaging system
using broker s Merlin ID"]:::main N_RouteviaTraditionalMerlin_Node0 -- Yes --> N_RouteviaTraditionalMerlin_Node0_action N_RouteviaTraditionalMerlin_Node0_action --> E_RouteviaTraditionalMerlin S_RouteviaTraditionalMerlin --> N_RouteviaTraditionalMerlin_Node0 N_RouteviaTraditionalMerlin_Node1{"The system routes the CIH hold
notification"}:::decision N_RouteviaTraditionalMerlin_Node1_action["The system sends the notification
via traditional Merlin messaging
system"]:::main N_RouteviaTraditionalMerlin_Node1 -- Yes --> N_RouteviaTraditionalMerlin_Node1_action N_RouteviaTraditionalMerlin_Node1_action --> E_RouteviaTraditionalMerlin N_RouteviaTraditionalMerlin_Node0 -- No --> N_RouteviaTraditionalMerlin_Node1 N_RouteviaTraditionalMerlin_Node1 -- No --> E_RouteviaTraditionalMerlin
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
Broker is not configured for email notifications or email routing fails
WHEN:
System routes the notification
THEN:
System sends notification through traditional Merlin messaging system using broker's Merlin ID
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
Email preference is not available for the payer of freight entity
WHEN:
The system routes the CIH hold notification
THEN:
The system sends the notification via traditional Merlin messaging system
β Consolidated Acceptance Criteria
- System sets email keywords → system assigns relevant keywords such as 'QUANTITY_MISMATCH', 'BROKER_NOTIFICATION', and cargo-specific identifiers for proper categorization
- The system prepares email routing parameters → the system sets appropriate keywords and categories based on message type and content for email gateway processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetEmailKeywordsforCategorization(["Start Step"])
E_SetEmailKeywordsforCategorization(["End Step"])
N_SetEmailKeywordsforCategorization_Node0{"System sets email keywords"}:::decision
N_SetEmailKeywordsforCategorization_Node0_action["System assigns relevant keywords
such as QUANTITYMISMATCH ,
BROKERNOTIFICATION , and
cargo-specific identifiers for
proper categorization"]:::main N_SetEmailKeywordsforCategorization_Node0 -- Yes --> N_SetEmailKeywordsforCategorization_Node0_action N_SetEmailKeywordsforCategorization_Node0_action --> E_SetEmailKeywordsforCategorization S_SetEmailKeywordsforCategorization --> N_SetEmailKeywordsforCategorization_Node0 N_SetEmailKeywordsforCategorization_Node1{"The system prepares email routing
parameters"}:::decision N_SetEmailKeywordsforCategorization_Node1_action["The system sets appropriate
keywords and categories based on
message type and content for email
gateway processing"]:::main N_SetEmailKeywordsforCategorization_Node1 -- Yes --> N_SetEmailKeywordsforCategorization_Node1_action N_SetEmailKeywordsforCategorization_Node1_action --> E_SetEmailKeywordsforCategorization N_SetEmailKeywordsforCategorization_Node0 -- No --> N_SetEmailKeywordsforCategorization_Node1 N_SetEmailKeywordsforCategorization_Node1 -- No --> E_SetEmailKeywordsforCategorization
such as QUANTITYMISMATCH ,
BROKERNOTIFICATION , and
cargo-specific identifiers for
proper categorization"]:::main N_SetEmailKeywordsforCategorization_Node0 -- Yes --> N_SetEmailKeywordsforCategorization_Node0_action N_SetEmailKeywordsforCategorization_Node0_action --> E_SetEmailKeywordsforCategorization S_SetEmailKeywordsforCategorization --> N_SetEmailKeywordsforCategorization_Node0 N_SetEmailKeywordsforCategorization_Node1{"The system prepares email routing
parameters"}:::decision N_SetEmailKeywordsforCategorization_Node1_action["The system sets appropriate
keywords and categories based on
message type and content for email
gateway processing"]:::main N_SetEmailKeywordsforCategorization_Node1 -- Yes --> N_SetEmailKeywordsforCategorization_Node1_action N_SetEmailKeywordsforCategorization_Node1_action --> E_SetEmailKeywordsforCategorization N_SetEmailKeywordsforCategorization_Node0 -- No --> N_SetEmailKeywordsforCategorization_Node1 N_SetEmailKeywordsforCategorization_Node1 -- No --> E_SetEmailKeywordsforCategorization
File: GCX016.cbl
GIVEN:
Notification routing method has been determined
WHEN:
System sets email keywords
THEN:
System assigns relevant keywords such as 'QUANTITY_MISMATCH', 'BROKER_NOTIFICATION', and cargo-specific identifiers for proper categorization
File: GCX016.cbl
GIVEN:
Email message has been formatted for delivery
WHEN:
The system prepares email routing parameters
THEN:
- The system sets appropriate keywords
- Categories based on message type
- Content for email gateway processing
β Consolidated Acceptance Criteria
- System sends the notification → system delivers notification to broker through selected method and confirms successful transmission
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SendNotificationtoBroker(["Start Step"])
E_SendNotificationtoBroker(["End Step"])
N_SendNotificationtoBroker_Node0{"System sends the notification"}:::decision
N_SendNotificationtoBroker_Node0_action["System delivers notification to
broker through selected method and
confirms successful transmission"]:::main N_SendNotificationtoBroker_Node0 -- Yes --> N_SendNotificationtoBroker_Node0_action N_SendNotificationtoBroker_Node0_action --> E_SendNotificationtoBroker S_SendNotificationtoBroker --> N_SendNotificationtoBroker_Node0 N_SendNotificationtoBroker_Node0 -- No --> E_SendNotificationtoBroker
broker through selected method and
confirms successful transmission"]:::main N_SendNotificationtoBroker_Node0 -- Yes --> N_SendNotificationtoBroker_Node0_action N_SendNotificationtoBroker_Node0_action --> E_SendNotificationtoBroker S_SendNotificationtoBroker --> N_SendNotificationtoBroker_Node0 N_SendNotificationtoBroker_Node0 -- No --> E_SendNotificationtoBroker
File: GCX016.cbl
GIVEN:
Email keywords have been set for categorization
WHEN:
System sends the notification
THEN:
- System delivers notification to broker through selected method
- Confirms successful transmission
β Consolidated Acceptance Criteria
- System logs the activity → system records notification details including timestamp, broker ID, notification method, message content summary, and delivery status in audit logs
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogNotificationActivity(["Start Step"])
E_LogNotificationActivity(["End Step"])
N_LogNotificationActivity_Node0{"System logs the activity"}:::decision
N_LogNotificationActivity_Node0_action["System records notification details
including timestamp, broker ID,
notification method, message content
summary, and delivery status in
audit logs"]:::main N_LogNotificationActivity_Node0 -- Yes --> N_LogNotificationActivity_Node0_action N_LogNotificationActivity_Node0_action --> E_LogNotificationActivity S_LogNotificationActivity --> N_LogNotificationActivity_Node0 N_LogNotificationActivity_Node0 -- No --> E_LogNotificationActivity
including timestamp, broker ID,
notification method, message content
summary, and delivery status in
audit logs"]:::main N_LogNotificationActivity_Node0 -- Yes --> N_LogNotificationActivity_Node0_action N_LogNotificationActivity_Node0_action --> E_LogNotificationActivity S_LogNotificationActivity --> N_LogNotificationActivity_Node0 N_LogNotificationActivity_Node0 -- No --> E_LogNotificationActivity
File: GCX016.cbl
GIVEN:
Notification has been sent to broker
WHEN:
System logs the activity
THEN:
System records notification details including timestamp, broker ID, notification method, message content summary, and delivery status in audit logs
β Consolidated Acceptance Criteria
- System evaluates notification requirements → system skips notification process and continues with normal cargo processing workflow
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_NoNotificationRequired(["Start Step"])
E_NoNotificationRequired(["End Step"])
N_NoNotificationRequired_Node0{"System evaluates notification
requirements"}:::decision N_NoNotificationRequired_Node0_action["System skips notification process
and continues with normal cargo
processing workflow"]:::main N_NoNotificationRequired_Node0 -- Yes --> N_NoNotificationRequired_Node0_action N_NoNotificationRequired_Node0_action --> E_NoNotificationRequired S_NoNotificationRequired --> N_NoNotificationRequired_Node0 N_NoNotificationRequired_Node0 -- No --> E_NoNotificationRequired
requirements"}:::decision N_NoNotificationRequired_Node0_action["System skips notification process
and continues with normal cargo
processing workflow"]:::main N_NoNotificationRequired_Node0 -- Yes --> N_NoNotificationRequired_Node0_action N_NoNotificationRequired_Node0_action --> E_NoNotificationRequired S_NoNotificationRequired --> N_NoNotificationRequired_Node0 N_NoNotificationRequired_Node0 -- No --> E_NoNotificationRequired
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
Broker is not configured for notifications OR no quantity mismatch detected OR disposition code is invalid for notifications
WHEN:
System evaluates notification requirements
THEN:
- System skips notification process
- Continues with normal cargo processing workflow
β Consolidated Acceptance Criteria
- The system accesses the broker contact information fields → the system retrieves email addresses, Merlin IDs, and notification preferences for the broker
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RetrieveBrokerContactInformation(["Start Step"])
E_RetrieveBrokerContactInformation(["End Step"])
N_RetrieveBrokerContactInformation_Node0{"The system accesses the broker
contact information fields"}:::decision N_RetrieveBrokerContactInformation_Node0_action["The system retrieves email
addresses, Merlin IDs, and
notification preferences for the
broker"]:::main N_RetrieveBrokerContactInformation_Node0 -- Yes --> N_RetrieveBrokerContactInformation_Node0_action N_RetrieveBrokerContactInformation_Node0_action --> E_RetrieveBrokerContactInformation S_RetrieveBrokerContactInformation --> N_RetrieveBrokerContactInformation_Node0 N_RetrieveBrokerContactInformation_Node0 -- No --> E_RetrieveBrokerContactInformation
contact information fields"}:::decision N_RetrieveBrokerContactInformation_Node0_action["The system retrieves email
addresses, Merlin IDs, and
notification preferences for the
broker"]:::main N_RetrieveBrokerContactInformation_Node0 -- Yes --> N_RetrieveBrokerContactInformation_Node0_action N_RetrieveBrokerContactInformation_Node0_action --> E_RetrieveBrokerContactInformation S_RetrieveBrokerContactInformation --> N_RetrieveBrokerContactInformation_Node0 N_RetrieveBrokerContactInformation_Node0 -- No --> E_RetrieveBrokerContactInformation
File: GCX016.cbl
GIVEN:
A broker record has been found in the broker tables
WHEN:
The system accesses the broker contact information fields
THEN:
The system retrieves email addresses, Merlin IDs, and notification preferences for the broker
β Consolidated Acceptance Criteria
- The system prepares the CIH hold notification email content → the system formats cargo information, hold details, and disposition code information into the email message body
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_PrepareCIHHoldEmailMessage(["Start Step"])
E_PrepareCIHHoldEmailMessage(["End Step"])
N_PrepareCIHHoldEmailMessage_Node0{"The system prepares the CIH hold
notification email content"}:::decision N_PrepareCIHHoldEmailMessage_Node0_action["The system formats cargo
information, hold details, and
disposition code information into
the email message body"]:::main N_PrepareCIHHoldEmailMessage_Node0 -- Yes --> N_PrepareCIHHoldEmailMessage_Node0_action N_PrepareCIHHoldEmailMessage_Node0_action --> E_PrepareCIHHoldEmailMessage S_PrepareCIHHoldEmailMessage --> N_PrepareCIHHoldEmailMessage_Node0 N_PrepareCIHHoldEmailMessage_Node0 -- No --> E_PrepareCIHHoldEmailMessage
notification email content"}:::decision N_PrepareCIHHoldEmailMessage_Node0_action["The system formats cargo
information, hold details, and
disposition code information into
the email message body"]:::main N_PrepareCIHHoldEmailMessage_Node0 -- Yes --> N_PrepareCIHHoldEmailMessage_Node0_action N_PrepareCIHHoldEmailMessage_Node0_action --> E_PrepareCIHHoldEmailMessage S_PrepareCIHHoldEmailMessage --> N_PrepareCIHHoldEmailMessage_Node0 N_PrepareCIHHoldEmailMessage_Node0 -- No --> E_PrepareCIHHoldEmailMessage
File: GCX016.cbl
GIVEN:
Email has been selected as the notification method for the broker
WHEN:
The system prepares the CIH hold notification email content
THEN:
The system formats cargo information, hold details, and disposition code information into the email message body
β Consolidated Acceptance Criteria
- The system configures email routing and keyword parameters → the system sets appropriate email keywords, routing codes, and delivery parameters specific to CIH hold notifications
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetEmailKeywordsforCIHHold(["Start Step"])
E_SetEmailKeywordsforCIHHold(["End Step"])
N_SetEmailKeywordsforCIHHold_Node0{"The system configures email routing
and keyword parameters"}:::decision N_SetEmailKeywordsforCIHHold_Node0_action["The system sets appropriate email
keywords, routing codes, and
delivery parameters specific to CIH
hold notifications"]:::main N_SetEmailKeywordsforCIHHold_Node0 -- Yes --> N_SetEmailKeywordsforCIHHold_Node0_action N_SetEmailKeywordsforCIHHold_Node0_action --> E_SetEmailKeywordsforCIHHold S_SetEmailKeywordsforCIHHold --> N_SetEmailKeywordsforCIHHold_Node0 N_SetEmailKeywordsforCIHHold_Node0 -- No --> E_SetEmailKeywordsforCIHHold
and keyword parameters"}:::decision N_SetEmailKeywordsforCIHHold_Node0_action["The system sets appropriate email
keywords, routing codes, and
delivery parameters specific to CIH
hold notifications"]:::main N_SetEmailKeywordsforCIHHold_Node0 -- Yes --> N_SetEmailKeywordsforCIHHold_Node0_action N_SetEmailKeywordsforCIHHold_Node0_action --> E_SetEmailKeywordsforCIHHold S_SetEmailKeywordsforCIHHold --> N_SetEmailKeywordsforCIHHold_Node0 N_SetEmailKeywordsforCIHHold_Node0 -- No --> E_SetEmailKeywordsforCIHHold
File: GCX016.cbl
GIVEN:
The CIH hold email message content has been prepared
WHEN:
- The system configures email routing
- Keyword parameters
THEN:
The system sets appropriate email keywords, routing codes, and delivery parameters specific to CIH hold notifications
β Consolidated Acceptance Criteria
- The system prepares the CIH hold notification for Merlin transmission → the system formats cargo details, hold information, and disposition codes into Merlin message format
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_PrepareMerlinMessageforCIHHold(["Start Step"])
E_PrepareMerlinMessageforCIHHold(["End Step"])
N_PrepareMerlinMessageforCIHHold_Node0{"The system prepares the CIH hold
notification for Merlin transmission"}:::decision N_PrepareMerlinMessageforCIHHold_Node0_action["The system formats cargo details,
hold information, and disposition
codes into Merlin message format"]:::main N_PrepareMerlinMessageforCIHHold_Node0 -- Yes --> N_PrepareMerlinMessageforCIHHold_Node0_action N_PrepareMerlinMessageforCIHHold_Node0_action --> E_PrepareMerlinMessageforCIHHold S_PrepareMerlinMessageforCIHHold --> N_PrepareMerlinMessageforCIHHold_Node0 N_PrepareMerlinMessageforCIHHold_Node0 -- No --> E_PrepareMerlinMessageforCIHHold
notification for Merlin transmission"}:::decision N_PrepareMerlinMessageforCIHHold_Node0_action["The system formats cargo details,
hold information, and disposition
codes into Merlin message format"]:::main N_PrepareMerlinMessageforCIHHold_Node0 -- Yes --> N_PrepareMerlinMessageforCIHHold_Node0_action N_PrepareMerlinMessageforCIHHold_Node0_action --> E_PrepareMerlinMessageforCIHHold S_PrepareMerlinMessageforCIHHold --> N_PrepareMerlinMessageforCIHHold_Node0 N_PrepareMerlinMessageforCIHHold_Node0 -- No --> E_PrepareMerlinMessageforCIHHold
File: GCX016.cbl
GIVEN:
Merlin messaging has been selected as the notification method for the broker
WHEN:
The system prepares the CIH hold notification for Merlin transmission
THEN:
The system formats cargo details, hold information, and disposition codes into Merlin message format
β Consolidated Acceptance Criteria
- The system routes the message to the broker's Merlin basket → the system delivers the message to the correct broker Merlin ID and logs the routing status
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RoutetoBrokerMerlinBasket(["Start Step"])
E_RoutetoBrokerMerlinBasket(["End Step"])
N_RoutetoBrokerMerlinBasket_Node0{"The system routes the message to
the broker s Merlin basket"}:::decision N_RoutetoBrokerMerlinBasket_Node0_action["The system delivers the message to
the correct broker Merlin ID and
logs the routing status"]:::main N_RoutetoBrokerMerlinBasket_Node0 -- Yes --> N_RoutetoBrokerMerlinBasket_Node0_action N_RoutetoBrokerMerlinBasket_Node0_action --> E_RoutetoBrokerMerlinBasket S_RoutetoBrokerMerlinBasket --> N_RoutetoBrokerMerlinBasket_Node0 N_RoutetoBrokerMerlinBasket_Node0 -- No --> E_RoutetoBrokerMerlinBasket
the broker s Merlin basket"}:::decision N_RoutetoBrokerMerlinBasket_Node0_action["The system delivers the message to
the correct broker Merlin ID and
logs the routing status"]:::main N_RoutetoBrokerMerlinBasket_Node0 -- Yes --> N_RoutetoBrokerMerlinBasket_Node0_action N_RoutetoBrokerMerlinBasket_Node0_action --> E_RoutetoBrokerMerlinBasket S_RoutetoBrokerMerlinBasket --> N_RoutetoBrokerMerlinBasket_Node0 N_RoutetoBrokerMerlinBasket_Node0 -- No --> E_RoutetoBrokerMerlinBasket
File: GCX016.cbl
GIVEN:
The CIH hold Merlin message has been formatted and prepared
WHEN:
The system routes the message to the broker's Merlin basket
THEN:
- The system delivers the message to the correct broker merlin id
- Logs the routing status
β Consolidated Acceptance Criteria
- The disposition code is not configured for broker notification in the system tables → the system skips broker notification processing and continues with standard cargo processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SkipNotificationNotConfigured(["Start Step"])
E_SkipNotificationNotConfigured(["End Step"])
N_SkipNotificationNotConfigured_Node0{"The disposition code is not
configured for broker notification
in the system tables"}:::decision N_SkipNotificationNotConfigured_Node0_action["The system skips broker
notification processing and
continues with standard cargo
processing"]:::main N_SkipNotificationNotConfigured_Node0 -- Yes --> N_SkipNotificationNotConfigured_Node0_action N_SkipNotificationNotConfigured_Node0_action --> E_SkipNotificationNotConfigured S_SkipNotificationNotConfigured --> N_SkipNotificationNotConfigured_Node0 N_SkipNotificationNotConfigured_Node0 -- No --> E_SkipNotificationNotConfigured
configured for broker notification
in the system tables"}:::decision N_SkipNotificationNotConfigured_Node0_action["The system skips broker
notification processing and
continues with standard cargo
processing"]:::main N_SkipNotificationNotConfigured_Node0 -- Yes --> N_SkipNotificationNotConfigured_Node0_action N_SkipNotificationNotConfigured_Node0_action --> E_SkipNotificationNotConfigured S_SkipNotificationNotConfigured --> N_SkipNotificationNotConfigured_Node0 N_SkipNotificationNotConfigured_Node0 -- No --> E_SkipNotificationNotConfigured
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
A CIH hold code has been detected for cargo processing
WHEN:
The disposition code is not configured for broker notification in the system tables
THEN:
- The system skips broker notification processing
- Continues with standard cargo processing
β Consolidated Acceptance Criteria
- The broker information cannot be found in the broker tables → the system skips notification processing and logs the missing broker condition
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SkipNotificationBrokerNotFound(["Start Step"])
E_SkipNotificationBrokerNotFound(["End Step"])
N_SkipNotificationBrokerNotFound_Node0{"The broker information cannot be
found in the broker tables"}:::decision N_SkipNotificationBrokerNotFound_Node0_action["The system skips notification
processing and logs the missing
broker condition"]:::main N_SkipNotificationBrokerNotFound_Node0 -- Yes --> N_SkipNotificationBrokerNotFound_Node0_action N_SkipNotificationBrokerNotFound_Node0_action --> E_SkipNotificationBrokerNotFound S_SkipNotificationBrokerNotFound --> N_SkipNotificationBrokerNotFound_Node0 N_SkipNotificationBrokerNotFound_Node0 -- No --> E_SkipNotificationBrokerNotFound
found in the broker tables"}:::decision N_SkipNotificationBrokerNotFound_Node0_action["The system skips notification
processing and logs the missing
broker condition"]:::main N_SkipNotificationBrokerNotFound_Node0 -- Yes --> N_SkipNotificationBrokerNotFound_Node0_action N_SkipNotificationBrokerNotFound_Node0_action --> E_SkipNotificationBrokerNotFound S_SkipNotificationBrokerNotFound --> N_SkipNotificationBrokerNotFound_Node0 N_SkipNotificationBrokerNotFound_Node0 -- No --> E_SkipNotificationBrokerNotFound
File: GCX016.cbl
GIVEN:
The disposition code is configured for broker notification
WHEN:
The broker information cannot be found in the broker tables
THEN:
- The system skips notification processing
- Logs the missing broker condition
β Consolidated Acceptance Criteria
- The search results are evaluated for valid payer entity → the system proceeds with broker name resolution if payer found, otherwise skips notification processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_PayerofFreightFound(["Start Step"])
E_PayerofFreightFound(["End Step"])
N_PayerofFreightFound_Node0{"The search results are evaluated
for valid payer entity"}:::decision N_PayerofFreightFound_Node0_action["The system proceeds with broker
name resolution if payer found,
otherwise skips notification
processing"]:::main N_PayerofFreightFound_Node0 -- Yes --> N_PayerofFreightFound_Node0_action N_PayerofFreightFound_Node0_action --> E_PayerofFreightFound S_PayerofFreightFound --> N_PayerofFreightFound_Node0 N_PayerofFreightFound_Node0 -- No --> E_PayerofFreightFound
for valid payer entity"}:::decision N_PayerofFreightFound_Node0_action["The system proceeds with broker
name resolution if payer found,
otherwise skips notification
processing"]:::main N_PayerofFreightFound_Node0 -- Yes --> N_PayerofFreightFound_Node0_action N_PayerofFreightFound_Node0_action --> E_PayerofFreightFound S_PayerofFreightFound --> N_PayerofFreightFound_Node0 N_PayerofFreightFound_Node0 -- No --> E_PayerofFreightFound
File: GCX016.cbl
GIVEN:
The system has searched secondary cargo records for payer of freight
WHEN:
The search results are evaluated for valid payer entity
THEN:
The system proceeds with broker name resolution if payer found, otherwise skips notification processing
β Consolidated Acceptance Criteria
- If the validity of the resolved payer entity → the system proceeds with CIH hold notification preparation if valid, otherwise skips notification
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ValidPayerEntity(["Start Step"])
E_ValidPayerEntity(["End Step"])
N_ValidPayerEntity_Node0{"The system evaluates the validity
of the resolved payer entity"}:::decision N_ValidPayerEntity_Node0_action["The system proceeds with CIH hold
notification preparation if valid,
otherwise skips notification"]:::main N_ValidPayerEntity_Node0 -- Yes --> N_ValidPayerEntity_Node0_action N_ValidPayerEntity_Node0_action --> E_ValidPayerEntity S_ValidPayerEntity --> N_ValidPayerEntity_Node0 N_ValidPayerEntity_Node0 -- No --> E_ValidPayerEntity
of the resolved payer entity"}:::decision N_ValidPayerEntity_Node0_action["The system proceeds with CIH hold
notification preparation if valid,
otherwise skips notification"]:::main N_ValidPayerEntity_Node0 -- Yes --> N_ValidPayerEntity_Node0_action N_ValidPayerEntity_Node0_action --> E_ValidPayerEntity S_ValidPayerEntity --> N_ValidPayerEntity_Node0 N_ValidPayerEntity_Node0 -- No --> E_ValidPayerEntity
File: GCX016.cbl
GIVEN:
Broker name resolution has been attempted for the payer of freight
WHEN:
The system evaluates the validity of the resolved payer entity
THEN:
The system proceeds with CIH hold notification preparation if valid, otherwise skips notification
β Consolidated Acceptance Criteria
- The system formats the notification message content including hold code details and cargo information → the system creates a complete notification message ready for routing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_PrepareCIHHoldNotification(["Start Step"])
E_PrepareCIHHoldNotification(["End Step"])
N_PrepareCIHHoldNotification_Node0{"The system formats the notification
message content including hold code
details and cargo information"}:::decision N_PrepareCIHHoldNotification_Node0_action["The system creates a complete
notification message ready for
routing"]:::main N_PrepareCIHHoldNotification_Node0 -- Yes --> N_PrepareCIHHoldNotification_Node0_action N_PrepareCIHHoldNotification_Node0_action --> E_PrepareCIHHoldNotification S_PrepareCIHHoldNotification --> N_PrepareCIHHoldNotification_Node0 N_PrepareCIHHoldNotification_Node0 -- No --> E_PrepareCIHHoldNotification
message content including hold code
details and cargo information"}:::decision N_PrepareCIHHoldNotification_Node0_action["The system creates a complete
notification message ready for
routing"]:::main N_PrepareCIHHoldNotification_Node0 -- Yes --> N_PrepareCIHHoldNotification_Node0_action N_PrepareCIHHoldNotification_Node0_action --> E_PrepareCIHHoldNotification S_PrepareCIHHoldNotification --> N_PrepareCIHHoldNotification_Node0 N_PrepareCIHHoldNotification_Node0 -- No --> E_PrepareCIHHoldNotification
File: GCX016.cbl
GIVEN:
A valid payer entity has been verified for CIH hold notification
WHEN:
- The system formats the notification message content including hold code details
- Cargo information
THEN:
The system creates a complete notification message ready for routing
β Consolidated Acceptance Criteria
- The system checks email routing tables for configured preferences → the system determines routing method based on preference availability
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_EmailPreferenceAvailable(["Start Step"])
E_EmailPreferenceAvailable(["End Step"])
N_EmailPreferenceAvailable_Node0{"The system checks email routing
tables for configured preferences"}:::decision N_EmailPreferenceAvailable_Node0_action["The system determines routing
method based on preference
availability"]:::main N_EmailPreferenceAvailable_Node0 -- Yes --> N_EmailPreferenceAvailable_Node0_action N_EmailPreferenceAvailable_Node0_action --> E_EmailPreferenceAvailable S_EmailPreferenceAvailable --> N_EmailPreferenceAvailable_Node0 N_EmailPreferenceAvailable_Node0 -- No --> E_EmailPreferenceAvailable
tables for configured preferences"}:::decision N_EmailPreferenceAvailable_Node0_action["The system determines routing
method based on preference
availability"]:::main N_EmailPreferenceAvailable_Node0 -- Yes --> N_EmailPreferenceAvailable_Node0_action N_EmailPreferenceAvailable_Node0_action --> E_EmailPreferenceAvailable S_EmailPreferenceAvailable --> N_EmailPreferenceAvailable_Node0 N_EmailPreferenceAvailable_Node0 -- No --> E_EmailPreferenceAvailable
File: GCX016.cbl
GIVEN:
The system needs to route a CIH hold notification to payer of freight
WHEN:
The system checks email routing tables for configured preferences
THEN:
The system determines routing method based on preference availability
β Consolidated Acceptance Criteria
- The system sends the notification to the payer of freight → the system delivers the notification and logs the successful transmission
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SendNotificationtoPayer(["Start Step"])
E_SendNotificationtoPayer(["End Step"])
N_SendNotificationtoPayer_Node0{"The system sends the notification
to the payer of freight"}:::decision N_SendNotificationtoPayer_Node0_action["The system delivers the
notification and logs the successful
transmission"]:::main N_SendNotificationtoPayer_Node0 -- Yes --> N_SendNotificationtoPayer_Node0_action N_SendNotificationtoPayer_Node0_action --> E_SendNotificationtoPayer S_SendNotificationtoPayer --> N_SendNotificationtoPayer_Node0 N_SendNotificationtoPayer_Node0 -- No --> E_SendNotificationtoPayer
to the payer of freight"}:::decision N_SendNotificationtoPayer_Node0_action["The system delivers the
notification and logs the successful
transmission"]:::main N_SendNotificationtoPayer_Node0 -- Yes --> N_SendNotificationtoPayer_Node0_action N_SendNotificationtoPayer_Node0_action --> E_SendNotificationtoPayer S_SendNotificationtoPayer --> N_SendNotificationtoPayer_Node0 N_SendNotificationtoPayer_Node0 -- No --> E_SendNotificationtoPayer
File: GCX016.cbl
GIVEN:
A routing method has been determined for the CIH hold notification
WHEN:
The system sends the notification to the payer of freight
THEN:
- The system delivers the notification
- Logs the successful transmission
β Consolidated Acceptance Criteria
- The system validates the 3W disposition code against the DC table → the system confirms the code is valid and allows diversion processing to continue, or generates an error if the code is not found in the table
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_Validate3WDispositionCodeinDCTable(["Start Step"])
E_Validate3WDispositionCodeinDCTable(["End Step"])
N_Validate3WDispositionCodeinDCTable_Node0{"The system validates the 3W
disposition code against the DC
table"}:::decision N_Validate3WDispositionCodeinDCTable_Node0_action["The system confirms the code is
valid and allows diversion
processing to continue, or generates
an error if the code is not found in
the table"]:::main N_Validate3WDispositionCodeinDCTable_Node0 -- Yes --> N_Validate3WDispositionCodeinDCTable_Node0_action N_Validate3WDispositionCodeinDCTable_Node0_action --> E_Validate3WDispositionCodeinDCTable S_Validate3WDispositionCodeinDCTable --> N_Validate3WDispositionCodeinDCTable_Node0 N_Validate3WDispositionCodeinDCTable_Node0 -- No --> E_Validate3WDispositionCodeinDCTable
disposition code against the DC
table"}:::decision N_Validate3WDispositionCodeinDCTable_Node0_action["The system confirms the code is
valid and allows diversion
processing to continue, or generates
an error if the code is not found in
the table"]:::main N_Validate3WDispositionCodeinDCTable_Node0 -- Yes --> N_Validate3WDispositionCodeinDCTable_Node0_action N_Validate3WDispositionCodeinDCTable_Node0_action --> E_Validate3WDispositionCodeinDCTable S_Validate3WDispositionCodeinDCTable --> N_Validate3WDispositionCodeinDCTable_Node0 N_Validate3WDispositionCodeinDCTable_Node0 -- No --> E_Validate3WDispositionCodeinDCTable
File: GCX016.cbl
GIVEN:
An X4 segment is received with a 3W disposition code
WHEN:
The system validates the 3W disposition code against the DC table
THEN:
- The system confirms the code is valid
- Allows diversion processing to continue, or generates an error if the code is not found in the table
β Consolidated Acceptance Criteria
- The system processes the X4 segment data → the system extracts the new bonded-to station code from the appropriate field in the X4 segment
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExtractNewBondedToStationfromX4Segment(["Start Step"])
E_ExtractNewBondedToStationfromX4Segment(["End Step"])
N_ExtractNewBondedToStationfromX4Segment_Node0{"The system processes the X4 segment
data"}:::decision N_ExtractNewBondedToStationfromX4Segment_Node0_action["The system extracts the new
bonded-to station code from the
appropriate field in the X4 segment"]:::main N_ExtractNewBondedToStationfromX4Segment_Node0 -- Yes --> N_ExtractNewBondedToStationfromX4Segment_Node0_action N_ExtractNewBondedToStationfromX4Segment_Node0_action --> E_ExtractNewBondedToStationfromX4Segment S_ExtractNewBondedToStationfromX4Segment --> N_ExtractNewBondedToStationfromX4Segment_Node0 N_ExtractNewBondedToStationfromX4Segment_Node0 -- No --> E_ExtractNewBondedToStationfromX4Segment
data"}:::decision N_ExtractNewBondedToStationfromX4Segment_Node0_action["The system extracts the new
bonded-to station code from the
appropriate field in the X4 segment"]:::main N_ExtractNewBondedToStationfromX4Segment_Node0 -- Yes --> N_ExtractNewBondedToStationfromX4Segment_Node0_action N_ExtractNewBondedToStationfromX4Segment_Node0_action --> E_ExtractNewBondedToStationfromX4Segment S_ExtractNewBondedToStationfromX4Segment --> N_ExtractNewBondedToStationfromX4Segment_Node0 N_ExtractNewBondedToStationfromX4Segment_Node0 -- No --> E_ExtractNewBondedToStationfromX4Segment
File: GCX016.cbl
GIVEN:
A valid 3W disposition code has been confirmed in the DC table
WHEN:
The system processes the X4 segment data
THEN:
The system extracts the new bonded-to station code from the appropriate field in the X4 segment
β Consolidated Acceptance Criteria
- The system validates the station code against the DS table → the system confirms the station code is valid and allows the diversion to proceed, or generates an error if the station is not found
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ValidateNewStationCodeinDSTable(["Start Step"])
E_ValidateNewStationCodeinDSTable(["End Step"])
N_ValidateNewStationCodeinDSTable_Node0{"The system validates the station
code against the DS table"}:::decision N_ValidateNewStationCodeinDSTable_Node0_action["The system confirms the station
code is valid and allows the
diversion to proceed, or generates
an error if the station is not found"]:::main N_ValidateNewStationCodeinDSTable_Node0 -- Yes --> N_ValidateNewStationCodeinDSTable_Node0_action N_ValidateNewStationCodeinDSTable_Node0_action --> E_ValidateNewStationCodeinDSTable S_ValidateNewStationCodeinDSTable --> N_ValidateNewStationCodeinDSTable_Node0 N_ValidateNewStationCodeinDSTable_Node0 -- No --> E_ValidateNewStationCodeinDSTable
code against the DS table"}:::decision N_ValidateNewStationCodeinDSTable_Node0_action["The system confirms the station
code is valid and allows the
diversion to proceed, or generates
an error if the station is not found"]:::main N_ValidateNewStationCodeinDSTable_Node0 -- Yes --> N_ValidateNewStationCodeinDSTable_Node0_action N_ValidateNewStationCodeinDSTable_Node0_action --> E_ValidateNewStationCodeinDSTable S_ValidateNewStationCodeinDSTable --> N_ValidateNewStationCodeinDSTable_Node0 N_ValidateNewStationCodeinDSTable_Node0 -- No --> E_ValidateNewStationCodeinDSTable
File: GCX016.cbl
GIVEN:
A new bonded-to station code has been extracted from the X4 segment
WHEN:
The system validates the station code against the DS table
THEN:
- The system confirms the station code is valid
- Allows the diversion to proceed, or generates an error if the station is not found
β Consolidated Acceptance Criteria
- The system processes the diversion approval → the system updates the cargo record's bonded-to station field with the new validated station code
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UpdateCargoRecordBondedToStation(["Start Step"])
E_UpdateCargoRecordBondedToStation(["End Step"])
N_UpdateCargoRecordBondedToStation_Node0{"The system processes the diversion
approval"}:::decision N_UpdateCargoRecordBondedToStation_Node0_action["The system updates the cargo record
s bonded-to station field with the
new validated station code"]:::main N_UpdateCargoRecordBondedToStation_Node0 -- Yes --> N_UpdateCargoRecordBondedToStation_Node0_action N_UpdateCargoRecordBondedToStation_Node0_action --> E_UpdateCargoRecordBondedToStation S_UpdateCargoRecordBondedToStation --> N_UpdateCargoRecordBondedToStation_Node0 N_UpdateCargoRecordBondedToStation_Node0 -- No --> E_UpdateCargoRecordBondedToStation
approval"}:::decision N_UpdateCargoRecordBondedToStation_Node0_action["The system updates the cargo record
s bonded-to station field with the
new validated station code"]:::main N_UpdateCargoRecordBondedToStation_Node0 -- Yes --> N_UpdateCargoRecordBondedToStation_Node0_action N_UpdateCargoRecordBondedToStation_Node0_action --> E_UpdateCargoRecordBondedToStation S_UpdateCargoRecordBondedToStation --> N_UpdateCargoRecordBondedToStation_Node0 N_UpdateCargoRecordBondedToStation_Node0 -- No --> E_UpdateCargoRecordBondedToStation
File: GCX016.cbl
GIVEN:
The new bonded-to station code has been validated in the DS table
WHEN:
The system processes the diversion approval
THEN:
The system updates the cargo record's bonded-to station field with the new validated station code
β Consolidated Acceptance Criteria
- The system processes the status update → the system adds the 3W disposition code to the cargo status array with appropriate sequence and occurrence numbers
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UpdateCargoStatusArraywith3WCode(["Start Step"])
E_UpdateCargoStatusArraywith3WCode(["End Step"])
N_UpdateCargoStatusArraywith3WCode_Node0{"The system processes the status
update"}:::decision N_UpdateCargoStatusArraywith3WCode_Node0_action["The system adds the 3W disposition
code to the cargo status array with
appropriate sequence and occurrence
numbers"]:::main N_UpdateCargoStatusArraywith3WCode_Node0 -- Yes --> N_UpdateCargoStatusArraywith3WCode_Node0_action N_UpdateCargoStatusArraywith3WCode_Node0_action --> E_UpdateCargoStatusArraywith3WCode S_UpdateCargoStatusArraywith3WCode --> N_UpdateCargoStatusArraywith3WCode_Node0 N_UpdateCargoStatusArraywith3WCode_Node0 -- No --> E_UpdateCargoStatusArraywith3WCode
update"}:::decision N_UpdateCargoStatusArraywith3WCode_Node0_action["The system adds the 3W disposition
code to the cargo status array with
appropriate sequence and occurrence
numbers"]:::main N_UpdateCargoStatusArraywith3WCode_Node0 -- Yes --> N_UpdateCargoStatusArraywith3WCode_Node0_action N_UpdateCargoStatusArraywith3WCode_Node0_action --> E_UpdateCargoStatusArraywith3WCode S_UpdateCargoStatusArraywith3WCode --> N_UpdateCargoStatusArraywith3WCode_Node0 N_UpdateCargoStatusArraywith3WCode_Node0 -- No --> E_UpdateCargoStatusArraywith3WCode
File: GCX016.cbl
GIVEN:
The cargo record has been updated with the new bonded-to station
WHEN:
The system processes the status update
THEN:
- The system adds the 3w disposition code to the cargo status array with appropriate sequence
- Occurrence numbers
β Consolidated Acceptance Criteria
- The system completes the diversion processing → the system logs the diversion approval action with cargo details, old station, new station, and timestamp
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogDiversionApprovalAction(["Start Step"])
E_LogDiversionApprovalAction(["End Step"])
N_LogDiversionApprovalAction_Node0{"The system completes the diversion
processing"}:::decision N_LogDiversionApprovalAction_Node0_action["The system logs the diversion
approval action with cargo details,
old station, new station, and
timestamp"]:::main N_LogDiversionApprovalAction_Node0 -- Yes --> N_LogDiversionApprovalAction_Node0_action N_LogDiversionApprovalAction_Node0_action --> E_LogDiversionApprovalAction S_LogDiversionApprovalAction --> N_LogDiversionApprovalAction_Node0 N_LogDiversionApprovalAction_Node0 -- No --> E_LogDiversionApprovalAction
processing"}:::decision N_LogDiversionApprovalAction_Node0_action["The system logs the diversion
approval action with cargo details,
old station, new station, and
timestamp"]:::main N_LogDiversionApprovalAction_Node0 -- Yes --> N_LogDiversionApprovalAction_Node0_action N_LogDiversionApprovalAction_Node0_action --> E_LogDiversionApprovalAction S_LogDiversionApprovalAction --> N_LogDiversionApprovalAction_Node0 N_LogDiversionApprovalAction_Node0 -- No --> E_LogDiversionApprovalAction
File: GCX016.cbl
GIVEN:
The cargo status array has been updated with the 3W code
WHEN:
The system completes the diversion processing
THEN:
The system logs the diversion approval action with cargo details, old station, new station, and timestamp
β Consolidated Acceptance Criteria
- The system processes notifications → the system generates and sends diversion approval notifications to brokers, carriers, and other relevant parties
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GenerateDiversionApprovalNotification(["Start Step"])
E_GenerateDiversionApprovalNotification(["End Step"])
N_GenerateDiversionApprovalNotification_Node0{"The system processes notifications"}:::decision
N_GenerateDiversionApprovalNotification_Node0_action["The system generates and sends
diversion approval notifications to
brokers, carriers, and other
relevant parties"]:::main N_GenerateDiversionApprovalNotification_Node0 -- Yes --> N_GenerateDiversionApprovalNotification_Node0_action N_GenerateDiversionApprovalNotification_Node0_action --> E_GenerateDiversionApprovalNotification S_GenerateDiversionApprovalNotification --> N_GenerateDiversionApprovalNotification_Node0 N_GenerateDiversionApprovalNotification_Node0 -- No --> E_GenerateDiversionApprovalNotification
diversion approval notifications to
brokers, carriers, and other
relevant parties"]:::main N_GenerateDiversionApprovalNotification_Node0 -- Yes --> N_GenerateDiversionApprovalNotification_Node0_action N_GenerateDiversionApprovalNotification_Node0_action --> E_GenerateDiversionApprovalNotification S_GenerateDiversionApprovalNotification --> N_GenerateDiversionApprovalNotification_Node0 N_GenerateDiversionApprovalNotification_Node0 -- No --> E_GenerateDiversionApprovalNotification
File: GCX016.cbl
GIVEN:
The diversion approval action has been logged
WHEN:
The system processes notifications
THEN:
- The system generates
- Sends diversion approval notifications to brokers, carriers, and other relevant parties
β Consolidated Acceptance Criteria
- If if destination index update is required → the system updates the destination index if the new bonded-to station requires it based on cargo status and routing rules
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UpdateDestinationIndexifRequired(["Start Step"])
E_UpdateDestinationIndexifRequired(["End Step"])
N_UpdateDestinationIndexifRequired_Node0{"The system evaluates if destination
index update is required"}:::decision N_UpdateDestinationIndexifRequired_Node0_action["The system updates the destination
index if the new bonded-to station
requires it based on cargo status
and routing rules"]:::main N_UpdateDestinationIndexifRequired_Node0 -- Yes --> N_UpdateDestinationIndexifRequired_Node0_action N_UpdateDestinationIndexifRequired_Node0_action --> E_UpdateDestinationIndexifRequired S_UpdateDestinationIndexifRequired --> N_UpdateDestinationIndexifRequired_Node0 N_UpdateDestinationIndexifRequired_Node0 -- No --> E_UpdateDestinationIndexifRequired
index update is required"}:::decision N_UpdateDestinationIndexifRequired_Node0_action["The system updates the destination
index if the new bonded-to station
requires it based on cargo status
and routing rules"]:::main N_UpdateDestinationIndexifRequired_Node0 -- Yes --> N_UpdateDestinationIndexifRequired_Node0_action N_UpdateDestinationIndexifRequired_Node0_action --> E_UpdateDestinationIndexifRequired S_UpdateDestinationIndexifRequired --> N_UpdateDestinationIndexifRequired_Node0 N_UpdateDestinationIndexifRequired_Node0 -- No --> E_UpdateDestinationIndexifRequired
File: GCX016.cbl
GIVEN:
Diversion approval notifications have been generated
WHEN:
The system evaluates if destination index update is required
THEN:
- The system updates the destination index if the new bonded-to station requires it based on cargo status
- Routing rules
β Consolidated Acceptance Criteria
- The 3W disposition code is not found in the DC table → the system generates an error message indicating invalid 3W disposition code and stops diversion processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GenerateErrorMessageInvalid3WCode(["Start Step"])
E_GenerateErrorMessageInvalid3WCode(["End Step"])
N_GenerateErrorMessageInvalid3WCode_Node0{"The 3W disposition code is not
found in the DC table"}:::decision N_GenerateErrorMessageInvalid3WCode_Node0_action["The system generates an error
message indicating invalid 3W
disposition code and stops diversion
processing"]:::main N_GenerateErrorMessageInvalid3WCode_Node0 -- Yes --> N_GenerateErrorMessageInvalid3WCode_Node0_action N_GenerateErrorMessageInvalid3WCode_Node0_action --> E_GenerateErrorMessageInvalid3WCode S_GenerateErrorMessageInvalid3WCode --> N_GenerateErrorMessageInvalid3WCode_Node0 N_GenerateErrorMessageInvalid3WCode_Node0 -- No --> E_GenerateErrorMessageInvalid3WCode
found in the DC table"}:::decision N_GenerateErrorMessageInvalid3WCode_Node0_action["The system generates an error
message indicating invalid 3W
disposition code and stops diversion
processing"]:::main N_GenerateErrorMessageInvalid3WCode_Node0 -- Yes --> N_GenerateErrorMessageInvalid3WCode_Node0_action N_GenerateErrorMessageInvalid3WCode_Node0_action --> E_GenerateErrorMessageInvalid3WCode S_GenerateErrorMessageInvalid3WCode --> N_GenerateErrorMessageInvalid3WCode_Node0 N_GenerateErrorMessageInvalid3WCode_Node0 -- No --> E_GenerateErrorMessageInvalid3WCode
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
An X4 segment is received with a 3W disposition code
WHEN:
The 3W disposition code is not found in the DC table
THEN:
- The system generates an error message indicating invalid 3w disposition code
- Stops diversion processing
β Consolidated Acceptance Criteria
- The station code is not found in the DS table → the system generates an error message indicating invalid station code and stops diversion processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GenerateErrorMessageInvalidStation(["Start Step"])
E_GenerateErrorMessageInvalidStation(["End Step"])
N_GenerateErrorMessageInvalidStation_Node0{"The station code is not found in
the DS table"}:::decision N_GenerateErrorMessageInvalidStation_Node0_action["The system generates an error
message indicating invalid station
code and stops diversion processing"]:::main N_GenerateErrorMessageInvalidStation_Node0 -- Yes --> N_GenerateErrorMessageInvalidStation_Node0_action N_GenerateErrorMessageInvalidStation_Node0_action --> E_GenerateErrorMessageInvalidStation S_GenerateErrorMessageInvalidStation --> N_GenerateErrorMessageInvalidStation_Node0 N_GenerateErrorMessageInvalidStation_Node0 -- No --> E_GenerateErrorMessageInvalidStation
the DS table"}:::decision N_GenerateErrorMessageInvalidStation_Node0_action["The system generates an error
message indicating invalid station
code and stops diversion processing"]:::main N_GenerateErrorMessageInvalidStation_Node0 -- Yes --> N_GenerateErrorMessageInvalidStation_Node0_action N_GenerateErrorMessageInvalidStation_Node0_action --> E_GenerateErrorMessageInvalidStation S_GenerateErrorMessageInvalidStation --> N_GenerateErrorMessageInvalidStation_Node0 N_GenerateErrorMessageInvalidStation_Node0 -- No --> E_GenerateErrorMessageInvalidStation
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
A new bonded-to station code has been extracted from X4 segment
WHEN:
The station code is not found in the DS table
THEN:
- The system generates an error message indicating invalid station code
- Stops diversion processing
β Consolidated Acceptance Criteria
- The system looks up the disposition code in the DC table → the system confirms the code exists and retrieves its properties, or generates an error if not found
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ValidateDispositionCode02inDCTable(["Start Step"])
E_ValidateDispositionCode02inDCTable(["End Step"])
N_ValidateDispositionCode02inDCTable_Node0{"The system looks up the disposition
code in the DC table"}:::decision N_ValidateDispositionCode02inDCTable_Node0_action["The system confirms the code exists
and retrieves its properties, or
generates an error if not found"]:::main N_ValidateDispositionCode02inDCTable_Node0 -- Yes --> N_ValidateDispositionCode02inDCTable_Node0_action N_ValidateDispositionCode02inDCTable_Node0_action --> E_ValidateDispositionCode02inDCTable S_ValidateDispositionCode02inDCTable --> N_ValidateDispositionCode02inDCTable_Node0 N_ValidateDispositionCode02inDCTable_Node0 -- No --> E_ValidateDispositionCode02inDCTable
code in the DC table"}:::decision N_ValidateDispositionCode02inDCTable_Node0_action["The system confirms the code exists
and retrieves its properties, or
generates an error if not found"]:::main N_ValidateDispositionCode02inDCTable_Node0 -- Yes --> N_ValidateDispositionCode02inDCTable_Node0_action N_ValidateDispositionCode02inDCTable_Node0_action --> E_ValidateDispositionCode02inDCTable S_ValidateDispositionCode02inDCTable --> N_ValidateDispositionCode02inDCTable_Node0 N_ValidateDispositionCode02inDCTable_Node0 -- No --> E_ValidateDispositionCode02inDCTable
File: GCX016.cbl
GIVEN:
A disposition code 02 is received for processing
WHEN:
The system looks up the disposition code in the DC table
THEN:
- The system confirms the code exists
- Retrieves its properties, or generates an error if not found
β Consolidated Acceptance Criteria
- The system retrieves the code properties → the system loads counterpart disposition codes, release flags, and processing instructions for the code
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RetrieveCodePropertiesandCounterpartInformation(["Start Step"])
E_RetrieveCodePropertiesandCounterpartInformation(["End Step"])
N_RetrieveCodePropertiesandCounterpartInformation_Node0{"The system retrieves the code
properties"}:::decision N_RetrieveCodePropertiesandCounterpartInformation_Node0_action["The system loads counterpart
disposition codes, release flags,
and processing instructions for the
code"]:::main N_RetrieveCodePropertiesandCounterpartInformation_Node0 -- Yes --> N_RetrieveCodePropertiesandCounterpartInformation_Node0_action N_RetrieveCodePropertiesandCounterpartInformation_Node0_action --> E_RetrieveCodePropertiesandCounterpartInformation S_RetrieveCodePropertiesandCounterpartInformation --> N_RetrieveCodePropertiesandCounterpartInformation_Node0 N_RetrieveCodePropertiesandCounterpartInformation_Node0 -- No --> E_RetrieveCodePropertiesandCounterpartInformation
properties"}:::decision N_RetrieveCodePropertiesandCounterpartInformation_Node0_action["The system loads counterpart
disposition codes, release flags,
and processing instructions for the
code"]:::main N_RetrieveCodePropertiesandCounterpartInformation_Node0 -- Yes --> N_RetrieveCodePropertiesandCounterpartInformation_Node0_action N_RetrieveCodePropertiesandCounterpartInformation_Node0_action --> E_RetrieveCodePropertiesandCounterpartInformation S_RetrieveCodePropertiesandCounterpartInformation --> N_RetrieveCodePropertiesandCounterpartInformation_Node0 N_RetrieveCodePropertiesandCounterpartInformation_Node0 -- No --> E_RetrieveCodePropertiesandCounterpartInformation
File: GCX016.cbl
GIVEN:
A valid disposition code 02 is found in the DC table
WHEN:
The system retrieves the code properties
THEN:
The system loads counterpart disposition codes, release flags, and processing instructions for the code
β Consolidated Acceptance Criteria
- The system searches the current status array for the same disposition code → if the code already exists, processing is skipped; if not found, processing continues
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CheckifCodeAlreadyExistsinStatusArray(["Start Step"])
E_CheckifCodeAlreadyExistsinStatusArray(["End Step"])
N_CheckifCodeAlreadyExistsinStatusArray_Node0{"The system searches the current
status array for the same
disposition code"}:::decision N_CheckifCodeAlreadyExistsinStatusArray_Node0_action["If the code already exists,
processing is skipped if not found,
processing continues"]:::main N_CheckifCodeAlreadyExistsinStatusArray_Node0 -- Yes --> N_CheckifCodeAlreadyExistsinStatusArray_Node0_action N_CheckifCodeAlreadyExistsinStatusArray_Node0_action --> E_CheckifCodeAlreadyExistsinStatusArray S_CheckifCodeAlreadyExistsinStatusArray --> N_CheckifCodeAlreadyExistsinStatusArray_Node0 N_CheckifCodeAlreadyExistsinStatusArray_Node0 -- No --> E_CheckifCodeAlreadyExistsinStatusArray
status array for the same
disposition code"}:::decision N_CheckifCodeAlreadyExistsinStatusArray_Node0_action["If the code already exists,
processing is skipped if not found,
processing continues"]:::main N_CheckifCodeAlreadyExistsinStatusArray_Node0 -- Yes --> N_CheckifCodeAlreadyExistsinStatusArray_Node0_action N_CheckifCodeAlreadyExistsinStatusArray_Node0_action --> E_CheckifCodeAlreadyExistsinStatusArray S_CheckifCodeAlreadyExistsinStatusArray --> N_CheckifCodeAlreadyExistsinStatusArray_Node0 N_CheckifCodeAlreadyExistsinStatusArray_Node0 -- No --> E_CheckifCodeAlreadyExistsinStatusArray
File: GCX016.cbl
GIVEN:
A disposition code 02 is being processed for a cargo record
WHEN:
The system searches the current status array for the same disposition code
THEN:
If the code already exists, processing is skipped; if not found, processing continues
β Consolidated Acceptance Criteria
- The system processes the new disposition code → all counterpart disposition codes are removed from the cargo status array before adding the new code
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RemoveAnyCounterpartDispositionCodes(["Start Step"])
E_RemoveAnyCounterpartDispositionCodes(["End Step"])
N_RemoveAnyCounterpartDispositionCodes_Node0{"The system processes the new
disposition code"}:::decision N_RemoveAnyCounterpartDispositionCodes_Node0_action["All counterpart disposition codes
are removed from the cargo status
array before adding the new code"]:::main N_RemoveAnyCounterpartDispositionCodes_Node0 -- Yes --> N_RemoveAnyCounterpartDispositionCodes_Node0_action N_RemoveAnyCounterpartDispositionCodes_Node0_action --> E_RemoveAnyCounterpartDispositionCodes S_RemoveAnyCounterpartDispositionCodes --> N_RemoveAnyCounterpartDispositionCodes_Node0 N_RemoveAnyCounterpartDispositionCodes_Node0 -- No --> E_RemoveAnyCounterpartDispositionCodes
disposition code"}:::decision N_RemoveAnyCounterpartDispositionCodes_Node0_action["All counterpart disposition codes
are removed from the cargo status
array before adding the new code"]:::main N_RemoveAnyCounterpartDispositionCodes_Node0 -- Yes --> N_RemoveAnyCounterpartDispositionCodes_Node0_action N_RemoveAnyCounterpartDispositionCodes_Node0_action --> E_RemoveAnyCounterpartDispositionCodes S_RemoveAnyCounterpartDispositionCodes --> N_RemoveAnyCounterpartDispositionCodes_Node0 N_RemoveAnyCounterpartDispositionCodes_Node0 -- No --> E_RemoveAnyCounterpartDispositionCodes
File: GCX016.cbl
GIVEN:
A disposition code 02 has counterpart codes defined in the DC table
WHEN:
The system processes the new disposition code
THEN:
All counterpart disposition codes are removed from the cargo status array before adding the new code
β Consolidated Acceptance Criteria
- The system validates the entry data → entry numbers must be properly formatted and quantities must be positive numeric values within cargo limits
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ValidateEntryNumberandQuantityInformation(["Start Step"])
E_ValidateEntryNumberandQuantityInformation(["End Step"])
N_ValidateEntryNumberandQuantityInformation_Node0{"The system validates the entry data"}:::decision
N_ValidateEntryNumberandQuantityInformation_Node0_action["Entry numbers must be properly
formatted and quantities must be
positive numeric values within cargo
limits"]:::main N_ValidateEntryNumberandQuantityInformation_Node0 -- Yes --> N_ValidateEntryNumberandQuantityInformation_Node0_action N_ValidateEntryNumberandQuantityInformation_Node0_action --> E_ValidateEntryNumberandQuantityInformation S_ValidateEntryNumberandQuantityInformation --> N_ValidateEntryNumberandQuantityInformation_Node0 N_ValidateEntryNumberandQuantityInformation_Node0 -- No --> E_ValidateEntryNumberandQuantityInformation
formatted and quantities must be
positive numeric values within cargo
limits"]:::main N_ValidateEntryNumberandQuantityInformation_Node0 -- Yes --> N_ValidateEntryNumberandQuantityInformation_Node0_action N_ValidateEntryNumberandQuantityInformation_Node0_action --> E_ValidateEntryNumberandQuantityInformation S_ValidateEntryNumberandQuantityInformation --> N_ValidateEntryNumberandQuantityInformation_Node0 N_ValidateEntryNumberandQuantityInformation_Node0 -- No --> E_ValidateEntryNumberandQuantityInformation
File: GCX016.cbl
GIVEN:
A disposition code 02 includes entry number and quantity information
WHEN:
The system validates the entry data
THEN:
- Entry numbers must be properly formatted
- Quantities must be positive numeric values within cargo limits
β Consolidated Acceptance Criteria
- The system calculates the quantity impact → the system determines whether to add or subtract from existing release quantities based on the disposition code action
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CalculateReleaseQuantityImpact(["Start Step"])
E_CalculateReleaseQuantityImpact(["End Step"])
N_CalculateReleaseQuantityImpact_Node0{"The system calculates the quantity
impact"}:::decision N_CalculateReleaseQuantityImpact_Node0_action["The system determines whether to
add or subtract from existing
release quantities based on the
disposition code action"]:::main N_CalculateReleaseQuantityImpact_Node0 -- Yes --> N_CalculateReleaseQuantityImpact_Node0_action N_CalculateReleaseQuantityImpact_Node0_action --> E_CalculateReleaseQuantityImpact S_CalculateReleaseQuantityImpact --> N_CalculateReleaseQuantityImpact_Node0 N_CalculateReleaseQuantityImpact_Node0 -- No --> E_CalculateReleaseQuantityImpact
impact"}:::decision N_CalculateReleaseQuantityImpact_Node0_action["The system determines whether to
add or subtract from existing
release quantities based on the
disposition code action"]:::main N_CalculateReleaseQuantityImpact_Node0 -- Yes --> N_CalculateReleaseQuantityImpact_Node0_action N_CalculateReleaseQuantityImpact_Node0_action --> E_CalculateReleaseQuantityImpact S_CalculateReleaseQuantityImpact --> N_CalculateReleaseQuantityImpact_Node0 N_CalculateReleaseQuantityImpact_Node0 -- No --> E_CalculateReleaseQuantityImpact
File: GCX016.cbl
GIVEN:
A valid disposition code 02 with quantity information
WHEN:
The system calculates the quantity impact
THEN:
The system determines whether to add or subtract from existing release quantities based on the disposition code action
β Consolidated Acceptance Criteria
- The system adds the code to the status array → the code is added with released flag set to true and quantity information included
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AddReleaseCodetoStatusArraywithReleasedFlag(["Start Step"])
E_AddReleaseCodetoStatusArraywithReleasedFlag(["End Step"])
N_AddReleaseCodetoStatusArraywithReleasedFlag_Node0{"The system adds the code to the
status array"}:::decision N_AddReleaseCodetoStatusArraywithReleasedFlag_Node0_action["The code is added with released
flag set to true and quantity
information included"]:::main N_AddReleaseCodetoStatusArraywithReleasedFlag_Node0 -- Yes --> N_AddReleaseCodetoStatusArraywithReleasedFlag_Node0_action N_AddReleaseCodetoStatusArraywithReleasedFlag_Node0_action --> E_AddReleaseCodetoStatusArraywithReleasedFlag S_AddReleaseCodetoStatusArraywithReleasedFlag --> N_AddReleaseCodetoStatusArraywithReleasedFlag_Node0 N_AddReleaseCodetoStatusArraywithReleasedFlag_Node0 -- No --> E_AddReleaseCodetoStatusArraywithReleasedFlag
status array"}:::decision N_AddReleaseCodetoStatusArraywithReleasedFlag_Node0_action["The code is added with released
flag set to true and quantity
information included"]:::main N_AddReleaseCodetoStatusArraywithReleasedFlag_Node0 -- Yes --> N_AddReleaseCodetoStatusArraywithReleasedFlag_Node0_action N_AddReleaseCodetoStatusArraywithReleasedFlag_Node0_action --> E_AddReleaseCodetoStatusArraywithReleasedFlag S_AddReleaseCodetoStatusArraywithReleasedFlag --> N_AddReleaseCodetoStatusArraywithReleasedFlag_Node0 N_AddReleaseCodetoStatusArraywithReleasedFlag_Node0 -- No --> E_AddReleaseCodetoStatusArraywithReleasedFlag
File: GCX016.cbl
GIVEN:
A validated disposition code 02 with calculated quantity impact
WHEN:
The system adds the code to the status array
THEN:
- The code is added with released flag set to true
- Quantity information included
β Consolidated Acceptance Criteria
- The system analyzes the cargo state → if released quantity equals or exceeds total quantity and no hold codes exist, cargo qualifies for full release
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AnalyzeUpdatedStatusArrayforCargoState(["Start Step"])
E_AnalyzeUpdatedStatusArrayforCargoState(["End Step"])
N_AnalyzeUpdatedStatusArrayforCargoState_Node0{"The system analyzes the cargo state"}:::decision
N_AnalyzeUpdatedStatusArrayforCargoState_Node0_action["If released quantity equals or
exceeds total quantity and no hold
codes exist, cargo qualifies for
full release"]:::main N_AnalyzeUpdatedStatusArrayforCargoState_Node0 -- Yes --> N_AnalyzeUpdatedStatusArrayforCargoState_Node0_action N_AnalyzeUpdatedStatusArrayforCargoState_Node0_action --> E_AnalyzeUpdatedStatusArrayforCargoState S_AnalyzeUpdatedStatusArrayforCargoState --> N_AnalyzeUpdatedStatusArrayforCargoState_Node0 N_AnalyzeUpdatedStatusArrayforCargoState_Node0 -- No --> E_AnalyzeUpdatedStatusArrayforCargoState
exceeds total quantity and no hold
codes exist, cargo qualifies for
full release"]:::main N_AnalyzeUpdatedStatusArrayforCargoState_Node0 -- Yes --> N_AnalyzeUpdatedStatusArrayforCargoState_Node0_action N_AnalyzeUpdatedStatusArrayforCargoState_Node0_action --> E_AnalyzeUpdatedStatusArrayforCargoState S_AnalyzeUpdatedStatusArrayforCargoState --> N_AnalyzeUpdatedStatusArrayforCargoState_Node0 N_AnalyzeUpdatedStatusArrayforCargoState_Node0 -- No --> E_AnalyzeUpdatedStatusArrayforCargoState
File: GCX016.cbl
GIVEN:
The status array has been updated with disposition code 02
WHEN:
The system analyzes the cargo state
THEN:
- If released quantity equals or exceeds total quantity
- No hold codes exist, cargo qualifies for full release
β Consolidated Acceptance Criteria
- The system updates the cargo record → the released quantity field is updated to reflect the new release amount
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UpdateReleasedQuantityinCargoRecord(["Start Step"])
E_UpdateReleasedQuantityinCargoRecord(["End Step"])
N_UpdateReleasedQuantityinCargoRecord_Node0{"The system updates the cargo record"}:::decision
N_UpdateReleasedQuantityinCargoRecord_Node0_action["The released quantity field is
updated to reflect the new release
amount"]:::main N_UpdateReleasedQuantityinCargoRecord_Node0 -- Yes --> N_UpdateReleasedQuantityinCargoRecord_Node0_action N_UpdateReleasedQuantityinCargoRecord_Node0_action --> E_UpdateReleasedQuantityinCargoRecord S_UpdateReleasedQuantityinCargoRecord --> N_UpdateReleasedQuantityinCargoRecord_Node0 N_UpdateReleasedQuantityinCargoRecord_Node0 -- No --> E_UpdateReleasedQuantityinCargoRecord
updated to reflect the new release
amount"]:::main N_UpdateReleasedQuantityinCargoRecord_Node0 -- Yes --> N_UpdateReleasedQuantityinCargoRecord_Node0_action N_UpdateReleasedQuantityinCargoRecord_Node0_action --> E_UpdateReleasedQuantityinCargoRecord S_UpdateReleasedQuantityinCargoRecord --> N_UpdateReleasedQuantityinCargoRecord_Node0 N_UpdateReleasedQuantityinCargoRecord_Node0 -- No --> E_UpdateReleasedQuantityinCargoRecord
File: GCX016.cbl
GIVEN:
A disposition code 02 has been processed with quantity impact
WHEN:
The system updates the cargo record
THEN:
The released quantity field is updated to reflect the new release amount
β Consolidated Acceptance Criteria
- The system generates the release message → the message includes cargo identification, release quantities, and disposition code details
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GenerateReleaseMessagewithQuantityDetails(["Start Step"])
E_GenerateReleaseMessagewithQuantityDetails(["End Step"])
N_GenerateReleaseMessagewithQuantityDetails_Node0{"The system generates the release
message"}:::decision N_GenerateReleaseMessagewithQuantityDetails_Node0_action["The message includes cargo
identification, release quantities,
and disposition code details"]:::main N_GenerateReleaseMessagewithQuantityDetails_Node0 -- Yes --> N_GenerateReleaseMessagewithQuantityDetails_Node0_action N_GenerateReleaseMessagewithQuantityDetails_Node0_action --> E_GenerateReleaseMessagewithQuantityDetails S_GenerateReleaseMessagewithQuantityDetails --> N_GenerateReleaseMessagewithQuantityDetails_Node0 N_GenerateReleaseMessagewithQuantityDetails_Node0 -- No --> E_GenerateReleaseMessagewithQuantityDetails
message"}:::decision N_GenerateReleaseMessagewithQuantityDetails_Node0_action["The message includes cargo
identification, release quantities,
and disposition code details"]:::main N_GenerateReleaseMessagewithQuantityDetails_Node0 -- Yes --> N_GenerateReleaseMessagewithQuantityDetails_Node0_action N_GenerateReleaseMessagewithQuantityDetails_Node0_action --> E_GenerateReleaseMessagewithQuantityDetails S_GenerateReleaseMessagewithQuantityDetails --> N_GenerateReleaseMessagewithQuantityDetails_Node0 N_GenerateReleaseMessagewithQuantityDetails_Node0 -- No --> E_GenerateReleaseMessagewithQuantityDetails
File: GCX016.cbl
GIVEN:
A cargo record has been successfully processed for release
WHEN:
The system generates the release message
THEN:
The message includes cargo identification, release quantities, and disposition code details
β Consolidated Acceptance Criteria
- The system calls integration services → external systems are notified of the cargo release status change
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CallIntegrationServicesforReleaseNotification(["Start Step"])
E_CallIntegrationServicesforReleaseNotification(["End Step"])
N_CallIntegrationServicesforReleaseNotification_Node0{"The system calls integration
services"}:::decision N_CallIntegrationServicesforReleaseNotification_Node0_action["External systems are notified of
the cargo release status change"]:::main N_CallIntegrationServicesforReleaseNotification_Node0 -- Yes --> N_CallIntegrationServicesforReleaseNotification_Node0_action N_CallIntegrationServicesforReleaseNotification_Node0_action --> E_CallIntegrationServicesforReleaseNotification S_CallIntegrationServicesforReleaseNotification --> N_CallIntegrationServicesforReleaseNotification_Node0 N_CallIntegrationServicesforReleaseNotification_Node0 -- No --> E_CallIntegrationServicesforReleaseNotification
services"}:::decision N_CallIntegrationServicesforReleaseNotification_Node0_action["External systems are notified of
the cargo release status change"]:::main N_CallIntegrationServicesforReleaseNotification_Node0 -- Yes --> N_CallIntegrationServicesforReleaseNotification_Node0_action N_CallIntegrationServicesforReleaseNotification_Node0_action --> E_CallIntegrationServicesforReleaseNotification S_CallIntegrationServicesforReleaseNotification --> N_CallIntegrationServicesforReleaseNotification_Node0 N_CallIntegrationServicesforReleaseNotification_Node0 -- No --> E_CallIntegrationServicesforReleaseNotification
File: GCX016.cbl
GIVEN:
A cargo release has been processed and message generated
WHEN:
The system calls integration services
THEN:
External systems are notified of the cargo release status change
β Consolidated Acceptance Criteria
- The system updates the database → the cargo record is updated with new status, quantities, and disposition codes
- The system commits the changes to the GCCC-CARGO-ROOT database → the system successfully updates the cargo record with cleared bond data and new status information
- The system updates the cargo record in database → the system saves all arrival flags, dates, and status changes to the cargo record
- Status changes have been made to the cargo record → the system updates the cargo record in the database with the new status information
- The system commits the cargo record changes to the database → the cargo record is updated with new status, status description, hold flags, and cleared release quantities
- The system finalizes the manual release transaction → update the cargo record in database with all manual release changes and status modifications
- The system saves the cargo record → all cargo release changes are persisted to the database
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UpdateCargoRecordinDatabase(["Start Step"])
E_UpdateCargoRecordinDatabase(["End Step"])
N_UpdateCargoRecordinDatabase_Node0{"The system updates the database"}:::decision
N_UpdateCargoRecordinDatabase_Node0_action["The cargo record is updated with
new status, quantities, and
disposition codes"]:::main N_UpdateCargoRecordinDatabase_Node0 -- Yes --> N_UpdateCargoRecordinDatabase_Node0_action N_UpdateCargoRecordinDatabase_Node0_action --> E_UpdateCargoRecordinDatabase S_UpdateCargoRecordinDatabase --> N_UpdateCargoRecordinDatabase_Node0 N_UpdateCargoRecordinDatabase_Node1{"The system commits the changes to
the GCCC-CARGO-ROOT database"}:::decision N_UpdateCargoRecordinDatabase_Node1_action["The system successfully updates the
cargo record with cleared bond data
and new status information"]:::main N_UpdateCargoRecordinDatabase_Node1 -- Yes --> N_UpdateCargoRecordinDatabase_Node1_action N_UpdateCargoRecordinDatabase_Node1_action --> E_UpdateCargoRecordinDatabase N_UpdateCargoRecordinDatabase_Node0 -- No --> N_UpdateCargoRecordinDatabase_Node1 N_UpdateCargoRecordinDatabase_Node2{"The system updates the cargo record
in database"}:::decision N_UpdateCargoRecordinDatabase_Node2_action["The system saves all arrival flags,
dates, and status changes to the
cargo record"]:::main N_UpdateCargoRecordinDatabase_Node2 -- Yes --> N_UpdateCargoRecordinDatabase_Node2_action N_UpdateCargoRecordinDatabase_Node2_action --> E_UpdateCargoRecordinDatabase N_UpdateCargoRecordinDatabase_Node1 -- No --> N_UpdateCargoRecordinDatabase_Node2 N_UpdateCargoRecordinDatabase_Node3{"Status changes have been made to
the cargo record"}:::decision N_UpdateCargoRecordinDatabase_Node3_action["The system updates the cargo record
in the database with the new status
information"]:::main N_UpdateCargoRecordinDatabase_Node3 -- Yes --> N_UpdateCargoRecordinDatabase_Node3_action N_UpdateCargoRecordinDatabase_Node3_action --> E_UpdateCargoRecordinDatabase N_UpdateCargoRecordinDatabase_Node2 -- No --> N_UpdateCargoRecordinDatabase_Node3 N_UpdateCargoRecordinDatabase_Node4{"The system commits the cargo record
changes to the database"}:::decision N_UpdateCargoRecordinDatabase_Node4_action["The cargo record is updated with
new status, status description, hold
flags, and cleared release
quantities"]:::main N_UpdateCargoRecordinDatabase_Node4 -- Yes --> N_UpdateCargoRecordinDatabase_Node4_action N_UpdateCargoRecordinDatabase_Node4_action --> E_UpdateCargoRecordinDatabase N_UpdateCargoRecordinDatabase_Node3 -- No --> N_UpdateCargoRecordinDatabase_Node4 N_UpdateCargoRecordinDatabase_Node5{"The system finalizes the manual
release transaction"}:::decision N_UpdateCargoRecordinDatabase_Node5_action["Update the cargo record in database
with all manual release changes and
status modifications"]:::main N_UpdateCargoRecordinDatabase_Node5 -- Yes --> N_UpdateCargoRecordinDatabase_Node5_action N_UpdateCargoRecordinDatabase_Node5_action --> E_UpdateCargoRecordinDatabase N_UpdateCargoRecordinDatabase_Node4 -- No --> N_UpdateCargoRecordinDatabase_Node5 N_UpdateCargoRecordinDatabase_Node6{"The system saves the cargo record"}:::decision N_UpdateCargoRecordinDatabase_Node6_action["All cargo release changes are
persisted to the database"]:::main N_UpdateCargoRecordinDatabase_Node6 -- Yes --> N_UpdateCargoRecordinDatabase_Node6_action N_UpdateCargoRecordinDatabase_Node6_action --> E_UpdateCargoRecordinDatabase N_UpdateCargoRecordinDatabase_Node5 -- No --> N_UpdateCargoRecordinDatabase_Node6 N_UpdateCargoRecordinDatabase_Node6 -- No --> E_UpdateCargoRecordinDatabase
new status, quantities, and
disposition codes"]:::main N_UpdateCargoRecordinDatabase_Node0 -- Yes --> N_UpdateCargoRecordinDatabase_Node0_action N_UpdateCargoRecordinDatabase_Node0_action --> E_UpdateCargoRecordinDatabase S_UpdateCargoRecordinDatabase --> N_UpdateCargoRecordinDatabase_Node0 N_UpdateCargoRecordinDatabase_Node1{"The system commits the changes to
the GCCC-CARGO-ROOT database"}:::decision N_UpdateCargoRecordinDatabase_Node1_action["The system successfully updates the
cargo record with cleared bond data
and new status information"]:::main N_UpdateCargoRecordinDatabase_Node1 -- Yes --> N_UpdateCargoRecordinDatabase_Node1_action N_UpdateCargoRecordinDatabase_Node1_action --> E_UpdateCargoRecordinDatabase N_UpdateCargoRecordinDatabase_Node0 -- No --> N_UpdateCargoRecordinDatabase_Node1 N_UpdateCargoRecordinDatabase_Node2{"The system updates the cargo record
in database"}:::decision N_UpdateCargoRecordinDatabase_Node2_action["The system saves all arrival flags,
dates, and status changes to the
cargo record"]:::main N_UpdateCargoRecordinDatabase_Node2 -- Yes --> N_UpdateCargoRecordinDatabase_Node2_action N_UpdateCargoRecordinDatabase_Node2_action --> E_UpdateCargoRecordinDatabase N_UpdateCargoRecordinDatabase_Node1 -- No --> N_UpdateCargoRecordinDatabase_Node2 N_UpdateCargoRecordinDatabase_Node3{"Status changes have been made to
the cargo record"}:::decision N_UpdateCargoRecordinDatabase_Node3_action["The system updates the cargo record
in the database with the new status
information"]:::main N_UpdateCargoRecordinDatabase_Node3 -- Yes --> N_UpdateCargoRecordinDatabase_Node3_action N_UpdateCargoRecordinDatabase_Node3_action --> E_UpdateCargoRecordinDatabase N_UpdateCargoRecordinDatabase_Node2 -- No --> N_UpdateCargoRecordinDatabase_Node3 N_UpdateCargoRecordinDatabase_Node4{"The system commits the cargo record
changes to the database"}:::decision N_UpdateCargoRecordinDatabase_Node4_action["The cargo record is updated with
new status, status description, hold
flags, and cleared release
quantities"]:::main N_UpdateCargoRecordinDatabase_Node4 -- Yes --> N_UpdateCargoRecordinDatabase_Node4_action N_UpdateCargoRecordinDatabase_Node4_action --> E_UpdateCargoRecordinDatabase N_UpdateCargoRecordinDatabase_Node3 -- No --> N_UpdateCargoRecordinDatabase_Node4 N_UpdateCargoRecordinDatabase_Node5{"The system finalizes the manual
release transaction"}:::decision N_UpdateCargoRecordinDatabase_Node5_action["Update the cargo record in database
with all manual release changes and
status modifications"]:::main N_UpdateCargoRecordinDatabase_Node5 -- Yes --> N_UpdateCargoRecordinDatabase_Node5_action N_UpdateCargoRecordinDatabase_Node5_action --> E_UpdateCargoRecordinDatabase N_UpdateCargoRecordinDatabase_Node4 -- No --> N_UpdateCargoRecordinDatabase_Node5 N_UpdateCargoRecordinDatabase_Node6{"The system saves the cargo record"}:::decision N_UpdateCargoRecordinDatabase_Node6_action["All cargo release changes are
persisted to the database"]:::main N_UpdateCargoRecordinDatabase_Node6 -- Yes --> N_UpdateCargoRecordinDatabase_Node6_action N_UpdateCargoRecordinDatabase_Node6_action --> E_UpdateCargoRecordinDatabase N_UpdateCargoRecordinDatabase_Node5 -- No --> N_UpdateCargoRecordinDatabase_Node6 N_UpdateCargoRecordinDatabase_Node6 -- No --> E_UpdateCargoRecordinDatabase
File: GCX016.cbl
GIVEN:
All release processing has been completed successfully
WHEN:
The system updates the database
THEN:
The cargo record is updated with new status, quantities, and disposition codes
File: GCX016.cbl
GIVEN:
A cargo record with completed disposition code 95 processing changes
WHEN:
The system commits the changes to the GCCC-CARGO-ROOT database
THEN:
- The system successfully updates the cargo record with cleared bond data
- New status information
File: GCX016.cbl
GIVEN:
All arrival processing is complete including status array updates
WHEN:
The system updates the cargo record in database
THEN:
The system saves all arrival flags, dates, and status changes to the cargo record
File: GCX016.cbl
GIVEN:
A cargo record that has undergone status changes
WHEN:
Status changes have been made to the cargo record
THEN:
The system updates the cargo record in the database with the new status information
File: GCX016.cbl
GIVEN:
Cargo status has been changed to unreleased with updated status array and flags
WHEN:
The system commits the cargo record changes to the database
THEN:
The cargo record is updated with new status, status description, hold flags, and cleared release quantities
File: GCX016.cbl
GIVEN:
Manual release notification has been generated
WHEN:
The system finalizes the manual release transaction
THEN:
- Update the cargo record in database with all manual release changes
- Status modifications
File: GCX016.cbl
GIVEN:
Cargo with updated release status, release date, and cleared hold flags
WHEN:
The system saves the cargo record
THEN:
All cargo release changes are persisted to the database
β Consolidated Acceptance Criteria
- The system logs the transaction → audit trail includes cargo ID, disposition code, quantities, timestamps, and user information
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogReleaseTransactionforAuditTrail(["Start Step"])
E_LogReleaseTransactionforAuditTrail(["End Step"])
N_LogReleaseTransactionforAuditTrail_Node0{"The system logs the transaction"}:::decision
N_LogReleaseTransactionforAuditTrail_Node0_action["Audit trail includes cargo ID,
disposition code, quantities,
timestamps, and user information"]:::main N_LogReleaseTransactionforAuditTrail_Node0 -- Yes --> N_LogReleaseTransactionforAuditTrail_Node0_action N_LogReleaseTransactionforAuditTrail_Node0_action --> E_LogReleaseTransactionforAuditTrail S_LogReleaseTransactionforAuditTrail --> N_LogReleaseTransactionforAuditTrail_Node0 N_LogReleaseTransactionforAuditTrail_Node0 -- No --> E_LogReleaseTransactionforAuditTrail
disposition code, quantities,
timestamps, and user information"]:::main N_LogReleaseTransactionforAuditTrail_Node0 -- Yes --> N_LogReleaseTransactionforAuditTrail_Node0_action N_LogReleaseTransactionforAuditTrail_Node0_action --> E_LogReleaseTransactionforAuditTrail S_LogReleaseTransactionforAuditTrail --> N_LogReleaseTransactionforAuditTrail_Node0 N_LogReleaseTransactionforAuditTrail_Node0 -- No --> E_LogReleaseTransactionforAuditTrail
File: GCX016.cbl
GIVEN:
A cargo release transaction has been completed
WHEN:
The system logs the transaction
THEN:
Audit trail includes cargo ID, disposition code, quantities, timestamps, and user information
β Consolidated Acceptance Criteria
- The system processes the invalid code → an error message is generated indicating the disposition code is not valid in the system
- The system needs to report the invalid code error → the system generates an error message containing the invalid disposition code details
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GenerateErrorMessageforInvalidCode(["Start Step"])
E_GenerateErrorMessageforInvalidCode(["End Step"])
N_GenerateErrorMessageforInvalidCode_Node0{"The system processes the invalid
code"}:::decision N_GenerateErrorMessageforInvalidCode_Node0_action["An error message is generated
indicating the disposition code is
not valid in the system"]:::exclusion N_GenerateErrorMessageforInvalidCode_Node0 -- Yes -->|Alternative| N_GenerateErrorMessageforInvalidCode_Node0_action N_GenerateErrorMessageforInvalidCode_Node0_action --> E_GenerateErrorMessageforInvalidCode S_GenerateErrorMessageforInvalidCode --> N_GenerateErrorMessageforInvalidCode_Node0 N_GenerateErrorMessageforInvalidCode_Node1{"The system needs to report the
invalid code error"}:::decision N_GenerateErrorMessageforInvalidCode_Node1_action["The system generates an error
message containing the invalid
disposition code details"]:::exclusion N_GenerateErrorMessageforInvalidCode_Node1 -- Yes -->|Alternative| N_GenerateErrorMessageforInvalidCode_Node1_action N_GenerateErrorMessageforInvalidCode_Node1_action --> E_GenerateErrorMessageforInvalidCode N_GenerateErrorMessageforInvalidCode_Node0 -- No --> N_GenerateErrorMessageforInvalidCode_Node1 N_GenerateErrorMessageforInvalidCode_Node1 -- No --> E_GenerateErrorMessageforInvalidCode
code"}:::decision N_GenerateErrorMessageforInvalidCode_Node0_action["An error message is generated
indicating the disposition code is
not valid in the system"]:::exclusion N_GenerateErrorMessageforInvalidCode_Node0 -- Yes -->|Alternative| N_GenerateErrorMessageforInvalidCode_Node0_action N_GenerateErrorMessageforInvalidCode_Node0_action --> E_GenerateErrorMessageforInvalidCode S_GenerateErrorMessageforInvalidCode --> N_GenerateErrorMessageforInvalidCode_Node0 N_GenerateErrorMessageforInvalidCode_Node1{"The system needs to report the
invalid code error"}:::decision N_GenerateErrorMessageforInvalidCode_Node1_action["The system generates an error
message containing the invalid
disposition code details"]:::exclusion N_GenerateErrorMessageforInvalidCode_Node1 -- Yes -->|Alternative| N_GenerateErrorMessageforInvalidCode_Node1_action N_GenerateErrorMessageforInvalidCode_Node1_action --> E_GenerateErrorMessageforInvalidCode N_GenerateErrorMessageforInvalidCode_Node0 -- No --> N_GenerateErrorMessageforInvalidCode_Node1 N_GenerateErrorMessageforInvalidCode_Node1 -- No --> E_GenerateErrorMessageforInvalidCode
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
A disposition code 02 cannot be found in the DC table
WHEN:
The system processes the invalid code
THEN:
An error message is generated indicating the disposition code is not valid in the system
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
A disposition code is not found in the DC table
WHEN:
The system needs to report the invalid code error
THEN:
The system generates an error message containing the invalid disposition code details
β Consolidated Acceptance Criteria
- The system detects the quantity mismatch → an error message is generated indicating the quantity validation failure
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GenerateErrorMessageforQuantityMismatch(["Start Step"])
E_GenerateErrorMessageforQuantityMismatch(["End Step"])
N_GenerateErrorMessageforQuantityMismatch_Node0{"The system detects the quantity
mismatch"}:::decision N_GenerateErrorMessageforQuantityMismatch_Node0_action["An error message is generated
indicating the quantity validation
failure"]:::main N_GenerateErrorMessageforQuantityMismatch_Node0 -- Yes --> N_GenerateErrorMessageforQuantityMismatch_Node0_action N_GenerateErrorMessageforQuantityMismatch_Node0_action --> E_GenerateErrorMessageforQuantityMismatch S_GenerateErrorMessageforQuantityMismatch --> N_GenerateErrorMessageforQuantityMismatch_Node0 N_GenerateErrorMessageforQuantityMismatch_Node0 -- No --> E_GenerateErrorMessageforQuantityMismatch
mismatch"}:::decision N_GenerateErrorMessageforQuantityMismatch_Node0_action["An error message is generated
indicating the quantity validation
failure"]:::main N_GenerateErrorMessageforQuantityMismatch_Node0 -- Yes --> N_GenerateErrorMessageforQuantityMismatch_Node0_action N_GenerateErrorMessageforQuantityMismatch_Node0_action --> E_GenerateErrorMessageforQuantityMismatch S_GenerateErrorMessageforQuantityMismatch --> N_GenerateErrorMessageforQuantityMismatch_Node0 N_GenerateErrorMessageforQuantityMismatch_Node0 -- No --> E_GenerateErrorMessageforQuantityMismatch
File: GCX016.cbl
GIVEN:
Quantity information in disposition code 02 fails validation
WHEN:
The system detects the quantity mismatch
THEN:
An error message is generated indicating the quantity validation failure
β Consolidated Acceptance Criteria
- The system looks up the disposition code in the DC table → if the code is found, processing continues; if not found, an error message is generated and processing stops
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ValidateDispositionCode(["Start Step"])
E_ValidateDispositionCode(["End Step"])
N_ValidateDispositionCode_Node0{"The system looks up the disposition
code in the DC table"}:::decision N_ValidateDispositionCode_Node0_action["If the code is found, processing
continues if not found, an error
message is generated and processing
stops"]:::main N_ValidateDispositionCode_Node0 -- Yes --> N_ValidateDispositionCode_Node0_action N_ValidateDispositionCode_Node0_action --> E_ValidateDispositionCode S_ValidateDispositionCode --> N_ValidateDispositionCode_Node0 N_ValidateDispositionCode_Node0 -- No --> E_ValidateDispositionCode
code in the DC table"}:::decision N_ValidateDispositionCode_Node0_action["If the code is found, processing
continues if not found, an error
message is generated and processing
stops"]:::main N_ValidateDispositionCode_Node0 -- Yes --> N_ValidateDispositionCode_Node0_action N_ValidateDispositionCode_Node0_action --> E_ValidateDispositionCode S_ValidateDispositionCode --> N_ValidateDispositionCode_Node0 N_ValidateDispositionCode_Node0 -- No --> E_ValidateDispositionCode
File: GCX016.cbl
GIVEN:
A disposition code 50, 51, or 52 is received for cargo release processing
WHEN:
The system looks up the disposition code in the DC table
THEN:
- If the code is found, processing continues; if not found, an error message is generated
- Processing stops
β Consolidated Acceptance Criteria
- The system checks if the associated train exists in the system → if train is not found, a train not found error is generated and processing stops; if found, release processing continues
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CheckTrainStatus(["Start Step"])
E_CheckTrainStatus(["End Step"])
N_CheckTrainStatus_Node0{"The system checks if the associated
train exists in the system"}:::decision N_CheckTrainStatus_Node0_action["If train is not found, a train not
found error is generated and
processing stops if found, release
processing continues"]:::main N_CheckTrainStatus_Node0 -- Yes --> N_CheckTrainStatus_Node0_action N_CheckTrainStatus_Node0_action --> E_CheckTrainStatus S_CheckTrainStatus --> N_CheckTrainStatus_Node0 N_CheckTrainStatus_Node0 -- No --> E_CheckTrainStatus
train exists in the system"}:::decision N_CheckTrainStatus_Node0_action["If train is not found, a train not
found error is generated and
processing stops if found, release
processing continues"]:::main N_CheckTrainStatus_Node0 -- Yes --> N_CheckTrainStatus_Node0_action N_CheckTrainStatus_Node0_action --> E_CheckTrainStatus S_CheckTrainStatus --> N_CheckTrainStatus_Node0 N_CheckTrainStatus_Node0 -- No --> E_CheckTrainStatus
File: GCX016.cbl
GIVEN:
A valid disposition code has been received for cargo release
WHEN:
The system checks if the associated train exists in the system
THEN:
- If train is not found, a train not found error is generated
- Processing stops; if found, release processing continues
β Consolidated Acceptance Criteria
- The system validates cargo quantities and checks current hold status → if release conditions are not met, the release request is rejected; if conditions are met, release processing proceeds
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CheckReleaseConditions(["Start Step"])
E_CheckReleaseConditions(["End Step"])
N_CheckReleaseConditions_Node0{"The system validates cargo
quantities and checks current hold
status"}:::decision N_CheckReleaseConditions_Node0_action["If release conditions are not met,
the release request is rejected if
conditions are met, release
processing proceeds"]:::exclusion N_CheckReleaseConditions_Node0 -- Yes -->|Alternative| N_CheckReleaseConditions_Node0_action N_CheckReleaseConditions_Node0_action --> E_CheckReleaseConditions S_CheckReleaseConditions --> N_CheckReleaseConditions_Node0 N_CheckReleaseConditions_Node0 -- No --> E_CheckReleaseConditions
quantities and checks current hold
status"}:::decision N_CheckReleaseConditions_Node0_action["If release conditions are not met,
the release request is rejected if
conditions are met, release
processing proceeds"]:::exclusion N_CheckReleaseConditions_Node0 -- Yes -->|Alternative| N_CheckReleaseConditions_Node0_action N_CheckReleaseConditions_Node0_action --> E_CheckReleaseConditions S_CheckReleaseConditions --> N_CheckReleaseConditions_Node0 N_CheckReleaseConditions_Node0 -- No --> E_CheckReleaseConditions
File: GCX016.cbl
GIVEN:
A train exists and disposition code is valid
WHEN:
- The system validates cargo quantities
- Checks current hold status
THEN:
If release conditions are not met, the release request is rejected; if conditions are met, release processing proceeds
β Consolidated Acceptance Criteria
- The system processes the standard release request → standard release processing is performed, status array is updated, and release quantities are calculated
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ProcessReleaseCode50(["Start Step"])
E_ProcessReleaseCode50(["End Step"])
N_ProcessReleaseCode50_Node0{"The system processes the standard
release request"}:::decision N_ProcessReleaseCode50_Node0_action["Standard release processing is
performed, status array is updated,
and release quantities are
calculated"]:::main N_ProcessReleaseCode50_Node0 -- Yes --> N_ProcessReleaseCode50_Node0_action N_ProcessReleaseCode50_Node0_action --> E_ProcessReleaseCode50 S_ProcessReleaseCode50 --> N_ProcessReleaseCode50_Node0 N_ProcessReleaseCode50_Node0 -- No --> E_ProcessReleaseCode50
release request"}:::decision N_ProcessReleaseCode50_Node0_action["Standard release processing is
performed, status array is updated,
and release quantities are
calculated"]:::main N_ProcessReleaseCode50_Node0 -- Yes --> N_ProcessReleaseCode50_Node0_action N_ProcessReleaseCode50_Node0_action --> E_ProcessReleaseCode50 S_ProcessReleaseCode50 --> N_ProcessReleaseCode50_Node0 N_ProcessReleaseCode50_Node0 -- No --> E_ProcessReleaseCode50
File: GCX016.cbl
GIVEN:
Disposition code 50 is received and release conditions are validated
WHEN:
The system processes the standard release request
THEN:
Standard release processing is performed, status array is updated, and release quantities are calculated
β Consolidated Acceptance Criteria
- The system processes the conditional release request → conditional release processing is performed with additional validation checks, status array is updated, and release quantities are calculated
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ProcessReleaseCode51(["Start Step"])
E_ProcessReleaseCode51(["End Step"])
N_ProcessReleaseCode51_Node0{"The system processes the
conditional release request"}:::decision N_ProcessReleaseCode51_Node0_action["Conditional release processing is
performed with additional validation
checks, status array is updated, and
release quantities are calculated"]:::main N_ProcessReleaseCode51_Node0 -- Yes --> N_ProcessReleaseCode51_Node0_action N_ProcessReleaseCode51_Node0_action --> E_ProcessReleaseCode51 S_ProcessReleaseCode51 --> N_ProcessReleaseCode51_Node0 N_ProcessReleaseCode51_Node0 -- No --> E_ProcessReleaseCode51
conditional release request"}:::decision N_ProcessReleaseCode51_Node0_action["Conditional release processing is
performed with additional validation
checks, status array is updated, and
release quantities are calculated"]:::main N_ProcessReleaseCode51_Node0 -- Yes --> N_ProcessReleaseCode51_Node0_action N_ProcessReleaseCode51_Node0_action --> E_ProcessReleaseCode51 S_ProcessReleaseCode51 --> N_ProcessReleaseCode51_Node0 N_ProcessReleaseCode51_Node0 -- No --> E_ProcessReleaseCode51
File: GCX016.cbl
GIVEN:
Disposition code 51 is received and release conditions are validated
WHEN:
The system processes the conditional release request
THEN:
Conditional release processing is performed with additional validation checks, status array is updated, and release quantities are calculated
β Consolidated Acceptance Criteria
- The system processes the special release request → special release processing is performed with enhanced validation and handling, status array is updated, and release quantities are calculated
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ProcessReleaseCode52(["Start Step"])
E_ProcessReleaseCode52(["End Step"])
N_ProcessReleaseCode52_Node0{"The system processes the special
release request"}:::decision N_ProcessReleaseCode52_Node0_action["Special release processing is
performed with enhanced validation
and handling, status array is
updated, and release quantities are
calculated"]:::main N_ProcessReleaseCode52_Node0 -- Yes --> N_ProcessReleaseCode52_Node0_action N_ProcessReleaseCode52_Node0_action --> E_ProcessReleaseCode52 S_ProcessReleaseCode52 --> N_ProcessReleaseCode52_Node0 N_ProcessReleaseCode52_Node0 -- No --> E_ProcessReleaseCode52
release request"}:::decision N_ProcessReleaseCode52_Node0_action["Special release processing is
performed with enhanced validation
and handling, status array is
updated, and release quantities are
calculated"]:::main N_ProcessReleaseCode52_Node0 -- Yes --> N_ProcessReleaseCode52_Node0_action N_ProcessReleaseCode52_Node0_action --> E_ProcessReleaseCode52 S_ProcessReleaseCode52 --> N_ProcessReleaseCode52_Node0 N_ProcessReleaseCode52_Node0 -- No --> E_ProcessReleaseCode52
File: GCX016.cbl
GIVEN:
Disposition code 52 is received and release conditions are validated
WHEN:
The system processes the special release request
THEN:
- Special release processing is performed with enhanced validation
- Handling, status array is updated, and release quantities are calculated
β Consolidated Acceptance Criteria
- The system processes counterpart codes in the status array → counterpart disposition codes are removed from the status array to prevent conflicts with the new release status
- Counterpart code removal is required → all existing counterpart codes must be removed from the status array before adding the new code
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RemoveCounterpartCodes(["Start Step"])
E_RemoveCounterpartCodes(["End Step"])
N_RemoveCounterpartCodes_Node0{"The system processes counterpart
codes in the status array"}:::decision N_RemoveCounterpartCodes_Node0_action["Counterpart disposition codes are
removed from the status array to
prevent conflicts with the new
release status"]:::main N_RemoveCounterpartCodes_Node0 -- Yes --> N_RemoveCounterpartCodes_Node0_action N_RemoveCounterpartCodes_Node0_action --> E_RemoveCounterpartCodes S_RemoveCounterpartCodes --> N_RemoveCounterpartCodes_Node0 N_RemoveCounterpartCodes_Node1{"Counterpart code removal is
required"}:::decision N_RemoveCounterpartCodes_Node1_action["All existing counterpart codes must
be removed from the status array
before adding the new code"]:::main N_RemoveCounterpartCodes_Node1 -- Yes --> N_RemoveCounterpartCodes_Node1_action N_RemoveCounterpartCodes_Node1_action --> E_RemoveCounterpartCodes N_RemoveCounterpartCodes_Node0 -- No --> N_RemoveCounterpartCodes_Node1 N_RemoveCounterpartCodes_Node1 -- No --> E_RemoveCounterpartCodes
codes in the status array"}:::decision N_RemoveCounterpartCodes_Node0_action["Counterpart disposition codes are
removed from the status array to
prevent conflicts with the new
release status"]:::main N_RemoveCounterpartCodes_Node0 -- Yes --> N_RemoveCounterpartCodes_Node0_action N_RemoveCounterpartCodes_Node0_action --> E_RemoveCounterpartCodes S_RemoveCounterpartCodes --> N_RemoveCounterpartCodes_Node0 N_RemoveCounterpartCodes_Node1{"Counterpart code removal is
required"}:::decision N_RemoveCounterpartCodes_Node1_action["All existing counterpart codes must
be removed from the status array
before adding the new code"]:::main N_RemoveCounterpartCodes_Node1 -- Yes --> N_RemoveCounterpartCodes_Node1_action N_RemoveCounterpartCodes_Node1_action --> E_RemoveCounterpartCodes N_RemoveCounterpartCodes_Node0 -- No --> N_RemoveCounterpartCodes_Node1 N_RemoveCounterpartCodes_Node1 -- No --> E_RemoveCounterpartCodes
File: GCX016.cbl
GIVEN:
Release quantities have been calculated
WHEN:
The system processes counterpart codes in the status array
THEN:
Counterpart disposition codes are removed from the status array to prevent conflicts with the new release status
File: GCX016.cbl
GIVEN:
A new disposition code is being added to the status array
WHEN:
Counterpart code removal is required
THEN:
All existing counterpart codes must be removed from the status array before adding the new code
β Consolidated Acceptance Criteria
- The system updates the train status → train status is updated to reflect the cargo release, and train movement restrictions may be lifted if all cargo is released
- The system updates train status → the system modifies train status to reflect current arrival state and processing completion
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UpdateTrainStatus(["Start Step"])
E_UpdateTrainStatus(["End Step"])
N_UpdateTrainStatus_Node0{"The system updates the train status"}:::decision
N_UpdateTrainStatus_Node0_action["Train status is updated to reflect
the cargo release, and train
movement restrictions may be lifted
if all cargo is released"]:::main N_UpdateTrainStatus_Node0 -- Yes --> N_UpdateTrainStatus_Node0_action N_UpdateTrainStatus_Node0_action --> E_UpdateTrainStatus S_UpdateTrainStatus --> N_UpdateTrainStatus_Node0 N_UpdateTrainStatus_Node1{"The system updates train status"}:::decision N_UpdateTrainStatus_Node1_action["The system modifies train status to
reflect current arrival state and
processing completion"]:::main N_UpdateTrainStatus_Node1 -- Yes --> N_UpdateTrainStatus_Node1_action N_UpdateTrainStatus_Node1_action --> E_UpdateTrainStatus N_UpdateTrainStatus_Node0 -- No --> N_UpdateTrainStatus_Node1 N_UpdateTrainStatus_Node1 -- No --> E_UpdateTrainStatus
the cargo release, and train
movement restrictions may be lifted
if all cargo is released"]:::main N_UpdateTrainStatus_Node0 -- Yes --> N_UpdateTrainStatus_Node0_action N_UpdateTrainStatus_Node0_action --> E_UpdateTrainStatus S_UpdateTrainStatus --> N_UpdateTrainStatus_Node0 N_UpdateTrainStatus_Node1{"The system updates train status"}:::decision N_UpdateTrainStatus_Node1_action["The system modifies train status to
reflect current arrival state and
processing completion"]:::main N_UpdateTrainStatus_Node1 -- Yes --> N_UpdateTrainStatus_Node1_action N_UpdateTrainStatus_Node1_action --> E_UpdateTrainStatus N_UpdateTrainStatus_Node0 -- No --> N_UpdateTrainStatus_Node1 N_UpdateTrainStatus_Node1 -- No --> E_UpdateTrainStatus
File: GCX016.cbl
GIVEN:
Release processing is complete and release flag is set
WHEN:
The system updates the train status
THEN:
Train status is updated to reflect the cargo release, and train movement restrictions may be lifted if all cargo is released
File: GCX016.cbl
GIVEN:
Message activity has been logged successfully
WHEN:
The system updates train status
THEN:
- The system modifies train status to reflect current arrival state
- Processing completion
β Consolidated Acceptance Criteria
- The system calls integration services (GCCIIS) → external systems are notified of the cargo release for container/trailer equipment processing and customs clearance
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CallIntegrationServices(["Start Step"])
E_CallIntegrationServices(["End Step"])
N_CallIntegrationServices_Node0{"The system calls integration
services GCCIIS"}:::decision N_CallIntegrationServices_Node0_action["External systems are notified of
the cargo release for
containertrailer equipment
processing and customs clearance"]:::main N_CallIntegrationServices_Node0 -- Yes --> N_CallIntegrationServices_Node0_action N_CallIntegrationServices_Node0_action --> E_CallIntegrationServices S_CallIntegrationServices --> N_CallIntegrationServices_Node0 N_CallIntegrationServices_Node0 -- No --> E_CallIntegrationServices
services GCCIIS"}:::decision N_CallIntegrationServices_Node0_action["External systems are notified of
the cargo release for
containertrailer equipment
processing and customs clearance"]:::main N_CallIntegrationServices_Node0 -- Yes --> N_CallIntegrationServices_Node0_action N_CallIntegrationServices_Node0_action --> E_CallIntegrationServices S_CallIntegrationServices --> N_CallIntegrationServices_Node0 N_CallIntegrationServices_Node0 -- No --> E_CallIntegrationServices
File: GCX016.cbl
GIVEN:
Release message has been generated
WHEN:
The system calls integration services (GCCIIS)
THEN:
- External systems are notified of the cargo release for container/trailer equipment processing
- Customs clearance
β Consolidated Acceptance Criteria
- The system logs the transaction → transaction details including disposition code, cargo information, and processing results are logged via GCT1051E for audit trail
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogTransaction(["Start Step"])
E_LogTransaction(["End Step"])
N_LogTransaction_Node0{"The system logs the transaction"}:::decision
N_LogTransaction_Node0_action["Transaction details including
disposition code, cargo information,
and processing results are logged
via GCT1051E for audit trail"]:::main N_LogTransaction_Node0 -- Yes --> N_LogTransaction_Node0_action N_LogTransaction_Node0_action --> E_LogTransaction S_LogTransaction --> N_LogTransaction_Node0 N_LogTransaction_Node0 -- No --> E_LogTransaction
disposition code, cargo information,
and processing results are logged
via GCT1051E for audit trail"]:::main N_LogTransaction_Node0 -- Yes --> N_LogTransaction_Node0_action N_LogTransaction_Node0_action --> E_LogTransaction S_LogTransaction --> N_LogTransaction_Node0 N_LogTransaction_Node0 -- No --> E_LogTransaction
File: GCX016.cbl
GIVEN:
Release processing is complete (successful or rejected)
WHEN:
The system logs the transaction
THEN:
Transaction details including disposition code, cargo information, and processing results are logged via GCT1051E for audit trail
β Consolidated Acceptance Criteria
- The disposition code is evaluated for hold and examination processing → the system should only process codes 66 (Hold for Examination), 67 (Intensive Examination), or 68 (X-Ray Examination) and skip all other codes
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_DispositionCode6667or68(["Start Step"])
E_DispositionCode6667or68(["End Step"])
N_DispositionCode6667or68_Node0{"The disposition code is evaluated
for hold and examination processing"}:::decision N_DispositionCode6667or68_Node0_action["The system should only process
codes 66 Hold for Examination, 67
Intensive Examination, or 68 X-Ray
Examination and skip all other codes"]:::main N_DispositionCode6667or68_Node0 -- Yes --> N_DispositionCode6667or68_Node0_action N_DispositionCode6667or68_Node0_action --> E_DispositionCode6667or68 S_DispositionCode6667or68 --> N_DispositionCode6667or68_Node0 N_DispositionCode6667or68_Node0 -- No --> E_DispositionCode6667or68
for hold and examination processing"}:::decision N_DispositionCode6667or68_Node0_action["The system should only process
codes 66 Hold for Examination, 67
Intensive Examination, or 68 X-Ray
Examination and skip all other codes"]:::main N_DispositionCode6667or68_Node0 -- Yes --> N_DispositionCode6667or68_Node0_action N_DispositionCode6667or68_Node0_action --> E_DispositionCode6667or68 S_DispositionCode6667or68 --> N_DispositionCode6667or68_Node0 N_DispositionCode6667or68_Node0 -- No --> E_DispositionCode6667or68
File: GCX016.cbl
GIVEN:
An X4 segment is received with a disposition code
WHEN:
- The disposition code is evaluated for hold
- Examination processing
THEN:
The system should only process codes 66 (Hold for Examination), 67 (Intensive Examination), or 68 (X-Ray Examination) and skip all other codes
β Consolidated Acceptance Criteria
- The system needs to process the disposition code → the system should retrieve the disposition code details from the DC table including code description and processing instructions
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RetrieveDispositionCodeDetailsfromDCTable(["Start Step"])
E_RetrieveDispositionCodeDetailsfromDCTable(["End Step"])
N_RetrieveDispositionCodeDetailsfromDCTable_Node0{"The system needs to process the
disposition code"}:::decision N_RetrieveDispositionCodeDetailsfromDCTable_Node0_action["The system should retrieve the
disposition code details from the DC
table including code description and
processing instructions"]:::main N_RetrieveDispositionCodeDetailsfromDCTable_Node0 -- Yes --> N_RetrieveDispositionCodeDetailsfromDCTable_Node0_action N_RetrieveDispositionCodeDetailsfromDCTable_Node0_action --> E_RetrieveDispositionCodeDetailsfromDCTable S_RetrieveDispositionCodeDetailsfromDCTable --> N_RetrieveDispositionCodeDetailsfromDCTable_Node0 N_RetrieveDispositionCodeDetailsfromDCTable_Node0 -- No --> E_RetrieveDispositionCodeDetailsfromDCTable
disposition code"}:::decision N_RetrieveDispositionCodeDetailsfromDCTable_Node0_action["The system should retrieve the
disposition code details from the DC
table including code description and
processing instructions"]:::main N_RetrieveDispositionCodeDetailsfromDCTable_Node0 -- Yes --> N_RetrieveDispositionCodeDetailsfromDCTable_Node0_action N_RetrieveDispositionCodeDetailsfromDCTable_Node0_action --> E_RetrieveDispositionCodeDetailsfromDCTable S_RetrieveDispositionCodeDetailsfromDCTable --> N_RetrieveDispositionCodeDetailsfromDCTable_Node0 N_RetrieveDispositionCodeDetailsfromDCTable_Node0 -- No --> E_RetrieveDispositionCodeDetailsfromDCTable
File: GCX016.cbl
GIVEN:
A valid disposition code (66, 67, or 68) has been identified
WHEN:
The system needs to process the disposition code
THEN:
- The system should retrieve the disposition code details from the dc table including code description
- Processing instructions
β Consolidated Acceptance Criteria
- The system searches for the cargo record using the CCN key from the X4 segment → the system should verify that a valid cargo record exists and is not marked as deleted
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ValidateCargoRecordExists(["Start Step"])
E_ValidateCargoRecordExists(["End Step"])
N_ValidateCargoRecordExists_Node0{"The system searches for the cargo
record using the CCN key from the X4
segment"}:::decision N_ValidateCargoRecordExists_Node0_action["The system should verify that a
valid cargo record exists and is not
marked as deleted"]:::main N_ValidateCargoRecordExists_Node0 -- Yes --> N_ValidateCargoRecordExists_Node0_action N_ValidateCargoRecordExists_Node0_action --> E_ValidateCargoRecordExists S_ValidateCargoRecordExists --> N_ValidateCargoRecordExists_Node0 N_ValidateCargoRecordExists_Node0 -- No --> E_ValidateCargoRecordExists
record using the CCN key from the X4
segment"}:::decision N_ValidateCargoRecordExists_Node0_action["The system should verify that a
valid cargo record exists and is not
marked as deleted"]:::main N_ValidateCargoRecordExists_Node0 -- Yes --> N_ValidateCargoRecordExists_Node0_action N_ValidateCargoRecordExists_Node0_action --> E_ValidateCargoRecordExists S_ValidateCargoRecordExists --> N_ValidateCargoRecordExists_Node0 N_ValidateCargoRecordExists_Node0 -- No --> E_ValidateCargoRecordExists
File: GCX016.cbl
GIVEN:
A disposition code needs to be applied to cargo
WHEN:
The system searches for the cargo record using the CCN key from the X4 segment
THEN:
- The system should verify that a valid cargo record exists
- Is not marked as deleted
β Consolidated Acceptance Criteria
- The cargo record cannot be found in the system → the system should generate an error message indicating cargo not found, increment the error counter, and continue processing the next segment
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GenerateErrorMessageCargoNotFound(["Start Step"])
E_GenerateErrorMessageCargoNotFound(["End Step"])
N_GenerateErrorMessageCargoNotFound_Node0{"The cargo record cannot be found in
the system"}:::decision N_GenerateErrorMessageCargoNotFound_Node0_action["The system should generate an error
message indicating cargo not found,
increment the error counter, and
continue processing the next segment"]:::main N_GenerateErrorMessageCargoNotFound_Node0 -- Yes --> N_GenerateErrorMessageCargoNotFound_Node0_action N_GenerateErrorMessageCargoNotFound_Node0_action --> E_GenerateErrorMessageCargoNotFound S_GenerateErrorMessageCargoNotFound --> N_GenerateErrorMessageCargoNotFound_Node0 N_GenerateErrorMessageCargoNotFound_Node0 -- No --> E_GenerateErrorMessageCargoNotFound
the system"}:::decision N_GenerateErrorMessageCargoNotFound_Node0_action["The system should generate an error
message indicating cargo not found,
increment the error counter, and
continue processing the next segment"]:::main N_GenerateErrorMessageCargoNotFound_Node0 -- Yes --> N_GenerateErrorMessageCargoNotFound_Node0_action N_GenerateErrorMessageCargoNotFound_Node0_action --> E_GenerateErrorMessageCargoNotFound S_GenerateErrorMessageCargoNotFound --> N_GenerateErrorMessageCargoNotFound_Node0 N_GenerateErrorMessageCargoNotFound_Node0 -- No --> E_GenerateErrorMessageCargoNotFound
File: GCX016.cbl
GIVEN:
A disposition code (66, 67, or 68) needs to be applied to cargo
WHEN:
The cargo record cannot be found in the system
THEN:
The system should generate an error message indicating cargo not found, increment the error counter, and continue processing the next segment
β Consolidated Acceptance Criteria
- The system checks the cargo's status array for existing codes → if the same disposition code already exists in the status array, the system should skip processing and continue to the next segment
- The system iterates through each element in the status array → compare the incoming disposition code with each existing code in the array to determine if it already exists
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CodeAlreadyExists(["Start Step"])
E_CodeAlreadyExists(["End Step"])
N_CodeAlreadyExists_Node0{"The system checks the cargo s
status array for existing codes"}:::decision N_CodeAlreadyExists_Node0_action["If the same disposition code
already exists in the status array,
the system should skip processing
and continue to the next segment"]:::main N_CodeAlreadyExists_Node0 -- Yes --> N_CodeAlreadyExists_Node0_action N_CodeAlreadyExists_Node0_action --> E_CodeAlreadyExists S_CodeAlreadyExists --> N_CodeAlreadyExists_Node0 N_CodeAlreadyExists_Node1{"The system iterates through each
element in the status array"}:::decision N_CodeAlreadyExists_Node1_action["Compare the incoming disposition
code with each existing code in the
array to determine if it already
exists"]:::main N_CodeAlreadyExists_Node1 -- Yes --> N_CodeAlreadyExists_Node1_action N_CodeAlreadyExists_Node1_action --> E_CodeAlreadyExists N_CodeAlreadyExists_Node0 -- No --> N_CodeAlreadyExists_Node1 N_CodeAlreadyExists_Node1 -- No --> E_CodeAlreadyExists
status array for existing codes"}:::decision N_CodeAlreadyExists_Node0_action["If the same disposition code
already exists in the status array,
the system should skip processing
and continue to the next segment"]:::main N_CodeAlreadyExists_Node0 -- Yes --> N_CodeAlreadyExists_Node0_action N_CodeAlreadyExists_Node0_action --> E_CodeAlreadyExists S_CodeAlreadyExists --> N_CodeAlreadyExists_Node0 N_CodeAlreadyExists_Node1{"The system iterates through each
element in the status array"}:::decision N_CodeAlreadyExists_Node1_action["Compare the incoming disposition
code with each existing code in the
array to determine if it already
exists"]:::main N_CodeAlreadyExists_Node1 -- Yes --> N_CodeAlreadyExists_Node1_action N_CodeAlreadyExists_Node1_action --> E_CodeAlreadyExists N_CodeAlreadyExists_Node0 -- No --> N_CodeAlreadyExists_Node1 N_CodeAlreadyExists_Node1 -- No --> E_CodeAlreadyExists
File: GCX016.cbl
GIVEN:
A cargo record exists and a disposition code (66, 67, or 68) needs to be applied
WHEN:
The system checks the cargo's status array for existing codes
THEN:
- If the same disposition code already exists in the status array, the system should skip processing
- Continue to the next segment
File: GCX016.cbl
GIVEN:
A disposition code to be processed and a populated status array
WHEN:
The system iterates through each element in the status array
THEN:
Compare the incoming disposition code with each existing code in the array to determine if it already exists
β Consolidated Acceptance Criteria
- The same disposition code is received again for the same cargo → the system should skip all processing for this code and continue to the next segment without making any changes
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SkipDuplicateCodeProcessing(["Start Step"])
E_SkipDuplicateCodeProcessing(["End Step"])
N_SkipDuplicateCodeProcessing_Node0{"The same disposition code is
received again for the same cargo"}:::decision N_SkipDuplicateCodeProcessing_Node0_action["The system should skip all
processing for this code and
continue to the next segment without
making any changes"]:::main N_SkipDuplicateCodeProcessing_Node0 -- Yes --> N_SkipDuplicateCodeProcessing_Node0_action N_SkipDuplicateCodeProcessing_Node0_action --> E_SkipDuplicateCodeProcessing S_SkipDuplicateCodeProcessing --> N_SkipDuplicateCodeProcessing_Node0 N_SkipDuplicateCodeProcessing_Node0 -- No --> E_SkipDuplicateCodeProcessing
received again for the same cargo"}:::decision N_SkipDuplicateCodeProcessing_Node0_action["The system should skip all
processing for this code and
continue to the next segment without
making any changes"]:::main N_SkipDuplicateCodeProcessing_Node0 -- Yes --> N_SkipDuplicateCodeProcessing_Node0_action N_SkipDuplicateCodeProcessing_Node0_action --> E_SkipDuplicateCodeProcessing S_SkipDuplicateCodeProcessing --> N_SkipDuplicateCodeProcessing_Node0 N_SkipDuplicateCodeProcessing_Node0 -- No --> E_SkipDuplicateCodeProcessing
File: GCX016.cbl
GIVEN:
A disposition code already exists in the cargo's status array
WHEN:
The same disposition code is received again for the same cargo
THEN:
- The system should skip all processing for this code
- Continue to the next segment without making any changes
β Consolidated Acceptance Criteria
- If the cargo's current location and status → the system should determine whether to apply the hold at the border location or destination location based on cargo movement status
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_DetermineHoldLocationBorderorDestination(["Start Step"])
E_DetermineHoldLocationBorderorDestination(["End Step"])
N_DetermineHoldLocationBorderorDestination_Node0{"The system evaluates the cargo s
current location and status"}:::decision N_DetermineHoldLocationBorderorDestination_Node0_action["The system should determine whether
to apply the hold at the border
location or destination location
based on cargo movement status"]:::main N_DetermineHoldLocationBorderorDestination_Node0 -- Yes --> N_DetermineHoldLocationBorderorDestination_Node0_action N_DetermineHoldLocationBorderorDestination_Node0_action --> E_DetermineHoldLocationBorderorDestination S_DetermineHoldLocationBorderorDestination --> N_DetermineHoldLocationBorderorDestination_Node0 N_DetermineHoldLocationBorderorDestination_Node0 -- No --> E_DetermineHoldLocationBorderorDestination
current location and status"}:::decision N_DetermineHoldLocationBorderorDestination_Node0_action["The system should determine whether
to apply the hold at the border
location or destination location
based on cargo movement status"]:::main N_DetermineHoldLocationBorderorDestination_Node0 -- Yes --> N_DetermineHoldLocationBorderorDestination_Node0_action N_DetermineHoldLocationBorderorDestination_Node0_action --> E_DetermineHoldLocationBorderorDestination S_DetermineHoldLocationBorderorDestination --> N_DetermineHoldLocationBorderorDestination_Node0 N_DetermineHoldLocationBorderorDestination_Node0 -- No --> E_DetermineHoldLocationBorderorDestination
File: GCX016.cbl
GIVEN:
A valid disposition code (66, 67, or 68) needs to be applied to existing cargo
WHEN:
- The system evaluates the cargo's current location
- Status
THEN:
The system should determine whether to apply the hold at the border location or destination location based on cargo movement status
β Consolidated Acceptance Criteria
- The code is not a duplicate and cargo exists → the system should set border hold status for standard examination requirements
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_Code66HoldforExamination(["Start Step"])
E_Code66HoldforExamination(["End Step"])
N_Code66HoldforExamination_Node0{"The code is not a duplicate and
cargo exists"}:::decision N_Code66HoldforExamination_Node0_action["The system should set border hold
status for standard examination
requirements"]:::main N_Code66HoldforExamination_Node0 -- Yes --> N_Code66HoldforExamination_Node0_action N_Code66HoldforExamination_Node0_action --> E_Code66HoldforExamination S_Code66HoldforExamination --> N_Code66HoldforExamination_Node0 N_Code66HoldforExamination_Node0 -- No --> E_Code66HoldforExamination
cargo exists"}:::decision N_Code66HoldforExamination_Node0_action["The system should set border hold
status for standard examination
requirements"]:::main N_Code66HoldforExamination_Node0 -- Yes --> N_Code66HoldforExamination_Node0_action N_Code66HoldforExamination_Node0_action --> E_Code66HoldforExamination S_Code66HoldforExamination --> N_Code66HoldforExamination_Node0 N_Code66HoldforExamination_Node0 -- No --> E_Code66HoldforExamination
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
Disposition code 66 (Hold for Examination) is received for valid cargo
WHEN:
- The code is not a duplicate
- Cargo exists
THEN:
The system should set border hold status for standard examination requirements
β Consolidated Acceptance Criteria
- The code is not a duplicate and cargo exists → the system should set intensive examination hold status with enhanced security requirements
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_Code67IntensiveExamination(["Start Step"])
E_Code67IntensiveExamination(["End Step"])
N_Code67IntensiveExamination_Node0{"The code is not a duplicate and
cargo exists"}:::decision N_Code67IntensiveExamination_Node0_action["The system should set intensive
examination hold status with
enhanced security requirements"]:::main N_Code67IntensiveExamination_Node0 -- Yes --> N_Code67IntensiveExamination_Node0_action N_Code67IntensiveExamination_Node0_action --> E_Code67IntensiveExamination S_Code67IntensiveExamination --> N_Code67IntensiveExamination_Node0 N_Code67IntensiveExamination_Node0 -- No --> E_Code67IntensiveExamination
cargo exists"}:::decision N_Code67IntensiveExamination_Node0_action["The system should set intensive
examination hold status with
enhanced security requirements"]:::main N_Code67IntensiveExamination_Node0 -- Yes --> N_Code67IntensiveExamination_Node0_action N_Code67IntensiveExamination_Node0_action --> E_Code67IntensiveExamination S_Code67IntensiveExamination --> N_Code67IntensiveExamination_Node0 N_Code67IntensiveExamination_Node0 -- No --> E_Code67IntensiveExamination
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
Disposition code 67 (Intensive Examination) is received for valid cargo
WHEN:
- The code is not a duplicate
- Cargo exists
THEN:
The system should set intensive examination hold status with enhanced security requirements
β Consolidated Acceptance Criteria
- The code is not a duplicate and cargo exists → the system should set X-ray examination hold status requiring imaging inspection
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_Code68XRayExamination(["Start Step"])
E_Code68XRayExamination(["End Step"])
N_Code68XRayExamination_Node0{"The code is not a duplicate and
cargo exists"}:::decision N_Code68XRayExamination_Node0_action["The system should set X-ray
examination hold status requiring
imaging inspection"]:::main N_Code68XRayExamination_Node0 -- Yes --> N_Code68XRayExamination_Node0_action N_Code68XRayExamination_Node0_action --> E_Code68XRayExamination S_Code68XRayExamination --> N_Code68XRayExamination_Node0 N_Code68XRayExamination_Node0 -- No --> E_Code68XRayExamination
cargo exists"}:::decision N_Code68XRayExamination_Node0_action["The system should set X-ray
examination hold status requiring
imaging inspection"]:::main N_Code68XRayExamination_Node0 -- Yes --> N_Code68XRayExamination_Node0_action N_Code68XRayExamination_Node0_action --> E_Code68XRayExamination S_Code68XRayExamination --> N_Code68XRayExamination_Node0 N_Code68XRayExamination_Node0 -- No --> E_Code68XRayExamination
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
Disposition code 68 (X-Ray Examination) is received for valid cargo
WHEN:
- The code is not a duplicate
- Cargo exists
THEN:
The system should set X-ray examination hold status requiring imaging inspection
β Consolidated Acceptance Criteria
- The cargo requires intensive examination → the system should set intensive examination hold status with enhanced security flags and inspection requirements
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetIntensiveExaminationHold(["Start Step"])
E_SetIntensiveExaminationHold(["End Step"])
N_SetIntensiveExaminationHold_Node0{"The cargo requires intensive
examination"}:::decision N_SetIntensiveExaminationHold_Node0_action["The system should set intensive
examination hold status with
enhanced security flags and
inspection requirements"]:::main N_SetIntensiveExaminationHold_Node0 -- Yes --> N_SetIntensiveExaminationHold_Node0_action N_SetIntensiveExaminationHold_Node0_action --> E_SetIntensiveExaminationHold S_SetIntensiveExaminationHold --> N_SetIntensiveExaminationHold_Node0 N_SetIntensiveExaminationHold_Node0 -- No --> E_SetIntensiveExaminationHold
examination"}:::decision N_SetIntensiveExaminationHold_Node0_action["The system should set intensive
examination hold status with
enhanced security flags and
inspection requirements"]:::main N_SetIntensiveExaminationHold_Node0 -- Yes --> N_SetIntensiveExaminationHold_Node0_action N_SetIntensiveExaminationHold_Node0_action --> E_SetIntensiveExaminationHold S_SetIntensiveExaminationHold --> N_SetIntensiveExaminationHold_Node0 N_SetIntensiveExaminationHold_Node0 -- No --> E_SetIntensiveExaminationHold
File: GCX016.cbl
GIVEN:
Disposition code 67 (Intensive Examination) is being processed
WHEN:
The cargo requires intensive examination
THEN:
- The system should set intensive examination hold status with enhanced security flags
- Inspection requirements
β Consolidated Acceptance Criteria
- The cargo requires X-ray examination → the system should set X-ray examination hold status requiring imaging inspection before release
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetXRayExaminationHold(["Start Step"])
E_SetXRayExaminationHold(["End Step"])
N_SetXRayExaminationHold_Node0{"The cargo requires X-ray
examination"}:::decision N_SetXRayExaminationHold_Node0_action["The system should set X-ray
examination hold status requiring
imaging inspection before release"]:::main N_SetXRayExaminationHold_Node0 -- Yes --> N_SetXRayExaminationHold_Node0_action N_SetXRayExaminationHold_Node0_action --> E_SetXRayExaminationHold S_SetXRayExaminationHold --> N_SetXRayExaminationHold_Node0 N_SetXRayExaminationHold_Node0 -- No --> E_SetXRayExaminationHold
examination"}:::decision N_SetXRayExaminationHold_Node0_action["The system should set X-ray
examination hold status requiring
imaging inspection before release"]:::main N_SetXRayExaminationHold_Node0 -- Yes --> N_SetXRayExaminationHold_Node0_action N_SetXRayExaminationHold_Node0_action --> E_SetXRayExaminationHold S_SetXRayExaminationHold --> N_SetXRayExaminationHold_Node0 N_SetXRayExaminationHold_Node0 -- No --> E_SetXRayExaminationHold
File: GCX016.cbl
GIVEN:
Disposition code 68 (X-Ray Examination) is being processed
WHEN:
The cargo requires X-ray examination
THEN:
The system should set X-ray examination hold status requiring imaging inspection before release
β Consolidated Acceptance Criteria
- The disposition code needs to be recorded in the cargo status → the system should add the hold code to the cargo's status array with appropriate sequence and occurrence numbers
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AddHoldCodetoStatusArray(["Start Step"])
E_AddHoldCodetoStatusArray(["End Step"])
N_AddHoldCodetoStatusArray_Node0{"The disposition code needs to be
recorded in the cargo status"}:::decision N_AddHoldCodetoStatusArray_Node0_action["The system should add the hold code
to the cargo s status array with
appropriate sequence and occurrence
numbers"]:::main N_AddHoldCodetoStatusArray_Node0 -- Yes --> N_AddHoldCodetoStatusArray_Node0_action N_AddHoldCodetoStatusArray_Node0_action --> E_AddHoldCodetoStatusArray S_AddHoldCodetoStatusArray --> N_AddHoldCodetoStatusArray_Node0 N_AddHoldCodetoStatusArray_Node0 -- No --> E_AddHoldCodetoStatusArray
recorded in the cargo status"}:::decision N_AddHoldCodetoStatusArray_Node0_action["The system should add the hold code
to the cargo s status array with
appropriate sequence and occurrence
numbers"]:::main N_AddHoldCodetoStatusArray_Node0 -- Yes --> N_AddHoldCodetoStatusArray_Node0_action N_AddHoldCodetoStatusArray_Node0_action --> E_AddHoldCodetoStatusArray S_AddHoldCodetoStatusArray --> N_AddHoldCodetoStatusArray_Node0 N_AddHoldCodetoStatusArray_Node0 -- No --> E_AddHoldCodetoStatusArray
File: GCX016.cbl
GIVEN:
A hold status has been determined for the cargo
WHEN:
The disposition code needs to be recorded in the cargo status
THEN:
- The system should add the hold code to the cargo's status array with appropriate sequence
- Occurrence numbers
β Consolidated Acceptance Criteria
- The cargo record needs to reflect the current hold status → the system should update the cargo hold flags to indicate border hold, destination hold, or examination hold status as appropriate
- The system updates cargo hold flags and status indicators → the system sets all appropriate hold flags including border hold, destination hold, FDA hold, and piece count hold flags
- The system updates the cargo record with hold information → all relevant hold flags are updated in the cargo record and the hold location status is persisted
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UpdateCargoHoldFlags(["Start Step"])
E_UpdateCargoHoldFlags(["End Step"])
N_UpdateCargoHoldFlags_Node0{"The cargo record needs to reflect
the current hold status"}:::decision N_UpdateCargoHoldFlags_Node0_action["The system should update the cargo
hold flags to indicate border hold,
destination hold, or examination
hold status as appropriate"]:::main N_UpdateCargoHoldFlags_Node0 -- Yes --> N_UpdateCargoHoldFlags_Node0_action N_UpdateCargoHoldFlags_Node0_action --> E_UpdateCargoHoldFlags S_UpdateCargoHoldFlags --> N_UpdateCargoHoldFlags_Node0 N_UpdateCargoHoldFlags_Node1{"The system updates cargo hold flags
and status indicators"}:::decision N_UpdateCargoHoldFlags_Node1_action["The system sets all appropriate
hold flags including border hold,
destination hold, FDA hold, and
piece count hold flags"]:::main N_UpdateCargoHoldFlags_Node1 -- Yes --> N_UpdateCargoHoldFlags_Node1_action N_UpdateCargoHoldFlags_Node1_action --> E_UpdateCargoHoldFlags N_UpdateCargoHoldFlags_Node0 -- No --> N_UpdateCargoHoldFlags_Node1 N_UpdateCargoHoldFlags_Node2{"The system updates the cargo record
with hold information"}:::decision N_UpdateCargoHoldFlags_Node2_action["All relevant hold flags are updated
in the cargo record and the hold
location status is persisted"]:::main N_UpdateCargoHoldFlags_Node2 -- Yes --> N_UpdateCargoHoldFlags_Node2_action N_UpdateCargoHoldFlags_Node2_action --> E_UpdateCargoHoldFlags N_UpdateCargoHoldFlags_Node1 -- No --> N_UpdateCargoHoldFlags_Node2 N_UpdateCargoHoldFlags_Node2 -- No --> E_UpdateCargoHoldFlags
the current hold status"}:::decision N_UpdateCargoHoldFlags_Node0_action["The system should update the cargo
hold flags to indicate border hold,
destination hold, or examination
hold status as appropriate"]:::main N_UpdateCargoHoldFlags_Node0 -- Yes --> N_UpdateCargoHoldFlags_Node0_action N_UpdateCargoHoldFlags_Node0_action --> E_UpdateCargoHoldFlags S_UpdateCargoHoldFlags --> N_UpdateCargoHoldFlags_Node0 N_UpdateCargoHoldFlags_Node1{"The system updates cargo hold flags
and status indicators"}:::decision N_UpdateCargoHoldFlags_Node1_action["The system sets all appropriate
hold flags including border hold,
destination hold, FDA hold, and
piece count hold flags"]:::main N_UpdateCargoHoldFlags_Node1 -- Yes --> N_UpdateCargoHoldFlags_Node1_action N_UpdateCargoHoldFlags_Node1_action --> E_UpdateCargoHoldFlags N_UpdateCargoHoldFlags_Node0 -- No --> N_UpdateCargoHoldFlags_Node1 N_UpdateCargoHoldFlags_Node2{"The system updates the cargo record
with hold information"}:::decision N_UpdateCargoHoldFlags_Node2_action["All relevant hold flags are updated
in the cargo record and the hold
location status is persisted"]:::main N_UpdateCargoHoldFlags_Node2 -- Yes --> N_UpdateCargoHoldFlags_Node2_action N_UpdateCargoHoldFlags_Node2_action --> E_UpdateCargoHoldFlags N_UpdateCargoHoldFlags_Node1 -- No --> N_UpdateCargoHoldFlags_Node2 N_UpdateCargoHoldFlags_Node2 -- No --> E_UpdateCargoHoldFlags
File: GCX016.cbl
GIVEN:
A hold code has been added to the status array
WHEN:
The cargo record needs to reflect the current hold status
THEN:
The system should update the cargo hold flags to indicate border hold, destination hold, or examination hold status as appropriate
File: GCX016.cbl
GIVEN:
A cargo record with determined hold status requirements
WHEN:
- The system updates cargo hold flags
- Status indicators
THEN:
The system sets all appropriate hold flags including border hold, destination hold, FDA hold, and piece count hold flags
File: GCX016.cbl
GIVEN:
The final hold status has been determined for the cargo
WHEN:
The system updates the cargo record with hold information
THEN:
- All relevant hold flags are updated in the cargo record
- The hold location status is persisted
β Consolidated Acceptance Criteria
- External systems need to be notified of the hold status → the system should call integration services (GCCIIS) to notify equipment and other systems of the hold status
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CallIntegrationServicesforHoldNotification(["Start Step"])
E_CallIntegrationServicesforHoldNotification(["End Step"])
N_CallIntegrationServicesforHoldNotification_Node0{"External systems need to be
notified of the hold status"}:::decision N_CallIntegrationServicesforHoldNotification_Node0_action["The system should call integration
services GCCIIS to notify equipment
and other systems of the hold status"]:::main N_CallIntegrationServicesforHoldNotification_Node0 -- Yes --> N_CallIntegrationServicesforHoldNotification_Node0_action N_CallIntegrationServicesforHoldNotification_Node0_action --> E_CallIntegrationServicesforHoldNotification S_CallIntegrationServicesforHoldNotification --> N_CallIntegrationServicesforHoldNotification_Node0 N_CallIntegrationServicesforHoldNotification_Node0 -- No --> E_CallIntegrationServicesforHoldNotification
notified of the hold status"}:::decision N_CallIntegrationServicesforHoldNotification_Node0_action["The system should call integration
services GCCIIS to notify equipment
and other systems of the hold status"]:::main N_CallIntegrationServicesforHoldNotification_Node0 -- Yes --> N_CallIntegrationServicesforHoldNotification_Node0_action N_CallIntegrationServicesforHoldNotification_Node0_action --> E_CallIntegrationServicesforHoldNotification S_CallIntegrationServicesforHoldNotification --> N_CallIntegrationServicesforHoldNotification_Node0 N_CallIntegrationServicesforHoldNotification_Node0 -- No --> E_CallIntegrationServicesforHoldNotification
File: GCX016.cbl
GIVEN:
A hold notification message has been generated
WHEN:
External systems need to be notified of the hold status
THEN:
- The system should call integration services (gcciis) to notify equipment
- Other systems of the hold status
β Consolidated Acceptance Criteria
- Activity logging is required for audit purposes → the system should log the hold processing activity including disposition code, cargo details, and processing timestamp
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogHoldProcessingActivity(["Start Step"])
E_LogHoldProcessingActivity(["End Step"])
N_LogHoldProcessingActivity_Node0{"Activity logging is required for
audit purposes"}:::decision N_LogHoldProcessingActivity_Node0_action["The system should log the hold
processing activity including
disposition code, cargo details, and
processing timestamp"]:::main N_LogHoldProcessingActivity_Node0 -- Yes --> N_LogHoldProcessingActivity_Node0_action N_LogHoldProcessingActivity_Node0_action --> E_LogHoldProcessingActivity S_LogHoldProcessingActivity --> N_LogHoldProcessingActivity_Node0 N_LogHoldProcessingActivity_Node0 -- No --> E_LogHoldProcessingActivity
audit purposes"}:::decision N_LogHoldProcessingActivity_Node0_action["The system should log the hold
processing activity including
disposition code, cargo details, and
processing timestamp"]:::main N_LogHoldProcessingActivity_Node0 -- Yes --> N_LogHoldProcessingActivity_Node0_action N_LogHoldProcessingActivity_Node0_action --> E_LogHoldProcessingActivity S_LogHoldProcessingActivity --> N_LogHoldProcessingActivity_Node0 N_LogHoldProcessingActivity_Node0 -- No --> E_LogHoldProcessingActivity
File: GCX016.cbl
GIVEN:
Hold processing has been completed for cargo
WHEN:
Activity logging is required for audit purposes
THEN:
The system should log the hold processing activity including disposition code, cargo details, and processing timestamp
β Consolidated Acceptance Criteria
- The system checks the disposition code table → if the code is found, processing continues with code properties; if not found, error handling is triggered
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CodeFoundinDCTable(["Start Step"])
E_CodeFoundinDCTable(["End Step"])
N_CodeFoundinDCTable_Node0{"The system checks the disposition
code table"}:::decision N_CodeFoundinDCTable_Node0_action["If the code is found, processing
continues with code properties if
not found, error handling is
triggered"]:::main N_CodeFoundinDCTable_Node0 -- Yes --> N_CodeFoundinDCTable_Node0_action N_CodeFoundinDCTable_Node0_action --> E_CodeFoundinDCTable S_CodeFoundinDCTable --> N_CodeFoundinDCTable_Node0 N_CodeFoundinDCTable_Node0 -- No --> E_CodeFoundinDCTable
code table"}:::decision N_CodeFoundinDCTable_Node0_action["If the code is found, processing
continues with code properties if
not found, error handling is
triggered"]:::main N_CodeFoundinDCTable_Node0 -- Yes --> N_CodeFoundinDCTable_Node0_action N_CodeFoundinDCTable_Node0_action --> E_CodeFoundinDCTable S_CodeFoundinDCTable --> N_CodeFoundinDCTable_Node0 N_CodeFoundinDCTable_Node0 -- No --> E_CodeFoundinDCTable
File: GCX016.cbl
GIVEN:
A disposition code 88, 89, or 90 is being processed
WHEN:
The system checks the disposition code table
THEN:
If the code is found, processing continues with code properties; if not found, error handling is triggered
β Consolidated Acceptance Criteria
- The system processes the code type determination → special processing rules are applied specific to new customs requirements including status updates and compliance checks
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ApplySpecialProcessingRulesfor888990(["Start Step"])
E_ApplySpecialProcessingRulesfor888990(["End Step"])
N_ApplySpecialProcessingRulesfor888990_Node0{"The system processes the code type
determination"}:::decision N_ApplySpecialProcessingRulesfor888990_Node0_action["Special processing rules are
applied specific to new customs
requirements including status
updates and compliance checks"]:::main N_ApplySpecialProcessingRulesfor888990_Node0 -- Yes --> N_ApplySpecialProcessingRulesfor888990_Node0_action N_ApplySpecialProcessingRulesfor888990_Node0_action --> E_ApplySpecialProcessingRulesfor888990 S_ApplySpecialProcessingRulesfor888990 --> N_ApplySpecialProcessingRulesfor888990_Node0 N_ApplySpecialProcessingRulesfor888990_Node0 -- No --> E_ApplySpecialProcessingRulesfor888990
determination"}:::decision N_ApplySpecialProcessingRulesfor888990_Node0_action["Special processing rules are
applied specific to new customs
requirements including status
updates and compliance checks"]:::main N_ApplySpecialProcessingRulesfor888990_Node0 -- Yes --> N_ApplySpecialProcessingRulesfor888990_Node0_action N_ApplySpecialProcessingRulesfor888990_Node0_action --> E_ApplySpecialProcessingRulesfor888990 S_ApplySpecialProcessingRulesfor888990 --> N_ApplySpecialProcessingRulesfor888990_Node0 N_ApplySpecialProcessingRulesfor888990_Node0 -- No --> E_ApplySpecialProcessingRulesfor888990
File: GCX016.cbl
GIVEN:
Disposition code is validated as 88, 89, or 90
WHEN:
The system processes the code type determination
THEN:
- Special processing rules are applied specific to new customs requirements including status updates
- Compliance checks
β Consolidated Acceptance Criteria
- The system determines notifications are required → customs compliance notifications are generated and routed to appropriate parties including brokers and customs authorities
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GenerateCustomsComplianceNotifications(["Start Step"])
E_GenerateCustomsComplianceNotifications(["End Step"])
N_GenerateCustomsComplianceNotifications_Node0{"The system determines notifications
are required"}:::decision N_GenerateCustomsComplianceNotifications_Node0_action["Customs compliance notifications
are generated and routed to
appropriate parties including
brokers and customs authorities"]:::main N_GenerateCustomsComplianceNotifications_Node0 -- Yes --> N_GenerateCustomsComplianceNotifications_Node0_action N_GenerateCustomsComplianceNotifications_Node0_action --> E_GenerateCustomsComplianceNotifications S_GenerateCustomsComplianceNotifications --> N_GenerateCustomsComplianceNotifications_Node0 N_GenerateCustomsComplianceNotifications_Node0 -- No --> E_GenerateCustomsComplianceNotifications
are required"}:::decision N_GenerateCustomsComplianceNotifications_Node0_action["Customs compliance notifications
are generated and routed to
appropriate parties including
brokers and customs authorities"]:::main N_GenerateCustomsComplianceNotifications_Node0 -- Yes --> N_GenerateCustomsComplianceNotifications_Node0_action N_GenerateCustomsComplianceNotifications_Node0_action --> E_GenerateCustomsComplianceNotifications S_GenerateCustomsComplianceNotifications --> N_GenerateCustomsComplianceNotifications_Node0 N_GenerateCustomsComplianceNotifications_Node0 -- No --> E_GenerateCustomsComplianceNotifications
File: GCX016.cbl
GIVEN:
New customs requirements have been processed and status analyzed
WHEN:
The system determines notifications are required
THEN:
- Customs compliance notifications are generated
- Routed to appropriate parties including brokers
- Customs authorities
β Consolidated Acceptance Criteria
- The system looks up the disposition code in the GCSTBRT disposition code table → the system confirms the code exists and is valid for special processing, or flags it as invalid if not found
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ValidateDC95inSystemTables(["Start Step"])
E_ValidateDC95inSystemTables(["End Step"])
N_ValidateDC95inSystemTables_Node0{"The system looks up the disposition
code in the GCSTBRT disposition code
table"}:::decision N_ValidateDC95inSystemTables_Node0_action["The system confirms the code exists
and is valid for special processing,
or flags it as invalid if not found"]:::main N_ValidateDC95inSystemTables_Node0 -- Yes --> N_ValidateDC95inSystemTables_Node0_action N_ValidateDC95inSystemTables_Node0_action --> E_ValidateDC95inSystemTables S_ValidateDC95inSystemTables --> N_ValidateDC95inSystemTables_Node0 N_ValidateDC95inSystemTables_Node0 -- No --> E_ValidateDC95inSystemTables
code in the GCSTBRT disposition code
table"}:::decision N_ValidateDC95inSystemTables_Node0_action["The system confirms the code exists
and is valid for special processing,
or flags it as invalid if not found"]:::main N_ValidateDC95inSystemTables_Node0 -- Yes --> N_ValidateDC95inSystemTables_Node0_action N_ValidateDC95inSystemTables_Node0_action --> E_ValidateDC95inSystemTables S_ValidateDC95inSystemTables --> N_ValidateDC95inSystemTables_Node0 N_ValidateDC95inSystemTables_Node0 -- No --> E_ValidateDC95inSystemTables
File: GCX016.cbl
GIVEN:
A disposition code 95 is received for processing
WHEN:
The system looks up the disposition code in the GCSTBRT disposition code table
THEN:
- The system confirms the code exists
- Is valid for special processing, or flags it as invalid if not found
β Consolidated Acceptance Criteria
- The system processes the special customs handling request → the system removes the bond control number from the cargo record
- The system processes bond control number clearing → the bond control number field should be set to spaces or null value
- Bond clearing operations are initiated → the bond control number field is cleared from the cargo record
- The system processes the border entry → the bond control number field is cleared to spaces
- The system processes bond control number clearing → the bond control number field is cleared to empty value
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ClearBondControlNumber(["Start Step"])
E_ClearBondControlNumber(["End Step"])
N_ClearBondControlNumber_Node0{"The system processes the special
customs handling request"}:::decision N_ClearBondControlNumber_Node0_action["The system removes the bond control
number from the cargo record"]:::main N_ClearBondControlNumber_Node0 -- Yes --> N_ClearBondControlNumber_Node0_action N_ClearBondControlNumber_Node0_action --> E_ClearBondControlNumber S_ClearBondControlNumber --> N_ClearBondControlNumber_Node0 N_ClearBondControlNumber_Node1{"The system processes bond control
number clearing"}:::decision N_ClearBondControlNumber_Node1_action["The bond control number field
should be set to spaces or null
value"]:::main N_ClearBondControlNumber_Node1 -- Yes --> N_ClearBondControlNumber_Node1_action N_ClearBondControlNumber_Node1_action --> E_ClearBondControlNumber N_ClearBondControlNumber_Node0 -- No --> N_ClearBondControlNumber_Node1 N_ClearBondControlNumber_Node2{"Bond clearing operations are
initiated"}:::decision N_ClearBondControlNumber_Node2_action["The bond control number field is
cleared from the cargo record"]:::main N_ClearBondControlNumber_Node2 -- Yes --> N_ClearBondControlNumber_Node2_action N_ClearBondControlNumber_Node2_action --> E_ClearBondControlNumber N_ClearBondControlNumber_Node1 -- No --> N_ClearBondControlNumber_Node2 N_ClearBondControlNumber_Node3{"The system processes the border
entry"}:::decision N_ClearBondControlNumber_Node3_action["The bond control number field is
cleared to spaces"]:::main N_ClearBondControlNumber_Node3 -- Yes --> N_ClearBondControlNumber_Node3_action N_ClearBondControlNumber_Node3_action --> E_ClearBondControlNumber N_ClearBondControlNumber_Node2 -- No --> N_ClearBondControlNumber_Node3 N_ClearBondControlNumber_Node4{"The system processes bond control
number clearing"}:::decision N_ClearBondControlNumber_Node4_action["The bond control number field is
cleared to empty value"]:::main N_ClearBondControlNumber_Node4 -- Yes --> N_ClearBondControlNumber_Node4_action N_ClearBondControlNumber_Node4_action --> E_ClearBondControlNumber N_ClearBondControlNumber_Node3 -- No --> N_ClearBondControlNumber_Node4 N_ClearBondControlNumber_Node4 -- No --> E_ClearBondControlNumber
customs handling request"}:::decision N_ClearBondControlNumber_Node0_action["The system removes the bond control
number from the cargo record"]:::main N_ClearBondControlNumber_Node0 -- Yes --> N_ClearBondControlNumber_Node0_action N_ClearBondControlNumber_Node0_action --> E_ClearBondControlNumber S_ClearBondControlNumber --> N_ClearBondControlNumber_Node0 N_ClearBondControlNumber_Node1{"The system processes bond control
number clearing"}:::decision N_ClearBondControlNumber_Node1_action["The bond control number field
should be set to spaces or null
value"]:::main N_ClearBondControlNumber_Node1 -- Yes --> N_ClearBondControlNumber_Node1_action N_ClearBondControlNumber_Node1_action --> E_ClearBondControlNumber N_ClearBondControlNumber_Node0 -- No --> N_ClearBondControlNumber_Node1 N_ClearBondControlNumber_Node2{"Bond clearing operations are
initiated"}:::decision N_ClearBondControlNumber_Node2_action["The bond control number field is
cleared from the cargo record"]:::main N_ClearBondControlNumber_Node2 -- Yes --> N_ClearBondControlNumber_Node2_action N_ClearBondControlNumber_Node2_action --> E_ClearBondControlNumber N_ClearBondControlNumber_Node1 -- No --> N_ClearBondControlNumber_Node2 N_ClearBondControlNumber_Node3{"The system processes the border
entry"}:::decision N_ClearBondControlNumber_Node3_action["The bond control number field is
cleared to spaces"]:::main N_ClearBondControlNumber_Node3 -- Yes --> N_ClearBondControlNumber_Node3_action N_ClearBondControlNumber_Node3_action --> E_ClearBondControlNumber N_ClearBondControlNumber_Node2 -- No --> N_ClearBondControlNumber_Node3 N_ClearBondControlNumber_Node4{"The system processes bond control
number clearing"}:::decision N_ClearBondControlNumber_Node4_action["The bond control number field is
cleared to empty value"]:::main N_ClearBondControlNumber_Node4 -- Yes --> N_ClearBondControlNumber_Node4_action N_ClearBondControlNumber_Node4_action --> E_ClearBondControlNumber N_ClearBondControlNumber_Node3 -- No --> N_ClearBondControlNumber_Node4 N_ClearBondControlNumber_Node4 -- No --> E_ClearBondControlNumber
File: GCX016.cbl
GIVEN:
A cargo record with an existing bond control number and disposition code 95
WHEN:
The system processes the special customs handling request
THEN:
The system removes the bond control number from the cargo record
File: GCX016.cbl
GIVEN:
A valid cargo record is accessed for bond clearing
WHEN:
The system processes bond control number clearing
THEN:
The bond control number field should be set to spaces or null value
File: GCX016.cbl
GIVEN:
A cargo record has been retrieved for disposition code 95 processing
WHEN:
Bond clearing operations are initiated
THEN:
The bond control number field is cleared from the cargo record
File: GCX016.cbl
GIVEN:
A cargo entry is classified as border entry with type code '00'
WHEN:
The system processes the border entry
THEN:
The bond control number field is cleared to spaces
File: GCX016.cbl
GIVEN:
A cargo record is classified as border entry with type code '00'
WHEN:
The system processes bond control number clearing
THEN:
The bond control number field is cleared to empty value
β Consolidated Acceptance Criteria
- The system processes the special customs handling request → the system removes the broker entry number from the cargo record
- The system clears broker entry number information → the broker entry number field should be set to spaces or null value
- Continuing with disposition code 95 bond clearing process → the broker entry number field is cleared from the cargo record
- The system processes the border entry → the broker entry number field is cleared to spaces
- The system processes broker entry number clearing → the broker entry number field is cleared to empty value
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ClearBrokerEntryNumber(["Start Step"])
E_ClearBrokerEntryNumber(["End Step"])
N_ClearBrokerEntryNumber_Node0{"The system processes the special
customs handling request"}:::decision N_ClearBrokerEntryNumber_Node0_action["The system removes the broker entry
number from the cargo record"]:::main N_ClearBrokerEntryNumber_Node0 -- Yes --> N_ClearBrokerEntryNumber_Node0_action N_ClearBrokerEntryNumber_Node0_action --> E_ClearBrokerEntryNumber S_ClearBrokerEntryNumber --> N_ClearBrokerEntryNumber_Node0 N_ClearBrokerEntryNumber_Node1{"The system clears broker entry
number information"}:::decision N_ClearBrokerEntryNumber_Node1_action["The broker entry number field
should be set to spaces or null
value"]:::main N_ClearBrokerEntryNumber_Node1 -- Yes --> N_ClearBrokerEntryNumber_Node1_action N_ClearBrokerEntryNumber_Node1_action --> E_ClearBrokerEntryNumber N_ClearBrokerEntryNumber_Node0 -- No --> N_ClearBrokerEntryNumber_Node1 N_ClearBrokerEntryNumber_Node2{"Continuing with disposition code 95
bond clearing process"}:::decision N_ClearBrokerEntryNumber_Node2_action["The broker entry number field is
cleared from the cargo record"]:::main N_ClearBrokerEntryNumber_Node2 -- Yes --> N_ClearBrokerEntryNumber_Node2_action N_ClearBrokerEntryNumber_Node2_action --> E_ClearBrokerEntryNumber N_ClearBrokerEntryNumber_Node1 -- No --> N_ClearBrokerEntryNumber_Node2 N_ClearBrokerEntryNumber_Node3{"The system processes the border
entry"}:::decision N_ClearBrokerEntryNumber_Node3_action["The broker entry number field is
cleared to spaces"]:::main N_ClearBrokerEntryNumber_Node3 -- Yes --> N_ClearBrokerEntryNumber_Node3_action N_ClearBrokerEntryNumber_Node3_action --> E_ClearBrokerEntryNumber N_ClearBrokerEntryNumber_Node2 -- No --> N_ClearBrokerEntryNumber_Node3 N_ClearBrokerEntryNumber_Node4{"The system processes broker entry
number clearing"}:::decision N_ClearBrokerEntryNumber_Node4_action["The broker entry number field is
cleared to empty value"]:::main N_ClearBrokerEntryNumber_Node4 -- Yes --> N_ClearBrokerEntryNumber_Node4_action N_ClearBrokerEntryNumber_Node4_action --> E_ClearBrokerEntryNumber N_ClearBrokerEntryNumber_Node3 -- No --> N_ClearBrokerEntryNumber_Node4 N_ClearBrokerEntryNumber_Node4 -- No --> E_ClearBrokerEntryNumber
customs handling request"}:::decision N_ClearBrokerEntryNumber_Node0_action["The system removes the broker entry
number from the cargo record"]:::main N_ClearBrokerEntryNumber_Node0 -- Yes --> N_ClearBrokerEntryNumber_Node0_action N_ClearBrokerEntryNumber_Node0_action --> E_ClearBrokerEntryNumber S_ClearBrokerEntryNumber --> N_ClearBrokerEntryNumber_Node0 N_ClearBrokerEntryNumber_Node1{"The system clears broker entry
number information"}:::decision N_ClearBrokerEntryNumber_Node1_action["The broker entry number field
should be set to spaces or null
value"]:::main N_ClearBrokerEntryNumber_Node1 -- Yes --> N_ClearBrokerEntryNumber_Node1_action N_ClearBrokerEntryNumber_Node1_action --> E_ClearBrokerEntryNumber N_ClearBrokerEntryNumber_Node0 -- No --> N_ClearBrokerEntryNumber_Node1 N_ClearBrokerEntryNumber_Node2{"Continuing with disposition code 95
bond clearing process"}:::decision N_ClearBrokerEntryNumber_Node2_action["The broker entry number field is
cleared from the cargo record"]:::main N_ClearBrokerEntryNumber_Node2 -- Yes --> N_ClearBrokerEntryNumber_Node2_action N_ClearBrokerEntryNumber_Node2_action --> E_ClearBrokerEntryNumber N_ClearBrokerEntryNumber_Node1 -- No --> N_ClearBrokerEntryNumber_Node2 N_ClearBrokerEntryNumber_Node3{"The system processes the border
entry"}:::decision N_ClearBrokerEntryNumber_Node3_action["The broker entry number field is
cleared to spaces"]:::main N_ClearBrokerEntryNumber_Node3 -- Yes --> N_ClearBrokerEntryNumber_Node3_action N_ClearBrokerEntryNumber_Node3_action --> E_ClearBrokerEntryNumber N_ClearBrokerEntryNumber_Node2 -- No --> N_ClearBrokerEntryNumber_Node3 N_ClearBrokerEntryNumber_Node4{"The system processes broker entry
number clearing"}:::decision N_ClearBrokerEntryNumber_Node4_action["The broker entry number field is
cleared to empty value"]:::main N_ClearBrokerEntryNumber_Node4 -- Yes --> N_ClearBrokerEntryNumber_Node4_action N_ClearBrokerEntryNumber_Node4_action --> E_ClearBrokerEntryNumber N_ClearBrokerEntryNumber_Node3 -- No --> N_ClearBrokerEntryNumber_Node4 N_ClearBrokerEntryNumber_Node4 -- No --> E_ClearBrokerEntryNumber
File: GCX016.cbl
GIVEN:
A cargo record with an existing broker entry number and disposition code 95
WHEN:
The system processes the special customs handling request
THEN:
The system removes the broker entry number from the cargo record
File: GCX016.cbl
GIVEN:
A cargo record with bond information is being processed
WHEN:
The system clears broker entry number information
THEN:
The broker entry number field should be set to spaces or null value
File: GCX016.cbl
GIVEN:
The bond control number has been cleared from the cargo record
WHEN:
Continuing with disposition code 95 bond clearing process
THEN:
The broker entry number field is cleared from the cargo record
File: GCX016.cbl
GIVEN:
A cargo entry is classified as border entry with type code '00'
WHEN:
The system processes the border entry
THEN:
The broker entry number field is cleared to spaces
File: GCX016.cbl
GIVEN:
A cargo record is classified as border entry with type code '00'
WHEN:
The system processes broker entry number clearing
THEN:
The broker entry number field is cleared to empty value
β Consolidated Acceptance Criteria
- The system processes the special customs handling request → the system removes all bond-related data including bond numbers, dates, and references
- The system processes related bond data clearing → all bond-related data fields should be cleared or reset to default values
- The system performs comprehensive bond data clearing → all related bond data fields including dates, amounts, and references are cleared
- The system processes the border entry → all related bond data fields including bond number, bond type, and bond status are cleared
- The system processes related bond data clearing → all related bond data fields are cleared including bond numbers, dates, and references
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ClearRelatedBondData(["Start Step"])
E_ClearRelatedBondData(["End Step"])
N_ClearRelatedBondData_Node0{"The system processes the special
customs handling request"}:::decision N_ClearRelatedBondData_Node0_action["The system removes all bond-related
data including bond numbers, dates,
and references"]:::main N_ClearRelatedBondData_Node0 -- Yes --> N_ClearRelatedBondData_Node0_action N_ClearRelatedBondData_Node0_action --> E_ClearRelatedBondData S_ClearRelatedBondData --> N_ClearRelatedBondData_Node0 N_ClearRelatedBondData_Node1{"The system processes related bond
data clearing"}:::decision N_ClearRelatedBondData_Node1_action["All bond-related data fields should
be cleared or reset to default
values"]:::main N_ClearRelatedBondData_Node1 -- Yes --> N_ClearRelatedBondData_Node1_action N_ClearRelatedBondData_Node1_action --> E_ClearRelatedBondData N_ClearRelatedBondData_Node0 -- No --> N_ClearRelatedBondData_Node1 N_ClearRelatedBondData_Node2{"The system performs comprehensive
bond data clearing"}:::decision N_ClearRelatedBondData_Node2_action["All related bond data fields
including dates, amounts, and
references are cleared"]:::main N_ClearRelatedBondData_Node2 -- Yes --> N_ClearRelatedBondData_Node2_action N_ClearRelatedBondData_Node2_action --> E_ClearRelatedBondData N_ClearRelatedBondData_Node1 -- No --> N_ClearRelatedBondData_Node2 N_ClearRelatedBondData_Node3{"The system processes the border
entry"}:::decision N_ClearRelatedBondData_Node3_action["All related bond data fields
including bond number, bond type,
and bond status are cleared"]:::main N_ClearRelatedBondData_Node3 -- Yes --> N_ClearRelatedBondData_Node3_action N_ClearRelatedBondData_Node3_action --> E_ClearRelatedBondData N_ClearRelatedBondData_Node2 -- No --> N_ClearRelatedBondData_Node3 N_ClearRelatedBondData_Node4{"The system processes related bond
data clearing"}:::decision N_ClearRelatedBondData_Node4_action["All related bond data fields are
cleared including bond numbers,
dates, and references"]:::main N_ClearRelatedBondData_Node4 -- Yes --> N_ClearRelatedBondData_Node4_action N_ClearRelatedBondData_Node4_action --> E_ClearRelatedBondData N_ClearRelatedBondData_Node3 -- No --> N_ClearRelatedBondData_Node4 N_ClearRelatedBondData_Node4 -- No --> E_ClearRelatedBondData
customs handling request"}:::decision N_ClearRelatedBondData_Node0_action["The system removes all bond-related
data including bond numbers, dates,
and references"]:::main N_ClearRelatedBondData_Node0 -- Yes --> N_ClearRelatedBondData_Node0_action N_ClearRelatedBondData_Node0_action --> E_ClearRelatedBondData S_ClearRelatedBondData --> N_ClearRelatedBondData_Node0 N_ClearRelatedBondData_Node1{"The system processes related bond
data clearing"}:::decision N_ClearRelatedBondData_Node1_action["All bond-related data fields should
be cleared or reset to default
values"]:::main N_ClearRelatedBondData_Node1 -- Yes --> N_ClearRelatedBondData_Node1_action N_ClearRelatedBondData_Node1_action --> E_ClearRelatedBondData N_ClearRelatedBondData_Node0 -- No --> N_ClearRelatedBondData_Node1 N_ClearRelatedBondData_Node2{"The system performs comprehensive
bond data clearing"}:::decision N_ClearRelatedBondData_Node2_action["All related bond data fields
including dates, amounts, and
references are cleared"]:::main N_ClearRelatedBondData_Node2 -- Yes --> N_ClearRelatedBondData_Node2_action N_ClearRelatedBondData_Node2_action --> E_ClearRelatedBondData N_ClearRelatedBondData_Node1 -- No --> N_ClearRelatedBondData_Node2 N_ClearRelatedBondData_Node3{"The system processes the border
entry"}:::decision N_ClearRelatedBondData_Node3_action["All related bond data fields
including bond number, bond type,
and bond status are cleared"]:::main N_ClearRelatedBondData_Node3 -- Yes --> N_ClearRelatedBondData_Node3_action N_ClearRelatedBondData_Node3_action --> E_ClearRelatedBondData N_ClearRelatedBondData_Node2 -- No --> N_ClearRelatedBondData_Node3 N_ClearRelatedBondData_Node4{"The system processes related bond
data clearing"}:::decision N_ClearRelatedBondData_Node4_action["All related bond data fields are
cleared including bond numbers,
dates, and references"]:::main N_ClearRelatedBondData_Node4 -- Yes --> N_ClearRelatedBondData_Node4_action N_ClearRelatedBondData_Node4_action --> E_ClearRelatedBondData N_ClearRelatedBondData_Node3 -- No --> N_ClearRelatedBondData_Node4 N_ClearRelatedBondData_Node4 -- No --> E_ClearRelatedBondData
File: GCX016.cbl
GIVEN:
A cargo record with existing bond-related data fields and disposition code 95
WHEN:
The system processes the special customs handling request
THEN:
The system removes all bond-related data including bond numbers, dates, and references
File: GCX016.cbl
GIVEN:
A cargo record contains various bond-related data fields
WHEN:
The system processes related bond data clearing
THEN:
All bond-related data fields should be cleared or reset to default values
File: GCX016.cbl
GIVEN:
A border entry cargo record with various bond-related data fields populated
WHEN:
The system performs comprehensive bond data clearing
THEN:
All related bond data fields including dates, amounts, and references are cleared
File: GCX016.cbl
GIVEN:
A cargo entry is classified as border entry with type code '00'
WHEN:
The system processes the border entry
THEN:
All related bond data fields including bond number, bond type, and bond status are cleared
File: GCX016.cbl
GIVEN:
A cargo record is classified as border entry with type code '00'
WHEN:
The system processes related bond data clearing
THEN:
All related bond data fields are cleared including bond numbers, dates, and references
β Consolidated Acceptance Criteria
- The system completes the bond data clearing operations → the system sets a special processing flag to track the cargo's special handling status
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetSpecialProcessingFlag(["Start Step"])
E_SetSpecialProcessingFlag(["End Step"])
N_SetSpecialProcessingFlag_Node0{"The system completes the bond data
clearing operations"}:::decision N_SetSpecialProcessingFlag_Node0_action["The system sets a special
processing flag to track the cargo s
special handling status"]:::main N_SetSpecialProcessingFlag_Node0 -- Yes --> N_SetSpecialProcessingFlag_Node0_action N_SetSpecialProcessingFlag_Node0_action --> E_SetSpecialProcessingFlag S_SetSpecialProcessingFlag --> N_SetSpecialProcessingFlag_Node0 N_SetSpecialProcessingFlag_Node0 -- No --> E_SetSpecialProcessingFlag
clearing operations"}:::decision N_SetSpecialProcessingFlag_Node0_action["The system sets a special
processing flag to track the cargo s
special handling status"]:::main N_SetSpecialProcessingFlag_Node0 -- Yes --> N_SetSpecialProcessingFlag_Node0_action N_SetSpecialProcessingFlag_Node0_action --> E_SetSpecialProcessingFlag S_SetSpecialProcessingFlag --> N_SetSpecialProcessingFlag_Node0 N_SetSpecialProcessingFlag_Node0 -- No --> E_SetSpecialProcessingFlag
File: GCX016.cbl
GIVEN:
A cargo record being processed with disposition code 95
WHEN:
The system completes the bond data clearing operations
THEN:
The system sets a special processing flag to track the cargo's special handling status
β Consolidated Acceptance Criteria
- The system completes the special processing operations → the system creates an audit log entry documenting the special processing action with timestamp and cargo details
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogSpecialProcessingAction(["Start Step"])
E_LogSpecialProcessingAction(["End Step"])
N_LogSpecialProcessingAction_Node0{"The system completes the special
processing operations"}:::decision N_LogSpecialProcessingAction_Node0_action["The system creates an audit log
entry documenting the special
processing action with timestamp and
cargo details"]:::main N_LogSpecialProcessingAction_Node0 -- Yes --> N_LogSpecialProcessingAction_Node0_action N_LogSpecialProcessingAction_Node0_action --> E_LogSpecialProcessingAction S_LogSpecialProcessingAction --> N_LogSpecialProcessingAction_Node0 N_LogSpecialProcessingAction_Node0 -- No --> E_LogSpecialProcessingAction
processing operations"}:::decision N_LogSpecialProcessingAction_Node0_action["The system creates an audit log
entry documenting the special
processing action with timestamp and
cargo details"]:::main N_LogSpecialProcessingAction_Node0 -- Yes --> N_LogSpecialProcessingAction_Node0_action N_LogSpecialProcessingAction_Node0_action --> E_LogSpecialProcessingAction S_LogSpecialProcessingAction --> N_LogSpecialProcessingAction_Node0 N_LogSpecialProcessingAction_Node0 -- No --> E_LogSpecialProcessingAction
File: GCX016.cbl
GIVEN:
A cargo record that has undergone disposition code 95 processing
WHEN:
The system completes the special processing operations
THEN:
- The system creates an audit log entry documenting the special processing action with timestamp
- Cargo details
β Consolidated Acceptance Criteria
- The system finalizes the database updates → the system generates a status message containing cargo details and processing results for distribution
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GenerateStatusMessage(["Start Step"])
E_GenerateStatusMessage(["End Step"])
N_GenerateStatusMessage_Node0{"The system finalizes the database
updates"}:::decision N_GenerateStatusMessage_Node0_action["The system generates a status
message containing cargo details and
processing results for distribution"]:::main N_GenerateStatusMessage_Node0 -- Yes --> N_GenerateStatusMessage_Node0_action N_GenerateStatusMessage_Node0_action --> E_GenerateStatusMessage S_GenerateStatusMessage --> N_GenerateStatusMessage_Node0 N_GenerateStatusMessage_Node0 -- No --> E_GenerateStatusMessage
updates"}:::decision N_GenerateStatusMessage_Node0_action["The system generates a status
message containing cargo details and
processing results for distribution"]:::main N_GenerateStatusMessage_Node0 -- Yes --> N_GenerateStatusMessage_Node0_action N_GenerateStatusMessage_Node0_action --> E_GenerateStatusMessage S_GenerateStatusMessage --> N_GenerateStatusMessage_Node0 N_GenerateStatusMessage_Node0 -- No --> E_GenerateStatusMessage
File: GCX016.cbl
GIVEN:
A cargo record that has completed disposition code 95 processing
WHEN:
The system finalizes the database updates
THEN:
- The system generates a status message containing cargo details
- Processing results for distribution
β Consolidated Acceptance Criteria
- The system determines the appropriate customs routing destination → the system sends the message to the designated customs authority for their processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RouteMessagetoCustoms(["Start Step"])
E_RouteMessagetoCustoms(["End Step"])
N_RouteMessagetoCustoms_Node0{"The system determines the
appropriate customs routing
destination"}:::decision N_RouteMessagetoCustoms_Node0_action["The system sends the message to the
designated customs authority for
their processing"]:::main N_RouteMessagetoCustoms_Node0 -- Yes --> N_RouteMessagetoCustoms_Node0_action N_RouteMessagetoCustoms_Node0_action --> E_RouteMessagetoCustoms S_RouteMessagetoCustoms --> N_RouteMessagetoCustoms_Node0 N_RouteMessagetoCustoms_Node0 -- No --> E_RouteMessagetoCustoms
appropriate customs routing
destination"}:::decision N_RouteMessagetoCustoms_Node0_action["The system sends the message to the
designated customs authority for
their processing"]:::main N_RouteMessagetoCustoms_Node0 -- Yes --> N_RouteMessagetoCustoms_Node0_action N_RouteMessagetoCustoms_Node0_action --> E_RouteMessagetoCustoms S_RouteMessagetoCustoms --> N_RouteMessagetoCustoms_Node0 N_RouteMessagetoCustoms_Node0 -- No --> E_RouteMessagetoCustoms
File: GCX016.cbl
GIVEN:
A generated status message for disposition code 95 processing
WHEN:
The system determines the appropriate customs routing destination
THEN:
The system sends the message to the designated customs authority for their processing
β Consolidated Acceptance Criteria
- The system attempts to process the invalid disposition code → the system generates an error message indicating invalid disposition code and stops processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ErrorInvalidDC95(["Start Step"])
E_ErrorInvalidDC95(["End Step"])
N_ErrorInvalidDC95_Node0{"The system attempts to process the
invalid disposition code"}:::decision N_ErrorInvalidDC95_Node0_action["The system generates an error
message indicating invalid
disposition code and stops
processing"]:::exclusion N_ErrorInvalidDC95_Node0 -- Yes -->|Alternative| N_ErrorInvalidDC95_Node0_action N_ErrorInvalidDC95_Node0_action --> E_ErrorInvalidDC95 S_ErrorInvalidDC95 --> N_ErrorInvalidDC95_Node0 N_ErrorInvalidDC95_Node0 -- No --> E_ErrorInvalidDC95
invalid disposition code"}:::decision N_ErrorInvalidDC95_Node0_action["The system generates an error
message indicating invalid
disposition code and stops
processing"]:::exclusion N_ErrorInvalidDC95_Node0 -- Yes -->|Alternative| N_ErrorInvalidDC95_Node0_action N_ErrorInvalidDC95_Node0_action --> E_ErrorInvalidDC95 S_ErrorInvalidDC95 --> N_ErrorInvalidDC95_Node0 N_ErrorInvalidDC95_Node0 -- No --> E_ErrorInvalidDC95
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
A disposition code 95 that fails validation in system tables
WHEN:
The system attempts to process the invalid disposition code
THEN:
- The system generates an error message indicating invalid disposition code
- Stops processing
β Consolidated Acceptance Criteria
- The disposition code is A1 or A3 → the system validates the code as a valid FDA disposition code and proceeds with FDA processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ValidateDispositionCodeA1A3(["Start Step"])
E_ValidateDispositionCodeA1A3(["End Step"])
N_ValidateDispositionCodeA1A3_Node0{"The disposition code is A1 or A3"}:::decision
N_ValidateDispositionCodeA1A3_Node0_action["The system validates the code as a
valid FDA disposition code and
proceeds with FDA processing"]:::main N_ValidateDispositionCodeA1A3_Node0 -- Yes --> N_ValidateDispositionCodeA1A3_Node0_action N_ValidateDispositionCodeA1A3_Node0_action --> E_ValidateDispositionCodeA1A3 S_ValidateDispositionCodeA1A3 --> N_ValidateDispositionCodeA1A3_Node0 N_ValidateDispositionCodeA1A3_Node0 -- No --> E_ValidateDispositionCodeA1A3
valid FDA disposition code and
proceeds with FDA processing"]:::main N_ValidateDispositionCodeA1A3_Node0 -- Yes --> N_ValidateDispositionCodeA1A3_Node0_action N_ValidateDispositionCodeA1A3_Node0_action --> E_ValidateDispositionCodeA1A3 S_ValidateDispositionCodeA1A3 --> N_ValidateDispositionCodeA1A3_Node0 N_ValidateDispositionCodeA1A3_Node0 -- No --> E_ValidateDispositionCodeA1A3
File: GCX016.cbl
GIVEN:
A disposition code is received for cargo processing
WHEN:
The disposition code is A1 or A3
THEN:
- The system validates the code as a valid fda disposition code
- Proceeds with fda processing
β Consolidated Acceptance Criteria
- The system needs FDA reference information for compliance processing → the system retrieves all available N9 reference segments associated with the cargo
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RetrieveN9ReferenceSegments(["Start Step"])
E_RetrieveN9ReferenceSegments(["End Step"])
N_RetrieveN9ReferenceSegments_Node0{"The system needs FDA reference
information for compliance
processing"}:::decision N_RetrieveN9ReferenceSegments_Node0_action["The system retrieves all available
N9 reference segments associated
with the cargo"]:::main N_RetrieveN9ReferenceSegments_Node0 -- Yes --> N_RetrieveN9ReferenceSegments_Node0_action N_RetrieveN9ReferenceSegments_Node0_action --> E_RetrieveN9ReferenceSegments S_RetrieveN9ReferenceSegments --> N_RetrieveN9ReferenceSegments_Node0 N_RetrieveN9ReferenceSegments_Node0 -- No --> E_RetrieveN9ReferenceSegments
information for compliance
processing"}:::decision N_RetrieveN9ReferenceSegments_Node0_action["The system retrieves all available
N9 reference segments associated
with the cargo"]:::main N_RetrieveN9ReferenceSegments_Node0 -- Yes --> N_RetrieveN9ReferenceSegments_Node0_action N_RetrieveN9ReferenceSegments_Node0_action --> E_RetrieveN9ReferenceSegments S_RetrieveN9ReferenceSegments --> N_RetrieveN9ReferenceSegments_Node0 N_RetrieveN9ReferenceSegments_Node0 -- No --> E_RetrieveN9ReferenceSegments
File: GCX016.cbl
GIVEN:
A valid FDA disposition code A1 or A3 has been validated
WHEN:
The system needs FDA reference information for compliance processing
THEN:
The system retrieves all available N9 reference segments associated with the cargo
β Consolidated Acceptance Criteria
- N9 segments are found and available for processing → the system proceeds with FDA reference number processing, otherwise generates FDA compliance error
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_N9SegmentsAvailable(["Start Step"])
E_N9SegmentsAvailable(["End Step"])
N_N9SegmentsAvailable_Node0{"N9 segments are found and available
for processing"}:::decision N_N9SegmentsAvailable_Node0_action["The system proceeds with FDA
reference number processing,
otherwise generates FDA compliance
error"]:::main N_N9SegmentsAvailable_Node0 -- Yes --> N_N9SegmentsAvailable_Node0_action N_N9SegmentsAvailable_Node0_action --> E_N9SegmentsAvailable S_N9SegmentsAvailable --> N_N9SegmentsAvailable_Node0 N_N9SegmentsAvailable_Node0 -- No --> E_N9SegmentsAvailable
for processing"}:::decision N_N9SegmentsAvailable_Node0_action["The system proceeds with FDA
reference number processing,
otherwise generates FDA compliance
error"]:::main N_N9SegmentsAvailable_Node0 -- Yes --> N_N9SegmentsAvailable_Node0_action N_N9SegmentsAvailable_Node0_action --> E_N9SegmentsAvailable S_N9SegmentsAvailable --> N_N9SegmentsAvailable_Node0 N_N9SegmentsAvailable_Node0 -- No --> E_N9SegmentsAvailable
File: GCX016.cbl
GIVEN:
The system has attempted to retrieve N9 reference segments for FDA processing
WHEN:
- N9 segments are found
- Available for processing
THEN:
The system proceeds with FDA reference number processing, otherwise generates FDA compliance error
β Consolidated Acceptance Criteria
- The system processes the N9 segments for FDA compliance → the system extracts FDA reference numbers and prepares them for qualifier validation
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ProcessFDAReferenceNumbers(["Start Step"])
E_ProcessFDAReferenceNumbers(["End Step"])
N_ProcessFDAReferenceNumbers_Node0{"The system processes the N9
segments for FDA compliance"}:::decision N_ProcessFDAReferenceNumbers_Node0_action["The system extracts FDA reference
numbers and prepares them for
qualifier validation"]:::main N_ProcessFDAReferenceNumbers_Node0 -- Yes --> N_ProcessFDAReferenceNumbers_Node0_action N_ProcessFDAReferenceNumbers_Node0_action --> E_ProcessFDAReferenceNumbers S_ProcessFDAReferenceNumbers --> N_ProcessFDAReferenceNumbers_Node0 N_ProcessFDAReferenceNumbers_Node0 -- No --> E_ProcessFDAReferenceNumbers
segments for FDA compliance"}:::decision N_ProcessFDAReferenceNumbers_Node0_action["The system extracts FDA reference
numbers and prepares them for
qualifier validation"]:::main N_ProcessFDAReferenceNumbers_Node0 -- Yes --> N_ProcessFDAReferenceNumbers_Node0_action N_ProcessFDAReferenceNumbers_Node0_action --> E_ProcessFDAReferenceNumbers S_ProcessFDAReferenceNumbers --> N_ProcessFDAReferenceNumbers_Node0 N_ProcessFDAReferenceNumbers_Node0 -- No --> E_ProcessFDAReferenceNumbers
File: GCX016.cbl
GIVEN:
N9 segments are available and contain FDA reference information
WHEN:
The system processes the N9 segments for FDA compliance
THEN:
- The system extracts fda reference numbers
- Prepares them for qualifier validation
β Consolidated Acceptance Criteria
- The system extracts qualifier information from the N9 segments → the system obtains FDA qualifier codes and associated compliance data for validation
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExtractFDAQualifierInformation(["Start Step"])
E_ExtractFDAQualifierInformation(["End Step"])
N_ExtractFDAQualifierInformation_Node0{"The system extracts qualifier
information from the N9 segments"}:::decision N_ExtractFDAQualifierInformation_Node0_action["The system obtains FDA qualifier
codes and associated compliance data
for validation"]:::main N_ExtractFDAQualifierInformation_Node0 -- Yes --> N_ExtractFDAQualifierInformation_Node0_action N_ExtractFDAQualifierInformation_Node0_action --> E_ExtractFDAQualifierInformation S_ExtractFDAQualifierInformation --> N_ExtractFDAQualifierInformation_Node0 N_ExtractFDAQualifierInformation_Node0 -- No --> E_ExtractFDAQualifierInformation
information from the N9 segments"}:::decision N_ExtractFDAQualifierInformation_Node0_action["The system obtains FDA qualifier
codes and associated compliance data
for validation"]:::main N_ExtractFDAQualifierInformation_Node0 -- Yes --> N_ExtractFDAQualifierInformation_Node0_action N_ExtractFDAQualifierInformation_Node0_action --> E_ExtractFDAQualifierInformation S_ExtractFDAQualifierInformation --> N_ExtractFDAQualifierInformation_Node0 N_ExtractFDAQualifierInformation_Node0 -- No --> E_ExtractFDAQualifierInformation
File: GCX016.cbl
GIVEN:
FDA reference numbers have been processed from N9 segments
WHEN:
The system extracts qualifier information from the N9 segments
THEN:
- The system obtains fda qualifier codes
- Associated compliance data for validation
β Consolidated Acceptance Criteria
- The system validates FDA compliance requirements → the system determines if all FDA requirements are met based on the qualifier codes and reference data
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ValidateFDAComplianceRequirements(["Start Step"])
E_ValidateFDAComplianceRequirements(["End Step"])
N_ValidateFDAComplianceRequirements_Node0{"The system validates FDA compliance
requirements"}:::decision N_ValidateFDAComplianceRequirements_Node0_action["The system determines if all FDA
requirements are met based on the
qualifier codes and reference data"]:::main N_ValidateFDAComplianceRequirements_Node0 -- Yes --> N_ValidateFDAComplianceRequirements_Node0_action N_ValidateFDAComplianceRequirements_Node0_action --> E_ValidateFDAComplianceRequirements S_ValidateFDAComplianceRequirements --> N_ValidateFDAComplianceRequirements_Node0 N_ValidateFDAComplianceRequirements_Node0 -- No --> E_ValidateFDAComplianceRequirements
requirements"}:::decision N_ValidateFDAComplianceRequirements_Node0_action["The system determines if all FDA
requirements are met based on the
qualifier codes and reference data"]:::main N_ValidateFDAComplianceRequirements_Node0 -- Yes --> N_ValidateFDAComplianceRequirements_Node0_action N_ValidateFDAComplianceRequirements_Node0_action --> E_ValidateFDAComplianceRequirements S_ValidateFDAComplianceRequirements --> N_ValidateFDAComplianceRequirements_Node0 N_ValidateFDAComplianceRequirements_Node0 -- No --> E_ValidateFDAComplianceRequirements
File: GCX016.cbl
GIVEN:
FDA qualifier information and reference numbers have been extracted from N9 segments
WHEN:
The system validates FDA compliance requirements
THEN:
- The system determines if all fda requirements are met based on the qualifier codes
- Reference data
β Consolidated Acceptance Criteria
- All FDA requirements are met → the system sets FDA hold status at destination, otherwise generates FDA compliance error
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_FDARequirementsMet(["Start Step"])
E_FDARequirementsMet(["End Step"])
N_FDARequirementsMet_Node0{"All FDA requirements are met"}:::decision
N_FDARequirementsMet_Node0_action["The system sets FDA hold status at
destination, otherwise generates FDA
compliance error"]:::main N_FDARequirementsMet_Node0 -- Yes --> N_FDARequirementsMet_Node0_action N_FDARequirementsMet_Node0_action --> E_FDARequirementsMet S_FDARequirementsMet --> N_FDARequirementsMet_Node0 N_FDARequirementsMet_Node0 -- No --> E_FDARequirementsMet
destination, otherwise generates FDA
compliance error"]:::main N_FDARequirementsMet_Node0 -- Yes --> N_FDARequirementsMet_Node0_action N_FDARequirementsMet_Node0_action --> E_FDARequirementsMet S_FDARequirementsMet --> N_FDARequirementsMet_Node0 N_FDARequirementsMet_Node0 -- No --> E_FDARequirementsMet
File: GCX016.cbl
GIVEN:
FDA compliance requirements have been validated against cargo information
WHEN:
All FDA requirements are met
THEN:
The system sets FDA hold status at destination, otherwise generates FDA compliance error
β Consolidated Acceptance Criteria
- Cargo requires FDA hold for inspection at destination → the system sets FDA hold status specifically at the destination location
- The system processes FDA hold assignment → the system sets FDA hold status with destination location designation
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetFDAHoldStatusatDestination(["Start Step"])
E_SetFDAHoldStatusatDestination(["End Step"])
N_SetFDAHoldStatusatDestination_Node0{"Cargo requires FDA hold for
inspection at destination"}:::decision N_SetFDAHoldStatusatDestination_Node0_action["The system sets FDA hold status
specifically at the destination
location"]:::main N_SetFDAHoldStatusatDestination_Node0 -- Yes --> N_SetFDAHoldStatusatDestination_Node0_action N_SetFDAHoldStatusatDestination_Node0_action --> E_SetFDAHoldStatusatDestination S_SetFDAHoldStatusatDestination --> N_SetFDAHoldStatusatDestination_Node0 N_SetFDAHoldStatusatDestination_Node1{"The system processes FDA hold
assignment"}:::decision N_SetFDAHoldStatusatDestination_Node1_action["The system sets FDA hold status
with destination location
designation"]:::main N_SetFDAHoldStatusatDestination_Node1 -- Yes --> N_SetFDAHoldStatusatDestination_Node1_action N_SetFDAHoldStatusatDestination_Node1_action --> E_SetFDAHoldStatusatDestination N_SetFDAHoldStatusatDestination_Node0 -- No --> N_SetFDAHoldStatusatDestination_Node1 N_SetFDAHoldStatusatDestination_Node1 -- No --> E_SetFDAHoldStatusatDestination
inspection at destination"}:::decision N_SetFDAHoldStatusatDestination_Node0_action["The system sets FDA hold status
specifically at the destination
location"]:::main N_SetFDAHoldStatusatDestination_Node0 -- Yes --> N_SetFDAHoldStatusatDestination_Node0_action N_SetFDAHoldStatusatDestination_Node0_action --> E_SetFDAHoldStatusatDestination S_SetFDAHoldStatusatDestination --> N_SetFDAHoldStatusatDestination_Node0 N_SetFDAHoldStatusatDestination_Node1{"The system processes FDA hold
assignment"}:::decision N_SetFDAHoldStatusatDestination_Node1_action["The system sets FDA hold status
with destination location
designation"]:::main N_SetFDAHoldStatusatDestination_Node1 -- Yes --> N_SetFDAHoldStatusatDestination_Node1_action N_SetFDAHoldStatusatDestination_Node1_action --> E_SetFDAHoldStatusatDestination N_SetFDAHoldStatusatDestination_Node0 -- No --> N_SetFDAHoldStatusatDestination_Node1 N_SetFDAHoldStatusatDestination_Node1 -- No --> E_SetFDAHoldStatusatDestination
File: GCX016.cbl
GIVEN:
FDA compliance requirements have been validated and met
WHEN:
Cargo requires FDA hold for inspection at destination
THEN:
The system sets FDA hold status specifically at the destination location
File: GCX016.cbl
GIVEN:
FDA hold codes are found in the status array and cargo is at destination
WHEN:
The system processes FDA hold assignment
THEN:
The system sets FDA hold status with destination location designation
β Consolidated Acceptance Criteria
- The cargo status array needs to be updated with FDA information → the system adds FDA disposition codes and hold status to the cargo status array
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UpdateCargoStatusArraywithFDACode(["Start Step"])
E_UpdateCargoStatusArraywithFDACode(["End Step"])
N_UpdateCargoStatusArraywithFDACode_Node0{"The cargo status array needs to be
updated with FDA information"}:::decision N_UpdateCargoStatusArraywithFDACode_Node0_action["The system adds FDA disposition
codes and hold status to the cargo
status array"]:::main N_UpdateCargoStatusArraywithFDACode_Node0 -- Yes --> N_UpdateCargoStatusArraywithFDACode_Node0_action N_UpdateCargoStatusArraywithFDACode_Node0_action --> E_UpdateCargoStatusArraywithFDACode S_UpdateCargoStatusArraywithFDACode --> N_UpdateCargoStatusArraywithFDACode_Node0 N_UpdateCargoStatusArraywithFDACode_Node0 -- No --> E_UpdateCargoStatusArraywithFDACode
updated with FDA information"}:::decision N_UpdateCargoStatusArraywithFDACode_Node0_action["The system adds FDA disposition
codes and hold status to the cargo
status array"]:::main N_UpdateCargoStatusArraywithFDACode_Node0 -- Yes --> N_UpdateCargoStatusArraywithFDACode_Node0_action N_UpdateCargoStatusArraywithFDACode_Node0_action --> E_UpdateCargoStatusArraywithFDACode S_UpdateCargoStatusArraywithFDACode --> N_UpdateCargoStatusArraywithFDACode_Node0 N_UpdateCargoStatusArraywithFDACode_Node0 -- No --> E_UpdateCargoStatusArraywithFDACode
File: GCX016.cbl
GIVEN:
FDA hold status has been set at destination
WHEN:
The cargo status array needs to be updated with FDA information
THEN:
- The system adds fda disposition codes
- Hold status to the cargo status array
β Consolidated Acceptance Criteria
- FDA hold message needs to be generated for stakeholder notification → the system creates FDA hold message with relevant compliance information and cargo details
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GenerateFDAHoldMessage(["Start Step"])
E_GenerateFDAHoldMessage(["End Step"])
N_GenerateFDAHoldMessage_Node0{"FDA hold message needs to be
generated for stakeholder
notification"}:::decision N_GenerateFDAHoldMessage_Node0_action["The system creates FDA hold message
with relevant compliance information
and cargo details"]:::main N_GenerateFDAHoldMessage_Node0 -- Yes --> N_GenerateFDAHoldMessage_Node0_action N_GenerateFDAHoldMessage_Node0_action --> E_GenerateFDAHoldMessage S_GenerateFDAHoldMessage --> N_GenerateFDAHoldMessage_Node0 N_GenerateFDAHoldMessage_Node0 -- No --> E_GenerateFDAHoldMessage
generated for stakeholder
notification"}:::decision N_GenerateFDAHoldMessage_Node0_action["The system creates FDA hold message
with relevant compliance information
and cargo details"]:::main N_GenerateFDAHoldMessage_Node0 -- Yes --> N_GenerateFDAHoldMessage_Node0_action N_GenerateFDAHoldMessage_Node0_action --> E_GenerateFDAHoldMessage S_GenerateFDAHoldMessage --> N_GenerateFDAHoldMessage_Node0 N_GenerateFDAHoldMessage_Node0 -- No --> E_GenerateFDAHoldMessage
File: GCX016.cbl
GIVEN:
Cargo status array has been updated with FDA codes
WHEN:
FDA hold message needs to be generated for stakeholder notification
THEN:
- The system creates fda hold message with relevant compliance information
- Cargo details
β Consolidated Acceptance Criteria
- FDA notification needs to be distributed to stakeholders → the system routes the notification to FDA, brokers, and other appropriate parties based on cargo and compliance requirements
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RouteFDANotificationtoAppropriateParties(["Start Step"])
E_RouteFDANotificationtoAppropriateParties(["End Step"])
N_RouteFDANotificationtoAppropriateParties_Node0{"FDA notification needs to be
distributed to stakeholders"}:::decision N_RouteFDANotificationtoAppropriateParties_Node0_action["The system routes the notification
to FDA, brokers, and other
appropriate parties based on cargo
and compliance requirements"]:::main N_RouteFDANotificationtoAppropriateParties_Node0 -- Yes --> N_RouteFDANotificationtoAppropriateParties_Node0_action N_RouteFDANotificationtoAppropriateParties_Node0_action --> E_RouteFDANotificationtoAppropriateParties S_RouteFDANotificationtoAppropriateParties --> N_RouteFDANotificationtoAppropriateParties_Node0 N_RouteFDANotificationtoAppropriateParties_Node0 -- No --> E_RouteFDANotificationtoAppropriateParties
distributed to stakeholders"}:::decision N_RouteFDANotificationtoAppropriateParties_Node0_action["The system routes the notification
to FDA, brokers, and other
appropriate parties based on cargo
and compliance requirements"]:::main N_RouteFDANotificationtoAppropriateParties_Node0 -- Yes --> N_RouteFDANotificationtoAppropriateParties_Node0_action N_RouteFDANotificationtoAppropriateParties_Node0_action --> E_RouteFDANotificationtoAppropriateParties S_RouteFDANotificationtoAppropriateParties --> N_RouteFDANotificationtoAppropriateParties_Node0 N_RouteFDANotificationtoAppropriateParties_Node0 -- No --> E_RouteFDANotificationtoAppropriateParties
File: GCX016.cbl
GIVEN:
FDA hold message has been generated
WHEN:
FDA notification needs to be distributed to stakeholders
THEN:
- The system routes the notification to fda, brokers, and other appropriate parties based on cargo
- Compliance requirements
β Consolidated Acceptance Criteria
- FDA processing activity needs to be recorded for audit purposes → the system logs all FDA processing steps, decisions, and notifications for compliance tracking
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogFDAProcessingActivity(["Start Step"])
E_LogFDAProcessingActivity(["End Step"])
N_LogFDAProcessingActivity_Node0{"FDA processing activity needs to be
recorded for audit purposes"}:::decision N_LogFDAProcessingActivity_Node0_action["The system logs all FDA processing
steps, decisions, and notifications
for compliance tracking"]:::main N_LogFDAProcessingActivity_Node0 -- Yes --> N_LogFDAProcessingActivity_Node0_action N_LogFDAProcessingActivity_Node0_action --> E_LogFDAProcessingActivity S_LogFDAProcessingActivity --> N_LogFDAProcessingActivity_Node0 N_LogFDAProcessingActivity_Node0 -- No --> E_LogFDAProcessingActivity
recorded for audit purposes"}:::decision N_LogFDAProcessingActivity_Node0_action["The system logs all FDA processing
steps, decisions, and notifications
for compliance tracking"]:::main N_LogFDAProcessingActivity_Node0 -- Yes --> N_LogFDAProcessingActivity_Node0_action N_LogFDAProcessingActivity_Node0_action --> E_LogFDAProcessingActivity S_LogFDAProcessingActivity --> N_LogFDAProcessingActivity_Node0 N_LogFDAProcessingActivity_Node0 -- No --> E_LogFDAProcessingActivity
File: GCX016.cbl
GIVEN:
FDA notifications have been routed to appropriate parties
WHEN:
FDA processing activity needs to be recorded for audit purposes
THEN:
The system logs all FDA processing steps, decisions, and notifications for compliance tracking
β Consolidated Acceptance Criteria
- FDA compliance cannot be validated or N9 segments are unavailable → the system generates FDA compliance error with specific details about the failure
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GenerateFDAComplianceError(["Start Step"])
E_GenerateFDAComplianceError(["End Step"])
N_GenerateFDAComplianceError_Node0{"FDA compliance cannot be validated
or N9 segments are unavailable"}:::decision N_GenerateFDAComplianceError_Node0_action["The system generates FDA compliance
error with specific details about
the failure"]:::main N_GenerateFDAComplianceError_Node0 -- Yes --> N_GenerateFDAComplianceError_Node0_action N_GenerateFDAComplianceError_Node0_action --> E_GenerateFDAComplianceError S_GenerateFDAComplianceError --> N_GenerateFDAComplianceError_Node0 N_GenerateFDAComplianceError_Node0 -- No --> E_GenerateFDAComplianceError
or N9 segments are unavailable"}:::decision N_GenerateFDAComplianceError_Node0_action["The system generates FDA compliance
error with specific details about
the failure"]:::main N_GenerateFDAComplianceError_Node0 -- Yes --> N_GenerateFDAComplianceError_Node0_action N_GenerateFDAComplianceError_Node0_action --> E_GenerateFDAComplianceError S_GenerateFDAComplianceError --> N_GenerateFDAComplianceError_Node0 N_GenerateFDAComplianceError_Node0 -- No --> E_GenerateFDAComplianceError
File: GCX016.cbl
GIVEN:
FDA processing has encountered validation failures or missing required information
WHEN:
FDA compliance cannot be validated or N9 segments are unavailable
THEN:
The system generates FDA compliance error with specific details about the failure
β Consolidated Acceptance Criteria
- Error needs to be routed for resolution → the system routes the FDA compliance error to the FDA processing team with all relevant cargo and error details
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RouteErrortoFDAProcessingTeam(["Start Step"])
E_RouteErrortoFDAProcessingTeam(["End Step"])
N_RouteErrortoFDAProcessingTeam_Node0{"Error needs to be routed for
resolution"}:::decision N_RouteErrortoFDAProcessingTeam_Node0_action["The system routes the FDA
compliance error to the FDA
processing team with all relevant
cargo and error details"]:::exclusion N_RouteErrortoFDAProcessingTeam_Node0 -- Yes -->|Alternative| N_RouteErrortoFDAProcessingTeam_Node0_action N_RouteErrortoFDAProcessingTeam_Node0_action --> E_RouteErrortoFDAProcessingTeam S_RouteErrortoFDAProcessingTeam --> N_RouteErrortoFDAProcessingTeam_Node0 N_RouteErrortoFDAProcessingTeam_Node0 -- No --> E_RouteErrortoFDAProcessingTeam
resolution"}:::decision N_RouteErrortoFDAProcessingTeam_Node0_action["The system routes the FDA
compliance error to the FDA
processing team with all relevant
cargo and error details"]:::exclusion N_RouteErrortoFDAProcessingTeam_Node0 -- Yes -->|Alternative| N_RouteErrortoFDAProcessingTeam_Node0_action N_RouteErrortoFDAProcessingTeam_Node0_action --> E_RouteErrortoFDAProcessingTeam S_RouteErrortoFDAProcessingTeam --> N_RouteErrortoFDAProcessingTeam_Node0 N_RouteErrortoFDAProcessingTeam_Node0 -- No --> E_RouteErrortoFDAProcessingTeam
File: GCX016.cbl
GIVEN:
FDA compliance error has been generated
WHEN:
Error needs to be routed for resolution
THEN:
- The system routes the fda compliance error to the fda processing team with all relevant cargo
- Error details
β Consolidated Acceptance Criteria
- If the disposition code for KCSM eligibility → the system determines whether KCSM processing is required based on the disposition code value
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IsDispositionCodeKCSMeligible(["Start Step"])
E_IsDispositionCodeKCSMeligible(["End Step"])
N_IsDispositionCodeKCSMeligible_Node0{"The system evaluates the
disposition code for KCSM
eligibility"}:::decision N_IsDispositionCodeKCSMeligible_Node0_action["The system determines whether KCSM
processing is required based on the
disposition code value"]:::main N_IsDispositionCodeKCSMeligible_Node0 -- Yes --> N_IsDispositionCodeKCSMeligible_Node0_action N_IsDispositionCodeKCSMeligible_Node0_action --> E_IsDispositionCodeKCSMeligible S_IsDispositionCodeKCSMeligible --> N_IsDispositionCodeKCSMeligible_Node0 N_IsDispositionCodeKCSMeligible_Node0 -- No --> E_IsDispositionCodeKCSMeligible
disposition code for KCSM
eligibility"}:::decision N_IsDispositionCodeKCSMeligible_Node0_action["The system determines whether KCSM
processing is required based on the
disposition code value"]:::main N_IsDispositionCodeKCSMeligible_Node0 -- Yes --> N_IsDispositionCodeKCSMeligible_Node0_action N_IsDispositionCodeKCSMeligible_Node0_action --> E_IsDispositionCodeKCSMeligible S_IsDispositionCodeKCSMeligible --> N_IsDispositionCodeKCSMeligible_Node0 N_IsDispositionCodeKCSMeligible_Node0 -- No --> E_IsDispositionCodeKCSMeligible
File: GCX016.cbl
GIVEN:
An EDI 350 message with a disposition code is being processed
WHEN:
The system evaluates the disposition code for KCSM eligibility
THEN:
The system determines whether KCSM processing is required based on the disposition code value
β Consolidated Acceptance Criteria
- The system queries the AECWRKTB table for KCSM configuration parameters → the system retrieves the KCSM processing configuration and routing information for the disposition code
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CheckAECWRKTBTableforKCSMConfiguration(["Start Step"])
E_CheckAECWRKTBTableforKCSMConfiguration(["End Step"])
N_CheckAECWRKTBTableforKCSMConfiguration_Node0{"The system queries the AECWRKTB
table for KCSM configuration
parameters"}:::decision N_CheckAECWRKTBTableforKCSMConfiguration_Node0_action["The system retrieves the KCSM
processing configuration and routing
information for the disposition code"]:::main N_CheckAECWRKTBTableforKCSMConfiguration_Node0 -- Yes --> N_CheckAECWRKTBTableforKCSMConfiguration_Node0_action N_CheckAECWRKTBTableforKCSMConfiguration_Node0_action --> E_CheckAECWRKTBTableforKCSMConfiguration S_CheckAECWRKTBTableforKCSMConfiguration --> N_CheckAECWRKTBTableforKCSMConfiguration_Node0 N_CheckAECWRKTBTableforKCSMConfiguration_Node0 -- No --> E_CheckAECWRKTBTableforKCSMConfiguration
table for KCSM configuration
parameters"}:::decision N_CheckAECWRKTBTableforKCSMConfiguration_Node0_action["The system retrieves the KCSM
processing configuration and routing
information for the disposition code"]:::main N_CheckAECWRKTBTableforKCSMConfiguration_Node0 -- Yes --> N_CheckAECWRKTBTableforKCSMConfiguration_Node0_action N_CheckAECWRKTBTableforKCSMConfiguration_Node0_action --> E_CheckAECWRKTBTableforKCSMConfiguration S_CheckAECWRKTBTableforKCSMConfiguration --> N_CheckAECWRKTBTableforKCSMConfiguration_Node0 N_CheckAECWRKTBTableforKCSMConfiguration_Node0 -- No --> E_CheckAECWRKTBTableforKCSMConfiguration
File: GCX016.cbl
GIVEN:
A disposition code has been identified as potentially KCSM-eligible
WHEN:
The system queries the AECWRKTB table for KCSM configuration parameters
THEN:
- The system retrieves the kcsm processing configuration
- Routing information for the disposition code
β Consolidated Acceptance Criteria
- If the configuration settings against current message context → the system decides to either proceed with KCSM processing or skip it entirely
- If all KCSM processing criteria → the system either proceeds with KCSM processing or skips it based on the validation results
- If whether KCSM processing is needed → the system should proceed to broker lookup if KCSM processing is required, otherwise continue with standard processing
- If if KCSM logging is needed → kCSM processing is required if broker is configured for KCSM transmission and message type requires logging
- If all KCSM processing requirements → the system decides whether to proceed with KCSM transmission file creation or skip processing
- If KCSM transmission requirements → system determines whether KCSM processing is required for this equipment
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_KCSMProcessingRequired(["Start Step"])
E_KCSMProcessingRequired(["End Step"])
N_KCSMProcessingRequired_Node0{"The system evaluates the
configuration settings against
current message context"}:::decision N_KCSMProcessingRequired_Node0_action["The system decides to either
proceed with KCSM processing or skip
it entirely"]:::main N_KCSMProcessingRequired_Node0 -- Yes --> N_KCSMProcessingRequired_Node0_action N_KCSMProcessingRequired_Node0_action --> E_KCSMProcessingRequired S_KCSMProcessingRequired --> N_KCSMProcessingRequired_Node0 N_KCSMProcessingRequired_Node1{"The system evaluates all KCSM
processing criteria"}:::decision N_KCSMProcessingRequired_Node1_action["The system either proceeds with
KCSM processing or skips it based on
the validation results"]:::main N_KCSMProcessingRequired_Node1 -- Yes --> N_KCSMProcessingRequired_Node1_action N_KCSMProcessingRequired_Node1_action --> E_KCSMProcessingRequired N_KCSMProcessingRequired_Node0 -- No --> N_KCSMProcessingRequired_Node1 N_KCSMProcessingRequired_Node2{"The system evaluates whether KCSM
processing is needed"}:::decision N_KCSMProcessingRequired_Node2_action["The system should proceed to broker
lookup if KCSM processing is
required, otherwise continue with
standard processing"]:::main N_KCSMProcessingRequired_Node2 -- Yes --> N_KCSMProcessingRequired_Node2_action N_KCSMProcessingRequired_Node2_action --> E_KCSMProcessingRequired N_KCSMProcessingRequired_Node1 -- No --> N_KCSMProcessingRequired_Node2 N_KCSMProcessingRequired_Node3{"The system evaluates if KCSM
logging is needed"}:::decision N_KCSMProcessingRequired_Node3_action["KCSM processing is required if
broker is configured for KCSM
transmission and message type
requires logging"]:::main N_KCSMProcessingRequired_Node3 -- Yes --> N_KCSMProcessingRequired_Node3_action N_KCSMProcessingRequired_Node3_action --> E_KCSMProcessingRequired N_KCSMProcessingRequired_Node2 -- No --> N_KCSMProcessingRequired_Node3 N_KCSMProcessingRequired_Node4{"The system evaluates all KCSM
processing requirements"}:::decision N_KCSMProcessingRequired_Node4_action["The system decides whether to
proceed with KCSM transmission file
creation or skip processing"]:::main N_KCSMProcessingRequired_Node4 -- Yes --> N_KCSMProcessingRequired_Node4_action N_KCSMProcessingRequired_Node4_action --> E_KCSMProcessingRequired N_KCSMProcessingRequired_Node3 -- No --> N_KCSMProcessingRequired_Node4 N_KCSMProcessingRequired_Node5{"The system evaluates KCSM
transmission requirements"}:::decision N_KCSMProcessingRequired_Node5_action["System determines whether KCSM
processing is required for this
equipment"]:::main N_KCSMProcessingRequired_Node5 -- Yes --> N_KCSMProcessingRequired_Node5_action N_KCSMProcessingRequired_Node5_action --> E_KCSMProcessingRequired N_KCSMProcessingRequired_Node4 -- No --> N_KCSMProcessingRequired_Node5 N_KCSMProcessingRequired_Node5 -- No --> E_KCSMProcessingRequired
configuration settings against
current message context"}:::decision N_KCSMProcessingRequired_Node0_action["The system decides to either
proceed with KCSM processing or skip
it entirely"]:::main N_KCSMProcessingRequired_Node0 -- Yes --> N_KCSMProcessingRequired_Node0_action N_KCSMProcessingRequired_Node0_action --> E_KCSMProcessingRequired S_KCSMProcessingRequired --> N_KCSMProcessingRequired_Node0 N_KCSMProcessingRequired_Node1{"The system evaluates all KCSM
processing criteria"}:::decision N_KCSMProcessingRequired_Node1_action["The system either proceeds with
KCSM processing or skips it based on
the validation results"]:::main N_KCSMProcessingRequired_Node1 -- Yes --> N_KCSMProcessingRequired_Node1_action N_KCSMProcessingRequired_Node1_action --> E_KCSMProcessingRequired N_KCSMProcessingRequired_Node0 -- No --> N_KCSMProcessingRequired_Node1 N_KCSMProcessingRequired_Node2{"The system evaluates whether KCSM
processing is needed"}:::decision N_KCSMProcessingRequired_Node2_action["The system should proceed to broker
lookup if KCSM processing is
required, otherwise continue with
standard processing"]:::main N_KCSMProcessingRequired_Node2 -- Yes --> N_KCSMProcessingRequired_Node2_action N_KCSMProcessingRequired_Node2_action --> E_KCSMProcessingRequired N_KCSMProcessingRequired_Node1 -- No --> N_KCSMProcessingRequired_Node2 N_KCSMProcessingRequired_Node3{"The system evaluates if KCSM
logging is needed"}:::decision N_KCSMProcessingRequired_Node3_action["KCSM processing is required if
broker is configured for KCSM
transmission and message type
requires logging"]:::main N_KCSMProcessingRequired_Node3 -- Yes --> N_KCSMProcessingRequired_Node3_action N_KCSMProcessingRequired_Node3_action --> E_KCSMProcessingRequired N_KCSMProcessingRequired_Node2 -- No --> N_KCSMProcessingRequired_Node3 N_KCSMProcessingRequired_Node4{"The system evaluates all KCSM
processing requirements"}:::decision N_KCSMProcessingRequired_Node4_action["The system decides whether to
proceed with KCSM transmission file
creation or skip processing"]:::main N_KCSMProcessingRequired_Node4 -- Yes --> N_KCSMProcessingRequired_Node4_action N_KCSMProcessingRequired_Node4_action --> E_KCSMProcessingRequired N_KCSMProcessingRequired_Node3 -- No --> N_KCSMProcessingRequired_Node4 N_KCSMProcessingRequired_Node5{"The system evaluates KCSM
transmission requirements"}:::decision N_KCSMProcessingRequired_Node5_action["System determines whether KCSM
processing is required for this
equipment"]:::main N_KCSMProcessingRequired_Node5 -- Yes --> N_KCSMProcessingRequired_Node5_action N_KCSMProcessingRequired_Node5_action --> E_KCSMProcessingRequired N_KCSMProcessingRequired_Node4 -- No --> N_KCSMProcessingRequired_Node5 N_KCSMProcessingRequired_Node5 -- No --> E_KCSMProcessingRequired
File: GCX016.cbl
GIVEN:
KCSM configuration has been retrieved from AECWRKTB table
WHEN:
The system evaluates the configuration settings against current message context
THEN:
The system decides to either proceed with KCSM processing or skip it entirely
File: GCX016.cbl
GIVEN:
Disposition code and port validation checks have been completed
WHEN:
The system evaluates all KCSM processing criteria
THEN:
The system either proceeds with KCSM processing or skips it based on the validation results
File: GCX016.cbl
GIVEN:
A cargo processing request is being handled
WHEN:
The system evaluates whether KCSM processing is needed
THEN:
The system should proceed to broker lookup if KCSM processing is required, otherwise continue with standard processing
File: GCX016.cbl
GIVEN:
A cargo processing transaction is being executed
WHEN:
The system evaluates if KCSM logging is needed
THEN:
- Kcsm processing is required if broker is configured for kcsm transmission
- Message type requires logging
File: GCX016.cbl
GIVEN:
Disposition code and port configuration have been validated
WHEN:
The system evaluates all KCSM processing requirements
THEN:
The system decides whether to proceed with KCSM transmission file creation or skip processing
File: GCX016.cbl
GIVEN:
Equipment ID information has been processed and cargo records updated
WHEN:
The system evaluates KCSM transmission requirements
THEN:
System determines whether KCSM processing is required for this equipment
β Consolidated Acceptance Criteria
- The system initiates KCSM message preparation → the system creates a complete copy of the original EDI 350 message preserving all segment data and structure
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CopyCurrentEDI350Message(["Start Step"])
E_CopyCurrentEDI350Message(["End Step"])
N_CopyCurrentEDI350Message_Node0{"The system initiates KCSM message
preparation"}:::decision N_CopyCurrentEDI350Message_Node0_action["The system creates a complete copy
of the original EDI 350 message
preserving all segment data and
structure"]:::main N_CopyCurrentEDI350Message_Node0 -- Yes --> N_CopyCurrentEDI350Message_Node0_action N_CopyCurrentEDI350Message_Node0_action --> E_CopyCurrentEDI350Message S_CopyCurrentEDI350Message --> N_CopyCurrentEDI350Message_Node0 N_CopyCurrentEDI350Message_Node0 -- No --> E_CopyCurrentEDI350Message
preparation"}:::decision N_CopyCurrentEDI350Message_Node0_action["The system creates a complete copy
of the original EDI 350 message
preserving all segment data and
structure"]:::main N_CopyCurrentEDI350Message_Node0 -- Yes --> N_CopyCurrentEDI350Message_Node0_action N_CopyCurrentEDI350Message_Node0_action --> E_CopyCurrentEDI350Message S_CopyCurrentEDI350Message --> N_CopyCurrentEDI350Message_Node0 N_CopyCurrentEDI350Message_Node0 -- No --> E_CopyCurrentEDI350Message
File: GCX016.cbl
GIVEN:
KCSM processing has been determined as required
WHEN:
The system initiates KCSM message preparation
THEN:
- The system creates a complete copy of the original edi 350 message preserving all segment data
- Structure
β Consolidated Acceptance Criteria
- The system creates the transmission structure → the system generates an A9RT root segment with proper transmission identifiers and routing information
- System creates transmission control structures → generate A9RT transmission root segment with appropriate control information
- The system creates the transmission file structure → the system creates an A9RT root segment with transmission control information and unique identifiers
- The system creates transmission control structures → an A9RT transmission root segment is created with appropriate control information
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CreateTransmissionRootSegmentA9RT(["Start Step"])
E_CreateTransmissionRootSegmentA9RT(["End Step"])
N_CreateTransmissionRootSegmentA9RT_Node0{"The system creates the transmission
structure"}:::decision N_CreateTransmissionRootSegmentA9RT_Node0_action["The system generates an A9RT root
segment with proper transmission
identifiers and routing information"]:::main N_CreateTransmissionRootSegmentA9RT_Node0 -- Yes --> N_CreateTransmissionRootSegmentA9RT_Node0_action N_CreateTransmissionRootSegmentA9RT_Node0_action --> E_CreateTransmissionRootSegmentA9RT S_CreateTransmissionRootSegmentA9RT --> N_CreateTransmissionRootSegmentA9RT_Node0 N_CreateTransmissionRootSegmentA9RT_Node1{"System creates transmission control
structures"}:::decision N_CreateTransmissionRootSegmentA9RT_Node1_action["Generate A9RT transmission root
segment with appropriate control
information"]:::main N_CreateTransmissionRootSegmentA9RT_Node1 -- Yes --> N_CreateTransmissionRootSegmentA9RT_Node1_action N_CreateTransmissionRootSegmentA9RT_Node1_action --> E_CreateTransmissionRootSegmentA9RT N_CreateTransmissionRootSegmentA9RT_Node0 -- No --> N_CreateTransmissionRootSegmentA9RT_Node1 N_CreateTransmissionRootSegmentA9RT_Node2{"The system creates the transmission
file structure"}:::decision N_CreateTransmissionRootSegmentA9RT_Node2_action["The system creates an A9RT root
segment with transmission control
information and unique identifiers"]:::main N_CreateTransmissionRootSegmentA9RT_Node2 -- Yes --> N_CreateTransmissionRootSegmentA9RT_Node2_action N_CreateTransmissionRootSegmentA9RT_Node2_action --> E_CreateTransmissionRootSegmentA9RT N_CreateTransmissionRootSegmentA9RT_Node1 -- No --> N_CreateTransmissionRootSegmentA9RT_Node2 N_CreateTransmissionRootSegmentA9RT_Node3{"The system creates transmission
control structures"}:::decision N_CreateTransmissionRootSegmentA9RT_Node3_action["An A9RT transmission root segment
is created with appropriate control
information"]:::main N_CreateTransmissionRootSegmentA9RT_Node3 -- Yes --> N_CreateTransmissionRootSegmentA9RT_Node3_action N_CreateTransmissionRootSegmentA9RT_Node3_action --> E_CreateTransmissionRootSegmentA9RT N_CreateTransmissionRootSegmentA9RT_Node2 -- No --> N_CreateTransmissionRootSegmentA9RT_Node3 N_CreateTransmissionRootSegmentA9RT_Node3 -- No --> E_CreateTransmissionRootSegmentA9RT
structure"}:::decision N_CreateTransmissionRootSegmentA9RT_Node0_action["The system generates an A9RT root
segment with proper transmission
identifiers and routing information"]:::main N_CreateTransmissionRootSegmentA9RT_Node0 -- Yes --> N_CreateTransmissionRootSegmentA9RT_Node0_action N_CreateTransmissionRootSegmentA9RT_Node0_action --> E_CreateTransmissionRootSegmentA9RT S_CreateTransmissionRootSegmentA9RT --> N_CreateTransmissionRootSegmentA9RT_Node0 N_CreateTransmissionRootSegmentA9RT_Node1{"System creates transmission control
structures"}:::decision N_CreateTransmissionRootSegmentA9RT_Node1_action["Generate A9RT transmission root
segment with appropriate control
information"]:::main N_CreateTransmissionRootSegmentA9RT_Node1 -- Yes --> N_CreateTransmissionRootSegmentA9RT_Node1_action N_CreateTransmissionRootSegmentA9RT_Node1_action --> E_CreateTransmissionRootSegmentA9RT N_CreateTransmissionRootSegmentA9RT_Node0 -- No --> N_CreateTransmissionRootSegmentA9RT_Node1 N_CreateTransmissionRootSegmentA9RT_Node2{"The system creates the transmission
file structure"}:::decision N_CreateTransmissionRootSegmentA9RT_Node2_action["The system creates an A9RT root
segment with transmission control
information and unique identifiers"]:::main N_CreateTransmissionRootSegmentA9RT_Node2 -- Yes --> N_CreateTransmissionRootSegmentA9RT_Node2_action N_CreateTransmissionRootSegmentA9RT_Node2_action --> E_CreateTransmissionRootSegmentA9RT N_CreateTransmissionRootSegmentA9RT_Node1 -- No --> N_CreateTransmissionRootSegmentA9RT_Node2 N_CreateTransmissionRootSegmentA9RT_Node3{"The system creates transmission
control structures"}:::decision N_CreateTransmissionRootSegmentA9RT_Node3_action["An A9RT transmission root segment
is created with appropriate control
information"]:::main N_CreateTransmissionRootSegmentA9RT_Node3 -- Yes --> N_CreateTransmissionRootSegmentA9RT_Node3_action N_CreateTransmissionRootSegmentA9RT_Node3_action --> E_CreateTransmissionRootSegmentA9RT N_CreateTransmissionRootSegmentA9RT_Node2 -- No --> N_CreateTransmissionRootSegmentA9RT_Node3 N_CreateTransmissionRootSegmentA9RT_Node3 -- No --> E_CreateTransmissionRootSegmentA9RT
File: GCX016.cbl
GIVEN:
An EDI 350 message copy has been created for KCSM processing
WHEN:
The system creates the transmission structure
THEN:
- The system generates an a9rt root segment with proper transmission identifiers
- Routing information
File: GCX016.cbl
GIVEN:
EDI 350 message has been copied to transmission file
WHEN:
System creates transmission control structures
THEN:
Generate A9RT transmission root segment with appropriate control information
File: GCX016.cbl
GIVEN:
KCSM processing is required for the disposition code
WHEN:
The system creates the transmission file structure
THEN:
- The system creates an a9rt root segment with transmission control information
- Unique identifiers
File: GCX016.cbl
GIVEN:
EDI 350 message data has been copied to transmission file
WHEN:
The system creates transmission control structures
THEN:
An A9RT transmission root segment is created with appropriate control information
β Consolidated Acceptance Criteria
- The system configures transmission parameters → the system sets routing codes, transmission priorities, and KCSM-specific processing flags based on configuration data
- The system needs to configure KCSM-specific transmission settings → the system should set KCSM transmission parameters using AECWRKTB work table including destination routing, priority settings, and integration flags
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetKCSMTransmissionParameters(["Start Step"])
E_SetKCSMTransmissionParameters(["End Step"])
N_SetKCSMTransmissionParameters_Node0{"The system configures transmission
parameters"}:::decision N_SetKCSMTransmissionParameters_Node0_action["The system sets routing codes,
transmission priorities, and
KCSM-specific processing flags based
on configuration data"]:::main N_SetKCSMTransmissionParameters_Node0 -- Yes --> N_SetKCSMTransmissionParameters_Node0_action N_SetKCSMTransmissionParameters_Node0_action --> E_SetKCSMTransmissionParameters S_SetKCSMTransmissionParameters --> N_SetKCSMTransmissionParameters_Node0 N_SetKCSMTransmissionParameters_Node1{"The system needs to configure
KCSM-specific transmission settings"}:::decision N_SetKCSMTransmissionParameters_Node1_action["The system should set KCSM
transmission parameters using
AECWRKTB work table including
destination routing, priority
settings, and integration flags"]:::main N_SetKCSMTransmissionParameters_Node1 -- Yes --> N_SetKCSMTransmissionParameters_Node1_action N_SetKCSMTransmissionParameters_Node1_action --> E_SetKCSMTransmissionParameters N_SetKCSMTransmissionParameters_Node0 -- No --> N_SetKCSMTransmissionParameters_Node1 N_SetKCSMTransmissionParameters_Node1 -- No --> E_SetKCSMTransmissionParameters
parameters"}:::decision N_SetKCSMTransmissionParameters_Node0_action["The system sets routing codes,
transmission priorities, and
KCSM-specific processing flags based
on configuration data"]:::main N_SetKCSMTransmissionParameters_Node0 -- Yes --> N_SetKCSMTransmissionParameters_Node0_action N_SetKCSMTransmissionParameters_Node0_action --> E_SetKCSMTransmissionParameters S_SetKCSMTransmissionParameters --> N_SetKCSMTransmissionParameters_Node0 N_SetKCSMTransmissionParameters_Node1{"The system needs to configure
KCSM-specific transmission settings"}:::decision N_SetKCSMTransmissionParameters_Node1_action["The system should set KCSM
transmission parameters using
AECWRKTB work table including
destination routing, priority
settings, and integration flags"]:::main N_SetKCSMTransmissionParameters_Node1 -- Yes --> N_SetKCSMTransmissionParameters_Node1_action N_SetKCSMTransmissionParameters_Node1_action --> E_SetKCSMTransmissionParameters N_SetKCSMTransmissionParameters_Node0 -- No --> N_SetKCSMTransmissionParameters_Node1 N_SetKCSMTransmissionParameters_Node1 -- No --> E_SetKCSMTransmissionParameters
File: GCX016.cbl
GIVEN:
An A9RT root segment has been created
WHEN:
The system configures transmission parameters
THEN:
The system sets routing codes, transmission priorities, and KCSM-specific processing flags based on configuration data
File: GCX016.cbl
GIVEN:
A complete EDI 350 message has been assembled
WHEN:
The system needs to configure KCSM-specific transmission settings
THEN:
The system should set KCSM transmission parameters using AECWRKTB work table including destination routing, priority settings, and integration flags
β Consolidated Acceptance Criteria
- The system creates dependent segments → the system generates A9DP segments containing the EDI 350 message data with proper sequencing and linkage to the A9RT root
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CreateDependentSegmentA9DP(["Start Step"])
E_CreateDependentSegmentA9DP(["End Step"])
N_CreateDependentSegmentA9DP_Node0{"The system creates dependent
segments"}:::decision N_CreateDependentSegmentA9DP_Node0_action["The system generates A9DP segments
containing the EDI 350 message data
with proper sequencing and linkage
to the A9RT root"]:::main N_CreateDependentSegmentA9DP_Node0 -- Yes --> N_CreateDependentSegmentA9DP_Node0_action N_CreateDependentSegmentA9DP_Node0_action --> E_CreateDependentSegmentA9DP S_CreateDependentSegmentA9DP --> N_CreateDependentSegmentA9DP_Node0 N_CreateDependentSegmentA9DP_Node0 -- No --> E_CreateDependentSegmentA9DP
segments"}:::decision N_CreateDependentSegmentA9DP_Node0_action["The system generates A9DP segments
containing the EDI 350 message data
with proper sequencing and linkage
to the A9RT root"]:::main N_CreateDependentSegmentA9DP_Node0 -- Yes --> N_CreateDependentSegmentA9DP_Node0_action N_CreateDependentSegmentA9DP_Node0_action --> E_CreateDependentSegmentA9DP S_CreateDependentSegmentA9DP --> N_CreateDependentSegmentA9DP_Node0 N_CreateDependentSegmentA9DP_Node0 -- No --> E_CreateDependentSegmentA9DP
File: GCX016.cbl
GIVEN:
KCSM transmission parameters have been configured
WHEN:
The system creates dependent segments
THEN:
- The system generates a9dp segments containing the edi 350 message data with proper sequencing
- Linkage to the a9rt root
β Consolidated Acceptance Criteria
- The system copies EDI segment data → the system transfers all segment data from the original EDI 350 message to the transmission file maintaining data integrity and segment relationships
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CopyEDISegmentDatatoTransmissionFile(["Start Step"])
E_CopyEDISegmentDatatoTransmissionFile(["End Step"])
N_CopyEDISegmentDatatoTransmissionFile_Node0{"The system copies EDI segment data"}:::decision
N_CopyEDISegmentDatatoTransmissionFile_Node0_action["The system transfers all segment
data from the original EDI 350
message to the transmission file
maintaining data integrity and
segment relationships"]:::main N_CopyEDISegmentDatatoTransmissionFile_Node0 -- Yes --> N_CopyEDISegmentDatatoTransmissionFile_Node0_action N_CopyEDISegmentDatatoTransmissionFile_Node0_action --> E_CopyEDISegmentDatatoTransmissionFile S_CopyEDISegmentDatatoTransmissionFile --> N_CopyEDISegmentDatatoTransmissionFile_Node0 N_CopyEDISegmentDatatoTransmissionFile_Node0 -- No --> E_CopyEDISegmentDatatoTransmissionFile
data from the original EDI 350
message to the transmission file
maintaining data integrity and
segment relationships"]:::main N_CopyEDISegmentDatatoTransmissionFile_Node0 -- Yes --> N_CopyEDISegmentDatatoTransmissionFile_Node0_action N_CopyEDISegmentDatatoTransmissionFile_Node0_action --> E_CopyEDISegmentDatatoTransmissionFile S_CopyEDISegmentDatatoTransmissionFile --> N_CopyEDISegmentDatatoTransmissionFile_Node0 N_CopyEDISegmentDatatoTransmissionFile_Node0 -- No --> E_CopyEDISegmentDatatoTransmissionFile
File: GCX016.cbl
GIVEN:
A9DP dependent segments have been created
WHEN:
The system copies EDI segment data
THEN:
- The system transfers all segment data from the original edi 350 message to the transmission file maintaining data integrity
- Segment relationships
β Consolidated Acceptance Criteria
- The system finalizes transmission preparation → the system sets transmission status to ready for processing and assigns appropriate routing codes for KCSM delivery
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetTransmissionStatusandRouting(["Start Step"])
E_SetTransmissionStatusandRouting(["End Step"])
N_SetTransmissionStatusandRouting_Node0{"The system finalizes transmission
preparation"}:::decision N_SetTransmissionStatusandRouting_Node0_action["The system sets transmission status
to ready for processing and assigns
appropriate routing codes for KCSM
delivery"]:::main N_SetTransmissionStatusandRouting_Node0 -- Yes --> N_SetTransmissionStatusandRouting_Node0_action N_SetTransmissionStatusandRouting_Node0_action --> E_SetTransmissionStatusandRouting S_SetTransmissionStatusandRouting --> N_SetTransmissionStatusandRouting_Node0 N_SetTransmissionStatusandRouting_Node0 -- No --> E_SetTransmissionStatusandRouting
preparation"}:::decision N_SetTransmissionStatusandRouting_Node0_action["The system sets transmission status
to ready for processing and assigns
appropriate routing codes for KCSM
delivery"]:::main N_SetTransmissionStatusandRouting_Node0 -- Yes --> N_SetTransmissionStatusandRouting_Node0_action N_SetTransmissionStatusandRouting_Node0_action --> E_SetTransmissionStatusandRouting S_SetTransmissionStatusandRouting --> N_SetTransmissionStatusandRouting_Node0 N_SetTransmissionStatusandRouting_Node0 -- No --> E_SetTransmissionStatusandRouting
File: GCX016.cbl
GIVEN:
EDI segment data has been copied to the transmission file
WHEN:
The system finalizes transmission preparation
THEN:
- The system sets transmission status to ready for processing
- Assigns appropriate routing codes for kcsm delivery
β Consolidated Acceptance Criteria
- The system initiates KCSM transaction processing → the system spawns GCT1091E transaction with proper parameters for KCSM message handling and transmission
- The system initiates KCSM processing transaction → gCT1091E transaction is spawned for KCSM message transmission
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SpawnGCT1091ETransactionforKCSM(["Start Step"])
E_SpawnGCT1091ETransactionforKCSM(["End Step"])
N_SpawnGCT1091ETransactionforKCSM_Node0{"The system initiates KCSM
transaction processing"}:::decision N_SpawnGCT1091ETransactionforKCSM_Node0_action["The system spawns GCT1091E
transaction with proper parameters
for KCSM message handling and
transmission"]:::main N_SpawnGCT1091ETransactionforKCSM_Node0 -- Yes --> N_SpawnGCT1091ETransactionforKCSM_Node0_action N_SpawnGCT1091ETransactionforKCSM_Node0_action --> E_SpawnGCT1091ETransactionforKCSM S_SpawnGCT1091ETransactionforKCSM --> N_SpawnGCT1091ETransactionforKCSM_Node0 N_SpawnGCT1091ETransactionforKCSM_Node1{"The system initiates KCSM
processing transaction"}:::decision N_SpawnGCT1091ETransactionforKCSM_Node1_action["GCT1091E transaction is spawned for
KCSM message transmission"]:::main N_SpawnGCT1091ETransactionforKCSM_Node1 -- Yes --> N_SpawnGCT1091ETransactionforKCSM_Node1_action N_SpawnGCT1091ETransactionforKCSM_Node1_action --> E_SpawnGCT1091ETransactionforKCSM N_SpawnGCT1091ETransactionforKCSM_Node0 -- No --> N_SpawnGCT1091ETransactionforKCSM_Node1 N_SpawnGCT1091ETransactionforKCSM_Node1 -- No --> E_SpawnGCT1091ETransactionforKCSM
transaction processing"}:::decision N_SpawnGCT1091ETransactionforKCSM_Node0_action["The system spawns GCT1091E
transaction with proper parameters
for KCSM message handling and
transmission"]:::main N_SpawnGCT1091ETransactionforKCSM_Node0 -- Yes --> N_SpawnGCT1091ETransactionforKCSM_Node0_action N_SpawnGCT1091ETransactionforKCSM_Node0_action --> E_SpawnGCT1091ETransactionforKCSM S_SpawnGCT1091ETransactionforKCSM --> N_SpawnGCT1091ETransactionforKCSM_Node0 N_SpawnGCT1091ETransactionforKCSM_Node1{"The system initiates KCSM
processing transaction"}:::decision N_SpawnGCT1091ETransactionforKCSM_Node1_action["GCT1091E transaction is spawned for
KCSM message transmission"]:::main N_SpawnGCT1091ETransactionforKCSM_Node1 -- Yes --> N_SpawnGCT1091ETransactionforKCSM_Node1_action N_SpawnGCT1091ETransactionforKCSM_Node1_action --> E_SpawnGCT1091ETransactionforKCSM N_SpawnGCT1091ETransactionforKCSM_Node0 -- No --> N_SpawnGCT1091ETransactionforKCSM_Node1 N_SpawnGCT1091ETransactionforKCSM_Node1 -- No --> E_SpawnGCT1091ETransactionforKCSM
File: GCX016.cbl
GIVEN:
Transmission status and routing have been configured
WHEN:
The system initiates KCSM transaction processing
THEN:
- The system spawns gct1091e transaction with proper parameters for kcsm message handling
- Transmission
File: GCX016.cbl
GIVEN:
Transmission parameters have been configured
WHEN:
The system initiates KCSM processing transaction
THEN:
GCT1091E transaction is spawned for KCSM message transmission
β Consolidated Acceptance Criteria
- The system queues the message for transmission → the system places the KCSM message in the transmission queue with proper priority and delivery scheduling
- The system queues the message for transmission → the message is queued for KCSM transmission processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_QueueMessageforKCSMTransmission(["Start Step"])
E_QueueMessageforKCSMTransmission(["End Step"])
N_QueueMessageforKCSMTransmission_Node0{"The system queues the message for
transmission"}:::decision N_QueueMessageforKCSMTransmission_Node0_action["The system places the KCSM message
in the transmission queue with
proper priority and delivery
scheduling"]:::main N_QueueMessageforKCSMTransmission_Node0 -- Yes --> N_QueueMessageforKCSMTransmission_Node0_action N_QueueMessageforKCSMTransmission_Node0_action --> E_QueueMessageforKCSMTransmission S_QueueMessageforKCSMTransmission --> N_QueueMessageforKCSMTransmission_Node0 N_QueueMessageforKCSMTransmission_Node1{"The system queues the message for
transmission"}:::decision N_QueueMessageforKCSMTransmission_Node1_action["The message is queued for KCSM
transmission processing"]:::main N_QueueMessageforKCSMTransmission_Node1 -- Yes --> N_QueueMessageforKCSMTransmission_Node1_action N_QueueMessageforKCSMTransmission_Node1_action --> E_QueueMessageforKCSMTransmission N_QueueMessageforKCSMTransmission_Node0 -- No --> N_QueueMessageforKCSMTransmission_Node1 N_QueueMessageforKCSMTransmission_Node1 -- No --> E_QueueMessageforKCSMTransmission
transmission"}:::decision N_QueueMessageforKCSMTransmission_Node0_action["The system places the KCSM message
in the transmission queue with
proper priority and delivery
scheduling"]:::main N_QueueMessageforKCSMTransmission_Node0 -- Yes --> N_QueueMessageforKCSMTransmission_Node0_action N_QueueMessageforKCSMTransmission_Node0_action --> E_QueueMessageforKCSMTransmission S_QueueMessageforKCSMTransmission --> N_QueueMessageforKCSMTransmission_Node0 N_QueueMessageforKCSMTransmission_Node1{"The system queues the message for
transmission"}:::decision N_QueueMessageforKCSMTransmission_Node1_action["The message is queued for KCSM
transmission processing"]:::main N_QueueMessageforKCSMTransmission_Node1 -- Yes --> N_QueueMessageforKCSMTransmission_Node1_action N_QueueMessageforKCSMTransmission_Node1_action --> E_QueueMessageforKCSMTransmission N_QueueMessageforKCSMTransmission_Node0 -- No --> N_QueueMessageforKCSMTransmission_Node1 N_QueueMessageforKCSMTransmission_Node1 -- No --> E_QueueMessageforKCSMTransmission
File: GCX016.cbl
GIVEN:
GCT1091E transaction has been spawned for KCSM processing
WHEN:
The system queues the message for transmission
THEN:
- The system places the kcsm message in the transmission queue with proper priority
- Delivery scheduling
File: GCX016.cbl
GIVEN:
GCT1091E transaction has been spawned
WHEN:
The system queues the message for transmission
THEN:
The message is queued for KCSM transmission processing
β Consolidated Acceptance Criteria
- The system logs transmission activity → the system records transmission details including message identifiers, routing information, and processing timestamps for audit trail
- The system completes KCSM message preparation → the system logs transmission details including message ID, timestamp, disposition code, and transmission status
- The system logs the transmission activity → the system records KCSM transmission details including message identification, timestamp, and disposition code for audit tracking
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogKCSMTransmissionDetails(["Start Step"])
E_LogKCSMTransmissionDetails(["End Step"])
N_LogKCSMTransmissionDetails_Node0{"The system logs transmission
activity"}:::decision N_LogKCSMTransmissionDetails_Node0_action["The system records transmission
details including message
identifiers, routing information,
and processing timestamps for audit
trail"]:::main N_LogKCSMTransmissionDetails_Node0 -- Yes --> N_LogKCSMTransmissionDetails_Node0_action N_LogKCSMTransmissionDetails_Node0_action --> E_LogKCSMTransmissionDetails S_LogKCSMTransmissionDetails --> N_LogKCSMTransmissionDetails_Node0 N_LogKCSMTransmissionDetails_Node1{"The system completes KCSM message
preparation"}:::decision N_LogKCSMTransmissionDetails_Node1_action["The system logs transmission
details including message ID,
timestamp, disposition code, and
transmission status"]:::main N_LogKCSMTransmissionDetails_Node1 -- Yes --> N_LogKCSMTransmissionDetails_Node1_action N_LogKCSMTransmissionDetails_Node1_action --> E_LogKCSMTransmissionDetails N_LogKCSMTransmissionDetails_Node0 -- No --> N_LogKCSMTransmissionDetails_Node1 N_LogKCSMTransmissionDetails_Node2{"The system logs the transmission
activity"}:::decision N_LogKCSMTransmissionDetails_Node2_action["The system records KCSM
transmission details including
message identification, timestamp,
and disposition code for audit
tracking"]:::main N_LogKCSMTransmissionDetails_Node2 -- Yes --> N_LogKCSMTransmissionDetails_Node2_action N_LogKCSMTransmissionDetails_Node2_action --> E_LogKCSMTransmissionDetails N_LogKCSMTransmissionDetails_Node1 -- No --> N_LogKCSMTransmissionDetails_Node2 N_LogKCSMTransmissionDetails_Node2 -- No --> E_LogKCSMTransmissionDetails
activity"}:::decision N_LogKCSMTransmissionDetails_Node0_action["The system records transmission
details including message
identifiers, routing information,
and processing timestamps for audit
trail"]:::main N_LogKCSMTransmissionDetails_Node0 -- Yes --> N_LogKCSMTransmissionDetails_Node0_action N_LogKCSMTransmissionDetails_Node0_action --> E_LogKCSMTransmissionDetails S_LogKCSMTransmissionDetails --> N_LogKCSMTransmissionDetails_Node0 N_LogKCSMTransmissionDetails_Node1{"The system completes KCSM message
preparation"}:::decision N_LogKCSMTransmissionDetails_Node1_action["The system logs transmission
details including message ID,
timestamp, disposition code, and
transmission status"]:::main N_LogKCSMTransmissionDetails_Node1 -- Yes --> N_LogKCSMTransmissionDetails_Node1_action N_LogKCSMTransmissionDetails_Node1_action --> E_LogKCSMTransmissionDetails N_LogKCSMTransmissionDetails_Node0 -- No --> N_LogKCSMTransmissionDetails_Node1 N_LogKCSMTransmissionDetails_Node2{"The system logs the transmission
activity"}:::decision N_LogKCSMTransmissionDetails_Node2_action["The system records KCSM
transmission details including
message identification, timestamp,
and disposition code for audit
tracking"]:::main N_LogKCSMTransmissionDetails_Node2 -- Yes --> N_LogKCSMTransmissionDetails_Node2_action N_LogKCSMTransmissionDetails_Node2_action --> E_LogKCSMTransmissionDetails N_LogKCSMTransmissionDetails_Node1 -- No --> N_LogKCSMTransmissionDetails_Node2 N_LogKCSMTransmissionDetails_Node2 -- No --> E_LogKCSMTransmissionDetails
File: GCX016.cbl
GIVEN:
A KCSM message has been queued for transmission
WHEN:
The system logs transmission activity
THEN:
The system records transmission details including message identifiers, routing information, and processing timestamps for audit trail
File: GCX016.cbl
GIVEN:
Transmission parameters have been updated
WHEN:
The system completes KCSM message preparation
THEN:
The system logs transmission details including message ID, timestamp, disposition code, and transmission status
File: GCX016.cbl
GIVEN:
The message has been queued for KCSM transmission
WHEN:
The system logs the transmission activity
THEN:
The system records KCSM transmission details including message identification, timestamp, and disposition code for audit tracking
β Consolidated Acceptance Criteria
- The system determines KCSM processing should be skipped → the system bypasses all KCSM processing steps and continues with normal EDI 350 message processing
- The validation criteria indicate KCSM processing is not required → the system skips all KCSM processing steps and continues with normal message processing
- The system checks KCSM configuration requirements → kCSM processing is skipped and the system continues with normal message processing without creating transmission copies
- The system determines KCSM processing is not required → the system skips all KCSM message copying activities and continues with normal processing
- The disposition code does not require KCSM processing OR KCSM is not configured for the port → the system bypasses KCSM transmission file creation and continues with normal customs release processing
- KCSM processing is determined as not required → system skips KCSM processing and proceeds to completion
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SkipKCSMProcessing(["Start Step"])
E_SkipKCSMProcessing(["End Step"])
N_SkipKCSMProcessing_Node0{"The system determines KCSM
processing should be skipped"}:::decision N_SkipKCSMProcessing_Node0_action["The system bypasses all KCSM
processing steps and continues with
normal EDI 350 message processing"]:::main N_SkipKCSMProcessing_Node0 -- Yes --> N_SkipKCSMProcessing_Node0_action N_SkipKCSMProcessing_Node0_action --> E_SkipKCSMProcessing S_SkipKCSMProcessing --> N_SkipKCSMProcessing_Node0 N_SkipKCSMProcessing_Node1{"The validation criteria indicate
KCSM processing is not required"}:::decision N_SkipKCSMProcessing_Node1_action["The system skips all KCSM
processing steps and continues with
normal message processing"]:::main N_SkipKCSMProcessing_Node1 -- Yes --> N_SkipKCSMProcessing_Node1_action N_SkipKCSMProcessing_Node1_action --> E_SkipKCSMProcessing N_SkipKCSMProcessing_Node0 -- No --> N_SkipKCSMProcessing_Node1 N_SkipKCSMProcessing_Node2{"The system checks KCSM
configuration requirements"}:::decision N_SkipKCSMProcessing_Node2_action["KCSM processing is skipped and the
system continues with normal message
processing without creating
transmission copies"]:::main N_SkipKCSMProcessing_Node2 -- Yes --> N_SkipKCSMProcessing_Node2_action N_SkipKCSMProcessing_Node2_action --> E_SkipKCSMProcessing N_SkipKCSMProcessing_Node1 -- No --> N_SkipKCSMProcessing_Node2 N_SkipKCSMProcessing_Node3{"The system determines KCSM
processing is not required"}:::decision N_SkipKCSMProcessing_Node3_action["The system skips all KCSM message
copying activities and continues
with normal processing"]:::main N_SkipKCSMProcessing_Node3 -- Yes --> N_SkipKCSMProcessing_Node3_action N_SkipKCSMProcessing_Node3_action --> E_SkipKCSMProcessing N_SkipKCSMProcessing_Node2 -- No --> N_SkipKCSMProcessing_Node3 N_SkipKCSMProcessing_Node4{"The disposition code does not
require KCSM processing OR KCSM is
not configured for the port"}:::decision N_SkipKCSMProcessing_Node4_action["The system bypasses KCSM
transmission file creation and
continues with normal customs
release processing"]:::main N_SkipKCSMProcessing_Node4 -- Yes --> N_SkipKCSMProcessing_Node4_action N_SkipKCSMProcessing_Node4_action --> E_SkipKCSMProcessing N_SkipKCSMProcessing_Node3 -- No --> N_SkipKCSMProcessing_Node4 N_SkipKCSMProcessing_Node5{"KCSM processing is determined as
not required"}:::decision N_SkipKCSMProcessing_Node5_action["System skips KCSM processing and
proceeds to completion"]:::main N_SkipKCSMProcessing_Node5 -- Yes --> N_SkipKCSMProcessing_Node5_action N_SkipKCSMProcessing_Node5_action --> E_SkipKCSMProcessing N_SkipKCSMProcessing_Node4 -- No --> N_SkipKCSMProcessing_Node5 N_SkipKCSMProcessing_Node5 -- No --> E_SkipKCSMProcessing
processing should be skipped"}:::decision N_SkipKCSMProcessing_Node0_action["The system bypasses all KCSM
processing steps and continues with
normal EDI 350 message processing"]:::main N_SkipKCSMProcessing_Node0 -- Yes --> N_SkipKCSMProcessing_Node0_action N_SkipKCSMProcessing_Node0_action --> E_SkipKCSMProcessing S_SkipKCSMProcessing --> N_SkipKCSMProcessing_Node0 N_SkipKCSMProcessing_Node1{"The validation criteria indicate
KCSM processing is not required"}:::decision N_SkipKCSMProcessing_Node1_action["The system skips all KCSM
processing steps and continues with
normal message processing"]:::main N_SkipKCSMProcessing_Node1 -- Yes --> N_SkipKCSMProcessing_Node1_action N_SkipKCSMProcessing_Node1_action --> E_SkipKCSMProcessing N_SkipKCSMProcessing_Node0 -- No --> N_SkipKCSMProcessing_Node1 N_SkipKCSMProcessing_Node2{"The system checks KCSM
configuration requirements"}:::decision N_SkipKCSMProcessing_Node2_action["KCSM processing is skipped and the
system continues with normal message
processing without creating
transmission copies"]:::main N_SkipKCSMProcessing_Node2 -- Yes --> N_SkipKCSMProcessing_Node2_action N_SkipKCSMProcessing_Node2_action --> E_SkipKCSMProcessing N_SkipKCSMProcessing_Node1 -- No --> N_SkipKCSMProcessing_Node2 N_SkipKCSMProcessing_Node3{"The system determines KCSM
processing is not required"}:::decision N_SkipKCSMProcessing_Node3_action["The system skips all KCSM message
copying activities and continues
with normal processing"]:::main N_SkipKCSMProcessing_Node3 -- Yes --> N_SkipKCSMProcessing_Node3_action N_SkipKCSMProcessing_Node3_action --> E_SkipKCSMProcessing N_SkipKCSMProcessing_Node2 -- No --> N_SkipKCSMProcessing_Node3 N_SkipKCSMProcessing_Node4{"The disposition code does not
require KCSM processing OR KCSM is
not configured for the port"}:::decision N_SkipKCSMProcessing_Node4_action["The system bypasses KCSM
transmission file creation and
continues with normal customs
release processing"]:::main N_SkipKCSMProcessing_Node4 -- Yes --> N_SkipKCSMProcessing_Node4_action N_SkipKCSMProcessing_Node4_action --> E_SkipKCSMProcessing N_SkipKCSMProcessing_Node3 -- No --> N_SkipKCSMProcessing_Node4 N_SkipKCSMProcessing_Node5{"KCSM processing is determined as
not required"}:::decision N_SkipKCSMProcessing_Node5_action["System skips KCSM processing and
proceeds to completion"]:::main N_SkipKCSMProcessing_Node5 -- Yes --> N_SkipKCSMProcessing_Node5_action N_SkipKCSMProcessing_Node5_action --> E_SkipKCSMProcessing N_SkipKCSMProcessing_Node4 -- No --> N_SkipKCSMProcessing_Node5 N_SkipKCSMProcessing_Node5 -- No --> E_SkipKCSMProcessing
File: GCX016.cbl
GIVEN:
A disposition code has been evaluated for KCSM eligibility OR KCSM configuration indicates no processing required
WHEN:
The system determines KCSM processing should be skipped
THEN:
- The system bypasses all kcsm processing steps
- Continues with normal edi 350 message processing
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
KCSM processing validation has been completed
WHEN:
The validation criteria indicate KCSM processing is not required
THEN:
- The system skips all kcsm processing steps
- Continues with normal message processing
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
An EDI 350 message with a disposition code not configured for KCSM processing
WHEN:
The system checks KCSM configuration requirements
THEN:
- Kcsm processing is skipped
- The system continues with normal message processing without creating transmission copies
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
The disposition code is not configured for KCSM processing in the configuration table
WHEN:
The system determines KCSM processing is not required
THEN:
- The system skips all kcsm message copying activities
- Continues with normal processing
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
A disposition code is being evaluated for KCSM processing
WHEN:
The disposition code does not require KCSM processing OR KCSM is not configured for the port
THEN:
- The system bypasses kcsm transmission file creation
- Continues with normal customs release processing
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
KCSM processing requirement check has been completed
WHEN:
KCSM processing is determined as not required
THEN:
- System skips kcsm processing
- Proceeds to completion
β Consolidated Acceptance Criteria
- The system checks if the port code equals 'LRD' (Laredo) → the system proceeds to KCSM disposition code validation if port is Laredo, otherwise skips KCSM processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IsPortCodeLRDLaredo(["Start Step"])
E_IsPortCodeLRDLaredo(["End Step"])
N_IsPortCodeLRDLaredo_Node0{"The system checks if the port code
equals LRD Laredo"}:::decision N_IsPortCodeLRDLaredo_Node0_action["The system proceeds to KCSM
disposition code validation if port
is Laredo, otherwise skips KCSM
processing"]:::main N_IsPortCodeLRDLaredo_Node0 -- Yes --> N_IsPortCodeLRDLaredo_Node0_action N_IsPortCodeLRDLaredo_Node0_action --> E_IsPortCodeLRDLaredo S_IsPortCodeLRDLaredo --> N_IsPortCodeLRDLaredo_Node0 N_IsPortCodeLRDLaredo_Node0 -- No --> E_IsPortCodeLRDLaredo
equals LRD Laredo"}:::decision N_IsPortCodeLRDLaredo_Node0_action["The system proceeds to KCSM
disposition code validation if port
is Laredo, otherwise skips KCSM
processing"]:::main N_IsPortCodeLRDLaredo_Node0 -- Yes --> N_IsPortCodeLRDLaredo_Node0_action N_IsPortCodeLRDLaredo_Node0_action --> E_IsPortCodeLRDLaredo S_IsPortCodeLRDLaredo --> N_IsPortCodeLRDLaredo_Node0 N_IsPortCodeLRDLaredo_Node0 -- No --> E_IsPortCodeLRDLaredo
File: GCX016.cbl
GIVEN:
A cargo shipment is being processed with a specific port code
WHEN:
The system checks if the port code equals 'LRD' (Laredo)
THEN:
The system proceeds to KCSM disposition code validation if port is Laredo, otherwise skips KCSM processing
β Consolidated Acceptance Criteria
- The system searches for the disposition code in the KCSM configuration data → the system retrieves the KCSM configuration status for the disposition code
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SearchforDispositionCodeinKCSMConfiguration(["Start Step"])
E_SearchforDispositionCodeinKCSMConfiguration(["End Step"])
N_SearchforDispositionCodeinKCSMConfiguration_Node0{"The system searches for the
disposition code in the KCSM
configuration data"}:::decision N_SearchforDispositionCodeinKCSMConfiguration_Node0_action["The system retrieves the KCSM
configuration status for the
disposition code"]:::main N_SearchforDispositionCodeinKCSMConfiguration_Node0 -- Yes --> N_SearchforDispositionCodeinKCSMConfiguration_Node0_action N_SearchforDispositionCodeinKCSMConfiguration_Node0_action --> E_SearchforDispositionCodeinKCSMConfiguration S_SearchforDispositionCodeinKCSMConfiguration --> N_SearchforDispositionCodeinKCSMConfiguration_Node0 N_SearchforDispositionCodeinKCSMConfiguration_Node0 -- No --> E_SearchforDispositionCodeinKCSMConfiguration
disposition code in the KCSM
configuration data"}:::decision N_SearchforDispositionCodeinKCSMConfiguration_Node0_action["The system retrieves the KCSM
configuration status for the
disposition code"]:::main N_SearchforDispositionCodeinKCSMConfiguration_Node0 -- Yes --> N_SearchforDispositionCodeinKCSMConfiguration_Node0_action N_SearchforDispositionCodeinKCSMConfiguration_Node0_action --> E_SearchforDispositionCodeinKCSMConfiguration S_SearchforDispositionCodeinKCSMConfiguration --> N_SearchforDispositionCodeinKCSMConfiguration_Node0 N_SearchforDispositionCodeinKCSMConfiguration_Node0 -- No --> E_SearchforDispositionCodeinKCSMConfiguration
File: GCX016.cbl
GIVEN:
A disposition code from the X4 segment and access to the AECWRKTB configuration table
WHEN:
The system searches for the disposition code in the KCSM configuration data
THEN:
The system retrieves the KCSM configuration status for the disposition code
β Consolidated Acceptance Criteria
- The disposition code is found in the KCSM configuration table → the system sets the KCSM processing flag to TRUE, otherwise sets it to FALSE
- The disposition code lookup result is evaluated → if disposition code is found in KCSM table, proceed to create transmission file, otherwise skip KCSM processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_DispositionCodeFoundinKCSMTable(["Start Step"])
E_DispositionCodeFoundinKCSMTable(["End Step"])
N_DispositionCodeFoundinKCSMTable_Node0{"The disposition code is found in
the KCSM configuration table"}:::decision N_DispositionCodeFoundinKCSMTable_Node0_action["The system sets the KCSM processing
flag to TRUE, otherwise sets it to
FALSE"]:::main N_DispositionCodeFoundinKCSMTable_Node0 -- Yes --> N_DispositionCodeFoundinKCSMTable_Node0_action N_DispositionCodeFoundinKCSMTable_Node0_action --> E_DispositionCodeFoundinKCSMTable S_DispositionCodeFoundinKCSMTable --> N_DispositionCodeFoundinKCSMTable_Node0 N_DispositionCodeFoundinKCSMTable_Node1{"The disposition code lookup result
is evaluated"}:::decision N_DispositionCodeFoundinKCSMTable_Node1_action["If disposition code is found in
KCSM table, proceed to create
transmission file, otherwise skip
KCSM processing"]:::main N_DispositionCodeFoundinKCSMTable_Node1 -- Yes --> N_DispositionCodeFoundinKCSMTable_Node1_action N_DispositionCodeFoundinKCSMTable_Node1_action --> E_DispositionCodeFoundinKCSMTable N_DispositionCodeFoundinKCSMTable_Node0 -- No --> N_DispositionCodeFoundinKCSMTable_Node1 N_DispositionCodeFoundinKCSMTable_Node1 -- No --> E_DispositionCodeFoundinKCSMTable
the KCSM configuration table"}:::decision N_DispositionCodeFoundinKCSMTable_Node0_action["The system sets the KCSM processing
flag to TRUE, otherwise sets it to
FALSE"]:::main N_DispositionCodeFoundinKCSMTable_Node0 -- Yes --> N_DispositionCodeFoundinKCSMTable_Node0_action N_DispositionCodeFoundinKCSMTable_Node0_action --> E_DispositionCodeFoundinKCSMTable S_DispositionCodeFoundinKCSMTable --> N_DispositionCodeFoundinKCSMTable_Node0 N_DispositionCodeFoundinKCSMTable_Node1{"The disposition code lookup result
is evaluated"}:::decision N_DispositionCodeFoundinKCSMTable_Node1_action["If disposition code is found in
KCSM table, proceed to create
transmission file, otherwise skip
KCSM processing"]:::main N_DispositionCodeFoundinKCSMTable_Node1 -- Yes --> N_DispositionCodeFoundinKCSMTable_Node1_action N_DispositionCodeFoundinKCSMTable_Node1_action --> E_DispositionCodeFoundinKCSMTable N_DispositionCodeFoundinKCSMTable_Node0 -- No --> N_DispositionCodeFoundinKCSMTable_Node1 N_DispositionCodeFoundinKCSMTable_Node1 -- No --> E_DispositionCodeFoundinKCSMTable
File: GCX016.cbl
GIVEN:
A disposition code lookup result from the AECWRKTB table
WHEN:
The disposition code is found in the KCSM configuration table
THEN:
The system sets the KCSM processing flag to TRUE, otherwise sets it to FALSE
File: GCX016.cbl
GIVEN:
AECWRKTB table lookup has been performed for the disposition code
WHEN:
The disposition code lookup result is evaluated
THEN:
If disposition code is found in KCSM table, proceed to create transmission file, otherwise skip KCSM processing
β Consolidated Acceptance Criteria
- The system checks the disposition code against KCSM processing requirements → the system determines whether KCSM transmission is required for this message
- The system checks if the disposition code requires KCSM transmission → the system validates the disposition code against the KCSM configuration table to determine processing requirements
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CheckDispositionCodeforKCSMProcessing(["Start Step"])
E_CheckDispositionCodeforKCSMProcessing(["End Step"])
N_CheckDispositionCodeforKCSMProcessing_Node0{"The system checks the disposition
code against KCSM processing
requirements"}:::decision N_CheckDispositionCodeforKCSMProcessing_Node0_action["The system determines whether KCSM
transmission is required for this
message"]:::main N_CheckDispositionCodeforKCSMProcessing_Node0 -- Yes --> N_CheckDispositionCodeforKCSMProcessing_Node0_action N_CheckDispositionCodeforKCSMProcessing_Node0_action --> E_CheckDispositionCodeforKCSMProcessing S_CheckDispositionCodeforKCSMProcessing --> N_CheckDispositionCodeforKCSMProcessing_Node0 N_CheckDispositionCodeforKCSMProcessing_Node1{"The system checks if the
disposition code requires KCSM
transmission"}:::decision N_CheckDispositionCodeforKCSMProcessing_Node1_action["The system validates the
disposition code against the KCSM
configuration table to determine
processing requirements"]:::main N_CheckDispositionCodeforKCSMProcessing_Node1 -- Yes --> N_CheckDispositionCodeforKCSMProcessing_Node1_action N_CheckDispositionCodeforKCSMProcessing_Node1_action --> E_CheckDispositionCodeforKCSMProcessing N_CheckDispositionCodeforKCSMProcessing_Node0 -- No --> N_CheckDispositionCodeforKCSMProcessing_Node1 N_CheckDispositionCodeforKCSMProcessing_Node1 -- No --> E_CheckDispositionCodeforKCSMProcessing
code against KCSM processing
requirements"}:::decision N_CheckDispositionCodeforKCSMProcessing_Node0_action["The system determines whether KCSM
transmission is required for this
message"]:::main N_CheckDispositionCodeforKCSMProcessing_Node0 -- Yes --> N_CheckDispositionCodeforKCSMProcessing_Node0_action N_CheckDispositionCodeforKCSMProcessing_Node0_action --> E_CheckDispositionCodeforKCSMProcessing S_CheckDispositionCodeforKCSMProcessing --> N_CheckDispositionCodeforKCSMProcessing_Node0 N_CheckDispositionCodeforKCSMProcessing_Node1{"The system checks if the
disposition code requires KCSM
transmission"}:::decision N_CheckDispositionCodeforKCSMProcessing_Node1_action["The system validates the
disposition code against the KCSM
configuration table to determine
processing requirements"]:::main N_CheckDispositionCodeforKCSMProcessing_Node1 -- Yes --> N_CheckDispositionCodeforKCSMProcessing_Node1_action N_CheckDispositionCodeforKCSMProcessing_Node1_action --> E_CheckDispositionCodeforKCSMProcessing N_CheckDispositionCodeforKCSMProcessing_Node0 -- No --> N_CheckDispositionCodeforKCSMProcessing_Node1 N_CheckDispositionCodeforKCSMProcessing_Node1 -- No --> E_CheckDispositionCodeforKCSMProcessing
File: GCX016.cbl
GIVEN:
An EDI 350 message with a disposition code is being processed
WHEN:
The system checks the disposition code against KCSM processing requirements
THEN:
The system determines whether KCSM transmission is required for this message
File: GCX016.cbl
GIVEN:
An EDI 350 message with a disposition code is received for processing
WHEN:
The system checks if the disposition code requires KCSM transmission
THEN:
The system validates the disposition code against the KCSM configuration table to determine processing requirements
β Consolidated Acceptance Criteria
- The system validates the port location → the system confirms the port is Laredo before allowing KCSM transmission
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ValidatePortisLaredo(["Start Step"])
E_ValidatePortisLaredo(["End Step"])
N_ValidatePortisLaredo_Node0{"The system validates the port
location"}:::decision N_ValidatePortisLaredo_Node0_action["The system confirms the port is
Laredo before allowing KCSM
transmission"]:::main N_ValidatePortisLaredo_Node0 -- Yes --> N_ValidatePortisLaredo_Node0_action N_ValidatePortisLaredo_Node0_action --> E_ValidatePortisLaredo S_ValidatePortisLaredo --> N_ValidatePortisLaredo_Node0 N_ValidatePortisLaredo_Node0 -- No --> E_ValidatePortisLaredo
location"}:::decision N_ValidatePortisLaredo_Node0_action["The system confirms the port is
Laredo before allowing KCSM
transmission"]:::main N_ValidatePortisLaredo_Node0 -- Yes --> N_ValidatePortisLaredo_Node0_action N_ValidatePortisLaredo_Node0_action --> E_ValidatePortisLaredo S_ValidatePortisLaredo --> N_ValidatePortisLaredo_Node0 N_ValidatePortisLaredo_Node0 -- No --> E_ValidatePortisLaredo
File: GCX016.cbl
GIVEN:
A message requires KCSM processing based on disposition code
WHEN:
The system validates the port location
THEN:
The system confirms the port is Laredo before allowing KCSM transmission
β Consolidated Acceptance Criteria
- The system begins KCSM transmission preparation → the system initializes the KCSM transmission file with proper structure and parameters
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_InitializeKCSMTransmissionFile(["Start Step"])
E_InitializeKCSMTransmissionFile(["End Step"])
N_InitializeKCSMTransmissionFile_Node0{"The system begins KCSM transmission
preparation"}:::decision N_InitializeKCSMTransmissionFile_Node0_action["The system initializes the KCSM
transmission file with proper
structure and parameters"]:::main N_InitializeKCSMTransmissionFile_Node0 -- Yes --> N_InitializeKCSMTransmissionFile_Node0_action N_InitializeKCSMTransmissionFile_Node0_action --> E_InitializeKCSMTransmissionFile S_InitializeKCSMTransmissionFile --> N_InitializeKCSMTransmissionFile_Node0 N_InitializeKCSMTransmissionFile_Node0 -- No --> E_InitializeKCSMTransmissionFile
preparation"}:::decision N_InitializeKCSMTransmissionFile_Node0_action["The system initializes the KCSM
transmission file with proper
structure and parameters"]:::main N_InitializeKCSMTransmissionFile_Node0 -- Yes --> N_InitializeKCSMTransmissionFile_Node0_action N_InitializeKCSMTransmissionFile_Node0_action --> E_InitializeKCSMTransmissionFile S_InitializeKCSMTransmissionFile --> N_InitializeKCSMTransmissionFile_Node0 N_InitializeKCSMTransmissionFile_Node0 -- No --> E_InitializeKCSMTransmissionFile
File: GCX016.cbl
GIVEN:
KCSM processing is required for the current message
WHEN:
The system begins KCSM transmission preparation
THEN:
- The system initializes the kcsm transmission file with proper structure
- Parameters
β Consolidated Acceptance Criteria
- The system processes the original EDI 350 message → the system copies all required message segments to the KCSM transmission structure
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CopyOriginalEDI350MessageSegments(["Start Step"])
E_CopyOriginalEDI350MessageSegments(["End Step"])
N_CopyOriginalEDI350MessageSegments_Node0{"The system processes the original
EDI 350 message"}:::decision N_CopyOriginalEDI350MessageSegments_Node0_action["The system copies all required
message segments to the KCSM
transmission structure"]:::main N_CopyOriginalEDI350MessageSegments_Node0 -- Yes --> N_CopyOriginalEDI350MessageSegments_Node0_action N_CopyOriginalEDI350MessageSegments_Node0_action --> E_CopyOriginalEDI350MessageSegments S_CopyOriginalEDI350MessageSegments --> N_CopyOriginalEDI350MessageSegments_Node0 N_CopyOriginalEDI350MessageSegments_Node0 -- No --> E_CopyOriginalEDI350MessageSegments
EDI 350 message"}:::decision N_CopyOriginalEDI350MessageSegments_Node0_action["The system copies all required
message segments to the KCSM
transmission structure"]:::main N_CopyOriginalEDI350MessageSegments_Node0 -- Yes --> N_CopyOriginalEDI350MessageSegments_Node0_action N_CopyOriginalEDI350MessageSegments_Node0_action --> E_CopyOriginalEDI350MessageSegments S_CopyOriginalEDI350MessageSegments --> N_CopyOriginalEDI350MessageSegments_Node0 N_CopyOriginalEDI350MessageSegments_Node0 -- No --> E_CopyOriginalEDI350MessageSegments
File: GCX016.cbl
GIVEN:
KCSM transmission file is initialized
WHEN:
The system processes the original EDI 350 message
THEN:
The system copies all required message segments to the KCSM transmission structure
β Consolidated Acceptance Criteria
- The system creates the transmission structure → the system creates a transmission root segment (A9RT) with proper identification and control information
- The system needs to establish the EDI message structure foundation → the system should create an A9RT transmission root segment with proper identification and control parameters
- The system creates the transmission root segment → the root segment must be formatted with proper transmission identifiers and control information from A9RT data
- A transmission root segment needs to be created → a9RT transmission root segment is created with transmission ID, broker ID, and timestamp
- The system creates transmission control structures → a transmission root segment (A9RT) is created with proper control information, sequence numbers, and transmission identifiers
- The system creates the transmission control structure → the system generates a transmission root segment using A9RT data for KCSM message identification and control
- The system creates the transmission root segment → a9RT transmission root segment is created with proper structure for EDI message transmission
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CreateTransmissionRootSegment(["Start Step"])
E_CreateTransmissionRootSegment(["End Step"])
N_CreateTransmissionRootSegment_Node0{"The system creates the transmission
structure"}:::decision N_CreateTransmissionRootSegment_Node0_action["The system creates a transmission
root segment A9RT with proper
identification and control
information"]:::main N_CreateTransmissionRootSegment_Node0 -- Yes --> N_CreateTransmissionRootSegment_Node0_action N_CreateTransmissionRootSegment_Node0_action --> E_CreateTransmissionRootSegment S_CreateTransmissionRootSegment --> N_CreateTransmissionRootSegment_Node0 N_CreateTransmissionRootSegment_Node1{"The system needs to establish the
EDI message structure foundation"}:::decision N_CreateTransmissionRootSegment_Node1_action["The system should create an A9RT
transmission root segment with
proper identification and control
parameters"]:::main N_CreateTransmissionRootSegment_Node1 -- Yes --> N_CreateTransmissionRootSegment_Node1_action N_CreateTransmissionRootSegment_Node1_action --> E_CreateTransmissionRootSegment N_CreateTransmissionRootSegment_Node0 -- No --> N_CreateTransmissionRootSegment_Node1 N_CreateTransmissionRootSegment_Node2{"The system creates the transmission
root segment"}:::decision N_CreateTransmissionRootSegment_Node2_action["The root segment must be formatted
with proper transmission identifiers
and control information from A9RT
data"]:::main N_CreateTransmissionRootSegment_Node2 -- Yes --> N_CreateTransmissionRootSegment_Node2_action N_CreateTransmissionRootSegment_Node2_action --> E_CreateTransmissionRootSegment N_CreateTransmissionRootSegment_Node1 -- No --> N_CreateTransmissionRootSegment_Node2 N_CreateTransmissionRootSegment_Node3{"A transmission root segment needs
to be created"}:::decision N_CreateTransmissionRootSegment_Node3_action["A9RT transmission root segment is
created with transmission ID, broker
ID, and timestamp"]:::main N_CreateTransmissionRootSegment_Node3 -- Yes --> N_CreateTransmissionRootSegment_Node3_action N_CreateTransmissionRootSegment_Node3_action --> E_CreateTransmissionRootSegment N_CreateTransmissionRootSegment_Node2 -- No --> N_CreateTransmissionRootSegment_Node3 N_CreateTransmissionRootSegment_Node4{"The system creates transmission
control structures"}:::decision N_CreateTransmissionRootSegment_Node4_action["A transmission root segment A9RT is
created with proper control
information, sequence numbers, and
transmission identifiers"]:::main N_CreateTransmissionRootSegment_Node4 -- Yes --> N_CreateTransmissionRootSegment_Node4_action N_CreateTransmissionRootSegment_Node4_action --> E_CreateTransmissionRootSegment N_CreateTransmissionRootSegment_Node3 -- No --> N_CreateTransmissionRootSegment_Node4 N_CreateTransmissionRootSegment_Node5{"The system creates the transmission
control structure"}:::decision N_CreateTransmissionRootSegment_Node5_action["The system generates a transmission
root segment using A9RT data for
KCSM message identification and
control"]:::main N_CreateTransmissionRootSegment_Node5 -- Yes --> N_CreateTransmissionRootSegment_Node5_action N_CreateTransmissionRootSegment_Node5_action --> E_CreateTransmissionRootSegment N_CreateTransmissionRootSegment_Node4 -- No --> N_CreateTransmissionRootSegment_Node5 N_CreateTransmissionRootSegment_Node6{"The system creates the transmission
root segment"}:::decision N_CreateTransmissionRootSegment_Node6_action["A9RT transmission root segment is
created with proper structure for
EDI message transmission"]:::main N_CreateTransmissionRootSegment_Node6 -- Yes --> N_CreateTransmissionRootSegment_Node6_action N_CreateTransmissionRootSegment_Node6_action --> E_CreateTransmissionRootSegment N_CreateTransmissionRootSegment_Node5 -- No --> N_CreateTransmissionRootSegment_Node6 N_CreateTransmissionRootSegment_Node6 -- No --> E_CreateTransmissionRootSegment
structure"}:::decision N_CreateTransmissionRootSegment_Node0_action["The system creates a transmission
root segment A9RT with proper
identification and control
information"]:::main N_CreateTransmissionRootSegment_Node0 -- Yes --> N_CreateTransmissionRootSegment_Node0_action N_CreateTransmissionRootSegment_Node0_action --> E_CreateTransmissionRootSegment S_CreateTransmissionRootSegment --> N_CreateTransmissionRootSegment_Node0 N_CreateTransmissionRootSegment_Node1{"The system needs to establish the
EDI message structure foundation"}:::decision N_CreateTransmissionRootSegment_Node1_action["The system should create an A9RT
transmission root segment with
proper identification and control
parameters"]:::main N_CreateTransmissionRootSegment_Node1 -- Yes --> N_CreateTransmissionRootSegment_Node1_action N_CreateTransmissionRootSegment_Node1_action --> E_CreateTransmissionRootSegment N_CreateTransmissionRootSegment_Node0 -- No --> N_CreateTransmissionRootSegment_Node1 N_CreateTransmissionRootSegment_Node2{"The system creates the transmission
root segment"}:::decision N_CreateTransmissionRootSegment_Node2_action["The root segment must be formatted
with proper transmission identifiers
and control information from A9RT
data"]:::main N_CreateTransmissionRootSegment_Node2 -- Yes --> N_CreateTransmissionRootSegment_Node2_action N_CreateTransmissionRootSegment_Node2_action --> E_CreateTransmissionRootSegment N_CreateTransmissionRootSegment_Node1 -- No --> N_CreateTransmissionRootSegment_Node2 N_CreateTransmissionRootSegment_Node3{"A transmission root segment needs
to be created"}:::decision N_CreateTransmissionRootSegment_Node3_action["A9RT transmission root segment is
created with transmission ID, broker
ID, and timestamp"]:::main N_CreateTransmissionRootSegment_Node3 -- Yes --> N_CreateTransmissionRootSegment_Node3_action N_CreateTransmissionRootSegment_Node3_action --> E_CreateTransmissionRootSegment N_CreateTransmissionRootSegment_Node2 -- No --> N_CreateTransmissionRootSegment_Node3 N_CreateTransmissionRootSegment_Node4{"The system creates transmission
control structures"}:::decision N_CreateTransmissionRootSegment_Node4_action["A transmission root segment A9RT is
created with proper control
information, sequence numbers, and
transmission identifiers"]:::main N_CreateTransmissionRootSegment_Node4 -- Yes --> N_CreateTransmissionRootSegment_Node4_action N_CreateTransmissionRootSegment_Node4_action --> E_CreateTransmissionRootSegment N_CreateTransmissionRootSegment_Node3 -- No --> N_CreateTransmissionRootSegment_Node4 N_CreateTransmissionRootSegment_Node5{"The system creates the transmission
control structure"}:::decision N_CreateTransmissionRootSegment_Node5_action["The system generates a transmission
root segment using A9RT data for
KCSM message identification and
control"]:::main N_CreateTransmissionRootSegment_Node5 -- Yes --> N_CreateTransmissionRootSegment_Node5_action N_CreateTransmissionRootSegment_Node5_action --> E_CreateTransmissionRootSegment N_CreateTransmissionRootSegment_Node4 -- No --> N_CreateTransmissionRootSegment_Node5 N_CreateTransmissionRootSegment_Node6{"The system creates the transmission
root segment"}:::decision N_CreateTransmissionRootSegment_Node6_action["A9RT transmission root segment is
created with proper structure for
EDI message transmission"]:::main N_CreateTransmissionRootSegment_Node6 -- Yes --> N_CreateTransmissionRootSegment_Node6_action N_CreateTransmissionRootSegment_Node6_action --> E_CreateTransmissionRootSegment N_CreateTransmissionRootSegment_Node5 -- No --> N_CreateTransmissionRootSegment_Node6 N_CreateTransmissionRootSegment_Node6 -- No --> E_CreateTransmissionRootSegment
File: GCX016.cbl
GIVEN:
Original EDI message segments have been copied
WHEN:
The system creates the transmission structure
THEN:
- The system creates a transmission root segment (a9rt) with proper identification
- Control information
File: GCX016.cbl
GIVEN:
KCSM broker information has been retrieved successfully
WHEN:
The system needs to establish the EDI message structure foundation
THEN:
- The system should create an a9rt transmission root segment with proper identification
- Control parameters
File: GCX016.cbl
GIVEN:
A9RT transmission segment data is available
WHEN:
The system creates the transmission root segment
THEN:
- The root segment must be formatted with proper transmission identifiers
- Control information from a9rt data
File: GCX016.cbl
GIVEN:
KCSM broker information has been retrieved
WHEN:
A transmission root segment needs to be created
THEN:
A9RT transmission root segment is created with transmission ID, broker ID, and timestamp
File: GCX016.cbl
GIVEN:
A formatted EDI message ready for KCSM transmission
WHEN:
The system creates transmission control structures
THEN:
A transmission root segment (A9RT) is created with proper control information, sequence numbers, and transmission identifiers
File: GCX016.cbl
GIVEN:
The EDI message structure has been copied
WHEN:
The system creates the transmission control structure
THEN:
- The system generates a transmission root segment using a9rt data for kcsm message identification
- Control
File: GCX016.cbl
GIVEN:
A valid broker name has been retrieved for KCSM processing
WHEN:
The system creates the transmission root segment
THEN:
A9RT transmission root segment is created with proper structure for EDI message transmission
β Consolidated Acceptance Criteria
- The system builds the complete transmission structure → the system creates transmission dependent segments (A9DP) linked to the root segment
- The system creates transmission dependent segments → all dependent segments must be created with proper sequencing and data from A9DP segments
- The system creates transmission dependent segments → transmission dependent segments (A9DP) are created containing the EDI message data with proper linkage to the root segment
- The system creates dependent transmission segments → the system generates transmission dependent segments using A9DP data for proper KCSM message structure
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CreateTransmissionDependentSegments(["Start Step"])
E_CreateTransmissionDependentSegments(["End Step"])
N_CreateTransmissionDependentSegments_Node0{"The system builds the complete
transmission structure"}:::decision N_CreateTransmissionDependentSegments_Node0_action["The system creates transmission
dependent segments A9DP linked to
the root segment"]:::main N_CreateTransmissionDependentSegments_Node0 -- Yes --> N_CreateTransmissionDependentSegments_Node0_action N_CreateTransmissionDependentSegments_Node0_action --> E_CreateTransmissionDependentSegments S_CreateTransmissionDependentSegments --> N_CreateTransmissionDependentSegments_Node0 N_CreateTransmissionDependentSegments_Node1{"The system creates transmission
dependent segments"}:::decision N_CreateTransmissionDependentSegments_Node1_action["All dependent segments must be
created with proper sequencing and
data from A9DP segments"]:::main N_CreateTransmissionDependentSegments_Node1 -- Yes --> N_CreateTransmissionDependentSegments_Node1_action N_CreateTransmissionDependentSegments_Node1_action --> E_CreateTransmissionDependentSegments N_CreateTransmissionDependentSegments_Node0 -- No --> N_CreateTransmissionDependentSegments_Node1 N_CreateTransmissionDependentSegments_Node2{"The system creates transmission
dependent segments"}:::decision N_CreateTransmissionDependentSegments_Node2_action["Transmission dependent segments
A9DP are created containing the EDI
message data with proper linkage to
the root segment"]:::main N_CreateTransmissionDependentSegments_Node2 -- Yes --> N_CreateTransmissionDependentSegments_Node2_action N_CreateTransmissionDependentSegments_Node2_action --> E_CreateTransmissionDependentSegments N_CreateTransmissionDependentSegments_Node1 -- No --> N_CreateTransmissionDependentSegments_Node2 N_CreateTransmissionDependentSegments_Node3{"The system creates dependent
transmission segments"}:::decision N_CreateTransmissionDependentSegments_Node3_action["The system generates transmission
dependent segments using A9DP data
for proper KCSM message structure"]:::main N_CreateTransmissionDependentSegments_Node3 -- Yes --> N_CreateTransmissionDependentSegments_Node3_action N_CreateTransmissionDependentSegments_Node3_action --> E_CreateTransmissionDependentSegments N_CreateTransmissionDependentSegments_Node2 -- No --> N_CreateTransmissionDependentSegments_Node3 N_CreateTransmissionDependentSegments_Node3 -- No --> E_CreateTransmissionDependentSegments
transmission structure"}:::decision N_CreateTransmissionDependentSegments_Node0_action["The system creates transmission
dependent segments A9DP linked to
the root segment"]:::main N_CreateTransmissionDependentSegments_Node0 -- Yes --> N_CreateTransmissionDependentSegments_Node0_action N_CreateTransmissionDependentSegments_Node0_action --> E_CreateTransmissionDependentSegments S_CreateTransmissionDependentSegments --> N_CreateTransmissionDependentSegments_Node0 N_CreateTransmissionDependentSegments_Node1{"The system creates transmission
dependent segments"}:::decision N_CreateTransmissionDependentSegments_Node1_action["All dependent segments must be
created with proper sequencing and
data from A9DP segments"]:::main N_CreateTransmissionDependentSegments_Node1 -- Yes --> N_CreateTransmissionDependentSegments_Node1_action N_CreateTransmissionDependentSegments_Node1_action --> E_CreateTransmissionDependentSegments N_CreateTransmissionDependentSegments_Node0 -- No --> N_CreateTransmissionDependentSegments_Node1 N_CreateTransmissionDependentSegments_Node2{"The system creates transmission
dependent segments"}:::decision N_CreateTransmissionDependentSegments_Node2_action["Transmission dependent segments
A9DP are created containing the EDI
message data with proper linkage to
the root segment"]:::main N_CreateTransmissionDependentSegments_Node2 -- Yes --> N_CreateTransmissionDependentSegments_Node2_action N_CreateTransmissionDependentSegments_Node2_action --> E_CreateTransmissionDependentSegments N_CreateTransmissionDependentSegments_Node1 -- No --> N_CreateTransmissionDependentSegments_Node2 N_CreateTransmissionDependentSegments_Node3{"The system creates dependent
transmission segments"}:::decision N_CreateTransmissionDependentSegments_Node3_action["The system generates transmission
dependent segments using A9DP data
for proper KCSM message structure"]:::main N_CreateTransmissionDependentSegments_Node3 -- Yes --> N_CreateTransmissionDependentSegments_Node3_action N_CreateTransmissionDependentSegments_Node3_action --> E_CreateTransmissionDependentSegments N_CreateTransmissionDependentSegments_Node2 -- No --> N_CreateTransmissionDependentSegments_Node3 N_CreateTransmissionDependentSegments_Node3 -- No --> E_CreateTransmissionDependentSegments
File: GCX016.cbl
GIVEN:
Transmission root segment has been created
WHEN:
The system builds the complete transmission structure
THEN:
The system creates transmission dependent segments (A9DP) linked to the root segment
File: GCX016.cbl
GIVEN:
A9DP dependent segment data is available
WHEN:
The system creates transmission dependent segments
THEN:
- All dependent segments must be created with proper sequencing
- Data from a9dp segments
File: GCX016.cbl
GIVEN:
A transmission root segment and formatted EDI message data
WHEN:
The system creates transmission dependent segments
THEN:
Transmission dependent segments (A9DP) are created containing the EDI message data with proper linkage to the root segment
File: GCX016.cbl
GIVEN:
The transmission root segment has been created
WHEN:
The system creates dependent transmission segments
THEN:
The system generates transmission dependent segments using A9DP data for proper KCSM message structure
β Consolidated Acceptance Criteria
- The system prepares data for KCSM transmission → the system formats all EDI data according to KCSM system specifications and requirements
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_FormatEDIDataforKCSMSystem(["Start Step"])
E_FormatEDIDataforKCSMSystem(["End Step"])
N_FormatEDIDataforKCSMSystem_Node0{"The system prepares data for KCSM
transmission"}:::decision N_FormatEDIDataforKCSMSystem_Node0_action["The system formats all EDI data
according to KCSM system
specifications and requirements"]:::main N_FormatEDIDataforKCSMSystem_Node0 -- Yes --> N_FormatEDIDataforKCSMSystem_Node0_action N_FormatEDIDataforKCSMSystem_Node0_action --> E_FormatEDIDataforKCSMSystem S_FormatEDIDataforKCSMSystem --> N_FormatEDIDataforKCSMSystem_Node0 N_FormatEDIDataforKCSMSystem_Node0 -- No --> E_FormatEDIDataforKCSMSystem
transmission"}:::decision N_FormatEDIDataforKCSMSystem_Node0_action["The system formats all EDI data
according to KCSM system
specifications and requirements"]:::main N_FormatEDIDataforKCSMSystem_Node0 -- Yes --> N_FormatEDIDataforKCSMSystem_Node0_action N_FormatEDIDataforKCSMSystem_Node0_action --> E_FormatEDIDataforKCSMSystem S_FormatEDIDataforKCSMSystem --> N_FormatEDIDataforKCSMSystem_Node0 N_FormatEDIDataforKCSMSystem_Node0 -- No --> E_FormatEDIDataforKCSMSystem
File: GCX016.cbl
GIVEN:
Transmission segments have been created
WHEN:
The system prepares data for KCSM transmission
THEN:
- The system formats all edi data according to kcsm system specifications
- Requirements
β Consolidated Acceptance Criteria
- The system is ready to transmit the message → the system writes the formatted message to the KCSM message queue for processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_WriteMessagetoKCSMQueue(["Start Step"])
E_WriteMessagetoKCSMQueue(["End Step"])
N_WriteMessagetoKCSMQueue_Node0{"The system is ready to transmit the
message"}:::decision N_WriteMessagetoKCSMQueue_Node0_action["The system writes the formatted
message to the KCSM message queue
for processing"]:::main N_WriteMessagetoKCSMQueue_Node0 -- Yes --> N_WriteMessagetoKCSMQueue_Node0_action N_WriteMessagetoKCSMQueue_Node0_action --> E_WriteMessagetoKCSMQueue S_WriteMessagetoKCSMQueue --> N_WriteMessagetoKCSMQueue_Node0 N_WriteMessagetoKCSMQueue_Node0 -- No --> E_WriteMessagetoKCSMQueue
message"}:::decision N_WriteMessagetoKCSMQueue_Node0_action["The system writes the formatted
message to the KCSM message queue
for processing"]:::main N_WriteMessagetoKCSMQueue_Node0 -- Yes --> N_WriteMessagetoKCSMQueue_Node0_action N_WriteMessagetoKCSMQueue_Node0_action --> E_WriteMessagetoKCSMQueue S_WriteMessagetoKCSMQueue --> N_WriteMessagetoKCSMQueue_Node0 N_WriteMessagetoKCSMQueue_Node0 -- No --> E_WriteMessagetoKCSMQueue
File: GCX016.cbl
GIVEN:
EDI data has been formatted for KCSM system
WHEN:
The system is ready to transmit the message
THEN:
The system writes the formatted message to the KCSM message queue for processing
β Consolidated Acceptance Criteria
- The system completes the transmission preparation → the system updates transmission parameters including timestamps, sequence numbers, and control information
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UpdateTransmissionParameters(["Start Step"])
E_UpdateTransmissionParameters(["End Step"])
N_UpdateTransmissionParameters_Node0{"The system completes the
transmission preparation"}:::decision N_UpdateTransmissionParameters_Node0_action["The system updates transmission
parameters including timestamps,
sequence numbers, and control
information"]:::main N_UpdateTransmissionParameters_Node0 -- Yes --> N_UpdateTransmissionParameters_Node0_action N_UpdateTransmissionParameters_Node0_action --> E_UpdateTransmissionParameters S_UpdateTransmissionParameters --> N_UpdateTransmissionParameters_Node0 N_UpdateTransmissionParameters_Node0 -- No --> E_UpdateTransmissionParameters
transmission preparation"}:::decision N_UpdateTransmissionParameters_Node0_action["The system updates transmission
parameters including timestamps,
sequence numbers, and control
information"]:::main N_UpdateTransmissionParameters_Node0 -- Yes --> N_UpdateTransmissionParameters_Node0_action N_UpdateTransmissionParameters_Node0_action --> E_UpdateTransmissionParameters S_UpdateTransmissionParameters --> N_UpdateTransmissionParameters_Node0 N_UpdateTransmissionParameters_Node0 -- No --> E_UpdateTransmissionParameters
File: GCX016.cbl
GIVEN:
Message has been written to KCSM queue
WHEN:
The system completes the transmission preparation
THEN:
The system updates transmission parameters including timestamps, sequence numbers, and control information
β Consolidated Acceptance Criteria
- The system is ready to initiate KCSM integration → the system spawns a KCSM integration transaction to handle the actual transmission and processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SpawnKCSMIntegrationTransaction(["Start Step"])
E_SpawnKCSMIntegrationTransaction(["End Step"])
N_SpawnKCSMIntegrationTransaction_Node0{"The system is ready to initiate
KCSM integration"}:::decision N_SpawnKCSMIntegrationTransaction_Node0_action["The system spawns a KCSM
integration transaction to handle
the actual transmission and
processing"]:::main N_SpawnKCSMIntegrationTransaction_Node0 -- Yes --> N_SpawnKCSMIntegrationTransaction_Node0_action N_SpawnKCSMIntegrationTransaction_Node0_action --> E_SpawnKCSMIntegrationTransaction S_SpawnKCSMIntegrationTransaction --> N_SpawnKCSMIntegrationTransaction_Node0 N_SpawnKCSMIntegrationTransaction_Node0 -- No --> E_SpawnKCSMIntegrationTransaction
KCSM integration"}:::decision N_SpawnKCSMIntegrationTransaction_Node0_action["The system spawns a KCSM
integration transaction to handle
the actual transmission and
processing"]:::main N_SpawnKCSMIntegrationTransaction_Node0 -- Yes --> N_SpawnKCSMIntegrationTransaction_Node0_action N_SpawnKCSMIntegrationTransaction_Node0_action --> E_SpawnKCSMIntegrationTransaction S_SpawnKCSMIntegrationTransaction --> N_SpawnKCSMIntegrationTransaction_Node0 N_SpawnKCSMIntegrationTransaction_Node0 -- No --> E_SpawnKCSMIntegrationTransaction
File: GCX016.cbl
GIVEN:
KCSM transmission details have been logged
WHEN:
The system is ready to initiate KCSM integration
THEN:
- The system spawns a kcsm integration transaction to handle the actual transmission
- Processing
β Consolidated Acceptance Criteria
- The system processes the disposition code 95 for bond clearing → the system should identify the cargo record and initiate bond information clearing process
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_DispositionCode95Detected(["Start Step"])
E_DispositionCode95Detected(["End Step"])
N_DispositionCode95Detected_Node0{"The system processes the
disposition code 95 for bond
clearing"}:::decision N_DispositionCode95Detected_Node0_action["The system should identify the
cargo record and initiate bond
information clearing process"]:::main N_DispositionCode95Detected_Node0 -- Yes --> N_DispositionCode95Detected_Node0_action N_DispositionCode95Detected_Node0_action --> E_DispositionCode95Detected S_DispositionCode95Detected --> N_DispositionCode95Detected_Node0 N_DispositionCode95Detected_Node0 -- No --> E_DispositionCode95Detected
disposition code 95 for bond
clearing"}:::decision N_DispositionCode95Detected_Node0_action["The system should identify the
cargo record and initiate bond
information clearing process"]:::main N_DispositionCode95Detected_Node0 -- Yes --> N_DispositionCode95Detected_Node0_action N_DispositionCode95Detected_Node0_action --> E_DispositionCode95Detected S_DispositionCode95Detected --> N_DispositionCode95Detected_Node0 N_DispositionCode95Detected_Node0 -- No --> E_DispositionCode95Detected
File: GCX016.cbl
GIVEN:
A cargo record exists in the system and disposition code 95 is being processed
WHEN:
The system processes the disposition code 95 for bond clearing
THEN:
- The system should identify the cargo record
- Initiate bond information clearing process
β Consolidated Acceptance Criteria
- The system attempts to access the cargo record → the system should verify the cargo record exists and either proceed with clearing or generate an error if not found
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CargoRecordExists(["Start Step"])
E_CargoRecordExists(["End Step"])
N_CargoRecordExists_Node0{"The system attempts to access the
cargo record"}:::decision N_CargoRecordExists_Node0_action["The system should verify the cargo
record exists and either proceed
with clearing or generate an error
if not found"]:::main N_CargoRecordExists_Node0 -- Yes --> N_CargoRecordExists_Node0_action N_CargoRecordExists_Node0_action --> E_CargoRecordExists S_CargoRecordExists --> N_CargoRecordExists_Node0 N_CargoRecordExists_Node0 -- No --> E_CargoRecordExists
cargo record"}:::decision N_CargoRecordExists_Node0_action["The system should verify the cargo
record exists and either proceed
with clearing or generate an error
if not found"]:::main N_CargoRecordExists_Node0 -- Yes --> N_CargoRecordExists_Node0_action N_CargoRecordExists_Node0_action --> E_CargoRecordExists S_CargoRecordExists --> N_CargoRecordExists_Node0 N_CargoRecordExists_Node0 -- No --> E_CargoRecordExists
File: GCX016.cbl
GIVEN:
A request to clear bond information for a specific cargo
WHEN:
The system attempts to access the cargo record
THEN:
- The system should verify the cargo record exists
- Either proceed with clearing or generate an error if not found
β Consolidated Acceptance Criteria
- The system clears bonded-to station information → the bonded-to station field should be set to spaces or null value
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ClearBondedToStationInformation(["Start Step"])
E_ClearBondedToStationInformation(["End Step"])
N_ClearBondedToStationInformation_Node0{"The system clears bonded-to station
information"}:::decision N_ClearBondedToStationInformation_Node0_action["The bonded-to station field should
be set to spaces or null value"]:::main N_ClearBondedToStationInformation_Node0 -- Yes --> N_ClearBondedToStationInformation_Node0_action N_ClearBondedToStationInformation_Node0_action --> E_ClearBondedToStationInformation S_ClearBondedToStationInformation --> N_ClearBondedToStationInformation_Node0 N_ClearBondedToStationInformation_Node0 -- No --> E_ClearBondedToStationInformation
information"}:::decision N_ClearBondedToStationInformation_Node0_action["The bonded-to station field should
be set to spaces or null value"]:::main N_ClearBondedToStationInformation_Node0 -- Yes --> N_ClearBondedToStationInformation_Node0_action N_ClearBondedToStationInformation_Node0_action --> E_ClearBondedToStationInformation S_ClearBondedToStationInformation --> N_ClearBondedToStationInformation_Node0 N_ClearBondedToStationInformation_Node0 -- No --> E_ClearBondedToStationInformation
File: GCX016.cbl
GIVEN:
A cargo record contains bonded-to station information
WHEN:
The system clears bonded-to station information
THEN:
The bonded-to station field should be set to spaces or null value
β Consolidated Acceptance Criteria
- The system clears bond start date information → the bond start date field should be set to zeros or null value
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ClearBondStartDate(["Start Step"])
E_ClearBondStartDate(["End Step"])
N_ClearBondStartDate_Node0{"The system clears bond start date
information"}:::decision N_ClearBondStartDate_Node0_action["The bond start date field should be
set to zeros or null value"]:::main N_ClearBondStartDate_Node0 -- Yes --> N_ClearBondStartDate_Node0_action N_ClearBondStartDate_Node0_action --> E_ClearBondStartDate S_ClearBondStartDate --> N_ClearBondStartDate_Node0 N_ClearBondStartDate_Node0 -- No --> E_ClearBondStartDate
information"}:::decision N_ClearBondStartDate_Node0_action["The bond start date field should be
set to zeros or null value"]:::main N_ClearBondStartDate_Node0 -- Yes --> N_ClearBondStartDate_Node0_action N_ClearBondStartDate_Node0_action --> E_ClearBondStartDate S_ClearBondStartDate --> N_ClearBondStartDate_Node0 N_ClearBondStartDate_Node0 -- No --> E_ClearBondStartDate
File: GCX016.cbl
GIVEN:
A cargo record contains a bond start date
WHEN:
The system clears bond start date information
THEN:
The bond start date field should be set to zeros or null value
β Consolidated Acceptance Criteria
- The system clears bond type information → the bond type field should be set to spaces or null value
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ClearBondTypeInformation(["Start Step"])
E_ClearBondTypeInformation(["End Step"])
N_ClearBondTypeInformation_Node0{"The system clears bond type
information"}:::decision N_ClearBondTypeInformation_Node0_action["The bond type field should be set
to spaces or null value"]:::main N_ClearBondTypeInformation_Node0 -- Yes --> N_ClearBondTypeInformation_Node0_action N_ClearBondTypeInformation_Node0_action --> E_ClearBondTypeInformation S_ClearBondTypeInformation --> N_ClearBondTypeInformation_Node0 N_ClearBondTypeInformation_Node0 -- No --> E_ClearBondTypeInformation
information"}:::decision N_ClearBondTypeInformation_Node0_action["The bond type field should be set
to spaces or null value"]:::main N_ClearBondTypeInformation_Node0 -- Yes --> N_ClearBondTypeInformation_Node0_action N_ClearBondTypeInformation_Node0_action --> E_ClearBondTypeInformation S_ClearBondTypeInformation --> N_ClearBondTypeInformation_Node0 N_ClearBondTypeInformation_Node0 -- No --> E_ClearBondTypeInformation
File: GCX016.cbl
GIVEN:
A cargo record contains bond type information
WHEN:
The system clears bond type information
THEN:
The bond type field should be set to spaces or null value
β Consolidated Acceptance Criteria
- The system logs the bond clearing action → an audit log entry should be created documenting the bond clearing action with relevant details
- Finalizing the disposition code 95 transaction → a log entry is created documenting the bond clearing action with timestamp and cargo details
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogBondClearingAction(["Start Step"])
E_LogBondClearingAction(["End Step"])
N_LogBondClearingAction_Node0{"The system logs the bond clearing
action"}:::decision N_LogBondClearingAction_Node0_action["An audit log entry should be
created documenting the bond
clearing action with relevant
details"]:::main N_LogBondClearingAction_Node0 -- Yes --> N_LogBondClearingAction_Node0_action N_LogBondClearingAction_Node0_action --> E_LogBondClearingAction S_LogBondClearingAction --> N_LogBondClearingAction_Node0 N_LogBondClearingAction_Node1{"Finalizing the disposition code 95
transaction"}:::decision N_LogBondClearingAction_Node1_action["A log entry is created documenting
the bond clearing action with
timestamp and cargo details"]:::main N_LogBondClearingAction_Node1 -- Yes --> N_LogBondClearingAction_Node1_action N_LogBondClearingAction_Node1_action --> E_LogBondClearingAction N_LogBondClearingAction_Node0 -- No --> N_LogBondClearingAction_Node1 N_LogBondClearingAction_Node1 -- No --> E_LogBondClearingAction
action"}:::decision N_LogBondClearingAction_Node0_action["An audit log entry should be
created documenting the bond
clearing action with relevant
details"]:::main N_LogBondClearingAction_Node0 -- Yes --> N_LogBondClearingAction_Node0_action N_LogBondClearingAction_Node0_action --> E_LogBondClearingAction S_LogBondClearingAction --> N_LogBondClearingAction_Node0 N_LogBondClearingAction_Node1{"Finalizing the disposition code 95
transaction"}:::decision N_LogBondClearingAction_Node1_action["A log entry is created documenting
the bond clearing action with
timestamp and cargo details"]:::main N_LogBondClearingAction_Node1 -- Yes --> N_LogBondClearingAction_Node1_action N_LogBondClearingAction_Node1_action --> E_LogBondClearingAction N_LogBondClearingAction_Node0 -- No --> N_LogBondClearingAction_Node1 N_LogBondClearingAction_Node1 -- No --> E_LogBondClearingAction
File: GCX016.cbl
GIVEN:
Bond information has been cleared from a cargo record
WHEN:
The system logs the bond clearing action
THEN:
An audit log entry should be created documenting the bond clearing action with relevant details
File: GCX016.cbl
GIVEN:
The cargo record has been updated with cleared bond information
WHEN:
Finalizing the disposition code 95 transaction
THEN:
- A log entry is created documenting the bond clearing action with timestamp
- Cargo details
β Consolidated Acceptance Criteria
- The system replaces the cargo record in the database → the updated cargo record should be successfully saved to the database with all bond information cleared
- The system executes the database replacement operation → the cargo record is successfully replaced in the database with all updated information
- Replacing the cargo record in the database → update the existing cargo record in the GCSUSRT cargo root database with the modified data
- The system replaces the cargo record in the database → the cargo record is updated in the database with the new car ID and equipment information
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ReplaceCargoRecordinDatabase(["Start Step"])
E_ReplaceCargoRecordinDatabase(["End Step"])
N_ReplaceCargoRecordinDatabase_Node0{"The system replaces the cargo
record in the database"}:::decision N_ReplaceCargoRecordinDatabase_Node0_action["The updated cargo record should be
successfully saved to the database
with all bond information cleared"]:::main N_ReplaceCargoRecordinDatabase_Node0 -- Yes --> N_ReplaceCargoRecordinDatabase_Node0_action N_ReplaceCargoRecordinDatabase_Node0_action --> E_ReplaceCargoRecordinDatabase S_ReplaceCargoRecordinDatabase --> N_ReplaceCargoRecordinDatabase_Node0 N_ReplaceCargoRecordinDatabase_Node1{"The system executes the database
replacement operation"}:::decision N_ReplaceCargoRecordinDatabase_Node1_action["The cargo record is successfully
replaced in the database with all
updated information"]:::main N_ReplaceCargoRecordinDatabase_Node1 -- Yes --> N_ReplaceCargoRecordinDatabase_Node1_action N_ReplaceCargoRecordinDatabase_Node1_action --> E_ReplaceCargoRecordinDatabase N_ReplaceCargoRecordinDatabase_Node0 -- No --> N_ReplaceCargoRecordinDatabase_Node1 N_ReplaceCargoRecordinDatabase_Node2{"Replacing the cargo record in the
database"}:::decision N_ReplaceCargoRecordinDatabase_Node2_action["Update the existing cargo record in
the GCSUSRT cargo root database with
the modified data"]:::main N_ReplaceCargoRecordinDatabase_Node2 -- Yes --> N_ReplaceCargoRecordinDatabase_Node2_action N_ReplaceCargoRecordinDatabase_Node2_action --> E_ReplaceCargoRecordinDatabase N_ReplaceCargoRecordinDatabase_Node1 -- No --> N_ReplaceCargoRecordinDatabase_Node2 N_ReplaceCargoRecordinDatabase_Node3{"The system replaces the cargo
record in the database"}:::decision N_ReplaceCargoRecordinDatabase_Node3_action["The cargo record is updated in the
database with the new car ID and
equipment information"]:::main N_ReplaceCargoRecordinDatabase_Node3 -- Yes --> N_ReplaceCargoRecordinDatabase_Node3_action N_ReplaceCargoRecordinDatabase_Node3_action --> E_ReplaceCargoRecordinDatabase N_ReplaceCargoRecordinDatabase_Node2 -- No --> N_ReplaceCargoRecordinDatabase_Node3 N_ReplaceCargoRecordinDatabase_Node3 -- No --> E_ReplaceCargoRecordinDatabase
record in the database"}:::decision N_ReplaceCargoRecordinDatabase_Node0_action["The updated cargo record should be
successfully saved to the database
with all bond information cleared"]:::main N_ReplaceCargoRecordinDatabase_Node0 -- Yes --> N_ReplaceCargoRecordinDatabase_Node0_action N_ReplaceCargoRecordinDatabase_Node0_action --> E_ReplaceCargoRecordinDatabase S_ReplaceCargoRecordinDatabase --> N_ReplaceCargoRecordinDatabase_Node0 N_ReplaceCargoRecordinDatabase_Node1{"The system executes the database
replacement operation"}:::decision N_ReplaceCargoRecordinDatabase_Node1_action["The cargo record is successfully
replaced in the database with all
updated information"]:::main N_ReplaceCargoRecordinDatabase_Node1 -- Yes --> N_ReplaceCargoRecordinDatabase_Node1_action N_ReplaceCargoRecordinDatabase_Node1_action --> E_ReplaceCargoRecordinDatabase N_ReplaceCargoRecordinDatabase_Node0 -- No --> N_ReplaceCargoRecordinDatabase_Node1 N_ReplaceCargoRecordinDatabase_Node2{"Replacing the cargo record in the
database"}:::decision N_ReplaceCargoRecordinDatabase_Node2_action["Update the existing cargo record in
the GCSUSRT cargo root database with
the modified data"]:::main N_ReplaceCargoRecordinDatabase_Node2 -- Yes --> N_ReplaceCargoRecordinDatabase_Node2_action N_ReplaceCargoRecordinDatabase_Node2_action --> E_ReplaceCargoRecordinDatabase N_ReplaceCargoRecordinDatabase_Node1 -- No --> N_ReplaceCargoRecordinDatabase_Node2 N_ReplaceCargoRecordinDatabase_Node3{"The system replaces the cargo
record in the database"}:::decision N_ReplaceCargoRecordinDatabase_Node3_action["The cargo record is updated in the
database with the new car ID and
equipment information"]:::main N_ReplaceCargoRecordinDatabase_Node3 -- Yes --> N_ReplaceCargoRecordinDatabase_Node3_action N_ReplaceCargoRecordinDatabase_Node3_action --> E_ReplaceCargoRecordinDatabase N_ReplaceCargoRecordinDatabase_Node2 -- No --> N_ReplaceCargoRecordinDatabase_Node3 N_ReplaceCargoRecordinDatabase_Node3 -- No --> E_ReplaceCargoRecordinDatabase
File: GCX016.cbl
GIVEN:
A cargo record has been modified with cleared bond information
WHEN:
The system replaces the cargo record in the database
THEN:
The updated cargo record should be successfully saved to the database with all bond information cleared
File: GCX016.cbl
GIVEN:
All cargo record fields have been updated with current processing results
WHEN:
The system executes the database replacement operation
THEN:
The cargo record is successfully replaced in the database with all updated information
File: GCX016.cbl
GIVEN:
The cargo root record has been updated with new status information
WHEN:
Replacing the cargo record in the database
THEN:
Update the existing cargo record in the GCSUSRT cargo root database with the modified data
File: GCX016.cbl
GIVEN:
Equipment validation has been successful
WHEN:
The system replaces the cargo record in the database
THEN:
- The cargo record is updated in the database with the new car id
- Equipment information
β Consolidated Acceptance Criteria
- The system completes the bond clearing process → the system should indicate successful completion of bond information clearing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_BondInformationClearedSuccessfully(["Start Step"])
E_BondInformationClearedSuccessfully(["End Step"])
N_BondInformationClearedSuccessfully_Node0{"The system completes the bond
clearing process"}:::decision N_BondInformationClearedSuccessfully_Node0_action["The system should indicate
successful completion of bond
information clearing"]:::main N_BondInformationClearedSuccessfully_Node0 -- Yes --> N_BondInformationClearedSuccessfully_Node0_action N_BondInformationClearedSuccessfully_Node0_action --> E_BondInformationClearedSuccessfully S_BondInformationClearedSuccessfully --> N_BondInformationClearedSuccessfully_Node0 N_BondInformationClearedSuccessfully_Node0 -- No --> E_BondInformationClearedSuccessfully
clearing process"}:::decision N_BondInformationClearedSuccessfully_Node0_action["The system should indicate
successful completion of bond
information clearing"]:::main N_BondInformationClearedSuccessfully_Node0 -- Yes --> N_BondInformationClearedSuccessfully_Node0_action N_BondInformationClearedSuccessfully_Node0_action --> E_BondInformationClearedSuccessfully S_BondInformationClearedSuccessfully --> N_BondInformationClearedSuccessfully_Node0 N_BondInformationClearedSuccessfully_Node0 -- No --> E_BondInformationClearedSuccessfully
File: GCX016.cbl
GIVEN:
All bond clearing operations have been completed successfully
WHEN:
The system completes the bond clearing process
THEN:
The system should indicate successful completion of bond information clearing
β Consolidated Acceptance Criteria
- The cargo record cannot be found in the database → the system should generate a cargo not found error and terminate the bond clearing process
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ErrorCargoNotFound(["Start Step"])
E_ErrorCargoNotFound(["End Step"])
N_ErrorCargoNotFound_Node0{"The cargo record cannot be found in
the database"}:::decision N_ErrorCargoNotFound_Node0_action["The system should generate a cargo
not found error and terminate the
bond clearing process"]:::exclusion N_ErrorCargoNotFound_Node0 -- Yes -->|Alternative| N_ErrorCargoNotFound_Node0_action N_ErrorCargoNotFound_Node0_action --> E_ErrorCargoNotFound S_ErrorCargoNotFound --> N_ErrorCargoNotFound_Node0 N_ErrorCargoNotFound_Node0 -- No --> E_ErrorCargoNotFound
the database"}:::decision N_ErrorCargoNotFound_Node0_action["The system should generate a cargo
not found error and terminate the
bond clearing process"]:::exclusion N_ErrorCargoNotFound_Node0 -- Yes -->|Alternative| N_ErrorCargoNotFound_Node0_action N_ErrorCargoNotFound_Node0_action --> E_ErrorCargoNotFound S_ErrorCargoNotFound --> N_ErrorCargoNotFound_Node0 N_ErrorCargoNotFound_Node0 -- No --> E_ErrorCargoNotFound
File: GCX016.cbl
GIVEN:
A request to clear bond information for a specific cargo
WHEN:
The cargo record cannot be found in the database
THEN:
- The system should generate a cargo not found error
- Terminate the bond clearing process
β Consolidated Acceptance Criteria
- The system checks the X4-04 entry number field → if entry number is not present, skip entry processing and continue to next segment
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_EntryNumberPresent(["Start Step"])
E_EntryNumberPresent(["End Step"])
N_EntryNumberPresent_Node0{"The system checks the X4-04 entry
number field"}:::decision N_EntryNumberPresent_Node0_action["If entry number is not present,
skip entry processing and continue
to next segment"]:::main N_EntryNumberPresent_Node0 -- Yes --> N_EntryNumberPresent_Node0_action N_EntryNumberPresent_Node0_action --> E_EntryNumberPresent S_EntryNumberPresent --> N_EntryNumberPresent_Node0 N_EntryNumberPresent_Node0 -- No --> E_EntryNumberPresent
number field"}:::decision N_EntryNumberPresent_Node0_action["If entry number is not present,
skip entry processing and continue
to next segment"]:::main N_EntryNumberPresent_Node0 -- Yes --> N_EntryNumberPresent_Node0_action N_EntryNumberPresent_Node0_action --> E_EntryNumberPresent S_EntryNumberPresent --> N_EntryNumberPresent_Node0 N_EntryNumberPresent_Node0 -- No --> E_EntryNumberPresent
File: GCX016.cbl
GIVEN:
An X4 segment is being processed for customs release
WHEN:
The system checks the X4-04 entry number field
THEN:
- If entry number is not present, skip entry processing
- Continue to next segment
β Consolidated Acceptance Criteria
- The system validates the entry number format → if entry number format is invalid, generate entry validation error and skip processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_EntryNumberValid(["Start Step"])
E_EntryNumberValid(["End Step"])
N_EntryNumberValid_Node0{"The system validates the entry
number format"}:::decision N_EntryNumberValid_Node0_action["If entry number format is invalid,
generate entry validation error and
skip processing"]:::main N_EntryNumberValid_Node0 -- Yes --> N_EntryNumberValid_Node0_action N_EntryNumberValid_Node0_action --> E_EntryNumberValid S_EntryNumberValid --> N_EntryNumberValid_Node0 N_EntryNumberValid_Node0 -- No --> E_EntryNumberValid
number format"}:::decision N_EntryNumberValid_Node0_action["If entry number format is invalid,
generate entry validation error and
skip processing"]:::main N_EntryNumberValid_Node0 -- Yes --> N_EntryNumberValid_Node0_action N_EntryNumberValid_Node0_action --> E_EntryNumberValid S_EntryNumberValid --> N_EntryNumberValid_Node0 N_EntryNumberValid_Node0 -- No --> E_EntryNumberValid
File: GCX016.cbl
GIVEN:
An entry number is present in X4-04 field
WHEN:
The system validates the entry number format
THEN:
- If entry number format is invalid, generate entry validation error
- Skip processing
β Consolidated Acceptance Criteria
- The entry type is V37 → apply V37 special processing rules and set V37 entry flag
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_EntryTypeV37(["Start Step"])
E_EntryTypeV37(["End Step"])
N_EntryTypeV37_Node0{"The entry type is V37"}:::decision
N_EntryTypeV37_Node0_action["Apply V37 special processing rules
and set V37 entry flag"]:::main N_EntryTypeV37_Node0 -- Yes --> N_EntryTypeV37_Node0_action N_EntryTypeV37_Node0_action --> E_EntryTypeV37 S_EntryTypeV37 --> N_EntryTypeV37_Node0 N_EntryTypeV37_Node0 -- No --> E_EntryTypeV37
and set V37 entry flag"]:::main N_EntryTypeV37_Node0 -- Yes --> N_EntryTypeV37_Node0_action N_EntryTypeV37_Node0_action --> E_EntryTypeV37 S_EntryTypeV37 --> N_EntryTypeV37_Node0 N_EntryTypeV37_Node0 -- No --> E_EntryTypeV37
File: GCX016.cbl
GIVEN:
A valid entry number is present and entry type is determined
WHEN:
The entry type is V37
THEN:
- Apply v37 special processing rules
- Set v37 entry flag
β Consolidated Acceptance Criteria
- V37 special processing rules are applied → set V37 entry flag to indicate special handling required
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetV37EntryFlag(["Start Step"])
E_SetV37EntryFlag(["End Step"])
N_SetV37EntryFlag_Node0{"V37 special processing rules are
applied"}:::decision N_SetV37EntryFlag_Node0_action["Set V37 entry flag to indicate
special handling required"]:::main N_SetV37EntryFlag_Node0 -- Yes --> N_SetV37EntryFlag_Node0_action N_SetV37EntryFlag_Node0_action --> E_SetV37EntryFlag S_SetV37EntryFlag --> N_SetV37EntryFlag_Node0 N_SetV37EntryFlag_Node0 -- No --> E_SetV37EntryFlag
applied"}:::decision N_SetV37EntryFlag_Node0_action["Set V37 entry flag to indicate
special handling required"]:::main N_SetV37EntryFlag_Node0 -- Yes --> N_SetV37EntryFlag_Node0_action N_SetV37EntryFlag_Node0_action --> E_SetV37EntryFlag S_SetV37EntryFlag --> N_SetV37EntryFlag_Node0 N_SetV37EntryFlag_Node0 -- No --> E_SetV37EntryFlag
File: GCX016.cbl
GIVEN:
Entry type has been identified as V37
WHEN:
V37 special processing rules are applied
THEN:
Set V37 entry flag to indicate special handling required
β Consolidated Acceptance Criteria
- The system validates entry number length → if length is invalid, generate entry validation error and skip processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LengthValid(["Start Step"])
E_LengthValid(["End Step"])
N_LengthValid_Node0{"The system validates entry number
length"}:::decision N_LengthValid_Node0_action["If length is invalid, generate
entry validation error and skip
processing"]:::main N_LengthValid_Node0 -- Yes --> N_LengthValid_Node0_action N_LengthValid_Node0_action --> E_LengthValid S_LengthValid --> N_LengthValid_Node0 N_LengthValid_Node0 -- No --> E_LengthValid
length"}:::decision N_LengthValid_Node0_action["If length is invalid, generate
entry validation error and skip
processing"]:::main N_LengthValid_Node0 -- Yes --> N_LengthValid_Node0_action N_LengthValid_Node0_action --> E_LengthValid S_LengthValid --> N_LengthValid_Node0 N_LengthValid_Node0 -- No --> E_LengthValid
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
Entry number is valid format and entry type is not V37
WHEN:
The system validates entry number length
THEN:
- If length is invalid, generate entry validation error
- Skip processing
β Consolidated Acceptance Criteria
- The system validates entry number characters → if characters are invalid, generate entry validation error and skip processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CharactersValid(["Start Step"])
E_CharactersValid(["End Step"])
N_CharactersValid_Node0{"The system validates entry number
characters"}:::decision N_CharactersValid_Node0_action["If characters are invalid, generate
entry validation error and skip
processing"]:::main N_CharactersValid_Node0 -- Yes --> N_CharactersValid_Node0_action N_CharactersValid_Node0_action --> E_CharactersValid S_CharactersValid --> N_CharactersValid_Node0 N_CharactersValid_Node0 -- No --> E_CharactersValid
characters"}:::decision N_CharactersValid_Node0_action["If characters are invalid, generate
entry validation error and skip
processing"]:::main N_CharactersValid_Node0 -- Yes --> N_CharactersValid_Node0_action N_CharactersValid_Node0_action --> E_CharactersValid S_CharactersValid --> N_CharactersValid_Node0 N_CharactersValid_Node0 -- No --> E_CharactersValid
File: GCX016.cbl
GIVEN:
Entry number has valid length
WHEN:
The system validates entry number characters
THEN:
- If characters are invalid, generate entry validation error
- Skip processing
β Consolidated Acceptance Criteria
- All format, length, and character validations are successful → mark entry as valid and continue to disposition code processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MarkEntryasValid(["Start Step"])
E_MarkEntryasValid(["End Step"])
N_MarkEntryasValid_Node0{"All format, length, and character
validations are successful"}:::decision N_MarkEntryasValid_Node0_action["Mark entry as valid and continue to
disposition code processing"]:::main N_MarkEntryasValid_Node0 -- Yes --> N_MarkEntryasValid_Node0_action N_MarkEntryasValid_Node0_action --> E_MarkEntryasValid S_MarkEntryasValid --> N_MarkEntryasValid_Node0 N_MarkEntryasValid_Node0 -- No --> E_MarkEntryasValid
validations are successful"}:::decision N_MarkEntryasValid_Node0_action["Mark entry as valid and continue to
disposition code processing"]:::main N_MarkEntryasValid_Node0 -- Yes --> N_MarkEntryasValid_Node0_action N_MarkEntryasValid_Node0_action --> E_MarkEntryasValid S_MarkEntryasValid --> N_MarkEntryasValid_Node0 N_MarkEntryasValid_Node0 -- No --> E_MarkEntryasValid
File: GCX016.cbl
GIVEN:
Entry number passes all validation checks
WHEN:
All format, length, and character validations are successful
THEN:
- Mark entry as valid
- Continue to disposition code processing
β Consolidated Acceptance Criteria
- Format, length, or character validation fails → generate entry validation error message and log the issue
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GenerateEntryValidationError(["Start Step"])
E_GenerateEntryValidationError(["End Step"])
N_GenerateEntryValidationError_Node0{"Format, length, or character
validation fails"}:::decision N_GenerateEntryValidationError_Node0_action["Generate entry validation error
message and log the issue"]:::main N_GenerateEntryValidationError_Node0 -- Yes --> N_GenerateEntryValidationError_Node0_action N_GenerateEntryValidationError_Node0_action --> E_GenerateEntryValidationError S_GenerateEntryValidationError --> N_GenerateEntryValidationError_Node0 N_GenerateEntryValidationError_Node0 -- No --> E_GenerateEntryValidationError
validation fails"}:::decision N_GenerateEntryValidationError_Node0_action["Generate entry validation error
message and log the issue"]:::main N_GenerateEntryValidationError_Node0 -- Yes --> N_GenerateEntryValidationError_Node0_action N_GenerateEntryValidationError_Node0_action --> E_GenerateEntryValidationError S_GenerateEntryValidationError --> N_GenerateEntryValidationError_Node0 N_GenerateEntryValidationError_Node0 -- No --> E_GenerateEntryValidationError
File: GCX016.cbl
GIVEN:
Entry number fails any validation check
WHEN:
Format, length, or character validation fails
THEN:
- Generate entry validation error message
- Log the issue
β Consolidated Acceptance Criteria
- The system processes the validation failure → log the entry number issue with details for audit trail
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogEntryNumberIssue(["Start Step"])
E_LogEntryNumberIssue(["End Step"])
N_LogEntryNumberIssue_Node0{"The system processes the validation
failure"}:::decision N_LogEntryNumberIssue_Node0_action["Log the entry number issue with
details for audit trail"]:::main N_LogEntryNumberIssue_Node0 -- Yes --> N_LogEntryNumberIssue_Node0_action N_LogEntryNumberIssue_Node0_action --> E_LogEntryNumberIssue S_LogEntryNumberIssue --> N_LogEntryNumberIssue_Node0 N_LogEntryNumberIssue_Node0 -- No --> E_LogEntryNumberIssue
failure"}:::decision N_LogEntryNumberIssue_Node0_action["Log the entry number issue with
details for audit trail"]:::main N_LogEntryNumberIssue_Node0 -- Yes --> N_LogEntryNumberIssue_Node0_action N_LogEntryNumberIssue_Node0_action --> E_LogEntryNumberIssue S_LogEntryNumberIssue --> N_LogEntryNumberIssue_Node0 N_LogEntryNumberIssue_Node0 -- No --> E_LogEntryNumberIssue
File: GCX016.cbl
GIVEN:
An entry validation error has been generated
WHEN:
The system processes the validation failure
THEN:
Log the entry number issue with details for audit trail
β Consolidated Acceptance Criteria
- If entry type code availability → if entry type code is present, proceed to in-bond broker processing, otherwise complete processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_EntryTypeCodePresent(["Start Step"])
E_EntryTypeCodePresent(["End Step"])
N_EntryTypeCodePresent_Node0{"The system evaluates entry type
code availability"}:::decision N_EntryTypeCodePresent_Node0_action["If entry type code is present,
proceed to in-bond broker
processing, otherwise complete
processing"]:::main N_EntryTypeCodePresent_Node0 -- Yes --> N_EntryTypeCodePresent_Node0_action N_EntryTypeCodePresent_Node0_action --> E_EntryTypeCodePresent S_EntryTypeCodePresent --> N_EntryTypeCodePresent_Node0 N_EntryTypeCodePresent_Node0 -- No --> E_EntryTypeCodePresent
code availability"}:::decision N_EntryTypeCodePresent_Node0_action["If entry type code is present,
proceed to in-bond broker
processing, otherwise complete
processing"]:::main N_EntryTypeCodePresent_Node0 -- Yes --> N_EntryTypeCodePresent_Node0_action N_EntryTypeCodePresent_Node0_action --> E_EntryTypeCodePresent S_EntryTypeCodePresent --> N_EntryTypeCodePresent_Node0 N_EntryTypeCodePresent_Node0 -- No --> E_EntryTypeCodePresent
File: GCX016.cbl
GIVEN:
Entry number validation has been completed
WHEN:
The system evaluates entry type code availability
THEN:
If entry type code is present, proceed to in-bond broker processing, otherwise complete processing
β Consolidated Acceptance Criteria
- The entry number requires V37 special handling → apply V37-specific processing rules and continue to in-bond type code processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_HandleV37EntrySpecially(["Start Step"])
E_HandleV37EntrySpecially(["End Step"])
N_HandleV37EntrySpecially_Node0{"The entry number requires V37
special handling"}:::decision N_HandleV37EntrySpecially_Node0_action["Apply V37-specific processing rules
and continue to in-bond type code
processing"]:::main N_HandleV37EntrySpecially_Node0 -- Yes --> N_HandleV37EntrySpecially_Node0_action N_HandleV37EntrySpecially_Node0_action --> E_HandleV37EntrySpecially S_HandleV37EntrySpecially --> N_HandleV37EntrySpecially_Node0 N_HandleV37EntrySpecially_Node0 -- No --> E_HandleV37EntrySpecially
special handling"}:::decision N_HandleV37EntrySpecially_Node0_action["Apply V37-specific processing rules
and continue to in-bond type code
processing"]:::main N_HandleV37EntrySpecially_Node0 -- Yes --> N_HandleV37EntrySpecially_Node0_action N_HandleV37EntrySpecially_Node0_action --> E_HandleV37EntrySpecially S_HandleV37EntrySpecially --> N_HandleV37EntrySpecially_Node0 N_HandleV37EntrySpecially_Node0 -- No --> E_HandleV37EntrySpecially
File: GCX016.cbl
GIVEN:
An entry number with invalid standard format is identified
WHEN:
The entry number requires V37 special handling
THEN:
- Apply v37-specific processing rules
- Continue to in-bond type code processing
β Consolidated Acceptance Criteria
- If if in-bond type code processing is needed → if required, perform SNP processing to convert EDI to internal codes, otherwise check for border entry type 00
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_InBondTypeCodeProcessing(["Start Step"])
E_InBondTypeCodeProcessing(["End Step"])
N_InBondTypeCodeProcessing_Node0{"The system evaluates if in-bond
type code processing is needed"}:::decision N_InBondTypeCodeProcessing_Node0_action["If required, perform SNP processing
to convert EDI to internal codes,
otherwise check for border entry
type 00"]:::main N_InBondTypeCodeProcessing_Node0 -- Yes --> N_InBondTypeCodeProcessing_Node0_action N_InBondTypeCodeProcessing_Node0_action --> E_InBondTypeCodeProcessing S_InBondTypeCodeProcessing --> N_InBondTypeCodeProcessing_Node0 N_InBondTypeCodeProcessing_Node0 -- No --> E_InBondTypeCodeProcessing
type code processing is needed"}:::decision N_InBondTypeCodeProcessing_Node0_action["If required, perform SNP processing
to convert EDI to internal codes,
otherwise check for border entry
type 00"]:::main N_InBondTypeCodeProcessing_Node0 -- Yes --> N_InBondTypeCodeProcessing_Node0_action N_InBondTypeCodeProcessing_Node0_action --> E_InBondTypeCodeProcessing S_InBondTypeCodeProcessing --> N_InBondTypeCodeProcessing_Node0 N_InBondTypeCodeProcessing_Node0 -- No --> E_InBondTypeCodeProcessing
File: GCX016.cbl
GIVEN:
Entry number format validation is complete
WHEN:
The system evaluates if in-bond type code processing is needed
THEN:
If required, perform SNP processing to convert EDI to internal codes, otherwise check for border entry type 00
β Consolidated Acceptance Criteria
- SNP processing is initiated for code conversion → convert EDI codes to internal system codes and proceed to border entry type evaluation
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SNPProcessingConvertEDItoInternalCodes(["Start Step"])
E_SNPProcessingConvertEDItoInternalCodes(["End Step"])
N_SNPProcessingConvertEDItoInternalCodes_Node0{"SNP processing is initiated for
code conversion"}:::decision N_SNPProcessingConvertEDItoInternalCodes_Node0_action["Convert EDI codes to internal
system codes and proceed to border
entry type evaluation"]:::main N_SNPProcessingConvertEDItoInternalCodes_Node0 -- Yes --> N_SNPProcessingConvertEDItoInternalCodes_Node0_action N_SNPProcessingConvertEDItoInternalCodes_Node0_action --> E_SNPProcessingConvertEDItoInternalCodes S_SNPProcessingConvertEDItoInternalCodes --> N_SNPProcessingConvertEDItoInternalCodes_Node0 N_SNPProcessingConvertEDItoInternalCodes_Node0 -- No --> E_SNPProcessingConvertEDItoInternalCodes
code conversion"}:::decision N_SNPProcessingConvertEDItoInternalCodes_Node0_action["Convert EDI codes to internal
system codes and proceed to border
entry type evaluation"]:::main N_SNPProcessingConvertEDItoInternalCodes_Node0 -- Yes --> N_SNPProcessingConvertEDItoInternalCodes_Node0_action N_SNPProcessingConvertEDItoInternalCodes_Node0_action --> E_SNPProcessingConvertEDItoInternalCodes S_SNPProcessingConvertEDItoInternalCodes --> N_SNPProcessingConvertEDItoInternalCodes_Node0 N_SNPProcessingConvertEDItoInternalCodes_Node0 -- No --> E_SNPProcessingConvertEDItoInternalCodes
File: GCX016.cbl
GIVEN:
In-bond type code processing is required
WHEN:
SNP processing is initiated for code conversion
THEN:
- Convert edi codes to internal system codes
- Proceed to border entry type evaluation
β Consolidated Acceptance Criteria
- The system checks if entry type is border entry type 00 → if entry type is 00, proceed to border entry handling, otherwise check for master in-bond entry
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_BorderEntryType00(["Start Step"])
E_BorderEntryType00(["End Step"])
N_BorderEntryType00_Node0{"The system checks if entry type is
border entry type 00"}:::decision N_BorderEntryType00_Node0_action["If entry type is 00, proceed to
border entry handling, otherwise
check for master in-bond entry"]:::main N_BorderEntryType00_Node0 -- Yes --> N_BorderEntryType00_Node0_action N_BorderEntryType00_Node0_action --> E_BorderEntryType00 S_BorderEntryType00 --> N_BorderEntryType00_Node0 N_BorderEntryType00_Node0 -- No --> E_BorderEntryType00
border entry type 00"}:::decision N_BorderEntryType00_Node0_action["If entry type is 00, proceed to
border entry handling, otherwise
check for master in-bond entry"]:::main N_BorderEntryType00_Node0 -- Yes --> N_BorderEntryType00_Node0_action N_BorderEntryType00_Node0_action --> E_BorderEntryType00 S_BorderEntryType00 --> N_BorderEntryType00_Node0 N_BorderEntryType00_Node0 -- No --> E_BorderEntryType00
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
Code conversion processing is complete or not required
WHEN:
The system checks if entry type is border entry type 00
THEN:
If entry type is 00, proceed to border entry handling, otherwise check for master in-bond entry
β Consolidated Acceptance Criteria
- Border entry handling is initiated → clear bond control numbers and clear broker entry numbers, then proceed to Canadian border processing check
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_BorderEntryHandling(["Start Step"])
E_BorderEntryHandling(["End Step"])
N_BorderEntryHandling_Node0{"Border entry handling is initiated"}:::decision
N_BorderEntryHandling_Node0_action["Clear bond control numbers and
clear broker entry numbers, then
proceed to Canadian border
processing check"]:::main N_BorderEntryHandling_Node0 -- Yes --> N_BorderEntryHandling_Node0_action N_BorderEntryHandling_Node0_action --> E_BorderEntryHandling S_BorderEntryHandling --> N_BorderEntryHandling_Node0 N_BorderEntryHandling_Node0 -- No --> E_BorderEntryHandling
clear broker entry numbers, then
proceed to Canadian border
processing check"]:::main N_BorderEntryHandling_Node0 -- Yes --> N_BorderEntryHandling_Node0_action N_BorderEntryHandling_Node0_action --> E_BorderEntryHandling S_BorderEntryHandling --> N_BorderEntryHandling_Node0 N_BorderEntryHandling_Node0 -- No --> E_BorderEntryHandling
File: GCX016.cbl
GIVEN:
Entry type is identified as border entry type 00
WHEN:
Border entry handling is initiated
THEN:
- Clear bond control numbers
- Clear broker entry numbers, then proceed to canadian border processing check
β Consolidated Acceptance Criteria
- If if entry is a master in-bond entry → if master in-bond entry, proceed to master in-bond processing, otherwise check for Canadian border processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MasterInBondEntry(["Start Step"])
E_MasterInBondEntry(["End Step"])
N_MasterInBondEntry_Node0{"The system evaluates if entry is a
master in-bond entry"}:::decision N_MasterInBondEntry_Node0_action["If master in-bond entry, proceed to
master in-bond processing, otherwise
check for Canadian border processing"]:::main N_MasterInBondEntry_Node0 -- Yes --> N_MasterInBondEntry_Node0_action N_MasterInBondEntry_Node0_action --> E_MasterInBondEntry S_MasterInBondEntry --> N_MasterInBondEntry_Node0 N_MasterInBondEntry_Node0 -- No --> E_MasterInBondEntry
master in-bond entry"}:::decision N_MasterInBondEntry_Node0_action["If master in-bond entry, proceed to
master in-bond processing, otherwise
check for Canadian border processing"]:::main N_MasterInBondEntry_Node0 -- Yes --> N_MasterInBondEntry_Node0_action N_MasterInBondEntry_Node0_action --> E_MasterInBondEntry S_MasterInBondEntry --> N_MasterInBondEntry_Node0 N_MasterInBondEntry_Node0 -- No --> E_MasterInBondEntry
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
Entry is not border entry type 00
WHEN:
The system evaluates if entry is a master in-bond entry
THEN:
If master in-bond entry, proceed to master in-bond processing, otherwise check for Canadian border processing
β Consolidated Acceptance Criteria
- Master in-bond processing is initiated → process entry types 61, 62, 63, and 69 with their specific requirements and proceed to Canadian border processing check
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MasterInBondProcessing(["Start Step"])
E_MasterInBondProcessing(["End Step"])
N_MasterInBondProcessing_Node0{"Master in-bond processing is
initiated"}:::decision N_MasterInBondProcessing_Node0_action["Process entry types 61, 62, 63, and
69 with their specific requirements
and proceed to Canadian border
processing check"]:::main N_MasterInBondProcessing_Node0 -- Yes --> N_MasterInBondProcessing_Node0_action N_MasterInBondProcessing_Node0_action --> E_MasterInBondProcessing S_MasterInBondProcessing --> N_MasterInBondProcessing_Node0 N_MasterInBondProcessing_Node0 -- No --> E_MasterInBondProcessing
initiated"}:::decision N_MasterInBondProcessing_Node0_action["Process entry types 61, 62, 63, and
69 with their specific requirements
and proceed to Canadian border
processing check"]:::main N_MasterInBondProcessing_Node0 -- Yes --> N_MasterInBondProcessing_Node0_action N_MasterInBondProcessing_Node0_action --> E_MasterInBondProcessing S_MasterInBondProcessing --> N_MasterInBondProcessing_Node0 N_MasterInBondProcessing_Node0 -- No --> E_MasterInBondProcessing
File: GCX016.cbl
GIVEN:
Entry is identified as master in-bond entry
WHEN:
Master in-bond processing is initiated
THEN:
- Process entry types 61, 62, 63, and 69 with their specific requirements
- Proceed to canadian border processing check
β Consolidated Acceptance Criteria
- Entry types 61, 62, 63, or 69 are encountered → apply type-specific processing rules: 61 for immediate transport, 62 for transport export, 63 for immediate export, 69 for US-Canada-US movement
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ProcessEntryTypes61626369(["Start Step"])
E_ProcessEntryTypes61626369(["End Step"])
N_ProcessEntryTypes61626369_Node0{"Entry types 61, 62, 63, or 69 are
encountered"}:::decision N_ProcessEntryTypes61626369_Node0_action["Apply type-specific processing
rules: 61 for immediate transport,
62 for transport export, 63 for
immediate export, 69 for
US-Canada-US movement"]:::main N_ProcessEntryTypes61626369_Node0 -- Yes --> N_ProcessEntryTypes61626369_Node0_action N_ProcessEntryTypes61626369_Node0_action --> E_ProcessEntryTypes61626369 S_ProcessEntryTypes61626369 --> N_ProcessEntryTypes61626369_Node0 N_ProcessEntryTypes61626369_Node0 -- No --> E_ProcessEntryTypes61626369
encountered"}:::decision N_ProcessEntryTypes61626369_Node0_action["Apply type-specific processing
rules: 61 for immediate transport,
62 for transport export, 63 for
immediate export, 69 for
US-Canada-US movement"]:::main N_ProcessEntryTypes61626369_Node0 -- Yes --> N_ProcessEntryTypes61626369_Node0_action N_ProcessEntryTypes61626369_Node0_action --> E_ProcessEntryTypes61626369 S_ProcessEntryTypes61626369 --> N_ProcessEntryTypes61626369_Node0 N_ProcessEntryTypes61626369_Node0 -- No --> E_ProcessEntryTypes61626369
File: GCX016.cbl
GIVEN:
Master in-bond processing is active
WHEN:
Entry types 61, 62, 63, or 69 are encountered
THEN:
Apply type-specific processing rules: 61 for immediate transport, 62 for transport export, 63 for immediate export, 69 for US-Canada-US movement
β Consolidated Acceptance Criteria
- Bond control number clearing is required → remove all existing bond control numbers from the cargo record
- The system processes bond information clearing → all bond control number fields are set to blank or null values
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ClearBondControlNumbers(["Start Step"])
E_ClearBondControlNumbers(["End Step"])
N_ClearBondControlNumbers_Node0{"Bond control number clearing is
required"}:::decision N_ClearBondControlNumbers_Node0_action["Remove all existing bond control
numbers from the cargo record"]:::main N_ClearBondControlNumbers_Node0 -- Yes --> N_ClearBondControlNumbers_Node0_action N_ClearBondControlNumbers_Node0_action --> E_ClearBondControlNumbers S_ClearBondControlNumbers --> N_ClearBondControlNumbers_Node0 N_ClearBondControlNumbers_Node1{"The system processes bond
information clearing"}:::decision N_ClearBondControlNumbers_Node1_action["All bond control number fields are
set to blank or null values"]:::main N_ClearBondControlNumbers_Node1 -- Yes --> N_ClearBondControlNumbers_Node1_action N_ClearBondControlNumbers_Node1_action --> E_ClearBondControlNumbers N_ClearBondControlNumbers_Node0 -- No --> N_ClearBondControlNumbers_Node1 N_ClearBondControlNumbers_Node1 -- No --> E_ClearBondControlNumbers
required"}:::decision N_ClearBondControlNumbers_Node0_action["Remove all existing bond control
numbers from the cargo record"]:::main N_ClearBondControlNumbers_Node0 -- Yes --> N_ClearBondControlNumbers_Node0_action N_ClearBondControlNumbers_Node0_action --> E_ClearBondControlNumbers S_ClearBondControlNumbers --> N_ClearBondControlNumbers_Node0 N_ClearBondControlNumbers_Node1{"The system processes bond
information clearing"}:::decision N_ClearBondControlNumbers_Node1_action["All bond control number fields are
set to blank or null values"]:::main N_ClearBondControlNumbers_Node1 -- Yes --> N_ClearBondControlNumbers_Node1_action N_ClearBondControlNumbers_Node1_action --> E_ClearBondControlNumbers N_ClearBondControlNumbers_Node0 -- No --> N_ClearBondControlNumbers_Node1 N_ClearBondControlNumbers_Node1 -- No --> E_ClearBondControlNumbers
File: GCX016.cbl
GIVEN:
Border entry type 00 is being processed
WHEN:
Bond control number clearing is required
THEN:
Remove all existing bond control numbers from the cargo record
File: GCX016.cbl
GIVEN:
A border entry cargo record with existing bond control numbers
WHEN:
The system processes bond information clearing
THEN:
All bond control number fields are set to blank or null values
β Consolidated Acceptance Criteria
- Broker entry number clearing is required → remove all existing broker entry numbers from the cargo record
- The system clears bond-related information → all broker entry number fields are cleared from the cargo record
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ClearBrokerEntryNumbers(["Start Step"])
E_ClearBrokerEntryNumbers(["End Step"])
N_ClearBrokerEntryNumbers_Node0{"Broker entry number clearing is
required"}:::decision N_ClearBrokerEntryNumbers_Node0_action["Remove all existing broker entry
numbers from the cargo record"]:::main N_ClearBrokerEntryNumbers_Node0 -- Yes --> N_ClearBrokerEntryNumbers_Node0_action N_ClearBrokerEntryNumbers_Node0_action --> E_ClearBrokerEntryNumbers S_ClearBrokerEntryNumbers --> N_ClearBrokerEntryNumbers_Node0 N_ClearBrokerEntryNumbers_Node1{"The system clears bond-related
information"}:::decision N_ClearBrokerEntryNumbers_Node1_action["All broker entry number fields are
cleared from the cargo record"]:::main N_ClearBrokerEntryNumbers_Node1 -- Yes --> N_ClearBrokerEntryNumbers_Node1_action N_ClearBrokerEntryNumbers_Node1_action --> E_ClearBrokerEntryNumbers N_ClearBrokerEntryNumbers_Node0 -- No --> N_ClearBrokerEntryNumbers_Node1 N_ClearBrokerEntryNumbers_Node1 -- No --> E_ClearBrokerEntryNumbers
required"}:::decision N_ClearBrokerEntryNumbers_Node0_action["Remove all existing broker entry
numbers from the cargo record"]:::main N_ClearBrokerEntryNumbers_Node0 -- Yes --> N_ClearBrokerEntryNumbers_Node0_action N_ClearBrokerEntryNumbers_Node0_action --> E_ClearBrokerEntryNumbers S_ClearBrokerEntryNumbers --> N_ClearBrokerEntryNumbers_Node0 N_ClearBrokerEntryNumbers_Node1{"The system clears bond-related
information"}:::decision N_ClearBrokerEntryNumbers_Node1_action["All broker entry number fields are
cleared from the cargo record"]:::main N_ClearBrokerEntryNumbers_Node1 -- Yes --> N_ClearBrokerEntryNumbers_Node1_action N_ClearBrokerEntryNumbers_Node1_action --> E_ClearBrokerEntryNumbers N_ClearBrokerEntryNumbers_Node0 -- No --> N_ClearBrokerEntryNumbers_Node1 N_ClearBrokerEntryNumbers_Node1 -- No --> E_ClearBrokerEntryNumbers
File: GCX016.cbl
GIVEN:
Border entry type 00 is being processed
WHEN:
Broker entry number clearing is required
THEN:
Remove all existing broker entry numbers from the cargo record
File: GCX016.cbl
GIVEN:
A border entry cargo record with existing broker entry numbers
WHEN:
The system clears bond-related information
THEN:
All broker entry number fields are cleared from the cargo record
β Consolidated Acceptance Criteria
- If Canadian border processing requirements → if Canadian border processing is required, proceed to Canadian border processing, otherwise proceed to broker vs QP bond processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CanadianBorderProcessing(["Start Step"])
E_CanadianBorderProcessing(["End Step"])
N_CanadianBorderProcessing_Node0{"The system evaluates Canadian
border processing requirements"}:::decision N_CanadianBorderProcessing_Node0_action["If Canadian border processing is
required, proceed to Canadian border
processing, otherwise proceed to
broker vs QP bond processing"]:::main N_CanadianBorderProcessing_Node0 -- Yes --> N_CanadianBorderProcessing_Node0_action N_CanadianBorderProcessing_Node0_action --> E_CanadianBorderProcessing S_CanadianBorderProcessing --> N_CanadianBorderProcessing_Node0 N_CanadianBorderProcessing_Node0 -- No --> E_CanadianBorderProcessing
border processing requirements"}:::decision N_CanadianBorderProcessing_Node0_action["If Canadian border processing is
required, proceed to Canadian border
processing, otherwise proceed to
broker vs QP bond processing"]:::main N_CanadianBorderProcessing_Node0 -- Yes --> N_CanadianBorderProcessing_Node0_action N_CanadianBorderProcessing_Node0_action --> E_CanadianBorderProcessing S_CanadianBorderProcessing --> N_CanadianBorderProcessing_Node0 N_CanadianBorderProcessing_Node0 -- No --> E_CanadianBorderProcessing
File: GCX016.cbl
GIVEN:
Border entry handling or master in-bond processing is complete
WHEN:
The system evaluates Canadian border processing requirements
THEN:
If Canadian border processing is required, proceed to Canadian border processing, otherwise proceed to broker vs QP bond processing
β Consolidated Acceptance Criteria
- Canadian border processing is initiated → map US port codes to Canadian names and proceed to broker vs QP bond processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CanadianBorderProcessing(["Start Step"])
E_CanadianBorderProcessing(["End Step"])
N_CanadianBorderProcessing_Node0{"Canadian border processing is
initiated"}:::decision N_CanadianBorderProcessing_Node0_action["Map US port codes to Canadian names
and proceed to broker vs QP bond
processing"]:::main N_CanadianBorderProcessing_Node0 -- Yes --> N_CanadianBorderProcessing_Node0_action N_CanadianBorderProcessing_Node0_action --> E_CanadianBorderProcessing S_CanadianBorderProcessing --> N_CanadianBorderProcessing_Node0 N_CanadianBorderProcessing_Node0 -- No --> E_CanadianBorderProcessing
initiated"}:::decision N_CanadianBorderProcessing_Node0_action["Map US port codes to Canadian names
and proceed to broker vs QP bond
processing"]:::main N_CanadianBorderProcessing_Node0 -- Yes --> N_CanadianBorderProcessing_Node0_action N_CanadianBorderProcessing_Node0_action --> E_CanadianBorderProcessing S_CanadianBorderProcessing --> N_CanadianBorderProcessing_Node0 N_CanadianBorderProcessing_Node0 -- No --> E_CanadianBorderProcessing
File: GCX016.cbl
GIVEN:
Canadian border processing is required
WHEN:
Canadian border processing is initiated
THEN:
- Map us port codes to canadian names
- Proceed to broker vs qp bond processing
β Consolidated Acceptance Criteria
- US port codes need to be mapped to Canadian equivalents → apply port code mapping rules to convert US codes to Canadian port names
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MapUSPortCodestoCanadianNames(["Start Step"])
E_MapUSPortCodestoCanadianNames(["End Step"])
N_MapUSPortCodestoCanadianNames_Node0{"US port codes need to be mapped to
Canadian equivalents"}:::decision N_MapUSPortCodestoCanadianNames_Node0_action["Apply port code mapping rules to
convert US codes to Canadian port
names"]:::main N_MapUSPortCodestoCanadianNames_Node0 -- Yes --> N_MapUSPortCodestoCanadianNames_Node0_action N_MapUSPortCodestoCanadianNames_Node0_action --> E_MapUSPortCodestoCanadianNames S_MapUSPortCodestoCanadianNames --> N_MapUSPortCodestoCanadianNames_Node0 N_MapUSPortCodestoCanadianNames_Node0 -- No --> E_MapUSPortCodestoCanadianNames
Canadian equivalents"}:::decision N_MapUSPortCodestoCanadianNames_Node0_action["Apply port code mapping rules to
convert US codes to Canadian port
names"]:::main N_MapUSPortCodestoCanadianNames_Node0 -- Yes --> N_MapUSPortCodestoCanadianNames_Node0_action N_MapUSPortCodestoCanadianNames_Node0_action --> E_MapUSPortCodestoCanadianNames S_MapUSPortCodestoCanadianNames --> N_MapUSPortCodestoCanadianNames_Node0 N_MapUSPortCodestoCanadianNames_Node0 -- No --> E_MapUSPortCodestoCanadianNames
File: GCX016.cbl
GIVEN:
Canadian border processing is active
WHEN:
US port codes need to be mapped to Canadian equivalents
THEN:
Apply port code mapping rules to convert US codes to Canadian port names
β Consolidated Acceptance Criteria
- The system determines bond type classification → if broker bond, process broker bond information; if QP bond, process QP bond information
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_BrokerBondorQPBond(["Start Step"])
E_BrokerBondorQPBond(["End Step"])
N_BrokerBondorQPBond_Node0{"The system determines bond type
classification"}:::decision N_BrokerBondorQPBond_Node0_action["If broker bond, process broker bond
information if QP bond, process QP
bond information"]:::main N_BrokerBondorQPBond_Node0 -- Yes --> N_BrokerBondorQPBond_Node0_action N_BrokerBondorQPBond_Node0_action --> E_BrokerBondorQPBond S_BrokerBondorQPBond --> N_BrokerBondorQPBond_Node0 N_BrokerBondorQPBond_Node0 -- No --> E_BrokerBondorQPBond
classification"}:::decision N_BrokerBondorQPBond_Node0_action["If broker bond, process broker bond
information if QP bond, process QP
bond information"]:::main N_BrokerBondorQPBond_Node0 -- Yes --> N_BrokerBondorQPBond_Node0_action N_BrokerBondorQPBond_Node0_action --> E_BrokerBondorQPBond S_BrokerBondorQPBond --> N_BrokerBondorQPBond_Node0 N_BrokerBondorQPBond_Node0 -- No --> E_BrokerBondorQPBond
File: GCX016.cbl
GIVEN:
Broker vs QP bond processing evaluation is initiated
WHEN:
The system determines bond type classification
THEN:
If broker bond, process broker bond information; if QP bond, process QP bond information
β Consolidated Acceptance Criteria
- Broker bond information processing is initiated → process broker-specific bond information, validate broker details, and update cargo with entry information
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ProcessBrokerBondInformation(["Start Step"])
E_ProcessBrokerBondInformation(["End Step"])
N_ProcessBrokerBondInformation_Node0{"Broker bond information processing
is initiated"}:::decision N_ProcessBrokerBondInformation_Node0_action["Process broker-specific bond
information, validate broker
details, and update cargo with entry
information"]:::main N_ProcessBrokerBondInformation_Node0 -- Yes --> N_ProcessBrokerBondInformation_Node0_action N_ProcessBrokerBondInformation_Node0_action --> E_ProcessBrokerBondInformation S_ProcessBrokerBondInformation --> N_ProcessBrokerBondInformation_Node0 N_ProcessBrokerBondInformation_Node0 -- No --> E_ProcessBrokerBondInformation
is initiated"}:::decision N_ProcessBrokerBondInformation_Node0_action["Process broker-specific bond
information, validate broker
details, and update cargo with entry
information"]:::main N_ProcessBrokerBondInformation_Node0 -- Yes --> N_ProcessBrokerBondInformation_Node0_action N_ProcessBrokerBondInformation_Node0_action --> E_ProcessBrokerBondInformation S_ProcessBrokerBondInformation --> N_ProcessBrokerBondInformation_Node0 N_ProcessBrokerBondInformation_Node0 -- No --> E_ProcessBrokerBondInformation
File: GCX016.cbl
GIVEN:
Bond is classified as broker bond
WHEN:
Broker bond information processing is initiated
THEN:
Process broker-specific bond information, validate broker details, and update cargo with entry information
β Consolidated Acceptance Criteria
- QP bond information processing is initiated → process QP-specific bond information, validate QP requirements, and update cargo with entry information
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ProcessQPBondInformation(["Start Step"])
E_ProcessQPBondInformation(["End Step"])
N_ProcessQPBondInformation_Node0{"QP bond information processing is
initiated"}:::decision N_ProcessQPBondInformation_Node0_action["Process QP-specific bond
information, validate QP
requirements, and update cargo with
entry information"]:::main N_ProcessQPBondInformation_Node0 -- Yes --> N_ProcessQPBondInformation_Node0_action N_ProcessQPBondInformation_Node0_action --> E_ProcessQPBondInformation S_ProcessQPBondInformation --> N_ProcessQPBondInformation_Node0 N_ProcessQPBondInformation_Node0 -- No --> E_ProcessQPBondInformation
initiated"}:::decision N_ProcessQPBondInformation_Node0_action["Process QP-specific bond
information, validate QP
requirements, and update cargo with
entry information"]:::main N_ProcessQPBondInformation_Node0 -- Yes --> N_ProcessQPBondInformation_Node0_action N_ProcessQPBondInformation_Node0_action --> E_ProcessQPBondInformation S_ProcessQPBondInformation --> N_ProcessQPBondInformation_Node0 N_ProcessQPBondInformation_Node0 -- No --> E_ProcessQPBondInformation
File: GCX016.cbl
GIVEN:
Bond is classified as QP bond
WHEN:
QP bond information processing is initiated
THEN:
Process QP-specific bond information, validate QP requirements, and update cargo with entry information
β Consolidated Acceptance Criteria
- Cargo entry information update is required → update cargo record with all processed entry information and complete in-bond broker processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UpdateCargowithEntryInformation(["Start Step"])
E_UpdateCargowithEntryInformation(["End Step"])
N_UpdateCargowithEntryInformation_Node0{"Cargo entry information update is
required"}:::decision N_UpdateCargowithEntryInformation_Node0_action["Update cargo record with all
processed entry information and
complete in-bond broker processing"]:::main N_UpdateCargowithEntryInformation_Node0 -- Yes --> N_UpdateCargowithEntryInformation_Node0_action N_UpdateCargowithEntryInformation_Node0_action --> E_UpdateCargowithEntryInformation S_UpdateCargowithEntryInformation --> N_UpdateCargowithEntryInformation_Node0 N_UpdateCargowithEntryInformation_Node0 -- No --> E_UpdateCargowithEntryInformation
required"}:::decision N_UpdateCargowithEntryInformation_Node0_action["Update cargo record with all
processed entry information and
complete in-bond broker processing"]:::main N_UpdateCargowithEntryInformation_Node0 -- Yes --> N_UpdateCargowithEntryInformation_Node0_action N_UpdateCargowithEntryInformation_Node0_action --> E_UpdateCargowithEntryInformation S_UpdateCargowithEntryInformation --> N_UpdateCargowithEntryInformation_Node0 N_UpdateCargowithEntryInformation_Node0 -- No --> E_UpdateCargowithEntryInformation
File: GCX016.cbl
GIVEN:
Broker bond or QP bond processing is complete
WHEN:
Cargo entry information update is required
THEN:
- Update cargo record with all processed entry information
- Complete in-bond broker processing
β Consolidated Acceptance Criteria
- The system receives the EDI code for processing → the system validates if the EDI code exists in the recognized code list and sets validation status accordingly
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ValidEDICode(["Start Step"])
E_ValidEDICode(["End Step"])
N_ValidEDICode_Node0{"The system receives the EDI code
for processing"}:::decision N_ValidEDICode_Node0_action["The system validates if the EDI
code exists in the recognized code
list and sets validation status
accordingly"]:::main N_ValidEDICode_Node0 -- Yes --> N_ValidEDICode_Node0_action N_ValidEDICode_Node0_action --> E_ValidEDICode S_ValidEDICode --> N_ValidEDICode_Node0 N_ValidEDICode_Node0 -- No --> E_ValidEDICode
for processing"}:::decision N_ValidEDICode_Node0_action["The system validates if the EDI
code exists in the recognized code
list and sets validation status
accordingly"]:::main N_ValidEDICode_Node0 -- Yes --> N_ValidEDICode_Node0_action N_ValidEDICode_Node0_action --> E_ValidEDICode S_ValidEDICode --> N_ValidEDICode_Node0 N_ValidEDICode_Node0 -- No --> E_ValidEDICode
File: GCX016.cbl
GIVEN:
An EDI message contains an in-bond type code
WHEN:
The system receives the EDI code for processing
THEN:
- The system validates if the edi code exists in the recognized code list
- Sets validation status accordingly
β Consolidated Acceptance Criteria
- The system needs to convert the EDI code to internal CPRAIL format → the system looks up the conversion table to find the matching CPRAIL code for the EDI code
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LookupEDItoCPRAILConversionTable(["Start Step"])
E_LookupEDItoCPRAILConversionTable(["End Step"])
N_LookupEDItoCPRAILConversionTable_Node0{"The system needs to convert the EDI
code to internal CPRAIL format"}:::decision N_LookupEDItoCPRAILConversionTable_Node0_action["The system looks up the conversion
table to find the matching CPRAIL
code for the EDI code"]:::main N_LookupEDItoCPRAILConversionTable_Node0 -- Yes --> N_LookupEDItoCPRAILConversionTable_Node0_action N_LookupEDItoCPRAILConversionTable_Node0_action --> E_LookupEDItoCPRAILConversionTable S_LookupEDItoCPRAILConversionTable --> N_LookupEDItoCPRAILConversionTable_Node0 N_LookupEDItoCPRAILConversionTable_Node0 -- No --> E_LookupEDItoCPRAILConversionTable
code to internal CPRAIL format"}:::decision N_LookupEDItoCPRAILConversionTable_Node0_action["The system looks up the conversion
table to find the matching CPRAIL
code for the EDI code"]:::main N_LookupEDItoCPRAILConversionTable_Node0 -- Yes --> N_LookupEDItoCPRAILConversionTable_Node0_action N_LookupEDItoCPRAILConversionTable_Node0_action --> E_LookupEDItoCPRAILConversionTable S_LookupEDItoCPRAILConversionTable --> N_LookupEDItoCPRAILConversionTable_Node0 N_LookupEDItoCPRAILConversionTable_Node0 -- No --> E_LookupEDItoCPRAILConversionTable
File: GCX016.cbl
GIVEN:
A valid EDI in-bond type code has been received
WHEN:
The system needs to convert the EDI code to internal CPRAIL format
THEN:
The system looks up the conversion table to find the matching CPRAIL code for the EDI code
β Consolidated Acceptance Criteria
- The system processes the EDI code conversion → the system transforms the EDI 309 value into the corresponding internal CPRAIL code format
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ConvertEDI309ValuetoInternalCPRAILCode(["Start Step"])
E_ConvertEDI309ValuetoInternalCPRAILCode(["End Step"])
N_ConvertEDI309ValuetoInternalCPRAILCode_Node0{"The system processes the EDI code
conversion"}:::decision N_ConvertEDI309ValuetoInternalCPRAILCode_Node0_action["The system transforms the EDI 309
value into the corresponding
internal CPRAIL code format"]:::main N_ConvertEDI309ValuetoInternalCPRAILCode_Node0 -- Yes --> N_ConvertEDI309ValuetoInternalCPRAILCode_Node0_action N_ConvertEDI309ValuetoInternalCPRAILCode_Node0_action --> E_ConvertEDI309ValuetoInternalCPRAILCode S_ConvertEDI309ValuetoInternalCPRAILCode --> N_ConvertEDI309ValuetoInternalCPRAILCode_Node0 N_ConvertEDI309ValuetoInternalCPRAILCode_Node0 -- No --> E_ConvertEDI309ValuetoInternalCPRAILCode
conversion"}:::decision N_ConvertEDI309ValuetoInternalCPRAILCode_Node0_action["The system transforms the EDI 309
value into the corresponding
internal CPRAIL code format"]:::main N_ConvertEDI309ValuetoInternalCPRAILCode_Node0 -- Yes --> N_ConvertEDI309ValuetoInternalCPRAILCode_Node0_action N_ConvertEDI309ValuetoInternalCPRAILCode_Node0_action --> E_ConvertEDI309ValuetoInternalCPRAILCode S_ConvertEDI309ValuetoInternalCPRAILCode --> N_ConvertEDI309ValuetoInternalCPRAILCode_Node0 N_ConvertEDI309ValuetoInternalCPRAILCode_Node0 -- No --> E_ConvertEDI309ValuetoInternalCPRAILCode
File: GCX016.cbl
GIVEN:
An EDI 309 value exists in the conversion table
WHEN:
The system processes the EDI code conversion
THEN:
The system transforms the EDI 309 value into the corresponding internal CPRAIL code format
β Consolidated Acceptance Criteria
- The system needs to store the converted code information → the system creates a new U1 segment record and populates it with the converted CPRAIL code
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CreateU1SegmentwithConvertedCode(["Start Step"])
E_CreateU1SegmentwithConvertedCode(["End Step"])
N_CreateU1SegmentwithConvertedCode_Node0{"The system needs to store the
converted code information"}:::decision N_CreateU1SegmentwithConvertedCode_Node0_action["The system creates a new U1 segment
record and populates it with the
converted CPRAIL code"]:::main N_CreateU1SegmentwithConvertedCode_Node0 -- Yes --> N_CreateU1SegmentwithConvertedCode_Node0_action N_CreateU1SegmentwithConvertedCode_Node0_action --> E_CreateU1SegmentwithConvertedCode S_CreateU1SegmentwithConvertedCode --> N_CreateU1SegmentwithConvertedCode_Node0 N_CreateU1SegmentwithConvertedCode_Node0 -- No --> E_CreateU1SegmentwithConvertedCode
converted code information"}:::decision N_CreateU1SegmentwithConvertedCode_Node0_action["The system creates a new U1 segment
record and populates it with the
converted CPRAIL code"]:::main N_CreateU1SegmentwithConvertedCode_Node0 -- Yes --> N_CreateU1SegmentwithConvertedCode_Node0_action N_CreateU1SegmentwithConvertedCode_Node0_action --> E_CreateU1SegmentwithConvertedCode S_CreateU1SegmentwithConvertedCode --> N_CreateU1SegmentwithConvertedCode_Node0 N_CreateU1SegmentwithConvertedCode_Node0 -- No --> E_CreateU1SegmentwithConvertedCode
File: GCX016.cbl
GIVEN:
An EDI code has been successfully converted to CPRAIL format
WHEN:
The system needs to store the converted code information
THEN:
- The system creates a new u1 segment record
- Populates it with the converted cprail code
β Consolidated Acceptance Criteria
- The system processes the shipment record update → the system updates the shipment root record with the in-bond type information from the U1 segment
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UpdateShipmentRecordwithInBondInformation(["Start Step"])
E_UpdateShipmentRecordwithInBondInformation(["End Step"])
N_UpdateShipmentRecordwithInBondInformation_Node0{"The system processes the shipment
record update"}:::decision N_UpdateShipmentRecordwithInBondInformation_Node0_action["The system updates the shipment
root record with the in-bond type
information from the U1 segment"]:::main N_UpdateShipmentRecordwithInBondInformation_Node0 -- Yes --> N_UpdateShipmentRecordwithInBondInformation_Node0_action N_UpdateShipmentRecordwithInBondInformation_Node0_action --> E_UpdateShipmentRecordwithInBondInformation S_UpdateShipmentRecordwithInBondInformation --> N_UpdateShipmentRecordwithInBondInformation_Node0 N_UpdateShipmentRecordwithInBondInformation_Node0 -- No --> E_UpdateShipmentRecordwithInBondInformation
record update"}:::decision N_UpdateShipmentRecordwithInBondInformation_Node0_action["The system updates the shipment
root record with the in-bond type
information from the U1 segment"]:::main N_UpdateShipmentRecordwithInBondInformation_Node0 -- Yes --> N_UpdateShipmentRecordwithInBondInformation_Node0_action N_UpdateShipmentRecordwithInBondInformation_Node0_action --> E_UpdateShipmentRecordwithInBondInformation S_UpdateShipmentRecordwithInBondInformation --> N_UpdateShipmentRecordwithInBondInformation_Node0 N_UpdateShipmentRecordwithInBondInformation_Node0 -- No --> E_UpdateShipmentRecordwithInBondInformation
File: GCX016.cbl
GIVEN:
A U1 segment has been created with converted in-bond code information
WHEN:
The system processes the shipment record update
THEN:
The system updates the shipment root record with the in-bond type information from the U1 segment
β Consolidated Acceptance Criteria
- The system finalizes the conversion process → the system creates a log entry recording the successful conversion of the EDI code to CPRAIL format
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogConversionSuccess(["Start Step"])
E_LogConversionSuccess(["End Step"])
N_LogConversionSuccess_Node0{"The system finalizes the conversion
process"}:::decision N_LogConversionSuccess_Node0_action["The system creates a log entry
recording the successful conversion
of the EDI code to CPRAIL format"]:::main N_LogConversionSuccess_Node0 -- Yes --> N_LogConversionSuccess_Node0_action N_LogConversionSuccess_Node0_action --> E_LogConversionSuccess S_LogConversionSuccess --> N_LogConversionSuccess_Node0 N_LogConversionSuccess_Node0 -- No --> E_LogConversionSuccess
process"}:::decision N_LogConversionSuccess_Node0_action["The system creates a log entry
recording the successful conversion
of the EDI code to CPRAIL format"]:::main N_LogConversionSuccess_Node0 -- Yes --> N_LogConversionSuccess_Node0_action N_LogConversionSuccess_Node0_action --> E_LogConversionSuccess S_LogConversionSuccess --> N_LogConversionSuccess_Node0 N_LogConversionSuccess_Node0 -- No --> E_LogConversionSuccess
File: GCX016.cbl
GIVEN:
The EDI code conversion and shipment update have completed successfully
WHEN:
The system finalizes the conversion process
THEN:
The system creates a log entry recording the successful conversion of the EDI code to CPRAIL format
β Consolidated Acceptance Criteria
- If the entry type code field → the system identifies if the entry type code equals '00' for border entry processing
- If the entry type code → the entry type must be one of '61', '62', '63', or '69' for valid master in-bond processing
- The disposition code is '1J', '69', or '55' → the cargo is flagged as master in-bond and requires entry type code processing
- The entry type code is evaluated → route to appropriate master in-bond processing based on entry type (61, 62, 63, 69) or skip if not a master in-bond type
- The entry type code is '61', '62', '63', or '69' → process as master in-bond entry requiring special customs handling
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CheckEntryTypeCode(["Start Step"])
E_CheckEntryTypeCode(["End Step"])
N_CheckEntryTypeCode_Node0{"The system evaluates the entry type
code field"}:::decision N_CheckEntryTypeCode_Node0_action["The system identifies if the entry
type code equals 00 for border entry
processing"]:::main N_CheckEntryTypeCode_Node0 -- Yes --> N_CheckEntryTypeCode_Node0_action N_CheckEntryTypeCode_Node0_action --> E_CheckEntryTypeCode S_CheckEntryTypeCode --> N_CheckEntryTypeCode_Node0 N_CheckEntryTypeCode_Node1{"The system evaluates the entry type
code"}:::decision N_CheckEntryTypeCode_Node1_action["The entry type must be one of 61 ,
62 , 63 , or 69 for valid master
in-bond processing"]:::main N_CheckEntryTypeCode_Node1 -- Yes --> N_CheckEntryTypeCode_Node1_action N_CheckEntryTypeCode_Node1_action --> E_CheckEntryTypeCode N_CheckEntryTypeCode_Node0 -- No --> N_CheckEntryTypeCode_Node1 N_CheckEntryTypeCode_Node2{"The disposition code is 1J , 69 ,
or 55"}:::decision N_CheckEntryTypeCode_Node2_action["The cargo is flagged as master
in-bond and requires entry type code
processing"]:::main N_CheckEntryTypeCode_Node2 -- Yes --> N_CheckEntryTypeCode_Node2_action N_CheckEntryTypeCode_Node2_action --> E_CheckEntryTypeCode N_CheckEntryTypeCode_Node1 -- No --> N_CheckEntryTypeCode_Node2 N_CheckEntryTypeCode_Node3{"The entry type code is evaluated"}:::decision N_CheckEntryTypeCode_Node3_action["Route to appropriate master in-bond
processing based on entry type 61,
62, 63, 69 or skip if not a master
in-bond type"]:::main N_CheckEntryTypeCode_Node3 -- Yes --> N_CheckEntryTypeCode_Node3_action N_CheckEntryTypeCode_Node3_action --> E_CheckEntryTypeCode N_CheckEntryTypeCode_Node2 -- No --> N_CheckEntryTypeCode_Node3 N_CheckEntryTypeCode_Node4{"The entry type code is 61 , 62 , 63
, or 69"}:::decision N_CheckEntryTypeCode_Node4_action["Process as master in-bond entry
requiring special customs handling"]:::main N_CheckEntryTypeCode_Node4 -- Yes --> N_CheckEntryTypeCode_Node4_action N_CheckEntryTypeCode_Node4_action --> E_CheckEntryTypeCode N_CheckEntryTypeCode_Node3 -- No --> N_CheckEntryTypeCode_Node4 N_CheckEntryTypeCode_Node4 -- No --> E_CheckEntryTypeCode
code field"}:::decision N_CheckEntryTypeCode_Node0_action["The system identifies if the entry
type code equals 00 for border entry
processing"]:::main N_CheckEntryTypeCode_Node0 -- Yes --> N_CheckEntryTypeCode_Node0_action N_CheckEntryTypeCode_Node0_action --> E_CheckEntryTypeCode S_CheckEntryTypeCode --> N_CheckEntryTypeCode_Node0 N_CheckEntryTypeCode_Node1{"The system evaluates the entry type
code"}:::decision N_CheckEntryTypeCode_Node1_action["The entry type must be one of 61 ,
62 , 63 , or 69 for valid master
in-bond processing"]:::main N_CheckEntryTypeCode_Node1 -- Yes --> N_CheckEntryTypeCode_Node1_action N_CheckEntryTypeCode_Node1_action --> E_CheckEntryTypeCode N_CheckEntryTypeCode_Node0 -- No --> N_CheckEntryTypeCode_Node1 N_CheckEntryTypeCode_Node2{"The disposition code is 1J , 69 ,
or 55"}:::decision N_CheckEntryTypeCode_Node2_action["The cargo is flagged as master
in-bond and requires entry type code
processing"]:::main N_CheckEntryTypeCode_Node2 -- Yes --> N_CheckEntryTypeCode_Node2_action N_CheckEntryTypeCode_Node2_action --> E_CheckEntryTypeCode N_CheckEntryTypeCode_Node1 -- No --> N_CheckEntryTypeCode_Node2 N_CheckEntryTypeCode_Node3{"The entry type code is evaluated"}:::decision N_CheckEntryTypeCode_Node3_action["Route to appropriate master in-bond
processing based on entry type 61,
62, 63, 69 or skip if not a master
in-bond type"]:::main N_CheckEntryTypeCode_Node3 -- Yes --> N_CheckEntryTypeCode_Node3_action N_CheckEntryTypeCode_Node3_action --> E_CheckEntryTypeCode N_CheckEntryTypeCode_Node2 -- No --> N_CheckEntryTypeCode_Node3 N_CheckEntryTypeCode_Node4{"The entry type code is 61 , 62 , 63
, or 69"}:::decision N_CheckEntryTypeCode_Node4_action["Process as master in-bond entry
requiring special customs handling"]:::main N_CheckEntryTypeCode_Node4 -- Yes --> N_CheckEntryTypeCode_Node4_action N_CheckEntryTypeCode_Node4_action --> E_CheckEntryTypeCode N_CheckEntryTypeCode_Node3 -- No --> N_CheckEntryTypeCode_Node4 N_CheckEntryTypeCode_Node4 -- No --> E_CheckEntryTypeCode
File: GCX016.cbl
GIVEN:
A cargo record with entry type information is being processed
WHEN:
The system evaluates the entry type code field
THEN:
The system identifies if the entry type code equals '00' for border entry processing
File: GCX016.cbl
GIVEN:
A cargo record with disposition codes '1J', '69', or '55' indicating master in-bond processing
WHEN:
The system evaluates the entry type code
THEN:
The entry type must be one of '61', '62', '63', or '69' for valid master in-bond processing
File: GCX016.cbl
GIVEN:
A disposition code is being processed for a new cargo record
WHEN:
The disposition code is '1J', '69', or '55'
THEN:
- The cargo is flagged as master in-bond
- Requires entry type code processing
File: GCX016.cbl
GIVEN:
A cargo record with a disposition code requiring evaluation
WHEN:
The entry type code is evaluated
THEN:
Route to appropriate master in-bond processing based on entry type (61, 62, 63, 69) or skip if not a master in-bond type
File: GCX016.cbl
GIVEN:
A new cargo record with disposition codes '1J', '69', or '55'
WHEN:
The entry type code is '61', '62', '63', or '69'
THEN:
Process as master in-bond entry requiring special customs handling
β Consolidated Acceptance Criteria
- The entry type code is '00' → the cargo is classified as a border entry requiring special processing rules
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IdentifyTypeCode00(["Start Step"])
E_IdentifyTypeCode00(["End Step"])
N_IdentifyTypeCode00_Node0{"The entry type code is 00"}:::decision
N_IdentifyTypeCode00_Node0_action["The cargo is classified as a border
entry requiring special processing
rules"]:::main N_IdentifyTypeCode00_Node0 -- Yes --> N_IdentifyTypeCode00_Node0_action N_IdentifyTypeCode00_Node0_action --> E_IdentifyTypeCode00 S_IdentifyTypeCode00 --> N_IdentifyTypeCode00_Node0 N_IdentifyTypeCode00_Node0 -- No --> E_IdentifyTypeCode00
entry requiring special processing
rules"]:::main N_IdentifyTypeCode00_Node0 -- Yes --> N_IdentifyTypeCode00_Node0_action N_IdentifyTypeCode00_Node0_action --> E_IdentifyTypeCode00 S_IdentifyTypeCode00 --> N_IdentifyTypeCode00_Node0 N_IdentifyTypeCode00_Node0 -- No --> E_IdentifyTypeCode00
File: GCX016.cbl
GIVEN:
A cargo record is being evaluated for processing type
WHEN:
The entry type code is '00'
THEN:
The cargo is classified as a border entry requiring special processing rules
β Consolidated Acceptance Criteria
- The system validates border entry processing requirements → the system confirms the cargo meets border entry criteria and can proceed with bond information clearing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ValidateBorderEntryRequirements(["Start Step"])
E_ValidateBorderEntryRequirements(["End Step"])
N_ValidateBorderEntryRequirements_Node0{"The system validates border entry
processing requirements"}:::decision N_ValidateBorderEntryRequirements_Node0_action["The system confirms the cargo meets
border entry criteria and can
proceed with bond information
clearing"]:::main N_ValidateBorderEntryRequirements_Node0 -- Yes --> N_ValidateBorderEntryRequirements_Node0_action N_ValidateBorderEntryRequirements_Node0_action --> E_ValidateBorderEntryRequirements S_ValidateBorderEntryRequirements --> N_ValidateBorderEntryRequirements_Node0 N_ValidateBorderEntryRequirements_Node0 -- No --> E_ValidateBorderEntryRequirements
processing requirements"}:::decision N_ValidateBorderEntryRequirements_Node0_action["The system confirms the cargo meets
border entry criteria and can
proceed with bond information
clearing"]:::main N_ValidateBorderEntryRequirements_Node0 -- Yes --> N_ValidateBorderEntryRequirements_Node0_action N_ValidateBorderEntryRequirements_Node0_action --> E_ValidateBorderEntryRequirements S_ValidateBorderEntryRequirements --> N_ValidateBorderEntryRequirements_Node0 N_ValidateBorderEntryRequirements_Node0 -- No --> E_ValidateBorderEntryRequirements
File: GCX016.cbl
GIVEN:
A cargo record is classified as border entry with type code '00'
WHEN:
The system validates border entry processing requirements
THEN:
- The system confirms the cargo meets border entry criteria
- Can proceed with bond information clearing
β Consolidated Acceptance Criteria
- The system processes the border entry clearing requirements → all existing bond information fields are cleared from the cargo record
- The entry type is '00' indicating border processing → clear all bond information from the cargo record
- The system processes bond information → all bond-related fields are cleared and set to default values
- Processing the cargo record → clear all bond-related fields and information
- The entry type is '00' indicating border processing → clear bond number, bond date, and related bond information fields
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ClearBondInformation(["Start Step"])
E_ClearBondInformation(["End Step"])
N_ClearBondInformation_Node0{"The system processes the border
entry clearing requirements"}:::decision N_ClearBondInformation_Node0_action["All existing bond information
fields are cleared from the cargo
record"]:::main N_ClearBondInformation_Node0 -- Yes --> N_ClearBondInformation_Node0_action N_ClearBondInformation_Node0_action --> E_ClearBondInformation S_ClearBondInformation --> N_ClearBondInformation_Node0 N_ClearBondInformation_Node1{"The entry type is 00 indicating
border processing"}:::decision N_ClearBondInformation_Node1_action["Clear all bond information from the
cargo record"]:::main N_ClearBondInformation_Node1 -- Yes --> N_ClearBondInformation_Node1_action N_ClearBondInformation_Node1_action --> E_ClearBondInformation N_ClearBondInformation_Node0 -- No --> N_ClearBondInformation_Node1 N_ClearBondInformation_Node2{"The system processes bond
information"}:::decision N_ClearBondInformation_Node2_action["All bond-related fields are cleared
and set to default values"]:::main N_ClearBondInformation_Node2 -- Yes --> N_ClearBondInformation_Node2_action N_ClearBondInformation_Node2_action --> E_ClearBondInformation N_ClearBondInformation_Node1 -- No --> N_ClearBondInformation_Node2 N_ClearBondInformation_Node3{"Processing the cargo record"}:::decision N_ClearBondInformation_Node3_action["Clear all bond-related fields and
information"]:::main N_ClearBondInformation_Node3 -- Yes --> N_ClearBondInformation_Node3_action N_ClearBondInformation_Node3_action --> E_ClearBondInformation N_ClearBondInformation_Node2 -- No --> N_ClearBondInformation_Node3 N_ClearBondInformation_Node4{"The entry type is 00 indicating
border processing"}:::decision N_ClearBondInformation_Node4_action["Clear bond number, bond date, and
related bond information fields"]:::main N_ClearBondInformation_Node4 -- Yes --> N_ClearBondInformation_Node4_action N_ClearBondInformation_Node4_action --> E_ClearBondInformation N_ClearBondInformation_Node3 -- No --> N_ClearBondInformation_Node4 N_ClearBondInformation_Node4 -- No --> E_ClearBondInformation
entry clearing requirements"}:::decision N_ClearBondInformation_Node0_action["All existing bond information
fields are cleared from the cargo
record"]:::main N_ClearBondInformation_Node0 -- Yes --> N_ClearBondInformation_Node0_action N_ClearBondInformation_Node0_action --> E_ClearBondInformation S_ClearBondInformation --> N_ClearBondInformation_Node0 N_ClearBondInformation_Node1{"The entry type is 00 indicating
border processing"}:::decision N_ClearBondInformation_Node1_action["Clear all bond information from the
cargo record"]:::main N_ClearBondInformation_Node1 -- Yes --> N_ClearBondInformation_Node1_action N_ClearBondInformation_Node1_action --> E_ClearBondInformation N_ClearBondInformation_Node0 -- No --> N_ClearBondInformation_Node1 N_ClearBondInformation_Node2{"The system processes bond
information"}:::decision N_ClearBondInformation_Node2_action["All bond-related fields are cleared
and set to default values"]:::main N_ClearBondInformation_Node2 -- Yes --> N_ClearBondInformation_Node2_action N_ClearBondInformation_Node2_action --> E_ClearBondInformation N_ClearBondInformation_Node1 -- No --> N_ClearBondInformation_Node2 N_ClearBondInformation_Node3{"Processing the cargo record"}:::decision N_ClearBondInformation_Node3_action["Clear all bond-related fields and
information"]:::main N_ClearBondInformation_Node3 -- Yes --> N_ClearBondInformation_Node3_action N_ClearBondInformation_Node3_action --> E_ClearBondInformation N_ClearBondInformation_Node2 -- No --> N_ClearBondInformation_Node3 N_ClearBondInformation_Node4{"The entry type is 00 indicating
border processing"}:::decision N_ClearBondInformation_Node4_action["Clear bond number, bond date, and
related bond information fields"]:::main N_ClearBondInformation_Node4 -- Yes --> N_ClearBondInformation_Node4_action N_ClearBondInformation_Node4_action --> E_ClearBondInformation N_ClearBondInformation_Node3 -- No --> N_ClearBondInformation_Node4 N_ClearBondInformation_Node4 -- No --> E_ClearBondInformation
File: GCX016.cbl
GIVEN:
A cargo record is validated as border entry type '00'
WHEN:
The system processes the border entry clearing requirements
THEN:
All existing bond information fields are cleared from the cargo record
File: GCX016.cbl
GIVEN:
A master in-bond entry is being processed
WHEN:
The entry type is '00' indicating border processing
THEN:
Clear all bond information from the cargo record
File: GCX016.cbl
GIVEN:
A cargo is being processed as border entry type
WHEN:
The system processes bond information
THEN:
- All bond-related fields are cleared
- Set to default values
File: GCX016.cbl
GIVEN:
A border entry with type code '00'
WHEN:
Processing the cargo record
THEN:
- Clear all bond-related fields
- Information
File: GCX016.cbl
GIVEN:
A cargo record being processed
WHEN:
The entry type is '00' indicating border processing
THEN:
Clear bond number, bond date, and related bond information fields
β Consolidated Acceptance Criteria
- The system sets the processing status → the cargo status is set to indicate border entry processing with appropriate status code
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetBorderEntryStatus(["Start Step"])
E_SetBorderEntryStatus(["End Step"])
N_SetBorderEntryStatus_Node0{"The system sets the processing
status"}:::decision N_SetBorderEntryStatus_Node0_action["The cargo status is set to indicate
border entry processing with
appropriate status code"]:::main N_SetBorderEntryStatus_Node0 -- Yes --> N_SetBorderEntryStatus_Node0_action N_SetBorderEntryStatus_Node0_action --> E_SetBorderEntryStatus S_SetBorderEntryStatus --> N_SetBorderEntryStatus_Node0 N_SetBorderEntryStatus_Node0 -- No --> E_SetBorderEntryStatus
status"}:::decision N_SetBorderEntryStatus_Node0_action["The cargo status is set to indicate
border entry processing with
appropriate status code"]:::main N_SetBorderEntryStatus_Node0 -- Yes --> N_SetBorderEntryStatus_Node0_action N_SetBorderEntryStatus_Node0_action --> E_SetBorderEntryStatus S_SetBorderEntryStatus --> N_SetBorderEntryStatus_Node0 N_SetBorderEntryStatus_Node0 -- No --> E_SetBorderEntryStatus
File: GCX016.cbl
GIVEN:
A cargo record has completed bond information clearing for border entry
WHEN:
The system sets the processing status
THEN:
The cargo status is set to indicate border entry processing with appropriate status code
β Consolidated Acceptance Criteria
- The system updates the cargo record → the border entry flag is set in the cargo record to indicate special processing status
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UpdateCargoRecordwithBorderEntryFlag(["Start Step"])
E_UpdateCargoRecordwithBorderEntryFlag(["End Step"])
N_UpdateCargoRecordwithBorderEntryFlag_Node0{"The system updates the cargo record"}:::decision
N_UpdateCargoRecordwithBorderEntryFlag_Node0_action["The border entry flag is set in the
cargo record to indicate special
processing status"]:::main N_UpdateCargoRecordwithBorderEntryFlag_Node0 -- Yes --> N_UpdateCargoRecordwithBorderEntryFlag_Node0_action N_UpdateCargoRecordwithBorderEntryFlag_Node0_action --> E_UpdateCargoRecordwithBorderEntryFlag S_UpdateCargoRecordwithBorderEntryFlag --> N_UpdateCargoRecordwithBorderEntryFlag_Node0 N_UpdateCargoRecordwithBorderEntryFlag_Node0 -- No --> E_UpdateCargoRecordwithBorderEntryFlag
cargo record to indicate special
processing status"]:::main N_UpdateCargoRecordwithBorderEntryFlag_Node0 -- Yes --> N_UpdateCargoRecordwithBorderEntryFlag_Node0_action N_UpdateCargoRecordwithBorderEntryFlag_Node0_action --> E_UpdateCargoRecordwithBorderEntryFlag S_UpdateCargoRecordwithBorderEntryFlag --> N_UpdateCargoRecordwithBorderEntryFlag_Node0 N_UpdateCargoRecordwithBorderEntryFlag_Node0 -- No --> E_UpdateCargoRecordwithBorderEntryFlag
File: GCX016.cbl
GIVEN:
A cargo record has been processed as border entry type '00'
WHEN:
The system updates the cargo record
THEN:
The border entry flag is set in the cargo record to indicate special processing status
β Consolidated Acceptance Criteria
- The system applies border entry specific rules → special border entry processing rules are applied including customs clearance and cross-border requirements
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ProcessSpecialBorderEntryRules(["Start Step"])
E_ProcessSpecialBorderEntryRules(["End Step"])
N_ProcessSpecialBorderEntryRules_Node0{"The system applies border entry
specific rules"}:::decision N_ProcessSpecialBorderEntryRules_Node0_action["Special border entry processing
rules are applied including customs
clearance and cross-border
requirements"]:::main N_ProcessSpecialBorderEntryRules_Node0 -- Yes --> N_ProcessSpecialBorderEntryRules_Node0_action N_ProcessSpecialBorderEntryRules_Node0_action --> E_ProcessSpecialBorderEntryRules S_ProcessSpecialBorderEntryRules --> N_ProcessSpecialBorderEntryRules_Node0 N_ProcessSpecialBorderEntryRules_Node0 -- No --> E_ProcessSpecialBorderEntryRules
specific rules"}:::decision N_ProcessSpecialBorderEntryRules_Node0_action["Special border entry processing
rules are applied including customs
clearance and cross-border
requirements"]:::main N_ProcessSpecialBorderEntryRules_Node0 -- Yes --> N_ProcessSpecialBorderEntryRules_Node0_action N_ProcessSpecialBorderEntryRules_Node0_action --> E_ProcessSpecialBorderEntryRules S_ProcessSpecialBorderEntryRules --> N_ProcessSpecialBorderEntryRules_Node0 N_ProcessSpecialBorderEntryRules_Node0 -- No --> E_ProcessSpecialBorderEntryRules
File: GCX016.cbl
GIVEN:
A cargo record is flagged as border entry
WHEN:
The system applies border entry specific rules
THEN:
- Special border entry processing rules are applied including customs clearance
- Cross-border requirements
β Consolidated Acceptance Criteria
- The system validates cross-border movement requirements → the cargo is confirmed to meet all cross-border regulatory and processing requirements
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ValidateCrossBorderRequirements(["Start Step"])
E_ValidateCrossBorderRequirements(["End Step"])
N_ValidateCrossBorderRequirements_Node0{"The system validates cross-border
movement requirements"}:::decision N_ValidateCrossBorderRequirements_Node0_action["The cargo is confirmed to meet all
cross-border regulatory and
processing requirements"]:::main N_ValidateCrossBorderRequirements_Node0 -- Yes --> N_ValidateCrossBorderRequirements_Node0_action N_ValidateCrossBorderRequirements_Node0_action --> E_ValidateCrossBorderRequirements S_ValidateCrossBorderRequirements --> N_ValidateCrossBorderRequirements_Node0 N_ValidateCrossBorderRequirements_Node0 -- No --> E_ValidateCrossBorderRequirements
movement requirements"}:::decision N_ValidateCrossBorderRequirements_Node0_action["The cargo is confirmed to meet all
cross-border regulatory and
processing requirements"]:::main N_ValidateCrossBorderRequirements_Node0 -- Yes --> N_ValidateCrossBorderRequirements_Node0_action N_ValidateCrossBorderRequirements_Node0_action --> E_ValidateCrossBorderRequirements S_ValidateCrossBorderRequirements --> N_ValidateCrossBorderRequirements_Node0 N_ValidateCrossBorderRequirements_Node0 -- No --> E_ValidateCrossBorderRequirements
File: GCX016.cbl
GIVEN:
A border entry cargo record with special processing rules applied
WHEN:
The system validates cross-border movement requirements
THEN:
- The cargo is confirmed to meet all cross-border regulatory
- Processing requirements
β Consolidated Acceptance Criteria
- The system sets processing parameters → default border entry processing parameters are assigned for customs clearance and movement tracking
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetDefaultProcessingParameters(["Start Step"])
E_SetDefaultProcessingParameters(["End Step"])
N_SetDefaultProcessingParameters_Node0{"The system sets processing
parameters"}:::decision N_SetDefaultProcessingParameters_Node0_action["Default border entry processing
parameters are assigned for customs
clearance and movement tracking"]:::main N_SetDefaultProcessingParameters_Node0 -- Yes --> N_SetDefaultProcessingParameters_Node0_action N_SetDefaultProcessingParameters_Node0_action --> E_SetDefaultProcessingParameters S_SetDefaultProcessingParameters --> N_SetDefaultProcessingParameters_Node0 N_SetDefaultProcessingParameters_Node0 -- No --> E_SetDefaultProcessingParameters
parameters"}:::decision N_SetDefaultProcessingParameters_Node0_action["Default border entry processing
parameters are assigned for customs
clearance and movement tracking"]:::main N_SetDefaultProcessingParameters_Node0 -- Yes --> N_SetDefaultProcessingParameters_Node0_action N_SetDefaultProcessingParameters_Node0_action --> E_SetDefaultProcessingParameters S_SetDefaultProcessingParameters --> N_SetDefaultProcessingParameters_Node0 N_SetDefaultProcessingParameters_Node0 -- No --> E_SetDefaultProcessingParameters
File: GCX016.cbl
GIVEN:
A border entry cargo record that has passed cross-border validation
WHEN:
The system sets processing parameters
THEN:
- Default border entry processing parameters are assigned for customs clearance
- Movement tracking
β Consolidated Acceptance Criteria
- The system performs logging activities → all border entry processing steps and status changes are logged for audit trail and tracking
- The system completes border entry processing → the border entry processing is logged with entry details and processing timestamp
- The system performs logging activities → border entry processing activities are logged including entry type, cleared fields, and status changes
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogBorderEntryProcessing(["Start Step"])
E_LogBorderEntryProcessing(["End Step"])
N_LogBorderEntryProcessing_Node0{"The system performs logging
activities"}:::decision N_LogBorderEntryProcessing_Node0_action["All border entry processing steps
and status changes are logged for
audit trail and tracking"]:::main N_LogBorderEntryProcessing_Node0 -- Yes --> N_LogBorderEntryProcessing_Node0_action N_LogBorderEntryProcessing_Node0_action --> E_LogBorderEntryProcessing S_LogBorderEntryProcessing --> N_LogBorderEntryProcessing_Node0 N_LogBorderEntryProcessing_Node1{"The system completes border entry
processing"}:::decision N_LogBorderEntryProcessing_Node1_action["The border entry processing is
logged with entry details and
processing timestamp"]:::main N_LogBorderEntryProcessing_Node1 -- Yes --> N_LogBorderEntryProcessing_Node1_action N_LogBorderEntryProcessing_Node1_action --> E_LogBorderEntryProcessing N_LogBorderEntryProcessing_Node0 -- No --> N_LogBorderEntryProcessing_Node1 N_LogBorderEntryProcessing_Node2{"The system performs logging
activities"}:::decision N_LogBorderEntryProcessing_Node2_action["Border entry processing activities
are logged including entry type,
cleared fields, and status changes"]:::main N_LogBorderEntryProcessing_Node2 -- Yes --> N_LogBorderEntryProcessing_Node2_action N_LogBorderEntryProcessing_Node2_action --> E_LogBorderEntryProcessing N_LogBorderEntryProcessing_Node1 -- No --> N_LogBorderEntryProcessing_Node2 N_LogBorderEntryProcessing_Node2 -- No --> E_LogBorderEntryProcessing
activities"}:::decision N_LogBorderEntryProcessing_Node0_action["All border entry processing steps
and status changes are logged for
audit trail and tracking"]:::main N_LogBorderEntryProcessing_Node0 -- Yes --> N_LogBorderEntryProcessing_Node0_action N_LogBorderEntryProcessing_Node0_action --> E_LogBorderEntryProcessing S_LogBorderEntryProcessing --> N_LogBorderEntryProcessing_Node0 N_LogBorderEntryProcessing_Node1{"The system completes border entry
processing"}:::decision N_LogBorderEntryProcessing_Node1_action["The border entry processing is
logged with entry details and
processing timestamp"]:::main N_LogBorderEntryProcessing_Node1 -- Yes --> N_LogBorderEntryProcessing_Node1_action N_LogBorderEntryProcessing_Node1_action --> E_LogBorderEntryProcessing N_LogBorderEntryProcessing_Node0 -- No --> N_LogBorderEntryProcessing_Node1 N_LogBorderEntryProcessing_Node2{"The system performs logging
activities"}:::decision N_LogBorderEntryProcessing_Node2_action["Border entry processing activities
are logged including entry type,
cleared fields, and status changes"]:::main N_LogBorderEntryProcessing_Node2 -- Yes --> N_LogBorderEntryProcessing_Node2_action N_LogBorderEntryProcessing_Node2_action --> E_LogBorderEntryProcessing N_LogBorderEntryProcessing_Node1 -- No --> N_LogBorderEntryProcessing_Node2 N_LogBorderEntryProcessing_Node2 -- No --> E_LogBorderEntryProcessing
File: GCX016.cbl
GIVEN:
A cargo record has completed border entry processing with default parameters set
WHEN:
The system performs logging activities
THEN:
- All border entry processing steps
- Status changes are logged for audit trail
- Tracking
File: GCX016.cbl
GIVEN:
A cargo entry has been processed as border entry with updated status
WHEN:
The system completes border entry processing
THEN:
- The border entry processing is logged with entry details
- Processing timestamp
File: GCX016.cbl
GIVEN:
A cargo record has been processed as border entry with updated status
WHEN:
The system performs logging activities
THEN:
Border entry processing activities are logged including entry type, cleared fields, and status changes
β Consolidated Acceptance Criteria
- The entry type code is '61' → set transport type to immediate transport and process as IT/BL in-transit cargo
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_Type61ITBLInTransit(["Start Step"])
E_Type61ITBLInTransit(["End Step"])
N_Type61ITBLInTransit_Node0{"The entry type code is 61"}:::decision
N_Type61ITBLInTransit_Node0_action["Set transport type to immediate
transport and process as ITBL
in-transit cargo"]:::main N_Type61ITBLInTransit_Node0 -- Yes --> N_Type61ITBLInTransit_Node0_action N_Type61ITBLInTransit_Node0_action --> E_Type61ITBLInTransit S_Type61ITBLInTransit --> N_Type61ITBLInTransit_Node0 N_Type61ITBLInTransit_Node0 -- No --> E_Type61ITBLInTransit
transport and process as ITBL
in-transit cargo"]:::main N_Type61ITBLInTransit_Node0 -- Yes --> N_Type61ITBLInTransit_Node0_action N_Type61ITBLInTransit_Node0_action --> E_Type61ITBLInTransit S_Type61ITBLInTransit --> N_Type61ITBLInTransit_Node0 N_Type61ITBLInTransit_Node0 -- No --> E_Type61ITBLInTransit
File: GCX016.cbl
GIVEN:
A master in-bond entry is received with disposition codes '1J', '69', or '55'
WHEN:
The entry type code is '61'
THEN:
- Set transport type to immediate transport
- Process as it/bl in-transit cargo
β Consolidated Acceptance Criteria
- The entry type code is '62' → set transport type to transportation for export and process as TE/WD cargo
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_Type62TEWDTransportationExportation(["Start Step"])
E_Type62TEWDTransportationExportation(["End Step"])
N_Type62TEWDTransportationExportation_Node0{"The entry type code is 62"}:::decision
N_Type62TEWDTransportationExportation_Node0_action["Set transport type to
transportation for export and
process as TEWD cargo"]:::main N_Type62TEWDTransportationExportation_Node0 -- Yes --> N_Type62TEWDTransportationExportation_Node0_action N_Type62TEWDTransportationExportation_Node0_action --> E_Type62TEWDTransportationExportation S_Type62TEWDTransportationExportation --> N_Type62TEWDTransportationExportation_Node0 N_Type62TEWDTransportationExportation_Node0 -- No --> E_Type62TEWDTransportationExportation
transportation for export and
process as TEWD cargo"]:::main N_Type62TEWDTransportationExportation_Node0 -- Yes --> N_Type62TEWDTransportationExportation_Node0_action N_Type62TEWDTransportationExportation_Node0_action --> E_Type62TEWDTransportationExportation S_Type62TEWDTransportationExportation --> N_Type62TEWDTransportationExportation_Node0 N_Type62TEWDTransportationExportation_Node0 -- No --> E_Type62TEWDTransportationExportation
File: GCX016.cbl
GIVEN:
A master in-bond entry is received with disposition codes '1J', '69', or '55'
WHEN:
The entry type code is '62'
THEN:
- Set transport type to transportation for export
- Process as te/wd cargo
β Consolidated Acceptance Criteria
- The entry type code is '63' → set transport type to immediate export and process as IE cargo
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_Type63IEImmediateExportation(["Start Step"])
E_Type63IEImmediateExportation(["End Step"])
N_Type63IEImmediateExportation_Node0{"The entry type code is 63"}:::decision
N_Type63IEImmediateExportation_Node0_action["Set transport type to immediate
export and process as IE cargo"]:::main N_Type63IEImmediateExportation_Node0 -- Yes --> N_Type63IEImmediateExportation_Node0_action N_Type63IEImmediateExportation_Node0_action --> E_Type63IEImmediateExportation S_Type63IEImmediateExportation --> N_Type63IEImmediateExportation_Node0 N_Type63IEImmediateExportation_Node0 -- No --> E_Type63IEImmediateExportation
export and process as IE cargo"]:::main N_Type63IEImmediateExportation_Node0 -- Yes --> N_Type63IEImmediateExportation_Node0_action N_Type63IEImmediateExportation_Node0_action --> E_Type63IEImmediateExportation S_Type63IEImmediateExportation --> N_Type63IEImmediateExportation_Node0 N_Type63IEImmediateExportation_Node0 -- No --> E_Type63IEImmediateExportation
File: GCX016.cbl
GIVEN:
A master in-bond entry is received with disposition codes '1J', '69', or '55'
WHEN:
The entry type code is '63'
THEN:
- Set transport type to immediate export
- Process as ie cargo
β Consolidated Acceptance Criteria
- The entry type code is '69' → set transport type to US-Canada-US movement and process as FTZ cargo
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_Type69FTZForeignTradeZone(["Start Step"])
E_Type69FTZForeignTradeZone(["End Step"])
N_Type69FTZForeignTradeZone_Node0{"The entry type code is 69"}:::decision
N_Type69FTZForeignTradeZone_Node0_action["Set transport type to US-Canada-US
movement and process as FTZ cargo"]:::main N_Type69FTZForeignTradeZone_Node0 -- Yes --> N_Type69FTZForeignTradeZone_Node0_action N_Type69FTZForeignTradeZone_Node0_action --> E_Type69FTZForeignTradeZone S_Type69FTZForeignTradeZone --> N_Type69FTZForeignTradeZone_Node0 N_Type69FTZForeignTradeZone_Node0 -- No --> E_Type69FTZForeignTradeZone
movement and process as FTZ cargo"]:::main N_Type69FTZForeignTradeZone_Node0 -- Yes --> N_Type69FTZForeignTradeZone_Node0_action N_Type69FTZForeignTradeZone_Node0_action --> E_Type69FTZForeignTradeZone S_Type69FTZForeignTradeZone --> N_Type69FTZForeignTradeZone_Node0 N_Type69FTZForeignTradeZone_Node0 -- No --> E_Type69FTZForeignTradeZone
File: GCX016.cbl
GIVEN:
A master in-bond entry is received with disposition codes '1J', '69', or '55'
WHEN:
The entry type code is '69'
THEN:
- Set transport type to us-canada-us movement
- Process as ftz cargo
β Consolidated Acceptance Criteria
- The entry type is not '00' → retain all existing bond information in the cargo record
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RetainBondInformation(["Start Step"])
E_RetainBondInformation(["End Step"])
N_RetainBondInformation_Node0{"The entry type is not 00"}:::decision
N_RetainBondInformation_Node0_action["Retain all existing bond
information in the cargo record"]:::main N_RetainBondInformation_Node0 -- Yes --> N_RetainBondInformation_Node0_action N_RetainBondInformation_Node0_action --> E_RetainBondInformation S_RetainBondInformation --> N_RetainBondInformation_Node0 N_RetainBondInformation_Node0 -- No --> E_RetainBondInformation
information in the cargo record"]:::main N_RetainBondInformation_Node0 -- Yes --> N_RetainBondInformation_Node0_action N_RetainBondInformation_Node0_action --> E_RetainBondInformation S_RetainBondInformation --> N_RetainBondInformation_Node0 N_RetainBondInformation_Node0 -- No --> E_RetainBondInformation
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
A master in-bond entry is being processed
WHEN:
The entry type is not '00'
THEN:
Retain all existing bond information in the cargo record
β Consolidated Acceptance Criteria
- The entry type mapping and bond information processing is complete → set the M1109 master in-bond flag to true to indicate master in-bond processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetMasterInBondStatus(["Start Step"])
E_SetMasterInBondStatus(["End Step"])
N_SetMasterInBondStatus_Node0{"The entry type mapping and bond
information processing is complete"}:::decision N_SetMasterInBondStatus_Node0_action["Set the M1109 master in-bond flag
to true to indicate master in-bond
processing"]:::main N_SetMasterInBondStatus_Node0 -- Yes --> N_SetMasterInBondStatus_Node0_action N_SetMasterInBondStatus_Node0_action --> E_SetMasterInBondStatus S_SetMasterInBondStatus --> N_SetMasterInBondStatus_Node0 N_SetMasterInBondStatus_Node0 -- No --> E_SetMasterInBondStatus
information processing is complete"}:::decision N_SetMasterInBondStatus_Node0_action["Set the M1109 master in-bond flag
to true to indicate master in-bond
processing"]:::main N_SetMasterInBondStatus_Node0 -- Yes --> N_SetMasterInBondStatus_Node0_action N_SetMasterInBondStatus_Node0_action --> E_SetMasterInBondStatus S_SetMasterInBondStatus --> N_SetMasterInBondStatus_Node0 N_SetMasterInBondStatus_Node0 -- No --> E_SetMasterInBondStatus
File: GCX016.cbl
GIVEN:
A cargo record with disposition codes '1J', '69', or '55' has been processed
WHEN:
- The entry type mapping
- Bond information processing is complete
THEN:
Set the M1109 master in-bond flag to true to indicate master in-bond processing
β Consolidated Acceptance Criteria
- If the reference qualifier code → the system determines if the reference is FDA-related based on predefined FDA qualifier codes
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_FDARelatedReference(["Start Step"])
E_FDARelatedReference(["End Step"])
N_FDARelatedReference_Node0{"The system evaluates the reference
qualifier code"}:::decision N_FDARelatedReference_Node0_action["The system determines if the
reference is FDA-related based on
predefined FDA qualifier codes"]:::main N_FDARelatedReference_Node0 -- Yes --> N_FDARelatedReference_Node0_action N_FDARelatedReference_Node0_action --> E_FDARelatedReference S_FDARelatedReference --> N_FDARelatedReference_Node0 N_FDARelatedReference_Node0 -- No --> E_FDARelatedReference
qualifier code"}:::decision N_FDARelatedReference_Node0_action["The system determines if the
reference is FDA-related based on
predefined FDA qualifier codes"]:::main N_FDARelatedReference_Node0 -- Yes --> N_FDARelatedReference_Node0_action N_FDARelatedReference_Node0_action --> E_FDARelatedReference S_FDARelatedReference --> N_FDARelatedReference_Node0 N_FDARelatedReference_Node0 -- No --> E_FDARelatedReference
File: GCX016.cbl
GIVEN:
An N9 segment is received with reference qualifier and reference number
WHEN:
The system evaluates the reference qualifier code
THEN:
The system determines if the reference is FDA-related based on predefined FDA qualifier codes
β Consolidated Acceptance Criteria
- The system processes the N9 segment → the FDA reference number is extracted from the reference identification field
- The system processes the N9 reference number field → the FDA reference number is extracted and prepared for validation
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExtractFDAReferenceNumber(["Start Step"])
E_ExtractFDAReferenceNumber(["End Step"])
N_ExtractFDAReferenceNumber_Node0{"The system processes the N9 segment"}:::decision
N_ExtractFDAReferenceNumber_Node0_action["The FDA reference number is
extracted from the reference
identification field"]:::main N_ExtractFDAReferenceNumber_Node0 -- Yes --> N_ExtractFDAReferenceNumber_Node0_action N_ExtractFDAReferenceNumber_Node0_action --> E_ExtractFDAReferenceNumber S_ExtractFDAReferenceNumber --> N_ExtractFDAReferenceNumber_Node0 N_ExtractFDAReferenceNumber_Node1{"The system processes the N9
reference number field"}:::decision N_ExtractFDAReferenceNumber_Node1_action["The FDA reference number is
extracted and prepared for
validation"]:::main N_ExtractFDAReferenceNumber_Node1 -- Yes --> N_ExtractFDAReferenceNumber_Node1_action N_ExtractFDAReferenceNumber_Node1_action --> E_ExtractFDAReferenceNumber N_ExtractFDAReferenceNumber_Node0 -- No --> N_ExtractFDAReferenceNumber_Node1 N_ExtractFDAReferenceNumber_Node1 -- No --> E_ExtractFDAReferenceNumber
extracted from the reference
identification field"]:::main N_ExtractFDAReferenceNumber_Node0 -- Yes --> N_ExtractFDAReferenceNumber_Node0_action N_ExtractFDAReferenceNumber_Node0_action --> E_ExtractFDAReferenceNumber S_ExtractFDAReferenceNumber --> N_ExtractFDAReferenceNumber_Node0 N_ExtractFDAReferenceNumber_Node1{"The system processes the N9
reference number field"}:::decision N_ExtractFDAReferenceNumber_Node1_action["The FDA reference number is
extracted and prepared for
validation"]:::main N_ExtractFDAReferenceNumber_Node1 -- Yes --> N_ExtractFDAReferenceNumber_Node1_action N_ExtractFDAReferenceNumber_Node1_action --> E_ExtractFDAReferenceNumber N_ExtractFDAReferenceNumber_Node0 -- No --> N_ExtractFDAReferenceNumber_Node1 N_ExtractFDAReferenceNumber_Node1 -- No --> E_ExtractFDAReferenceNumber
File: GCX016.cbl
GIVEN:
An N9 segment contains FDA-related reference qualifier
WHEN:
The system processes the N9 segment
THEN:
The FDA reference number is extracted from the reference identification field
File: GCX016.cbl
GIVEN:
An N9 segment has been identified as containing FDA reference information
WHEN:
The system processes the N9 reference number field
THEN:
- The fda reference number is extracted
- Prepared for validation
β Consolidated Acceptance Criteria
- The system processes the FDA reference → the FDA qualifier code is extracted and stored for reference type identification
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExtractFDAQualifierCode(["Start Step"])
E_ExtractFDAQualifierCode(["End Step"])
N_ExtractFDAQualifierCode_Node0{"The system processes the FDA
reference"}:::decision N_ExtractFDAQualifierCode_Node0_action["The FDA qualifier code is extracted
and stored for reference type
identification"]:::main N_ExtractFDAQualifierCode_Node0 -- Yes --> N_ExtractFDAQualifierCode_Node0_action N_ExtractFDAQualifierCode_Node0_action --> E_ExtractFDAQualifierCode S_ExtractFDAQualifierCode --> N_ExtractFDAQualifierCode_Node0 N_ExtractFDAQualifierCode_Node0 -- No --> E_ExtractFDAQualifierCode
reference"}:::decision N_ExtractFDAQualifierCode_Node0_action["The FDA qualifier code is extracted
and stored for reference type
identification"]:::main N_ExtractFDAQualifierCode_Node0 -- Yes --> N_ExtractFDAQualifierCode_Node0_action N_ExtractFDAQualifierCode_Node0_action --> E_ExtractFDAQualifierCode S_ExtractFDAQualifierCode --> N_ExtractFDAQualifierCode_Node0 N_ExtractFDAQualifierCode_Node0 -- No --> E_ExtractFDAQualifierCode
File: GCX016.cbl
GIVEN:
An N9 segment contains FDA-related information
WHEN:
The system processes the FDA reference
THEN:
- The fda qualifier code is extracted
- Stored for reference type identification
β Consolidated Acceptance Criteria
- The system validates the reference format → the reference is checked against FDA format requirements for length, character set, and structure
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ValidateFDAReferenceFormat(["Start Step"])
E_ValidateFDAReferenceFormat(["End Step"])
N_ValidateFDAReferenceFormat_Node0{"The system validates the reference
format"}:::decision N_ValidateFDAReferenceFormat_Node0_action["The reference is checked against
FDA format requirements for length,
character set, and structure"]:::main N_ValidateFDAReferenceFormat_Node0 -- Yes --> N_ValidateFDAReferenceFormat_Node0_action N_ValidateFDAReferenceFormat_Node0_action --> E_ValidateFDAReferenceFormat S_ValidateFDAReferenceFormat --> N_ValidateFDAReferenceFormat_Node0 N_ValidateFDAReferenceFormat_Node0 -- No --> E_ValidateFDAReferenceFormat
format"}:::decision N_ValidateFDAReferenceFormat_Node0_action["The reference is checked against
FDA format requirements for length,
character set, and structure"]:::main N_ValidateFDAReferenceFormat_Node0 -- Yes --> N_ValidateFDAReferenceFormat_Node0_action N_ValidateFDAReferenceFormat_Node0_action --> E_ValidateFDAReferenceFormat S_ValidateFDAReferenceFormat --> N_ValidateFDAReferenceFormat_Node0 N_ValidateFDAReferenceFormat_Node0 -- No --> E_ValidateFDAReferenceFormat
File: GCX016.cbl
GIVEN:
An FDA reference number and qualifier code have been extracted
WHEN:
The system validates the reference format
THEN:
The reference is checked against FDA format requirements for length, character set, and structure
β Consolidated Acceptance Criteria
- If validation results → the system determines if the FDA reference is valid and can be processed further
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ValidFDAReference(["Start Step"])
E_ValidFDAReference(["End Step"])
N_ValidFDAReference_Node0{"The system evaluates validation
results"}:::decision N_ValidFDAReference_Node0_action["The system determines if the FDA
reference is valid and can be
processed further"]:::main N_ValidFDAReference_Node0 -- Yes --> N_ValidFDAReference_Node0_action N_ValidFDAReference_Node0_action --> E_ValidFDAReference S_ValidFDAReference --> N_ValidFDAReference_Node0 N_ValidFDAReference_Node0 -- No --> E_ValidFDAReference
results"}:::decision N_ValidFDAReference_Node0_action["The system determines if the FDA
reference is valid and can be
processed further"]:::main N_ValidFDAReference_Node0 -- Yes --> N_ValidFDAReference_Node0_action N_ValidFDAReference_Node0_action --> E_ValidFDAReference S_ValidFDAReference --> N_ValidFDAReference_Node0 N_ValidFDAReference_Node0 -- No --> E_ValidFDAReference
File: GCX016.cbl
GIVEN:
An FDA reference has been validated for format compliance
WHEN:
The system evaluates validation results
THEN:
- The system determines if the fda reference is valid
- Can be processed further
β Consolidated Acceptance Criteria
- The system processes the FDA reference for storage → the FDA reference number and qualifier are stored in the cargo record's FDA reference fields
- The system updates the cargo record → the FDA reference number is stored in the cargo record for future compliance processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_StoreFDAReferenceinCargoRecord(["Start Step"])
E_StoreFDAReferenceinCargoRecord(["End Step"])
N_StoreFDAReferenceinCargoRecord_Node0{"The system processes the FDA
reference for storage"}:::decision N_StoreFDAReferenceinCargoRecord_Node0_action["The FDA reference number and
qualifier are stored in the cargo
record s FDA reference fields"]:::main N_StoreFDAReferenceinCargoRecord_Node0 -- Yes --> N_StoreFDAReferenceinCargoRecord_Node0_action N_StoreFDAReferenceinCargoRecord_Node0_action --> E_StoreFDAReferenceinCargoRecord S_StoreFDAReferenceinCargoRecord --> N_StoreFDAReferenceinCargoRecord_Node0 N_StoreFDAReferenceinCargoRecord_Node1{"The system updates the cargo record"}:::decision N_StoreFDAReferenceinCargoRecord_Node1_action["The FDA reference number is stored
in the cargo record for future
compliance processing"]:::main N_StoreFDAReferenceinCargoRecord_Node1 -- Yes --> N_StoreFDAReferenceinCargoRecord_Node1_action N_StoreFDAReferenceinCargoRecord_Node1_action --> E_StoreFDAReferenceinCargoRecord N_StoreFDAReferenceinCargoRecord_Node0 -- No --> N_StoreFDAReferenceinCargoRecord_Node1 N_StoreFDAReferenceinCargoRecord_Node1 -- No --> E_StoreFDAReferenceinCargoRecord
reference for storage"}:::decision N_StoreFDAReferenceinCargoRecord_Node0_action["The FDA reference number and
qualifier are stored in the cargo
record s FDA reference fields"]:::main N_StoreFDAReferenceinCargoRecord_Node0 -- Yes --> N_StoreFDAReferenceinCargoRecord_Node0_action N_StoreFDAReferenceinCargoRecord_Node0_action --> E_StoreFDAReferenceinCargoRecord S_StoreFDAReferenceinCargoRecord --> N_StoreFDAReferenceinCargoRecord_Node0 N_StoreFDAReferenceinCargoRecord_Node1{"The system updates the cargo record"}:::decision N_StoreFDAReferenceinCargoRecord_Node1_action["The FDA reference number is stored
in the cargo record for future
compliance processing"]:::main N_StoreFDAReferenceinCargoRecord_Node1 -- Yes --> N_StoreFDAReferenceinCargoRecord_Node1_action N_StoreFDAReferenceinCargoRecord_Node1_action --> E_StoreFDAReferenceinCargoRecord N_StoreFDAReferenceinCargoRecord_Node0 -- No --> N_StoreFDAReferenceinCargoRecord_Node1 N_StoreFDAReferenceinCargoRecord_Node1 -- No --> E_StoreFDAReferenceinCargoRecord
File: GCX016.cbl
GIVEN:
A valid FDA reference number and qualifier have been identified
WHEN:
The system processes the FDA reference for storage
THEN:
- The fda reference number
- Qualifier are stored in the cargo record's fda reference fields
File: GCX016.cbl
GIVEN:
An FDA reference number has been validated as properly formatted
WHEN:
The system updates the cargo record
THEN:
The FDA reference number is stored in the cargo record for future compliance processing
β Consolidated Acceptance Criteria
- Secondary cargo records exist for the same shipment → all secondary cargo records are updated with the same FDA reference information
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UpdateSecondaryCargoRecords(["Start Step"])
E_UpdateSecondaryCargoRecords(["End Step"])
N_UpdateSecondaryCargoRecords_Node0{"Secondary cargo records exist for
the same shipment"}:::decision N_UpdateSecondaryCargoRecords_Node0_action["All secondary cargo records are
updated with the same FDA reference
information"]:::main N_UpdateSecondaryCargoRecords_Node0 -- Yes --> N_UpdateSecondaryCargoRecords_Node0_action N_UpdateSecondaryCargoRecords_Node0_action --> E_UpdateSecondaryCargoRecords S_UpdateSecondaryCargoRecords --> N_UpdateSecondaryCargoRecords_Node0 N_UpdateSecondaryCargoRecords_Node0 -- No --> E_UpdateSecondaryCargoRecords
the same shipment"}:::decision N_UpdateSecondaryCargoRecords_Node0_action["All secondary cargo records are
updated with the same FDA reference
information"]:::main N_UpdateSecondaryCargoRecords_Node0 -- Yes --> N_UpdateSecondaryCargoRecords_Node0_action N_UpdateSecondaryCargoRecords_Node0_action --> E_UpdateSecondaryCargoRecords S_UpdateSecondaryCargoRecords --> N_UpdateSecondaryCargoRecords_Node0 N_UpdateSecondaryCargoRecords_Node0 -- No --> E_UpdateSecondaryCargoRecords
File: GCX016.cbl
GIVEN:
FDA reference has been stored in the primary cargo record
WHEN:
Secondary cargo records exist for the same shipment
THEN:
All secondary cargo records are updated with the same FDA reference information
β Consolidated Acceptance Criteria
- The system processes shipment linkage → the FDA reference is linked to the shipment identifier for tracking and compliance purposes
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LinkFDAReferencetoShipment(["Start Step"])
E_LinkFDAReferencetoShipment(["End Step"])
N_LinkFDAReferencetoShipment_Node0{"The system processes shipment
linkage"}:::decision N_LinkFDAReferencetoShipment_Node0_action["The FDA reference is linked to the
shipment identifier for tracking and
compliance purposes"]:::main N_LinkFDAReferencetoShipment_Node0 -- Yes --> N_LinkFDAReferencetoShipment_Node0_action N_LinkFDAReferencetoShipment_Node0_action --> E_LinkFDAReferencetoShipment S_LinkFDAReferencetoShipment --> N_LinkFDAReferencetoShipment_Node0 N_LinkFDAReferencetoShipment_Node0 -- No --> E_LinkFDAReferencetoShipment
linkage"}:::decision N_LinkFDAReferencetoShipment_Node0_action["The FDA reference is linked to the
shipment identifier for tracking and
compliance purposes"]:::main N_LinkFDAReferencetoShipment_Node0 -- Yes --> N_LinkFDAReferencetoShipment_Node0_action N_LinkFDAReferencetoShipment_Node0_action --> E_LinkFDAReferencetoShipment S_LinkFDAReferencetoShipment --> N_LinkFDAReferencetoShipment_Node0 N_LinkFDAReferencetoShipment_Node0 -- No --> E_LinkFDAReferencetoShipment
File: GCX016.cbl
GIVEN:
FDA reference has been stored in cargo records
WHEN:
The system processes shipment linkage
THEN:
- The fda reference is linked to the shipment identifier for tracking
- Compliance purposes
β Consolidated Acceptance Criteria
- If disposition codes for the cargo → the system determines if A1 or A3 disposition codes are present requiring FDA compliance actions
- If disposition codes associated with the cargo → the system determines if A1 or A3 disposition codes are present requiring FDA compliance actions
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_A1A3DispositionCodePresent(["Start Step"])
E_A1A3DispositionCodePresent(["End Step"])
N_A1A3DispositionCodePresent_Node0{"The system evaluates disposition
codes for the cargo"}:::decision N_A1A3DispositionCodePresent_Node0_action["The system determines if A1 or A3
disposition codes are present
requiring FDA compliance actions"]:::main N_A1A3DispositionCodePresent_Node0 -- Yes --> N_A1A3DispositionCodePresent_Node0_action N_A1A3DispositionCodePresent_Node0_action --> E_A1A3DispositionCodePresent S_A1A3DispositionCodePresent --> N_A1A3DispositionCodePresent_Node0 N_A1A3DispositionCodePresent_Node1{"The system evaluates disposition
codes associated with the cargo"}:::decision N_A1A3DispositionCodePresent_Node1_action["The system determines if A1 or A3
disposition codes are present
requiring FDA compliance actions"]:::main N_A1A3DispositionCodePresent_Node1 -- Yes --> N_A1A3DispositionCodePresent_Node1_action N_A1A3DispositionCodePresent_Node1_action --> E_A1A3DispositionCodePresent N_A1A3DispositionCodePresent_Node0 -- No --> N_A1A3DispositionCodePresent_Node1 N_A1A3DispositionCodePresent_Node1 -- No --> E_A1A3DispositionCodePresent
codes for the cargo"}:::decision N_A1A3DispositionCodePresent_Node0_action["The system determines if A1 or A3
disposition codes are present
requiring FDA compliance actions"]:::main N_A1A3DispositionCodePresent_Node0 -- Yes --> N_A1A3DispositionCodePresent_Node0_action N_A1A3DispositionCodePresent_Node0_action --> E_A1A3DispositionCodePresent S_A1A3DispositionCodePresent --> N_A1A3DispositionCodePresent_Node0 N_A1A3DispositionCodePresent_Node1{"The system evaluates disposition
codes associated with the cargo"}:::decision N_A1A3DispositionCodePresent_Node1_action["The system determines if A1 or A3
disposition codes are present
requiring FDA compliance actions"]:::main N_A1A3DispositionCodePresent_Node1 -- Yes --> N_A1A3DispositionCodePresent_Node1_action N_A1A3DispositionCodePresent_Node1_action --> E_A1A3DispositionCodePresent N_A1A3DispositionCodePresent_Node0 -- No --> N_A1A3DispositionCodePresent_Node1 N_A1A3DispositionCodePresent_Node1 -- No --> E_A1A3DispositionCodePresent
File: GCX016.cbl
GIVEN:
FDA reference has been linked to the shipment
WHEN:
The system evaluates disposition codes for the cargo
THEN:
The system determines if A1 or A3 disposition codes are present requiring FDA compliance actions
File: GCX016.cbl
GIVEN:
FDA reference information has been processed and linked to cargo records
WHEN:
The system evaluates disposition codes associated with the cargo
THEN:
The system determines if A1 or A3 disposition codes are present requiring FDA compliance actions
β Consolidated Acceptance Criteria
- The system processes FDA compliance requirements → fDA-specific compliance checks and notifications are initiated based on the disposition code type
- The system processes FDA compliance requirements → special FDA compliance processing is initiated including notifications and status updates
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ProcessFDAComplianceRequirements(["Start Step"])
E_ProcessFDAComplianceRequirements(["End Step"])
N_ProcessFDAComplianceRequirements_Node0{"The system processes FDA compliance
requirements"}:::decision N_ProcessFDAComplianceRequirements_Node0_action["FDA-specific compliance checks and
notifications are initiated based on
the disposition code type"]:::main N_ProcessFDAComplianceRequirements_Node0 -- Yes --> N_ProcessFDAComplianceRequirements_Node0_action N_ProcessFDAComplianceRequirements_Node0_action --> E_ProcessFDAComplianceRequirements S_ProcessFDAComplianceRequirements --> N_ProcessFDAComplianceRequirements_Node0 N_ProcessFDAComplianceRequirements_Node1{"The system processes FDA compliance
requirements"}:::decision N_ProcessFDAComplianceRequirements_Node1_action["Special FDA compliance processing
is initiated including notifications
and status updates"]:::main N_ProcessFDAComplianceRequirements_Node1 -- Yes --> N_ProcessFDAComplianceRequirements_Node1_action N_ProcessFDAComplianceRequirements_Node1_action --> E_ProcessFDAComplianceRequirements N_ProcessFDAComplianceRequirements_Node0 -- No --> N_ProcessFDAComplianceRequirements_Node1 N_ProcessFDAComplianceRequirements_Node1 -- No --> E_ProcessFDAComplianceRequirements
requirements"}:::decision N_ProcessFDAComplianceRequirements_Node0_action["FDA-specific compliance checks and
notifications are initiated based on
the disposition code type"]:::main N_ProcessFDAComplianceRequirements_Node0 -- Yes --> N_ProcessFDAComplianceRequirements_Node0_action N_ProcessFDAComplianceRequirements_Node0_action --> E_ProcessFDAComplianceRequirements S_ProcessFDAComplianceRequirements --> N_ProcessFDAComplianceRequirements_Node0 N_ProcessFDAComplianceRequirements_Node1{"The system processes FDA compliance
requirements"}:::decision N_ProcessFDAComplianceRequirements_Node1_action["Special FDA compliance processing
is initiated including notifications
and status updates"]:::main N_ProcessFDAComplianceRequirements_Node1 -- Yes --> N_ProcessFDAComplianceRequirements_Node1_action N_ProcessFDAComplianceRequirements_Node1_action --> E_ProcessFDAComplianceRequirements N_ProcessFDAComplianceRequirements_Node0 -- No --> N_ProcessFDAComplianceRequirements_Node1 N_ProcessFDAComplianceRequirements_Node1 -- No --> E_ProcessFDAComplianceRequirements
File: GCX016.cbl
GIVEN:
A1 or A3 disposition codes are present with FDA reference
WHEN:
The system processes FDA compliance requirements
THEN:
- Fda-specific compliance checks
- Notifications are initiated based on the disposition code type
File: GCX016.cbl
GIVEN:
A1 or A3 disposition codes are present with FDA reference information
WHEN:
The system processes FDA compliance requirements
THEN:
- Special fda compliance processing is initiated including notifications
- Status updates
β Consolidated Acceptance Criteria
- The system processes FDA requirements → an FDA processing flag is set to ensure proper handling throughout the cargo lifecycle
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetFDAProcessingFlag(["Start Step"])
E_SetFDAProcessingFlag(["End Step"])
N_SetFDAProcessingFlag_Node0{"The system processes FDA
requirements"}:::decision N_SetFDAProcessingFlag_Node0_action["An FDA processing flag is set to
ensure proper handling throughout
the cargo lifecycle"]:::main N_SetFDAProcessingFlag_Node0 -- Yes --> N_SetFDAProcessingFlag_Node0_action N_SetFDAProcessingFlag_Node0_action --> E_SetFDAProcessingFlag S_SetFDAProcessingFlag --> N_SetFDAProcessingFlag_Node0 N_SetFDAProcessingFlag_Node0 -- No --> E_SetFDAProcessingFlag
requirements"}:::decision N_SetFDAProcessingFlag_Node0_action["An FDA processing flag is set to
ensure proper handling throughout
the cargo lifecycle"]:::main N_SetFDAProcessingFlag_Node0 -- Yes --> N_SetFDAProcessingFlag_Node0_action N_SetFDAProcessingFlag_Node0_action --> E_SetFDAProcessingFlag S_SetFDAProcessingFlag --> N_SetFDAProcessingFlag_Node0 N_SetFDAProcessingFlag_Node0 -- No --> E_SetFDAProcessingFlag
File: GCX016.cbl
GIVEN:
FDA compliance requirements have been identified
WHEN:
The system processes FDA requirements
THEN:
An FDA processing flag is set to ensure proper handling throughout the cargo lifecycle
β Consolidated Acceptance Criteria
- FDA compliance requirements mandate cargo hold → an FDA hold status is generated and applied to the cargo preventing release until FDA clearance
- FDA compliance requirements indicate a hold is necessary → an FDA hold is generated and applied to the cargo preventing release
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GenerateFDAHoldifRequired(["Start Step"])
E_GenerateFDAHoldifRequired(["End Step"])
N_GenerateFDAHoldifRequired_Node0{"FDA compliance requirements mandate
cargo hold"}:::decision N_GenerateFDAHoldifRequired_Node0_action["An FDA hold status is generated and
applied to the cargo preventing
release until FDA clearance"]:::main N_GenerateFDAHoldifRequired_Node0 -- Yes --> N_GenerateFDAHoldifRequired_Node0_action N_GenerateFDAHoldifRequired_Node0_action --> E_GenerateFDAHoldifRequired S_GenerateFDAHoldifRequired --> N_GenerateFDAHoldifRequired_Node0 N_GenerateFDAHoldifRequired_Node1{"FDA compliance requirements
indicate a hold is necessary"}:::decision N_GenerateFDAHoldifRequired_Node1_action["An FDA hold is generated and
applied to the cargo preventing
release"]:::main N_GenerateFDAHoldifRequired_Node1 -- Yes --> N_GenerateFDAHoldifRequired_Node1_action N_GenerateFDAHoldifRequired_Node1_action --> E_GenerateFDAHoldifRequired N_GenerateFDAHoldifRequired_Node0 -- No --> N_GenerateFDAHoldifRequired_Node1 N_GenerateFDAHoldifRequired_Node1 -- No --> E_GenerateFDAHoldifRequired
cargo hold"}:::decision N_GenerateFDAHoldifRequired_Node0_action["An FDA hold status is generated and
applied to the cargo preventing
release until FDA clearance"]:::main N_GenerateFDAHoldifRequired_Node0 -- Yes --> N_GenerateFDAHoldifRequired_Node0_action N_GenerateFDAHoldifRequired_Node0_action --> E_GenerateFDAHoldifRequired S_GenerateFDAHoldifRequired --> N_GenerateFDAHoldifRequired_Node0 N_GenerateFDAHoldifRequired_Node1{"FDA compliance requirements
indicate a hold is necessary"}:::decision N_GenerateFDAHoldifRequired_Node1_action["An FDA hold is generated and
applied to the cargo preventing
release"]:::main N_GenerateFDAHoldifRequired_Node1 -- Yes --> N_GenerateFDAHoldifRequired_Node1_action N_GenerateFDAHoldifRequired_Node1_action --> E_GenerateFDAHoldifRequired N_GenerateFDAHoldifRequired_Node0 -- No --> N_GenerateFDAHoldifRequired_Node1 N_GenerateFDAHoldifRequired_Node1 -- No --> E_GenerateFDAHoldifRequired
File: GCX016.cbl
GIVEN:
FDA processing flag has been set and compliance evaluation completed
WHEN:
FDA compliance requirements mandate cargo hold
THEN:
- An fda hold status is generated
- Applied to the cargo preventing release until fda clearance
File: GCX016.cbl
GIVEN:
FDA status has been updated in the status array
WHEN:
FDA compliance requirements indicate a hold is necessary
THEN:
- An fda hold is generated
- Applied to the cargo preventing release
β Consolidated Acceptance Criteria
- The system finalizes FDA processing → all FDA reference processing activities are logged with timestamps and processing details
- The system performs logging operations → all FDA reference processing activities are logged including reference numbers, status changes, and compliance actions
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogFDAReferenceProcessing(["Start Step"])
E_LogFDAReferenceProcessing(["End Step"])
N_LogFDAReferenceProcessing_Node0{"The system finalizes FDA processing"}:::decision
N_LogFDAReferenceProcessing_Node0_action["All FDA reference processing
activities are logged with
timestamps and processing details"]:::main N_LogFDAReferenceProcessing_Node0 -- Yes --> N_LogFDAReferenceProcessing_Node0_action N_LogFDAReferenceProcessing_Node0_action --> E_LogFDAReferenceProcessing S_LogFDAReferenceProcessing --> N_LogFDAReferenceProcessing_Node0 N_LogFDAReferenceProcessing_Node1{"The system performs logging
operations"}:::decision N_LogFDAReferenceProcessing_Node1_action["All FDA reference processing
activities are logged including
reference numbers, status changes,
and compliance actions"]:::main N_LogFDAReferenceProcessing_Node1 -- Yes --> N_LogFDAReferenceProcessing_Node1_action N_LogFDAReferenceProcessing_Node1_action --> E_LogFDAReferenceProcessing N_LogFDAReferenceProcessing_Node0 -- No --> N_LogFDAReferenceProcessing_Node1 N_LogFDAReferenceProcessing_Node1 -- No --> E_LogFDAReferenceProcessing
activities are logged with
timestamps and processing details"]:::main N_LogFDAReferenceProcessing_Node0 -- Yes --> N_LogFDAReferenceProcessing_Node0_action N_LogFDAReferenceProcessing_Node0_action --> E_LogFDAReferenceProcessing S_LogFDAReferenceProcessing --> N_LogFDAReferenceProcessing_Node0 N_LogFDAReferenceProcessing_Node1{"The system performs logging
operations"}:::decision N_LogFDAReferenceProcessing_Node1_action["All FDA reference processing
activities are logged including
reference numbers, status changes,
and compliance actions"]:::main N_LogFDAReferenceProcessing_Node1 -- Yes --> N_LogFDAReferenceProcessing_Node1_action N_LogFDAReferenceProcessing_Node1_action --> E_LogFDAReferenceProcessing N_LogFDAReferenceProcessing_Node0 -- No --> N_LogFDAReferenceProcessing_Node1 N_LogFDAReferenceProcessing_Node1 -- No --> E_LogFDAReferenceProcessing
File: GCX016.cbl
GIVEN:
FDA reference processing has been completed
WHEN:
The system finalizes FDA processing
THEN:
- All fda reference processing activities are logged with timestamps
- Processing details
File: GCX016.cbl
GIVEN:
FDA reference processing has been completed
WHEN:
The system performs logging operations
THEN:
All FDA reference processing activities are logged including reference numbers, status changes, and compliance actions
β Consolidated Acceptance Criteria
- The system processes the invalid reference → the FDA reference is rejected and not stored in cargo records
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RejectInvalidFDAReference(["Start Step"])
E_RejectInvalidFDAReference(["End Step"])
N_RejectInvalidFDAReference_Node0{"The system processes the invalid
reference"}:::decision N_RejectInvalidFDAReference_Node0_action["The FDA reference is rejected and
not stored in cargo records"]:::exclusion N_RejectInvalidFDAReference_Node0 -- Yes -->|Alternative| N_RejectInvalidFDAReference_Node0_action N_RejectInvalidFDAReference_Node0_action --> E_RejectInvalidFDAReference S_RejectInvalidFDAReference --> N_RejectInvalidFDAReference_Node0 N_RejectInvalidFDAReference_Node0 -- No --> E_RejectInvalidFDAReference
reference"}:::decision N_RejectInvalidFDAReference_Node0_action["The FDA reference is rejected and
not stored in cargo records"]:::exclusion N_RejectInvalidFDAReference_Node0 -- Yes -->|Alternative| N_RejectInvalidFDAReference_Node0_action N_RejectInvalidFDAReference_Node0_action --> E_RejectInvalidFDAReference S_RejectInvalidFDAReference --> N_RejectInvalidFDAReference_Node0 N_RejectInvalidFDAReference_Node0 -- No --> E_RejectInvalidFDAReference
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
An FDA reference has failed format validation
WHEN:
The system processes the invalid reference
THEN:
- The fda reference is rejected
- Not stored in cargo records
β Consolidated Acceptance Criteria
- The system prepares for cargo database search → the bond number is set as the search key for bond index lookup
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetBondNumberasSearchKey(["Start Step"])
E_SetBondNumberasSearchKey(["End Step"])
N_SetBondNumberasSearchKey_Node0{"The system prepares for cargo
database search"}:::decision N_SetBondNumberasSearchKey_Node0_action["The bond number is set as the
search key for bond index lookup"]:::main N_SetBondNumberasSearchKey_Node0 -- Yes --> N_SetBondNumberasSearchKey_Node0_action N_SetBondNumberasSearchKey_Node0_action --> E_SetBondNumberasSearchKey S_SetBondNumberasSearchKey --> N_SetBondNumberasSearchKey_Node0 N_SetBondNumberasSearchKey_Node0 -- No --> E_SetBondNumberasSearchKey
database search"}:::decision N_SetBondNumberasSearchKey_Node0_action["The bond number is set as the
search key for bond index lookup"]:::main N_SetBondNumberasSearchKey_Node0 -- Yes --> N_SetBondNumberasSearchKey_Node0_action N_SetBondNumberasSearchKey_Node0_action --> E_SetBondNumberasSearchKey S_SetBondNumberasSearchKey --> N_SetBondNumberasSearchKey_Node0 N_SetBondNumberasSearchKey_Node0 -- No --> E_SetBondNumberasSearchKey
File: GCX016.cbl
GIVEN:
A valid bond control number exists
WHEN:
The system prepares for cargo database search
THEN:
The bond number is set as the search key for bond index lookup
β Consolidated Acceptance Criteria
- The system performs database lookup → gCCUSIO is called with bond index to retrieve matching cargo records
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CallGCCUSIOwithBondIndex(["Start Step"])
E_CallGCCUSIOwithBondIndex(["End Step"])
N_CallGCCUSIOwithBondIndex_Node0{"The system performs database lookup"}:::decision
N_CallGCCUSIOwithBondIndex_Node0_action["GCCUSIO is called with bond index
to retrieve matching cargo records"]:::main N_CallGCCUSIOwithBondIndex_Node0 -- Yes --> N_CallGCCUSIOwithBondIndex_Node0_action N_CallGCCUSIOwithBondIndex_Node0_action --> E_CallGCCUSIOwithBondIndex S_CallGCCUSIOwithBondIndex --> N_CallGCCUSIOwithBondIndex_Node0 N_CallGCCUSIOwithBondIndex_Node0 -- No --> E_CallGCCUSIOwithBondIndex
to retrieve matching cargo records"]:::main N_CallGCCUSIOwithBondIndex_Node0 -- Yes --> N_CallGCCUSIOwithBondIndex_Node0_action N_CallGCCUSIOwithBondIndex_Node0_action --> E_CallGCCUSIOwithBondIndex S_CallGCCUSIOwithBondIndex --> N_CallGCCUSIOwithBondIndex_Node0 N_CallGCCUSIOwithBondIndex_Node0 -- No --> E_CallGCCUSIOwithBondIndex
File: GCX016.cbl
GIVEN:
Bond number is set as search key
WHEN:
The system performs database lookup
THEN:
GCCUSIO is called with bond index to retrieve matching cargo records
β Consolidated Acceptance Criteria
- The system begins cargo record processing → the first cargo record matching the bond number is retrieved
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RetrieveFirstCargoRecord(["Start Step"])
E_RetrieveFirstCargoRecord(["End Step"])
N_RetrieveFirstCargoRecord_Node0{"The system begins cargo record
processing"}:::decision N_RetrieveFirstCargoRecord_Node0_action["The first cargo record matching the
bond number is retrieved"]:::main N_RetrieveFirstCargoRecord_Node0 -- Yes --> N_RetrieveFirstCargoRecord_Node0_action N_RetrieveFirstCargoRecord_Node0_action --> E_RetrieveFirstCargoRecord S_RetrieveFirstCargoRecord --> N_RetrieveFirstCargoRecord_Node0 N_RetrieveFirstCargoRecord_Node0 -- No --> E_RetrieveFirstCargoRecord
processing"}:::decision N_RetrieveFirstCargoRecord_Node0_action["The first cargo record matching the
bond number is retrieved"]:::main N_RetrieveFirstCargoRecord_Node0 -- Yes --> N_RetrieveFirstCargoRecord_Node0_action N_RetrieveFirstCargoRecord_Node0_action --> E_RetrieveFirstCargoRecord S_RetrieveFirstCargoRecord --> N_RetrieveFirstCargoRecord_Node0 N_RetrieveFirstCargoRecord_Node0 -- No --> E_RetrieveFirstCargoRecord
File: GCX016.cbl
GIVEN:
Cargo records exist for the bond number
WHEN:
The system begins cargo record processing
THEN:
The first cargo record matching the bond number is retrieved
β Consolidated Acceptance Criteria
- The system loads cargo data → the cargo root segment is loaded from GCSUSRT IMS segment
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LoadCargoRootSegment(["Start Step"])
E_LoadCargoRootSegment(["End Step"])
N_LoadCargoRootSegment_Node0{"The system loads cargo data"}:::decision
N_LoadCargoRootSegment_Node0_action["The cargo root segment is loaded
from GCSUSRT IMS segment"]:::main N_LoadCargoRootSegment_Node0 -- Yes --> N_LoadCargoRootSegment_Node0_action N_LoadCargoRootSegment_Node0_action --> E_LoadCargoRootSegment S_LoadCargoRootSegment --> N_LoadCargoRootSegment_Node0 N_LoadCargoRootSegment_Node0 -- No --> E_LoadCargoRootSegment
from GCSUSRT IMS segment"]:::main N_LoadCargoRootSegment_Node0 -- Yes --> N_LoadCargoRootSegment_Node0_action N_LoadCargoRootSegment_Node0_action --> E_LoadCargoRootSegment S_LoadCargoRootSegment --> N_LoadCargoRootSegment_Node0 N_LoadCargoRootSegment_Node0 -- No --> E_LoadCargoRootSegment
File: GCX016.cbl
GIVEN:
A cargo record has been retrieved
WHEN:
The system loads cargo data
THEN:
The cargo root segment is loaded from GCSUSRT IMS segment
β Consolidated Acceptance Criteria
- The system checks for additional cargo with same bond → if more cargo exists with same bond, continue processing; if no more cargo, complete bond processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MoreCargowithSameBond(["Start Step"])
E_MoreCargowithSameBond(["End Step"])
N_MoreCargowithSameBond_Node0{"The system checks for additional
cargo with same bond"}:::decision N_MoreCargowithSameBond_Node0_action["If more cargo exists with same
bond, continue processing if no more
cargo, complete bond processing"]:::main N_MoreCargowithSameBond_Node0 -- Yes --> N_MoreCargowithSameBond_Node0_action N_MoreCargowithSameBond_Node0_action --> E_MoreCargowithSameBond S_MoreCargowithSameBond --> N_MoreCargowithSameBond_Node0 N_MoreCargowithSameBond_Node0 -- No --> E_MoreCargowithSameBond
cargo with same bond"}:::decision N_MoreCargowithSameBond_Node0_action["If more cargo exists with same
bond, continue processing if no more
cargo, complete bond processing"]:::main N_MoreCargowithSameBond_Node0 -- Yes --> N_MoreCargowithSameBond_Node0_action N_MoreCargowithSameBond_Node0_action --> E_MoreCargowithSameBond S_MoreCargowithSameBond --> N_MoreCargowithSameBond_Node0 N_MoreCargowithSameBond_Node0 -- No --> E_MoreCargowithSameBond
File: GCX016.cbl
GIVEN:
Current cargo record has been processed
WHEN:
The system checks for additional cargo with same bond
THEN:
If more cargo exists with same bond, continue processing; if no more cargo, complete bond processing
β Consolidated Acceptance Criteria
- The system retrieves the next cargo record → the next cargo record with matching bond number is retrieved for processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GetNextCargoRecordwithSameBond(["Start Step"])
E_GetNextCargoRecordwithSameBond(["End Step"])
N_GetNextCargoRecordwithSameBond_Node0{"The system retrieves the next cargo
record"}:::decision N_GetNextCargoRecordwithSameBond_Node0_action["The next cargo record with matching
bond number is retrieved for
processing"]:::main N_GetNextCargoRecordwithSameBond_Node0 -- Yes --> N_GetNextCargoRecordwithSameBond_Node0_action N_GetNextCargoRecordwithSameBond_Node0_action --> E_GetNextCargoRecordwithSameBond S_GetNextCargoRecordwithSameBond --> N_GetNextCargoRecordwithSameBond_Node0 N_GetNextCargoRecordwithSameBond_Node0 -- No --> E_GetNextCargoRecordwithSameBond
record"}:::decision N_GetNextCargoRecordwithSameBond_Node0_action["The next cargo record with matching
bond number is retrieved for
processing"]:::main N_GetNextCargoRecordwithSameBond_Node0 -- Yes --> N_GetNextCargoRecordwithSameBond_Node0_action N_GetNextCargoRecordwithSameBond_Node0_action --> E_GetNextCargoRecordwithSameBond S_GetNextCargoRecordwithSameBond --> N_GetNextCargoRecordwithSameBond_Node0 N_GetNextCargoRecordwithSameBond_Node0 -- No --> E_GetNextCargoRecordwithSameBond
File: GCX016.cbl
GIVEN:
Current cargo record has been processed and more cargo exists with same bond
WHEN:
The system retrieves the next cargo record
THEN:
The next cargo record with matching bond number is retrieved for processing
β Consolidated Acceptance Criteria
- No more cargo records exist with the same bond number → bond-based cargo processing is completed successfully
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AllBondCargoRetrieved(["Start Step"])
E_AllBondCargoRetrieved(["End Step"])
N_AllBondCargoRetrieved_Node0{"No more cargo records exist with
the same bond number"}:::decision N_AllBondCargoRetrieved_Node0_action["Bond-based cargo processing is
completed successfully"]:::main N_AllBondCargoRetrieved_Node0 -- Yes --> N_AllBondCargoRetrieved_Node0_action N_AllBondCargoRetrieved_Node0_action --> E_AllBondCargoRetrieved S_AllBondCargoRetrieved --> N_AllBondCargoRetrieved_Node0 N_AllBondCargoRetrieved_Node0 -- No --> E_AllBondCargoRetrieved
the same bond number"}:::decision N_AllBondCargoRetrieved_Node0_action["Bond-based cargo processing is
completed successfully"]:::main N_AllBondCargoRetrieved_Node0 -- Yes --> N_AllBondCargoRetrieved_Node0_action N_AllBondCargoRetrieved_Node0_action --> E_AllBondCargoRetrieved S_AllBondCargoRetrieved --> N_AllBondCargoRetrieved_Node0 N_AllBondCargoRetrieved_Node0 -- No --> E_AllBondCargoRetrieved
File: GCX016.cbl
GIVEN:
All cargo records with the bond number have been processed
WHEN:
No more cargo records exist with the same bond number
THEN:
Bond-based cargo processing is completed successfully
β Consolidated Acceptance Criteria
- The system encounters bond not found condition → an error is logged indicating bond number not found
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogBondNumberNotFoundError(["Start Step"])
E_LogBondNumberNotFoundError(["End Step"])
N_LogBondNumberNotFoundError_Node0{"The system encounters bond not
found condition"}:::decision N_LogBondNumberNotFoundError_Node0_action["An error is logged indicating bond
number not found"]:::main N_LogBondNumberNotFoundError_Node0 -- Yes --> N_LogBondNumberNotFoundError_Node0_action N_LogBondNumberNotFoundError_Node0_action --> E_LogBondNumberNotFoundError S_LogBondNumberNotFoundError --> N_LogBondNumberNotFoundError_Node0 N_LogBondNumberNotFoundError_Node0 -- No --> E_LogBondNumberNotFoundError
found condition"}:::decision N_LogBondNumberNotFoundError_Node0_action["An error is logged indicating bond
number not found"]:::main N_LogBondNumberNotFoundError_Node0 -- Yes --> N_LogBondNumberNotFoundError_Node0_action N_LogBondNumberNotFoundError_Node0_action --> E_LogBondNumberNotFoundError S_LogBondNumberNotFoundError --> N_LogBondNumberNotFoundError_Node0 N_LogBondNumberNotFoundError_Node0 -- No --> E_LogBondNumberNotFoundError
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
Bond number is valid but no cargo records exist for the bond
WHEN:
The system encounters bond not found condition
THEN:
An error is logged indicating bond number not found
β Consolidated Acceptance Criteria
- The system processes the N7 segment for car identification → the car initial and car number are extracted and combined to form the complete car ID
- The system processes the N7 segment for car identification → the car initial and car number are extracted and combined to form the complete car ID
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExtractCarIDfromN7Segment(["Start Step"])
E_ExtractCarIDfromN7Segment(["End Step"])
N_ExtractCarIDfromN7Segment_Node0{"The system processes the N7 segment
for car identification"}:::decision N_ExtractCarIDfromN7Segment_Node0_action["The car initial and car number are
extracted and combined to form the
complete car ID"]:::main N_ExtractCarIDfromN7Segment_Node0 -- Yes --> N_ExtractCarIDfromN7Segment_Node0_action N_ExtractCarIDfromN7Segment_Node0_action --> E_ExtractCarIDfromN7Segment S_ExtractCarIDfromN7Segment --> N_ExtractCarIDfromN7Segment_Node0 N_ExtractCarIDfromN7Segment_Node1{"The system processes the N7 segment
for car identification"}:::decision N_ExtractCarIDfromN7Segment_Node1_action["The car initial and car number are
extracted and combined to form the
complete car ID"]:::main N_ExtractCarIDfromN7Segment_Node1 -- Yes --> N_ExtractCarIDfromN7Segment_Node1_action N_ExtractCarIDfromN7Segment_Node1_action --> E_ExtractCarIDfromN7Segment N_ExtractCarIDfromN7Segment_Node0 -- No --> N_ExtractCarIDfromN7Segment_Node1 N_ExtractCarIDfromN7Segment_Node1 -- No --> E_ExtractCarIDfromN7Segment
for car identification"}:::decision N_ExtractCarIDfromN7Segment_Node0_action["The car initial and car number are
extracted and combined to form the
complete car ID"]:::main N_ExtractCarIDfromN7Segment_Node0 -- Yes --> N_ExtractCarIDfromN7Segment_Node0_action N_ExtractCarIDfromN7Segment_Node0_action --> E_ExtractCarIDfromN7Segment S_ExtractCarIDfromN7Segment --> N_ExtractCarIDfromN7Segment_Node0 N_ExtractCarIDfromN7Segment_Node1{"The system processes the N7 segment
for car identification"}:::decision N_ExtractCarIDfromN7Segment_Node1_action["The car initial and car number are
extracted and combined to form the
complete car ID"]:::main N_ExtractCarIDfromN7Segment_Node1 -- Yes --> N_ExtractCarIDfromN7Segment_Node1_action N_ExtractCarIDfromN7Segment_Node1_action --> E_ExtractCarIDfromN7Segment N_ExtractCarIDfromN7Segment_Node0 -- No --> N_ExtractCarIDfromN7Segment_Node1 N_ExtractCarIDfromN7Segment_Node1 -- No --> E_ExtractCarIDfromN7Segment
File: GCX016.cbl
GIVEN:
An N7 equipment segment is available in the message
WHEN:
The system processes the N7 segment for car identification
THEN:
- The car initial
- Car number are extracted
- Combined to form the complete car id
File: GCX016.cbl
GIVEN:
An N7 equipment segment is available in the message
WHEN:
The system processes the N7 segment for car identification
THEN:
- The car initial
- Car number are extracted
- Combined to form the complete car id
β Consolidated Acceptance Criteria
- The system processes the X4 segment for waybill identification → the waybill number is extracted from the X4 segment data
- The system processes the X4 segment for waybill identification → the waybill number is extracted from the X4 segment data
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExtractWaybillNumberfromX4Segment(["Start Step"])
E_ExtractWaybillNumberfromX4Segment(["End Step"])
N_ExtractWaybillNumberfromX4Segment_Node0{"The system processes the X4 segment
for waybill identification"}:::decision N_ExtractWaybillNumberfromX4Segment_Node0_action["The waybill number is extracted
from the X4 segment data"]:::main N_ExtractWaybillNumberfromX4Segment_Node0 -- Yes --> N_ExtractWaybillNumberfromX4Segment_Node0_action N_ExtractWaybillNumberfromX4Segment_Node0_action --> E_ExtractWaybillNumberfromX4Segment S_ExtractWaybillNumberfromX4Segment --> N_ExtractWaybillNumberfromX4Segment_Node0 N_ExtractWaybillNumberfromX4Segment_Node1{"The system processes the X4 segment
for waybill identification"}:::decision N_ExtractWaybillNumberfromX4Segment_Node1_action["The waybill number is extracted
from the X4 segment data"]:::main N_ExtractWaybillNumberfromX4Segment_Node1 -- Yes --> N_ExtractWaybillNumberfromX4Segment_Node1_action N_ExtractWaybillNumberfromX4Segment_Node1_action --> E_ExtractWaybillNumberfromX4Segment N_ExtractWaybillNumberfromX4Segment_Node0 -- No --> N_ExtractWaybillNumberfromX4Segment_Node1 N_ExtractWaybillNumberfromX4Segment_Node1 -- No --> E_ExtractWaybillNumberfromX4Segment
for waybill identification"}:::decision N_ExtractWaybillNumberfromX4Segment_Node0_action["The waybill number is extracted
from the X4 segment data"]:::main N_ExtractWaybillNumberfromX4Segment_Node0 -- Yes --> N_ExtractWaybillNumberfromX4Segment_Node0_action N_ExtractWaybillNumberfromX4Segment_Node0_action --> E_ExtractWaybillNumberfromX4Segment S_ExtractWaybillNumberfromX4Segment --> N_ExtractWaybillNumberfromX4Segment_Node0 N_ExtractWaybillNumberfromX4Segment_Node1{"The system processes the X4 segment
for waybill identification"}:::decision N_ExtractWaybillNumberfromX4Segment_Node1_action["The waybill number is extracted
from the X4 segment data"]:::main N_ExtractWaybillNumberfromX4Segment_Node1 -- Yes --> N_ExtractWaybillNumberfromX4Segment_Node1_action N_ExtractWaybillNumberfromX4Segment_Node1_action --> E_ExtractWaybillNumberfromX4Segment N_ExtractWaybillNumberfromX4Segment_Node0 -- No --> N_ExtractWaybillNumberfromX4Segment_Node1 N_ExtractWaybillNumberfromX4Segment_Node1 -- No --> E_ExtractWaybillNumberfromX4Segment
File: GCX016.cbl
GIVEN:
An X4 customs release segment contains waybill information
WHEN:
The system processes the X4 segment for waybill identification
THEN:
The waybill number is extracted from the X4 segment data
File: GCX016.cbl
GIVEN:
An X4 customs release segment contains waybill information
WHEN:
The system processes the X4 segment for waybill identification
THEN:
The waybill number is extracted from the X4 segment data
β Consolidated Acceptance Criteria
- The system validates the extracted identification data → processing continues if both car ID and waybill are valid, otherwise error handling is initiated
- The system validates the car-waybill combination → processing continues if both values are valid, otherwise error handling is triggered
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CarIDandWaybillValid(["Start Step"])
E_CarIDandWaybillValid(["End Step"])
N_CarIDandWaybillValid_Node0{"The system validates the extracted
identification data"}:::decision N_CarIDandWaybillValid_Node0_action["Processing continues if both car ID
and waybill are valid, otherwise
error handling is initiated"]:::main N_CarIDandWaybillValid_Node0 -- Yes --> N_CarIDandWaybillValid_Node0_action N_CarIDandWaybillValid_Node0_action --> E_CarIDandWaybillValid S_CarIDandWaybillValid --> N_CarIDandWaybillValid_Node0 N_CarIDandWaybillValid_Node1{"The system validates the
car-waybill combination"}:::decision N_CarIDandWaybillValid_Node1_action["Processing continues if both values
are valid, otherwise error handling
is triggered"]:::main N_CarIDandWaybillValid_Node1 -- Yes --> N_CarIDandWaybillValid_Node1_action N_CarIDandWaybillValid_Node1_action --> E_CarIDandWaybillValid N_CarIDandWaybillValid_Node0 -- No --> N_CarIDandWaybillValid_Node1 N_CarIDandWaybillValid_Node1 -- No --> E_CarIDandWaybillValid
identification data"}:::decision N_CarIDandWaybillValid_Node0_action["Processing continues if both car ID
and waybill are valid, otherwise
error handling is initiated"]:::main N_CarIDandWaybillValid_Node0 -- Yes --> N_CarIDandWaybillValid_Node0_action N_CarIDandWaybillValid_Node0_action --> E_CarIDandWaybillValid S_CarIDandWaybillValid --> N_CarIDandWaybillValid_Node0 N_CarIDandWaybillValid_Node1{"The system validates the
car-waybill combination"}:::decision N_CarIDandWaybillValid_Node1_action["Processing continues if both values
are valid, otherwise error handling
is triggered"]:::main N_CarIDandWaybillValid_Node1 -- Yes --> N_CarIDandWaybillValid_Node1_action N_CarIDandWaybillValid_Node1_action --> E_CarIDandWaybillValid N_CarIDandWaybillValid_Node0 -- No --> N_CarIDandWaybillValid_Node1 N_CarIDandWaybillValid_Node1 -- No --> E_CarIDandWaybillValid
File: GCX016.cbl
GIVEN:
Car ID and waybill number have been extracted from message segments
WHEN:
The system validates the extracted identification data
THEN:
- Processing continues if both car id
- Waybill are valid, otherwise error handling is initiated
File: GCX016.cbl
GIVEN:
Car ID and waybill number have been extracted from message segments
WHEN:
The system validates the car-waybill combination
THEN:
Processing continues if both values are valid, otherwise error handling is triggered
β Consolidated Acceptance Criteria
- The system prepares to search for cargo records → a composite key is built combining the car ID and waybill number for database search operations
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_BuildCargoKeywithCarIDWaybill(["Start Step"])
E_BuildCargoKeywithCarIDWaybill(["End Step"])
N_BuildCargoKeywithCarIDWaybill_Node0{"The system prepares to search for
cargo records"}:::decision N_BuildCargoKeywithCarIDWaybill_Node0_action["A composite key is built combining
the car ID and waybill number for
database search operations"]:::main N_BuildCargoKeywithCarIDWaybill_Node0 -- Yes --> N_BuildCargoKeywithCarIDWaybill_Node0_action N_BuildCargoKeywithCarIDWaybill_Node0_action --> E_BuildCargoKeywithCarIDWaybill S_BuildCargoKeywithCarIDWaybill --> N_BuildCargoKeywithCarIDWaybill_Node0 N_BuildCargoKeywithCarIDWaybill_Node0 -- No --> E_BuildCargoKeywithCarIDWaybill
cargo records"}:::decision N_BuildCargoKeywithCarIDWaybill_Node0_action["A composite key is built combining
the car ID and waybill number for
database search operations"]:::main N_BuildCargoKeywithCarIDWaybill_Node0 -- Yes --> N_BuildCargoKeywithCarIDWaybill_Node0_action N_BuildCargoKeywithCarIDWaybill_Node0_action --> E_BuildCargoKeywithCarIDWaybill S_BuildCargoKeywithCarIDWaybill --> N_BuildCargoKeywithCarIDWaybill_Node0 N_BuildCargoKeywithCarIDWaybill_Node0 -- No --> E_BuildCargoKeywithCarIDWaybill
File: GCX016.cbl
GIVEN:
Valid car ID and waybill number are available
WHEN:
The system prepares to search for cargo records
THEN:
- A composite key is built combining the car id
- Waybill number for database search operations
β Consolidated Acceptance Criteria
- The system searches the cargo database → the database is queried using the car/waybill index to locate matching cargo records
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SearchCargoDatabasebyCarWaybillIndex(["Start Step"])
E_SearchCargoDatabasebyCarWaybillIndex(["End Step"])
N_SearchCargoDatabasebyCarWaybillIndex_Node0{"The system searches the cargo
database"}:::decision N_SearchCargoDatabasebyCarWaybillIndex_Node0_action["The database is queried using the
carwaybill index to locate matching
cargo records"]:::main N_SearchCargoDatabasebyCarWaybillIndex_Node0 -- Yes --> N_SearchCargoDatabasebyCarWaybillIndex_Node0_action N_SearchCargoDatabasebyCarWaybillIndex_Node0_action --> E_SearchCargoDatabasebyCarWaybillIndex S_SearchCargoDatabasebyCarWaybillIndex --> N_SearchCargoDatabasebyCarWaybillIndex_Node0 N_SearchCargoDatabasebyCarWaybillIndex_Node0 -- No --> E_SearchCargoDatabasebyCarWaybillIndex
database"}:::decision N_SearchCargoDatabasebyCarWaybillIndex_Node0_action["The database is queried using the
carwaybill index to locate matching
cargo records"]:::main N_SearchCargoDatabasebyCarWaybillIndex_Node0 -- Yes --> N_SearchCargoDatabasebyCarWaybillIndex_Node0_action N_SearchCargoDatabasebyCarWaybillIndex_Node0_action --> E_SearchCargoDatabasebyCarWaybillIndex S_SearchCargoDatabasebyCarWaybillIndex --> N_SearchCargoDatabasebyCarWaybillIndex_Node0 N_SearchCargoDatabasebyCarWaybillIndex_Node0 -- No --> E_SearchCargoDatabasebyCarWaybillIndex
File: GCX016.cbl
GIVEN:
A composite search key with car ID and waybill is constructed
WHEN:
The system searches the cargo database
THEN:
The database is queried using the car/waybill index to locate matching cargo records
β Consolidated Acceptance Criteria
- The system validates the cargo record status → the cargo record is deemed usable if it is not deleted and meets processing criteria
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CargoUsable(["Start Step"])
E_CargoUsable(["End Step"])
N_CargoUsable_Node0{"The system validates the cargo
record status"}:::decision N_CargoUsable_Node0_action["The cargo record is deemed usable
if it is not deleted and meets
processing criteria"]:::main N_CargoUsable_Node0 -- Yes --> N_CargoUsable_Node0_action N_CargoUsable_Node0_action --> E_CargoUsable S_CargoUsable --> N_CargoUsable_Node0 N_CargoUsable_Node0 -- No --> E_CargoUsable
record status"}:::decision N_CargoUsable_Node0_action["The cargo record is deemed usable
if it is not deleted and meets
processing criteria"]:::main N_CargoUsable_Node0 -- Yes --> N_CargoUsable_Node0_action N_CargoUsable_Node0_action --> E_CargoUsable S_CargoUsable --> N_CargoUsable_Node0 N_CargoUsable_Node0 -- No --> E_CargoUsable
File: GCX016.cbl
GIVEN:
A cargo record has been retrieved from the database
WHEN:
The system validates the cargo record status
THEN:
- The cargo record is deemed usable if it is not deleted
- Meets processing criteria
β Consolidated Acceptance Criteria
- The system completes cargo retrieval operations → the cargo record is returned for customs release processing with success status
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ReturnCargoRecordforProcessing(["Start Step"])
E_ReturnCargoRecordforProcessing(["End Step"])
N_ReturnCargoRecordforProcessing_Node0{"The system completes cargo
retrieval operations"}:::decision N_ReturnCargoRecordforProcessing_Node0_action["The cargo record is returned for
customs release processing with
success status"]:::main N_ReturnCargoRecordforProcessing_Node0 -- Yes --> N_ReturnCargoRecordforProcessing_Node0_action N_ReturnCargoRecordforProcessing_Node0_action --> E_ReturnCargoRecordforProcessing S_ReturnCargoRecordforProcessing --> N_ReturnCargoRecordforProcessing_Node0 N_ReturnCargoRecordforProcessing_Node0 -- No --> E_ReturnCargoRecordforProcessing
retrieval operations"}:::decision N_ReturnCargoRecordforProcessing_Node0_action["The cargo record is returned for
customs release processing with
success status"]:::main N_ReturnCargoRecordforProcessing_Node0 -- Yes --> N_ReturnCargoRecordforProcessing_Node0_action N_ReturnCargoRecordforProcessing_Node0_action --> E_ReturnCargoRecordforProcessing S_ReturnCargoRecordforProcessing --> N_ReturnCargoRecordforProcessing_Node0 N_ReturnCargoRecordforProcessing_Node0 -- No --> E_ReturnCargoRecordforProcessing
File: GCX016.cbl
GIVEN:
A cargo record has been validated as usable
WHEN:
The system completes cargo retrieval operations
THEN:
The cargo record is returned for customs release processing with success status
β Consolidated Acceptance Criteria
- The system attempts alternative search strategies → alternative car ID formats are tried to locate cargo records
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_TryAlternativeCarIDFormat(["Start Step"])
E_TryAlternativeCarIDFormat(["End Step"])
N_TryAlternativeCarIDFormat_Node0{"The system attempts alternative
search strategies"}:::decision N_TryAlternativeCarIDFormat_Node0_action["Alternative car ID formats are
tried to locate cargo records"]:::main N_TryAlternativeCarIDFormat_Node0 -- Yes --> N_TryAlternativeCarIDFormat_Node0_action N_TryAlternativeCarIDFormat_Node0_action --> E_TryAlternativeCarIDFormat S_TryAlternativeCarIDFormat --> N_TryAlternativeCarIDFormat_Node0 N_TryAlternativeCarIDFormat_Node0 -- No --> E_TryAlternativeCarIDFormat
search strategies"}:::decision N_TryAlternativeCarIDFormat_Node0_action["Alternative car ID formats are
tried to locate cargo records"]:::main N_TryAlternativeCarIDFormat_Node0 -- Yes --> N_TryAlternativeCarIDFormat_Node0_action N_TryAlternativeCarIDFormat_Node0_action --> E_TryAlternativeCarIDFormat S_TryAlternativeCarIDFormat --> N_TryAlternativeCarIDFormat_Node0 N_TryAlternativeCarIDFormat_Node0 -- No --> E_TryAlternativeCarIDFormat
File: GCX016.cbl
GIVEN:
Initial cargo search using standard car ID format has failed
WHEN:
The system attempts alternative search strategies
THEN:
Alternative car ID formats are tried to locate cargo records
β Consolidated Acceptance Criteria
- If alternative search options → the system determines if alternative car ID formats can be attempted
- The system checks for more format options → the system determines if additional format alternatives exist or matching should be concluded
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AlternativeFormatAvailable(["Start Step"])
E_AlternativeFormatAvailable(["End Step"])
N_AlternativeFormatAvailable_Node0{"The system evaluates alternative
search options"}:::decision N_AlternativeFormatAvailable_Node0_action["The system determines if
alternative car ID formats can be
attempted"]:::main N_AlternativeFormatAvailable_Node0 -- Yes --> N_AlternativeFormatAvailable_Node0_action N_AlternativeFormatAvailable_Node0_action --> E_AlternativeFormatAvailable S_AlternativeFormatAvailable --> N_AlternativeFormatAvailable_Node0 N_AlternativeFormatAvailable_Node1{"The system checks for more format
options"}:::decision N_AlternativeFormatAvailable_Node1_action["The system determines if additional
format alternatives exist or
matching should be concluded"]:::main N_AlternativeFormatAvailable_Node1 -- Yes --> N_AlternativeFormatAvailable_Node1_action N_AlternativeFormatAvailable_Node1_action --> E_AlternativeFormatAvailable N_AlternativeFormatAvailable_Node0 -- No --> N_AlternativeFormatAvailable_Node1 N_AlternativeFormatAvailable_Node1 -- No --> E_AlternativeFormatAvailable
search options"}:::decision N_AlternativeFormatAvailable_Node0_action["The system determines if
alternative car ID formats can be
attempted"]:::main N_AlternativeFormatAvailable_Node0 -- Yes --> N_AlternativeFormatAvailable_Node0_action N_AlternativeFormatAvailable_Node0_action --> E_AlternativeFormatAvailable S_AlternativeFormatAvailable --> N_AlternativeFormatAvailable_Node0 N_AlternativeFormatAvailable_Node1{"The system checks for more format
options"}:::decision N_AlternativeFormatAvailable_Node1_action["The system determines if additional
format alternatives exist or
matching should be concluded"]:::main N_AlternativeFormatAvailable_Node1 -- Yes --> N_AlternativeFormatAvailable_Node1_action N_AlternativeFormatAvailable_Node1_action --> E_AlternativeFormatAvailable N_AlternativeFormatAvailable_Node0 -- No --> N_AlternativeFormatAvailable_Node1 N_AlternativeFormatAvailable_Node1 -- No --> E_AlternativeFormatAvailable
File: GCX016.cbl
GIVEN:
Standard car ID format search has failed
WHEN:
The system evaluates alternative search options
THEN:
The system determines if alternative car ID formats can be attempted
File: GCX016.cbl
GIVEN:
Alternative equipment formatting has been attempted
WHEN:
The system checks for more format options
THEN:
The system determines if additional format alternatives exist or matching should be concluded
β Consolidated Acceptance Criteria
- The system performs partial matching search → the database is searched using partial car ID criteria to locate potential matches
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SearchwithPartialCarIDMatch(["Start Step"])
E_SearchwithPartialCarIDMatch(["End Step"])
N_SearchwithPartialCarIDMatch_Node0{"The system performs partial
matching search"}:::decision N_SearchwithPartialCarIDMatch_Node0_action["The database is searched using
partial car ID criteria to locate
potential matches"]:::main N_SearchwithPartialCarIDMatch_Node0 -- Yes --> N_SearchwithPartialCarIDMatch_Node0_action N_SearchwithPartialCarIDMatch_Node0_action --> E_SearchwithPartialCarIDMatch S_SearchwithPartialCarIDMatch --> N_SearchwithPartialCarIDMatch_Node0 N_SearchwithPartialCarIDMatch_Node0 -- No --> E_SearchwithPartialCarIDMatch
matching search"}:::decision N_SearchwithPartialCarIDMatch_Node0_action["The database is searched using
partial car ID criteria to locate
potential matches"]:::main N_SearchwithPartialCarIDMatch_Node0 -- Yes --> N_SearchwithPartialCarIDMatch_Node0_action N_SearchwithPartialCarIDMatch_Node0_action --> E_SearchwithPartialCarIDMatch S_SearchwithPartialCarIDMatch --> N_SearchwithPartialCarIDMatch_Node0 N_SearchwithPartialCarIDMatch_Node0 -- No --> E_SearchwithPartialCarIDMatch
File: GCX016.cbl
GIVEN:
Exact car ID matching has failed and alternative formats are available
WHEN:
The system performs partial matching search
THEN:
The database is searched using partial car ID criteria to locate potential matches
β Consolidated Acceptance Criteria
- If the partial match results → the system determines if acceptable cargo records were found through partial matching
- If the partial match results → if a partial match is found, return the matched cargo record; if no partial match is found, attempt broader search without US-CCN
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_PartialMatchFound(["Start Step"])
E_PartialMatchFound(["End Step"])
N_PartialMatchFound_Node0{"The system evaluates the partial
match results"}:::decision N_PartialMatchFound_Node0_action["The system determines if acceptable
cargo records were found through
partial matching"]:::main N_PartialMatchFound_Node0 -- Yes --> N_PartialMatchFound_Node0_action N_PartialMatchFound_Node0_action --> E_PartialMatchFound S_PartialMatchFound --> N_PartialMatchFound_Node0 N_PartialMatchFound_Node1{"The system evaluates the partial
match results"}:::decision N_PartialMatchFound_Node1_action["If a partial match is found, return
the matched cargo record if no
partial match is found, attempt
broader search without US-CCN"]:::main N_PartialMatchFound_Node1 -- Yes --> N_PartialMatchFound_Node1_action N_PartialMatchFound_Node1_action --> E_PartialMatchFound N_PartialMatchFound_Node0 -- No --> N_PartialMatchFound_Node1 N_PartialMatchFound_Node1 -- No --> E_PartialMatchFound
match results"}:::decision N_PartialMatchFound_Node0_action["The system determines if acceptable
cargo records were found through
partial matching"]:::main N_PartialMatchFound_Node0 -- Yes --> N_PartialMatchFound_Node0_action N_PartialMatchFound_Node0_action --> E_PartialMatchFound S_PartialMatchFound --> N_PartialMatchFound_Node0 N_PartialMatchFound_Node1{"The system evaluates the partial
match results"}:::decision N_PartialMatchFound_Node1_action["If a partial match is found, return
the matched cargo record if no
partial match is found, attempt
broader search without US-CCN"]:::main N_PartialMatchFound_Node1 -- Yes --> N_PartialMatchFound_Node1_action N_PartialMatchFound_Node1_action --> E_PartialMatchFound N_PartialMatchFound_Node0 -- No --> N_PartialMatchFound_Node1 N_PartialMatchFound_Node1 -- No --> E_PartialMatchFound
File: GCX016.cbl
GIVEN:
Partial car ID matching search has been performed
WHEN:
The system evaluates the partial match results
THEN:
The system determines if acceptable cargo records were found through partial matching
File: GCX016.cbl
GIVEN:
Partial US-CCN key matching has been attempted
WHEN:
The system evaluates the partial match results
THEN:
If a partial match is found, return the matched cargo record; if no partial match is found, attempt broader search without US-CCN
β Consolidated Acceptance Criteria
- The system handles the cargo not found condition → an error is logged indicating that cargo could not be found for the specified car and waybill
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogCarWaybillNotFoundError(["Start Step"])
E_LogCarWaybillNotFoundError(["End Step"])
N_LogCarWaybillNotFoundError_Node0{"The system handles the cargo not
found condition"}:::decision N_LogCarWaybillNotFoundError_Node0_action["An error is logged indicating that
cargo could not be found for the
specified car and waybill"]:::main N_LogCarWaybillNotFoundError_Node0 -- Yes --> N_LogCarWaybillNotFoundError_Node0_action N_LogCarWaybillNotFoundError_Node0_action --> E_LogCarWaybillNotFoundError S_LogCarWaybillNotFoundError --> N_LogCarWaybillNotFoundError_Node0 N_LogCarWaybillNotFoundError_Node0 -- No --> E_LogCarWaybillNotFoundError
found condition"}:::decision N_LogCarWaybillNotFoundError_Node0_action["An error is logged indicating that
cargo could not be found for the
specified car and waybill"]:::main N_LogCarWaybillNotFoundError_Node0 -- Yes --> N_LogCarWaybillNotFoundError_Node0_action N_LogCarWaybillNotFoundError_Node0_action --> E_LogCarWaybillNotFoundError S_LogCarWaybillNotFoundError --> N_LogCarWaybillNotFoundError_Node0 N_LogCarWaybillNotFoundError_Node0 -- No --> E_LogCarWaybillNotFoundError
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
All search attempts for cargo using car ID and waybill have failed
WHEN:
The system handles the cargo not found condition
THEN:
- An error is logged indicating that cargo could not be found for the specified car
- Waybill
β Consolidated Acceptance Criteria
- The system handles missing cargo scenarios → a foreign bill entry is created to handle the unmatched cargo information
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CreateForeignBillEntry(["Start Step"])
E_CreateForeignBillEntry(["End Step"])
N_CreateForeignBillEntry_Node0{"The system handles missing cargo
scenarios"}:::decision N_CreateForeignBillEntry_Node0_action["A foreign bill entry is created to
handle the unmatched cargo
information"]:::main N_CreateForeignBillEntry_Node0 -- Yes --> N_CreateForeignBillEntry_Node0_action N_CreateForeignBillEntry_Node0_action --> E_CreateForeignBillEntry S_CreateForeignBillEntry --> N_CreateForeignBillEntry_Node0 N_CreateForeignBillEntry_Node0 -- No --> E_CreateForeignBillEntry
scenarios"}:::decision N_CreateForeignBillEntry_Node0_action["A foreign bill entry is created to
handle the unmatched cargo
information"]:::main N_CreateForeignBillEntry_Node0 -- Yes --> N_CreateForeignBillEntry_Node0_action N_CreateForeignBillEntry_Node0_action --> E_CreateForeignBillEntry S_CreateForeignBillEntry --> N_CreateForeignBillEntry_Node0 N_CreateForeignBillEntry_Node0 -- No --> E_CreateForeignBillEntry
File: GCX016.cbl
GIVEN:
Cargo cannot be found for the specified car ID and waybill combination
WHEN:
The system handles missing cargo scenarios
THEN:
A foreign bill entry is created to handle the unmatched cargo information
β Consolidated Acceptance Criteria
- The CPRS cargo is not found in the system → the system increments the error counter AND creates error message with format 'USCS *ERROR** DC:' + disposition code + CCN key + '*NotFound*' AND sets cargo not found flag AND generates error report
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GenerateCPRSCargoNotFoundError(["Start Step"])
E_GenerateCPRSCargoNotFoundError(["End Step"])
N_GenerateCPRSCargoNotFoundError_Node0{"The CPRS cargo is not found in the
system"}:::decision N_GenerateCPRSCargoNotFoundError_Node0_action["The system increments the error
counter AND creates error message
with format USCS ERROR DC:
disposition code CCN key NotFound
AND sets cargo not found flag AND
generates error report"]:::main N_GenerateCPRSCargoNotFoundError_Node0 -- Yes --> N_GenerateCPRSCargoNotFoundError_Node0_action N_GenerateCPRSCargoNotFoundError_Node0_action --> E_GenerateCPRSCargoNotFoundError S_GenerateCPRSCargoNotFoundError --> N_GenerateCPRSCargoNotFoundError_Node0 N_GenerateCPRSCargoNotFoundError_Node0 -- No --> E_GenerateCPRSCargoNotFoundError
system"}:::decision N_GenerateCPRSCargoNotFoundError_Node0_action["The system increments the error
counter AND creates error message
with format USCS ERROR DC:
disposition code CCN key NotFound
AND sets cargo not found flag AND
generates error report"]:::main N_GenerateCPRSCargoNotFoundError_Node0 -- Yes --> N_GenerateCPRSCargoNotFoundError_Node0_action N_GenerateCPRSCargoNotFoundError_Node0_action --> E_GenerateCPRSCargoNotFoundError S_GenerateCPRSCargoNotFoundError --> N_GenerateCPRSCargoNotFoundError_Node0 N_GenerateCPRSCargoNotFoundError_Node0 -- No --> E_GenerateCPRSCargoNotFoundError
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
A CPRS cargo processing request is received with disposition code and CCN key
WHEN:
The CPRS cargo is not found in the system
THEN:
- The system increments the error counter
- Creates error message with format 'uscs *error** dc:' + disposition code + ccn key + '*notfound*' and sets cargo not found flag
- Generates error report
β Consolidated Acceptance Criteria
- The disposition code is MRL (Manual Release) → the system processes the manual release AND clears the destination index AND processes Canadian manifest coordination
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ProcessManualReleaseforCPRS(["Start Step"])
E_ProcessManualReleaseforCPRS(["End Step"])
N_ProcessManualReleaseforCPRS_Node0{"The disposition code is MRL Manual
Release"}:::decision N_ProcessManualReleaseforCPRS_Node0_action["The system processes the manual
release AND clears the destination
index AND processes Canadian
manifest coordination"]:::main N_ProcessManualReleaseforCPRS_Node0 -- Yes --> N_ProcessManualReleaseforCPRS_Node0_action N_ProcessManualReleaseforCPRS_Node0_action --> E_ProcessManualReleaseforCPRS S_ProcessManualReleaseforCPRS --> N_ProcessManualReleaseforCPRS_Node0 N_ProcessManualReleaseforCPRS_Node0 -- No --> E_ProcessManualReleaseforCPRS
Release"}:::decision N_ProcessManualReleaseforCPRS_Node0_action["The system processes the manual
release AND clears the destination
index AND processes Canadian
manifest coordination"]:::main N_ProcessManualReleaseforCPRS_Node0 -- Yes --> N_ProcessManualReleaseforCPRS_Node0_action N_ProcessManualReleaseforCPRS_Node0_action --> E_ProcessManualReleaseforCPRS S_ProcessManualReleaseforCPRS --> N_ProcessManualReleaseforCPRS_Node0 N_ProcessManualReleaseforCPRS_Node0 -- No --> E_ProcessManualReleaseforCPRS
File: GCX016.cbl
GIVEN:
A CPRS cargo is found in the system with a disposition code
WHEN:
The disposition code is MRL (Manual Release)
THEN:
- The system processes the manual release
- Clears the destination index
- Processes canadian manifest coordination
β Consolidated Acceptance Criteria
- Canadian Pacific tax number is present in the cargo record → the system processes the CPRS tax number AND updates tax information in the cargo record
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ProcessCPRSTaxNumber(["Start Step"])
E_ProcessCPRSTaxNumber(["End Step"])
N_ProcessCPRSTaxNumber_Node0{"Canadian Pacific tax number is
present in the cargo record"}:::decision N_ProcessCPRSTaxNumber_Node0_action["The system processes the CPRS tax
number AND updates tax information
in the cargo record"]:::main N_ProcessCPRSTaxNumber_Node0 -- Yes --> N_ProcessCPRSTaxNumber_Node0_action N_ProcessCPRSTaxNumber_Node0_action --> E_ProcessCPRSTaxNumber S_ProcessCPRSTaxNumber --> N_ProcessCPRSTaxNumber_Node0 N_ProcessCPRSTaxNumber_Node0 -- No --> E_ProcessCPRSTaxNumber
present in the cargo record"}:::decision N_ProcessCPRSTaxNumber_Node0_action["The system processes the CPRS tax
number AND updates tax information
in the cargo record"]:::main N_ProcessCPRSTaxNumber_Node0 -- Yes --> N_ProcessCPRSTaxNumber_Node0_action N_ProcessCPRSTaxNumber_Node0_action --> E_ProcessCPRSTaxNumber S_ProcessCPRSTaxNumber --> N_ProcessCPRSTaxNumber_Node0 N_ProcessCPRSTaxNumber_Node0 -- No --> E_ProcessCPRSTaxNumber
File: GCX016.cbl
GIVEN:
A CPRS cargo is being processed with tax number information available
WHEN:
Canadian Pacific tax number is present in the cargo record
THEN:
- The system processes the cprs tax number
- Updates tax information in the cargo record
β Consolidated Acceptance Criteria
- Canadian manifest match is required for the cargo → the system finds the matching Canadian manifest AND generates log message for Canadian CCN
- The system searches for matching Canadian manifest records → matching Canadian manifest records are identified and retrieved for coordination
- Canadian coordination processing is initiated → the system shall search for matching Canadian manifest records using waybill number AND equipment ID AND establish coordination link if found
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_FindMatchingCanadianManifest(["Start Step"])
E_FindMatchingCanadianManifest(["End Step"])
N_FindMatchingCanadianManifest_Node0{"Canadian manifest match is required
for the cargo"}:::decision N_FindMatchingCanadianManifest_Node0_action["The system finds the matching
Canadian manifest AND generates log
message for Canadian CCN"]:::main N_FindMatchingCanadianManifest_Node0 -- Yes --> N_FindMatchingCanadianManifest_Node0_action N_FindMatchingCanadianManifest_Node0_action --> E_FindMatchingCanadianManifest S_FindMatchingCanadianManifest --> N_FindMatchingCanadianManifest_Node0 N_FindMatchingCanadianManifest_Node1{"The system searches for matching
Canadian manifest records"}:::decision N_FindMatchingCanadianManifest_Node1_action["Matching Canadian manifest records
are identified and retrieved for
coordination"]:::main N_FindMatchingCanadianManifest_Node1 -- Yes --> N_FindMatchingCanadianManifest_Node1_action N_FindMatchingCanadianManifest_Node1_action --> E_FindMatchingCanadianManifest N_FindMatchingCanadianManifest_Node0 -- No --> N_FindMatchingCanadianManifest_Node1 N_FindMatchingCanadianManifest_Node2{"Canadian coordination processing is
initiated"}:::decision N_FindMatchingCanadianManifest_Node2_action["The system shall search for
matching Canadian manifest records
using waybill number AND equipment
ID AND establish coordination link
if found"]:::main N_FindMatchingCanadianManifest_Node2 -- Yes --> N_FindMatchingCanadianManifest_Node2_action N_FindMatchingCanadianManifest_Node2_action --> E_FindMatchingCanadianManifest N_FindMatchingCanadianManifest_Node1 -- No --> N_FindMatchingCanadianManifest_Node2 N_FindMatchingCanadianManifest_Node2 -- No --> E_FindMatchingCanadianManifest
for the cargo"}:::decision N_FindMatchingCanadianManifest_Node0_action["The system finds the matching
Canadian manifest AND generates log
message for Canadian CCN"]:::main N_FindMatchingCanadianManifest_Node0 -- Yes --> N_FindMatchingCanadianManifest_Node0_action N_FindMatchingCanadianManifest_Node0_action --> E_FindMatchingCanadianManifest S_FindMatchingCanadianManifest --> N_FindMatchingCanadianManifest_Node0 N_FindMatchingCanadianManifest_Node1{"The system searches for matching
Canadian manifest records"}:::decision N_FindMatchingCanadianManifest_Node1_action["Matching Canadian manifest records
are identified and retrieved for
coordination"]:::main N_FindMatchingCanadianManifest_Node1 -- Yes --> N_FindMatchingCanadianManifest_Node1_action N_FindMatchingCanadianManifest_Node1_action --> E_FindMatchingCanadianManifest N_FindMatchingCanadianManifest_Node0 -- No --> N_FindMatchingCanadianManifest_Node1 N_FindMatchingCanadianManifest_Node2{"Canadian coordination processing is
initiated"}:::decision N_FindMatchingCanadianManifest_Node2_action["The system shall search for
matching Canadian manifest records
using waybill number AND equipment
ID AND establish coordination link
if found"]:::main N_FindMatchingCanadianManifest_Node2 -- Yes --> N_FindMatchingCanadianManifest_Node2_action N_FindMatchingCanadianManifest_Node2_action --> E_FindMatchingCanadianManifest N_FindMatchingCanadianManifest_Node1 -- No --> N_FindMatchingCanadianManifest_Node2 N_FindMatchingCanadianManifest_Node2 -- No --> E_FindMatchingCanadianManifest
File: GCX016.cbl
GIVEN:
A CPRS cargo is being processed with cross-border status coordination requirements
WHEN:
Canadian manifest match is required for the cargo
THEN:
- The system finds the matching canadian manifest
- Generates log message for canadian ccn
File: GCX016.cbl
GIVEN:
Canadian manifest coordination is required for export cargo
WHEN:
The system searches for matching Canadian manifest records
THEN:
- Matching canadian manifest records are identified
- Retrieved for coordination
File: GCX016.cbl
GIVEN:
Cargo is identified as cross-border movement AND cargo has been manually released
WHEN:
Canadian coordination processing is initiated
THEN:
- The system shall search for matching canadian manifest records using waybill number
- Equipment id
- Establish coordination link if found
β Consolidated Acceptance Criteria
- All CPRS processing steps are completed → the system updates the CPRS cargo status AND generates CPRS processing audit trail
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UpdateCPRSCargoStatus(["Start Step"])
E_UpdateCPRSCargoStatus(["End Step"])
N_UpdateCPRSCargoStatus_Node0{"All CPRS processing steps are
completed"}:::decision N_UpdateCPRSCargoStatus_Node0_action["The system updates the CPRS cargo
status AND generates CPRS processing
audit trail"]:::main N_UpdateCPRSCargoStatus_Node0 -- Yes --> N_UpdateCPRSCargoStatus_Node0_action N_UpdateCPRSCargoStatus_Node0_action --> E_UpdateCPRSCargoStatus S_UpdateCPRSCargoStatus --> N_UpdateCPRSCargoStatus_Node0 N_UpdateCPRSCargoStatus_Node0 -- No --> E_UpdateCPRSCargoStatus
completed"}:::decision N_UpdateCPRSCargoStatus_Node0_action["The system updates the CPRS cargo
status AND generates CPRS processing
audit trail"]:::main N_UpdateCPRSCargoStatus_Node0 -- Yes --> N_UpdateCPRSCargoStatus_Node0_action N_UpdateCPRSCargoStatus_Node0_action --> E_UpdateCPRSCargoStatus S_UpdateCPRSCargoStatus --> N_UpdateCPRSCargoStatus_Node0 N_UpdateCPRSCargoStatus_Node0 -- No --> E_UpdateCPRSCargoStatus
File: GCX016.cbl
GIVEN:
A CPRS cargo has been processed through disposition code handling and Canadian manifest coordination
WHEN:
All CPRS processing steps are completed
THEN:
- The system updates the cprs cargo status
- Generates cprs processing audit trail
β Consolidated Acceptance Criteria
- CPRS cargo processing is finalized → the system generates a comprehensive CPRS processing audit trail for compliance and tracking purposes
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GenerateCPRSProcessingAuditTrail(["Start Step"])
E_GenerateCPRSProcessingAuditTrail(["End Step"])
N_GenerateCPRSProcessingAuditTrail_Node0{"CPRS cargo processing is finalized"}:::decision
N_GenerateCPRSProcessingAuditTrail_Node0_action["The system generates a
comprehensive CPRS processing audit
trail for compliance and tracking
purposes"]:::main N_GenerateCPRSProcessingAuditTrail_Node0 -- Yes --> N_GenerateCPRSProcessingAuditTrail_Node0_action N_GenerateCPRSProcessingAuditTrail_Node0_action --> E_GenerateCPRSProcessingAuditTrail S_GenerateCPRSProcessingAuditTrail --> N_GenerateCPRSProcessingAuditTrail_Node0 N_GenerateCPRSProcessingAuditTrail_Node0 -- No --> E_GenerateCPRSProcessingAuditTrail
comprehensive CPRS processing audit
trail for compliance and tracking
purposes"]:::main N_GenerateCPRSProcessingAuditTrail_Node0 -- Yes --> N_GenerateCPRSProcessingAuditTrail_Node0_action N_GenerateCPRSProcessingAuditTrail_Node0_action --> E_GenerateCPRSProcessingAuditTrail S_GenerateCPRSProcessingAuditTrail --> N_GenerateCPRSProcessingAuditTrail_Node0 N_GenerateCPRSProcessingAuditTrail_Node0 -- No --> E_GenerateCPRSProcessingAuditTrail
File: GCX016.cbl
GIVEN:
A CPRS cargo has completed all processing steps including status updates
WHEN:
CPRS cargo processing is finalized
THEN:
- The system generates a comprehensive cprs processing audit trail for compliance
- Tracking purposes
β Consolidated Acceptance Criteria
- The system creates a new cargo record → the cargo record is initialized with default values including CCN key, waybill number, car information, and segment data from X4
- The system attempts to locate a target cargo record → a new cargo record is created to receive the manifest information
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CreateNewCargoRecord(["Start Step"])
E_CreateNewCargoRecord(["End Step"])
N_CreateNewCargoRecord_Node0{"The system creates a new cargo
record"}:::decision N_CreateNewCargoRecord_Node0_action["The cargo record is initialized
with default values including CCN
key, waybill number, car
information, and segment data from
X4"]:::main N_CreateNewCargoRecord_Node0 -- Yes --> N_CreateNewCargoRecord_Node0_action N_CreateNewCargoRecord_Node0_action --> E_CreateNewCargoRecord S_CreateNewCargoRecord --> N_CreateNewCargoRecord_Node0 N_CreateNewCargoRecord_Node1{"The system attempts to locate a
target cargo record"}:::decision N_CreateNewCargoRecord_Node1_action["A new cargo record is created to
receive the manifest information"]:::main N_CreateNewCargoRecord_Node1 -- Yes --> N_CreateNewCargoRecord_Node1_action N_CreateNewCargoRecord_Node1_action --> E_CreateNewCargoRecord N_CreateNewCargoRecord_Node0 -- No --> N_CreateNewCargoRecord_Node1 N_CreateNewCargoRecord_Node1 -- No --> E_CreateNewCargoRecord
record"}:::decision N_CreateNewCargoRecord_Node0_action["The cargo record is initialized
with default values including CCN
key, waybill number, car
information, and segment data from
X4"]:::main N_CreateNewCargoRecord_Node0 -- Yes --> N_CreateNewCargoRecord_Node0_action N_CreateNewCargoRecord_Node0_action --> E_CreateNewCargoRecord S_CreateNewCargoRecord --> N_CreateNewCargoRecord_Node0 N_CreateNewCargoRecord_Node1{"The system attempts to locate a
target cargo record"}:::decision N_CreateNewCargoRecord_Node1_action["A new cargo record is created to
receive the manifest information"]:::main N_CreateNewCargoRecord_Node1 -- Yes --> N_CreateNewCargoRecord_Node1_action N_CreateNewCargoRecord_Node1_action --> E_CreateNewCargoRecord N_CreateNewCargoRecord_Node0 -- No --> N_CreateNewCargoRecord_Node1 N_CreateNewCargoRecord_Node1 -- No --> E_CreateNewCargoRecord
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
A foreign bill is not found in the system and X4 segment data is available
WHEN:
The system creates a new cargo record
THEN:
The cargo record is initialized with default values including CCN key, waybill number, car information, and segment data from X4
File: GCX016.cbl
GIVEN:
No existing cargo record is found for the manifest data
WHEN:
The system attempts to locate a target cargo record
THEN:
A new cargo record is created to receive the manifest information
β Consolidated Acceptance Criteria
- The system sets the cargo status → the cargo status is set to 'ERROR' and the status description is set to 'ERROR'
- The system sets the cargo status → the cargo status is set to 'SENT' and the status description is set to 'SENT'
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetCPRSUSCSStatus(["Start Step"])
E_SetCPRSUSCSStatus(["End Step"])
N_SetCPRSUSCSStatus_Node0{"The system sets the cargo status"}:::decision
N_SetCPRSUSCSStatus_Node0_action["The cargo status is set to ERROR
and the status description is set to
ERROR"]:::main N_SetCPRSUSCSStatus_Node0 -- Yes --> N_SetCPRSUSCSStatus_Node0_action N_SetCPRSUSCSStatus_Node0_action --> E_SetCPRSUSCSStatus S_SetCPRSUSCSStatus --> N_SetCPRSUSCSStatus_Node0 N_SetCPRSUSCSStatus_Node1{"The system sets the cargo status"}:::decision N_SetCPRSUSCSStatus_Node1_action["The cargo status is set to SENT and
the status description is set to
SENT"]:::main N_SetCPRSUSCSStatus_Node1 -- Yes --> N_SetCPRSUSCSStatus_Node1_action N_SetCPRSUSCSStatus_Node1_action --> E_SetCPRSUSCSStatus N_SetCPRSUSCSStatus_Node0 -- No --> N_SetCPRSUSCSStatus_Node1 N_SetCPRSUSCSStatus_Node1 -- No --> E_SetCPRSUSCSStatus
and the status description is set to
ERROR"]:::main N_SetCPRSUSCSStatus_Node0 -- Yes --> N_SetCPRSUSCSStatus_Node0_action N_SetCPRSUSCSStatus_Node0_action --> E_SetCPRSUSCSStatus S_SetCPRSUSCSStatus --> N_SetCPRSUSCSStatus_Node0 N_SetCPRSUSCSStatus_Node1{"The system sets the cargo status"}:::decision N_SetCPRSUSCSStatus_Node1_action["The cargo status is set to SENT and
the status description is set to
SENT"]:::main N_SetCPRSUSCSStatus_Node1 -- Yes --> N_SetCPRSUSCSStatus_Node1_action N_SetCPRSUSCSStatus_Node1_action --> E_SetCPRSUSCSStatus N_SetCPRSUSCSStatus_Node0 -- No --> N_SetCPRSUSCSStatus_Node1 N_SetCPRSUSCSStatus_Node1 -- No --> E_SetCPRSUSCSStatus
File: GCX016.cbl
GIVEN:
A new cargo record is being created and the cargo type is CPRS
WHEN:
The system sets the cargo status
THEN:
The cargo status is set to 'ERROR' and the status description is set to 'ERROR'
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
A new cargo record is being created and the cargo type is not CPRS
WHEN:
The system sets the cargo status
THEN:
The cargo status is set to 'SENT' and the status description is set to 'SENT'
β Consolidated Acceptance Criteria
- The system sets the acknowledgment status → the acknowledgment status is set to 'ACK' or 'ACK-R' based on system defaults
- Broker information needs to be initialized → set default broker fields and clear broker-specific data elements
- The current cargo status is blank or equals 'ACK-R' → set the acknowledgment status to default value 'ACK' or 'ACK-R'
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetDefaultBrokerInformation(["Start Step"])
E_SetDefaultBrokerInformation(["End Step"])
N_SetDefaultBrokerInformation_Node0{"The system sets the acknowledgment
status"}:::decision N_SetDefaultBrokerInformation_Node0_action["The acknowledgment status is set to
ACK or ACK-R based on system
defaults"]:::main N_SetDefaultBrokerInformation_Node0 -- Yes --> N_SetDefaultBrokerInformation_Node0_action N_SetDefaultBrokerInformation_Node0_action --> E_SetDefaultBrokerInformation S_SetDefaultBrokerInformation --> N_SetDefaultBrokerInformation_Node0 N_SetDefaultBrokerInformation_Node1{"Broker information needs to be
initialized"}:::decision N_SetDefaultBrokerInformation_Node1_action["Set default broker fields and clear
broker-specific data elements"]:::main N_SetDefaultBrokerInformation_Node1 -- Yes --> N_SetDefaultBrokerInformation_Node1_action N_SetDefaultBrokerInformation_Node1_action --> E_SetDefaultBrokerInformation N_SetDefaultBrokerInformation_Node0 -- No --> N_SetDefaultBrokerInformation_Node1 N_SetDefaultBrokerInformation_Node2{"The current cargo status is blank
or equals ACK-R"}:::decision N_SetDefaultBrokerInformation_Node2_action["Set the acknowledgment status to
default value ACK or ACK-R"]:::main N_SetDefaultBrokerInformation_Node2 -- Yes --> N_SetDefaultBrokerInformation_Node2_action N_SetDefaultBrokerInformation_Node2_action --> E_SetDefaultBrokerInformation N_SetDefaultBrokerInformation_Node1 -- No --> N_SetDefaultBrokerInformation_Node2 N_SetDefaultBrokerInformation_Node2 -- No --> E_SetDefaultBrokerInformation
status"}:::decision N_SetDefaultBrokerInformation_Node0_action["The acknowledgment status is set to
ACK or ACK-R based on system
defaults"]:::main N_SetDefaultBrokerInformation_Node0 -- Yes --> N_SetDefaultBrokerInformation_Node0_action N_SetDefaultBrokerInformation_Node0_action --> E_SetDefaultBrokerInformation S_SetDefaultBrokerInformation --> N_SetDefaultBrokerInformation_Node0 N_SetDefaultBrokerInformation_Node1{"Broker information needs to be
initialized"}:::decision N_SetDefaultBrokerInformation_Node1_action["Set default broker fields and clear
broker-specific data elements"]:::main N_SetDefaultBrokerInformation_Node1 -- Yes --> N_SetDefaultBrokerInformation_Node1_action N_SetDefaultBrokerInformation_Node1_action --> E_SetDefaultBrokerInformation N_SetDefaultBrokerInformation_Node0 -- No --> N_SetDefaultBrokerInformation_Node1 N_SetDefaultBrokerInformation_Node2{"The current cargo status is blank
or equals ACK-R"}:::decision N_SetDefaultBrokerInformation_Node2_action["Set the acknowledgment status to
default value ACK or ACK-R"]:::main N_SetDefaultBrokerInformation_Node2 -- Yes --> N_SetDefaultBrokerInformation_Node2_action N_SetDefaultBrokerInformation_Node2_action --> E_SetDefaultBrokerInformation N_SetDefaultBrokerInformation_Node1 -- No --> N_SetDefaultBrokerInformation_Node2 N_SetDefaultBrokerInformation_Node2 -- No --> E_SetDefaultBrokerInformation
File: GCX016.cbl
GIVEN:
A new cargo record is being created and the current acknowledgment status is blank or 'ACK-R'
WHEN:
The system sets the acknowledgment status
THEN:
The acknowledgment status is set to 'ACK' or 'ACK-R' based on system defaults
File: GCX016.cbl
GIVEN:
A new cargo record is being created
WHEN:
Broker information needs to be initialized
THEN:
- Set default broker fields
- Clear broker-specific data elements
File: GCX016.cbl
GIVEN:
A new cargo record is being processed
WHEN:
The current cargo status is blank or equals 'ACK-R'
THEN:
Set the acknowledgment status to default value 'ACK' or 'ACK-R'
β Consolidated Acceptance Criteria
- The system processes the entry type → the cargo is classified as immediate transport and appropriate transport flags are set
- The system processes the entry type → the cargo is classified as transport for export and appropriate export flags are set
- The system processes the entry type → the cargo is classified as immediate export and appropriate export flags are set
- The system processes the entry type → the cargo is classified as US-Canada-US movement and appropriate movement flags are set
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ProcessMasterInBondEntryTypes61626369(["Start Step"])
E_ProcessMasterInBondEntryTypes61626369(["End Step"])
N_ProcessMasterInBondEntryTypes61626369_Node0{"The system processes the entry type"}:::decision
N_ProcessMasterInBondEntryTypes61626369_Node0_action["The cargo is classified as
immediate transport and appropriate
transport flags are set"]:::main N_ProcessMasterInBondEntryTypes61626369_Node0 -- Yes --> N_ProcessMasterInBondEntryTypes61626369_Node0_action N_ProcessMasterInBondEntryTypes61626369_Node0_action --> E_ProcessMasterInBondEntryTypes61626369 S_ProcessMasterInBondEntryTypes61626369 --> N_ProcessMasterInBondEntryTypes61626369_Node0 N_ProcessMasterInBondEntryTypes61626369_Node1{"The system processes the entry type"}:::decision N_ProcessMasterInBondEntryTypes61626369_Node1_action["The cargo is classified as
transport for export and appropriate
export flags are set"]:::main N_ProcessMasterInBondEntryTypes61626369_Node1 -- Yes --> N_ProcessMasterInBondEntryTypes61626369_Node1_action N_ProcessMasterInBondEntryTypes61626369_Node1_action --> E_ProcessMasterInBondEntryTypes61626369 N_ProcessMasterInBondEntryTypes61626369_Node0 -- No --> N_ProcessMasterInBondEntryTypes61626369_Node1 N_ProcessMasterInBondEntryTypes61626369_Node2{"The system processes the entry type"}:::decision N_ProcessMasterInBondEntryTypes61626369_Node2_action["The cargo is classified as
immediate export and appropriate
export flags are set"]:::main N_ProcessMasterInBondEntryTypes61626369_Node2 -- Yes --> N_ProcessMasterInBondEntryTypes61626369_Node2_action N_ProcessMasterInBondEntryTypes61626369_Node2_action --> E_ProcessMasterInBondEntryTypes61626369 N_ProcessMasterInBondEntryTypes61626369_Node1 -- No --> N_ProcessMasterInBondEntryTypes61626369_Node2 N_ProcessMasterInBondEntryTypes61626369_Node3{"The system processes the entry type"}:::decision N_ProcessMasterInBondEntryTypes61626369_Node3_action["The cargo is classified as
US-Canada-US movement and
appropriate movement flags are set"]:::main N_ProcessMasterInBondEntryTypes61626369_Node3 -- Yes --> N_ProcessMasterInBondEntryTypes61626369_Node3_action N_ProcessMasterInBondEntryTypes61626369_Node3_action --> E_ProcessMasterInBondEntryTypes61626369 N_ProcessMasterInBondEntryTypes61626369_Node2 -- No --> N_ProcessMasterInBondEntryTypes61626369_Node3 N_ProcessMasterInBondEntryTypes61626369_Node3 -- No --> E_ProcessMasterInBondEntryTypes61626369
immediate transport and appropriate
transport flags are set"]:::main N_ProcessMasterInBondEntryTypes61626369_Node0 -- Yes --> N_ProcessMasterInBondEntryTypes61626369_Node0_action N_ProcessMasterInBondEntryTypes61626369_Node0_action --> E_ProcessMasterInBondEntryTypes61626369 S_ProcessMasterInBondEntryTypes61626369 --> N_ProcessMasterInBondEntryTypes61626369_Node0 N_ProcessMasterInBondEntryTypes61626369_Node1{"The system processes the entry type"}:::decision N_ProcessMasterInBondEntryTypes61626369_Node1_action["The cargo is classified as
transport for export and appropriate
export flags are set"]:::main N_ProcessMasterInBondEntryTypes61626369_Node1 -- Yes --> N_ProcessMasterInBondEntryTypes61626369_Node1_action N_ProcessMasterInBondEntryTypes61626369_Node1_action --> E_ProcessMasterInBondEntryTypes61626369 N_ProcessMasterInBondEntryTypes61626369_Node0 -- No --> N_ProcessMasterInBondEntryTypes61626369_Node1 N_ProcessMasterInBondEntryTypes61626369_Node2{"The system processes the entry type"}:::decision N_ProcessMasterInBondEntryTypes61626369_Node2_action["The cargo is classified as
immediate export and appropriate
export flags are set"]:::main N_ProcessMasterInBondEntryTypes61626369_Node2 -- Yes --> N_ProcessMasterInBondEntryTypes61626369_Node2_action N_ProcessMasterInBondEntryTypes61626369_Node2_action --> E_ProcessMasterInBondEntryTypes61626369 N_ProcessMasterInBondEntryTypes61626369_Node1 -- No --> N_ProcessMasterInBondEntryTypes61626369_Node2 N_ProcessMasterInBondEntryTypes61626369_Node3{"The system processes the entry type"}:::decision N_ProcessMasterInBondEntryTypes61626369_Node3_action["The cargo is classified as
US-Canada-US movement and
appropriate movement flags are set"]:::main N_ProcessMasterInBondEntryTypes61626369_Node3 -- Yes --> N_ProcessMasterInBondEntryTypes61626369_Node3_action N_ProcessMasterInBondEntryTypes61626369_Node3_action --> E_ProcessMasterInBondEntryTypes61626369 N_ProcessMasterInBondEntryTypes61626369_Node2 -- No --> N_ProcessMasterInBondEntryTypes61626369_Node3 N_ProcessMasterInBondEntryTypes61626369_Node3 -- No --> E_ProcessMasterInBondEntryTypes61626369
File: GCX016.cbl
GIVEN:
A master in-bond cargo has entry type code '61'
WHEN:
The system processes the entry type
THEN:
- The cargo is classified as immediate transport
- Appropriate transport flags are set
File: GCX016.cbl
GIVEN:
A master in-bond cargo has entry type code '62'
WHEN:
The system processes the entry type
THEN:
- The cargo is classified as transport for export
- Appropriate export flags are set
File: GCX016.cbl
GIVEN:
A master in-bond cargo has entry type code '63'
WHEN:
The system processes the entry type
THEN:
- The cargo is classified as immediate export
- Appropriate export flags are set
File: GCX016.cbl
GIVEN:
A master in-bond cargo has entry type code '69'
WHEN:
The system processes the entry type
THEN:
- The cargo is classified as us-canada-us movement
- Appropriate movement flags are set
β Consolidated Acceptance Criteria
- The system processes the entry type → the cargo is processed as standard border entry with default processing rules
- The entry type code is '00' → process as default border entry with standard customs handling
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ProcessBorderEntryTypeCode00(["Start Step"])
E_ProcessBorderEntryTypeCode00(["End Step"])
N_ProcessBorderEntryTypeCode00_Node0{"The system processes the entry type"}:::decision
N_ProcessBorderEntryTypeCode00_Node0_action["The cargo is processed as standard
border entry with default processing
rules"]:::main N_ProcessBorderEntryTypeCode00_Node0 -- Yes --> N_ProcessBorderEntryTypeCode00_Node0_action N_ProcessBorderEntryTypeCode00_Node0_action --> E_ProcessBorderEntryTypeCode00 S_ProcessBorderEntryTypeCode00 --> N_ProcessBorderEntryTypeCode00_Node0 N_ProcessBorderEntryTypeCode00_Node1{"The entry type code is 00"}:::decision N_ProcessBorderEntryTypeCode00_Node1_action["Process as default border entry
with standard customs handling"]:::main N_ProcessBorderEntryTypeCode00_Node1 -- Yes --> N_ProcessBorderEntryTypeCode00_Node1_action N_ProcessBorderEntryTypeCode00_Node1_action --> E_ProcessBorderEntryTypeCode00 N_ProcessBorderEntryTypeCode00_Node0 -- No --> N_ProcessBorderEntryTypeCode00_Node1 N_ProcessBorderEntryTypeCode00_Node1 -- No --> E_ProcessBorderEntryTypeCode00
border entry with default processing
rules"]:::main N_ProcessBorderEntryTypeCode00_Node0 -- Yes --> N_ProcessBorderEntryTypeCode00_Node0_action N_ProcessBorderEntryTypeCode00_Node0_action --> E_ProcessBorderEntryTypeCode00 S_ProcessBorderEntryTypeCode00 --> N_ProcessBorderEntryTypeCode00_Node0 N_ProcessBorderEntryTypeCode00_Node1{"The entry type code is 00"}:::decision N_ProcessBorderEntryTypeCode00_Node1_action["Process as default border entry
with standard customs handling"]:::main N_ProcessBorderEntryTypeCode00_Node1 -- Yes --> N_ProcessBorderEntryTypeCode00_Node1_action N_ProcessBorderEntryTypeCode00_Node1_action --> E_ProcessBorderEntryTypeCode00 N_ProcessBorderEntryTypeCode00_Node0 -- No --> N_ProcessBorderEntryTypeCode00_Node1 N_ProcessBorderEntryTypeCode00_Node1 -- No --> E_ProcessBorderEntryTypeCode00
File: GCX016.cbl
GIVEN:
A cargo has entry type code '00' or no specific entry type
WHEN:
The system processes the entry type
THEN:
The cargo is processed as standard border entry with default processing rules
File: GCX016.cbl
GIVEN:
A new cargo entry
WHEN:
The entry type code is '00'
THEN:
Process as default border entry with standard customs handling
β Consolidated Acceptance Criteria
- The system builds manifest information → the SCAC code is set from the M10 segment SCAC field
- SCAC code needs to be assigned → set the SCAC code from the X4 segment to identify the transportation carrier
- Manifest information contains SCAC code → set the cargo SCAC code from the manifest SCAC information
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetSCACCode(["Start Step"])
E_SetSCACCode(["End Step"])
N_SetSCACCode_Node0{"The system builds manifest
information"}:::decision N_SetSCACCode_Node0_action["The SCAC code is set from the M10
segment SCAC field"]:::main N_SetSCACCode_Node0 -- Yes --> N_SetSCACCode_Node0_action N_SetSCACCode_Node0_action --> E_SetSCACCode S_SetSCACCode --> N_SetSCACCode_Node0 N_SetSCACCode_Node1{"SCAC code needs to be assigned"}:::decision N_SetSCACCode_Node1_action["Set the SCAC code from the X4
segment to identify the
transportation carrier"]:::main N_SetSCACCode_Node1 -- Yes --> N_SetSCACCode_Node1_action N_SetSCACCode_Node1_action --> E_SetSCACCode N_SetSCACCode_Node0 -- No --> N_SetSCACCode_Node1 N_SetSCACCode_Node2{"Manifest information contains SCAC
code"}:::decision N_SetSCACCode_Node2_action["Set the cargo SCAC code from the
manifest SCAC information"]:::main N_SetSCACCode_Node2 -- Yes --> N_SetSCACCode_Node2_action N_SetSCACCode_Node2_action --> E_SetSCACCode N_SetSCACCode_Node1 -- No --> N_SetSCACCode_Node2 N_SetSCACCode_Node2 -- No --> E_SetSCACCode
information"}:::decision N_SetSCACCode_Node0_action["The SCAC code is set from the M10
segment SCAC field"]:::main N_SetSCACCode_Node0 -- Yes --> N_SetSCACCode_Node0_action N_SetSCACCode_Node0_action --> E_SetSCACCode S_SetSCACCode --> N_SetSCACCode_Node0 N_SetSCACCode_Node1{"SCAC code needs to be assigned"}:::decision N_SetSCACCode_Node1_action["Set the SCAC code from the X4
segment to identify the
transportation carrier"]:::main N_SetSCACCode_Node1 -- Yes --> N_SetSCACCode_Node1_action N_SetSCACCode_Node1_action --> E_SetSCACCode N_SetSCACCode_Node0 -- No --> N_SetSCACCode_Node1 N_SetSCACCode_Node2{"Manifest information contains SCAC
code"}:::decision N_SetSCACCode_Node2_action["Set the cargo SCAC code from the
manifest SCAC information"]:::main N_SetSCACCode_Node2 -- Yes --> N_SetSCACCode_Node2_action N_SetSCACCode_Node2_action --> E_SetSCACCode N_SetSCACCode_Node1 -- No --> N_SetSCACCode_Node2 N_SetSCACCode_Node2 -- No --> E_SetSCACCode
File: GCX016.cbl
GIVEN:
M10 segment data contains SCAC information
WHEN:
The system builds manifest information
THEN:
The SCAC code is set from the M10 segment SCAC field
File: GCX016.cbl
GIVEN:
A new cargo record is being created
WHEN:
SCAC code needs to be assigned
THEN:
Set the SCAC code from the X4 segment to identify the transportation carrier
File: GCX016.cbl
GIVEN:
A new cargo record being created
WHEN:
Manifest information contains SCAC code
THEN:
Set the cargo SCAC code from the manifest SCAC information
β Consolidated Acceptance Criteria
- The system sets transport information → the transport type is set according to the entry type code mapping (immediate transport, export, etc.)
- Transport type needs to be set → set the transport type code based on the transportation mode from the manifest information
- Manifest information contains transport type → set the cargo transport type from the manifest transport information
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetTransportType(["Start Step"])
E_SetTransportType(["End Step"])
N_SetTransportType_Node0{"The system sets transport
information"}:::decision N_SetTransportType_Node0_action["The transport type is set according
to the entry type code mapping
immediate transport, export, etc."]:::main N_SetTransportType_Node0 -- Yes --> N_SetTransportType_Node0_action N_SetTransportType_Node0_action --> E_SetTransportType S_SetTransportType --> N_SetTransportType_Node0 N_SetTransportType_Node1{"Transport type needs to be set"}:::decision N_SetTransportType_Node1_action["Set the transport type code based
on the transportation mode from the
manifest information"]:::main N_SetTransportType_Node1 -- Yes --> N_SetTransportType_Node1_action N_SetTransportType_Node1_action --> E_SetTransportType N_SetTransportType_Node0 -- No --> N_SetTransportType_Node1 N_SetTransportType_Node2{"Manifest information contains
transport type"}:::decision N_SetTransportType_Node2_action["Set the cargo transport type from
the manifest transport information"]:::main N_SetTransportType_Node2 -- Yes --> N_SetTransportType_Node2_action N_SetTransportType_Node2_action --> E_SetTransportType N_SetTransportType_Node1 -- No --> N_SetTransportType_Node2 N_SetTransportType_Node2 -- No --> E_SetTransportType
information"}:::decision N_SetTransportType_Node0_action["The transport type is set according
to the entry type code mapping
immediate transport, export, etc."]:::main N_SetTransportType_Node0 -- Yes --> N_SetTransportType_Node0_action N_SetTransportType_Node0_action --> E_SetTransportType S_SetTransportType --> N_SetTransportType_Node0 N_SetTransportType_Node1{"Transport type needs to be set"}:::decision N_SetTransportType_Node1_action["Set the transport type code based
on the transportation mode from the
manifest information"]:::main N_SetTransportType_Node1 -- Yes --> N_SetTransportType_Node1_action N_SetTransportType_Node1_action --> E_SetTransportType N_SetTransportType_Node0 -- No --> N_SetTransportType_Node1 N_SetTransportType_Node2{"Manifest information contains
transport type"}:::decision N_SetTransportType_Node2_action["Set the cargo transport type from
the manifest transport information"]:::main N_SetTransportType_Node2 -- Yes --> N_SetTransportType_Node2_action N_SetTransportType_Node2_action --> E_SetTransportType N_SetTransportType_Node1 -- No --> N_SetTransportType_Node2 N_SetTransportType_Node2 -- No --> E_SetTransportType
File: GCX016.cbl
GIVEN:
An entry type code has been processed and mapped to a transport type
WHEN:
The system sets transport information
THEN:
The transport type is set according to the entry type code mapping (immediate transport, export, etc.)
File: GCX016.cbl
GIVEN:
A new cargo record requires transport type assignment
WHEN:
Transport type needs to be set
THEN:
Set the transport type code based on the transportation mode from the manifest information
File: GCX016.cbl
GIVEN:
A new cargo record being created
WHEN:
Manifest information contains transport type
THEN:
Set the cargo transport type from the manifest transport information
β Consolidated Acceptance Criteria
- The system sets country information → the country code is set based on cargo routing and manifest requirements
- Country code needs to be assigned → set the appropriate country code from the manifest data to identify origin or destination country
- Manifest information contains country code → set the cargo country code from the manifest country information
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetCountryCode(["Start Step"])
E_SetCountryCode(["End Step"])
N_SetCountryCode_Node0{"The system sets country information"}:::decision
N_SetCountryCode_Node0_action["The country code is set based on
cargo routing and manifest
requirements"]:::main N_SetCountryCode_Node0 -- Yes --> N_SetCountryCode_Node0_action N_SetCountryCode_Node0_action --> E_SetCountryCode S_SetCountryCode --> N_SetCountryCode_Node0 N_SetCountryCode_Node1{"Country code needs to be assigned"}:::decision N_SetCountryCode_Node1_action["Set the appropriate country code
from the manifest data to identify
origin or destination country"]:::main N_SetCountryCode_Node1 -- Yes --> N_SetCountryCode_Node1_action N_SetCountryCode_Node1_action --> E_SetCountryCode N_SetCountryCode_Node0 -- No --> N_SetCountryCode_Node1 N_SetCountryCode_Node2{"Manifest information contains
country code"}:::decision N_SetCountryCode_Node2_action["Set the cargo country code from the
manifest country information"]:::main N_SetCountryCode_Node2 -- Yes --> N_SetCountryCode_Node2_action N_SetCountryCode_Node2_action --> E_SetCountryCode N_SetCountryCode_Node1 -- No --> N_SetCountryCode_Node2 N_SetCountryCode_Node2 -- No --> E_SetCountryCode
cargo routing and manifest
requirements"]:::main N_SetCountryCode_Node0 -- Yes --> N_SetCountryCode_Node0_action N_SetCountryCode_Node0_action --> E_SetCountryCode S_SetCountryCode --> N_SetCountryCode_Node0 N_SetCountryCode_Node1{"Country code needs to be assigned"}:::decision N_SetCountryCode_Node1_action["Set the appropriate country code
from the manifest data to identify
origin or destination country"]:::main N_SetCountryCode_Node1 -- Yes --> N_SetCountryCode_Node1_action N_SetCountryCode_Node1_action --> E_SetCountryCode N_SetCountryCode_Node0 -- No --> N_SetCountryCode_Node1 N_SetCountryCode_Node2{"Manifest information contains
country code"}:::decision N_SetCountryCode_Node2_action["Set the cargo country code from the
manifest country information"]:::main N_SetCountryCode_Node2 -- Yes --> N_SetCountryCode_Node2_action N_SetCountryCode_Node2_action --> E_SetCountryCode N_SetCountryCode_Node1 -- No --> N_SetCountryCode_Node2 N_SetCountryCode_Node2 -- No --> E_SetCountryCode
File: GCX016.cbl
GIVEN:
Manifest data requires country code information
WHEN:
The system sets country information
THEN:
- The country code is set based on cargo routing
- Manifest requirements
File: GCX016.cbl
GIVEN:
A new cargo record requires country identification
WHEN:
Country code needs to be assigned
THEN:
Set the appropriate country code from the manifest data to identify origin or destination country
File: GCX016.cbl
GIVEN:
A new cargo record being created
WHEN:
Manifest information contains country code
THEN:
Set the cargo country code from the manifest country information
β Consolidated Acceptance Criteria
- The system builds manifest data → the vessel name and flight information are set from the M10 segment data
- Vessel or flight information needs to be set → set vessel name, voyage number, or flight details from the M10 manifest segment
- Manifest information contains vessel or flight details → set the cargo vessel/flight information from the manifest transportation details
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetVesselFlightInformation(["Start Step"])
E_SetVesselFlightInformation(["End Step"])
N_SetVesselFlightInformation_Node0{"The system builds manifest data"}:::decision
N_SetVesselFlightInformation_Node0_action["The vessel name and flight
information are set from the M10
segment data"]:::main N_SetVesselFlightInformation_Node0 -- Yes --> N_SetVesselFlightInformation_Node0_action N_SetVesselFlightInformation_Node0_action --> E_SetVesselFlightInformation S_SetVesselFlightInformation --> N_SetVesselFlightInformation_Node0 N_SetVesselFlightInformation_Node1{"Vessel or flight information needs
to be set"}:::decision N_SetVesselFlightInformation_Node1_action["Set vessel name, voyage number, or
flight details from the M10 manifest
segment"]:::main N_SetVesselFlightInformation_Node1 -- Yes --> N_SetVesselFlightInformation_Node1_action N_SetVesselFlightInformation_Node1_action --> E_SetVesselFlightInformation N_SetVesselFlightInformation_Node0 -- No --> N_SetVesselFlightInformation_Node1 N_SetVesselFlightInformation_Node2{"Manifest information contains
vessel or flight details"}:::decision N_SetVesselFlightInformation_Node2_action["Set the cargo vesselflight
information from the manifest
transportation details"]:::main N_SetVesselFlightInformation_Node2 -- Yes --> N_SetVesselFlightInformation_Node2_action N_SetVesselFlightInformation_Node2_action --> E_SetVesselFlightInformation N_SetVesselFlightInformation_Node1 -- No --> N_SetVesselFlightInformation_Node2 N_SetVesselFlightInformation_Node2 -- No --> E_SetVesselFlightInformation
information are set from the M10
segment data"]:::main N_SetVesselFlightInformation_Node0 -- Yes --> N_SetVesselFlightInformation_Node0_action N_SetVesselFlightInformation_Node0_action --> E_SetVesselFlightInformation S_SetVesselFlightInformation --> N_SetVesselFlightInformation_Node0 N_SetVesselFlightInformation_Node1{"Vessel or flight information needs
to be set"}:::decision N_SetVesselFlightInformation_Node1_action["Set vessel name, voyage number, or
flight details from the M10 manifest
segment"]:::main N_SetVesselFlightInformation_Node1 -- Yes --> N_SetVesselFlightInformation_Node1_action N_SetVesselFlightInformation_Node1_action --> E_SetVesselFlightInformation N_SetVesselFlightInformation_Node0 -- No --> N_SetVesselFlightInformation_Node1 N_SetVesselFlightInformation_Node2{"Manifest information contains
vessel or flight details"}:::decision N_SetVesselFlightInformation_Node2_action["Set the cargo vesselflight
information from the manifest
transportation details"]:::main N_SetVesselFlightInformation_Node2 -- Yes --> N_SetVesselFlightInformation_Node2_action N_SetVesselFlightInformation_Node2_action --> E_SetVesselFlightInformation N_SetVesselFlightInformation_Node1 -- No --> N_SetVesselFlightInformation_Node2 N_SetVesselFlightInformation_Node2 -- No --> E_SetVesselFlightInformation
File: GCX016.cbl
GIVEN:
M10 segment contains vessel and flight information
WHEN:
The system builds manifest data
THEN:
- The vessel name
- Flight information are set from the m10 segment data
File: GCX016.cbl
GIVEN:
A new cargo record requires conveyance information
WHEN:
Vessel or flight information needs to be set
THEN:
Set vessel name, voyage number, or flight details from the M10 manifest segment
File: GCX016.cbl
GIVEN:
A new cargo record being created
WHEN:
Manifest information contains vessel or flight details
THEN:
Set the cargo vessel/flight information from the manifest transportation details
β Consolidated Acceptance Criteria
- The system processes cargo quantities → the cargo quantity fields are populated from the X4 segment quantity data
- Quantity information needs to be populated → set total quantity, release quantity, and unit of measure from the X4 segment data
- Manifest information contains quantity details → set the cargo quantity information from the manifest quantity data
- Building the S09 segment → copy the quantity values from the array element to the S09 segment quantity fields
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetQuantityInformation(["Start Step"])
E_SetQuantityInformation(["End Step"])
N_SetQuantityInformation_Node0{"The system processes cargo
quantities"}:::decision N_SetQuantityInformation_Node0_action["The cargo quantity fields are
populated from the X4 segment
quantity data"]:::main N_SetQuantityInformation_Node0 -- Yes --> N_SetQuantityInformation_Node0_action N_SetQuantityInformation_Node0_action --> E_SetQuantityInformation S_SetQuantityInformation --> N_SetQuantityInformation_Node0 N_SetQuantityInformation_Node1{"Quantity information needs to be
populated"}:::decision N_SetQuantityInformation_Node1_action["Set total quantity, release
quantity, and unit of measure from
the X4 segment data"]:::main N_SetQuantityInformation_Node1 -- Yes --> N_SetQuantityInformation_Node1_action N_SetQuantityInformation_Node1_action --> E_SetQuantityInformation N_SetQuantityInformation_Node0 -- No --> N_SetQuantityInformation_Node1 N_SetQuantityInformation_Node2{"Manifest information contains
quantity details"}:::decision N_SetQuantityInformation_Node2_action["Set the cargo quantity information
from the manifest quantity data"]:::main N_SetQuantityInformation_Node2 -- Yes --> N_SetQuantityInformation_Node2_action N_SetQuantityInformation_Node2_action --> E_SetQuantityInformation N_SetQuantityInformation_Node1 -- No --> N_SetQuantityInformation_Node2 N_SetQuantityInformation_Node3{"Building the S09 segment"}:::decision N_SetQuantityInformation_Node3_action["Copy the quantity values from the
array element to the S09 segment
quantity fields"]:::main N_SetQuantityInformation_Node3 -- Yes --> N_SetQuantityInformation_Node3_action N_SetQuantityInformation_Node3_action --> E_SetQuantityInformation N_SetQuantityInformation_Node2 -- No --> N_SetQuantityInformation_Node3 N_SetQuantityInformation_Node3 -- No --> E_SetQuantityInformation
quantities"}:::decision N_SetQuantityInformation_Node0_action["The cargo quantity fields are
populated from the X4 segment
quantity data"]:::main N_SetQuantityInformation_Node0 -- Yes --> N_SetQuantityInformation_Node0_action N_SetQuantityInformation_Node0_action --> E_SetQuantityInformation S_SetQuantityInformation --> N_SetQuantityInformation_Node0 N_SetQuantityInformation_Node1{"Quantity information needs to be
populated"}:::decision N_SetQuantityInformation_Node1_action["Set total quantity, release
quantity, and unit of measure from
the X4 segment data"]:::main N_SetQuantityInformation_Node1 -- Yes --> N_SetQuantityInformation_Node1_action N_SetQuantityInformation_Node1_action --> E_SetQuantityInformation N_SetQuantityInformation_Node0 -- No --> N_SetQuantityInformation_Node1 N_SetQuantityInformation_Node2{"Manifest information contains
quantity details"}:::decision N_SetQuantityInformation_Node2_action["Set the cargo quantity information
from the manifest quantity data"]:::main N_SetQuantityInformation_Node2 -- Yes --> N_SetQuantityInformation_Node2_action N_SetQuantityInformation_Node2_action --> E_SetQuantityInformation N_SetQuantityInformation_Node1 -- No --> N_SetQuantityInformation_Node2 N_SetQuantityInformation_Node3{"Building the S09 segment"}:::decision N_SetQuantityInformation_Node3_action["Copy the quantity values from the
array element to the S09 segment
quantity fields"]:::main N_SetQuantityInformation_Node3 -- Yes --> N_SetQuantityInformation_Node3_action N_SetQuantityInformation_Node3_action --> E_SetQuantityInformation N_SetQuantityInformation_Node2 -- No --> N_SetQuantityInformation_Node3 N_SetQuantityInformation_Node3 -- No --> E_SetQuantityInformation
File: GCX016.cbl
GIVEN:
X4 segment contains quantity information
WHEN:
The system processes cargo quantities
THEN:
The cargo quantity fields are populated from the X4 segment quantity data
File: GCX016.cbl
GIVEN:
A new cargo record requires quantity data
WHEN:
Quantity information needs to be populated
THEN:
Set total quantity, release quantity, and unit of measure from the X4 segment data
File: GCX016.cbl
GIVEN:
A new cargo record being created
WHEN:
Manifest information contains quantity details
THEN:
Set the cargo quantity information from the manifest quantity data
File: GCX016.cbl
GIVEN:
A status array element contains quantity information
WHEN:
Building the S09 segment
THEN:
Copy the quantity values from the array element to the S09 segment quantity fields
β Consolidated Acceptance Criteria
- The system determines manifest type → the manifest type code is set based on cargo characteristics and transport mode
- Manifest type code needs to be assigned → set the manifest type code based on the document type and transportation mode
- Processing manifest information → set the manifest type code based on the manifest classification
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetManifestTypeCode(["Start Step"])
E_SetManifestTypeCode(["End Step"])
N_SetManifestTypeCode_Node0{"The system determines manifest type"}:::decision
N_SetManifestTypeCode_Node0_action["The manifest type code is set based
on cargo characteristics and
transport mode"]:::main N_SetManifestTypeCode_Node0 -- Yes --> N_SetManifestTypeCode_Node0_action N_SetManifestTypeCode_Node0_action --> E_SetManifestTypeCode S_SetManifestTypeCode --> N_SetManifestTypeCode_Node0 N_SetManifestTypeCode_Node1{"Manifest type code needs to be
assigned"}:::decision N_SetManifestTypeCode_Node1_action["Set the manifest type code based on
the document type and transportation
mode"]:::main N_SetManifestTypeCode_Node1 -- Yes --> N_SetManifestTypeCode_Node1_action N_SetManifestTypeCode_Node1_action --> E_SetManifestTypeCode N_SetManifestTypeCode_Node0 -- No --> N_SetManifestTypeCode_Node1 N_SetManifestTypeCode_Node2{"Processing manifest information"}:::decision N_SetManifestTypeCode_Node2_action["Set the manifest type code based on
the manifest classification"]:::main N_SetManifestTypeCode_Node2 -- Yes --> N_SetManifestTypeCode_Node2_action N_SetManifestTypeCode_Node2_action --> E_SetManifestTypeCode N_SetManifestTypeCode_Node1 -- No --> N_SetManifestTypeCode_Node2 N_SetManifestTypeCode_Node2 -- No --> E_SetManifestTypeCode
on cargo characteristics and
transport mode"]:::main N_SetManifestTypeCode_Node0 -- Yes --> N_SetManifestTypeCode_Node0_action N_SetManifestTypeCode_Node0_action --> E_SetManifestTypeCode S_SetManifestTypeCode --> N_SetManifestTypeCode_Node0 N_SetManifestTypeCode_Node1{"Manifest type code needs to be
assigned"}:::decision N_SetManifestTypeCode_Node1_action["Set the manifest type code based on
the document type and transportation
mode"]:::main N_SetManifestTypeCode_Node1 -- Yes --> N_SetManifestTypeCode_Node1_action N_SetManifestTypeCode_Node1_action --> E_SetManifestTypeCode N_SetManifestTypeCode_Node0 -- No --> N_SetManifestTypeCode_Node1 N_SetManifestTypeCode_Node2{"Processing manifest information"}:::decision N_SetManifestTypeCode_Node2_action["Set the manifest type code based on
the manifest classification"]:::main N_SetManifestTypeCode_Node2 -- Yes --> N_SetManifestTypeCode_Node2_action N_SetManifestTypeCode_Node2_action --> E_SetManifestTypeCode N_SetManifestTypeCode_Node1 -- No --> N_SetManifestTypeCode_Node2 N_SetManifestTypeCode_Node2 -- No --> E_SetManifestTypeCode
File: GCX016.cbl
GIVEN:
Cargo and transport information has been processed
WHEN:
The system determines manifest type
THEN:
- The manifest type code is set based on cargo characteristics
- Transport mode
File: GCX016.cbl
GIVEN:
A new cargo record requires manifest type classification
WHEN:
Manifest type code needs to be assigned
THEN:
- Set the manifest type code based on the document type
- Transportation mode
File: GCX016.cbl
GIVEN:
A new cargo record being created
WHEN:
Processing manifest information
THEN:
Set the manifest type code based on the manifest classification
β Consolidated Acceptance Criteria
- The system sets response codes → the condition response code is set to reflect the cargo processing outcome and status
- Condition response code needs to be set → set appropriate condition response codes to reflect the current processing status and any special handling requirements
- Processing cargo conditions → set the condition response code based on cargo processing requirements
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetConditionResponseCode(["Start Step"])
E_SetConditionResponseCode(["End Step"])
N_SetConditionResponseCode_Node0{"The system sets response codes"}:::decision
N_SetConditionResponseCode_Node0_action["The condition response code is set
to reflect the cargo processing
outcome and status"]:::main N_SetConditionResponseCode_Node0 -- Yes --> N_SetConditionResponseCode_Node0_action N_SetConditionResponseCode_Node0_action --> E_SetConditionResponseCode S_SetConditionResponseCode --> N_SetConditionResponseCode_Node0 N_SetConditionResponseCode_Node1{"Condition response code needs to be
set"}:::decision N_SetConditionResponseCode_Node1_action["Set appropriate condition response
codes to reflect the current
processing status and any special
handling requirements"]:::main N_SetConditionResponseCode_Node1 -- Yes --> N_SetConditionResponseCode_Node1_action N_SetConditionResponseCode_Node1_action --> E_SetConditionResponseCode N_SetConditionResponseCode_Node0 -- No --> N_SetConditionResponseCode_Node1 N_SetConditionResponseCode_Node2{"Processing cargo conditions"}:::decision N_SetConditionResponseCode_Node2_action["Set the condition response code
based on cargo processing
requirements"]:::main N_SetConditionResponseCode_Node2 -- Yes --> N_SetConditionResponseCode_Node2_action N_SetConditionResponseCode_Node2_action --> E_SetConditionResponseCode N_SetConditionResponseCode_Node1 -- No --> N_SetConditionResponseCode_Node2 N_SetConditionResponseCode_Node2 -- No --> E_SetConditionResponseCode
to reflect the cargo processing
outcome and status"]:::main N_SetConditionResponseCode_Node0 -- Yes --> N_SetConditionResponseCode_Node0_action N_SetConditionResponseCode_Node0_action --> E_SetConditionResponseCode S_SetConditionResponseCode --> N_SetConditionResponseCode_Node0 N_SetConditionResponseCode_Node1{"Condition response code needs to be
set"}:::decision N_SetConditionResponseCode_Node1_action["Set appropriate condition response
codes to reflect the current
processing status and any special
handling requirements"]:::main N_SetConditionResponseCode_Node1 -- Yes --> N_SetConditionResponseCode_Node1_action N_SetConditionResponseCode_Node1_action --> E_SetConditionResponseCode N_SetConditionResponseCode_Node0 -- No --> N_SetConditionResponseCode_Node1 N_SetConditionResponseCode_Node2{"Processing cargo conditions"}:::decision N_SetConditionResponseCode_Node2_action["Set the condition response code
based on cargo processing
requirements"]:::main N_SetConditionResponseCode_Node2 -- Yes --> N_SetConditionResponseCode_Node2_action N_SetConditionResponseCode_Node2_action --> E_SetConditionResponseCode N_SetConditionResponseCode_Node1 -- No --> N_SetConditionResponseCode_Node2 N_SetConditionResponseCode_Node2 -- No --> E_SetConditionResponseCode
File: GCX016.cbl
GIVEN:
Cargo processing has been completed with specific conditions
WHEN:
The system sets response codes
THEN:
- The condition response code is set to reflect the cargo processing outcome
- Status
File: GCX016.cbl
GIVEN:
A new cargo record requires status indication
WHEN:
Condition response code needs to be set
THEN:
- Set appropriate condition response codes to reflect the current processing status
- Any special handling requirements
File: GCX016.cbl
GIVEN:
A new cargo record being created
WHEN:
Processing cargo conditions
THEN:
Set the condition response code based on cargo processing requirements
β Consolidated Acceptance Criteria
- The system stores the cargo record → the cargo record is inserted into the database and becomes available for further processing
- The record needs to be saved to the system → store the cargo record in the database and confirm successful creation
- All required information has been set → insert the new cargo record into the system database
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_StoreNewCargoRecord(["Start Step"])
E_StoreNewCargoRecord(["End Step"])
N_StoreNewCargoRecord_Node0{"The system stores the cargo record"}:::decision
N_StoreNewCargoRecord_Node0_action["The cargo record is inserted into
the database and becomes available
for further processing"]:::main N_StoreNewCargoRecord_Node0 -- Yes --> N_StoreNewCargoRecord_Node0_action N_StoreNewCargoRecord_Node0_action --> E_StoreNewCargoRecord S_StoreNewCargoRecord --> N_StoreNewCargoRecord_Node0 N_StoreNewCargoRecord_Node1{"The record needs to be saved to the
system"}:::decision N_StoreNewCargoRecord_Node1_action["Store the cargo record in the
database and confirm successful
creation"]:::main N_StoreNewCargoRecord_Node1 -- Yes --> N_StoreNewCargoRecord_Node1_action N_StoreNewCargoRecord_Node1_action --> E_StoreNewCargoRecord N_StoreNewCargoRecord_Node0 -- No --> N_StoreNewCargoRecord_Node1 N_StoreNewCargoRecord_Node2{"All required information has been
set"}:::decision N_StoreNewCargoRecord_Node2_action["Insert the new cargo record into
the system database"]:::main N_StoreNewCargoRecord_Node2 -- Yes --> N_StoreNewCargoRecord_Node2_action N_StoreNewCargoRecord_Node2_action --> E_StoreNewCargoRecord N_StoreNewCargoRecord_Node1 -- No --> N_StoreNewCargoRecord_Node2 N_StoreNewCargoRecord_Node2 -- No --> E_StoreNewCargoRecord
the database and becomes available
for further processing"]:::main N_StoreNewCargoRecord_Node0 -- Yes --> N_StoreNewCargoRecord_Node0_action N_StoreNewCargoRecord_Node0_action --> E_StoreNewCargoRecord S_StoreNewCargoRecord --> N_StoreNewCargoRecord_Node0 N_StoreNewCargoRecord_Node1{"The record needs to be saved to the
system"}:::decision N_StoreNewCargoRecord_Node1_action["Store the cargo record in the
database and confirm successful
creation"]:::main N_StoreNewCargoRecord_Node1 -- Yes --> N_StoreNewCargoRecord_Node1_action N_StoreNewCargoRecord_Node1_action --> E_StoreNewCargoRecord N_StoreNewCargoRecord_Node0 -- No --> N_StoreNewCargoRecord_Node1 N_StoreNewCargoRecord_Node2{"All required information has been
set"}:::decision N_StoreNewCargoRecord_Node2_action["Insert the new cargo record into
the system database"]:::main N_StoreNewCargoRecord_Node2 -- Yes --> N_StoreNewCargoRecord_Node2_action N_StoreNewCargoRecord_Node2_action --> E_StoreNewCargoRecord N_StoreNewCargoRecord_Node1 -- No --> N_StoreNewCargoRecord_Node2 N_StoreNewCargoRecord_Node2 -- No --> E_StoreNewCargoRecord
File: GCX016.cbl
GIVEN:
A new cargo record has been created and all required fields populated
WHEN:
The system stores the cargo record
THEN:
- The cargo record is inserted into the database
- Becomes available for further processing
File: GCX016.cbl
GIVEN:
A new cargo record has been fully populated with required data
WHEN:
The record needs to be saved to the system
THEN:
- Store the cargo record in the database
- Confirm successful creation
File: GCX016.cbl
GIVEN:
A fully populated new cargo record
WHEN:
All required information has been set
THEN:
Insert the new cargo record into the system database
β Consolidated Acceptance Criteria
- Car ID extraction process is initiated → car ID is extracted from equipment segment and formatted using GCCCARFM utility for standardized format
- System needs to search for cargo using car ID → car ID is extracted from equipment information and formatted using GCCCARFM utility for standardized format
- The system needs to extract car ID for cargo lookup → the car initial and car number are extracted from the N7 segment and combined to form the complete car ID
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExtractCarIDfromEquipmentInformation(["Start Step"])
E_ExtractCarIDfromEquipmentInformation(["End Step"])
N_ExtractCarIDfromEquipmentInformation_Node0{"Car ID extraction process is
initiated"}:::decision N_ExtractCarIDfromEquipmentInformation_Node0_action["Car ID is extracted from equipment
segment and formatted using GCCCARFM
utility for standardized format"]:::main N_ExtractCarIDfromEquipmentInformation_Node0 -- Yes --> N_ExtractCarIDfromEquipmentInformation_Node0_action N_ExtractCarIDfromEquipmentInformation_Node0_action --> E_ExtractCarIDfromEquipmentInformation S_ExtractCarIDfromEquipmentInformation --> N_ExtractCarIDfromEquipmentInformation_Node0 N_ExtractCarIDfromEquipmentInformation_Node1{"System needs to search for cargo
using car ID"}:::decision N_ExtractCarIDfromEquipmentInformation_Node1_action["Car ID is extracted from equipment
information and formatted using
GCCCARFM utility for standardized
format"]:::main N_ExtractCarIDfromEquipmentInformation_Node1 -- Yes --> N_ExtractCarIDfromEquipmentInformation_Node1_action N_ExtractCarIDfromEquipmentInformation_Node1_action --> E_ExtractCarIDfromEquipmentInformation N_ExtractCarIDfromEquipmentInformation_Node0 -- No --> N_ExtractCarIDfromEquipmentInformation_Node1 N_ExtractCarIDfromEquipmentInformation_Node2{"The system needs to extract car ID
for cargo lookup"}:::decision N_ExtractCarIDfromEquipmentInformation_Node2_action["The car initial and car number are
extracted from the N7 segment and
combined to form the complete car ID"]:::main N_ExtractCarIDfromEquipmentInformation_Node2 -- Yes --> N_ExtractCarIDfromEquipmentInformation_Node2_action N_ExtractCarIDfromEquipmentInformation_Node2_action --> E_ExtractCarIDfromEquipmentInformation N_ExtractCarIDfromEquipmentInformation_Node1 -- No --> N_ExtractCarIDfromEquipmentInformation_Node2 N_ExtractCarIDfromEquipmentInformation_Node2 -- No --> E_ExtractCarIDfromEquipmentInformation
initiated"}:::decision N_ExtractCarIDfromEquipmentInformation_Node0_action["Car ID is extracted from equipment
segment and formatted using GCCCARFM
utility for standardized format"]:::main N_ExtractCarIDfromEquipmentInformation_Node0 -- Yes --> N_ExtractCarIDfromEquipmentInformation_Node0_action N_ExtractCarIDfromEquipmentInformation_Node0_action --> E_ExtractCarIDfromEquipmentInformation S_ExtractCarIDfromEquipmentInformation --> N_ExtractCarIDfromEquipmentInformation_Node0 N_ExtractCarIDfromEquipmentInformation_Node1{"System needs to search for cargo
using car ID"}:::decision N_ExtractCarIDfromEquipmentInformation_Node1_action["Car ID is extracted from equipment
information and formatted using
GCCCARFM utility for standardized
format"]:::main N_ExtractCarIDfromEquipmentInformation_Node1 -- Yes --> N_ExtractCarIDfromEquipmentInformation_Node1_action N_ExtractCarIDfromEquipmentInformation_Node1_action --> E_ExtractCarIDfromEquipmentInformation N_ExtractCarIDfromEquipmentInformation_Node0 -- No --> N_ExtractCarIDfromEquipmentInformation_Node1 N_ExtractCarIDfromEquipmentInformation_Node2{"The system needs to extract car ID
for cargo lookup"}:::decision N_ExtractCarIDfromEquipmentInformation_Node2_action["The car initial and car number are
extracted from the N7 segment and
combined to form the complete car ID"]:::main N_ExtractCarIDfromEquipmentInformation_Node2 -- Yes --> N_ExtractCarIDfromEquipmentInformation_Node2_action N_ExtractCarIDfromEquipmentInformation_Node2_action --> E_ExtractCarIDfromEquipmentInformation N_ExtractCarIDfromEquipmentInformation_Node1 -- No --> N_ExtractCarIDfromEquipmentInformation_Node2 N_ExtractCarIDfromEquipmentInformation_Node2 -- No --> E_ExtractCarIDfromEquipmentInformation
File: GCX016.cbl
GIVEN:
Equipment information contains car identification data
WHEN:
Car ID extraction process is initiated
THEN:
- Car id is extracted from equipment segment
- Formatted using gcccarfm utility for standardized format
File: GCX016.cbl
GIVEN:
Equipment information contains car identification data
WHEN:
System needs to search for cargo using car ID
THEN:
- Car id is extracted from equipment information
- Formatted using gcccarfm utility for standardized format
File: GCX016.cbl
GIVEN:
An N7 equipment segment contains car identification data
WHEN:
The system needs to extract car ID for cargo lookup
THEN:
- The car initial
- Car number are extracted from the n7 segment
- Combined to form the complete car id
β Consolidated Acceptance Criteria
- Exact match query is executed against cargo database using car ID index → system searches for cargo record that matches both car ID and US-CCN key exactly
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AttemptExactMatchwithUSCCNKey(["Start Step"])
E_AttemptExactMatchwithUSCCNKey(["End Step"])
N_AttemptExactMatchwithUSCCNKey_Node0{"Exact match query is executed
against cargo database using car ID
index"}:::decision N_AttemptExactMatchwithUSCCNKey_Node0_action["System searches for cargo record
that matches both car ID and US-CCN
key exactly"]:::main N_AttemptExactMatchwithUSCCNKey_Node0 -- Yes --> N_AttemptExactMatchwithUSCCNKey_Node0_action N_AttemptExactMatchwithUSCCNKey_Node0_action --> E_AttemptExactMatchwithUSCCNKey S_AttemptExactMatchwithUSCCNKey --> N_AttemptExactMatchwithUSCCNKey_Node0 N_AttemptExactMatchwithUSCCNKey_Node0 -- No --> E_AttemptExactMatchwithUSCCNKey
against cargo database using car ID
index"}:::decision N_AttemptExactMatchwithUSCCNKey_Node0_action["System searches for cargo record
that matches both car ID and US-CCN
key exactly"]:::main N_AttemptExactMatchwithUSCCNKey_Node0 -- Yes --> N_AttemptExactMatchwithUSCCNKey_Node0_action N_AttemptExactMatchwithUSCCNKey_Node0_action --> E_AttemptExactMatchwithUSCCNKey S_AttemptExactMatchwithUSCCNKey --> N_AttemptExactMatchwithUSCCNKey_Node0 N_AttemptExactMatchwithUSCCNKey_Node0 -- No --> E_AttemptExactMatchwithUSCCNKey
File: GCX016.cbl
GIVEN:
Valid car ID is available and US-CCN key exists
WHEN:
Exact match query is executed against cargo database using car ID index
THEN:
- System searches for cargo record that matches both car id
- Us-ccn key exactly
β Consolidated Acceptance Criteria
- Query results are evaluated for exact match → if cargo found with matching US-CCN, return matched cargo record, otherwise proceed to partial matching
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CargoFoundwithUSCCN(["Start Step"])
E_CargoFoundwithUSCCN(["End Step"])
N_CargoFoundwithUSCCN_Node0{"Query results are evaluated for
exact match"}:::decision N_CargoFoundwithUSCCN_Node0_action["If cargo found with matching
US-CCN, return matched cargo record,
otherwise proceed to partial
matching"]:::main N_CargoFoundwithUSCCN_Node0 -- Yes --> N_CargoFoundwithUSCCN_Node0_action N_CargoFoundwithUSCCN_Node0_action --> E_CargoFoundwithUSCCN S_CargoFoundwithUSCCN --> N_CargoFoundwithUSCCN_Node0 N_CargoFoundwithUSCCN_Node0 -- No --> E_CargoFoundwithUSCCN
exact match"}:::decision N_CargoFoundwithUSCCN_Node0_action["If cargo found with matching
US-CCN, return matched cargo record,
otherwise proceed to partial
matching"]:::main N_CargoFoundwithUSCCN_Node0 -- Yes --> N_CargoFoundwithUSCCN_Node0_action N_CargoFoundwithUSCCN_Node0_action --> E_CargoFoundwithUSCCN S_CargoFoundwithUSCCN --> N_CargoFoundwithUSCCN_Node0 N_CargoFoundwithUSCCN_Node0 -- No --> E_CargoFoundwithUSCCN
File: GCX016.cbl
GIVEN:
Exact match query has been executed with car ID and US-CCN key
WHEN:
Query results are evaluated for exact match
THEN:
If cargo found with matching US-CCN, return matched cargo record, otherwise proceed to partial matching
β Consolidated Acceptance Criteria
- Partial match query is executed against cargo database → system searches for cargo records matching car ID only without US-CCN key requirement
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AttemptPartialMatchwithoutUSCCN(["Start Step"])
E_AttemptPartialMatchwithoutUSCCN(["End Step"])
N_AttemptPartialMatchwithoutUSCCN_Node0{"Partial match query is executed
against cargo database"}:::decision N_AttemptPartialMatchwithoutUSCCN_Node0_action["System searches for cargo records
matching car ID only without US-CCN
key requirement"]:::main N_AttemptPartialMatchwithoutUSCCN_Node0 -- Yes --> N_AttemptPartialMatchwithoutUSCCN_Node0_action N_AttemptPartialMatchwithoutUSCCN_Node0_action --> E_AttemptPartialMatchwithoutUSCCN S_AttemptPartialMatchwithoutUSCCN --> N_AttemptPartialMatchwithoutUSCCN_Node0 N_AttemptPartialMatchwithoutUSCCN_Node0 -- No --> E_AttemptPartialMatchwithoutUSCCN
against cargo database"}:::decision N_AttemptPartialMatchwithoutUSCCN_Node0_action["System searches for cargo records
matching car ID only without US-CCN
key requirement"]:::main N_AttemptPartialMatchwithoutUSCCN_Node0 -- Yes --> N_AttemptPartialMatchwithoutUSCCN_Node0_action N_AttemptPartialMatchwithoutUSCCN_Node0_action --> E_AttemptPartialMatchwithoutUSCCN S_AttemptPartialMatchwithoutUSCCN --> N_AttemptPartialMatchwithoutUSCCN_Node0 N_AttemptPartialMatchwithoutUSCCN_Node0 -- No --> E_AttemptPartialMatchwithoutUSCCN
File: GCX016.cbl
GIVEN:
Exact match with US-CCN key failed and valid car ID exists
WHEN:
Partial match query is executed against cargo database
THEN:
System searches for cargo records matching car ID only without US-CCN key requirement
β Consolidated Acceptance Criteria
- Cargo record status validation is performed → system checks if cargo record is in valid status for business processing
- System validates the cargo record → cargo record status and attributes are checked against business validation criteria
- The system validates each cargo record status → only cargo records with valid processing status are included in subsequent operations
- The system validates the cargo record status → only cargo records that are not deleted and have valid processing status are considered acceptable for further operations
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ValidateCargoRecordStatus(["Start Step"])
E_ValidateCargoRecordStatus(["End Step"])
N_ValidateCargoRecordStatus_Node0{"Cargo record status validation is
performed"}:::decision N_ValidateCargoRecordStatus_Node0_action["System checks if cargo record is in
valid status for business processing"]:::main N_ValidateCargoRecordStatus_Node0 -- Yes --> N_ValidateCargoRecordStatus_Node0_action N_ValidateCargoRecordStatus_Node0_action --> E_ValidateCargoRecordStatus S_ValidateCargoRecordStatus --> N_ValidateCargoRecordStatus_Node0 N_ValidateCargoRecordStatus_Node1{"System validates the cargo record"}:::decision N_ValidateCargoRecordStatus_Node1_action["Cargo record status and attributes
are checked against business
validation criteria"]:::main N_ValidateCargoRecordStatus_Node1 -- Yes --> N_ValidateCargoRecordStatus_Node1_action N_ValidateCargoRecordStatus_Node1_action --> E_ValidateCargoRecordStatus N_ValidateCargoRecordStatus_Node0 -- No --> N_ValidateCargoRecordStatus_Node1 N_ValidateCargoRecordStatus_Node2{"The system validates each cargo
record status"}:::decision N_ValidateCargoRecordStatus_Node2_action["Only cargo records with valid
processing status are included in
subsequent operations"]:::main N_ValidateCargoRecordStatus_Node2 -- Yes --> N_ValidateCargoRecordStatus_Node2_action N_ValidateCargoRecordStatus_Node2_action --> E_ValidateCargoRecordStatus N_ValidateCargoRecordStatus_Node1 -- No --> N_ValidateCargoRecordStatus_Node2 N_ValidateCargoRecordStatus_Node3{"The system validates the cargo
record status"}:::decision N_ValidateCargoRecordStatus_Node3_action["Only cargo records that are not
deleted and have valid processing
status are considered acceptable for
further operations"]:::main N_ValidateCargoRecordStatus_Node3 -- Yes --> N_ValidateCargoRecordStatus_Node3_action N_ValidateCargoRecordStatus_Node3_action --> E_ValidateCargoRecordStatus N_ValidateCargoRecordStatus_Node2 -- No --> N_ValidateCargoRecordStatus_Node3 N_ValidateCargoRecordStatus_Node3 -- No --> E_ValidateCargoRecordStatus
performed"}:::decision N_ValidateCargoRecordStatus_Node0_action["System checks if cargo record is in
valid status for business processing"]:::main N_ValidateCargoRecordStatus_Node0 -- Yes --> N_ValidateCargoRecordStatus_Node0_action N_ValidateCargoRecordStatus_Node0_action --> E_ValidateCargoRecordStatus S_ValidateCargoRecordStatus --> N_ValidateCargoRecordStatus_Node0 N_ValidateCargoRecordStatus_Node1{"System validates the cargo record"}:::decision N_ValidateCargoRecordStatus_Node1_action["Cargo record status and attributes
are checked against business
validation criteria"]:::main N_ValidateCargoRecordStatus_Node1 -- Yes --> N_ValidateCargoRecordStatus_Node1_action N_ValidateCargoRecordStatus_Node1_action --> E_ValidateCargoRecordStatus N_ValidateCargoRecordStatus_Node0 -- No --> N_ValidateCargoRecordStatus_Node1 N_ValidateCargoRecordStatus_Node2{"The system validates each cargo
record status"}:::decision N_ValidateCargoRecordStatus_Node2_action["Only cargo records with valid
processing status are included in
subsequent operations"]:::main N_ValidateCargoRecordStatus_Node2 -- Yes --> N_ValidateCargoRecordStatus_Node2_action N_ValidateCargoRecordStatus_Node2_action --> E_ValidateCargoRecordStatus N_ValidateCargoRecordStatus_Node1 -- No --> N_ValidateCargoRecordStatus_Node2 N_ValidateCargoRecordStatus_Node3{"The system validates the cargo
record status"}:::decision N_ValidateCargoRecordStatus_Node3_action["Only cargo records that are not
deleted and have valid processing
status are considered acceptable for
further operations"]:::main N_ValidateCargoRecordStatus_Node3 -- Yes --> N_ValidateCargoRecordStatus_Node3_action N_ValidateCargoRecordStatus_Node3_action --> E_ValidateCargoRecordStatus N_ValidateCargoRecordStatus_Node2 -- No --> N_ValidateCargoRecordStatus_Node3 N_ValidateCargoRecordStatus_Node3 -- No --> E_ValidateCargoRecordStatus
File: GCX016.cbl
GIVEN:
Cargo record found through partial matching with car ID only
WHEN:
Cargo record status validation is performed
THEN:
System checks if cargo record is in valid status for business processing
File: GCX016.cbl
GIVEN:
Cargo record has been found using car ID search
WHEN:
System validates the cargo record
THEN:
- Cargo record status
- Attributes are checked against business validation criteria
File: GCX016.cbl
GIVEN:
Cargo records have been retrieved from the database
WHEN:
The system validates each cargo record status
THEN:
Only cargo records with valid processing status are included in subsequent operations
File: GCX016.cbl
GIVEN:
Cargo records have been found using car ID index search
WHEN:
The system validates the cargo record status
THEN:
- Only cargo records that are not deleted
- Have valid processing status are considered acceptable for further operations
β Consolidated Acceptance Criteria
- Match failure condition is detected → system declares car ID match failed and proceeds to logging
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CarIDMatchFailed(["Start Step"])
E_CarIDMatchFailed(["End Step"])
N_CarIDMatchFailed_Node0{"Match failure condition is detected"}:::decision
N_CarIDMatchFailed_Node0_action["System declares car ID match failed
and proceeds to logging"]:::main N_CarIDMatchFailed_Node0 -- Yes --> N_CarIDMatchFailed_Node0_action N_CarIDMatchFailed_Node0_action --> E_CarIDMatchFailed S_CarIDMatchFailed --> N_CarIDMatchFailed_Node0 N_CarIDMatchFailed_Node0 -- No --> E_CarIDMatchFailed
and proceeds to logging"]:::main N_CarIDMatchFailed_Node0 -- Yes --> N_CarIDMatchFailed_Node0_action N_CarIDMatchFailed_Node0_action --> E_CarIDMatchFailed S_CarIDMatchFailed --> N_CarIDMatchFailed_Node0 N_CarIDMatchFailed_Node0 -- No --> E_CarIDMatchFailed
File: GCX016.cbl
GIVEN:
Car ID is invalid OR no cargo found with exact match OR no cargo found with partial match OR cargo record is invalid
WHEN:
Match failure condition is detected
THEN:
- System declares car id match failed
- Proceeds to logging
β Consolidated Acceptance Criteria
- Logging process is initiated → system records car ID match attempt results for audit trail and business tracking
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogCarIDMatchAttempt(["Start Step"])
E_LogCarIDMatchAttempt(["End Step"])
N_LogCarIDMatchAttempt_Node0{"Logging process is initiated"}:::decision
N_LogCarIDMatchAttempt_Node0_action["System records car ID match attempt
results for audit trail and business
tracking"]:::main N_LogCarIDMatchAttempt_Node0 -- Yes --> N_LogCarIDMatchAttempt_Node0_action N_LogCarIDMatchAttempt_Node0_action --> E_LogCarIDMatchAttempt S_LogCarIDMatchAttempt --> N_LogCarIDMatchAttempt_Node0 N_LogCarIDMatchAttempt_Node0 -- No --> E_LogCarIDMatchAttempt
results for audit trail and business
tracking"]:::main N_LogCarIDMatchAttempt_Node0 -- Yes --> N_LogCarIDMatchAttempt_Node0_action N_LogCarIDMatchAttempt_Node0_action --> E_LogCarIDMatchAttempt S_LogCarIDMatchAttempt --> N_LogCarIDMatchAttempt_Node0 N_LogCarIDMatchAttempt_Node0 -- No --> E_LogCarIDMatchAttempt
File: GCX016.cbl
GIVEN:
Car ID matching process has completed with success, partial success, or failure
WHEN:
Logging process is initiated
THEN:
- System records car id match attempt results for audit trail
- Business tracking
β Consolidated Acceptance Criteria
- The manifest CCN key matches the saved CCN from previous processing → the system identifies this as a lead manifest requiring follower processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LeadManifestIdentified(["Start Step"])
E_LeadManifestIdentified(["End Step"])
N_LeadManifestIdentified_Node0{"The manifest CCN key matches the
saved CCN from previous processing"}:::decision N_LeadManifestIdentified_Node0_action["The system identifies this as a
lead manifest requiring follower
processing"]:::main N_LeadManifestIdentified_Node0 -- Yes --> N_LeadManifestIdentified_Node0_action N_LeadManifestIdentified_Node0_action --> E_LeadManifestIdentified S_LeadManifestIdentified --> N_LeadManifestIdentified_Node0 N_LeadManifestIdentified_Node0 -- No --> E_LeadManifestIdentified
saved CCN from previous processing"}:::decision N_LeadManifestIdentified_Node0_action["The system identifies this as a
lead manifest requiring follower
processing"]:::main N_LeadManifestIdentified_Node0 -- Yes --> N_LeadManifestIdentified_Node0_action N_LeadManifestIdentified_Node0_action --> E_LeadManifestIdentified S_LeadManifestIdentified --> N_LeadManifestIdentified_Node0 N_LeadManifestIdentified_Node0 -- No --> E_LeadManifestIdentified
File: GCX016.cbl
GIVEN:
A manifest record is being processed
WHEN:
The manifest CCN key matches the saved CCN from previous processing
THEN:
The system identifies this as a lead manifest requiring follower processing
β Consolidated Acceptance Criteria
- The system checks for associated follower manifests → the system sets follower end-of-database flag based on whether follower records are found
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_FollowerManifestsExist(["Start Step"])
E_FollowerManifestsExist(["End Step"])
N_FollowerManifestsExist_Node0{"The system checks for associated
follower manifests"}:::decision N_FollowerManifestsExist_Node0_action["The system sets follower
end-of-database flag based on
whether follower records are found"]:::main N_FollowerManifestsExist_Node0 -- Yes --> N_FollowerManifestsExist_Node0_action N_FollowerManifestsExist_Node0_action --> E_FollowerManifestsExist S_FollowerManifestsExist --> N_FollowerManifestsExist_Node0 N_FollowerManifestsExist_Node0 -- No --> E_FollowerManifestsExist
follower manifests"}:::decision N_FollowerManifestsExist_Node0_action["The system sets follower
end-of-database flag based on
whether follower records are found"]:::main N_FollowerManifestsExist_Node0 -- Yes --> N_FollowerManifestsExist_Node0_action N_FollowerManifestsExist_Node0_action --> E_FollowerManifestsExist S_FollowerManifestsExist --> N_FollowerManifestsExist_Node0 N_FollowerManifestsExist_Node0 -- No --> E_FollowerManifestsExist
File: GCX016.cbl
GIVEN:
A lead manifest has been identified
WHEN:
The system checks for associated follower manifests
THEN:
The system sets follower end-of-database flag based on whether follower records are found
β Consolidated Acceptance Criteria
- The system initiates follower manifest retrieval → the system calls GCT0161E to retrieve all follower manifest records
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RetrieveFollowerManifestList(["Start Step"])
E_RetrieveFollowerManifestList(["End Step"])
N_RetrieveFollowerManifestList_Node0{"The system initiates follower
manifest retrieval"}:::decision N_RetrieveFollowerManifestList_Node0_action["The system calls GCT0161E to
retrieve all follower manifest
records"]:::main N_RetrieveFollowerManifestList_Node0 -- Yes --> N_RetrieveFollowerManifestList_Node0_action N_RetrieveFollowerManifestList_Node0_action --> E_RetrieveFollowerManifestList S_RetrieveFollowerManifestList --> N_RetrieveFollowerManifestList_Node0 N_RetrieveFollowerManifestList_Node0 -- No --> E_RetrieveFollowerManifestList
manifest retrieval"}:::decision N_RetrieveFollowerManifestList_Node0_action["The system calls GCT0161E to
retrieve all follower manifest
records"]:::main N_RetrieveFollowerManifestList_Node0 -- Yes --> N_RetrieveFollowerManifestList_Node0_action N_RetrieveFollowerManifestList_Node0_action --> E_RetrieveFollowerManifestList S_RetrieveFollowerManifestList --> N_RetrieveFollowerManifestList_Node0 N_RetrieveFollowerManifestList_Node0 -- No --> E_RetrieveFollowerManifestList
File: GCX016.cbl
GIVEN:
Follower manifests exist for the lead manifest
WHEN:
The system initiates follower manifest retrieval
THEN:
The system calls GCT0161E to retrieve all follower manifest records
β Consolidated Acceptance Criteria
- The system needs to process the next follower manifest → the system selects the next available follower manifest record from the list
- The system needs to process the next follower manifest → the system selects and loads the next follower manifest from the list
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SelectNextFollowerManifest(["Start Step"])
E_SelectNextFollowerManifest(["End Step"])
N_SelectNextFollowerManifest_Node0{"The system needs to process the
next follower manifest"}:::decision N_SelectNextFollowerManifest_Node0_action["The system selects the next
available follower manifest record
from the list"]:::main N_SelectNextFollowerManifest_Node0 -- Yes --> N_SelectNextFollowerManifest_Node0_action N_SelectNextFollowerManifest_Node0_action --> E_SelectNextFollowerManifest S_SelectNextFollowerManifest --> N_SelectNextFollowerManifest_Node0 N_SelectNextFollowerManifest_Node1{"The system needs to process the
next follower manifest"}:::decision N_SelectNextFollowerManifest_Node1_action["The system selects and loads the
next follower manifest from the list"]:::main N_SelectNextFollowerManifest_Node1 -- Yes --> N_SelectNextFollowerManifest_Node1_action N_SelectNextFollowerManifest_Node1_action --> E_SelectNextFollowerManifest N_SelectNextFollowerManifest_Node0 -- No --> N_SelectNextFollowerManifest_Node1 N_SelectNextFollowerManifest_Node1 -- No --> E_SelectNextFollowerManifest
next follower manifest"}:::decision N_SelectNextFollowerManifest_Node0_action["The system selects the next
available follower manifest record
from the list"]:::main N_SelectNextFollowerManifest_Node0 -- Yes --> N_SelectNextFollowerManifest_Node0_action N_SelectNextFollowerManifest_Node0_action --> E_SelectNextFollowerManifest S_SelectNextFollowerManifest --> N_SelectNextFollowerManifest_Node0 N_SelectNextFollowerManifest_Node1{"The system needs to process the
next follower manifest"}:::decision N_SelectNextFollowerManifest_Node1_action["The system selects and loads the
next follower manifest from the list"]:::main N_SelectNextFollowerManifest_Node1 -- Yes --> N_SelectNextFollowerManifest_Node1_action N_SelectNextFollowerManifest_Node1_action --> E_SelectNextFollowerManifest N_SelectNextFollowerManifest_Node0 -- No --> N_SelectNextFollowerManifest_Node1 N_SelectNextFollowerManifest_Node1 -- No --> E_SelectNextFollowerManifest
File: GCX016.cbl
GIVEN:
A list of follower manifests has been retrieved
WHEN:
The system needs to process the next follower manifest
THEN:
The system selects the next available follower manifest record from the list
File: GCX016.cbl
GIVEN:
More follower manifests are available for processing
WHEN:
The system needs to process the next follower manifest
THEN:
- The system selects
- Loads the next follower manifest from the list
β Consolidated Acceptance Criteria
- The system prepares the EDI message for the follower → the system sets special action code '350' and copies disposition code, quantity, and entry number from X4 segment
- The system prepares the EDI message → the special action code is set to '350', disposition code is copied from X4 segment, quantity is transferred, and entry number is populated
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_PrepareEDI350MessageforFollower(["Start Step"])
E_PrepareEDI350MessageforFollower(["End Step"])
N_PrepareEDI350MessageforFollower_Node0{"The system prepares the EDI message
for the follower"}:::decision N_PrepareEDI350MessageforFollower_Node0_action["The system sets special action code
350 and copies disposition code,
quantity, and entry number from X4
segment"]:::main N_PrepareEDI350MessageforFollower_Node0 -- Yes --> N_PrepareEDI350MessageforFollower_Node0_action N_PrepareEDI350MessageforFollower_Node0_action --> E_PrepareEDI350MessageforFollower S_PrepareEDI350MessageforFollower --> N_PrepareEDI350MessageforFollower_Node0 N_PrepareEDI350MessageforFollower_Node1{"The system prepares the EDI message"}:::decision N_PrepareEDI350MessageforFollower_Node1_action["The special action code is set to
350 , disposition code is copied
from X4 segment, quantity is
transferred, and entry number is
populated"]:::main N_PrepareEDI350MessageforFollower_Node1 -- Yes --> N_PrepareEDI350MessageforFollower_Node1_action N_PrepareEDI350MessageforFollower_Node1_action --> E_PrepareEDI350MessageforFollower N_PrepareEDI350MessageforFollower_Node0 -- No --> N_PrepareEDI350MessageforFollower_Node1 N_PrepareEDI350MessageforFollower_Node1 -- No --> E_PrepareEDI350MessageforFollower
for the follower"}:::decision N_PrepareEDI350MessageforFollower_Node0_action["The system sets special action code
350 and copies disposition code,
quantity, and entry number from X4
segment"]:::main N_PrepareEDI350MessageforFollower_Node0 -- Yes --> N_PrepareEDI350MessageforFollower_Node0_action N_PrepareEDI350MessageforFollower_Node0_action --> E_PrepareEDI350MessageforFollower S_PrepareEDI350MessageforFollower --> N_PrepareEDI350MessageforFollower_Node0 N_PrepareEDI350MessageforFollower_Node1{"The system prepares the EDI message"}:::decision N_PrepareEDI350MessageforFollower_Node1_action["The special action code is set to
350 , disposition code is copied
from X4 segment, quantity is
transferred, and entry number is
populated"]:::main N_PrepareEDI350MessageforFollower_Node1 -- Yes --> N_PrepareEDI350MessageforFollower_Node1_action N_PrepareEDI350MessageforFollower_Node1_action --> E_PrepareEDI350MessageforFollower N_PrepareEDI350MessageforFollower_Node0 -- No --> N_PrepareEDI350MessageforFollower_Node1 N_PrepareEDI350MessageforFollower_Node1 -- No --> E_PrepareEDI350MessageforFollower
File: GCX016.cbl
GIVEN:
A follower manifest has been selected for processing
WHEN:
The system prepares the EDI message for the follower
THEN:
The system sets special action code '350' and copies disposition code, quantity, and entry number from X4 segment
File: GCX016.cbl
GIVEN:
A follower manifest is selected for processing
WHEN:
The system prepares the EDI message
THEN:
The special action code is set to '350', disposition code is copied from X4 segment, quantity is transferred, and entry number is populated
β Consolidated Acceptance Criteria
- The system formats the message with follower details → the system includes follower manifest CCN, cargo details, and processing instructions in the formatted message
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_FormatMessagewithFollowerDetails(["Start Step"])
E_FormatMessagewithFollowerDetails(["End Step"])
N_FormatMessagewithFollowerDetails_Node0{"The system formats the message with
follower details"}:::decision N_FormatMessagewithFollowerDetails_Node0_action["The system includes follower
manifest CCN, cargo details, and
processing instructions in the
formatted message"]:::main N_FormatMessagewithFollowerDetails_Node0 -- Yes --> N_FormatMessagewithFollowerDetails_Node0_action N_FormatMessagewithFollowerDetails_Node0_action --> E_FormatMessagewithFollowerDetails S_FormatMessagewithFollowerDetails --> N_FormatMessagewithFollowerDetails_Node0 N_FormatMessagewithFollowerDetails_Node0 -- No --> E_FormatMessagewithFollowerDetails
follower details"}:::decision N_FormatMessagewithFollowerDetails_Node0_action["The system includes follower
manifest CCN, cargo details, and
processing instructions in the
formatted message"]:::main N_FormatMessagewithFollowerDetails_Node0 -- Yes --> N_FormatMessagewithFollowerDetails_Node0_action N_FormatMessagewithFollowerDetails_Node0_action --> E_FormatMessagewithFollowerDetails S_FormatMessagewithFollowerDetails --> N_FormatMessagewithFollowerDetails_Node0 N_FormatMessagewithFollowerDetails_Node0 -- No --> E_FormatMessagewithFollowerDetails
File: GCX016.cbl
GIVEN:
An EDI 350 message has been prepared for a follower manifest
WHEN:
The system formats the message with follower details
THEN:
The system includes follower manifest CCN, cargo details, and processing instructions in the formatted message
β Consolidated Acceptance Criteria
- The system initiates follower processing → the system spawns GCT0161E transaction with the formatted follower message for independent processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SpawnGCT0161ETransactionforFollower(["Start Step"])
E_SpawnGCT0161ETransactionforFollower(["End Step"])
N_SpawnGCT0161ETransactionforFollower_Node0{"The system initiates follower
processing"}:::decision N_SpawnGCT0161ETransactionforFollower_Node0_action["The system spawns GCT0161E
transaction with the formatted
follower message for independent
processing"]:::main N_SpawnGCT0161ETransactionforFollower_Node0 -- Yes --> N_SpawnGCT0161ETransactionforFollower_Node0_action N_SpawnGCT0161ETransactionforFollower_Node0_action --> E_SpawnGCT0161ETransactionforFollower S_SpawnGCT0161ETransactionforFollower --> N_SpawnGCT0161ETransactionforFollower_Node0 N_SpawnGCT0161ETransactionforFollower_Node0 -- No --> E_SpawnGCT0161ETransactionforFollower
processing"}:::decision N_SpawnGCT0161ETransactionforFollower_Node0_action["The system spawns GCT0161E
transaction with the formatted
follower message for independent
processing"]:::main N_SpawnGCT0161ETransactionforFollower_Node0 -- Yes --> N_SpawnGCT0161ETransactionforFollower_Node0_action N_SpawnGCT0161ETransactionforFollower_Node0_action --> E_SpawnGCT0161ETransactionforFollower S_SpawnGCT0161ETransactionforFollower --> N_SpawnGCT0161ETransactionforFollower_Node0 N_SpawnGCT0161ETransactionforFollower_Node0 -- No --> E_SpawnGCT0161ETransactionforFollower
File: GCX016.cbl
GIVEN:
A follower message has been formatted with all required details
WHEN:
The system initiates follower processing
THEN:
The system spawns GCT0161E transaction with the formatted follower message for independent processing
β Consolidated Acceptance Criteria
- The system checks for remaining follower manifests → the system evaluates the follower end-of-database flag to determine if more followers exist
- The system checks the follower end-of-database flag → processing continues if more followers exist or terminates if all followers are processed
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MoreFollowerstoProcess(["Start Step"])
E_MoreFollowerstoProcess(["End Step"])
N_MoreFollowerstoProcess_Node0{"The system checks for remaining
follower manifests"}:::decision N_MoreFollowerstoProcess_Node0_action["The system evaluates the follower
end-of-database flag to determine if
more followers exist"]:::main N_MoreFollowerstoProcess_Node0 -- Yes --> N_MoreFollowerstoProcess_Node0_action N_MoreFollowerstoProcess_Node0_action --> E_MoreFollowerstoProcess S_MoreFollowerstoProcess --> N_MoreFollowerstoProcess_Node0 N_MoreFollowerstoProcess_Node1{"The system checks the follower
end-of-database flag"}:::decision N_MoreFollowerstoProcess_Node1_action["Processing continues if more
followers exist or terminates if all
followers are processed"]:::main N_MoreFollowerstoProcess_Node1 -- Yes --> N_MoreFollowerstoProcess_Node1_action N_MoreFollowerstoProcess_Node1_action --> E_MoreFollowerstoProcess N_MoreFollowerstoProcess_Node0 -- No --> N_MoreFollowerstoProcess_Node1 N_MoreFollowerstoProcess_Node1 -- No --> E_MoreFollowerstoProcess
follower manifests"}:::decision N_MoreFollowerstoProcess_Node0_action["The system evaluates the follower
end-of-database flag to determine if
more followers exist"]:::main N_MoreFollowerstoProcess_Node0 -- Yes --> N_MoreFollowerstoProcess_Node0_action N_MoreFollowerstoProcess_Node0_action --> E_MoreFollowerstoProcess S_MoreFollowerstoProcess --> N_MoreFollowerstoProcess_Node0 N_MoreFollowerstoProcess_Node1{"The system checks the follower
end-of-database flag"}:::decision N_MoreFollowerstoProcess_Node1_action["Processing continues if more
followers exist or terminates if all
followers are processed"]:::main N_MoreFollowerstoProcess_Node1 -- Yes --> N_MoreFollowerstoProcess_Node1_action N_MoreFollowerstoProcess_Node1_action --> E_MoreFollowerstoProcess N_MoreFollowerstoProcess_Node0 -- No --> N_MoreFollowerstoProcess_Node1 N_MoreFollowerstoProcess_Node1 -- No --> E_MoreFollowerstoProcess
File: GCX016.cbl
GIVEN:
A follower manifest has been processed and GCT0161E transaction spawned
WHEN:
The system checks for remaining follower manifests
THEN:
The system evaluates the follower end-of-database flag to determine if more followers exist
File: GCX016.cbl
GIVEN:
Follower manifest processing is in progress
WHEN:
The system checks the follower end-of-database flag
THEN:
Processing continues if more followers exist or terminates if all followers are processed
β Consolidated Acceptance Criteria
- No more follower manifests remain in the list → the system sets completion status and prepares to continue with lead manifest processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AllFollowerManifestsProcessed(["Start Step"])
E_AllFollowerManifestsProcessed(["End Step"])
N_AllFollowerManifestsProcessed_Node0{"No more follower manifests remain
in the list"}:::decision N_AllFollowerManifestsProcessed_Node0_action["The system sets completion status
and prepares to continue with lead
manifest processing"]:::main N_AllFollowerManifestsProcessed_Node0 -- Yes --> N_AllFollowerManifestsProcessed_Node0_action N_AllFollowerManifestsProcessed_Node0_action --> E_AllFollowerManifestsProcessed S_AllFollowerManifestsProcessed --> N_AllFollowerManifestsProcessed_Node0 N_AllFollowerManifestsProcessed_Node0 -- No --> E_AllFollowerManifestsProcessed
in the list"}:::decision N_AllFollowerManifestsProcessed_Node0_action["The system sets completion status
and prepares to continue with lead
manifest processing"]:::main N_AllFollowerManifestsProcessed_Node0 -- Yes --> N_AllFollowerManifestsProcessed_Node0_action N_AllFollowerManifestsProcessed_Node0_action --> E_AllFollowerManifestsProcessed S_AllFollowerManifestsProcessed --> N_AllFollowerManifestsProcessed_Node0 N_AllFollowerManifestsProcessed_Node0 -- No --> E_AllFollowerManifestsProcessed
File: GCX016.cbl
GIVEN:
All follower manifests have been processed and transactions spawned
WHEN:
No more follower manifests remain in the list
THEN:
- The system sets completion status
- Prepares to continue with lead manifest processing
β Consolidated Acceptance Criteria
- The system completes follower processing workflow → the system returns control to continue processing the original lead manifest
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ContinuewithLeadManifestProcessing(["Start Step"])
E_ContinuewithLeadManifestProcessing(["End Step"])
N_ContinuewithLeadManifestProcessing_Node0{"The system completes follower
processing workflow"}:::decision N_ContinuewithLeadManifestProcessing_Node0_action["The system returns control to
continue processing the original
lead manifest"]:::main N_ContinuewithLeadManifestProcessing_Node0 -- Yes --> N_ContinuewithLeadManifestProcessing_Node0_action N_ContinuewithLeadManifestProcessing_Node0_action --> E_ContinuewithLeadManifestProcessing S_ContinuewithLeadManifestProcessing --> N_ContinuewithLeadManifestProcessing_Node0 N_ContinuewithLeadManifestProcessing_Node0 -- No --> E_ContinuewithLeadManifestProcessing
processing workflow"}:::decision N_ContinuewithLeadManifestProcessing_Node0_action["The system returns control to
continue processing the original
lead manifest"]:::main N_ContinuewithLeadManifestProcessing_Node0 -- Yes --> N_ContinuewithLeadManifestProcessing_Node0_action N_ContinuewithLeadManifestProcessing_Node0_action --> E_ContinuewithLeadManifestProcessing S_ContinuewithLeadManifestProcessing --> N_ContinuewithLeadManifestProcessing_Node0 N_ContinuewithLeadManifestProcessing_Node0 -- No --> E_ContinuewithLeadManifestProcessing
File: GCX016.cbl
GIVEN:
All follower manifests have been processed OR no follower manifests exist
WHEN:
The system completes follower processing workflow
THEN:
The system returns control to continue processing the original lead manifest
β Consolidated Acceptance Criteria
- The cargo has existing status segments in the database → the system retrieves all S09 status segments associated with the cargo record
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RetrieveS09SegmentsfromDatabase(["Start Step"])
E_RetrieveS09SegmentsfromDatabase(["End Step"])
N_RetrieveS09SegmentsfromDatabase_Node0{"The cargo has existing status
segments in the database"}:::decision N_RetrieveS09SegmentsfromDatabase_Node0_action["The system retrieves all S09 status
segments associated with the cargo
record"]:::main N_RetrieveS09SegmentsfromDatabase_Node0 -- Yes --> N_RetrieveS09SegmentsfromDatabase_Node0_action N_RetrieveS09SegmentsfromDatabase_Node0_action --> E_RetrieveS09SegmentsfromDatabase S_RetrieveS09SegmentsfromDatabase --> N_RetrieveS09SegmentsfromDatabase_Node0 N_RetrieveS09SegmentsfromDatabase_Node0 -- No --> E_RetrieveS09SegmentsfromDatabase
segments in the database"}:::decision N_RetrieveS09SegmentsfromDatabase_Node0_action["The system retrieves all S09 status
segments associated with the cargo
record"]:::main N_RetrieveS09SegmentsfromDatabase_Node0 -- Yes --> N_RetrieveS09SegmentsfromDatabase_Node0_action N_RetrieveS09SegmentsfromDatabase_Node0_action --> E_RetrieveS09SegmentsfromDatabase S_RetrieveS09SegmentsfromDatabase --> N_RetrieveS09SegmentsfromDatabase_Node0 N_RetrieveS09SegmentsfromDatabase_Node0 -- No --> E_RetrieveS09SegmentsfromDatabase
File: GCX016.cbl
GIVEN:
A cargo record exists in the system
WHEN:
The cargo has existing status segments in the database
THEN:
The system retrieves all S09 status segments associated with the cargo record
β Consolidated Acceptance Criteria
- The cargo has no existing status segments in the database → the system creates a new empty S09A status array structure with initialized counters
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CreateNewEmptyStatusArray(["Start Step"])
E_CreateNewEmptyStatusArray(["End Step"])
N_CreateNewEmptyStatusArray_Node0{"The cargo has no existing status
segments in the database"}:::decision N_CreateNewEmptyStatusArray_Node0_action["The system creates a new empty S09A
status array structure with
initialized counters"]:::main N_CreateNewEmptyStatusArray_Node0 -- Yes --> N_CreateNewEmptyStatusArray_Node0_action N_CreateNewEmptyStatusArray_Node0_action --> E_CreateNewEmptyStatusArray S_CreateNewEmptyStatusArray --> N_CreateNewEmptyStatusArray_Node0 N_CreateNewEmptyStatusArray_Node0 -- No --> E_CreateNewEmptyStatusArray
segments in the database"}:::decision N_CreateNewEmptyStatusArray_Node0_action["The system creates a new empty S09A
status array structure with
initialized counters"]:::main N_CreateNewEmptyStatusArray_Node0 -- Yes --> N_CreateNewEmptyStatusArray_Node0_action N_CreateNewEmptyStatusArray_Node0_action --> E_CreateNewEmptyStatusArray S_CreateNewEmptyStatusArray --> N_CreateNewEmptyStatusArray_Node0 N_CreateNewEmptyStatusArray_Node0 -- No --> E_CreateNewEmptyStatusArray
File: GCX016.cbl
GIVEN:
A cargo record exists in the system
WHEN:
The cargo has no existing status segments in the database
THEN:
The system creates a new empty S09A status array structure with initialized counters
β Consolidated Acceptance Criteria
- The system needs to process status information → the system copies all status codes, disposition codes, entry numbers, quantities, locations, and release flags from S09 segments into the S09A working array
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_PopulateArrayfromS09Segments(["Start Step"])
E_PopulateArrayfromS09Segments(["End Step"])
N_PopulateArrayfromS09Segments_Node0{"The system needs to process status
information"}:::decision N_PopulateArrayfromS09Segments_Node0_action["The system copies all status codes,
disposition codes, entry numbers,
quantities, locations, and release
flags from S09 segments into the
S09A working array"]:::main N_PopulateArrayfromS09Segments_Node0 -- Yes --> N_PopulateArrayfromS09Segments_Node0_action N_PopulateArrayfromS09Segments_Node0_action --> E_PopulateArrayfromS09Segments S_PopulateArrayfromS09Segments --> N_PopulateArrayfromS09Segments_Node0 N_PopulateArrayfromS09Segments_Node0 -- No --> E_PopulateArrayfromS09Segments
information"}:::decision N_PopulateArrayfromS09Segments_Node0_action["The system copies all status codes,
disposition codes, entry numbers,
quantities, locations, and release
flags from S09 segments into the
S09A working array"]:::main N_PopulateArrayfromS09Segments_Node0 -- Yes --> N_PopulateArrayfromS09Segments_Node0_action N_PopulateArrayfromS09Segments_Node0_action --> E_PopulateArrayfromS09Segments S_PopulateArrayfromS09Segments --> N_PopulateArrayfromS09Segments_Node0 N_PopulateArrayfromS09Segments_Node0 -- No --> E_PopulateArrayfromS09Segments
File: GCX016.cbl
GIVEN:
S09 status segments exist in the database for a cargo record
WHEN:
The system needs to process status information
THEN:
The system copies all status codes, disposition codes, entry numbers, quantities, locations, and release flags from S09 segments into the S09A working array
β Consolidated Acceptance Criteria
- A new status code needs to be added to the array → the system adds the status code along with disposition code, entry number, quantity information, location details, and release flag to the next available array position
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AddStatusCodetoArray(["Start Step"])
E_AddStatusCodetoArray(["End Step"])
N_AddStatusCodetoArray_Node0{"A new status code needs to be added
to the array"}:::decision N_AddStatusCodetoArray_Node0_action["The system adds the status code
along with disposition code, entry
number, quantity information,
location details, and release flag
to the next available array position"]:::main N_AddStatusCodetoArray_Node0 -- Yes --> N_AddStatusCodetoArray_Node0_action N_AddStatusCodetoArray_Node0_action --> E_AddStatusCodetoArray S_AddStatusCodetoArray --> N_AddStatusCodetoArray_Node0 N_AddStatusCodetoArray_Node0 -- No --> E_AddStatusCodetoArray
to the array"}:::decision N_AddStatusCodetoArray_Node0_action["The system adds the status code
along with disposition code, entry
number, quantity information,
location details, and release flag
to the next available array position"]:::main N_AddStatusCodetoArray_Node0 -- Yes --> N_AddStatusCodetoArray_Node0_action N_AddStatusCodetoArray_Node0_action --> E_AddStatusCodetoArray S_AddStatusCodetoArray --> N_AddStatusCodetoArray_Node0 N_AddStatusCodetoArray_Node0 -- No --> E_AddStatusCodetoArray
File: GCX016.cbl
GIVEN:
A status array exists and has available space
WHEN:
A new status code needs to be added to the array
THEN:
The system adds the status code along with disposition code, entry number, quantity information, location details, and release flag to the next available array position
β Consolidated Acceptance Criteria
- The processing is complete and changes need to be persisted → the system moves all status information from the S09A array back to S09 database segments, distributing entries across multiple sequences as needed
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MoveArrayBacktoS09Segments(["Start Step"])
E_MoveArrayBacktoS09Segments(["End Step"])
N_MoveArrayBacktoS09Segments_Node0{"The processing is complete and
changes need to be persisted"}:::decision N_MoveArrayBacktoS09Segments_Node0_action["The system moves all status
information from the S09A array back
to S09 database segments,
distributing entries across multiple
sequences as needed"]:::main N_MoveArrayBacktoS09Segments_Node0 -- Yes --> N_MoveArrayBacktoS09Segments_Node0_action N_MoveArrayBacktoS09Segments_Node0_action --> E_MoveArrayBacktoS09Segments S_MoveArrayBacktoS09Segments --> N_MoveArrayBacktoS09Segments_Node0 N_MoveArrayBacktoS09Segments_Node0 -- No --> E_MoveArrayBacktoS09Segments
changes need to be persisted"}:::decision N_MoveArrayBacktoS09Segments_Node0_action["The system moves all status
information from the S09A array back
to S09 database segments,
distributing entries across multiple
sequences as needed"]:::main N_MoveArrayBacktoS09Segments_Node0 -- Yes --> N_MoveArrayBacktoS09Segments_Node0_action N_MoveArrayBacktoS09Segments_Node0_action --> E_MoveArrayBacktoS09Segments S_MoveArrayBacktoS09Segments --> N_MoveArrayBacktoS09Segments_Node0 N_MoveArrayBacktoS09Segments_Node0 -- No --> E_MoveArrayBacktoS09Segments
File: GCX016.cbl
GIVEN:
A status array has been processed and updated
WHEN:
- The processing is complete
- Changes need to be persisted
THEN:
The system moves all status information from the S09A array back to S09 database segments, distributing entries across multiple sequences as needed
β Consolidated Acceptance Criteria
- Changes need to be committed to the database → the system replaces the existing S09 status segments in the database with the updated information
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ReplaceDatabaseRecords(["Start Step"])
E_ReplaceDatabaseRecords(["End Step"])
N_ReplaceDatabaseRecords_Node0{"Changes need to be committed to the
database"}:::decision N_ReplaceDatabaseRecords_Node0_action["The system replaces the existing
S09 status segments in the database
with the updated information"]:::main N_ReplaceDatabaseRecords_Node0 -- Yes --> N_ReplaceDatabaseRecords_Node0_action N_ReplaceDatabaseRecords_Node0_action --> E_ReplaceDatabaseRecords S_ReplaceDatabaseRecords --> N_ReplaceDatabaseRecords_Node0 N_ReplaceDatabaseRecords_Node0 -- No --> E_ReplaceDatabaseRecords
database"}:::decision N_ReplaceDatabaseRecords_Node0_action["The system replaces the existing
S09 status segments in the database
with the updated information"]:::main N_ReplaceDatabaseRecords_Node0 -- Yes --> N_ReplaceDatabaseRecords_Node0_action N_ReplaceDatabaseRecords_Node0_action --> E_ReplaceDatabaseRecords S_ReplaceDatabaseRecords --> N_ReplaceDatabaseRecords_Node0 N_ReplaceDatabaseRecords_Node0 -- No --> E_ReplaceDatabaseRecords
File: GCX016.cbl
GIVEN:
Status segments have been updated in memory
WHEN:
Changes need to be committed to the database
THEN:
The system replaces the existing S09 status segments in the database with the updated information
β Consolidated Acceptance Criteria
- Car ID information needs to be updated in the status segments → for CPRS cargo records, the system clears the car ID, and for other cargo types, the system updates the car initial and number from N7 segment data if available
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UpdateArrayElements(["Start Step"])
E_UpdateArrayElements(["End Step"])
N_UpdateArrayElements_Node0{"Car ID information needs to be
updated in the status segments"}:::decision N_UpdateArrayElements_Node0_action["For CPRS cargo records, the system
clears the car ID, and for other
cargo types, the system updates the
car initial and number from N7
segment data if available"]:::main N_UpdateArrayElements_Node0 -- Yes --> N_UpdateArrayElements_Node0_action N_UpdateArrayElements_Node0_action --> E_UpdateArrayElements S_UpdateArrayElements --> N_UpdateArrayElements_Node0 N_UpdateArrayElements_Node0 -- No --> E_UpdateArrayElements
updated in the status segments"}:::decision N_UpdateArrayElements_Node0_action["For CPRS cargo records, the system
clears the car ID, and for other
cargo types, the system updates the
car initial and number from N7
segment data if available"]:::main N_UpdateArrayElements_Node0 -- Yes --> N_UpdateArrayElements_Node0_action N_UpdateArrayElements_Node0_action --> E_UpdateArrayElements S_UpdateArrayElements --> N_UpdateArrayElements_Node0 N_UpdateArrayElements_Node0 -- No --> E_UpdateArrayElements
File: GCX016.cbl
GIVEN:
Status segments exist for a cargo record and N7 equipment data is available
WHEN:
Car ID information needs to be updated in the status segments
THEN:
- For cprs cargo records, the system clears the car id, and for other cargo types, the system updates the car initial
- Number from n7 segment data if available
β Consolidated Acceptance Criteria
- The system needs to identify the disposition code → the disposition code is extracted from the X4 segment and stored for lookup processing
- The system needs to process disposition code information → the disposition code is extracted from the X4 segment and stored in working storage
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExtractDispositionCodefromX4Segment(["Start Step"])
E_ExtractDispositionCodefromX4Segment(["End Step"])
N_ExtractDispositionCodefromX4Segment_Node0{"The system needs to identify the
disposition code"}:::decision N_ExtractDispositionCodefromX4Segment_Node0_action["The disposition code is extracted
from the X4 segment and stored for
lookup processing"]:::main N_ExtractDispositionCodefromX4Segment_Node0 -- Yes --> N_ExtractDispositionCodefromX4Segment_Node0_action N_ExtractDispositionCodefromX4Segment_Node0_action --> E_ExtractDispositionCodefromX4Segment S_ExtractDispositionCodefromX4Segment --> N_ExtractDispositionCodefromX4Segment_Node0 N_ExtractDispositionCodefromX4Segment_Node1{"The system needs to process
disposition code information"}:::decision N_ExtractDispositionCodefromX4Segment_Node1_action["The disposition code is extracted
from the X4 segment and stored in
working storage"]:::main N_ExtractDispositionCodefromX4Segment_Node1 -- Yes --> N_ExtractDispositionCodefromX4Segment_Node1_action N_ExtractDispositionCodefromX4Segment_Node1_action --> E_ExtractDispositionCodefromX4Segment N_ExtractDispositionCodefromX4Segment_Node0 -- No --> N_ExtractDispositionCodefromX4Segment_Node1 N_ExtractDispositionCodefromX4Segment_Node1 -- No --> E_ExtractDispositionCodefromX4Segment
disposition code"}:::decision N_ExtractDispositionCodefromX4Segment_Node0_action["The disposition code is extracted
from the X4 segment and stored for
lookup processing"]:::main N_ExtractDispositionCodefromX4Segment_Node0 -- Yes --> N_ExtractDispositionCodefromX4Segment_Node0_action N_ExtractDispositionCodefromX4Segment_Node0_action --> E_ExtractDispositionCodefromX4Segment S_ExtractDispositionCodefromX4Segment --> N_ExtractDispositionCodefromX4Segment_Node0 N_ExtractDispositionCodefromX4Segment_Node1{"The system needs to process
disposition code information"}:::decision N_ExtractDispositionCodefromX4Segment_Node1_action["The disposition code is extracted
from the X4 segment and stored in
working storage"]:::main N_ExtractDispositionCodefromX4Segment_Node1 -- Yes --> N_ExtractDispositionCodefromX4Segment_Node1_action N_ExtractDispositionCodefromX4Segment_Node1_action --> E_ExtractDispositionCodefromX4Segment N_ExtractDispositionCodefromX4Segment_Node0 -- No --> N_ExtractDispositionCodefromX4Segment_Node1 N_ExtractDispositionCodefromX4Segment_Node1 -- No --> E_ExtractDispositionCodefromX4Segment
File: GCX016.cbl
GIVEN:
An X4 customs release segment is being processed
WHEN:
The system needs to identify the disposition code
THEN:
- The disposition code is extracted from the x4 segment
- Stored for lookup processing
File: GCX016.cbl
GIVEN:
An X4 segment is available for processing
WHEN:
The system needs to process disposition code information
THEN:
- The disposition code is extracted from the x4 segment
- Stored in working storage
β Consolidated Acceptance Criteria
- The system checks if the disposition code exists in the table → if the code is found, processing continues with code details retrieval, otherwise an error status is set
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_DispositionCodeFoundinTable(["Start Step"])
E_DispositionCodeFoundinTable(["End Step"])
N_DispositionCodeFoundinTable_Node0{"The system checks if the
disposition code exists in the table"}:::decision N_DispositionCodeFoundinTable_Node0_action["If the code is found, processing
continues with code details
retrieval, otherwise an error status
is set"]:::main N_DispositionCodeFoundinTable_Node0 -- Yes --> N_DispositionCodeFoundinTable_Node0_action N_DispositionCodeFoundinTable_Node0_action --> E_DispositionCodeFoundinTable S_DispositionCodeFoundinTable --> N_DispositionCodeFoundinTable_Node0 N_DispositionCodeFoundinTable_Node0 -- No --> E_DispositionCodeFoundinTable
disposition code exists in the table"}:::decision N_DispositionCodeFoundinTable_Node0_action["If the code is found, processing
continues with code details
retrieval, otherwise an error status
is set"]:::main N_DispositionCodeFoundinTable_Node0 -- Yes --> N_DispositionCodeFoundinTable_Node0_action N_DispositionCodeFoundinTable_Node0_action --> E_DispositionCodeFoundinTable S_DispositionCodeFoundinTable --> N_DispositionCodeFoundinTable_Node0 N_DispositionCodeFoundinTable_Node0 -- No --> E_DispositionCodeFoundinTable
File: GCX016.cbl
GIVEN:
A disposition code lookup has been performed against the DC table
WHEN:
The system checks if the disposition code exists in the table
THEN:
If the code is found, processing continues with code details retrieval, otherwise an error status is set
β Consolidated Acceptance Criteria
- The system extracts the code description → the disposition code description is stored for use in processing and user messaging
- The system needs the code description → the description text is retrieved from the DC table entry
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GetCodeDescription(["Start Step"])
E_GetCodeDescription(["End Step"])
N_GetCodeDescription_Node0{"The system extracts the code
description"}:::decision N_GetCodeDescription_Node0_action["The disposition code description is
stored for use in processing and
user messaging"]:::main N_GetCodeDescription_Node0 -- Yes --> N_GetCodeDescription_Node0_action N_GetCodeDescription_Node0_action --> E_GetCodeDescription S_GetCodeDescription --> N_GetCodeDescription_Node0 N_GetCodeDescription_Node1{"The system needs the code
description"}:::decision N_GetCodeDescription_Node1_action["The description text is retrieved
from the DC table entry"]:::main N_GetCodeDescription_Node1 -- Yes --> N_GetCodeDescription_Node1_action N_GetCodeDescription_Node1_action --> E_GetCodeDescription N_GetCodeDescription_Node0 -- No --> N_GetCodeDescription_Node1 N_GetCodeDescription_Node1 -- No --> E_GetCodeDescription
description"}:::decision N_GetCodeDescription_Node0_action["The disposition code description is
stored for use in processing and
user messaging"]:::main N_GetCodeDescription_Node0 -- Yes --> N_GetCodeDescription_Node0_action N_GetCodeDescription_Node0_action --> E_GetCodeDescription S_GetCodeDescription --> N_GetCodeDescription_Node0 N_GetCodeDescription_Node1{"The system needs the code
description"}:::decision N_GetCodeDescription_Node1_action["The description text is retrieved
from the DC table entry"]:::main N_GetCodeDescription_Node1 -- Yes --> N_GetCodeDescription_Node1_action N_GetCodeDescription_Node1_action --> E_GetCodeDescription N_GetCodeDescription_Node0 -- No --> N_GetCodeDescription_Node1 N_GetCodeDescription_Node1 -- No --> E_GetCodeDescription
File: GCX016.cbl
GIVEN:
A disposition code record has been retrieved from the DC table
WHEN:
The system extracts the code description
THEN:
- The disposition code description is stored for use in processing
- User messaging
File: GCX016.cbl
GIVEN:
A disposition code exists in the DC table
WHEN:
The system needs the code description
THEN:
The description text is retrieved from the DC table entry
β Consolidated Acceptance Criteria
- If quantity impact requirements → the quantity action flag is retrieved to determine if release quantities should be increased, decreased, or remain unchanged
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GetQuantityActionFlag(["Start Step"])
E_GetQuantityActionFlag(["End Step"])
N_GetQuantityActionFlag_Node0{"The system evaluates quantity
impact requirements"}:::decision N_GetQuantityActionFlag_Node0_action["The quantity action flag is
retrieved to determine if release
quantities should be increased,
decreased, or remain unchanged"]:::main N_GetQuantityActionFlag_Node0 -- Yes --> N_GetQuantityActionFlag_Node0_action N_GetQuantityActionFlag_Node0_action --> E_GetQuantityActionFlag S_GetQuantityActionFlag --> N_GetQuantityActionFlag_Node0 N_GetQuantityActionFlag_Node0 -- No --> E_GetQuantityActionFlag
impact requirements"}:::decision N_GetQuantityActionFlag_Node0_action["The quantity action flag is
retrieved to determine if release
quantities should be increased,
decreased, or remain unchanged"]:::main N_GetQuantityActionFlag_Node0 -- Yes --> N_GetQuantityActionFlag_Node0_action N_GetQuantityActionFlag_Node0_action --> E_GetQuantityActionFlag S_GetQuantityActionFlag --> N_GetQuantityActionFlag_Node0 N_GetQuantityActionFlag_Node0 -- No --> E_GetQuantityActionFlag
File: GCX016.cbl
GIVEN:
A disposition code record contains quantity action information
WHEN:
The system evaluates quantity impact requirements
THEN:
The quantity action flag is retrieved to determine if release quantities should be increased, decreased, or remain unchanged
β Consolidated Acceptance Criteria
- The system prepares for disposition code processing → all disposition code information including description, counterpart codes, quantity actions, and processing flags are stored in working storage variables
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetDispositionCodeInformationinWorkingStorage(["Start Step"])
E_SetDispositionCodeInformationinWorkingStorage(["End Step"])
N_SetDispositionCodeInformationinWorkingStorage_Node0{"The system prepares for disposition
code processing"}:::decision N_SetDispositionCodeInformationinWorkingStorage_Node0_action["All disposition code information
including description, counterpart
codes, quantity actions, and
processing flags are stored in
working storage variables"]:::main N_SetDispositionCodeInformationinWorkingStorage_Node0 -- Yes --> N_SetDispositionCodeInformationinWorkingStorage_Node0_action N_SetDispositionCodeInformationinWorkingStorage_Node0_action --> E_SetDispositionCodeInformationinWorkingStorage S_SetDispositionCodeInformationinWorkingStorage --> N_SetDispositionCodeInformationinWorkingStorage_Node0 N_SetDispositionCodeInformationinWorkingStorage_Node0 -- No --> E_SetDispositionCodeInformationinWorkingStorage
code processing"}:::decision N_SetDispositionCodeInformationinWorkingStorage_Node0_action["All disposition code information
including description, counterpart
codes, quantity actions, and
processing flags are stored in
working storage variables"]:::main N_SetDispositionCodeInformationinWorkingStorage_Node0 -- Yes --> N_SetDispositionCodeInformationinWorkingStorage_Node0_action N_SetDispositionCodeInformationinWorkingStorage_Node0_action --> E_SetDispositionCodeInformationinWorkingStorage S_SetDispositionCodeInformationinWorkingStorage --> N_SetDispositionCodeInformationinWorkingStorage_Node0 N_SetDispositionCodeInformationinWorkingStorage_Node0 -- No --> E_SetDispositionCodeInformationinWorkingStorage
File: GCX016.cbl
GIVEN:
All disposition code details have been successfully retrieved from the DC table
WHEN:
The system prepares for disposition code processing
THEN:
All disposition code information including description, counterpart codes, quantity actions, and processing flags are stored in working storage variables
β Consolidated Acceptance Criteria
- An error status has been set for the invalid code → the disposition code not found error is logged with relevant details for business review and system monitoring
- The disposition code is not found in the DC table → an error is logged indicating the disposition code was not found and appropriate error handling is initiated
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogDispositionCodeNotFoundError(["Start Step"])
E_LogDispositionCodeNotFoundError(["End Step"])
N_LogDispositionCodeNotFoundError_Node0{"An error status has been set for
the invalid code"}:::decision N_LogDispositionCodeNotFoundError_Node0_action["The disposition code not found
error is logged with relevant
details for business review and
system monitoring"]:::exclusion N_LogDispositionCodeNotFoundError_Node0 -- Yes -->|Alternative| N_LogDispositionCodeNotFoundError_Node0_action N_LogDispositionCodeNotFoundError_Node0_action --> E_LogDispositionCodeNotFoundError S_LogDispositionCodeNotFoundError --> N_LogDispositionCodeNotFoundError_Node0 N_LogDispositionCodeNotFoundError_Node1{"The disposition code is not found
in the DC table"}:::decision N_LogDispositionCodeNotFoundError_Node1_action["An error is logged indicating the
disposition code was not found and
appropriate error handling is
initiated"]:::main N_LogDispositionCodeNotFoundError_Node1 -- Yes --> N_LogDispositionCodeNotFoundError_Node1_action N_LogDispositionCodeNotFoundError_Node1_action --> E_LogDispositionCodeNotFoundError N_LogDispositionCodeNotFoundError_Node0 -- No --> N_LogDispositionCodeNotFoundError_Node1 N_LogDispositionCodeNotFoundError_Node1 -- No --> E_LogDispositionCodeNotFoundError
the invalid code"}:::decision N_LogDispositionCodeNotFoundError_Node0_action["The disposition code not found
error is logged with relevant
details for business review and
system monitoring"]:::exclusion N_LogDispositionCodeNotFoundError_Node0 -- Yes -->|Alternative| N_LogDispositionCodeNotFoundError_Node0_action N_LogDispositionCodeNotFoundError_Node0_action --> E_LogDispositionCodeNotFoundError S_LogDispositionCodeNotFoundError --> N_LogDispositionCodeNotFoundError_Node0 N_LogDispositionCodeNotFoundError_Node1{"The disposition code is not found
in the DC table"}:::decision N_LogDispositionCodeNotFoundError_Node1_action["An error is logged indicating the
disposition code was not found and
appropriate error handling is
initiated"]:::main N_LogDispositionCodeNotFoundError_Node1 -- Yes --> N_LogDispositionCodeNotFoundError_Node1_action N_LogDispositionCodeNotFoundError_Node1_action --> E_LogDispositionCodeNotFoundError N_LogDispositionCodeNotFoundError_Node0 -- No --> N_LogDispositionCodeNotFoundError_Node1 N_LogDispositionCodeNotFoundError_Node1 -- No --> E_LogDispositionCodeNotFoundError
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
A disposition code has not been found in the DC table
WHEN:
An error status has been set for the invalid code
THEN:
- The disposition code not found error is logged with relevant details for business review
- System monitoring
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
A disposition code has been searched in the DC table
WHEN:
The disposition code is not found in the DC table
THEN:
- An error is logged indicating the disposition code was not found
- Appropriate error handling is initiated
β Consolidated Acceptance Criteria
- The system searches through the S09A array elements → the system initializes array search parameters and begins sequential element checking
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_StartStatusArrayDuplicateDetection(["Start Step"])
E_StartStatusArrayDuplicateDetection(["End Step"])
N_StartStatusArrayDuplicateDetection_Node0{"The system searches through the
S09A array elements"}:::decision N_StartStatusArrayDuplicateDetection_Node0_action["The system initializes array search
parameters and begins sequential
element checking"]:::main N_StartStatusArrayDuplicateDetection_Node0 -- Yes --> N_StartStatusArrayDuplicateDetection_Node0_action N_StartStatusArrayDuplicateDetection_Node0_action --> E_StartStatusArrayDuplicateDetection S_StartStatusArrayDuplicateDetection --> N_StartStatusArrayDuplicateDetection_Node0 N_StartStatusArrayDuplicateDetection_Node0 -- No --> E_StartStatusArrayDuplicateDetection
S09A array elements"}:::decision N_StartStatusArrayDuplicateDetection_Node0_action["The system initializes array search
parameters and begins sequential
element checking"]:::main N_StartStatusArrayDuplicateDetection_Node0 -- Yes --> N_StartStatusArrayDuplicateDetection_Node0_action N_StartStatusArrayDuplicateDetection_Node0_action --> E_StartStatusArrayDuplicateDetection S_StartStatusArrayDuplicateDetection --> N_StartStatusArrayDuplicateDetection_Node0 N_StartStatusArrayDuplicateDetection_Node0 -- No --> E_StartStatusArrayDuplicateDetection
File: GCX016.cbl
GIVEN:
A new disposition code needs to be added to the cargo status array
WHEN:
The system searches through the S09A array elements
THEN:
- The system initializes array search parameters
- Begins sequential element checking
β Consolidated Acceptance Criteria
- The array index is compared against the maximum number of elements → processing continues if index is within bounds, otherwise search terminates
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ArrayIndexMaximumElements(["Start Step"])
E_ArrayIndexMaximumElements(["End Step"])
N_ArrayIndexMaximumElements_Node0{"The array index is compared against
the maximum number of elements"}:::decision N_ArrayIndexMaximumElements_Node0_action["Processing continues if index is
within bounds, otherwise search
terminates"]:::main N_ArrayIndexMaximumElements_Node0 -- Yes --> N_ArrayIndexMaximumElements_Node0_action N_ArrayIndexMaximumElements_Node0_action --> E_ArrayIndexMaximumElements S_ArrayIndexMaximumElements --> N_ArrayIndexMaximumElements_Node0 N_ArrayIndexMaximumElements_Node0 -- No --> E_ArrayIndexMaximumElements
the maximum number of elements"}:::decision N_ArrayIndexMaximumElements_Node0_action["Processing continues if index is
within bounds, otherwise search
terminates"]:::main N_ArrayIndexMaximumElements_Node0 -- Yes --> N_ArrayIndexMaximumElements_Node0_action N_ArrayIndexMaximumElements_Node0_action --> E_ArrayIndexMaximumElements S_ArrayIndexMaximumElements --> N_ArrayIndexMaximumElements_Node0 N_ArrayIndexMaximumElements_Node0 -- No --> E_ArrayIndexMaximumElements
File: GCX016.cbl
GIVEN:
An array index position is being evaluated for processing
WHEN:
The array index is compared against the maximum number of elements
THEN:
Processing continues if index is within bounds, otherwise search terminates
β Consolidated Acceptance Criteria
- The system checks if the element contains data → comparison proceeds if data exists, otherwise the system moves to the next element
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ElementContainsData(["Start Step"])
E_ElementContainsData(["End Step"])
N_ElementContainsData_Node0{"The system checks if the element
contains data"}:::decision N_ElementContainsData_Node0_action["Comparison proceeds if data exists,
otherwise the system moves to the
next element"]:::main N_ElementContainsData_Node0 -- Yes --> N_ElementContainsData_Node0_action N_ElementContainsData_Node0_action --> E_ElementContainsData S_ElementContainsData --> N_ElementContainsData_Node0 N_ElementContainsData_Node0 -- No --> E_ElementContainsData
contains data"}:::decision N_ElementContainsData_Node0_action["Comparison proceeds if data exists,
otherwise the system moves to the
next element"]:::main N_ElementContainsData_Node0 -- Yes --> N_ElementContainsData_Node0_action N_ElementContainsData_Node0_action --> E_ElementContainsData S_ElementContainsData --> N_ElementContainsData_Node0 N_ElementContainsData_Node0 -- No --> E_ElementContainsData
File: GCX016.cbl
GIVEN:
A specific array element is being examined
WHEN:
The system checks if the element contains data
THEN:
Comparison proceeds if data exists, otherwise the system moves to the next element
β Consolidated Acceptance Criteria
- The system compares the disposition codes → entry number validation proceeds if codes match, otherwise the system moves to the next element
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CodesMatch(["Start Step"])
E_CodesMatch(["End Step"])
N_CodesMatch_Node0{"The system compares the disposition
codes"}:::decision N_CodesMatch_Node0_action["Entry number validation proceeds if
codes match, otherwise the system
moves to the next element"]:::main N_CodesMatch_Node0 -- Yes --> N_CodesMatch_Node0_action N_CodesMatch_Node0_action --> E_CodesMatch S_CodesMatch --> N_CodesMatch_Node0 N_CodesMatch_Node0 -- No --> E_CodesMatch
codes"}:::decision N_CodesMatch_Node0_action["Entry number validation proceeds if
codes match, otherwise the system
moves to the next element"]:::main N_CodesMatch_Node0 -- Yes --> N_CodesMatch_Node0_action N_CodesMatch_Node0_action --> E_CodesMatch S_CodesMatch --> N_CodesMatch_Node0 N_CodesMatch_Node0 -- No --> E_CodesMatch
File: GCX016.cbl
GIVEN:
A new disposition code and an existing array element with data
WHEN:
The system compares the disposition codes
THEN:
Entry number validation proceeds if codes match, otherwise the system moves to the next element
β Consolidated Acceptance Criteria
- The system compares entry numbers → quantity validation proceeds if entry numbers match, otherwise the system moves to the next element
- The system finds a matching disposition code → compare the entry numbers between the incoming code and existing code to verify they match
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_EntryNumbersMatch(["Start Step"])
E_EntryNumbersMatch(["End Step"])
N_EntryNumbersMatch_Node0{"The system compares entry numbers"}:::decision
N_EntryNumbersMatch_Node0_action["Quantity validation proceeds if
entry numbers match, otherwise the
system moves to the next element"]:::main N_EntryNumbersMatch_Node0 -- Yes --> N_EntryNumbersMatch_Node0_action N_EntryNumbersMatch_Node0_action --> E_EntryNumbersMatch S_EntryNumbersMatch --> N_EntryNumbersMatch_Node0 N_EntryNumbersMatch_Node1{"The system finds a matching
disposition code"}:::decision N_EntryNumbersMatch_Node1_action["Compare the entry numbers between
the incoming code and existing code
to verify they match"]:::main N_EntryNumbersMatch_Node1 -- Yes --> N_EntryNumbersMatch_Node1_action N_EntryNumbersMatch_Node1_action --> E_EntryNumbersMatch N_EntryNumbersMatch_Node0 -- No --> N_EntryNumbersMatch_Node1 N_EntryNumbersMatch_Node1 -- No --> E_EntryNumbersMatch
entry numbers match, otherwise the
system moves to the next element"]:::main N_EntryNumbersMatch_Node0 -- Yes --> N_EntryNumbersMatch_Node0_action N_EntryNumbersMatch_Node0_action --> E_EntryNumbersMatch S_EntryNumbersMatch --> N_EntryNumbersMatch_Node0 N_EntryNumbersMatch_Node1{"The system finds a matching
disposition code"}:::decision N_EntryNumbersMatch_Node1_action["Compare the entry numbers between
the incoming code and existing code
to verify they match"]:::main N_EntryNumbersMatch_Node1 -- Yes --> N_EntryNumbersMatch_Node1_action N_EntryNumbersMatch_Node1_action --> E_EntryNumbersMatch N_EntryNumbersMatch_Node0 -- No --> N_EntryNumbersMatch_Node1 N_EntryNumbersMatch_Node1 -- No --> E_EntryNumbersMatch
File: GCX016.cbl
GIVEN:
Disposition codes match between new entry and existing array element
WHEN:
The system compares entry numbers
THEN:
Quantity validation proceeds if entry numbers match, otherwise the system moves to the next element
File: GCX016.cbl
GIVEN:
A disposition code that already exists in the status array
WHEN:
The system finds a matching disposition code
THEN:
- Compare the entry numbers between the incoming code
- Existing code to verify they match
β Consolidated Acceptance Criteria
- The system compares quantities → duplicate is confirmed if quantities match, otherwise the system moves to the next element
- If whether quantities match requirements → if quantities match, cargo is marked as release eligible, otherwise cargo is marked for partial release
- The system has confirmed disposition code and entry number matches → compare the quantities between the incoming code and existing code to determine if this is a complete duplicate
- The system compares current quantities with PTT requirements → the system decides to either maintain PTT status, adjust PTT for partial release, or proceed with standard PTT restoration
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_QuantitiesMatch(["Start Step"])
E_QuantitiesMatch(["End Step"])
N_QuantitiesMatch_Node0{"The system compares quantities"}:::decision
N_QuantitiesMatch_Node0_action["Duplicate is confirmed if
quantities match, otherwise the
system moves to the next element"]:::main N_QuantitiesMatch_Node0 -- Yes --> N_QuantitiesMatch_Node0_action N_QuantitiesMatch_Node0_action --> E_QuantitiesMatch S_QuantitiesMatch --> N_QuantitiesMatch_Node0 N_QuantitiesMatch_Node1{"The system evaluates whether
quantities match requirements"}:::decision N_QuantitiesMatch_Node1_action["If quantities match, cargo is
marked as release eligible,
otherwise cargo is marked for
partial release"]:::main N_QuantitiesMatch_Node1 -- Yes --> N_QuantitiesMatch_Node1_action N_QuantitiesMatch_Node1_action --> E_QuantitiesMatch N_QuantitiesMatch_Node0 -- No --> N_QuantitiesMatch_Node1 N_QuantitiesMatch_Node2{"The system has confirmed
disposition code and entry number
matches"}:::decision N_QuantitiesMatch_Node2_action["Compare the quantities between the
incoming code and existing code to
determine if this is a complete
duplicate"]:::main N_QuantitiesMatch_Node2 -- Yes --> N_QuantitiesMatch_Node2_action N_QuantitiesMatch_Node2_action --> E_QuantitiesMatch N_QuantitiesMatch_Node1 -- No --> N_QuantitiesMatch_Node2 N_QuantitiesMatch_Node3{"The system compares current
quantities with PTT requirements"}:::decision N_QuantitiesMatch_Node3_action["The system decides to either
maintain PTT status, adjust PTT for
partial release, or proceed with
standard PTT restoration"]:::main N_QuantitiesMatch_Node3 -- Yes --> N_QuantitiesMatch_Node3_action N_QuantitiesMatch_Node3_action --> E_QuantitiesMatch N_QuantitiesMatch_Node2 -- No --> N_QuantitiesMatch_Node3 N_QuantitiesMatch_Node3 -- No --> E_QuantitiesMatch
quantities match, otherwise the
system moves to the next element"]:::main N_QuantitiesMatch_Node0 -- Yes --> N_QuantitiesMatch_Node0_action N_QuantitiesMatch_Node0_action --> E_QuantitiesMatch S_QuantitiesMatch --> N_QuantitiesMatch_Node0 N_QuantitiesMatch_Node1{"The system evaluates whether
quantities match requirements"}:::decision N_QuantitiesMatch_Node1_action["If quantities match, cargo is
marked as release eligible,
otherwise cargo is marked for
partial release"]:::main N_QuantitiesMatch_Node1 -- Yes --> N_QuantitiesMatch_Node1_action N_QuantitiesMatch_Node1_action --> E_QuantitiesMatch N_QuantitiesMatch_Node0 -- No --> N_QuantitiesMatch_Node1 N_QuantitiesMatch_Node2{"The system has confirmed
disposition code and entry number
matches"}:::decision N_QuantitiesMatch_Node2_action["Compare the quantities between the
incoming code and existing code to
determine if this is a complete
duplicate"]:::main N_QuantitiesMatch_Node2 -- Yes --> N_QuantitiesMatch_Node2_action N_QuantitiesMatch_Node2_action --> E_QuantitiesMatch N_QuantitiesMatch_Node1 -- No --> N_QuantitiesMatch_Node2 N_QuantitiesMatch_Node3{"The system compares current
quantities with PTT requirements"}:::decision N_QuantitiesMatch_Node3_action["The system decides to either
maintain PTT status, adjust PTT for
partial release, or proceed with
standard PTT restoration"]:::main N_QuantitiesMatch_Node3 -- Yes --> N_QuantitiesMatch_Node3_action N_QuantitiesMatch_Node3_action --> E_QuantitiesMatch N_QuantitiesMatch_Node2 -- No --> N_QuantitiesMatch_Node3 N_QuantitiesMatch_Node3 -- No --> E_QuantitiesMatch
File: GCX016.cbl
GIVEN:
Disposition codes and entry numbers match between new entry and existing array element
WHEN:
The system compares quantities
THEN:
Duplicate is confirmed if quantities match, otherwise the system moves to the next element
File: GCX016.cbl
GIVEN:
Quantity validation has been performed
WHEN:
The system evaluates whether quantities match requirements
THEN:
If quantities match, cargo is marked as release eligible, otherwise cargo is marked for partial release
File: GCX016.cbl
GIVEN:
A disposition code and entry number that match an existing array element
WHEN:
- The system has confirmed disposition code
- Entry number matches
THEN:
- Compare the quantities between the incoming code
- Existing code to determine if this is a complete duplicate
File: GCX016.cbl
GIVEN:
A cargo record with validated PTT quantities
WHEN:
The system compares current quantities with PTT requirements
THEN:
The system decides to either maintain PTT status, adjust PTT for partial release, or proceed with standard PTT restoration
β Consolidated Acceptance Criteria
- The system confirms a complete duplicate match → the duplicate found flag is set and search processing terminates
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_DuplicateFoundSetFlag(["Start Step"])
E_DuplicateFoundSetFlag(["End Step"])
N_DuplicateFoundSetFlag_Node0{"The system confirms a complete
duplicate match"}:::decision N_DuplicateFoundSetFlag_Node0_action["The duplicate found flag is set and
search processing terminates"]:::main N_DuplicateFoundSetFlag_Node0 -- Yes --> N_DuplicateFoundSetFlag_Node0_action N_DuplicateFoundSetFlag_Node0_action --> E_DuplicateFoundSetFlag S_DuplicateFoundSetFlag --> N_DuplicateFoundSetFlag_Node0 N_DuplicateFoundSetFlag_Node0 -- No --> E_DuplicateFoundSetFlag
duplicate match"}:::decision N_DuplicateFoundSetFlag_Node0_action["The duplicate found flag is set and
search processing terminates"]:::main N_DuplicateFoundSetFlag_Node0 -- Yes --> N_DuplicateFoundSetFlag_Node0_action N_DuplicateFoundSetFlag_Node0_action --> E_DuplicateFoundSetFlag S_DuplicateFoundSetFlag --> N_DuplicateFoundSetFlag_Node0 N_DuplicateFoundSetFlag_Node0 -- No --> E_DuplicateFoundSetFlag
File: GCX016.cbl
GIVEN:
Disposition code, entry number, and quantity all match an existing array element
WHEN:
The system confirms a complete duplicate match
THEN:
- The duplicate found flag is set
- Search processing terminates
β Consolidated Acceptance Criteria
- No matching disposition code, entry number, and quantity combination is found → the system sets no duplicate found status and returns the search result
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_NoDuplicateFound(["Start Step"])
E_NoDuplicateFound(["End Step"])
N_NoDuplicateFound_Node0{"No matching disposition code, entry
number, and quantity combination is
found"}:::decision N_NoDuplicateFound_Node0_action["The system sets no duplicate found
status and returns the search result"]:::main N_NoDuplicateFound_Node0 -- Yes --> N_NoDuplicateFound_Node0_action N_NoDuplicateFound_Node0_action --> E_NoDuplicateFound S_NoDuplicateFound --> N_NoDuplicateFound_Node0 N_NoDuplicateFound_Node0 -- No --> E_NoDuplicateFound
number, and quantity combination is
found"}:::decision N_NoDuplicateFound_Node0_action["The system sets no duplicate found
status and returns the search result"]:::main N_NoDuplicateFound_Node0 -- Yes --> N_NoDuplicateFound_Node0_action N_NoDuplicateFound_Node0_action --> E_NoDuplicateFound S_NoDuplicateFound --> N_NoDuplicateFound_Node0 N_NoDuplicateFound_Node0 -- No --> E_NoDuplicateFound
File: GCX016.cbl
GIVEN:
All array elements have been examined
WHEN:
No matching disposition code, entry number, and quantity combination is found
THEN:
- The system sets no duplicate found status
- Returns the search result
β Consolidated Acceptance Criteria
- The system checks the disposition code table for counterpart relationships → the system identifies whether the code has a counterpart that needs to be removed
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CheckifCodeHasCounterpart(["Start Step"])
E_CheckifCodeHasCounterpart(["End Step"])
N_CheckifCodeHasCounterpart_Node0{"The system checks the disposition
code table for counterpart
relationships"}:::decision N_CheckifCodeHasCounterpart_Node0_action["The system identifies whether the
code has a counterpart that needs to
be removed"]:::main N_CheckifCodeHasCounterpart_Node0 -- Yes --> N_CheckifCodeHasCounterpart_Node0_action N_CheckifCodeHasCounterpart_Node0_action --> E_CheckifCodeHasCounterpart S_CheckifCodeHasCounterpart --> N_CheckifCodeHasCounterpart_Node0 N_CheckifCodeHasCounterpart_Node0 -- No --> E_CheckifCodeHasCounterpart
code table for counterpart
relationships"}:::decision N_CheckifCodeHasCounterpart_Node0_action["The system identifies whether the
code has a counterpart that needs to
be removed"]:::main N_CheckifCodeHasCounterpart_Node0 -- Yes --> N_CheckifCodeHasCounterpart_Node0_action N_CheckifCodeHasCounterpart_Node0_action --> E_CheckifCodeHasCounterpart S_CheckifCodeHasCounterpart --> N_CheckifCodeHasCounterpart_Node0 N_CheckifCodeHasCounterpart_Node0 -- No --> E_CheckifCodeHasCounterpart
File: GCX016.cbl
GIVEN:
A new disposition code is received for processing
WHEN:
The system checks the disposition code table for counterpart relationships
THEN:
The system identifies whether the code has a counterpart that needs to be removed
β Consolidated Acceptance Criteria
- The system searches through the status array elements → the system identifies if the counterpart code is present in the array
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SearchStatusArrayforCounterpart(["Start Step"])
E_SearchStatusArrayforCounterpart(["End Step"])
N_SearchStatusArrayforCounterpart_Node0{"The system searches through the
status array elements"}:::decision N_SearchStatusArrayforCounterpart_Node0_action["The system identifies if the
counterpart code is present in the
array"]:::main N_SearchStatusArrayforCounterpart_Node0 -- Yes --> N_SearchStatusArrayforCounterpart_Node0_action N_SearchStatusArrayforCounterpart_Node0_action --> E_SearchStatusArrayforCounterpart S_SearchStatusArrayforCounterpart --> N_SearchStatusArrayforCounterpart_Node0 N_SearchStatusArrayforCounterpart_Node0 -- No --> E_SearchStatusArrayforCounterpart
status array elements"}:::decision N_SearchStatusArrayforCounterpart_Node0_action["The system identifies if the
counterpart code is present in the
array"]:::main N_SearchStatusArrayforCounterpart_Node0 -- Yes --> N_SearchStatusArrayforCounterpart_Node0_action N_SearchStatusArrayforCounterpart_Node0_action --> E_SearchStatusArrayforCounterpart S_SearchStatusArrayforCounterpart --> N_SearchStatusArrayforCounterpart_Node0 N_SearchStatusArrayforCounterpart_Node0 -- No --> E_SearchStatusArrayforCounterpart
File: GCX016.cbl
GIVEN:
A counterpart disposition code exists for the new code
WHEN:
The system searches through the status array elements
THEN:
The system identifies if the counterpart code is present in the array
β Consolidated Acceptance Criteria
- The system compares status information fields between the counterpart and new code → the system determines if the status information matches for removal eligibility
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MatchbyStatusInfo(["Start Step"])
E_MatchbyStatusInfo(["End Step"])
N_MatchbyStatusInfo_Node0{"The system compares status
information fields between the
counterpart and new code"}:::decision N_MatchbyStatusInfo_Node0_action["The system determines if the status
information matches for removal
eligibility"]:::main N_MatchbyStatusInfo_Node0 -- Yes --> N_MatchbyStatusInfo_Node0_action N_MatchbyStatusInfo_Node0_action --> E_MatchbyStatusInfo S_MatchbyStatusInfo --> N_MatchbyStatusInfo_Node0 N_MatchbyStatusInfo_Node0 -- No --> E_MatchbyStatusInfo
information fields between the
counterpart and new code"}:::decision N_MatchbyStatusInfo_Node0_action["The system determines if the status
information matches for removal
eligibility"]:::main N_MatchbyStatusInfo_Node0 -- Yes --> N_MatchbyStatusInfo_Node0_action N_MatchbyStatusInfo_Node0_action --> E_MatchbyStatusInfo S_MatchbyStatusInfo --> N_MatchbyStatusInfo_Node0 N_MatchbyStatusInfo_Node0 -- No --> E_MatchbyStatusInfo
File: GCX016.cbl
GIVEN:
A counterpart code is found in the status array
WHEN:
- The system compares status information fields between the counterpart
- New code
THEN:
The system determines if the status information matches for removal eligibility
β Consolidated Acceptance Criteria
- The system compares entry numbers between the counterpart and new code → the system determines if the entry numbers match for removal eligibility
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MatchbyEntryNumber(["Start Step"])
E_MatchbyEntryNumber(["End Step"])
N_MatchbyEntryNumber_Node0{"The system compares entry numbers
between the counterpart and new code"}:::decision N_MatchbyEntryNumber_Node0_action["The system determines if the entry
numbers match for removal
eligibility"]:::main N_MatchbyEntryNumber_Node0 -- Yes --> N_MatchbyEntryNumber_Node0_action N_MatchbyEntryNumber_Node0_action --> E_MatchbyEntryNumber S_MatchbyEntryNumber --> N_MatchbyEntryNumber_Node0 N_MatchbyEntryNumber_Node0 -- No --> E_MatchbyEntryNumber
between the counterpart and new code"}:::decision N_MatchbyEntryNumber_Node0_action["The system determines if the entry
numbers match for removal
eligibility"]:::main N_MatchbyEntryNumber_Node0 -- Yes --> N_MatchbyEntryNumber_Node0_action N_MatchbyEntryNumber_Node0_action --> E_MatchbyEntryNumber S_MatchbyEntryNumber --> N_MatchbyEntryNumber_Node0 N_MatchbyEntryNumber_Node0 -- No --> E_MatchbyEntryNumber
File: GCX016.cbl
GIVEN:
Status information criteria are evaluated for the counterpart code
WHEN:
- The system compares entry numbers between the counterpart
- New code
THEN:
The system determines if the entry numbers match for removal eligibility
β Consolidated Acceptance Criteria
- The system compares quantities between the counterpart and new code → the system determines if the quantities match for removal eligibility
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MatchbyQuantity(["Start Step"])
E_MatchbyQuantity(["End Step"])
N_MatchbyQuantity_Node0{"The system compares quantities
between the counterpart and new code"}:::decision N_MatchbyQuantity_Node0_action["The system determines if the
quantities match for removal
eligibility"]:::main N_MatchbyQuantity_Node0 -- Yes --> N_MatchbyQuantity_Node0_action N_MatchbyQuantity_Node0_action --> E_MatchbyQuantity S_MatchbyQuantity --> N_MatchbyQuantity_Node0 N_MatchbyQuantity_Node0 -- No --> E_MatchbyQuantity
between the counterpart and new code"}:::decision N_MatchbyQuantity_Node0_action["The system determines if the
quantities match for removal
eligibility"]:::main N_MatchbyQuantity_Node0 -- Yes --> N_MatchbyQuantity_Node0_action N_MatchbyQuantity_Node0_action --> E_MatchbyQuantity S_MatchbyQuantity --> N_MatchbyQuantity_Node0 N_MatchbyQuantity_Node0 -- No --> E_MatchbyQuantity
File: GCX016.cbl
GIVEN:
Entry number criteria are evaluated for the counterpart code
WHEN:
- The system compares quantities between the counterpart
- New code
THEN:
The system determines if the quantities match for removal eligibility
β Consolidated Acceptance Criteria
- The system applies specific pattern matching rules for special codes like 4E disposition → the system determines if the code patterns match for removal eligibility
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MatchbySpecificCodePattern(["Start Step"])
E_MatchbySpecificCodePattern(["End Step"])
N_MatchbySpecificCodePattern_Node0{"The system applies specific pattern
matching rules for special codes
like 4E disposition"}:::decision N_MatchbySpecificCodePattern_Node0_action["The system determines if the code
patterns match for removal
eligibility"]:::main N_MatchbySpecificCodePattern_Node0 -- Yes --> N_MatchbySpecificCodePattern_Node0_action N_MatchbySpecificCodePattern_Node0_action --> E_MatchbySpecificCodePattern S_MatchbySpecificCodePattern --> N_MatchbySpecificCodePattern_Node0 N_MatchbySpecificCodePattern_Node0 -- No --> E_MatchbySpecificCodePattern
matching rules for special codes
like 4E disposition"}:::decision N_MatchbySpecificCodePattern_Node0_action["The system determines if the code
patterns match for removal
eligibility"]:::main N_MatchbySpecificCodePattern_Node0 -- Yes --> N_MatchbySpecificCodePattern_Node0_action N_MatchbySpecificCodePattern_Node0_action --> E_MatchbySpecificCodePattern S_MatchbySpecificCodePattern --> N_MatchbySpecificCodePattern_Node0 N_MatchbySpecificCodePattern_Node0 -- No --> E_MatchbySpecificCodePattern
File: GCX016.cbl
GIVEN:
Quantity criteria are evaluated for the counterpart code
WHEN:
The system applies specific pattern matching rules for special codes like 4E disposition
THEN:
The system determines if the code patterns match for removal eligibility
β Consolidated Acceptance Criteria
- The disposition code equals 'ARL' → the system initiates auto release processing workflow
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ARLAutoReleaseRequestReceived(["Start Step"])
E_ARLAutoReleaseRequestReceived(["End Step"])
N_ARLAutoReleaseRequestReceived_Node0{"The disposition code equals ARL"}:::decision
N_ARLAutoReleaseRequestReceived_Node0_action["The system initiates auto release
processing workflow"]:::main N_ARLAutoReleaseRequestReceived_Node0 -- Yes --> N_ARLAutoReleaseRequestReceived_Node0_action N_ARLAutoReleaseRequestReceived_Node0_action --> E_ARLAutoReleaseRequestReceived S_ARLAutoReleaseRequestReceived --> N_ARLAutoReleaseRequestReceived_Node0 N_ARLAutoReleaseRequestReceived_Node0 -- No --> E_ARLAutoReleaseRequestReceived
processing workflow"]:::main N_ARLAutoReleaseRequestReceived_Node0 -- Yes --> N_ARLAutoReleaseRequestReceived_Node0_action N_ARLAutoReleaseRequestReceived_Node0_action --> E_ARLAutoReleaseRequestReceived S_ARLAutoReleaseRequestReceived --> N_ARLAutoReleaseRequestReceived_Node0 N_ARLAutoReleaseRequestReceived_Node0 -- No --> E_ARLAutoReleaseRequestReceived
File: GCX016.cbl
GIVEN:
A disposition code is received in the X4 segment
WHEN:
The disposition code equals 'ARL'
THEN:
The system initiates auto release processing workflow
β Consolidated Acceptance Criteria
- The system reaches status code insertion logic → status code insertion is skipped and existing status array is analyzed
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SkipStatusCodeInsertion(["Start Step"])
E_SkipStatusCodeInsertion(["End Step"])
N_SkipStatusCodeInsertion_Node0{"The system reaches status code
insertion logic"}:::decision N_SkipStatusCodeInsertion_Node0_action["Status code insertion is skipped
and existing status array is
analyzed"]:::main N_SkipStatusCodeInsertion_Node0 -- Yes --> N_SkipStatusCodeInsertion_Node0_action N_SkipStatusCodeInsertion_Node0_action --> E_SkipStatusCodeInsertion S_SkipStatusCodeInsertion --> N_SkipStatusCodeInsertion_Node0 N_SkipStatusCodeInsertion_Node0 -- No --> E_SkipStatusCodeInsertion
insertion logic"}:::decision N_SkipStatusCodeInsertion_Node0_action["Status code insertion is skipped
and existing status array is
analyzed"]:::main N_SkipStatusCodeInsertion_Node0 -- Yes --> N_SkipStatusCodeInsertion_Node0_action N_SkipStatusCodeInsertion_Node0_action --> E_SkipStatusCodeInsertion S_SkipStatusCodeInsertion --> N_SkipStatusCodeInsertion_Node0 N_SkipStatusCodeInsertion_Node0 -- No --> E_SkipStatusCodeInsertion
File: GCX016.cbl
GIVEN:
An ARL disposition code is being processed
WHEN:
The system reaches status code insertion logic
THEN:
- Status code insertion is skipped
- Existing status array is analyzed
β Consolidated Acceptance Criteria
- The system needs current status information → current S09A status array is retrieved from GCSUSS09 status segments
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RetrieveCurrentStatusArrayS09A(["Start Step"])
E_RetrieveCurrentStatusArrayS09A(["End Step"])
N_RetrieveCurrentStatusArrayS09A_Node0{"The system needs current status
information"}:::decision N_RetrieveCurrentStatusArrayS09A_Node0_action["Current S09A status array is
retrieved from GCSUSS09 status
segments"]:::main N_RetrieveCurrentStatusArrayS09A_Node0 -- Yes --> N_RetrieveCurrentStatusArrayS09A_Node0_action N_RetrieveCurrentStatusArrayS09A_Node0_action --> E_RetrieveCurrentStatusArrayS09A S_RetrieveCurrentStatusArrayS09A --> N_RetrieveCurrentStatusArrayS09A_Node0 N_RetrieveCurrentStatusArrayS09A_Node0 -- No --> E_RetrieveCurrentStatusArrayS09A
information"}:::decision N_RetrieveCurrentStatusArrayS09A_Node0_action["Current S09A status array is
retrieved from GCSUSS09 status
segments"]:::main N_RetrieveCurrentStatusArrayS09A_Node0 -- Yes --> N_RetrieveCurrentStatusArrayS09A_Node0_action N_RetrieveCurrentStatusArrayS09A_Node0_action --> E_RetrieveCurrentStatusArrayS09A S_RetrieveCurrentStatusArrayS09A --> N_RetrieveCurrentStatusArrayS09A_Node0 N_RetrieveCurrentStatusArrayS09A_Node0 -- No --> E_RetrieveCurrentStatusArrayS09A
File: GCX016.cbl
GIVEN:
ARL processing requires status analysis
WHEN:
The system needs current status information
THEN:
Current S09A status array is retrieved from GCSUSS09 status segments
β Consolidated Acceptance Criteria
- ARL processing analyzes existing status codes → system evaluates hold conditions, release quantities, and cargo status flags
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AnalyzeExistingStatusCodes(["Start Step"])
E_AnalyzeExistingStatusCodes(["End Step"])
N_AnalyzeExistingStatusCodes_Node0{"ARL processing analyzes existing
status codes"}:::decision N_AnalyzeExistingStatusCodes_Node0_action["System evaluates hold conditions,
release quantities, and cargo status
flags"]:::main N_AnalyzeExistingStatusCodes_Node0 -- Yes --> N_AnalyzeExistingStatusCodes_Node0_action N_AnalyzeExistingStatusCodes_Node0_action --> E_AnalyzeExistingStatusCodes S_AnalyzeExistingStatusCodes --> N_AnalyzeExistingStatusCodes_Node0 N_AnalyzeExistingStatusCodes_Node0 -- No --> E_AnalyzeExistingStatusCodes
status codes"}:::decision N_AnalyzeExistingStatusCodes_Node0_action["System evaluates hold conditions,
release quantities, and cargo status
flags"]:::main N_AnalyzeExistingStatusCodes_Node0 -- Yes --> N_AnalyzeExistingStatusCodes_Node0_action N_AnalyzeExistingStatusCodes_Node0_action --> E_AnalyzeExistingStatusCodes S_AnalyzeExistingStatusCodes --> N_AnalyzeExistingStatusCodes_Node0 N_AnalyzeExistingStatusCodes_Node0 -- No --> E_AnalyzeExistingStatusCodes
File: GCX016.cbl
GIVEN:
Current status array S09A is available
WHEN:
ARL processing analyzes existing status codes
THEN:
System evaluates hold conditions, release quantities, and cargo status flags
β Consolidated Acceptance Criteria
- The system confirms cargo eligibility → auto release flag is set to enable release processing
- The system sets the auto release flag → mark cargo as eligible for auto release and set appropriate processing flags for downstream systems
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetAutoReleaseFlag(["Start Step"])
E_SetAutoReleaseFlag(["End Step"])
N_SetAutoReleaseFlag_Node0{"The system confirms cargo
eligibility"}:::decision N_SetAutoReleaseFlag_Node0_action["Auto release flag is set to enable
release processing"]:::main N_SetAutoReleaseFlag_Node0 -- Yes --> N_SetAutoReleaseFlag_Node0_action N_SetAutoReleaseFlag_Node0_action --> E_SetAutoReleaseFlag S_SetAutoReleaseFlag --> N_SetAutoReleaseFlag_Node0 N_SetAutoReleaseFlag_Node1{"The system sets the auto release
flag"}:::decision N_SetAutoReleaseFlag_Node1_action["Mark cargo as eligible for auto
release and set appropriate
processing flags for downstream
systems"]:::main N_SetAutoReleaseFlag_Node1 -- Yes --> N_SetAutoReleaseFlag_Node1_action N_SetAutoReleaseFlag_Node1_action --> E_SetAutoReleaseFlag N_SetAutoReleaseFlag_Node0 -- No --> N_SetAutoReleaseFlag_Node1 N_SetAutoReleaseFlag_Node1 -- No --> E_SetAutoReleaseFlag
eligibility"}:::decision N_SetAutoReleaseFlag_Node0_action["Auto release flag is set to enable
release processing"]:::main N_SetAutoReleaseFlag_Node0 -- Yes --> N_SetAutoReleaseFlag_Node0_action N_SetAutoReleaseFlag_Node0_action --> E_SetAutoReleaseFlag S_SetAutoReleaseFlag --> N_SetAutoReleaseFlag_Node0 N_SetAutoReleaseFlag_Node1{"The system sets the auto release
flag"}:::decision N_SetAutoReleaseFlag_Node1_action["Mark cargo as eligible for auto
release and set appropriate
processing flags for downstream
systems"]:::main N_SetAutoReleaseFlag_Node1 -- Yes --> N_SetAutoReleaseFlag_Node1_action N_SetAutoReleaseFlag_Node1_action --> E_SetAutoReleaseFlag N_SetAutoReleaseFlag_Node0 -- No --> N_SetAutoReleaseFlag_Node1 N_SetAutoReleaseFlag_Node1 -- No --> E_SetAutoReleaseFlag
File: GCX016.cbl
GIVEN:
Release conditions are met for ARL processing
WHEN:
The system confirms cargo eligibility
THEN:
Auto release flag is set to enable release processing
File: GCX016.cbl
GIVEN:
All release conditions have been met for auto release
WHEN:
The system sets the auto release flag
THEN:
- Mark cargo as eligible for auto release
- Set appropriate processing flags for downstream systems
β Consolidated Acceptance Criteria
- The system checks for manual release conditions → manual release override flag is evaluated based on cargo status and processing requirements
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ManualReleaseOverride(["Start Step"])
E_ManualReleaseOverride(["End Step"])
N_ManualReleaseOverride_Node0{"The system checks for manual
release conditions"}:::decision N_ManualReleaseOverride_Node0_action["Manual release override flag is
evaluated based on cargo status and
processing requirements"]:::main N_ManualReleaseOverride_Node0 -- Yes --> N_ManualReleaseOverride_Node0_action N_ManualReleaseOverride_Node0_action --> E_ManualReleaseOverride S_ManualReleaseOverride --> N_ManualReleaseOverride_Node0 N_ManualReleaseOverride_Node0 -- No --> E_ManualReleaseOverride
release conditions"}:::decision N_ManualReleaseOverride_Node0_action["Manual release override flag is
evaluated based on cargo status and
processing requirements"]:::main N_ManualReleaseOverride_Node0 -- Yes --> N_ManualReleaseOverride_Node0_action N_ManualReleaseOverride_Node0_action --> E_ManualReleaseOverride S_ManualReleaseOverride --> N_ManualReleaseOverride_Node0 N_ManualReleaseOverride_Node0 -- No --> E_ManualReleaseOverride
File: GCX016.cbl
GIVEN:
Cargo status has been updated for ARL processing
WHEN:
The system checks for manual release conditions
THEN:
- Manual release override flag is evaluated based on cargo status
- Processing requirements
β Consolidated Acceptance Criteria
- The system updates the cargo record → cargo record is updated in GCCC-CARGO-ROOT with new status and release information
- Status processing is complete → the cargo record is updated in the database with the new status and associated dates
- Cargo record update is required → system updates cargo record with final status, dates, and related status information
- The system updates the cargo record with final status information → the system commits the final cargo status including PTT status preservation results to the cargo record
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UpdateCargoRecord(["Start Step"])
E_UpdateCargoRecord(["End Step"])
N_UpdateCargoRecord_Node0{"The system updates the cargo record"}:::decision
N_UpdateCargoRecord_Node0_action["Cargo record is updated in
GCCC-CARGO-ROOT with new status and
release information"]:::main N_UpdateCargoRecord_Node0 -- Yes --> N_UpdateCargoRecord_Node0_action N_UpdateCargoRecord_Node0_action --> E_UpdateCargoRecord S_UpdateCargoRecord --> N_UpdateCargoRecord_Node0 N_UpdateCargoRecord_Node1{"Status processing is complete"}:::decision N_UpdateCargoRecord_Node1_action["The cargo record is updated in the
database with the new status and
associated dates"]:::main N_UpdateCargoRecord_Node1 -- Yes --> N_UpdateCargoRecord_Node1_action N_UpdateCargoRecord_Node1_action --> E_UpdateCargoRecord N_UpdateCargoRecord_Node0 -- No --> N_UpdateCargoRecord_Node1 N_UpdateCargoRecord_Node2{"Cargo record update is required"}:::decision N_UpdateCargoRecord_Node2_action["System updates cargo record with
final status, dates, and related
status information"]:::main N_UpdateCargoRecord_Node2 -- Yes --> N_UpdateCargoRecord_Node2_action N_UpdateCargoRecord_Node2_action --> E_UpdateCargoRecord N_UpdateCargoRecord_Node1 -- No --> N_UpdateCargoRecord_Node2 N_UpdateCargoRecord_Node3{"The system updates the cargo record
with final status information"}:::decision N_UpdateCargoRecord_Node3_action["The system commits the final cargo
status including PTT status
preservation results to the cargo
record"]:::main N_UpdateCargoRecord_Node3 -- Yes --> N_UpdateCargoRecord_Node3_action N_UpdateCargoRecord_Node3_action --> E_UpdateCargoRecord N_UpdateCargoRecord_Node2 -- No --> N_UpdateCargoRecord_Node3 N_UpdateCargoRecord_Node3 -- No --> E_UpdateCargoRecord
GCCC-CARGO-ROOT with new status and
release information"]:::main N_UpdateCargoRecord_Node0 -- Yes --> N_UpdateCargoRecord_Node0_action N_UpdateCargoRecord_Node0_action --> E_UpdateCargoRecord S_UpdateCargoRecord --> N_UpdateCargoRecord_Node0 N_UpdateCargoRecord_Node1{"Status processing is complete"}:::decision N_UpdateCargoRecord_Node1_action["The cargo record is updated in the
database with the new status and
associated dates"]:::main N_UpdateCargoRecord_Node1 -- Yes --> N_UpdateCargoRecord_Node1_action N_UpdateCargoRecord_Node1_action --> E_UpdateCargoRecord N_UpdateCargoRecord_Node0 -- No --> N_UpdateCargoRecord_Node1 N_UpdateCargoRecord_Node2{"Cargo record update is required"}:::decision N_UpdateCargoRecord_Node2_action["System updates cargo record with
final status, dates, and related
status information"]:::main N_UpdateCargoRecord_Node2 -- Yes --> N_UpdateCargoRecord_Node2_action N_UpdateCargoRecord_Node2_action --> E_UpdateCargoRecord N_UpdateCargoRecord_Node1 -- No --> N_UpdateCargoRecord_Node2 N_UpdateCargoRecord_Node3{"The system updates the cargo record
with final status information"}:::decision N_UpdateCargoRecord_Node3_action["The system commits the final cargo
status including PTT status
preservation results to the cargo
record"]:::main N_UpdateCargoRecord_Node3 -- Yes --> N_UpdateCargoRecord_Node3_action N_UpdateCargoRecord_Node3_action --> E_UpdateCargoRecord N_UpdateCargoRecord_Node2 -- No --> N_UpdateCargoRecord_Node3 N_UpdateCargoRecord_Node3 -- No --> E_UpdateCargoRecord
File: GCX016.cbl
GIVEN:
Release notifications are generated and processing is complete
WHEN:
The system updates the cargo record
THEN:
- Cargo record is updated in gccc-cargo-root with new status
- Release information
File: GCX016.cbl
GIVEN:
Arrival or export status has been determined for cargo
WHEN:
Status processing is complete
THEN:
- The cargo record is updated in the database with the new status
- Associated dates
File: GCX016.cbl
GIVEN:
Final cargo status has been determined
WHEN:
Cargo record update is required
THEN:
System updates cargo record with final status, dates, and related status information
File: GCX016.cbl
GIVEN:
A cargo record with completed PTT status preservation processing
WHEN:
The system updates the cargo record with final status information
THEN:
The system commits the final cargo status including PTT status preservation results to the cargo record
β Consolidated Acceptance Criteria
- The system completes processing → processing completes without status changes and logs the no-change result
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ProcessCompleteNoStatusChange(["Start Step"])
E_ProcessCompleteNoStatusChange(["End Step"])
N_ProcessCompleteNoStatusChange_Node0{"The system completes processing"}:::decision
N_ProcessCompleteNoStatusChange_Node0_action["Processing completes without status
changes and logs the no-change
result"]:::main N_ProcessCompleteNoStatusChange_Node0 -- Yes --> N_ProcessCompleteNoStatusChange_Node0_action N_ProcessCompleteNoStatusChange_Node0_action --> E_ProcessCompleteNoStatusChange S_ProcessCompleteNoStatusChange --> N_ProcessCompleteNoStatusChange_Node0 N_ProcessCompleteNoStatusChange_Node0 -- No --> E_ProcessCompleteNoStatusChange
changes and logs the no-change
result"]:::main N_ProcessCompleteNoStatusChange_Node0 -- Yes --> N_ProcessCompleteNoStatusChange_Node0_action N_ProcessCompleteNoStatusChange_Node0_action --> E_ProcessCompleteNoStatusChange S_ProcessCompleteNoStatusChange --> N_ProcessCompleteNoStatusChange_Node0 N_ProcessCompleteNoStatusChange_Node0 -- No --> E_ProcessCompleteNoStatusChange
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
ARL disposition code is processed but release conditions are not met
WHEN:
The system completes processing
THEN:
- Processing completes without status changes
- Logs the no-change result
β Consolidated Acceptance Criteria
- The system logs the processing result → aRL processing completion is logged with appropriate status and outcome information
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogARLProcessing(["Start Step"])
E_LogARLProcessing(["End Step"])
N_LogARLProcessing_Node0{"The system logs the processing
result"}:::decision N_LogARLProcessing_Node0_action["ARL processing completion is logged
with appropriate status and outcome
information"]:::main N_LogARLProcessing_Node0 -- Yes --> N_LogARLProcessing_Node0_action N_LogARLProcessing_Node0_action --> E_LogARLProcessing S_LogARLProcessing --> N_LogARLProcessing_Node0 N_LogARLProcessing_Node0 -- No --> E_LogARLProcessing
result"}:::decision N_LogARLProcessing_Node0_action["ARL processing completion is logged
with appropriate status and outcome
information"]:::main N_LogARLProcessing_Node0 -- Yes --> N_LogARLProcessing_Node0_action N_LogARLProcessing_Node0_action --> E_LogARLProcessing S_LogARLProcessing --> N_LogARLProcessing_Node0 N_LogARLProcessing_Node0 -- No --> E_LogARLProcessing
File: GCX016.cbl
GIVEN:
ARL processing is complete with or without status changes
WHEN:
The system logs the processing result
THEN:
- Arl processing completion is logged with appropriate status
- Outcome information
β Consolidated Acceptance Criteria
- If the cargo type to determine if it is CPRS cargo → the system identifies CPRS cargo and routes it to manual release processing or continues with standard processing for non-CPRS cargo
- The system checks the cargo type in the cargo record → if cargo type is CPRS, processing continues; otherwise, the request is rejected with appropriate error message
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IsCargoCPRS(["Start Step"])
E_IsCargoCPRS(["End Step"])
N_IsCargoCPRS_Node0{"The system evaluates the cargo type
to determine if it is CPRS cargo"}:::decision N_IsCargoCPRS_Node0_action["The system identifies CPRS cargo
and routes it to manual release
processing or continues with
standard processing for non-CPRS
cargo"]:::main N_IsCargoCPRS_Node0 -- Yes --> N_IsCargoCPRS_Node0_action N_IsCargoCPRS_Node0_action --> E_IsCargoCPRS S_IsCargoCPRS --> N_IsCargoCPRS_Node0 N_IsCargoCPRS_Node1{"The system checks the cargo type in
the cargo record"}:::decision N_IsCargoCPRS_Node1_action["If cargo type is CPRS, processing
continues otherwise, the request is
rejected with appropriate error
message"]:::exclusion N_IsCargoCPRS_Node1 -- Yes -->|Alternative| N_IsCargoCPRS_Node1_action N_IsCargoCPRS_Node1_action --> E_IsCargoCPRS N_IsCargoCPRS_Node0 -- No --> N_IsCargoCPRS_Node1 N_IsCargoCPRS_Node1 -- No --> E_IsCargoCPRS
to determine if it is CPRS cargo"}:::decision N_IsCargoCPRS_Node0_action["The system identifies CPRS cargo
and routes it to manual release
processing or continues with
standard processing for non-CPRS
cargo"]:::main N_IsCargoCPRS_Node0 -- Yes --> N_IsCargoCPRS_Node0_action N_IsCargoCPRS_Node0_action --> E_IsCargoCPRS S_IsCargoCPRS --> N_IsCargoCPRS_Node0 N_IsCargoCPRS_Node1{"The system checks the cargo type in
the cargo record"}:::decision N_IsCargoCPRS_Node1_action["If cargo type is CPRS, processing
continues otherwise, the request is
rejected with appropriate error
message"]:::exclusion N_IsCargoCPRS_Node1 -- Yes -->|Alternative| N_IsCargoCPRS_Node1_action N_IsCargoCPRS_Node1_action --> E_IsCargoCPRS N_IsCargoCPRS_Node0 -- No --> N_IsCargoCPRS_Node1 N_IsCargoCPRS_Node1 -- No --> E_IsCargoCPRS
File: GCX016.cbl
GIVEN:
A cargo record with MRL disposition code is being processed
WHEN:
The system evaluates the cargo type to determine if it is CPRS cargo
THEN:
- The system identifies cprs cargo
- Routes it to manual release processing or continues with standard processing for non-cprs cargo
File: GCX016.cbl
GIVEN:
A manual release request is received for cargo
WHEN:
The system checks the cargo type in the cargo record
THEN:
If cargo type is CPRS, processing continues; otherwise, the request is rejected with appropriate error message
β Consolidated Acceptance Criteria
- The system processes the manual release request → the system sets the manual release flag to force manual release processing workflow
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ForceManualReleaseFlag(["Start Step"])
E_ForceManualReleaseFlag(["End Step"])
N_ForceManualReleaseFlag_Node0{"The system processes the manual
release request"}:::decision N_ForceManualReleaseFlag_Node0_action["The system sets the manual release
flag to force manual release
processing workflow"]:::main N_ForceManualReleaseFlag_Node0 -- Yes --> N_ForceManualReleaseFlag_Node0_action N_ForceManualReleaseFlag_Node0_action --> E_ForceManualReleaseFlag S_ForceManualReleaseFlag --> N_ForceManualReleaseFlag_Node0 N_ForceManualReleaseFlag_Node0 -- No --> E_ForceManualReleaseFlag
release request"}:::decision N_ForceManualReleaseFlag_Node0_action["The system sets the manual release
flag to force manual release
processing workflow"]:::main N_ForceManualReleaseFlag_Node0 -- Yes --> N_ForceManualReleaseFlag_Node0_action N_ForceManualReleaseFlag_Node0_action --> E_ForceManualReleaseFlag S_ForceManualReleaseFlag --> N_ForceManualReleaseFlag_Node0 N_ForceManualReleaseFlag_Node0 -- No --> E_ForceManualReleaseFlag
File: GCX016.cbl
GIVEN:
A cargo record is identified as CPRS cargo with MRL disposition code
WHEN:
The system processes the manual release request
THEN:
The system sets the manual release flag to force manual release processing workflow
β Consolidated Acceptance Criteria
- The system completes the coordination process → the system logs the manual release action with relevant cargo and processing details for audit purposes
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogManualReleaseAction(["Start Step"])
E_LogManualReleaseAction(["End Step"])
N_LogManualReleaseAction_Node0{"The system completes the
coordination process"}:::decision N_LogManualReleaseAction_Node0_action["The system logs the manual release
action with relevant cargo and
processing details for audit
purposes"]:::main N_LogManualReleaseAction_Node0 -- Yes --> N_LogManualReleaseAction_Node0_action N_LogManualReleaseAction_Node0_action --> E_LogManualReleaseAction S_LogManualReleaseAction --> N_LogManualReleaseAction_Node0 N_LogManualReleaseAction_Node0 -- No --> E_LogManualReleaseAction
coordination process"}:::decision N_LogManualReleaseAction_Node0_action["The system logs the manual release
action with relevant cargo and
processing details for audit
purposes"]:::main N_LogManualReleaseAction_Node0 -- Yes --> N_LogManualReleaseAction_Node0_action N_LogManualReleaseAction_Node0_action --> E_LogManualReleaseAction S_LogManualReleaseAction --> N_LogManualReleaseAction_Node0 N_LogManualReleaseAction_Node0 -- No --> E_LogManualReleaseAction
File: GCX016.cbl
GIVEN:
Canadian manifest coordination has been processed for manual release
WHEN:
The system completes the coordination process
THEN:
- The system logs the manual release action with relevant cargo
- Processing details for audit purposes
β Consolidated Acceptance Criteria
- The system processes the status update → the system updates the cargo status to released state indicating successful manual release completion
- Manual release processing continues → the system shall update the cargo status to 'Released' AND record the manual release timestamp
- The system updates cargo status → the system sets cargo status to released
- The system updates the cargo status → cargo status is changed to released, hold flags are cleared, and release quantities are updated appropriately
- The system completes full release processing → the system updates the cargo status to 'RELEASED' or equivalent release status code
- The system updates the cargo status → the cargo status is set to released state
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UpdateCargoStatustoReleased(["Start Step"])
E_UpdateCargoStatustoReleased(["End Step"])
N_UpdateCargoStatustoReleased_Node0{"The system processes the status
update"}:::decision N_UpdateCargoStatustoReleased_Node0_action["The system updates the cargo status
to released state indicating
successful manual release completion"]:::main N_UpdateCargoStatustoReleased_Node0 -- Yes --> N_UpdateCargoStatustoReleased_Node0_action N_UpdateCargoStatustoReleased_Node0_action --> E_UpdateCargoStatustoReleased S_UpdateCargoStatustoReleased --> N_UpdateCargoStatustoReleased_Node0 N_UpdateCargoStatustoReleased_Node1{"Manual release processing continues"}:::decision N_UpdateCargoStatustoReleased_Node1_action["The system shall update the cargo
status to Released AND record the
manual release timestamp"]:::main N_UpdateCargoStatustoReleased_Node1 -- Yes --> N_UpdateCargoStatustoReleased_Node1_action N_UpdateCargoStatustoReleased_Node1_action --> E_UpdateCargoStatustoReleased N_UpdateCargoStatustoReleased_Node0 -- No --> N_UpdateCargoStatustoReleased_Node1 N_UpdateCargoStatustoReleased_Node2{"The system updates cargo status"}:::decision N_UpdateCargoStatustoReleased_Node2_action["The system sets cargo status to
released"]:::main N_UpdateCargoStatustoReleased_Node2 -- Yes --> N_UpdateCargoStatustoReleased_Node2_action N_UpdateCargoStatustoReleased_Node2_action --> E_UpdateCargoStatustoReleased N_UpdateCargoStatustoReleased_Node1 -- No --> N_UpdateCargoStatustoReleased_Node2 N_UpdateCargoStatustoReleased_Node3{"The system updates the cargo status"}:::decision N_UpdateCargoStatustoReleased_Node3_action["Cargo status is changed to
released, hold flags are cleared,
and release quantities are updated
appropriately"]:::main N_UpdateCargoStatustoReleased_Node3 -- Yes --> N_UpdateCargoStatustoReleased_Node3_action N_UpdateCargoStatustoReleased_Node3_action --> E_UpdateCargoStatustoReleased N_UpdateCargoStatustoReleased_Node2 -- No --> N_UpdateCargoStatustoReleased_Node3 N_UpdateCargoStatustoReleased_Node4{"The system completes full release
processing"}:::decision N_UpdateCargoStatustoReleased_Node4_action["The system updates the cargo status
to RELEASED or equivalent release
status code"]:::main N_UpdateCargoStatustoReleased_Node4 -- Yes --> N_UpdateCargoStatustoReleased_Node4_action N_UpdateCargoStatustoReleased_Node4_action --> E_UpdateCargoStatustoReleased N_UpdateCargoStatustoReleased_Node3 -- No --> N_UpdateCargoStatustoReleased_Node4 N_UpdateCargoStatustoReleased_Node5{"The system updates the cargo status"}:::decision N_UpdateCargoStatustoReleased_Node5_action["The cargo status is set to released
state"]:::main N_UpdateCargoStatustoReleased_Node5 -- Yes --> N_UpdateCargoStatustoReleased_Node5_action N_UpdateCargoStatustoReleased_Node5_action --> E_UpdateCargoStatustoReleased N_UpdateCargoStatustoReleased_Node4 -- No --> N_UpdateCargoStatustoReleased_Node5 N_UpdateCargoStatustoReleased_Node5 -- No --> E_UpdateCargoStatustoReleased
update"}:::decision N_UpdateCargoStatustoReleased_Node0_action["The system updates the cargo status
to released state indicating
successful manual release completion"]:::main N_UpdateCargoStatustoReleased_Node0 -- Yes --> N_UpdateCargoStatustoReleased_Node0_action N_UpdateCargoStatustoReleased_Node0_action --> E_UpdateCargoStatustoReleased S_UpdateCargoStatustoReleased --> N_UpdateCargoStatustoReleased_Node0 N_UpdateCargoStatustoReleased_Node1{"Manual release processing continues"}:::decision N_UpdateCargoStatustoReleased_Node1_action["The system shall update the cargo
status to Released AND record the
manual release timestamp"]:::main N_UpdateCargoStatustoReleased_Node1 -- Yes --> N_UpdateCargoStatustoReleased_Node1_action N_UpdateCargoStatustoReleased_Node1_action --> E_UpdateCargoStatustoReleased N_UpdateCargoStatustoReleased_Node0 -- No --> N_UpdateCargoStatustoReleased_Node1 N_UpdateCargoStatustoReleased_Node2{"The system updates cargo status"}:::decision N_UpdateCargoStatustoReleased_Node2_action["The system sets cargo status to
released"]:::main N_UpdateCargoStatustoReleased_Node2 -- Yes --> N_UpdateCargoStatustoReleased_Node2_action N_UpdateCargoStatustoReleased_Node2_action --> E_UpdateCargoStatustoReleased N_UpdateCargoStatustoReleased_Node1 -- No --> N_UpdateCargoStatustoReleased_Node2 N_UpdateCargoStatustoReleased_Node3{"The system updates the cargo status"}:::decision N_UpdateCargoStatustoReleased_Node3_action["Cargo status is changed to
released, hold flags are cleared,
and release quantities are updated
appropriately"]:::main N_UpdateCargoStatustoReleased_Node3 -- Yes --> N_UpdateCargoStatustoReleased_Node3_action N_UpdateCargoStatustoReleased_Node3_action --> E_UpdateCargoStatustoReleased N_UpdateCargoStatustoReleased_Node2 -- No --> N_UpdateCargoStatustoReleased_Node3 N_UpdateCargoStatustoReleased_Node4{"The system completes full release
processing"}:::decision N_UpdateCargoStatustoReleased_Node4_action["The system updates the cargo status
to RELEASED or equivalent release
status code"]:::main N_UpdateCargoStatustoReleased_Node4 -- Yes --> N_UpdateCargoStatustoReleased_Node4_action N_UpdateCargoStatustoReleased_Node4_action --> E_UpdateCargoStatustoReleased N_UpdateCargoStatustoReleased_Node3 -- No --> N_UpdateCargoStatustoReleased_Node4 N_UpdateCargoStatustoReleased_Node5{"The system updates the cargo status"}:::decision N_UpdateCargoStatustoReleased_Node5_action["The cargo status is set to released
state"]:::main N_UpdateCargoStatustoReleased_Node5 -- Yes --> N_UpdateCargoStatustoReleased_Node5_action N_UpdateCargoStatustoReleased_Node5_action --> E_UpdateCargoStatustoReleased N_UpdateCargoStatustoReleased_Node4 -- No --> N_UpdateCargoStatustoReleased_Node5 N_UpdateCargoStatustoReleased_Node5 -- No --> E_UpdateCargoStatustoReleased
File: GCX016.cbl
GIVEN:
Manual release action has been logged for CPRS cargo
WHEN:
The system processes the status update
THEN:
The system updates the cargo status to released state indicating successful manual release completion
File: GCX016.cbl
GIVEN:
Destination index has been cleared AND cargo was previously held
WHEN:
Manual release processing continues
THEN:
The system shall update the cargo status to 'Released' AND record the manual release timestamp
File: GCX016.cbl
GIVEN:
Cargo has been processed for full release
WHEN:
The system updates cargo status
THEN:
The system sets cargo status to released
File: GCX016.cbl
GIVEN:
CPRS cargo with cleared destination index ready for release
WHEN:
The system updates the cargo status
THEN:
Cargo status is changed to released, hold flags are cleared, and release quantities are updated appropriately
File: GCX016.cbl
GIVEN:
A cargo record that has been fully released and had its destination index cleared
WHEN:
The system completes full release processing
THEN:
The system updates the cargo status to 'RELEASED' or equivalent release status code
File: GCX016.cbl
GIVEN:
Cargo that has completed full release processing
WHEN:
The system updates the cargo status
THEN:
The cargo status is set to released state
β Consolidated Acceptance Criteria
- If next processing steps → the system skips standard release processing workflow since manual release has been completed
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SkipStandardReleaseProcessing(["Start Step"])
E_SkipStandardReleaseProcessing(["End Step"])
N_SkipStandardReleaseProcessing_Node0{"The system evaluates next
processing steps"}:::decision N_SkipStandardReleaseProcessing_Node0_action["The system skips standard release
processing workflow since manual
release has been completed"]:::main N_SkipStandardReleaseProcessing_Node0 -- Yes --> N_SkipStandardReleaseProcessing_Node0_action N_SkipStandardReleaseProcessing_Node0_action --> E_SkipStandardReleaseProcessing S_SkipStandardReleaseProcessing --> N_SkipStandardReleaseProcessing_Node0 N_SkipStandardReleaseProcessing_Node0 -- No --> E_SkipStandardReleaseProcessing
processing steps"}:::decision N_SkipStandardReleaseProcessing_Node0_action["The system skips standard release
processing workflow since manual
release has been completed"]:::main N_SkipStandardReleaseProcessing_Node0 -- Yes --> N_SkipStandardReleaseProcessing_Node0_action N_SkipStandardReleaseProcessing_Node0_action --> E_SkipStandardReleaseProcessing S_SkipStandardReleaseProcessing --> N_SkipStandardReleaseProcessing_Node0 N_SkipStandardReleaseProcessing_Node0 -- No --> E_SkipStandardReleaseProcessing
File: GCX016.cbl
GIVEN:
Release notification has been generated for manual release
WHEN:
The system evaluates next processing steps
THEN:
The system skips standard release processing workflow since manual release has been completed
β Consolidated Acceptance Criteria
- If the processing workflow → the system continues with standard processing workflow without manual release procedures
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ContinueStandardProcessing(["Start Step"])
E_ContinueStandardProcessing(["End Step"])
N_ContinueStandardProcessing_Node0{"The system evaluates the processing
workflow"}:::decision N_ContinueStandardProcessing_Node0_action["The system continues with standard
processing workflow without manual
release procedures"]:::main N_ContinueStandardProcessing_Node0 -- Yes --> N_ContinueStandardProcessing_Node0_action N_ContinueStandardProcessing_Node0_action --> E_ContinueStandardProcessing S_ContinueStandardProcessing --> N_ContinueStandardProcessing_Node0 N_ContinueStandardProcessing_Node0 -- No --> E_ContinueStandardProcessing
workflow"}:::decision N_ContinueStandardProcessing_Node0_action["The system continues with standard
processing workflow without manual
release procedures"]:::main N_ContinueStandardProcessing_Node0 -- Yes --> N_ContinueStandardProcessing_Node0_action N_ContinueStandardProcessing_Node0_action --> E_ContinueStandardProcessing S_ContinueStandardProcessing --> N_ContinueStandardProcessing_Node0 N_ContinueStandardProcessing_Node0 -- No --> E_ContinueStandardProcessing
File: GCX016.cbl
GIVEN:
A cargo record with MRL disposition code is identified as non-CPRS cargo
WHEN:
The system evaluates the processing workflow
THEN:
The system continues with standard processing workflow without manual release procedures
β Consolidated Acceptance Criteria
- If the disposition code type → the system determines if the code represents a hold action and proceeds to hold processing or skips to completion
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IsDispositionCodeaHoldCode(["Start Step"])
E_IsDispositionCodeaHoldCode(["End Step"])
N_IsDispositionCodeaHoldCode_Node0{"The system evaluates the
disposition code type"}:::decision N_IsDispositionCodeaHoldCode_Node0_action["The system determines if the code
represents a hold action and
proceeds to hold processing or skips
to completion"]:::main N_IsDispositionCodeaHoldCode_Node0 -- Yes --> N_IsDispositionCodeaHoldCode_Node0_action N_IsDispositionCodeaHoldCode_Node0_action --> E_IsDispositionCodeaHoldCode S_IsDispositionCodeaHoldCode --> N_IsDispositionCodeaHoldCode_Node0 N_IsDispositionCodeaHoldCode_Node0 -- No --> E_IsDispositionCodeaHoldCode
disposition code type"}:::decision N_IsDispositionCodeaHoldCode_Node0_action["The system determines if the code
represents a hold action and
proceeds to hold processing or skips
to completion"]:::main N_IsDispositionCodeaHoldCode_Node0 -- Yes --> N_IsDispositionCodeaHoldCode_Node0_action N_IsDispositionCodeaHoldCode_Node0_action --> E_IsDispositionCodeaHoldCode S_IsDispositionCodeaHoldCode --> N_IsDispositionCodeaHoldCode_Node0 N_IsDispositionCodeaHoldCode_Node0 -- No --> E_IsDispositionCodeaHoldCode
File: GCX016.cbl
GIVEN:
A disposition code is received from X4 segment processing
WHEN:
The system evaluates the disposition code type
THEN:
- The system determines if the code represents a hold action
- Proceeds to hold processing or skips to completion
β Consolidated Acceptance Criteria
- The system looks up the code in the DC table → the system retrieves the code details and sets validation status
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ValidateHoldCodeinDCTable(["Start Step"])
E_ValidateHoldCodeinDCTable(["End Step"])
N_ValidateHoldCodeinDCTable_Node0{"The system looks up the code in the
DC table"}:::decision N_ValidateHoldCodeinDCTable_Node0_action["The system retrieves the code
details and sets validation status"]:::main N_ValidateHoldCodeinDCTable_Node0 -- Yes --> N_ValidateHoldCodeinDCTable_Node0_action N_ValidateHoldCodeinDCTable_Node0_action --> E_ValidateHoldCodeinDCTable S_ValidateHoldCodeinDCTable --> N_ValidateHoldCodeinDCTable_Node0 N_ValidateHoldCodeinDCTable_Node0 -- No --> E_ValidateHoldCodeinDCTable
DC table"}:::decision N_ValidateHoldCodeinDCTable_Node0_action["The system retrieves the code
details and sets validation status"]:::main N_ValidateHoldCodeinDCTable_Node0 -- Yes --> N_ValidateHoldCodeinDCTable_Node0_action N_ValidateHoldCodeinDCTable_Node0_action --> E_ValidateHoldCodeinDCTable S_ValidateHoldCodeinDCTable --> N_ValidateHoldCodeinDCTable_Node0 N_ValidateHoldCodeinDCTable_Node0 -- No --> E_ValidateHoldCodeinDCTable
File: GCX016.cbl
GIVEN:
A hold disposition code needs validation
WHEN:
The system looks up the code in the DC table
THEN:
- The system retrieves the code details
- Sets validation status
β Consolidated Acceptance Criteria
- The system checks if the lookup was successful → the system either proceeds with hold processing for valid codes or generates an error for invalid codes
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_HoldCodeValid(["Start Step"])
E_HoldCodeValid(["End Step"])
N_HoldCodeValid_Node0{"The system checks if the lookup was
successful"}:::decision N_HoldCodeValid_Node0_action["The system either proceeds with
hold processing for valid codes or
generates an error for invalid codes"]:::main N_HoldCodeValid_Node0 -- Yes --> N_HoldCodeValid_Node0_action N_HoldCodeValid_Node0_action --> E_HoldCodeValid S_HoldCodeValid --> N_HoldCodeValid_Node0 N_HoldCodeValid_Node0 -- No --> E_HoldCodeValid
successful"}:::decision N_HoldCodeValid_Node0_action["The system either proceeds with
hold processing for valid codes or
generates an error for invalid codes"]:::main N_HoldCodeValid_Node0 -- Yes --> N_HoldCodeValid_Node0_action N_HoldCodeValid_Node0_action --> E_HoldCodeValid S_HoldCodeValid --> N_HoldCodeValid_Node0 N_HoldCodeValid_Node0 -- No --> E_HoldCodeValid
File: GCX016.cbl
GIVEN:
A disposition code has been looked up in the DC table
WHEN:
The system checks if the lookup was successful
THEN:
The system either proceeds with hold processing for valid codes or generates an error for invalid codes
β Consolidated Acceptance Criteria
- If the hold location requirements → the system determines whether the hold applies to border location or destination location
- If the cargo hold location type → the system determines if the hold is at border location or destination location based on cargo status flags
- If the hold location criteria → the hold is classified as either border hold or destination hold based on location indicators
- The system determines hold location → hold location is classified as border, destination, or both based on the active hold flags
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_DetermineHoldLocation(["Start Step"])
E_DetermineHoldLocation(["End Step"])
N_DetermineHoldLocation_Node0{"The system evaluates the hold
location requirements"}:::decision N_DetermineHoldLocation_Node0_action["The system determines whether the
hold applies to border location or
destination location"]:::main N_DetermineHoldLocation_Node0 -- Yes --> N_DetermineHoldLocation_Node0_action N_DetermineHoldLocation_Node0_action --> E_DetermineHoldLocation S_DetermineHoldLocation --> N_DetermineHoldLocation_Node0 N_DetermineHoldLocation_Node1{"The system evaluates the cargo hold
location type"}:::decision N_DetermineHoldLocation_Node1_action["The system determines if the hold
is at border location or destination
location based on cargo status flags"]:::main N_DetermineHoldLocation_Node1 -- Yes --> N_DetermineHoldLocation_Node1_action N_DetermineHoldLocation_Node1_action --> E_DetermineHoldLocation N_DetermineHoldLocation_Node0 -- No --> N_DetermineHoldLocation_Node1 N_DetermineHoldLocation_Node2{"The system evaluates the hold
location criteria"}:::decision N_DetermineHoldLocation_Node2_action["The hold is classified as either
border hold or destination hold
based on location indicators"]:::main N_DetermineHoldLocation_Node2 -- Yes --> N_DetermineHoldLocation_Node2_action N_DetermineHoldLocation_Node2_action --> E_DetermineHoldLocation N_DetermineHoldLocation_Node1 -- No --> N_DetermineHoldLocation_Node2 N_DetermineHoldLocation_Node3{"The system determines hold location"}:::decision N_DetermineHoldLocation_Node3_action["Hold location is classified as
border, destination, or both based
on the active hold flags"]:::main N_DetermineHoldLocation_Node3 -- Yes --> N_DetermineHoldLocation_Node3_action N_DetermineHoldLocation_Node3_action --> E_DetermineHoldLocation N_DetermineHoldLocation_Node2 -- No --> N_DetermineHoldLocation_Node3 N_DetermineHoldLocation_Node3 -- No --> E_DetermineHoldLocation
location requirements"}:::decision N_DetermineHoldLocation_Node0_action["The system determines whether the
hold applies to border location or
destination location"]:::main N_DetermineHoldLocation_Node0 -- Yes --> N_DetermineHoldLocation_Node0_action N_DetermineHoldLocation_Node0_action --> E_DetermineHoldLocation S_DetermineHoldLocation --> N_DetermineHoldLocation_Node0 N_DetermineHoldLocation_Node1{"The system evaluates the cargo hold
location type"}:::decision N_DetermineHoldLocation_Node1_action["The system determines if the hold
is at border location or destination
location based on cargo status flags"]:::main N_DetermineHoldLocation_Node1 -- Yes --> N_DetermineHoldLocation_Node1_action N_DetermineHoldLocation_Node1_action --> E_DetermineHoldLocation N_DetermineHoldLocation_Node0 -- No --> N_DetermineHoldLocation_Node1 N_DetermineHoldLocation_Node2{"The system evaluates the hold
location criteria"}:::decision N_DetermineHoldLocation_Node2_action["The hold is classified as either
border hold or destination hold
based on location indicators"]:::main N_DetermineHoldLocation_Node2 -- Yes --> N_DetermineHoldLocation_Node2_action N_DetermineHoldLocation_Node2_action --> E_DetermineHoldLocation N_DetermineHoldLocation_Node1 -- No --> N_DetermineHoldLocation_Node2 N_DetermineHoldLocation_Node3{"The system determines hold location"}:::decision N_DetermineHoldLocation_Node3_action["Hold location is classified as
border, destination, or both based
on the active hold flags"]:::main N_DetermineHoldLocation_Node3 -- Yes --> N_DetermineHoldLocation_Node3_action N_DetermineHoldLocation_Node3_action --> E_DetermineHoldLocation N_DetermineHoldLocation_Node2 -- No --> N_DetermineHoldLocation_Node3 N_DetermineHoldLocation_Node3 -- No --> E_DetermineHoldLocation
File: GCX016.cbl
GIVEN:
A valid hold disposition code is being processed
WHEN:
The system evaluates the hold location requirements
THEN:
The system determines whether the hold applies to border location or destination location
File: GCX016.cbl
GIVEN:
A cargo item has been identified as having hold status
WHEN:
The system evaluates the cargo hold location type
THEN:
The system determines if the hold is at border location or destination location based on cargo status flags
File: GCX016.cbl
GIVEN:
A hold disposition code has been identified
WHEN:
The system evaluates the hold location criteria
THEN:
The hold is classified as either border hold or destination hold based on location indicators
File: GCX016.cbl
GIVEN:
Hold status flags have been set during analysis
WHEN:
The system determines hold location
THEN:
Hold location is classified as border, destination, or both based on the active hold flags
β Consolidated Acceptance Criteria
- If the cargo routing and disposition code requirements → the system classifies the hold as either border hold or destination hold and sets appropriate location information
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_BorderHoldorDestinationHold(["Start Step"])
E_BorderHoldorDestinationHold(["End Step"])
N_BorderHoldorDestinationHold_Node0{"The system evaluates the cargo
routing and disposition code
requirements"}:::decision N_BorderHoldorDestinationHold_Node0_action["The system classifies the hold as
either border hold or destination
hold and sets appropriate location
information"]:::main N_BorderHoldorDestinationHold_Node0 -- Yes --> N_BorderHoldorDestinationHold_Node0_action N_BorderHoldorDestinationHold_Node0_action --> E_BorderHoldorDestinationHold S_BorderHoldorDestinationHold --> N_BorderHoldorDestinationHold_Node0 N_BorderHoldorDestinationHold_Node0 -- No --> E_BorderHoldorDestinationHold
routing and disposition code
requirements"}:::decision N_BorderHoldorDestinationHold_Node0_action["The system classifies the hold as
either border hold or destination
hold and sets appropriate location
information"]:::main N_BorderHoldorDestinationHold_Node0 -- Yes --> N_BorderHoldorDestinationHold_Node0_action N_BorderHoldorDestinationHold_Node0_action --> E_BorderHoldorDestinationHold S_BorderHoldorDestinationHold --> N_BorderHoldorDestinationHold_Node0 N_BorderHoldorDestinationHold_Node0 -- No --> E_BorderHoldorDestinationHold
File: GCX016.cbl
GIVEN:
A hold location needs to be determined for cargo
WHEN:
- The system evaluates the cargo routing
- Disposition code requirements
THEN:
- The system classifies the hold as either border hold or destination hold
- Sets appropriate location information
β Consolidated Acceptance Criteria
- The system sets up the hold location information → the system configures border-specific location details and hold parameters
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetBorderHoldLocationInfo(["Start Step"])
E_SetBorderHoldLocationInfo(["End Step"])
N_SetBorderHoldLocationInfo_Node0{"The system sets up the hold
location information"}:::decision N_SetBorderHoldLocationInfo_Node0_action["The system configures
border-specific location details and
hold parameters"]:::main N_SetBorderHoldLocationInfo_Node0 -- Yes --> N_SetBorderHoldLocationInfo_Node0_action N_SetBorderHoldLocationInfo_Node0_action --> E_SetBorderHoldLocationInfo S_SetBorderHoldLocationInfo --> N_SetBorderHoldLocationInfo_Node0 N_SetBorderHoldLocationInfo_Node0 -- No --> E_SetBorderHoldLocationInfo
location information"}:::decision N_SetBorderHoldLocationInfo_Node0_action["The system configures
border-specific location details and
hold parameters"]:::main N_SetBorderHoldLocationInfo_Node0 -- Yes --> N_SetBorderHoldLocationInfo_Node0_action N_SetBorderHoldLocationInfo_Node0_action --> E_SetBorderHoldLocationInfo S_SetBorderHoldLocationInfo --> N_SetBorderHoldLocationInfo_Node0 N_SetBorderHoldLocationInfo_Node0 -- No --> E_SetBorderHoldLocationInfo
File: GCX016.cbl
GIVEN:
A hold is classified as a border hold
WHEN:
The system sets up the hold location information
THEN:
- The system configures border-specific location details
- Hold parameters
β Consolidated Acceptance Criteria
- The system sets up the hold location information → the system configures destination-specific location details and hold parameters
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetDestinationHoldLocationInfo(["Start Step"])
E_SetDestinationHoldLocationInfo(["End Step"])
N_SetDestinationHoldLocationInfo_Node0{"The system sets up the hold
location information"}:::decision N_SetDestinationHoldLocationInfo_Node0_action["The system configures
destination-specific location
details and hold parameters"]:::main N_SetDestinationHoldLocationInfo_Node0 -- Yes --> N_SetDestinationHoldLocationInfo_Node0_action N_SetDestinationHoldLocationInfo_Node0_action --> E_SetDestinationHoldLocationInfo S_SetDestinationHoldLocationInfo --> N_SetDestinationHoldLocationInfo_Node0 N_SetDestinationHoldLocationInfo_Node0 -- No --> E_SetDestinationHoldLocationInfo
location information"}:::decision N_SetDestinationHoldLocationInfo_Node0_action["The system configures
destination-specific location
details and hold parameters"]:::main N_SetDestinationHoldLocationInfo_Node0 -- Yes --> N_SetDestinationHoldLocationInfo_Node0_action N_SetDestinationHoldLocationInfo_Node0_action --> E_SetDestinationHoldLocationInfo S_SetDestinationHoldLocationInfo --> N_SetDestinationHoldLocationInfo_Node0 N_SetDestinationHoldLocationInfo_Node0 -- No --> E_SetDestinationHoldLocationInfo
File: GCX016.cbl
GIVEN:
A hold is classified as a destination hold
WHEN:
The system sets up the hold location information
THEN:
- The system configures destination-specific location details
- Hold parameters
β Consolidated Acceptance Criteria
- The system searches the existing status array for the same hold code → the system identifies whether the hold code already exists in the array
- The system searches the S09A status array for existing entries with the same disposition code → if the code already exists, skip processing to prevent duplicates; if not found, continue with processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CheckStatusArrayforDuplicates(["Start Step"])
E_CheckStatusArrayforDuplicates(["End Step"])
N_CheckStatusArrayforDuplicates_Node0{"The system searches the existing
status array for the same hold code"}:::decision N_CheckStatusArrayforDuplicates_Node0_action["The system identifies whether the
hold code already exists in the
array"]:::main N_CheckStatusArrayforDuplicates_Node0 -- Yes --> N_CheckStatusArrayforDuplicates_Node0_action N_CheckStatusArrayforDuplicates_Node0_action --> E_CheckStatusArrayforDuplicates S_CheckStatusArrayforDuplicates --> N_CheckStatusArrayforDuplicates_Node0 N_CheckStatusArrayforDuplicates_Node1{"The system searches the S09A status
array for existing entries with the
same disposition code"}:::decision N_CheckStatusArrayforDuplicates_Node1_action["If the code already exists, skip
processing to prevent duplicates if
not found, continue with processing"]:::main N_CheckStatusArrayforDuplicates_Node1 -- Yes --> N_CheckStatusArrayforDuplicates_Node1_action N_CheckStatusArrayforDuplicates_Node1_action --> E_CheckStatusArrayforDuplicates N_CheckStatusArrayforDuplicates_Node0 -- No --> N_CheckStatusArrayforDuplicates_Node1 N_CheckStatusArrayforDuplicates_Node1 -- No --> E_CheckStatusArrayforDuplicates
status array for the same hold code"}:::decision N_CheckStatusArrayforDuplicates_Node0_action["The system identifies whether the
hold code already exists in the
array"]:::main N_CheckStatusArrayforDuplicates_Node0 -- Yes --> N_CheckStatusArrayforDuplicates_Node0_action N_CheckStatusArrayforDuplicates_Node0_action --> E_CheckStatusArrayforDuplicates S_CheckStatusArrayforDuplicates --> N_CheckStatusArrayforDuplicates_Node0 N_CheckStatusArrayforDuplicates_Node1{"The system searches the S09A status
array for existing entries with the
same disposition code"}:::decision N_CheckStatusArrayforDuplicates_Node1_action["If the code already exists, skip
processing to prevent duplicates if
not found, continue with processing"]:::main N_CheckStatusArrayforDuplicates_Node1 -- Yes --> N_CheckStatusArrayforDuplicates_Node1_action N_CheckStatusArrayforDuplicates_Node1_action --> E_CheckStatusArrayforDuplicates N_CheckStatusArrayforDuplicates_Node0 -- No --> N_CheckStatusArrayforDuplicates_Node1 N_CheckStatusArrayforDuplicates_Node1 -- No --> E_CheckStatusArrayforDuplicates
File: GCX016.cbl
GIVEN:
A hold code is ready to be inserted into the status array
WHEN:
The system searches the existing status array for the same hold code
THEN:
The system identifies whether the hold code already exists in the array
File: GCX016.cbl
GIVEN:
A valid release disposition code needs to be processed
WHEN:
The system searches the S09A status array for existing entries with the same disposition code
THEN:
If the code already exists, skip processing to prevent duplicates; if not found, continue with processing
β Consolidated Acceptance Criteria
- A duplicate hold code is found → the system skips the duplicate entry to avoid redundant hold codes
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_HoldCodeAlreadyExists(["Start Step"])
E_HoldCodeAlreadyExists(["End Step"])
N_HoldCodeAlreadyExists_Node0{"A duplicate hold code is found"}:::decision
N_HoldCodeAlreadyExists_Node0_action["The system skips the duplicate
entry to avoid redundant hold codes"]:::main N_HoldCodeAlreadyExists_Node0 -- Yes --> N_HoldCodeAlreadyExists_Node0_action N_HoldCodeAlreadyExists_Node0_action --> E_HoldCodeAlreadyExists S_HoldCodeAlreadyExists --> N_HoldCodeAlreadyExists_Node0 N_HoldCodeAlreadyExists_Node0 -- No --> E_HoldCodeAlreadyExists
entry to avoid redundant hold codes"]:::main N_HoldCodeAlreadyExists_Node0 -- Yes --> N_HoldCodeAlreadyExists_Node0_action N_HoldCodeAlreadyExists_Node0_action --> E_HoldCodeAlreadyExists S_HoldCodeAlreadyExists --> N_HoldCodeAlreadyExists_Node0 N_HoldCodeAlreadyExists_Node0 -- No --> E_HoldCodeAlreadyExists
File: GCX016.cbl
GIVEN:
The system has checked for duplicate hold codes in the status array
WHEN:
A duplicate hold code is found
THEN:
The system skips the duplicate entry to avoid redundant hold codes
β Consolidated Acceptance Criteria
- The system inserts the hold code into the S09A array → the system adds the hold code with proper sequence number and status information
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_InsertHoldCodeintoS09AArray(["Start Step"])
E_InsertHoldCodeintoS09AArray(["End Step"])
N_InsertHoldCodeintoS09AArray_Node0{"The system inserts the hold code
into the S09A array"}:::decision N_InsertHoldCodeintoS09AArray_Node0_action["The system adds the hold code with
proper sequence number and status
information"]:::main N_InsertHoldCodeintoS09AArray_Node0 -- Yes --> N_InsertHoldCodeintoS09AArray_Node0_action N_InsertHoldCodeintoS09AArray_Node0_action --> E_InsertHoldCodeintoS09AArray S_InsertHoldCodeintoS09AArray --> N_InsertHoldCodeintoS09AArray_Node0 N_InsertHoldCodeintoS09AArray_Node0 -- No --> E_InsertHoldCodeintoS09AArray
into the S09A array"}:::decision N_InsertHoldCodeintoS09AArray_Node0_action["The system adds the hold code with
proper sequence number and status
information"]:::main N_InsertHoldCodeintoS09AArray_Node0 -- Yes --> N_InsertHoldCodeintoS09AArray_Node0_action N_InsertHoldCodeintoS09AArray_Node0_action --> E_InsertHoldCodeintoS09AArray S_InsertHoldCodeintoS09AArray --> N_InsertHoldCodeintoS09AArray_Node0 N_InsertHoldCodeintoS09AArray_Node0 -- No --> E_InsertHoldCodeintoS09AArray
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
A valid hold code that does not exist in the status array
WHEN:
The system inserts the hold code into the S09A array
THEN:
- The system adds the hold code with proper sequence number
- Status information
β Consolidated Acceptance Criteria
- The system updates location information → the system sets the appropriate border or destination location details for the hold
- Building the S09 segment → copy the location data from the array element to the S09 segment location fields
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetLocationInformation(["Start Step"])
E_SetLocationInformation(["End Step"])
N_SetLocationInformation_Node0{"The system updates location
information"}:::decision N_SetLocationInformation_Node0_action["The system sets the appropriate
border or destination location
details for the hold"]:::main N_SetLocationInformation_Node0 -- Yes --> N_SetLocationInformation_Node0_action N_SetLocationInformation_Node0_action --> E_SetLocationInformation S_SetLocationInformation --> N_SetLocationInformation_Node0 N_SetLocationInformation_Node1{"Building the S09 segment"}:::decision N_SetLocationInformation_Node1_action["Copy the location data from the
array element to the S09 segment
location fields"]:::main N_SetLocationInformation_Node1 -- Yes --> N_SetLocationInformation_Node1_action N_SetLocationInformation_Node1_action --> E_SetLocationInformation N_SetLocationInformation_Node0 -- No --> N_SetLocationInformation_Node1 N_SetLocationInformation_Node1 -- No --> E_SetLocationInformation
information"}:::decision N_SetLocationInformation_Node0_action["The system sets the appropriate
border or destination location
details for the hold"]:::main N_SetLocationInformation_Node0 -- Yes --> N_SetLocationInformation_Node0_action N_SetLocationInformation_Node0_action --> E_SetLocationInformation S_SetLocationInformation --> N_SetLocationInformation_Node0 N_SetLocationInformation_Node1{"Building the S09 segment"}:::decision N_SetLocationInformation_Node1_action["Copy the location data from the
array element to the S09 segment
location fields"]:::main N_SetLocationInformation_Node1 -- Yes --> N_SetLocationInformation_Node1_action N_SetLocationInformation_Node1_action --> E_SetLocationInformation N_SetLocationInformation_Node0 -- No --> N_SetLocationInformation_Node1 N_SetLocationInformation_Node1 -- No --> E_SetLocationInformation
File: GCX016.cbl
GIVEN:
A hold code has been inserted with status flag set
WHEN:
The system updates location information
THEN:
The system sets the appropriate border or destination location details for the hold
File: GCX016.cbl
GIVEN:
A status array element contains location information
WHEN:
Building the S09 segment
THEN:
Copy the location data from the array element to the S09 segment location fields
β Consolidated Acceptance Criteria
- The system performs logging operations → the system creates appropriate log entries for the hold code processing activity
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogHoldCodeProcessing(["Start Step"])
E_LogHoldCodeProcessing(["End Step"])
N_LogHoldCodeProcessing_Node0{"The system performs logging
operations"}:::decision N_LogHoldCodeProcessing_Node0_action["The system creates appropriate log
entries for the hold code processing
activity"]:::main N_LogHoldCodeProcessing_Node0 -- Yes --> N_LogHoldCodeProcessing_Node0_action N_LogHoldCodeProcessing_Node0_action --> E_LogHoldCodeProcessing S_LogHoldCodeProcessing --> N_LogHoldCodeProcessing_Node0 N_LogHoldCodeProcessing_Node0 -- No --> E_LogHoldCodeProcessing
operations"}:::decision N_LogHoldCodeProcessing_Node0_action["The system creates appropriate log
entries for the hold code processing
activity"]:::main N_LogHoldCodeProcessing_Node0 -- Yes --> N_LogHoldCodeProcessing_Node0_action N_LogHoldCodeProcessing_Node0_action --> E_LogHoldCodeProcessing S_LogHoldCodeProcessing --> N_LogHoldCodeProcessing_Node0 N_LogHoldCodeProcessing_Node0 -- No --> E_LogHoldCodeProcessing
File: GCX016.cbl
GIVEN:
A hold code has been successfully processed and added to the status array
WHEN:
The system performs logging operations
THEN:
The system creates appropriate log entries for the hold code processing activity
β Consolidated Acceptance Criteria
- The system determines the code is invalid → the system generates an appropriate error message and proceeds to completion without processing the hold
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_InvalidHoldCodeError(["Start Step"])
E_InvalidHoldCodeError(["End Step"])
N_InvalidHoldCodeError_Node0{"The system determines the code is
invalid"}:::decision N_InvalidHoldCodeError_Node0_action["The system generates an appropriate
error message and proceeds to
completion without processing the
hold"]:::exclusion N_InvalidHoldCodeError_Node0 -- Yes -->|Alternative| N_InvalidHoldCodeError_Node0_action N_InvalidHoldCodeError_Node0_action --> E_InvalidHoldCodeError S_InvalidHoldCodeError --> N_InvalidHoldCodeError_Node0 N_InvalidHoldCodeError_Node0 -- No --> E_InvalidHoldCodeError
invalid"}:::decision N_InvalidHoldCodeError_Node0_action["The system generates an appropriate
error message and proceeds to
completion without processing the
hold"]:::exclusion N_InvalidHoldCodeError_Node0 -- Yes -->|Alternative| N_InvalidHoldCodeError_Node0_action N_InvalidHoldCodeError_Node0_action --> E_InvalidHoldCodeError S_InvalidHoldCodeError --> N_InvalidHoldCodeError_Node0 N_InvalidHoldCodeError_Node0 -- No --> E_InvalidHoldCodeError
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
A disposition code lookup in the DC table fails
WHEN:
The system determines the code is invalid
THEN:
- The system generates an appropriate error message
- Proceeds to completion without processing the hold
β Consolidated Acceptance Criteria
- The system looks up the disposition code in the DC table → if the code exists in DC table, processing continues; if not found, an error is generated
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ValidateDispositionCodeinDCTable(["Start Step"])
E_ValidateDispositionCodeinDCTable(["End Step"])
N_ValidateDispositionCodeinDCTable_Node0{"The system looks up the disposition
code in the DC table"}:::decision N_ValidateDispositionCodeinDCTable_Node0_action["If the code exists in DC table,
processing continues if not found,
an error is generated"]:::main N_ValidateDispositionCodeinDCTable_Node0 -- Yes --> N_ValidateDispositionCodeinDCTable_Node0_action N_ValidateDispositionCodeinDCTable_Node0_action --> E_ValidateDispositionCodeinDCTable S_ValidateDispositionCodeinDCTable --> N_ValidateDispositionCodeinDCTable_Node0 N_ValidateDispositionCodeinDCTable_Node0 -- No --> E_ValidateDispositionCodeinDCTable
code in the DC table"}:::decision N_ValidateDispositionCodeinDCTable_Node0_action["If the code exists in DC table,
processing continues if not found,
an error is generated"]:::main N_ValidateDispositionCodeinDCTable_Node0 -- Yes --> N_ValidateDispositionCodeinDCTable_Node0_action N_ValidateDispositionCodeinDCTable_Node0_action --> E_ValidateDispositionCodeinDCTable S_ValidateDispositionCodeinDCTable --> N_ValidateDispositionCodeinDCTable_Node0 N_ValidateDispositionCodeinDCTable_Node0 -- No --> E_ValidateDispositionCodeinDCTable
File: GCX016.cbl
GIVEN:
A release disposition code is received in X4 segment
WHEN:
The system looks up the disposition code in the DC table
THEN:
If the code exists in DC table, processing continues; if not found, an error is generated
β Consolidated Acceptance Criteria
- If the disposition code properties to determine location type → the system sets either border release location or destination release location based on code characteristics
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_DetermineReleaseLocation(["Start Step"])
E_DetermineReleaseLocation(["End Step"])
N_DetermineReleaseLocation_Node0{"The system evaluates the
disposition code properties to
determine location type"}:::decision N_DetermineReleaseLocation_Node0_action["The system sets either border
release location or destination
release location based on code
characteristics"]:::main N_DetermineReleaseLocation_Node0 -- Yes --> N_DetermineReleaseLocation_Node0_action N_DetermineReleaseLocation_Node0_action --> E_DetermineReleaseLocation S_DetermineReleaseLocation --> N_DetermineReleaseLocation_Node0 N_DetermineReleaseLocation_Node0 -- No --> E_DetermineReleaseLocation
disposition code properties to
determine location type"}:::decision N_DetermineReleaseLocation_Node0_action["The system sets either border
release location or destination
release location based on code
characteristics"]:::main N_DetermineReleaseLocation_Node0 -- Yes --> N_DetermineReleaseLocation_Node0_action N_DetermineReleaseLocation_Node0_action --> E_DetermineReleaseLocation S_DetermineReleaseLocation --> N_DetermineReleaseLocation_Node0 N_DetermineReleaseLocation_Node0 -- No --> E_DetermineReleaseLocation
File: GCX016.cbl
GIVEN:
A validated release disposition code is being processed
WHEN:
The system evaluates the disposition code properties to determine location type
THEN:
The system sets either border release location or destination release location based on code characteristics
β Consolidated Acceptance Criteria
- The system processes the border release → the system sets the location information to border-specific values
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetBorderReleaseLocation(["Start Step"])
E_SetBorderReleaseLocation(["End Step"])
N_SetBorderReleaseLocation_Node0{"The system processes the border
release"}:::decision N_SetBorderReleaseLocation_Node0_action["The system sets the location
information to border-specific
values"]:::main N_SetBorderReleaseLocation_Node0 -- Yes --> N_SetBorderReleaseLocation_Node0_action N_SetBorderReleaseLocation_Node0_action --> E_SetBorderReleaseLocation S_SetBorderReleaseLocation --> N_SetBorderReleaseLocation_Node0 N_SetBorderReleaseLocation_Node0 -- No --> E_SetBorderReleaseLocation
release"}:::decision N_SetBorderReleaseLocation_Node0_action["The system sets the location
information to border-specific
values"]:::main N_SetBorderReleaseLocation_Node0 -- Yes --> N_SetBorderReleaseLocation_Node0_action N_SetBorderReleaseLocation_Node0_action --> E_SetBorderReleaseLocation S_SetBorderReleaseLocation --> N_SetBorderReleaseLocation_Node0 N_SetBorderReleaseLocation_Node0 -- No --> E_SetBorderReleaseLocation
File: GCX016.cbl
GIVEN:
A release disposition code is determined to be for border location
WHEN:
The system processes the border release
THEN:
The system sets the location information to border-specific values
β Consolidated Acceptance Criteria
- The system processes the destination release → the system sets the location information to destination-specific values
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetDestinationReleaseLocation(["Start Step"])
E_SetDestinationReleaseLocation(["End Step"])
N_SetDestinationReleaseLocation_Node0{"The system processes the
destination release"}:::decision N_SetDestinationReleaseLocation_Node0_action["The system sets the location
information to destination-specific
values"]:::main N_SetDestinationReleaseLocation_Node0 -- Yes --> N_SetDestinationReleaseLocation_Node0_action N_SetDestinationReleaseLocation_Node0_action --> E_SetDestinationReleaseLocation S_SetDestinationReleaseLocation --> N_SetDestinationReleaseLocation_Node0 N_SetDestinationReleaseLocation_Node0 -- No --> E_SetDestinationReleaseLocation
destination release"}:::decision N_SetDestinationReleaseLocation_Node0_action["The system sets the location
information to destination-specific
values"]:::main N_SetDestinationReleaseLocation_Node0 -- Yes --> N_SetDestinationReleaseLocation_Node0_action N_SetDestinationReleaseLocation_Node0_action --> E_SetDestinationReleaseLocation S_SetDestinationReleaseLocation --> N_SetDestinationReleaseLocation_Node0 N_SetDestinationReleaseLocation_Node0 -- No --> E_SetDestinationReleaseLocation
File: GCX016.cbl
GIVEN:
A release disposition code is determined to be for destination location
WHEN:
The system processes the destination release
THEN:
The system sets the location information to destination-specific values
β Consolidated Acceptance Criteria
- The system creates a new status array entry → a new entry is created in the S09A status array with the disposition code information
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CreateStatusArrayEntry(["Start Step"])
E_CreateStatusArrayEntry(["End Step"])
N_CreateStatusArrayEntry_Node0{"The system creates a new status
array entry"}:::decision N_CreateStatusArrayEntry_Node0_action["A new entry is created in the S09A
status array with the disposition
code information"]:::main N_CreateStatusArrayEntry_Node0 -- Yes --> N_CreateStatusArrayEntry_Node0_action N_CreateStatusArrayEntry_Node0_action --> E_CreateStatusArrayEntry S_CreateStatusArrayEntry --> N_CreateStatusArrayEntry_Node0 N_CreateStatusArrayEntry_Node0 -- No --> E_CreateStatusArrayEntry
array entry"}:::decision N_CreateStatusArrayEntry_Node0_action["A new entry is created in the S09A
status array with the disposition
code information"]:::main N_CreateStatusArrayEntry_Node0 -- Yes --> N_CreateStatusArrayEntry_Node0_action N_CreateStatusArrayEntry_Node0_action --> E_CreateStatusArrayEntry S_CreateStatusArrayEntry --> N_CreateStatusArrayEntry_Node0 N_CreateStatusArrayEntry_Node0 -- No --> E_CreateStatusArrayEntry
File: GCX016.cbl
GIVEN:
A valid release disposition code has been validated and location determined
WHEN:
The system creates a new status array entry
THEN:
A new entry is created in the S09A status array with the disposition code information
β Consolidated Acceptance Criteria
- The system sets the release status flag → the released flag is set to 'Y' to indicate active release status
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetReleasedFlagY(["Start Step"])
E_SetReleasedFlagY(["End Step"])
N_SetReleasedFlagY_Node0{"The system sets the release status
flag"}:::decision N_SetReleasedFlagY_Node0_action["The released flag is set to Y to
indicate active release status"]:::main N_SetReleasedFlagY_Node0 -- Yes --> N_SetReleasedFlagY_Node0_action N_SetReleasedFlagY_Node0_action --> E_SetReleasedFlagY S_SetReleasedFlagY --> N_SetReleasedFlagY_Node0 N_SetReleasedFlagY_Node0 -- No --> E_SetReleasedFlagY
flag"}:::decision N_SetReleasedFlagY_Node0_action["The released flag is set to Y to
indicate active release status"]:::main N_SetReleasedFlagY_Node0 -- Yes --> N_SetReleasedFlagY_Node0_action N_SetReleasedFlagY_Node0_action --> E_SetReleasedFlagY S_SetReleasedFlagY --> N_SetReleasedFlagY_Node0 N_SetReleasedFlagY_Node0 -- No --> E_SetReleasedFlagY
File: GCX016.cbl
GIVEN:
A status array entry is being created for a release disposition code
WHEN:
The system sets the release status flag
THEN:
The released flag is set to 'Y' to indicate active release status
β Consolidated Acceptance Criteria
- The system processes the X4-04 field containing the entry number → the entry number from X4-04 is assigned to the status array entry
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetEntryNumberfromX404(["Start Step"])
E_SetEntryNumberfromX404(["End Step"])
N_SetEntryNumberfromX404_Node0{"The system processes the X4-04
field containing the entry number"}:::decision N_SetEntryNumberfromX404_Node0_action["The entry number from X4-04 is
assigned to the status array entry"]:::main N_SetEntryNumberfromX404_Node0 -- Yes --> N_SetEntryNumberfromX404_Node0_action N_SetEntryNumberfromX404_Node0_action --> E_SetEntryNumberfromX404 S_SetEntryNumberfromX404 --> N_SetEntryNumberfromX404_Node0 N_SetEntryNumberfromX404_Node0 -- No --> E_SetEntryNumberfromX404
field containing the entry number"}:::decision N_SetEntryNumberfromX404_Node0_action["The entry number from X4-04 is
assigned to the status array entry"]:::main N_SetEntryNumberfromX404_Node0 -- Yes --> N_SetEntryNumberfromX404_Node0_action N_SetEntryNumberfromX404_Node0_action --> E_SetEntryNumberfromX404 S_SetEntryNumberfromX404 --> N_SetEntryNumberfromX404_Node0 N_SetEntryNumberfromX404_Node0 -- No --> E_SetEntryNumberfromX404
File: GCX016.cbl
GIVEN:
A release status entry is being populated
WHEN:
The system processes the X4-04 field containing the entry number
THEN:
The entry number from X4-04 is assigned to the status array entry
β Consolidated Acceptance Criteria
- The system processes the X4-05 field containing the quantity → the quantity from X4-05 is assigned to the status array entry
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetQuantityfromX405(["Start Step"])
E_SetQuantityfromX405(["End Step"])
N_SetQuantityfromX405_Node0{"The system processes the X4-05
field containing the quantity"}:::decision N_SetQuantityfromX405_Node0_action["The quantity from X4-05 is assigned
to the status array entry"]:::main N_SetQuantityfromX405_Node0 -- Yes --> N_SetQuantityfromX405_Node0_action N_SetQuantityfromX405_Node0_action --> E_SetQuantityfromX405 S_SetQuantityfromX405 --> N_SetQuantityfromX405_Node0 N_SetQuantityfromX405_Node0 -- No --> E_SetQuantityfromX405
field containing the quantity"}:::decision N_SetQuantityfromX405_Node0_action["The quantity from X4-05 is assigned
to the status array entry"]:::main N_SetQuantityfromX405_Node0 -- Yes --> N_SetQuantityfromX405_Node0_action N_SetQuantityfromX405_Node0_action --> E_SetQuantityfromX405 S_SetQuantityfromX405 --> N_SetQuantityfromX405_Node0 N_SetQuantityfromX405_Node0 -- No --> E_SetQuantityfromX405
File: GCX016.cbl
GIVEN:
A release status entry is being populated with quantity information
WHEN:
The system processes the X4-05 field containing the quantity
THEN:
The quantity from X4-05 is assigned to the status array entry
β Consolidated Acceptance Criteria
- The system inserts the entry into the S09A status array → the status entry is added to the S09A array for cargo status tracking
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_InsertEntryintoS09AStatusArray(["Start Step"])
E_InsertEntryintoS09AStatusArray(["End Step"])
N_InsertEntryintoS09AStatusArray_Node0{"The system inserts the entry into
the S09A status array"}:::decision N_InsertEntryintoS09AStatusArray_Node0_action["The status entry is added to the
S09A array for cargo status tracking"]:::main N_InsertEntryintoS09AStatusArray_Node0 -- Yes --> N_InsertEntryintoS09AStatusArray_Node0_action N_InsertEntryintoS09AStatusArray_Node0_action --> E_InsertEntryintoS09AStatusArray S_InsertEntryintoS09AStatusArray --> N_InsertEntryintoS09AStatusArray_Node0 N_InsertEntryintoS09AStatusArray_Node0 -- No --> E_InsertEntryintoS09AStatusArray
the S09A status array"}:::decision N_InsertEntryintoS09AStatusArray_Node0_action["The status entry is added to the
S09A array for cargo status tracking"]:::main N_InsertEntryintoS09AStatusArray_Node0 -- Yes --> N_InsertEntryintoS09AStatusArray_Node0_action N_InsertEntryintoS09AStatusArray_Node0_action --> E_InsertEntryintoS09AStatusArray S_InsertEntryintoS09AStatusArray --> N_InsertEntryintoS09AStatusArray_Node0 N_InsertEntryintoS09AStatusArray_Node0 -- No --> E_InsertEntryintoS09AStatusArray
File: GCX016.cbl
GIVEN:
A complete status entry has been created with all required information
WHEN:
The system inserts the entry into the S09A status array
THEN:
The status entry is added to the S09A array for cargo status tracking
β Consolidated Acceptance Criteria
- The system routes the error message → the error message is sent to designated Merlin users for appropriate action
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RouteErrortoMerlinUsers(["Start Step"])
E_RouteErrortoMerlinUsers(["End Step"])
N_RouteErrortoMerlinUsers_Node0{"The system routes the error message"}:::decision
N_RouteErrortoMerlinUsers_Node0_action["The error message is sent to
designated Merlin users for
appropriate action"]:::exclusion N_RouteErrortoMerlinUsers_Node0 -- Yes -->|Alternative| N_RouteErrortoMerlinUsers_Node0_action N_RouteErrortoMerlinUsers_Node0_action --> E_RouteErrortoMerlinUsers S_RouteErrortoMerlinUsers --> N_RouteErrortoMerlinUsers_Node0 N_RouteErrortoMerlinUsers_Node0 -- No --> E_RouteErrortoMerlinUsers
designated Merlin users for
appropriate action"]:::exclusion N_RouteErrortoMerlinUsers_Node0 -- Yes -->|Alternative| N_RouteErrortoMerlinUsers_Node0_action N_RouteErrortoMerlinUsers_Node0_action --> E_RouteErrortoMerlinUsers S_RouteErrortoMerlinUsers --> N_RouteErrortoMerlinUsers_Node0 N_RouteErrortoMerlinUsers_Node0 -- No --> E_RouteErrortoMerlinUsers
File: GCX016.cbl
GIVEN:
An error message has been generated for invalid disposition code
WHEN:
The system routes the error message
THEN:
The error message is sent to designated Merlin users for appropriate action
β Consolidated Acceptance Criteria
- The system checks if the same disposition code already exists in the status array → if duplicate found, skip processing to prevent duplicate entry, otherwise proceed with adding the status code
- The system searches the S09A status array for existing instances of the same code → the system should identify if the status code already exists and prevent duplicate entries
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CheckforDuplicateinStatusArray(["Start Step"])
E_CheckforDuplicateinStatusArray(["End Step"])
N_CheckforDuplicateinStatusArray_Node0{"The system checks if the same
disposition code already exists in
the status array"}:::decision N_CheckforDuplicateinStatusArray_Node0_action["If duplicate found, skip processing
to prevent duplicate entry,
otherwise proceed with adding the
status code"]:::main N_CheckforDuplicateinStatusArray_Node0 -- Yes --> N_CheckforDuplicateinStatusArray_Node0_action N_CheckforDuplicateinStatusArray_Node0_action --> E_CheckforDuplicateinStatusArray S_CheckforDuplicateinStatusArray --> N_CheckforDuplicateinStatusArray_Node0 N_CheckforDuplicateinStatusArray_Node1{"The system searches the S09A status
array for existing instances of the
same code"}:::decision N_CheckforDuplicateinStatusArray_Node1_action["The system should identify if the
status code already exists and
prevent duplicate entries"]:::main N_CheckforDuplicateinStatusArray_Node1 -- Yes --> N_CheckforDuplicateinStatusArray_Node1_action N_CheckforDuplicateinStatusArray_Node1_action --> E_CheckforDuplicateinStatusArray N_CheckforDuplicateinStatusArray_Node0 -- No --> N_CheckforDuplicateinStatusArray_Node1 N_CheckforDuplicateinStatusArray_Node1 -- No --> E_CheckforDuplicateinStatusArray
disposition code already exists in
the status array"}:::decision N_CheckforDuplicateinStatusArray_Node0_action["If duplicate found, skip processing
to prevent duplicate entry,
otherwise proceed with adding the
status code"]:::main N_CheckforDuplicateinStatusArray_Node0 -- Yes --> N_CheckforDuplicateinStatusArray_Node0_action N_CheckforDuplicateinStatusArray_Node0_action --> E_CheckforDuplicateinStatusArray S_CheckforDuplicateinStatusArray --> N_CheckforDuplicateinStatusArray_Node0 N_CheckforDuplicateinStatusArray_Node1{"The system searches the S09A status
array for existing instances of the
same code"}:::decision N_CheckforDuplicateinStatusArray_Node1_action["The system should identify if the
status code already exists and
prevent duplicate entries"]:::main N_CheckforDuplicateinStatusArray_Node1 -- Yes --> N_CheckforDuplicateinStatusArray_Node1_action N_CheckforDuplicateinStatusArray_Node1_action --> E_CheckforDuplicateinStatusArray N_CheckforDuplicateinStatusArray_Node0 -- No --> N_CheckforDuplicateinStatusArray_Node1 N_CheckforDuplicateinStatusArray_Node1 -- No --> E_CheckforDuplicateinStatusArray
File: GCX016.cbl
GIVEN:
A disposition code is identified as status information type AND the S09A status array contains existing status entries
WHEN:
The system checks if the same disposition code already exists in the status array
THEN:
If duplicate found, skip processing to prevent duplicate entry, otherwise proceed with adding the status code
File: GCX016.cbl
GIVEN:
A status information code is ready to be added to the status array
WHEN:
The system searches the S09A status array for existing instances of the same code
THEN:
- The system should identify if the status code already exists
- Prevent duplicate entries
β Consolidated Acceptance Criteria
- The system processes the informational status code → add the disposition code to the next available position in the S09A status array
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AddInformationalStatusCode(["Start Step"])
E_AddInformationalStatusCode(["End Step"])
N_AddInformationalStatusCode_Node0{"The system processes the
informational status code"}:::decision N_AddInformationalStatusCode_Node0_action["Add the disposition code to the
next available position in the S09A
status array"]:::main N_AddInformationalStatusCode_Node0 -- Yes --> N_AddInformationalStatusCode_Node0_action N_AddInformationalStatusCode_Node0_action --> E_AddInformationalStatusCode S_AddInformationalStatusCode --> N_AddInformationalStatusCode_Node0 N_AddInformationalStatusCode_Node0 -- No --> E_AddInformationalStatusCode
informational status code"}:::decision N_AddInformationalStatusCode_Node0_action["Add the disposition code to the
next available position in the S09A
status array"]:::main N_AddInformationalStatusCode_Node0 -- Yes --> N_AddInformationalStatusCode_Node0_action N_AddInformationalStatusCode_Node0_action --> E_AddInformationalStatusCode S_AddInformationalStatusCode --> N_AddInformationalStatusCode_Node0 N_AddInformationalStatusCode_Node0 -- No --> E_AddInformationalStatusCode
File: GCX016.cbl
GIVEN:
A disposition code is validated as status information type AND no duplicate exists in the status array
WHEN:
The system processes the informational status code
THEN:
Add the disposition code to the next available position in the S09A status array
β Consolidated Acceptance Criteria
- The system updates the status array element → set the status information flag to indicate this is informational only and not an actionable status
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetStatusInfoFlag(["Start Step"])
E_SetStatusInfoFlag(["End Step"])
N_SetStatusInfoFlag_Node0{"The system updates the status array
element"}:::decision N_SetStatusInfoFlag_Node0_action["Set the status information flag to
indicate this is informational only
and not an actionable status"]:::main N_SetStatusInfoFlag_Node0 -- Yes --> N_SetStatusInfoFlag_Node0_action N_SetStatusInfoFlag_Node0_action --> E_SetStatusInfoFlag S_SetStatusInfoFlag --> N_SetStatusInfoFlag_Node0 N_SetStatusInfoFlag_Node0 -- No --> E_SetStatusInfoFlag
element"}:::decision N_SetStatusInfoFlag_Node0_action["Set the status information flag to
indicate this is informational only
and not an actionable status"]:::main N_SetStatusInfoFlag_Node0 -- Yes --> N_SetStatusInfoFlag_Node0_action N_SetStatusInfoFlag_Node0_action --> E_SetStatusInfoFlag S_SetStatusInfoFlag --> N_SetStatusInfoFlag_Node0 N_SetStatusInfoFlag_Node0 -- No --> E_SetStatusInfoFlag
File: GCX016.cbl
GIVEN:
A disposition code is being added as status information
WHEN:
The system updates the status array element
THEN:
- Set the status information flag to indicate this is informational only
- Not an actionable status
β Consolidated Acceptance Criteria
- If whether quantity processing is required → skip all quantity-related processing including release quantity calculations and quantity impact assessments
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SkipQuantityProcessing(["Start Step"])
E_SkipQuantityProcessing(["End Step"])
N_SkipQuantityProcessing_Node0{"The system evaluates whether
quantity processing is required"}:::decision N_SkipQuantityProcessing_Node0_action["Skip all quantity-related
processing including release
quantity calculations and quantity
impact assessments"]:::main N_SkipQuantityProcessing_Node0 -- Yes --> N_SkipQuantityProcessing_Node0_action N_SkipQuantityProcessing_Node0_action --> E_SkipQuantityProcessing S_SkipQuantityProcessing --> N_SkipQuantityProcessing_Node0 N_SkipQuantityProcessing_Node0 -- No --> E_SkipQuantityProcessing
quantity processing is required"}:::decision N_SkipQuantityProcessing_Node0_action["Skip all quantity-related
processing including release
quantity calculations and quantity
impact assessments"]:::main N_SkipQuantityProcessing_Node0 -- Yes --> N_SkipQuantityProcessing_Node0_action N_SkipQuantityProcessing_Node0_action --> E_SkipQuantityProcessing S_SkipQuantityProcessing --> N_SkipQuantityProcessing_Node0 N_SkipQuantityProcessing_Node0 -- No --> E_SkipQuantityProcessing
File: GCX016.cbl
GIVEN:
A status code is marked as informational only
WHEN:
The system evaluates whether quantity processing is required
THEN:
- Skip all quantity-related processing including release quantity calculations
- Quantity impact assessments
β Consolidated Acceptance Criteria
- The system completes the status information processing → log the status change with disposition code details and timestamp for audit purposes
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogStatusInformation(["Start Step"])
E_LogStatusInformation(["End Step"])
N_LogStatusInformation_Node0{"The system completes the status
information processing"}:::decision N_LogStatusInformation_Node0_action["Log the status change with
disposition code details and
timestamp for audit purposes"]:::main N_LogStatusInformation_Node0 -- Yes --> N_LogStatusInformation_Node0_action N_LogStatusInformation_Node0_action --> E_LogStatusInformation S_LogStatusInformation --> N_LogStatusInformation_Node0 N_LogStatusInformation_Node0 -- No --> E_LogStatusInformation
information processing"}:::decision N_LogStatusInformation_Node0_action["Log the status change with
disposition code details and
timestamp for audit purposes"]:::main N_LogStatusInformation_Node0 -- Yes --> N_LogStatusInformation_Node0_action N_LogStatusInformation_Node0_action --> E_LogStatusInformation S_LogStatusInformation --> N_LogStatusInformation_Node0 N_LogStatusInformation_Node0 -- No --> E_LogStatusInformation
File: GCX016.cbl
GIVEN:
An informational status code has been successfully added to the status array
WHEN:
The system completes the status information processing
THEN:
- Log the status change with disposition code details
- Timestamp for audit purposes
β Consolidated Acceptance Criteria
- System checks for broker bond information in K1 remarks segment → system identifies if bond control number is available from broker
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_BrokerBondInformationAvailable(["Start Step"])
E_BrokerBondInformationAvailable(["End Step"])
N_BrokerBondInformationAvailable_Node0{"System checks for broker bond
information in K1 remarks segment"}:::decision N_BrokerBondInformationAvailable_Node0_action["System identifies if bond control
number is available from broker"]:::main N_BrokerBondInformationAvailable_Node0 -- Yes --> N_BrokerBondInformationAvailable_Node0_action N_BrokerBondInformationAvailable_Node0_action --> E_BrokerBondInformationAvailable S_BrokerBondInformationAvailable --> N_BrokerBondInformationAvailable_Node0 N_BrokerBondInformationAvailable_Node0 -- No --> E_BrokerBondInformationAvailable
information in K1 remarks segment"}:::decision N_BrokerBondInformationAvailable_Node0_action["System identifies if bond control
number is available from broker"]:::main N_BrokerBondInformationAvailable_Node0 -- Yes --> N_BrokerBondInformationAvailable_Node0_action N_BrokerBondInformationAvailable_Node0_action --> E_BrokerBondInformationAvailable S_BrokerBondInformationAvailable --> N_BrokerBondInformationAvailable_Node0 N_BrokerBondInformationAvailable_Node0 -- No --> E_BrokerBondInformationAvailable
File: GCX016.cbl
GIVEN:
Non-bonded traffic cargo with proceed disposition code
WHEN:
System checks for broker bond information in K1 remarks segment
THEN:
System identifies if bond control number is available from broker
β Consolidated Acceptance Criteria
- System processes K1 remarks containing bond details → system extracts bond control number and broker information for cargo processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RetrieveBondInformationfromBroker(["Start Step"])
E_RetrieveBondInformationfromBroker(["End Step"])
N_RetrieveBondInformationfromBroker_Node0{"System processes K1 remarks
containing bond details"}:::decision N_RetrieveBondInformationfromBroker_Node0_action["System extracts bond control number
and broker information for cargo
processing"]:::main N_RetrieveBondInformationfromBroker_Node0 -- Yes --> N_RetrieveBondInformationfromBroker_Node0_action N_RetrieveBondInformationfromBroker_Node0_action --> E_RetrieveBondInformationfromBroker S_RetrieveBondInformationfromBroker --> N_RetrieveBondInformationfromBroker_Node0 N_RetrieveBondInformationfromBroker_Node0 -- No --> E_RetrieveBondInformationfromBroker
containing bond details"}:::decision N_RetrieveBondInformationfromBroker_Node0_action["System extracts bond control number
and broker information for cargo
processing"]:::main N_RetrieveBondInformationfromBroker_Node0 -- Yes --> N_RetrieveBondInformationfromBroker_Node0_action N_RetrieveBondInformationfromBroker_Node0_action --> E_RetrieveBondInformationfromBroker S_RetrieveBondInformationfromBroker --> N_RetrieveBondInformationfromBroker_Node0 N_RetrieveBondInformationfromBroker_Node0 -- No --> E_RetrieveBondInformationfromBroker
File: GCX016.cbl
GIVEN:
Broker bond information is available in K1 segment
WHEN:
System processes K1 remarks containing bond details
THEN:
- System extracts bond control number
- Broker information for cargo processing
β Consolidated Acceptance Criteria
- System processes bond assignment for proceed code → system updates cargo record with bond control number and changes status from non-bonded to bonded
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ApplyBondtoNonbondedTraffic(["Start Step"])
E_ApplyBondtoNonbondedTraffic(["End Step"])
N_ApplyBondtoNonbondedTraffic_Node0{"System processes bond assignment
for proceed code"}:::decision N_ApplyBondtoNonbondedTraffic_Node0_action["System updates cargo record with
bond control number and changes
status from non-bonded to bonded"]:::main N_ApplyBondtoNonbondedTraffic_Node0 -- Yes --> N_ApplyBondtoNonbondedTraffic_Node0_action N_ApplyBondtoNonbondedTraffic_Node0_action --> E_ApplyBondtoNonbondedTraffic S_ApplyBondtoNonbondedTraffic --> N_ApplyBondtoNonbondedTraffic_Node0 N_ApplyBondtoNonbondedTraffic_Node0 -- No --> E_ApplyBondtoNonbondedTraffic
for proceed code"}:::decision N_ApplyBondtoNonbondedTraffic_Node0_action["System updates cargo record with
bond control number and changes
status from non-bonded to bonded"]:::main N_ApplyBondtoNonbondedTraffic_Node0 -- Yes --> N_ApplyBondtoNonbondedTraffic_Node0_action N_ApplyBondtoNonbondedTraffic_Node0_action --> E_ApplyBondtoNonbondedTraffic S_ApplyBondtoNonbondedTraffic --> N_ApplyBondtoNonbondedTraffic_Node0 N_ApplyBondtoNonbondedTraffic_Node0 -- No --> E_ApplyBondtoNonbondedTraffic
File: GCX016.cbl
GIVEN:
Valid bond control number and non-bonded cargo record
WHEN:
System processes bond assignment for proceed code
THEN:
- System updates cargo record with bond control number
- Changes status from non-bonded to bonded
β Consolidated Acceptance Criteria
- System processes proceed disposition code with bond → system sets cargo status to proceed and includes bond control number in status record
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetProceedStatuswithBond(["Start Step"])
E_SetProceedStatuswithBond(["End Step"])
N_SetProceedStatuswithBond_Node0{"System processes proceed
disposition code with bond"}:::decision N_SetProceedStatuswithBond_Node0_action["System sets cargo status to proceed
and includes bond control number in
status record"]:::main N_SetProceedStatuswithBond_Node0 -- Yes --> N_SetProceedStatuswithBond_Node0_action N_SetProceedStatuswithBond_Node0_action --> E_SetProceedStatuswithBond S_SetProceedStatuswithBond --> N_SetProceedStatuswithBond_Node0 N_SetProceedStatuswithBond_Node0 -- No --> E_SetProceedStatuswithBond
disposition code with bond"}:::decision N_SetProceedStatuswithBond_Node0_action["System sets cargo status to proceed
and includes bond control number in
status record"]:::main N_SetProceedStatuswithBond_Node0 -- Yes --> N_SetProceedStatuswithBond_Node0_action N_SetProceedStatuswithBond_Node0_action --> E_SetProceedStatuswithBond S_SetProceedStatuswithBond --> N_SetProceedStatuswithBond_Node0 N_SetProceedStatuswithBond_Node0 -- No --> E_SetProceedStatuswithBond
File: GCX016.cbl
GIVEN:
Cargo with valid bond assignment
WHEN:
System processes proceed disposition code with bond
THEN:
- System sets cargo status to proceed
- Includes bond control number in status record
β Consolidated Acceptance Criteria
- System updates cargo status with bond information → system clears all non-bonded status flags and updates status array
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ClearPreviousNonbondedStatus(["Start Step"])
E_ClearPreviousNonbondedStatus(["End Step"])
N_ClearPreviousNonbondedStatus_Node0{"System updates cargo status with
bond information"}:::decision N_ClearPreviousNonbondedStatus_Node0_action["System clears all non-bonded status
flags and updates status array"]:::main N_ClearPreviousNonbondedStatus_Node0 -- Yes --> N_ClearPreviousNonbondedStatus_Node0_action N_ClearPreviousNonbondedStatus_Node0_action --> E_ClearPreviousNonbondedStatus S_ClearPreviousNonbondedStatus --> N_ClearPreviousNonbondedStatus_Node0 N_ClearPreviousNonbondedStatus_Node0 -- No --> E_ClearPreviousNonbondedStatus
bond information"}:::decision N_ClearPreviousNonbondedStatus_Node0_action["System clears all non-bonded status
flags and updates status array"]:::main N_ClearPreviousNonbondedStatus_Node0 -- Yes --> N_ClearPreviousNonbondedStatus_Node0_action N_ClearPreviousNonbondedStatus_Node0_action --> E_ClearPreviousNonbondedStatus S_ClearPreviousNonbondedStatus --> N_ClearPreviousNonbondedStatus_Node0 N_ClearPreviousNonbondedStatus_Node0 -- No --> E_ClearPreviousNonbondedStatus
File: GCX016.cbl
GIVEN:
Cargo previously marked as non-bonded with new bond assignment
WHEN:
System updates cargo status with bond information
THEN:
- System clears all non-bonded status flags
- Updates status array
β Consolidated Acceptance Criteria
- System commits cargo record changes → system updates cargo database record with bond control number, proceed status, and border arrival date
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UpdateCargoRecordwithBondInfo(["Start Step"])
E_UpdateCargoRecordwithBondInfo(["End Step"])
N_UpdateCargoRecordwithBondInfo_Node0{"System commits cargo record changes"}:::decision
N_UpdateCargoRecordwithBondInfo_Node0_action["System updates cargo database
record with bond control number,
proceed status, and border arrival
date"]:::main N_UpdateCargoRecordwithBondInfo_Node0 -- Yes --> N_UpdateCargoRecordwithBondInfo_Node0_action N_UpdateCargoRecordwithBondInfo_Node0_action --> E_UpdateCargoRecordwithBondInfo S_UpdateCargoRecordwithBondInfo --> N_UpdateCargoRecordwithBondInfo_Node0 N_UpdateCargoRecordwithBondInfo_Node0 -- No --> E_UpdateCargoRecordwithBondInfo
record with bond control number,
proceed status, and border arrival
date"]:::main N_UpdateCargoRecordwithBondInfo_Node0 -- Yes --> N_UpdateCargoRecordwithBondInfo_Node0_action N_UpdateCargoRecordwithBondInfo_Node0_action --> E_UpdateCargoRecordwithBondInfo S_UpdateCargoRecordwithBondInfo --> N_UpdateCargoRecordwithBondInfo_Node0 N_UpdateCargoRecordwithBondInfo_Node0 -- No --> E_UpdateCargoRecordwithBondInfo
File: GCX016.cbl
GIVEN:
Cargo with validated bond information and updated status
WHEN:
System commits cargo record changes
THEN:
System updates cargo database record with bond control number, proceed status, and border arrival date
β Consolidated Acceptance Criteria
- System generates status notification → system creates Merlin message with proceed status, bond information, and cargo details for broker notification
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GenerateProceedNotification(["Start Step"])
E_GenerateProceedNotification(["End Step"])
N_GenerateProceedNotification_Node0{"System generates status
notification"}:::decision N_GenerateProceedNotification_Node0_action["System creates Merlin message with
proceed status, bond information,
and cargo details for broker
notification"]:::main N_GenerateProceedNotification_Node0 -- Yes --> N_GenerateProceedNotification_Node0_action N_GenerateProceedNotification_Node0_action --> E_GenerateProceedNotification S_GenerateProceedNotification --> N_GenerateProceedNotification_Node0 N_GenerateProceedNotification_Node0 -- No --> E_GenerateProceedNotification
notification"}:::decision N_GenerateProceedNotification_Node0_action["System creates Merlin message with
proceed status, bond information,
and cargo details for broker
notification"]:::main N_GenerateProceedNotification_Node0 -- Yes --> N_GenerateProceedNotification_Node0_action N_GenerateProceedNotification_Node0_action --> E_GenerateProceedNotification S_GenerateProceedNotification --> N_GenerateProceedNotification_Node0 N_GenerateProceedNotification_Node0 -- No --> E_GenerateProceedNotification
File: GCX016.cbl
GIVEN:
Cargo successfully updated with bond and proceed status
WHEN:
System generates status notification
THEN:
System creates Merlin message with proceed status, bond information, and cargo details for broker notification
β Consolidated Acceptance Criteria
- System logs transaction details → system creates audit log entry with cargo CCN, bond number, broker information, and timestamp
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogBondAssignmentTransaction(["Start Step"])
E_LogBondAssignmentTransaction(["End Step"])
N_LogBondAssignmentTransaction_Node0{"System logs transaction details"}:::decision
N_LogBondAssignmentTransaction_Node0_action["System creates audit log entry with
cargo CCN, bond number, broker
information, and timestamp"]:::main N_LogBondAssignmentTransaction_Node0 -- Yes --> N_LogBondAssignmentTransaction_Node0_action N_LogBondAssignmentTransaction_Node0_action --> E_LogBondAssignmentTransaction S_LogBondAssignmentTransaction --> N_LogBondAssignmentTransaction_Node0 N_LogBondAssignmentTransaction_Node0 -- No --> E_LogBondAssignmentTransaction
cargo CCN, bond number, broker
information, and timestamp"]:::main N_LogBondAssignmentTransaction_Node0 -- Yes --> N_LogBondAssignmentTransaction_Node0_action N_LogBondAssignmentTransaction_Node0_action --> E_LogBondAssignmentTransaction S_LogBondAssignmentTransaction --> N_LogBondAssignmentTransaction_Node0 N_LogBondAssignmentTransaction_Node0 -- No --> E_LogBondAssignmentTransaction
File: GCX016.cbl
GIVEN:
Completed bond assignment to cargo
WHEN:
System logs transaction details
THEN:
System creates audit log entry with cargo CCN, bond number, broker information, and timestamp
β Consolidated Acceptance Criteria
- System validates bond information and finds it invalid → system rejects proceed code processing and maintains current cargo status
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RejectProceedCode(["Start Step"])
E_RejectProceedCode(["End Step"])
N_RejectProceedCode_Node0{"System validates bond information
and finds it invalid"}:::decision N_RejectProceedCode_Node0_action["System rejects proceed code
processing and maintains current
cargo status"]:::exclusion N_RejectProceedCode_Node0 -- Yes -->|Alternative| N_RejectProceedCode_Node0_action N_RejectProceedCode_Node0_action --> E_RejectProceedCode S_RejectProceedCode --> N_RejectProceedCode_Node0 N_RejectProceedCode_Node0 -- No --> E_RejectProceedCode
and finds it invalid"}:::decision N_RejectProceedCode_Node0_action["System rejects proceed code
processing and maintains current
cargo status"]:::exclusion N_RejectProceedCode_Node0 -- Yes -->|Alternative| N_RejectProceedCode_Node0_action N_RejectProceedCode_Node0_action --> E_RejectProceedCode S_RejectProceedCode --> N_RejectProceedCode_Node0 N_RejectProceedCode_Node0 -- No --> E_RejectProceedCode
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
Non-bonded cargo with proceed code and invalid or missing bond information
WHEN:
- System validates bond information
- Finds it invalid
THEN:
- System rejects proceed code processing
- Maintains current cargo status
β Consolidated Acceptance Criteria
- System maintains current status → system keeps cargo in non-bonded status and does not apply proceed disposition code
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MaintainNonbondedStatus(["Start Step"])
E_MaintainNonbondedStatus(["End Step"])
N_MaintainNonbondedStatus_Node0{"System maintains current status"}:::decision
N_MaintainNonbondedStatus_Node0_action["System keeps cargo in non-bonded
status and does not apply proceed
disposition code"]:::main N_MaintainNonbondedStatus_Node0 -- Yes --> N_MaintainNonbondedStatus_Node0_action N_MaintainNonbondedStatus_Node0_action --> E_MaintainNonbondedStatus S_MaintainNonbondedStatus --> N_MaintainNonbondedStatus_Node0 N_MaintainNonbondedStatus_Node0 -- No --> E_MaintainNonbondedStatus
status and does not apply proceed
disposition code"]:::main N_MaintainNonbondedStatus_Node0 -- Yes --> N_MaintainNonbondedStatus_Node0_action N_MaintainNonbondedStatus_Node0_action --> E_MaintainNonbondedStatus S_MaintainNonbondedStatus --> N_MaintainNonbondedStatus_Node0 N_MaintainNonbondedStatus_Node0 -- No --> E_MaintainNonbondedStatus
File: GCX016.cbl
GIVEN:
Non-bonded cargo with failed bond processing
WHEN:
System maintains current status
THEN:
- System keeps cargo in non-bonded status
- Does not apply proceed disposition code
β Consolidated Acceptance Criteria
- If the disposition code for in-bond requirements → the system sets master in-bond flag and processes bond number information
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_BondProcessingRequired(["Start Step"])
E_BondProcessingRequired(["End Step"])
N_BondProcessingRequired_Node0{"The system evaluates the
disposition code for in-bond
requirements"}:::decision N_BondProcessingRequired_Node0_action["The system sets master in-bond flag
and processes bond number
information"]:::main N_BondProcessingRequired_Node0 -- Yes --> N_BondProcessingRequired_Node0_action N_BondProcessingRequired_Node0_action --> E_BondProcessingRequired S_BondProcessingRequired --> N_BondProcessingRequired_Node0 N_BondProcessingRequired_Node0 -- No --> E_BondProcessingRequired
disposition code for in-bond
requirements"}:::decision N_BondProcessingRequired_Node0_action["The system sets master in-bond flag
and processes bond number
information"]:::main N_BondProcessingRequired_Node0 -- Yes --> N_BondProcessingRequired_Node0_action N_BondProcessingRequired_Node0_action --> E_BondProcessingRequired S_BondProcessingRequired --> N_BondProcessingRequired_Node0 N_BondProcessingRequired_Node0 -- No --> E_BondProcessingRequired
File: GCX016.cbl
GIVEN:
A cargo record with disposition codes '1J', '69', or '55' is being processed
WHEN:
The system evaluates the disposition code for in-bond requirements
THEN:
- The system sets master in-bond flag
- Processes bond number information
β Consolidated Acceptance Criteria
- The system processes the disposition code → the system clears existing bond control numbers and processes as proceed status
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ClearBondInformationifDC95(["Start Step"])
E_ClearBondInformationifDC95(["End Step"])
N_ClearBondInformationifDC95_Node0{"The system processes the
disposition code"}:::decision N_ClearBondInformationifDC95_Node0_action["The system clears existing bond
control numbers and processes as
proceed status"]:::main N_ClearBondInformationifDC95_Node0 -- Yes --> N_ClearBondInformationifDC95_Node0_action N_ClearBondInformationifDC95_Node0_action --> E_ClearBondInformationifDC95 S_ClearBondInformationifDC95 --> N_ClearBondInformationifDC95_Node0 N_ClearBondInformationifDC95_Node0 -- No --> E_ClearBondInformationifDC95
disposition code"}:::decision N_ClearBondInformationifDC95_Node0_action["The system clears existing bond
control numbers and processes as
proceed status"]:::main N_ClearBondInformationifDC95_Node0 -- Yes --> N_ClearBondInformationifDC95_Node0_action N_ClearBondInformationifDC95_Node0_action --> E_ClearBondInformationifDC95 S_ClearBondInformationifDC95 --> N_ClearBondInformationifDC95_Node0 N_ClearBondInformationifDC95_Node0 -- No --> E_ClearBondInformationifDC95
File: GCX016.cbl
GIVEN:
A cargo record is being processed with disposition code 95
WHEN:
The system processes the disposition code
THEN:
- The system clears existing bond control numbers
- Processes as proceed status
β Consolidated Acceptance Criteria
- The entry number starts with 'V' prefix → the system places the entry number in the entry number field, otherwise places it in the in-bond control number field
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ProcessBrokerEntryNumbers(["Start Step"])
E_ProcessBrokerEntryNumbers(["End Step"])
N_ProcessBrokerEntryNumbers_Node0{"The entry number starts with V
prefix"}:::decision N_ProcessBrokerEntryNumbers_Node0_action["The system places the entry number
in the entry number field, otherwise
places it in the in-bond control
number field"]:::main N_ProcessBrokerEntryNumbers_Node0 -- Yes --> N_ProcessBrokerEntryNumbers_Node0_action N_ProcessBrokerEntryNumbers_Node0_action --> E_ProcessBrokerEntryNumbers S_ProcessBrokerEntryNumbers --> N_ProcessBrokerEntryNumbers_Node0 N_ProcessBrokerEntryNumbers_Node0 -- No --> E_ProcessBrokerEntryNumbers
prefix"}:::decision N_ProcessBrokerEntryNumbers_Node0_action["The system places the entry number
in the entry number field, otherwise
places it in the in-bond control
number field"]:::main N_ProcessBrokerEntryNumbers_Node0 -- Yes --> N_ProcessBrokerEntryNumbers_Node0_action N_ProcessBrokerEntryNumbers_Node0_action --> E_ProcessBrokerEntryNumbers S_ProcessBrokerEntryNumbers --> N_ProcessBrokerEntryNumbers_Node0 N_ProcessBrokerEntryNumbers_Node0 -- No --> E_ProcessBrokerEntryNumbers
File: GCX016.cbl
GIVEN:
An entry number is provided in the X4 segment
WHEN:
The entry number starts with 'V' prefix
THEN:
The system places the entry number in the entry number field, otherwise places it in the in-bond control number field
β Consolidated Acceptance Criteria
- The system processes the X4 segment for in-bond processing → the system should lookup CPRS tax number for broker identification and prepare appropriate broker messages
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_TaxNumberProcessingHandleCPRStaxnumbersforCanadianPacificentities(["Start Step"])
E_TaxNumberProcessingHandleCPRStaxnumbersforCanadianPacificentities(["End Step"])
N_TaxNumberProcessingHandleCPRStaxnumbersforCanadianPacificentities_Node0{"The system processes the X4 segment
for in-bond processing"}:::decision N_TaxNumberProcessingHandleCPRStaxnumbersforCanadianPacificentities_Node0_action["The system should lookup CPRS tax
number for broker identification and
prepare appropriate broker messages"]:::main N_TaxNumberProcessingHandleCPRStaxnumbersforCanadianPacificentities_Node0 -- Yes --> N_TaxNumberProcessingHandleCPRStaxnumbersforCanadianPacificentities_Node0_action N_TaxNumberProcessingHandleCPRStaxnumbersforCanadianPacificentities_Node0_action --> E_TaxNumberProcessingHandleCPRStaxnumbersforCanadianPacificentities S_TaxNumberProcessingHandleCPRStaxnumbersforCanadianPacificentities --> N_TaxNumberProcessingHandleCPRStaxnumbersforCanadianPacificentities_Node0 N_TaxNumberProcessingHandleCPRStaxnumbersforCanadianPacificentities_Node0 -- No --> E_TaxNumberProcessingHandleCPRStaxnumbersforCanadianPacificentities
for in-bond processing"}:::decision N_TaxNumberProcessingHandleCPRStaxnumbersforCanadianPacificentities_Node0_action["The system should lookup CPRS tax
number for broker identification and
prepare appropriate broker messages"]:::main N_TaxNumberProcessingHandleCPRStaxnumbersforCanadianPacificentities_Node0 -- Yes --> N_TaxNumberProcessingHandleCPRStaxnumbersforCanadianPacificentities_Node0_action N_TaxNumberProcessingHandleCPRStaxnumbersforCanadianPacificentities_Node0_action --> E_TaxNumberProcessingHandleCPRStaxnumbersforCanadianPacificentities S_TaxNumberProcessingHandleCPRStaxnumbersforCanadianPacificentities --> N_TaxNumberProcessingHandleCPRStaxnumbersforCanadianPacificentities_Node0 N_TaxNumberProcessingHandleCPRStaxnumbersforCanadianPacificentities_Node0 -- No --> E_TaxNumberProcessingHandleCPRStaxnumbersforCanadianPacificentities
File: GCX016.cbl
GIVEN:
A cargo record with disposition code 95 and entry type in (61, 62, 63, 69) and cargo type is CPRS
WHEN:
The system processes the X4 segment for in-bond processing
THEN:
- The system should lookup cprs tax number for broker identification
- Prepare appropriate broker messages
β Consolidated Acceptance Criteria
- If the bonded-to port code field → the system determines if a port code is present and proceeds with mapping or completes the process
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_PortCodeAvailable(["Start Step"])
E_PortCodeAvailable(["End Step"])
N_PortCodeAvailable_Node0{"The system evaluates the bonded-to
port code field"}:::decision N_PortCodeAvailable_Node0_action["The system determines if a port
code is present and proceeds with
mapping or completes the process"]:::main N_PortCodeAvailable_Node0 -- Yes --> N_PortCodeAvailable_Node0_action N_PortCodeAvailable_Node0_action --> E_PortCodeAvailable S_PortCodeAvailable --> N_PortCodeAvailable_Node0 N_PortCodeAvailable_Node0 -- No --> E_PortCodeAvailable
port code field"}:::decision N_PortCodeAvailable_Node0_action["The system determines if a port
code is present and proceeds with
mapping or completes the process"]:::main N_PortCodeAvailable_Node0 -- Yes --> N_PortCodeAvailable_Node0_action N_PortCodeAvailable_Node0_action --> E_PortCodeAvailable S_PortCodeAvailable --> N_PortCodeAvailable_Node0 N_PortCodeAvailable_Node0 -- No --> E_PortCodeAvailable
File: GCX016.cbl
GIVEN:
A cargo record is being processed for port mapping
WHEN:
The system evaluates the bonded-to port code field
THEN:
- The system determines if a port code is present
- Proceeds with mapping or completes the process
β Consolidated Acceptance Criteria
- The port mapping process requires the port code for lookup → the system extracts the bonded-to port code from the cargo record
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExtractBondedToPortCode(["Start Step"])
E_ExtractBondedToPortCode(["End Step"])
N_ExtractBondedToPortCode_Node0{"The port mapping process requires
the port code for lookup"}:::decision N_ExtractBondedToPortCode_Node0_action["The system extracts the bonded-to
port code from the cargo record"]:::main N_ExtractBondedToPortCode_Node0 -- Yes --> N_ExtractBondedToPortCode_Node0_action N_ExtractBondedToPortCode_Node0_action --> E_ExtractBondedToPortCode S_ExtractBondedToPortCode --> N_ExtractBondedToPortCode_Node0 N_ExtractBondedToPortCode_Node0 -- No --> E_ExtractBondedToPortCode
the port code for lookup"}:::decision N_ExtractBondedToPortCode_Node0_action["The system extracts the bonded-to
port code from the cargo record"]:::main N_ExtractBondedToPortCode_Node0 -- Yes --> N_ExtractBondedToPortCode_Node0_action N_ExtractBondedToPortCode_Node0_action --> E_ExtractBondedToPortCode S_ExtractBondedToPortCode --> N_ExtractBondedToPortCode_Node0 N_ExtractBondedToPortCode_Node0 -- No --> E_ExtractBondedToPortCode
File: GCX016.cbl
GIVEN:
A cargo record contains a bonded-to port code
WHEN:
The port mapping process requires the port code for lookup
THEN:
The system extracts the bonded-to port code from the cargo record
β Consolidated Acceptance Criteria
- The system needs to retrieve the corresponding port name → the system calls GCCTBIO to lookup the port information in the DS table
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CallGCCTBIOforDSTableLookup(["Start Step"])
E_CallGCCTBIOforDSTableLookup(["End Step"])
N_CallGCCTBIOforDSTableLookup_Node0{"The system needs to retrieve the
corresponding port name"}:::decision N_CallGCCTBIOforDSTableLookup_Node0_action["The system calls GCCTBIO to lookup
the port information in the DS table"]:::main N_CallGCCTBIOforDSTableLookup_Node0 -- Yes --> N_CallGCCTBIOforDSTableLookup_Node0_action N_CallGCCTBIOforDSTableLookup_Node0_action --> E_CallGCCTBIOforDSTableLookup S_CallGCCTBIOforDSTableLookup --> N_CallGCCTBIOforDSTableLookup_Node0 N_CallGCCTBIOforDSTableLookup_Node0 -- No --> E_CallGCCTBIOforDSTableLookup
corresponding port name"}:::decision N_CallGCCTBIOforDSTableLookup_Node0_action["The system calls GCCTBIO to lookup
the port information in the DS table"]:::main N_CallGCCTBIOforDSTableLookup_Node0 -- Yes --> N_CallGCCTBIOforDSTableLookup_Node0_action N_CallGCCTBIOforDSTableLookup_Node0_action --> E_CallGCCTBIOforDSTableLookup S_CallGCCTBIOforDSTableLookup --> N_CallGCCTBIOforDSTableLookup_Node0 N_CallGCCTBIOforDSTableLookup_Node0 -- No --> E_CallGCCTBIOforDSTableLookup
File: GCX016.cbl
GIVEN:
A bonded-to port code has been extracted from the cargo record
WHEN:
The system needs to retrieve the corresponding port name
THEN:
The system calls GCCTBIO to lookup the port information in the DS table
β Consolidated Acceptance Criteria
- If the lookup results → the system determines if a matching DS table record was found and proceeds with port name retrieval or uses default handling
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_DSTableRecordFound(["Start Step"])
E_DSTableRecordFound(["End Step"])
N_DSTableRecordFound_Node0{"The system evaluates the lookup
results"}:::decision N_DSTableRecordFound_Node0_action["The system determines if a matching
DS table record was found and
proceeds with port name retrieval or
uses default handling"]:::main N_DSTableRecordFound_Node0 -- Yes --> N_DSTableRecordFound_Node0_action N_DSTableRecordFound_Node0_action --> E_DSTableRecordFound S_DSTableRecordFound --> N_DSTableRecordFound_Node0 N_DSTableRecordFound_Node0 -- No --> E_DSTableRecordFound
results"}:::decision N_DSTableRecordFound_Node0_action["The system determines if a matching
DS table record was found and
proceeds with port name retrieval or
uses default handling"]:::main N_DSTableRecordFound_Node0 -- Yes --> N_DSTableRecordFound_Node0_action N_DSTableRecordFound_Node0_action --> E_DSTableRecordFound S_DSTableRecordFound --> N_DSTableRecordFound_Node0 N_DSTableRecordFound_Node0 -- No --> E_DSTableRecordFound
File: GCX016.cbl
GIVEN:
A DS table lookup has been performed for a port code
WHEN:
The system evaluates the lookup results
THEN:
- The system determines if a matching ds table record was found
- Proceeds with port name retrieval or uses default handling
β Consolidated Acceptance Criteria
- The system needs to obtain the port name → the system retrieves the port name from the DS table record
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RetrievePortNamefromDSTable(["Start Step"])
E_RetrievePortNamefromDSTable(["End Step"])
N_RetrievePortNamefromDSTable_Node0{"The system needs to obtain the port
name"}:::decision N_RetrievePortNamefromDSTable_Node0_action["The system retrieves the port name
from the DS table record"]:::main N_RetrievePortNamefromDSTable_Node0 -- Yes --> N_RetrievePortNamefromDSTable_Node0_action N_RetrievePortNamefromDSTable_Node0_action --> E_RetrievePortNamefromDSTable S_RetrievePortNamefromDSTable --> N_RetrievePortNamefromDSTable_Node0 N_RetrievePortNamefromDSTable_Node0 -- No --> E_RetrievePortNamefromDSTable
name"}:::decision N_RetrievePortNamefromDSTable_Node0_action["The system retrieves the port name
from the DS table record"]:::main N_RetrievePortNamefromDSTable_Node0 -- Yes --> N_RetrievePortNamefromDSTable_Node0_action N_RetrievePortNamefromDSTable_Node0_action --> E_RetrievePortNamefromDSTable S_RetrievePortNamefromDSTable --> N_RetrievePortNamefromDSTable_Node0 N_RetrievePortNamefromDSTable_Node0 -- No --> E_RetrievePortNamefromDSTable
File: GCX016.cbl
GIVEN:
A matching DS table record has been found for the port code
WHEN:
The system needs to obtain the port name
THEN:
The system retrieves the port name from the DS table record
β Consolidated Acceptance Criteria
- The system needs to establish the port code to port name relationship → the system maps the port code to the retrieved port name
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MapPortCodetoPortName(["Start Step"])
E_MapPortCodetoPortName(["End Step"])
N_MapPortCodetoPortName_Node0{"The system needs to establish the
port code to port name relationship"}:::decision N_MapPortCodetoPortName_Node0_action["The system maps the port code to
the retrieved port name"]:::main N_MapPortCodetoPortName_Node0 -- Yes --> N_MapPortCodetoPortName_Node0_action N_MapPortCodetoPortName_Node0_action --> E_MapPortCodetoPortName S_MapPortCodetoPortName --> N_MapPortCodetoPortName_Node0 N_MapPortCodetoPortName_Node0 -- No --> E_MapPortCodetoPortName
port code to port name relationship"}:::decision N_MapPortCodetoPortName_Node0_action["The system maps the port code to
the retrieved port name"]:::main N_MapPortCodetoPortName_Node0 -- Yes --> N_MapPortCodetoPortName_Node0_action N_MapPortCodetoPortName_Node0_action --> E_MapPortCodetoPortName S_MapPortCodetoPortName --> N_MapPortCodetoPortName_Node0 N_MapPortCodetoPortName_Node0 -- No --> E_MapPortCodetoPortName
File: GCX016.cbl
GIVEN:
A port name has been retrieved from the DS table
WHEN:
The system needs to establish the port code to port name relationship
THEN:
The system maps the port code to the retrieved port name
β Consolidated Acceptance Criteria
- The system needs to provide a port name for the cargo record → the system uses a default port name
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UseDefaultPortName(["Start Step"])
E_UseDefaultPortName(["End Step"])
N_UseDefaultPortName_Node0{"The system needs to provide a port
name for the cargo record"}:::decision N_UseDefaultPortName_Node0_action["The system uses a default port name"]:::main N_UseDefaultPortName_Node0 -- Yes --> N_UseDefaultPortName_Node0_action N_UseDefaultPortName_Node0_action --> E_UseDefaultPortName S_UseDefaultPortName --> N_UseDefaultPortName_Node0 N_UseDefaultPortName_Node0 -- No --> E_UseDefaultPortName
name for the cargo record"}:::decision N_UseDefaultPortName_Node0_action["The system uses a default port name"]:::main N_UseDefaultPortName_Node0 -- Yes --> N_UseDefaultPortName_Node0_action N_UseDefaultPortName_Node0_action --> E_UseDefaultPortName S_UseDefaultPortName --> N_UseDefaultPortName_Node0 N_UseDefaultPortName_Node0 -- No --> E_UseDefaultPortName
File: GCX016.cbl
GIVEN:
A DS table lookup has failed to find a matching record for the port code
WHEN:
The system needs to provide a port name for the cargo record
THEN:
The system uses a default port name
β Consolidated Acceptance Criteria
- The system needs to record the lookup failure → the system logs that the port code was not found
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogPortCodeNotFound(["Start Step"])
E_LogPortCodeNotFound(["End Step"])
N_LogPortCodeNotFound_Node0{"The system needs to record the
lookup failure"}:::decision N_LogPortCodeNotFound_Node0_action["The system logs that the port code
was not found"]:::main N_LogPortCodeNotFound_Node0 -- Yes --> N_LogPortCodeNotFound_Node0_action N_LogPortCodeNotFound_Node0_action --> E_LogPortCodeNotFound S_LogPortCodeNotFound --> N_LogPortCodeNotFound_Node0 N_LogPortCodeNotFound_Node0 -- No --> E_LogPortCodeNotFound
lookup failure"}:::decision N_LogPortCodeNotFound_Node0_action["The system logs that the port code
was not found"]:::main N_LogPortCodeNotFound_Node0 -- Yes --> N_LogPortCodeNotFound_Node0_action N_LogPortCodeNotFound_Node0_action --> E_LogPortCodeNotFound S_LogPortCodeNotFound --> N_LogPortCodeNotFound_Node0 N_LogPortCodeNotFound_Node0 -- No --> E_LogPortCodeNotFound
File: GCX016.cbl
GIVEN:
A port code lookup has failed in the DS table
WHEN:
The system needs to record the lookup failure
THEN:
The system logs that the port code was not found
β Consolidated Acceptance Criteria
- The cargo record needs to be updated with port information → the system updates the cargo record with the port code and corresponding port name
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UpdateCargoRecordwithPortInformation(["Start Step"])
E_UpdateCargoRecordwithPortInformation(["End Step"])
N_UpdateCargoRecordwithPortInformation_Node0{"The cargo record needs to be
updated with port information"}:::decision N_UpdateCargoRecordwithPortInformation_Node0_action["The system updates the cargo record
with the port code and corresponding
port name"]:::main N_UpdateCargoRecordwithPortInformation_Node0 -- Yes --> N_UpdateCargoRecordwithPortInformation_Node0_action N_UpdateCargoRecordwithPortInformation_Node0_action --> E_UpdateCargoRecordwithPortInformation S_UpdateCargoRecordwithPortInformation --> N_UpdateCargoRecordwithPortInformation_Node0 N_UpdateCargoRecordwithPortInformation_Node0 -- No --> E_UpdateCargoRecordwithPortInformation
updated with port information"}:::decision N_UpdateCargoRecordwithPortInformation_Node0_action["The system updates the cargo record
with the port code and corresponding
port name"]:::main N_UpdateCargoRecordwithPortInformation_Node0 -- Yes --> N_UpdateCargoRecordwithPortInformation_Node0_action N_UpdateCargoRecordwithPortInformation_Node0_action --> E_UpdateCargoRecordwithPortInformation S_UpdateCargoRecordwithPortInformation --> N_UpdateCargoRecordwithPortInformation_Node0 N_UpdateCargoRecordwithPortInformation_Node0 -- No --> E_UpdateCargoRecordwithPortInformation
File: GCX016.cbl
GIVEN:
Port mapping has been completed with either retrieved or default port name
WHEN:
The cargo record needs to be updated with port information
THEN:
- The system updates the cargo record with the port code
- Corresponding port name
β Consolidated Acceptance Criteria
- The system processes the POD disposition code → the system sets arrival status and updates arrival date based on cargo location (border or destination)
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_PODProofofDeliveryCode(["Start Step"])
E_PODProofofDeliveryCode(["End Step"])
N_PODProofofDeliveryCode_Node0{"The system processes the POD
disposition code"}:::decision N_PODProofofDeliveryCode_Node0_action["The system sets arrival status and
updates arrival date based on cargo
location border or destination"]:::main N_PODProofofDeliveryCode_Node0 -- Yes --> N_PODProofofDeliveryCode_Node0_action N_PODProofofDeliveryCode_Node0_action --> E_PODProofofDeliveryCode S_PODProofofDeliveryCode --> N_PODProofofDeliveryCode_Node0 N_PODProofofDeliveryCode_Node0 -- No --> E_PODProofofDeliveryCode
disposition code"}:::decision N_PODProofofDeliveryCode_Node0_action["The system sets arrival status and
updates arrival date based on cargo
location border or destination"]:::main N_PODProofofDeliveryCode_Node0 -- Yes --> N_PODProofofDeliveryCode_Node0_action N_PODProofofDeliveryCode_Node0_action --> E_PODProofofDeliveryCode S_PODProofofDeliveryCode --> N_PODProofofDeliveryCode_Node0 N_PODProofofDeliveryCode_Node0 -- No --> E_PODProofofDeliveryCode
File: GCX016.cbl
GIVEN:
A cargo record exists with POD disposition code in the message
WHEN:
The system processes the POD disposition code
THEN:
- The system sets arrival status
- Updates arrival date based on cargo location (border or destination)
β Consolidated Acceptance Criteria
- The system processes the AAD disposition code → the system sets destination arrival status and updates destination arrival date
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AADArrivalatDestinationCode(["Start Step"])
E_AADArrivalatDestinationCode(["End Step"])
N_AADArrivalatDestinationCode_Node0{"The system processes the AAD
disposition code"}:::decision N_AADArrivalatDestinationCode_Node0_action["The system sets destination arrival
status and updates destination
arrival date"]:::main N_AADArrivalatDestinationCode_Node0 -- Yes --> N_AADArrivalatDestinationCode_Node0_action N_AADArrivalatDestinationCode_Node0_action --> E_AADArrivalatDestinationCode S_AADArrivalatDestinationCode --> N_AADArrivalatDestinationCode_Node0 N_AADArrivalatDestinationCode_Node0 -- No --> E_AADArrivalatDestinationCode
disposition code"}:::decision N_AADArrivalatDestinationCode_Node0_action["The system sets destination arrival
status and updates destination
arrival date"]:::main N_AADArrivalatDestinationCode_Node0 -- Yes --> N_AADArrivalatDestinationCode_Node0_action N_AADArrivalatDestinationCode_Node0_action --> E_AADArrivalatDestinationCode S_AADArrivalatDestinationCode --> N_AADArrivalatDestinationCode_Node0 N_AADArrivalatDestinationCode_Node0 -- No --> E_AADArrivalatDestinationCode
File: GCX016.cbl
GIVEN:
A cargo record exists with AAD disposition code in the message
WHEN:
The system processes the AAD disposition code
THEN:
- The system sets destination arrival status
- Updates destination arrival date
β Consolidated Acceptance Criteria
- The system checks the cargo's current location status → the system routes to either border location processing or destination location processing based on cargo location
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CargoLocationCheck(["Start Step"])
E_CargoLocationCheck(["End Step"])
N_CargoLocationCheck_Node0{"The system checks the cargo s
current location status"}:::decision N_CargoLocationCheck_Node0_action["The system routes to either border
location processing or destination
location processing based on cargo
location"]:::main N_CargoLocationCheck_Node0 -- Yes --> N_CargoLocationCheck_Node0_action N_CargoLocationCheck_Node0_action --> E_CargoLocationCheck S_CargoLocationCheck --> N_CargoLocationCheck_Node0 N_CargoLocationCheck_Node0 -- No --> E_CargoLocationCheck
current location status"}:::decision N_CargoLocationCheck_Node0_action["The system routes to either border
location processing or destination
location processing based on cargo
location"]:::main N_CargoLocationCheck_Node0 -- Yes --> N_CargoLocationCheck_Node0_action N_CargoLocationCheck_Node0_action --> E_CargoLocationCheck S_CargoLocationCheck --> N_CargoLocationCheck_Node0 N_CargoLocationCheck_Node0 -- No --> E_CargoLocationCheck
File: GCX016.cbl
GIVEN:
A cargo record with arrival disposition code is being processed
WHEN:
The system checks the cargo's current location status
THEN:
The system routes to either border location processing or destination location processing based on cargo location
β Consolidated Acceptance Criteria
- The system processes border arrival → the system sets border arrival flag and updates border arrival date
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_BorderLocationProcessing(["Start Step"])
E_BorderLocationProcessing(["End Step"])
N_BorderLocationProcessing_Node0{"The system processes border arrival"}:::decision
N_BorderLocationProcessing_Node0_action["The system sets border arrival flag
and updates border arrival date"]:::main N_BorderLocationProcessing_Node0 -- Yes --> N_BorderLocationProcessing_Node0_action N_BorderLocationProcessing_Node0_action --> E_BorderLocationProcessing S_BorderLocationProcessing --> N_BorderLocationProcessing_Node0 N_BorderLocationProcessing_Node0 -- No --> E_BorderLocationProcessing
and updates border arrival date"]:::main N_BorderLocationProcessing_Node0 -- Yes --> N_BorderLocationProcessing_Node0_action N_BorderLocationProcessing_Node0_action --> E_BorderLocationProcessing S_BorderLocationProcessing --> N_BorderLocationProcessing_Node0 N_BorderLocationProcessing_Node0 -- No --> E_BorderLocationProcessing
File: GCX016.cbl
GIVEN:
Cargo is determined to be at border location with arrival disposition code
WHEN:
The system processes border arrival
THEN:
- The system sets border arrival flag
- Updates border arrival date
β Consolidated Acceptance Criteria
- The system processes destination arrival → the system sets destination arrival flag and updates destination arrival date
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_DestinationLocationProcessing(["Start Step"])
E_DestinationLocationProcessing(["End Step"])
N_DestinationLocationProcessing_Node0{"The system processes destination
arrival"}:::decision N_DestinationLocationProcessing_Node0_action["The system sets destination arrival
flag and updates destination arrival
date"]:::main N_DestinationLocationProcessing_Node0 -- Yes --> N_DestinationLocationProcessing_Node0_action N_DestinationLocationProcessing_Node0_action --> E_DestinationLocationProcessing S_DestinationLocationProcessing --> N_DestinationLocationProcessing_Node0 N_DestinationLocationProcessing_Node0 -- No --> E_DestinationLocationProcessing
arrival"}:::decision N_DestinationLocationProcessing_Node0_action["The system sets destination arrival
flag and updates destination arrival
date"]:::main N_DestinationLocationProcessing_Node0 -- Yes --> N_DestinationLocationProcessing_Node0_action N_DestinationLocationProcessing_Node0_action --> E_DestinationLocationProcessing S_DestinationLocationProcessing --> N_DestinationLocationProcessing_Node0 N_DestinationLocationProcessing_Node0 -- No --> E_DestinationLocationProcessing
File: GCX016.cbl
GIVEN:
Cargo is determined to be at destination location with arrival disposition code
WHEN:
The system processes destination arrival
THEN:
- The system sets destination arrival flag
- Updates destination arrival date
β Consolidated Acceptance Criteria
- The system updates cargo status for border arrival → the system sets the border arrival flag to true
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetBorderArrivalFlag(["Start Step"])
E_SetBorderArrivalFlag(["End Step"])
N_SetBorderArrivalFlag_Node0{"The system updates cargo status for
border arrival"}:::decision N_SetBorderArrivalFlag_Node0_action["The system sets the border arrival
flag to true"]:::main N_SetBorderArrivalFlag_Node0 -- Yes --> N_SetBorderArrivalFlag_Node0_action N_SetBorderArrivalFlag_Node0_action --> E_SetBorderArrivalFlag S_SetBorderArrivalFlag --> N_SetBorderArrivalFlag_Node0 N_SetBorderArrivalFlag_Node0 -- No --> E_SetBorderArrivalFlag
border arrival"}:::decision N_SetBorderArrivalFlag_Node0_action["The system sets the border arrival
flag to true"]:::main N_SetBorderArrivalFlag_Node0 -- Yes --> N_SetBorderArrivalFlag_Node0_action N_SetBorderArrivalFlag_Node0_action --> E_SetBorderArrivalFlag S_SetBorderArrivalFlag --> N_SetBorderArrivalFlag_Node0 N_SetBorderArrivalFlag_Node0 -- No --> E_SetBorderArrivalFlag
File: GCX016.cbl
GIVEN:
Cargo is being processed for border arrival
WHEN:
The system updates cargo status for border arrival
THEN:
The system sets the border arrival flag to true
β Consolidated Acceptance Criteria
- The system updates cargo status for destination arrival → the system sets the destination arrival flag to true
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetDestinationArrivalFlag(["Start Step"])
E_SetDestinationArrivalFlag(["End Step"])
N_SetDestinationArrivalFlag_Node0{"The system updates cargo status for
destination arrival"}:::decision N_SetDestinationArrivalFlag_Node0_action["The system sets the destination
arrival flag to true"]:::main N_SetDestinationArrivalFlag_Node0 -- Yes --> N_SetDestinationArrivalFlag_Node0_action N_SetDestinationArrivalFlag_Node0_action --> E_SetDestinationArrivalFlag S_SetDestinationArrivalFlag --> N_SetDestinationArrivalFlag_Node0 N_SetDestinationArrivalFlag_Node0 -- No --> E_SetDestinationArrivalFlag
destination arrival"}:::decision N_SetDestinationArrivalFlag_Node0_action["The system sets the destination
arrival flag to true"]:::main N_SetDestinationArrivalFlag_Node0 -- Yes --> N_SetDestinationArrivalFlag_Node0_action N_SetDestinationArrivalFlag_Node0_action --> E_SetDestinationArrivalFlag S_SetDestinationArrivalFlag --> N_SetDestinationArrivalFlag_Node0 N_SetDestinationArrivalFlag_Node0 -- No --> E_SetDestinationArrivalFlag
File: GCX016.cbl
GIVEN:
Cargo is being processed for destination arrival
WHEN:
The system updates cargo status for destination arrival
THEN:
The system sets the destination arrival flag to true
β Consolidated Acceptance Criteria
- The system processes destination arrival date update → the system updates the destination arrival date field with current date and time
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UpdateDestinationArrivalDate(["Start Step"])
E_UpdateDestinationArrivalDate(["End Step"])
N_UpdateDestinationArrivalDate_Node0{"The system processes destination
arrival date update"}:::decision N_UpdateDestinationArrivalDate_Node0_action["The system updates the destination
arrival date field with current date
and time"]:::main N_UpdateDestinationArrivalDate_Node0 -- Yes --> N_UpdateDestinationArrivalDate_Node0_action N_UpdateDestinationArrivalDate_Node0_action --> E_UpdateDestinationArrivalDate S_UpdateDestinationArrivalDate --> N_UpdateDestinationArrivalDate_Node0 N_UpdateDestinationArrivalDate_Node0 -- No --> E_UpdateDestinationArrivalDate
arrival date update"}:::decision N_UpdateDestinationArrivalDate_Node0_action["The system updates the destination
arrival date field with current date
and time"]:::main N_UpdateDestinationArrivalDate_Node0 -- Yes --> N_UpdateDestinationArrivalDate_Node0_action N_UpdateDestinationArrivalDate_Node0_action --> E_UpdateDestinationArrivalDate S_UpdateDestinationArrivalDate --> N_UpdateDestinationArrivalDate_Node0 N_UpdateDestinationArrivalDate_Node0 -- No --> E_UpdateDestinationArrivalDate
File: GCX016.cbl
GIVEN:
Cargo has destination arrival flag set and current system date/time is available
WHEN:
The system processes destination arrival date update
THEN:
- The system updates the destination arrival date field with current date
- Time
β Consolidated Acceptance Criteria
- The system checks the cargo's manifest type → the system determines if cargo is export or import based on manifest type
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExportManifestCheck(["Start Step"])
E_ExportManifestCheck(["End Step"])
N_ExportManifestCheck_Node0{"The system checks the cargo s
manifest type"}:::decision N_ExportManifestCheck_Node0_action["The system determines if cargo is
export or import based on manifest
type"]:::main N_ExportManifestCheck_Node0 -- Yes --> N_ExportManifestCheck_Node0_action N_ExportManifestCheck_Node0_action --> E_ExportManifestCheck S_ExportManifestCheck --> N_ExportManifestCheck_Node0 N_ExportManifestCheck_Node0 -- No --> E_ExportManifestCheck
manifest type"}:::decision N_ExportManifestCheck_Node0_action["The system determines if cargo is
export or import based on manifest
type"]:::main N_ExportManifestCheck_Node0 -- Yes --> N_ExportManifestCheck_Node0_action N_ExportManifestCheck_Node0_action --> E_ExportManifestCheck S_ExportManifestCheck --> N_ExportManifestCheck_Node0 N_ExportManifestCheck_Node0 -- No --> E_ExportManifestCheck
File: GCX016.cbl
GIVEN:
Cargo arrival processing is in progress
WHEN:
The system checks the cargo's manifest type
THEN:
The system determines if cargo is export or import based on manifest type
β Consolidated Acceptance Criteria
- The system processes arrival status for export cargo → the system sets export arrival status in cargo record
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetExportArrivalStatus(["Start Step"])
E_SetExportArrivalStatus(["End Step"])
N_SetExportArrivalStatus_Node0{"The system processes arrival status
for export cargo"}:::decision N_SetExportArrivalStatus_Node0_action["The system sets export arrival
status in cargo record"]:::main N_SetExportArrivalStatus_Node0 -- Yes --> N_SetExportArrivalStatus_Node0_action N_SetExportArrivalStatus_Node0_action --> E_SetExportArrivalStatus S_SetExportArrivalStatus --> N_SetExportArrivalStatus_Node0 N_SetExportArrivalStatus_Node0 -- No --> E_SetExportArrivalStatus
for export cargo"}:::decision N_SetExportArrivalStatus_Node0_action["The system sets export arrival
status in cargo record"]:::main N_SetExportArrivalStatus_Node0 -- Yes --> N_SetExportArrivalStatus_Node0_action N_SetExportArrivalStatus_Node0_action --> E_SetExportArrivalStatus S_SetExportArrivalStatus --> N_SetExportArrivalStatus_Node0 N_SetExportArrivalStatus_Node0 -- No --> E_SetExportArrivalStatus
File: GCX016.cbl
GIVEN:
Cargo is determined to be on export manifest
WHEN:
The system processes arrival status for export cargo
THEN:
The system sets export arrival status in cargo record
β Consolidated Acceptance Criteria
- The system processes arrival status for import cargo → the system sets import arrival status in cargo record
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetImportArrivalStatus(["Start Step"])
E_SetImportArrivalStatus(["End Step"])
N_SetImportArrivalStatus_Node0{"The system processes arrival status
for import cargo"}:::decision N_SetImportArrivalStatus_Node0_action["The system sets import arrival
status in cargo record"]:::main N_SetImportArrivalStatus_Node0 -- Yes --> N_SetImportArrivalStatus_Node0_action N_SetImportArrivalStatus_Node0_action --> E_SetImportArrivalStatus S_SetImportArrivalStatus --> N_SetImportArrivalStatus_Node0 N_SetImportArrivalStatus_Node0 -- No --> E_SetImportArrivalStatus
for import cargo"}:::decision N_SetImportArrivalStatus_Node0_action["The system sets import arrival
status in cargo record"]:::main N_SetImportArrivalStatus_Node0 -- Yes --> N_SetImportArrivalStatus_Node0_action N_SetImportArrivalStatus_Node0_action --> E_SetImportArrivalStatus S_SetImportArrivalStatus --> N_SetImportArrivalStatus_Node0 N_SetImportArrivalStatus_Node0 -- No --> E_SetImportArrivalStatus
File: GCX016.cbl
GIVEN:
Cargo is determined to be on import manifest
WHEN:
The system processes arrival status for import cargo
THEN:
The system sets import arrival status in cargo record
β Consolidated Acceptance Criteria
- The system processes arrival status update → the system clears any existing hold status flags and codes
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ClearPreviousHoldStatus(["Start Step"])
E_ClearPreviousHoldStatus(["End Step"])
N_ClearPreviousHoldStatus_Node0{"The system processes arrival status
update"}:::decision N_ClearPreviousHoldStatus_Node0_action["The system clears any existing hold
status flags and codes"]:::main N_ClearPreviousHoldStatus_Node0 -- Yes --> N_ClearPreviousHoldStatus_Node0_action N_ClearPreviousHoldStatus_Node0_action --> E_ClearPreviousHoldStatus S_ClearPreviousHoldStatus --> N_ClearPreviousHoldStatus_Node0 N_ClearPreviousHoldStatus_Node0 -- No --> E_ClearPreviousHoldStatus
update"}:::decision N_ClearPreviousHoldStatus_Node0_action["The system clears any existing hold
status flags and codes"]:::main N_ClearPreviousHoldStatus_Node0 -- Yes --> N_ClearPreviousHoldStatus_Node0_action N_ClearPreviousHoldStatus_Node0_action --> E_ClearPreviousHoldStatus S_ClearPreviousHoldStatus --> N_ClearPreviousHoldStatus_Node0 N_ClearPreviousHoldStatus_Node0 -- No --> E_ClearPreviousHoldStatus
File: GCX016.cbl
GIVEN:
Cargo has arrival status set and may have previous hold status
WHEN:
The system processes arrival status update
THEN:
- The system clears any existing hold status flags
- Codes
β Consolidated Acceptance Criteria
- The system checks if train-level processing is required → the system either proceeds to train arrival status update or skips to cargo record update
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_TrainLevelProcessing(["Start Step"])
E_TrainLevelProcessing(["End Step"])
N_TrainLevelProcessing_Node0{"The system checks if train-level
processing is required"}:::decision N_TrainLevelProcessing_Node0_action["The system either proceeds to train
arrival status update or skips to
cargo record update"]:::main N_TrainLevelProcessing_Node0 -- Yes --> N_TrainLevelProcessing_Node0_action N_TrainLevelProcessing_Node0_action --> E_TrainLevelProcessing S_TrainLevelProcessing --> N_TrainLevelProcessing_Node0 N_TrainLevelProcessing_Node0 -- No --> E_TrainLevelProcessing
processing is required"}:::decision N_TrainLevelProcessing_Node0_action["The system either proceeds to train
arrival status update or skips to
cargo record update"]:::main N_TrainLevelProcessing_Node0 -- Yes --> N_TrainLevelProcessing_Node0_action N_TrainLevelProcessing_Node0_action --> E_TrainLevelProcessing S_TrainLevelProcessing --> N_TrainLevelProcessing_Node0 N_TrainLevelProcessing_Node0 -- No --> E_TrainLevelProcessing
File: GCX016.cbl
GIVEN:
Cargo arrival processing is complete
WHEN:
The system checks if train-level processing is required
THEN:
The system either proceeds to train arrival status update or skips to cargo record update
β Consolidated Acceptance Criteria
- The system processes train arrival status → the system updates the train record with arrival status and date
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UpdateTrainArrivalStatus(["Start Step"])
E_UpdateTrainArrivalStatus(["End Step"])
N_UpdateTrainArrivalStatus_Node0{"The system processes train arrival
status"}:::decision N_UpdateTrainArrivalStatus_Node0_action["The system updates the train record
with arrival status and date"]:::main N_UpdateTrainArrivalStatus_Node0 -- Yes --> N_UpdateTrainArrivalStatus_Node0_action N_UpdateTrainArrivalStatus_Node0_action --> E_UpdateTrainArrivalStatus S_UpdateTrainArrivalStatus --> N_UpdateTrainArrivalStatus_Node0 N_UpdateTrainArrivalStatus_Node0 -- No --> E_UpdateTrainArrivalStatus
status"}:::decision N_UpdateTrainArrivalStatus_Node0_action["The system updates the train record
with arrival status and date"]:::main N_UpdateTrainArrivalStatus_Node0 -- Yes --> N_UpdateTrainArrivalStatus_Node0_action N_UpdateTrainArrivalStatus_Node0_action --> E_UpdateTrainArrivalStatus S_UpdateTrainArrivalStatus --> N_UpdateTrainArrivalStatus_Node0 N_UpdateTrainArrivalStatus_Node0 -- No --> E_UpdateTrainArrivalStatus
File: GCX016.cbl
GIVEN:
Train-level processing is required for arrival
WHEN:
The system processes train arrival status
THEN:
- The system updates the train record with arrival status
- Date
β Consolidated Acceptance Criteria
- The system processes train arrival notification → the system sends arrival notification message to appropriate recipients
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SendTrainArrivalNotification(["Start Step"])
E_SendTrainArrivalNotification(["End Step"])
N_SendTrainArrivalNotification_Node0{"The system processes train arrival
notification"}:::decision N_SendTrainArrivalNotification_Node0_action["The system sends arrival
notification message to appropriate
recipients"]:::main N_SendTrainArrivalNotification_Node0 -- Yes --> N_SendTrainArrivalNotification_Node0_action N_SendTrainArrivalNotification_Node0_action --> E_SendTrainArrivalNotification S_SendTrainArrivalNotification --> N_SendTrainArrivalNotification_Node0 N_SendTrainArrivalNotification_Node0 -- No --> E_SendTrainArrivalNotification
notification"}:::decision N_SendTrainArrivalNotification_Node0_action["The system sends arrival
notification message to appropriate
recipients"]:::main N_SendTrainArrivalNotification_Node0 -- Yes --> N_SendTrainArrivalNotification_Node0_action N_SendTrainArrivalNotification_Node0_action --> E_SendTrainArrivalNotification S_SendTrainArrivalNotification --> N_SendTrainArrivalNotification_Node0 N_SendTrainArrivalNotification_Node0 -- No --> E_SendTrainArrivalNotification
File: GCX016.cbl
GIVEN:
Train arrival status has been updated
WHEN:
The system processes train arrival notification
THEN:
The system sends arrival notification message to appropriate recipients
β Consolidated Acceptance Criteria
- The system generates arrival message → the system creates and formats arrival message with cargo and arrival details
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GenerateArrivalMessage(["Start Step"])
E_GenerateArrivalMessage(["End Step"])
N_GenerateArrivalMessage_Node0{"The system generates arrival
message"}:::decision N_GenerateArrivalMessage_Node0_action["The system creates and formats
arrival message with cargo and
arrival details"]:::main N_GenerateArrivalMessage_Node0 -- Yes --> N_GenerateArrivalMessage_Node0_action N_GenerateArrivalMessage_Node0_action --> E_GenerateArrivalMessage S_GenerateArrivalMessage --> N_GenerateArrivalMessage_Node0 N_GenerateArrivalMessage_Node0 -- No --> E_GenerateArrivalMessage
message"}:::decision N_GenerateArrivalMessage_Node0_action["The system creates and formats
arrival message with cargo and
arrival details"]:::main N_GenerateArrivalMessage_Node0 -- Yes --> N_GenerateArrivalMessage_Node0_action N_GenerateArrivalMessage_Node0_action --> E_GenerateArrivalMessage S_GenerateArrivalMessage --> N_GenerateArrivalMessage_Node0 N_GenerateArrivalMessage_Node0 -- No --> E_GenerateArrivalMessage
File: GCX016.cbl
GIVEN:
Cargo record has been updated in database with arrival information
WHEN:
The system generates arrival message
THEN:
- The system creates
- Formats arrival message with cargo
- Arrival details
β Consolidated Acceptance Criteria
- The system logs arrival processing → the system creates audit log entry with arrival processing details and timestamp
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogArrivalProcessing(["Start Step"])
E_LogArrivalProcessing(["End Step"])
N_LogArrivalProcessing_Node0{"The system logs arrival processing"}:::decision
N_LogArrivalProcessing_Node0_action["The system creates audit log entry
with arrival processing details and
timestamp"]:::main N_LogArrivalProcessing_Node0 -- Yes --> N_LogArrivalProcessing_Node0_action N_LogArrivalProcessing_Node0_action --> E_LogArrivalProcessing S_LogArrivalProcessing --> N_LogArrivalProcessing_Node0 N_LogArrivalProcessing_Node0 -- No --> E_LogArrivalProcessing
with arrival processing details and
timestamp"]:::main N_LogArrivalProcessing_Node0 -- Yes --> N_LogArrivalProcessing_Node0_action N_LogArrivalProcessing_Node0_action --> E_LogArrivalProcessing S_LogArrivalProcessing --> N_LogArrivalProcessing_Node0 N_LogArrivalProcessing_Node0 -- No --> E_LogArrivalProcessing
File: GCX016.cbl
GIVEN:
Arrival message has been generated and all processing is complete
WHEN:
The system logs arrival processing
THEN:
- The system creates audit log entry with arrival processing details
- Timestamp
β Consolidated Acceptance Criteria
- Export status processing is triggered for the cargo → the system begins export status evaluation workflow
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExportStatusProcessingTriggered(["Start Step"])
E_ExportStatusProcessingTriggered(["End Step"])
N_ExportStatusProcessingTriggered_Node0{"Export status processing is
triggered for the cargo"}:::decision N_ExportStatusProcessingTriggered_Node0_action["The system begins export status
evaluation workflow"]:::main N_ExportStatusProcessingTriggered_Node0 -- Yes --> N_ExportStatusProcessingTriggered_Node0_action N_ExportStatusProcessingTriggered_Node0_action --> E_ExportStatusProcessingTriggered S_ExportStatusProcessingTriggered --> N_ExportStatusProcessingTriggered_Node0 N_ExportStatusProcessingTriggered_Node0 -- No --> E_ExportStatusProcessingTriggered
triggered for the cargo"}:::decision N_ExportStatusProcessingTriggered_Node0_action["The system begins export status
evaluation workflow"]:::main N_ExportStatusProcessingTriggered_Node0 -- Yes --> N_ExportStatusProcessingTriggered_Node0_action N_ExportStatusProcessingTriggered_Node0_action --> E_ExportStatusProcessingTriggered S_ExportStatusProcessingTriggered --> N_ExportStatusProcessingTriggered_Node0 N_ExportStatusProcessingTriggered_Node0 -- No --> E_ExportStatusProcessingTriggered
File: GCX016.cbl
GIVEN:
A cargo record exists in the system with valid status information
WHEN:
Export status processing is triggered for the cargo
THEN:
The system begins export status evaluation workflow
β Consolidated Acceptance Criteria
- The system checks if cargo status analysis is complete → processing continues if analysis is complete, otherwise processing stops with error
- The system checks if cargo status analysis is complete → the system either continues to proceed flag check or skips proceed processing based on analysis completion status
- The system checks if cargo status analysis is complete → the system either proceeds with FDA hold conditions check or continues with standard processing
- The system checks if cargo status analysis is complete → if analysis is complete, proceed to FDA hold conditions check, otherwise continue with other status processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CargoStatusAnalysisComplete(["Start Step"])
E_CargoStatusAnalysisComplete(["End Step"])
N_CargoStatusAnalysisComplete_Node0{"The system checks if cargo status
analysis is complete"}:::decision N_CargoStatusAnalysisComplete_Node0_action["Processing continues if analysis is
complete, otherwise processing stops
with error"]:::main N_CargoStatusAnalysisComplete_Node0 -- Yes --> N_CargoStatusAnalysisComplete_Node0_action N_CargoStatusAnalysisComplete_Node0_action --> E_CargoStatusAnalysisComplete S_CargoStatusAnalysisComplete --> N_CargoStatusAnalysisComplete_Node0 N_CargoStatusAnalysisComplete_Node1{"The system checks if cargo status
analysis is complete"}:::decision N_CargoStatusAnalysisComplete_Node1_action["The system either continues to
proceed flag check or skips proceed
processing based on analysis
completion status"]:::main N_CargoStatusAnalysisComplete_Node1 -- Yes --> N_CargoStatusAnalysisComplete_Node1_action N_CargoStatusAnalysisComplete_Node1_action --> E_CargoStatusAnalysisComplete N_CargoStatusAnalysisComplete_Node0 -- No --> N_CargoStatusAnalysisComplete_Node1 N_CargoStatusAnalysisComplete_Node2{"The system checks if cargo status
analysis is complete"}:::decision N_CargoStatusAnalysisComplete_Node2_action["The system either proceeds with FDA
hold conditions check or continues
with standard processing"]:::main N_CargoStatusAnalysisComplete_Node2 -- Yes --> N_CargoStatusAnalysisComplete_Node2_action N_CargoStatusAnalysisComplete_Node2_action --> E_CargoStatusAnalysisComplete N_CargoStatusAnalysisComplete_Node1 -- No --> N_CargoStatusAnalysisComplete_Node2 N_CargoStatusAnalysisComplete_Node3{"The system checks if cargo status
analysis is complete"}:::decision N_CargoStatusAnalysisComplete_Node3_action["If analysis is complete, proceed to
FDA hold conditions check, otherwise
continue with other status
processing"]:::main N_CargoStatusAnalysisComplete_Node3 -- Yes --> N_CargoStatusAnalysisComplete_Node3_action N_CargoStatusAnalysisComplete_Node3_action --> E_CargoStatusAnalysisComplete N_CargoStatusAnalysisComplete_Node2 -- No --> N_CargoStatusAnalysisComplete_Node3 N_CargoStatusAnalysisComplete_Node3 -- No --> E_CargoStatusAnalysisComplete
analysis is complete"}:::decision N_CargoStatusAnalysisComplete_Node0_action["Processing continues if analysis is
complete, otherwise processing stops
with error"]:::main N_CargoStatusAnalysisComplete_Node0 -- Yes --> N_CargoStatusAnalysisComplete_Node0_action N_CargoStatusAnalysisComplete_Node0_action --> E_CargoStatusAnalysisComplete S_CargoStatusAnalysisComplete --> N_CargoStatusAnalysisComplete_Node0 N_CargoStatusAnalysisComplete_Node1{"The system checks if cargo status
analysis is complete"}:::decision N_CargoStatusAnalysisComplete_Node1_action["The system either continues to
proceed flag check or skips proceed
processing based on analysis
completion status"]:::main N_CargoStatusAnalysisComplete_Node1 -- Yes --> N_CargoStatusAnalysisComplete_Node1_action N_CargoStatusAnalysisComplete_Node1_action --> E_CargoStatusAnalysisComplete N_CargoStatusAnalysisComplete_Node0 -- No --> N_CargoStatusAnalysisComplete_Node1 N_CargoStatusAnalysisComplete_Node2{"The system checks if cargo status
analysis is complete"}:::decision N_CargoStatusAnalysisComplete_Node2_action["The system either proceeds with FDA
hold conditions check or continues
with standard processing"]:::main N_CargoStatusAnalysisComplete_Node2 -- Yes --> N_CargoStatusAnalysisComplete_Node2_action N_CargoStatusAnalysisComplete_Node2_action --> E_CargoStatusAnalysisComplete N_CargoStatusAnalysisComplete_Node1 -- No --> N_CargoStatusAnalysisComplete_Node2 N_CargoStatusAnalysisComplete_Node3{"The system checks if cargo status
analysis is complete"}:::decision N_CargoStatusAnalysisComplete_Node3_action["If analysis is complete, proceed to
FDA hold conditions check, otherwise
continue with other status
processing"]:::main N_CargoStatusAnalysisComplete_Node3 -- Yes --> N_CargoStatusAnalysisComplete_Node3_action N_CargoStatusAnalysisComplete_Node3_action --> E_CargoStatusAnalysisComplete N_CargoStatusAnalysisComplete_Node2 -- No --> N_CargoStatusAnalysisComplete_Node3 N_CargoStatusAnalysisComplete_Node3 -- No --> E_CargoStatusAnalysisComplete
File: GCX016.cbl
GIVEN:
Export status processing has been initiated for a cargo record
WHEN:
The system checks if cargo status analysis is complete
THEN:
Processing continues if analysis is complete, otherwise processing stops with error
File: GCX016.cbl
GIVEN:
A cargo record is being processed for proceed status
WHEN:
The system checks if cargo status analysis is complete
THEN:
The system either continues to proceed flag check or skips proceed processing based on analysis completion status
File: GCX016.cbl
GIVEN:
FDA hold status processing has been initiated
WHEN:
The system checks if cargo status analysis is complete
THEN:
The system either proceeds with FDA hold conditions check or continues with standard processing
File: GCX016.cbl
GIVEN:
FDA hold status processing has been initiated
WHEN:
The system checks if cargo status analysis is complete
THEN:
If analysis is complete, proceed to FDA hold conditions check, otherwise continue with other status processing
β Consolidated Acceptance Criteria
- The system checks current cargo status from GCSUSS09 status segments → current cargo status information is retrieved and made available for export evaluation
- Manual release processing is initiated → the system shall check if the cargo is currently in a held status AND only proceed with manual release if cargo is held
- The system reads the current cargo status from cargo records and status segments → the current status is retrieved and made available for hold status evaluation
- The system checks the current cargo status → the system identifies whether PTT status is present and requires preservation
- If the current cargo status → the system determines whether cargo is currently at destination location for proper export handling
- The system checks the current cargo status → the system verifies the cargo record exists and has a valid status for cancellation processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CheckCurrentCargoStatus(["Start Step"])
E_CheckCurrentCargoStatus(["End Step"])
N_CheckCurrentCargoStatus_Node0{"The system checks current cargo
status from GCSUSS09 status segments"}:::decision N_CheckCurrentCargoStatus_Node0_action["Current cargo status information is
retrieved and made available for
export evaluation"]:::main N_CheckCurrentCargoStatus_Node0 -- Yes --> N_CheckCurrentCargoStatus_Node0_action N_CheckCurrentCargoStatus_Node0_action --> E_CheckCurrentCargoStatus S_CheckCurrentCargoStatus --> N_CheckCurrentCargoStatus_Node0 N_CheckCurrentCargoStatus_Node1{"Manual release processing is
initiated"}:::decision N_CheckCurrentCargoStatus_Node1_action["The system shall check if the cargo
is currently in a held status AND
only proceed with manual release if
cargo is held"]:::main N_CheckCurrentCargoStatus_Node1 -- Yes --> N_CheckCurrentCargoStatus_Node1_action N_CheckCurrentCargoStatus_Node1_action --> E_CheckCurrentCargoStatus N_CheckCurrentCargoStatus_Node0 -- No --> N_CheckCurrentCargoStatus_Node1 N_CheckCurrentCargoStatus_Node2{"The system reads the current cargo
status from cargo records and status
segments"}:::decision N_CheckCurrentCargoStatus_Node2_action["The current status is retrieved and
made available for hold status
evaluation"]:::main N_CheckCurrentCargoStatus_Node2 -- Yes --> N_CheckCurrentCargoStatus_Node2_action N_CheckCurrentCargoStatus_Node2_action --> E_CheckCurrentCargoStatus N_CheckCurrentCargoStatus_Node1 -- No --> N_CheckCurrentCargoStatus_Node2 N_CheckCurrentCargoStatus_Node3{"The system checks the current cargo
status"}:::decision N_CheckCurrentCargoStatus_Node3_action["The system identifies whether PTT
status is present and requires
preservation"]:::main N_CheckCurrentCargoStatus_Node3 -- Yes --> N_CheckCurrentCargoStatus_Node3_action N_CheckCurrentCargoStatus_Node3_action --> E_CheckCurrentCargoStatus N_CheckCurrentCargoStatus_Node2 -- No --> N_CheckCurrentCargoStatus_Node3 N_CheckCurrentCargoStatus_Node4{"The system evaluates the current
cargo status"}:::decision N_CheckCurrentCargoStatus_Node4_action["The system determines whether cargo
is currently at destination location
for proper export handling"]:::main N_CheckCurrentCargoStatus_Node4 -- Yes --> N_CheckCurrentCargoStatus_Node4_action N_CheckCurrentCargoStatus_Node4_action --> E_CheckCurrentCargoStatus N_CheckCurrentCargoStatus_Node3 -- No --> N_CheckCurrentCargoStatus_Node4 N_CheckCurrentCargoStatus_Node5{"The system checks the current cargo
status"}:::decision N_CheckCurrentCargoStatus_Node5_action["The system verifies the cargo
record exists and has a valid status
for cancellation processing"]:::main N_CheckCurrentCargoStatus_Node5 -- Yes --> N_CheckCurrentCargoStatus_Node5_action N_CheckCurrentCargoStatus_Node5_action --> E_CheckCurrentCargoStatus N_CheckCurrentCargoStatus_Node4 -- No --> N_CheckCurrentCargoStatus_Node5 N_CheckCurrentCargoStatus_Node5 -- No --> E_CheckCurrentCargoStatus
status from GCSUSS09 status segments"}:::decision N_CheckCurrentCargoStatus_Node0_action["Current cargo status information is
retrieved and made available for
export evaluation"]:::main N_CheckCurrentCargoStatus_Node0 -- Yes --> N_CheckCurrentCargoStatus_Node0_action N_CheckCurrentCargoStatus_Node0_action --> E_CheckCurrentCargoStatus S_CheckCurrentCargoStatus --> N_CheckCurrentCargoStatus_Node0 N_CheckCurrentCargoStatus_Node1{"Manual release processing is
initiated"}:::decision N_CheckCurrentCargoStatus_Node1_action["The system shall check if the cargo
is currently in a held status AND
only proceed with manual release if
cargo is held"]:::main N_CheckCurrentCargoStatus_Node1 -- Yes --> N_CheckCurrentCargoStatus_Node1_action N_CheckCurrentCargoStatus_Node1_action --> E_CheckCurrentCargoStatus N_CheckCurrentCargoStatus_Node0 -- No --> N_CheckCurrentCargoStatus_Node1 N_CheckCurrentCargoStatus_Node2{"The system reads the current cargo
status from cargo records and status
segments"}:::decision N_CheckCurrentCargoStatus_Node2_action["The current status is retrieved and
made available for hold status
evaluation"]:::main N_CheckCurrentCargoStatus_Node2 -- Yes --> N_CheckCurrentCargoStatus_Node2_action N_CheckCurrentCargoStatus_Node2_action --> E_CheckCurrentCargoStatus N_CheckCurrentCargoStatus_Node1 -- No --> N_CheckCurrentCargoStatus_Node2 N_CheckCurrentCargoStatus_Node3{"The system checks the current cargo
status"}:::decision N_CheckCurrentCargoStatus_Node3_action["The system identifies whether PTT
status is present and requires
preservation"]:::main N_CheckCurrentCargoStatus_Node3 -- Yes --> N_CheckCurrentCargoStatus_Node3_action N_CheckCurrentCargoStatus_Node3_action --> E_CheckCurrentCargoStatus N_CheckCurrentCargoStatus_Node2 -- No --> N_CheckCurrentCargoStatus_Node3 N_CheckCurrentCargoStatus_Node4{"The system evaluates the current
cargo status"}:::decision N_CheckCurrentCargoStatus_Node4_action["The system determines whether cargo
is currently at destination location
for proper export handling"]:::main N_CheckCurrentCargoStatus_Node4 -- Yes --> N_CheckCurrentCargoStatus_Node4_action N_CheckCurrentCargoStatus_Node4_action --> E_CheckCurrentCargoStatus N_CheckCurrentCargoStatus_Node3 -- No --> N_CheckCurrentCargoStatus_Node4 N_CheckCurrentCargoStatus_Node5{"The system checks the current cargo
status"}:::decision N_CheckCurrentCargoStatus_Node5_action["The system verifies the cargo
record exists and has a valid status
for cancellation processing"]:::main N_CheckCurrentCargoStatus_Node5 -- Yes --> N_CheckCurrentCargoStatus_Node5_action N_CheckCurrentCargoStatus_Node5_action --> E_CheckCurrentCargoStatus N_CheckCurrentCargoStatus_Node4 -- No --> N_CheckCurrentCargoStatus_Node5 N_CheckCurrentCargoStatus_Node5 -- No --> E_CheckCurrentCargoStatus
File: GCX016.cbl
GIVEN:
Cargo status analysis is confirmed complete
WHEN:
The system checks current cargo status from GCSUSS09 status segments
THEN:
- Current cargo status information is retrieved
- Made available for export evaluation
File: GCX016.cbl
GIVEN:
A cargo record exists in the system with a current status
WHEN:
Manual release processing is initiated
THEN:
- The system shall check if the cargo is currently in a held status
- Only proceed with manual release if cargo is held
File: GCX016.cbl
GIVEN:
A validated CPRS cargo with MRL disposition code
WHEN:
- The system reads the current cargo status from cargo records
- Status segments
THEN:
- The current status is retrieved
- Made available for hold status evaluation
File: GCX016.cbl
GIVEN:
A cargo record is being processed for status updates
WHEN:
The system checks the current cargo status
THEN:
- The system identifies whether ptt status is present
- Requires preservation
File: GCX016.cbl
GIVEN:
Cargo has been flagged for export processing
WHEN:
The system evaluates the current cargo status
THEN:
The system determines whether cargo is currently at destination location for proper export handling
File: GCX016.cbl
GIVEN:
An arrival cancellation request is received for a cargo record
WHEN:
The system checks the current cargo status
THEN:
- The system verifies the cargo record exists
- Has a valid status for cancellation processing
β Consolidated Acceptance Criteria
- If cargo readiness for export based on status conditions → export processing continues if cargo is ready, otherwise export conditions not met error is generated
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IsCargoReadyforExport(["Start Step"])
E_IsCargoReadyforExport(["End Step"])
N_IsCargoReadyforExport_Node0{"The system evaluates cargo
readiness for export based on status
conditions"}:::decision N_IsCargoReadyforExport_Node0_action["Export processing continues if
cargo is ready, otherwise export
conditions not met error is
generated"]:::main N_IsCargoReadyforExport_Node0 -- Yes --> N_IsCargoReadyforExport_Node0_action N_IsCargoReadyforExport_Node0_action --> E_IsCargoReadyforExport S_IsCargoReadyforExport --> N_IsCargoReadyforExport_Node0 N_IsCargoReadyforExport_Node0 -- No --> E_IsCargoReadyforExport
readiness for export based on status
conditions"}:::decision N_IsCargoReadyforExport_Node0_action["Export processing continues if
cargo is ready, otherwise export
conditions not met error is
generated"]:::main N_IsCargoReadyforExport_Node0 -- Yes --> N_IsCargoReadyforExport_Node0_action N_IsCargoReadyforExport_Node0_action --> E_IsCargoReadyforExport S_IsCargoReadyforExport --> N_IsCargoReadyforExport_Node0 N_IsCargoReadyforExport_Node0 -- No --> E_IsCargoReadyforExport
File: GCX016.cbl
GIVEN:
Current cargo status has been retrieved from status segments
WHEN:
The system evaluates cargo readiness for export based on status conditions
THEN:
Export processing continues if cargo is ready, otherwise export conditions not met error is generated
β Consolidated Acceptance Criteria
- The system clears destination index RT076 → destination index is cleared and cargo is no longer tied to specific destination
- The system processes the full release → the system clears the RT076 destination index field
- The system processes destination index cleanup → the RT076 destination index is cleared from the cargo record
- The system processes the manual release → clear the RT076 destination index to remove destination constraints
- The system processes the destination index update → the RT076 destination index is cleared to remove routing restrictions
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ClearDestinationIndexRT076(["Start Step"])
E_ClearDestinationIndexRT076(["End Step"])
N_ClearDestinationIndexRT076_Node0{"The system clears destination index
RT076"}:::decision N_ClearDestinationIndexRT076_Node0_action["Destination index is cleared and
cargo is no longer tied to specific
destination"]:::main N_ClearDestinationIndexRT076_Node0 -- Yes --> N_ClearDestinationIndexRT076_Node0_action N_ClearDestinationIndexRT076_Node0_action --> E_ClearDestinationIndexRT076 S_ClearDestinationIndexRT076 --> N_ClearDestinationIndexRT076_Node0 N_ClearDestinationIndexRT076_Node1{"The system processes the full
release"}:::decision N_ClearDestinationIndexRT076_Node1_action["The system clears the RT076
destination index field"]:::main N_ClearDestinationIndexRT076_Node1 -- Yes --> N_ClearDestinationIndexRT076_Node1_action N_ClearDestinationIndexRT076_Node1_action --> E_ClearDestinationIndexRT076 N_ClearDestinationIndexRT076_Node0 -- No --> N_ClearDestinationIndexRT076_Node1 N_ClearDestinationIndexRT076_Node2{"The system processes destination
index cleanup"}:::decision N_ClearDestinationIndexRT076_Node2_action["The RT076 destination index is
cleared from the cargo record"]:::main N_ClearDestinationIndexRT076_Node2 -- Yes --> N_ClearDestinationIndexRT076_Node2_action N_ClearDestinationIndexRT076_Node2_action --> E_ClearDestinationIndexRT076 N_ClearDestinationIndexRT076_Node1 -- No --> N_ClearDestinationIndexRT076_Node2 N_ClearDestinationIndexRT076_Node3{"The system processes the manual
release"}:::decision N_ClearDestinationIndexRT076_Node3_action["Clear the RT076 destination index
to remove destination constraints"]:::main N_ClearDestinationIndexRT076_Node3 -- Yes --> N_ClearDestinationIndexRT076_Node3_action N_ClearDestinationIndexRT076_Node3_action --> E_ClearDestinationIndexRT076 N_ClearDestinationIndexRT076_Node2 -- No --> N_ClearDestinationIndexRT076_Node3 N_ClearDestinationIndexRT076_Node4{"The system processes the
destination index update"}:::decision N_ClearDestinationIndexRT076_Node4_action["The RT076 destination index is
cleared to remove routing
restrictions"]:::main N_ClearDestinationIndexRT076_Node4 -- Yes --> N_ClearDestinationIndexRT076_Node4_action N_ClearDestinationIndexRT076_Node4_action --> E_ClearDestinationIndexRT076 N_ClearDestinationIndexRT076_Node3 -- No --> N_ClearDestinationIndexRT076_Node4 N_ClearDestinationIndexRT076_Node4 -- No --> E_ClearDestinationIndexRT076
RT076"}:::decision N_ClearDestinationIndexRT076_Node0_action["Destination index is cleared and
cargo is no longer tied to specific
destination"]:::main N_ClearDestinationIndexRT076_Node0 -- Yes --> N_ClearDestinationIndexRT076_Node0_action N_ClearDestinationIndexRT076_Node0_action --> E_ClearDestinationIndexRT076 S_ClearDestinationIndexRT076 --> N_ClearDestinationIndexRT076_Node0 N_ClearDestinationIndexRT076_Node1{"The system processes the full
release"}:::decision N_ClearDestinationIndexRT076_Node1_action["The system clears the RT076
destination index field"]:::main N_ClearDestinationIndexRT076_Node1 -- Yes --> N_ClearDestinationIndexRT076_Node1_action N_ClearDestinationIndexRT076_Node1_action --> E_ClearDestinationIndexRT076 N_ClearDestinationIndexRT076_Node0 -- No --> N_ClearDestinationIndexRT076_Node1 N_ClearDestinationIndexRT076_Node2{"The system processes destination
index cleanup"}:::decision N_ClearDestinationIndexRT076_Node2_action["The RT076 destination index is
cleared from the cargo record"]:::main N_ClearDestinationIndexRT076_Node2 -- Yes --> N_ClearDestinationIndexRT076_Node2_action N_ClearDestinationIndexRT076_Node2_action --> E_ClearDestinationIndexRT076 N_ClearDestinationIndexRT076_Node1 -- No --> N_ClearDestinationIndexRT076_Node2 N_ClearDestinationIndexRT076_Node3{"The system processes the manual
release"}:::decision N_ClearDestinationIndexRT076_Node3_action["Clear the RT076 destination index
to remove destination constraints"]:::main N_ClearDestinationIndexRT076_Node3 -- Yes --> N_ClearDestinationIndexRT076_Node3_action N_ClearDestinationIndexRT076_Node3_action --> E_ClearDestinationIndexRT076 N_ClearDestinationIndexRT076_Node2 -- No --> N_ClearDestinationIndexRT076_Node3 N_ClearDestinationIndexRT076_Node4{"The system processes the
destination index update"}:::decision N_ClearDestinationIndexRT076_Node4_action["The RT076 destination index is
cleared to remove routing
restrictions"]:::main N_ClearDestinationIndexRT076_Node4 -- Yes --> N_ClearDestinationIndexRT076_Node4_action N_ClearDestinationIndexRT076_Node4_action --> E_ClearDestinationIndexRT076 N_ClearDestinationIndexRT076_Node3 -- No --> N_ClearDestinationIndexRT076_Node4 N_ClearDestinationIndexRT076_Node4 -- No --> E_ClearDestinationIndexRT076
File: GCX016.cbl
GIVEN:
Export status flag has been set for cargo
WHEN:
The system clears destination index RT076
THEN:
- Destination index is cleared
- Cargo is no longer tied to specific destination
File: GCX016.cbl
GIVEN:
Cargo has achieved full release status
WHEN:
The system processes the full release
THEN:
The system clears the RT076 destination index field
File: GCX016.cbl
GIVEN:
Cargo has been assigned export status flag
WHEN:
The system processes destination index cleanup
THEN:
The RT076 destination index is cleared from the cargo record
File: GCX016.cbl
GIVEN:
Manual release authority is validated for CPRS cargo
WHEN:
The system processes the manual release
THEN:
Clear the RT076 destination index to remove destination constraints
File: GCX016.cbl
GIVEN:
Cargo that has achieved full release status
WHEN:
The system processes the destination index update
THEN:
The RT076 destination index is cleared to remove routing restrictions
β Consolidated Acceptance Criteria
- The system logs export status change → export status change is recorded in system logs for audit trail
- The system performs audit logging → an export status change entry is logged with cargo details and timestamp
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogExportStatusChange(["Start Step"])
E_LogExportStatusChange(["End Step"])
N_LogExportStatusChange_Node0{"The system logs export status
change"}:::decision N_LogExportStatusChange_Node0_action["Export status change is recorded in
system logs for audit trail"]:::main N_LogExportStatusChange_Node0 -- Yes --> N_LogExportStatusChange_Node0_action N_LogExportStatusChange_Node0_action --> E_LogExportStatusChange S_LogExportStatusChange --> N_LogExportStatusChange_Node0 N_LogExportStatusChange_Node1{"The system performs audit logging"}:::decision N_LogExportStatusChange_Node1_action["An export status change entry is
logged with cargo details and
timestamp"]:::main N_LogExportStatusChange_Node1 -- Yes --> N_LogExportStatusChange_Node1_action N_LogExportStatusChange_Node1_action --> E_LogExportStatusChange N_LogExportStatusChange_Node0 -- No --> N_LogExportStatusChange_Node1 N_LogExportStatusChange_Node1 -- No --> E_LogExportStatusChange
change"}:::decision N_LogExportStatusChange_Node0_action["Export status change is recorded in
system logs for audit trail"]:::main N_LogExportStatusChange_Node0 -- Yes --> N_LogExportStatusChange_Node0_action N_LogExportStatusChange_Node0_action --> E_LogExportStatusChange S_LogExportStatusChange --> N_LogExportStatusChange_Node0 N_LogExportStatusChange_Node1{"The system performs audit logging"}:::decision N_LogExportStatusChange_Node1_action["An export status change entry is
logged with cargo details and
timestamp"]:::main N_LogExportStatusChange_Node1 -- Yes --> N_LogExportStatusChange_Node1_action N_LogExportStatusChange_Node1_action --> E_LogExportStatusChange N_LogExportStatusChange_Node0 -- No --> N_LogExportStatusChange_Node1 N_LogExportStatusChange_Node1 -- No --> E_LogExportStatusChange
File: GCX016.cbl
GIVEN:
Cargo record status has been updated with export information
WHEN:
The system logs export status change
THEN:
Export status change is recorded in system logs for audit trail
File: GCX016.cbl
GIVEN:
Export processing complete flag has been set
WHEN:
The system performs audit logging
THEN:
- An export status change entry is logged with cargo details
- Timestamp
β Consolidated Acceptance Criteria
- The system checks if Canadian manifest coordination is required → processing branches to Canadian manifest handling if required, otherwise continues to database update
- The system checks if cargo has Canadian manifest cross-references → if Canadian manifest coordination is required, proceed to Canadian manifest processing, otherwise proceed to message routing
- If if Canadian manifest coordination is needed → the system should proceed with Canadian manifest processing if coordination is required, otherwise skip Canadian processing
- If if Canadian manifest coordination is needed → the system should proceed to find matching Canadian manifests if coordination is required, otherwise skip Canadian processing
- If if Canadian manifest coordination is needed → canadian manifest processing is initiated if cargo is manually released or meets specific release criteria
- If Canadian manifest coordination requirements → if cargo requires Canadian manifest coordination, proceed to find matching manifests, otherwise proceed directly to status update
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CanadianManifestCoordinationRequired(["Start Step"])
E_CanadianManifestCoordinationRequired(["End Step"])
N_CanadianManifestCoordinationRequired_Node0{"The system checks if Canadian
manifest coordination is required"}:::decision N_CanadianManifestCoordinationRequired_Node0_action["Processing branches to Canadian
manifest handling if required,
otherwise continues to database
update"]:::main N_CanadianManifestCoordinationRequired_Node0 -- Yes --> N_CanadianManifestCoordinationRequired_Node0_action N_CanadianManifestCoordinationRequired_Node0_action --> E_CanadianManifestCoordinationRequired S_CanadianManifestCoordinationRequired --> N_CanadianManifestCoordinationRequired_Node0 N_CanadianManifestCoordinationRequired_Node1{"The system checks if cargo has
Canadian manifest cross-references"}:::decision N_CanadianManifestCoordinationRequired_Node1_action["If Canadian manifest coordination
is required, proceed to Canadian
manifest processing, otherwise
proceed to message routing"]:::main N_CanadianManifestCoordinationRequired_Node1 -- Yes --> N_CanadianManifestCoordinationRequired_Node1_action N_CanadianManifestCoordinationRequired_Node1_action --> E_CanadianManifestCoordinationRequired N_CanadianManifestCoordinationRequired_Node0 -- No --> N_CanadianManifestCoordinationRequired_Node1 N_CanadianManifestCoordinationRequired_Node2{"The system evaluates if Canadian
manifest coordination is needed"}:::decision N_CanadianManifestCoordinationRequired_Node2_action["The system should proceed with
Canadian manifest processing if
coordination is required, otherwise
skip Canadian processing"]:::main N_CanadianManifestCoordinationRequired_Node2 -- Yes --> N_CanadianManifestCoordinationRequired_Node2_action N_CanadianManifestCoordinationRequired_Node2_action --> E_CanadianManifestCoordinationRequired N_CanadianManifestCoordinationRequired_Node1 -- No --> N_CanadianManifestCoordinationRequired_Node2 N_CanadianManifestCoordinationRequired_Node3{"the system evaluates if Canadian
manifest coordination is needed"}:::decision N_CanadianManifestCoordinationRequired_Node3_action["the system should proceed to find
matching Canadian manifests if
coordination is required, otherwise
skip Canadian processing"]:::main N_CanadianManifestCoordinationRequired_Node3 -- Yes --> N_CanadianManifestCoordinationRequired_Node3_action N_CanadianManifestCoordinationRequired_Node3_action --> E_CanadianManifestCoordinationRequired N_CanadianManifestCoordinationRequired_Node2 -- No --> N_CanadianManifestCoordinationRequired_Node3 N_CanadianManifestCoordinationRequired_Node4{"The system evaluates if Canadian
manifest coordination is needed"}:::decision N_CanadianManifestCoordinationRequired_Node4_action["Canadian manifest processing is
initiated if cargo is manually
released or meets specific release
criteria"]:::main N_CanadianManifestCoordinationRequired_Node4 -- Yes --> N_CanadianManifestCoordinationRequired_Node4_action N_CanadianManifestCoordinationRequired_Node4_action --> E_CanadianManifestCoordinationRequired N_CanadianManifestCoordinationRequired_Node3 -- No --> N_CanadianManifestCoordinationRequired_Node4 N_CanadianManifestCoordinationRequired_Node5{"The system evaluates Canadian
manifest coordination requirements"}:::decision N_CanadianManifestCoordinationRequired_Node5_action["If cargo requires Canadian manifest
coordination, proceed to find
matching manifests, otherwise
proceed directly to status update"]:::main N_CanadianManifestCoordinationRequired_Node5 -- Yes --> N_CanadianManifestCoordinationRequired_Node5_action N_CanadianManifestCoordinationRequired_Node5_action --> E_CanadianManifestCoordinationRequired N_CanadianManifestCoordinationRequired_Node4 -- No --> N_CanadianManifestCoordinationRequired_Node5 N_CanadianManifestCoordinationRequired_Node5 -- No --> E_CanadianManifestCoordinationRequired
manifest coordination is required"}:::decision N_CanadianManifestCoordinationRequired_Node0_action["Processing branches to Canadian
manifest handling if required,
otherwise continues to database
update"]:::main N_CanadianManifestCoordinationRequired_Node0 -- Yes --> N_CanadianManifestCoordinationRequired_Node0_action N_CanadianManifestCoordinationRequired_Node0_action --> E_CanadianManifestCoordinationRequired S_CanadianManifestCoordinationRequired --> N_CanadianManifestCoordinationRequired_Node0 N_CanadianManifestCoordinationRequired_Node1{"The system checks if cargo has
Canadian manifest cross-references"}:::decision N_CanadianManifestCoordinationRequired_Node1_action["If Canadian manifest coordination
is required, proceed to Canadian
manifest processing, otherwise
proceed to message routing"]:::main N_CanadianManifestCoordinationRequired_Node1 -- Yes --> N_CanadianManifestCoordinationRequired_Node1_action N_CanadianManifestCoordinationRequired_Node1_action --> E_CanadianManifestCoordinationRequired N_CanadianManifestCoordinationRequired_Node0 -- No --> N_CanadianManifestCoordinationRequired_Node1 N_CanadianManifestCoordinationRequired_Node2{"The system evaluates if Canadian
manifest coordination is needed"}:::decision N_CanadianManifestCoordinationRequired_Node2_action["The system should proceed with
Canadian manifest processing if
coordination is required, otherwise
skip Canadian processing"]:::main N_CanadianManifestCoordinationRequired_Node2 -- Yes --> N_CanadianManifestCoordinationRequired_Node2_action N_CanadianManifestCoordinationRequired_Node2_action --> E_CanadianManifestCoordinationRequired N_CanadianManifestCoordinationRequired_Node1 -- No --> N_CanadianManifestCoordinationRequired_Node2 N_CanadianManifestCoordinationRequired_Node3{"the system evaluates if Canadian
manifest coordination is needed"}:::decision N_CanadianManifestCoordinationRequired_Node3_action["the system should proceed to find
matching Canadian manifests if
coordination is required, otherwise
skip Canadian processing"]:::main N_CanadianManifestCoordinationRequired_Node3 -- Yes --> N_CanadianManifestCoordinationRequired_Node3_action N_CanadianManifestCoordinationRequired_Node3_action --> E_CanadianManifestCoordinationRequired N_CanadianManifestCoordinationRequired_Node2 -- No --> N_CanadianManifestCoordinationRequired_Node3 N_CanadianManifestCoordinationRequired_Node4{"The system evaluates if Canadian
manifest coordination is needed"}:::decision N_CanadianManifestCoordinationRequired_Node4_action["Canadian manifest processing is
initiated if cargo is manually
released or meets specific release
criteria"]:::main N_CanadianManifestCoordinationRequired_Node4 -- Yes --> N_CanadianManifestCoordinationRequired_Node4_action N_CanadianManifestCoordinationRequired_Node4_action --> E_CanadianManifestCoordinationRequired N_CanadianManifestCoordinationRequired_Node3 -- No --> N_CanadianManifestCoordinationRequired_Node4 N_CanadianManifestCoordinationRequired_Node5{"The system evaluates Canadian
manifest coordination requirements"}:::decision N_CanadianManifestCoordinationRequired_Node5_action["If cargo requires Canadian manifest
coordination, proceed to find
matching manifests, otherwise
proceed directly to status update"]:::main N_CanadianManifestCoordinationRequired_Node5 -- Yes --> N_CanadianManifestCoordinationRequired_Node5_action N_CanadianManifestCoordinationRequired_Node5_action --> E_CanadianManifestCoordinationRequired N_CanadianManifestCoordinationRequired_Node4 -- No --> N_CanadianManifestCoordinationRequired_Node5 N_CanadianManifestCoordinationRequired_Node5 -- No --> E_CanadianManifestCoordinationRequired
File: GCX016.cbl
GIVEN:
Export status change has been logged for cargo
WHEN:
The system checks if Canadian manifest coordination is required
THEN:
Processing branches to Canadian manifest handling if required, otherwise continues to database update
File: GCX016.cbl
GIVEN:
Destination index has been re-established for unreleased cargo
WHEN:
The system checks if cargo has Canadian manifest cross-references
THEN:
If Canadian manifest coordination is required, proceed to Canadian manifest processing, otherwise proceed to message routing
File: GCX016.cbl
GIVEN:
A US cargo has been released
WHEN:
The system evaluates if Canadian manifest coordination is needed
THEN:
The system should proceed with Canadian manifest processing if coordination is required, otherwise skip Canadian processing
File: GCX016.cbl
GIVEN:
US cargo has been released
WHEN:
the system evaluates if Canadian manifest coordination is needed
THEN:
the system should proceed to find matching Canadian manifests if coordination is required, otherwise skip Canadian processing
File: GCX016.cbl
GIVEN:
A US cargo record has been processed for release
WHEN:
The system evaluates if Canadian manifest coordination is needed
THEN:
Canadian manifest processing is initiated if cargo is manually released or meets specific release criteria
File: GCX016.cbl
GIVEN:
Cargo that has been fully released
WHEN:
The system evaluates Canadian manifest coordination requirements
THEN:
If cargo requires Canadian manifest coordination, proceed to find matching manifests, otherwise proceed directly to status update
β Consolidated Acceptance Criteria
- The system updates database with export status → export status changes are permanently stored in the database
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UpdateDatabasewithExportStatus(["Start Step"])
E_UpdateDatabasewithExportStatus(["End Step"])
N_UpdateDatabasewithExportStatus_Node0{"The system updates database with
export status"}:::decision N_UpdateDatabasewithExportStatus_Node0_action["Export status changes are
permanently stored in the database"]:::main N_UpdateDatabasewithExportStatus_Node0 -- Yes --> N_UpdateDatabasewithExportStatus_Node0_action N_UpdateDatabasewithExportStatus_Node0_action --> E_UpdateDatabasewithExportStatus S_UpdateDatabasewithExportStatus --> N_UpdateDatabasewithExportStatus_Node0 N_UpdateDatabasewithExportStatus_Node0 -- No --> E_UpdateDatabasewithExportStatus
export status"}:::decision N_UpdateDatabasewithExportStatus_Node0_action["Export status changes are
permanently stored in the database"]:::main N_UpdateDatabasewithExportStatus_Node0 -- Yes --> N_UpdateDatabasewithExportStatus_Node0_action N_UpdateDatabasewithExportStatus_Node0_action --> E_UpdateDatabasewithExportStatus S_UpdateDatabasewithExportStatus --> N_UpdateDatabasewithExportStatus_Node0 N_UpdateDatabasewithExportStatus_Node0 -- No --> E_UpdateDatabasewithExportStatus
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
Cross-border coordination is complete or not required
WHEN:
The system updates database with export status
THEN:
Export status changes are permanently stored in the database
β Consolidated Acceptance Criteria
- The system prepares export notification message → export notification message is formatted and ready for routing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_PrepareExportNotificationMessage(["Start Step"])
E_PrepareExportNotificationMessage(["End Step"])
N_PrepareExportNotificationMessage_Node0{"The system prepares export
notification message"}:::decision N_PrepareExportNotificationMessage_Node0_action["Export notification message is
formatted and ready for routing"]:::main N_PrepareExportNotificationMessage_Node0 -- Yes --> N_PrepareExportNotificationMessage_Node0_action N_PrepareExportNotificationMessage_Node0_action --> E_PrepareExportNotificationMessage S_PrepareExportNotificationMessage --> N_PrepareExportNotificationMessage_Node0 N_PrepareExportNotificationMessage_Node0 -- No --> E_PrepareExportNotificationMessage
notification message"}:::decision N_PrepareExportNotificationMessage_Node0_action["Export notification message is
formatted and ready for routing"]:::main N_PrepareExportNotificationMessage_Node0 -- Yes --> N_PrepareExportNotificationMessage_Node0_action N_PrepareExportNotificationMessage_Node0_action --> E_PrepareExportNotificationMessage S_PrepareExportNotificationMessage --> N_PrepareExportNotificationMessage_Node0 N_PrepareExportNotificationMessage_Node0 -- No --> E_PrepareExportNotificationMessage
File: GCX016.cbl
GIVEN:
Database has been updated with export status
WHEN:
The system prepares export notification message
THEN:
- Export notification message is formatted
- Ready for routing
β Consolidated Acceptance Criteria
- The system routes export message to USEXP basket → export notification message is delivered to USEXP basket for further processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RouteExportMessagetoUSEXPBasket(["Start Step"])
E_RouteExportMessagetoUSEXPBasket(["End Step"])
N_RouteExportMessagetoUSEXPBasket_Node0{"The system routes export message to
USEXP basket"}:::decision N_RouteExportMessagetoUSEXPBasket_Node0_action["Export notification message is
delivered to USEXP basket for
further processing"]:::main N_RouteExportMessagetoUSEXPBasket_Node0 -- Yes --> N_RouteExportMessagetoUSEXPBasket_Node0_action N_RouteExportMessagetoUSEXPBasket_Node0_action --> E_RouteExportMessagetoUSEXPBasket S_RouteExportMessagetoUSEXPBasket --> N_RouteExportMessagetoUSEXPBasket_Node0 N_RouteExportMessagetoUSEXPBasket_Node0 -- No --> E_RouteExportMessagetoUSEXPBasket
USEXP basket"}:::decision N_RouteExportMessagetoUSEXPBasket_Node0_action["Export notification message is
delivered to USEXP basket for
further processing"]:::main N_RouteExportMessagetoUSEXPBasket_Node0 -- Yes --> N_RouteExportMessagetoUSEXPBasket_Node0_action N_RouteExportMessagetoUSEXPBasket_Node0_action --> E_RouteExportMessagetoUSEXPBasket S_RouteExportMessagetoUSEXPBasket --> N_RouteExportMessagetoUSEXPBasket_Node0 N_RouteExportMessagetoUSEXPBasket_Node0 -- No --> E_RouteExportMessagetoUSEXPBasket
File: GCX016.cbl
GIVEN:
Export notification message has been prepared
WHEN:
The system routes export message to USEXP basket
THEN:
Export notification message is delivered to USEXP basket for further processing
β Consolidated Acceptance Criteria
- The system completes export status processing → export status processing workflow is finished and control returns to calling process
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExportStatusProcessingComplete(["Start Step"])
E_ExportStatusProcessingComplete(["End Step"])
N_ExportStatusProcessingComplete_Node0{"The system completes export status
processing"}:::decision N_ExportStatusProcessingComplete_Node0_action["Export status processing workflow
is finished and control returns to
calling process"]:::main N_ExportStatusProcessingComplete_Node0 -- Yes --> N_ExportStatusProcessingComplete_Node0_action N_ExportStatusProcessingComplete_Node0_action --> E_ExportStatusProcessingComplete S_ExportStatusProcessingComplete --> N_ExportStatusProcessingComplete_Node0 N_ExportStatusProcessingComplete_Node0 -- No --> E_ExportStatusProcessingComplete
processing"}:::decision N_ExportStatusProcessingComplete_Node0_action["Export status processing workflow
is finished and control returns to
calling process"]:::main N_ExportStatusProcessingComplete_Node0 -- Yes --> N_ExportStatusProcessingComplete_Node0_action N_ExportStatusProcessingComplete_Node0_action --> E_ExportStatusProcessingComplete S_ExportStatusProcessingComplete --> N_ExportStatusProcessingComplete_Node0 N_ExportStatusProcessingComplete_Node0 -- No --> E_ExportStatusProcessingComplete
File: GCX016.cbl
GIVEN:
Export message has been routed successfully or error conditions have been handled
WHEN:
The system completes export status processing
THEN:
- Export status processing workflow is finished
- Control returns to calling process
β Consolidated Acceptance Criteria
- Export conditions are not met → error condition is set and export processing terminates without status changes
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ErrorExportConditionsNotMet(["Start Step"])
E_ErrorExportConditionsNotMet(["End Step"])
N_ErrorExportConditionsNotMet_Node0{"Export conditions are not met"}:::decision
N_ErrorExportConditionsNotMet_Node0_action["Error condition is set and export
processing terminates without status
changes"]:::main N_ErrorExportConditionsNotMet_Node0 -- Yes --> N_ErrorExportConditionsNotMet_Node0_action N_ErrorExportConditionsNotMet_Node0_action --> E_ErrorExportConditionsNotMet S_ErrorExportConditionsNotMet --> N_ErrorExportConditionsNotMet_Node0 N_ErrorExportConditionsNotMet_Node0 -- No --> E_ErrorExportConditionsNotMet
processing terminates without status
changes"]:::main N_ErrorExportConditionsNotMet_Node0 -- Yes --> N_ErrorExportConditionsNotMet_Node0_action N_ErrorExportConditionsNotMet_Node0_action --> E_ErrorExportConditionsNotMet S_ErrorExportConditionsNotMet --> N_ErrorExportConditionsNotMet_Node0 N_ErrorExportConditionsNotMet_Node0 -- No --> E_ErrorExportConditionsNotMet
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
Cargo status analysis is incomplete or cargo is not ready for export
WHEN:
Export conditions are not met
THEN:
- Error condition is set
- Export processing terminates without status changes
β Consolidated Acceptance Criteria
- If the message type and cargo current status → the system routes to either arrival cancellation processing or export cancellation processing based on the evaluation criteria
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CancellationType(["Start Step"])
E_CancellationType(["End Step"])
N_CancellationType_Node0{"The system evaluates the message
type and cargo current status"}:::decision N_CancellationType_Node0_action["The system routes to either arrival
cancellation processing or export
cancellation processing based on the
evaluation criteria"]:::main N_CancellationType_Node0 -- Yes --> N_CancellationType_Node0_action N_CancellationType_Node0_action --> E_CancellationType S_CancellationType --> N_CancellationType_Node0 N_CancellationType_Node0 -- No --> E_CancellationType
type and cargo current status"}:::decision N_CancellationType_Node0_action["The system routes to either arrival
cancellation processing or export
cancellation processing based on the
evaluation criteria"]:::main N_CancellationType_Node0 -- Yes --> N_CancellationType_Node0_action N_CancellationType_Node0_action --> E_CancellationType S_CancellationType --> N_CancellationType_Node0 N_CancellationType_Node0 -- No --> E_CancellationType
File: GCX016.cbl
GIVEN:
A cancellation processing request is received with disposition code and cargo status information
WHEN:
- The system evaluates the message type
- Cargo current status
THEN:
The system routes to either arrival cancellation processing or export cancellation processing based on the evaluation criteria
β Consolidated Acceptance Criteria
- The system processes the arrival cancellation → the system prepares arrival cancellation message and sends it via Merlin messaging system
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ProcessArrivalCancellation(["Start Step"])
E_ProcessArrivalCancellation(["End Step"])
N_ProcessArrivalCancellation_Node0{"The system processes the arrival
cancellation"}:::decision N_ProcessArrivalCancellation_Node0_action["The system prepares arrival
cancellation message and sends it
via Merlin messaging system"]:::main N_ProcessArrivalCancellation_Node0 -- Yes --> N_ProcessArrivalCancellation_Node0_action N_ProcessArrivalCancellation_Node0_action --> E_ProcessArrivalCancellation S_ProcessArrivalCancellation --> N_ProcessArrivalCancellation_Node0 N_ProcessArrivalCancellation_Node0 -- No --> E_ProcessArrivalCancellation
cancellation"}:::decision N_ProcessArrivalCancellation_Node0_action["The system prepares arrival
cancellation message and sends it
via Merlin messaging system"]:::main N_ProcessArrivalCancellation_Node0 -- Yes --> N_ProcessArrivalCancellation_Node0_action N_ProcessArrivalCancellation_Node0_action --> E_ProcessArrivalCancellation S_ProcessArrivalCancellation --> N_ProcessArrivalCancellation_Node0 N_ProcessArrivalCancellation_Node0 -- No --> E_ProcessArrivalCancellation
File: GCX016.cbl
GIVEN:
An arrival cancellation request is identified for cargo
WHEN:
The system processes the arrival cancellation
THEN:
- The system prepares arrival cancellation message
- Sends it via merlin messaging system
β Consolidated Acceptance Criteria
- The system processes the export cancellation → the system prepares export cancellation message and sends it via Merlin messaging system
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ProcessExportCancellation(["Start Step"])
E_ProcessExportCancellation(["End Step"])
N_ProcessExportCancellation_Node0{"The system processes the export
cancellation"}:::decision N_ProcessExportCancellation_Node0_action["The system prepares export
cancellation message and sends it
via Merlin messaging system"]:::main N_ProcessExportCancellation_Node0 -- Yes --> N_ProcessExportCancellation_Node0_action N_ProcessExportCancellation_Node0_action --> E_ProcessExportCancellation S_ProcessExportCancellation --> N_ProcessExportCancellation_Node0 N_ProcessExportCancellation_Node0 -- No --> E_ProcessExportCancellation
cancellation"}:::decision N_ProcessExportCancellation_Node0_action["The system prepares export
cancellation message and sends it
via Merlin messaging system"]:::main N_ProcessExportCancellation_Node0 -- Yes --> N_ProcessExportCancellation_Node0_action N_ProcessExportCancellation_Node0_action --> E_ProcessExportCancellation S_ProcessExportCancellation --> N_ProcessExportCancellation_Node0 N_ProcessExportCancellation_Node0 -- No --> E_ProcessExportCancellation
File: GCX016.cbl
GIVEN:
An export cancellation request is identified for cargo
WHEN:
The system processes the export cancellation
THEN:
- The system prepares export cancellation message
- Sends it via merlin messaging system
β Consolidated Acceptance Criteria
- The system needs to restore destination routing → the system re-establishes destination index and updates routing information to restore proper cargo destination tracking
- The system calls B585-SET-RT076-DEST-INDEX to restore destination information → destination index is re-established with appropriate bond dates and routing information for the unreleased cargo
- Destination index re-establishment is required → the system re-establishes the destination index for the cargo record
- The cargo requires destination hold or routing information to be restored → the system re-establishes the destination index and routing information from the cargo's SD segment data
- The system needs to restore destination routing capability → destination index is re-established based on current cargo status and routing requirements
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ReestablishDestinationIndex(["Start Step"])
E_ReestablishDestinationIndex(["End Step"])
N_ReestablishDestinationIndex_Node0{"The system needs to restore
destination routing"}:::decision N_ReestablishDestinationIndex_Node0_action["The system re-establishes
destination index and updates
routing information to restore
proper cargo destination tracking"]:::main N_ReestablishDestinationIndex_Node0 -- Yes --> N_ReestablishDestinationIndex_Node0_action N_ReestablishDestinationIndex_Node0_action --> E_ReestablishDestinationIndex S_ReestablishDestinationIndex --> N_ReestablishDestinationIndex_Node0 N_ReestablishDestinationIndex_Node1{"The system calls
B585-SET-RT076-DEST-INDEX to restore
destination information"}:::decision N_ReestablishDestinationIndex_Node1_action["Destination index is re-established
with appropriate bond dates and
routing information for the
unreleased cargo"]:::main N_ReestablishDestinationIndex_Node1 -- Yes --> N_ReestablishDestinationIndex_Node1_action N_ReestablishDestinationIndex_Node1_action --> E_ReestablishDestinationIndex N_ReestablishDestinationIndex_Node0 -- No --> N_ReestablishDestinationIndex_Node1 N_ReestablishDestinationIndex_Node2{"Destination index re-establishment
is required"}:::decision N_ReestablishDestinationIndex_Node2_action["The system re-establishes the
destination index for the cargo
record"]:::main N_ReestablishDestinationIndex_Node2 -- Yes --> N_ReestablishDestinationIndex_Node2_action N_ReestablishDestinationIndex_Node2_action --> E_ReestablishDestinationIndex N_ReestablishDestinationIndex_Node1 -- No --> N_ReestablishDestinationIndex_Node2 N_ReestablishDestinationIndex_Node3{"The cargo requires destination hold
or routing information to be
restored"}:::decision N_ReestablishDestinationIndex_Node3_action["The system re-establishes the
destination index and routing
information from the cargo s SD
segment data"]:::main N_ReestablishDestinationIndex_Node3 -- Yes --> N_ReestablishDestinationIndex_Node3_action N_ReestablishDestinationIndex_Node3_action --> E_ReestablishDestinationIndex N_ReestablishDestinationIndex_Node2 -- No --> N_ReestablishDestinationIndex_Node3 N_ReestablishDestinationIndex_Node4{"The system needs to restore
destination routing capability"}:::decision N_ReestablishDestinationIndex_Node4_action["Destination index is re-established
based on current cargo status and
routing requirements"]:::main N_ReestablishDestinationIndex_Node4 -- Yes --> N_ReestablishDestinationIndex_Node4_action N_ReestablishDestinationIndex_Node4_action --> E_ReestablishDestinationIndex N_ReestablishDestinationIndex_Node3 -- No --> N_ReestablishDestinationIndex_Node4 N_ReestablishDestinationIndex_Node4 -- No --> E_ReestablishDestinationIndex
destination routing"}:::decision N_ReestablishDestinationIndex_Node0_action["The system re-establishes
destination index and updates
routing information to restore
proper cargo destination tracking"]:::main N_ReestablishDestinationIndex_Node0 -- Yes --> N_ReestablishDestinationIndex_Node0_action N_ReestablishDestinationIndex_Node0_action --> E_ReestablishDestinationIndex S_ReestablishDestinationIndex --> N_ReestablishDestinationIndex_Node0 N_ReestablishDestinationIndex_Node1{"The system calls
B585-SET-RT076-DEST-INDEX to restore
destination information"}:::decision N_ReestablishDestinationIndex_Node1_action["Destination index is re-established
with appropriate bond dates and
routing information for the
unreleased cargo"]:::main N_ReestablishDestinationIndex_Node1 -- Yes --> N_ReestablishDestinationIndex_Node1_action N_ReestablishDestinationIndex_Node1_action --> E_ReestablishDestinationIndex N_ReestablishDestinationIndex_Node0 -- No --> N_ReestablishDestinationIndex_Node1 N_ReestablishDestinationIndex_Node2{"Destination index re-establishment
is required"}:::decision N_ReestablishDestinationIndex_Node2_action["The system re-establishes the
destination index for the cargo
record"]:::main N_ReestablishDestinationIndex_Node2 -- Yes --> N_ReestablishDestinationIndex_Node2_action N_ReestablishDestinationIndex_Node2_action --> E_ReestablishDestinationIndex N_ReestablishDestinationIndex_Node1 -- No --> N_ReestablishDestinationIndex_Node2 N_ReestablishDestinationIndex_Node3{"The cargo requires destination hold
or routing information to be
restored"}:::decision N_ReestablishDestinationIndex_Node3_action["The system re-establishes the
destination index and routing
information from the cargo s SD
segment data"]:::main N_ReestablishDestinationIndex_Node3 -- Yes --> N_ReestablishDestinationIndex_Node3_action N_ReestablishDestinationIndex_Node3_action --> E_ReestablishDestinationIndex N_ReestablishDestinationIndex_Node2 -- No --> N_ReestablishDestinationIndex_Node3 N_ReestablishDestinationIndex_Node4{"The system needs to restore
destination routing capability"}:::decision N_ReestablishDestinationIndex_Node4_action["Destination index is re-established
based on current cargo status and
routing requirements"]:::main N_ReestablishDestinationIndex_Node4 -- Yes --> N_ReestablishDestinationIndex_Node4_action N_ReestablishDestinationIndex_Node4_action --> E_ReestablishDestinationIndex N_ReestablishDestinationIndex_Node3 -- No --> N_ReestablishDestinationIndex_Node4 N_ReestablishDestinationIndex_Node4 -- No --> E_ReestablishDestinationIndex
File: GCX016.cbl
GIVEN:
An export cancellation has been processed for cargo
WHEN:
The system needs to restore destination routing
THEN:
- The system re-establishes destination index
- Updates routing information to restore proper cargo destination tracking
File: GCX016.cbl
GIVEN:
Release quantities have been cleared
WHEN:
The system calls B585-SET-RT076-DEST-INDEX to restore destination information
THEN:
- Destination index is re-established with appropriate bond dates
- Routing information for the unreleased cargo
File: GCX016.cbl
GIVEN:
A cargo record that has completed age calculation
WHEN:
Destination index re-establishment is required
THEN:
The system re-establishes the destination index for the cargo record
File: GCX016.cbl
GIVEN:
Cargo is being unreleased and had destination information cleared during previous release
WHEN:
The cargo requires destination hold or routing information to be restored
THEN:
- The system re-establishes the destination index
- Routing information from the cargo's sd segment data
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
Age calculation is complete or not required
WHEN:
The system needs to restore destination routing capability
THEN:
- Destination index is re-established based on current cargo status
- Routing requirements
β Consolidated Acceptance Criteria
- The system processes status array changes → the system removes cancelled status codes from S09 array and adds appropriate cancellation status information
- The system has successfully added the new code → update the status array structure and maintain proper indexing for future processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UpdateStatusArray(["Start Step"])
E_UpdateStatusArray(["End Step"])
N_UpdateStatusArray_Node0{"The system processes status array
changes"}:::decision N_UpdateStatusArray_Node0_action["The system removes cancelled status
codes from S09 array and adds
appropriate cancellation status
information"]:::main N_UpdateStatusArray_Node0 -- Yes --> N_UpdateStatusArray_Node0_action N_UpdateStatusArray_Node0_action --> E_UpdateStatusArray S_UpdateStatusArray --> N_UpdateStatusArray_Node0 N_UpdateStatusArray_Node1{"The system has successfully added
the new code"}:::decision N_UpdateStatusArray_Node1_action["Update the status array structure
and maintain proper indexing for
future processing"]:::main N_UpdateStatusArray_Node1 -- Yes --> N_UpdateStatusArray_Node1_action N_UpdateStatusArray_Node1_action --> E_UpdateStatusArray N_UpdateStatusArray_Node0 -- No --> N_UpdateStatusArray_Node1 N_UpdateStatusArray_Node1 -- No --> E_UpdateStatusArray
changes"}:::decision N_UpdateStatusArray_Node0_action["The system removes cancelled status
codes from S09 array and adds
appropriate cancellation status
information"]:::main N_UpdateStatusArray_Node0 -- Yes --> N_UpdateStatusArray_Node0_action N_UpdateStatusArray_Node0_action --> E_UpdateStatusArray S_UpdateStatusArray --> N_UpdateStatusArray_Node0 N_UpdateStatusArray_Node1{"The system has successfully added
the new code"}:::decision N_UpdateStatusArray_Node1_action["Update the status array structure
and maintain proper indexing for
future processing"]:::main N_UpdateStatusArray_Node1 -- Yes --> N_UpdateStatusArray_Node1_action N_UpdateStatusArray_Node1_action --> E_UpdateStatusArray N_UpdateStatusArray_Node0 -- No --> N_UpdateStatusArray_Node1 N_UpdateStatusArray_Node1 -- No --> E_UpdateStatusArray
File: GCX016.cbl
GIVEN:
Cancellation processing requires status array updates
WHEN:
The system processes status array changes
THEN:
- The system removes cancelled status codes from s09 array
- Adds appropriate cancellation status information
File: GCX016.cbl
GIVEN:
A new disposition code has been added to the status array
WHEN:
The system has successfully added the new code
THEN:
- Update the status array structure
- Maintain proper indexing for future processing
β Consolidated Acceptance Criteria
- The system generates cancellation notices → the system creates formatted cancellation messages with cargo details, cancellation type, and routing information for distribution
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GenerateCancellationNotice(["Start Step"])
E_GenerateCancellationNotice(["End Step"])
N_GenerateCancellationNotice_Node0{"The system generates cancellation
notices"}:::decision N_GenerateCancellationNotice_Node0_action["The system creates formatted
cancellation messages with cargo
details, cancellation type, and
routing information for distribution"]:::main N_GenerateCancellationNotice_Node0 -- Yes --> N_GenerateCancellationNotice_Node0_action N_GenerateCancellationNotice_Node0_action --> E_GenerateCancellationNotice S_GenerateCancellationNotice --> N_GenerateCancellationNotice_Node0 N_GenerateCancellationNotice_Node0 -- No --> E_GenerateCancellationNotice
notices"}:::decision N_GenerateCancellationNotice_Node0_action["The system creates formatted
cancellation messages with cargo
details, cancellation type, and
routing information for distribution"]:::main N_GenerateCancellationNotice_Node0 -- Yes --> N_GenerateCancellationNotice_Node0_action N_GenerateCancellationNotice_Node0_action --> E_GenerateCancellationNotice S_GenerateCancellationNotice --> N_GenerateCancellationNotice_Node0 N_GenerateCancellationNotice_Node0 -- No --> E_GenerateCancellationNotice
File: GCX016.cbl
GIVEN:
Cancellation processing is complete with updated status and cargo information
WHEN:
The system generates cancellation notices
THEN:
The system creates formatted cancellation messages with cargo details, cancellation type, and routing information for distribution
β Consolidated Acceptance Criteria
- The system logs the transaction → the system records cancellation details including cargo information, cancellation type, timestamp, and user information in transaction log
- The system logs cancellation transaction → the system creates audit log entry with cancellation details, timestamps, and cargo information
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogCancellationTransaction(["Start Step"])
E_LogCancellationTransaction(["End Step"])
N_LogCancellationTransaction_Node0{"The system logs the transaction"}:::decision
N_LogCancellationTransaction_Node0_action["The system records cancellation
details including cargo information,
cancellation type, timestamp, and
user information in transaction log"]:::main N_LogCancellationTransaction_Node0 -- Yes --> N_LogCancellationTransaction_Node0_action N_LogCancellationTransaction_Node0_action --> E_LogCancellationTransaction S_LogCancellationTransaction --> N_LogCancellationTransaction_Node0 N_LogCancellationTransaction_Node1{"The system logs cancellation
transaction"}:::decision N_LogCancellationTransaction_Node1_action["The system creates audit log entry
with cancellation details,
timestamps, and cargo information"]:::main N_LogCancellationTransaction_Node1 -- Yes --> N_LogCancellationTransaction_Node1_action N_LogCancellationTransaction_Node1_action --> E_LogCancellationTransaction N_LogCancellationTransaction_Node0 -- No --> N_LogCancellationTransaction_Node1 N_LogCancellationTransaction_Node1 -- No --> E_LogCancellationTransaction
details including cargo information,
cancellation type, timestamp, and
user information in transaction log"]:::main N_LogCancellationTransaction_Node0 -- Yes --> N_LogCancellationTransaction_Node0_action N_LogCancellationTransaction_Node0_action --> E_LogCancellationTransaction S_LogCancellationTransaction --> N_LogCancellationTransaction_Node0 N_LogCancellationTransaction_Node1{"The system logs cancellation
transaction"}:::decision N_LogCancellationTransaction_Node1_action["The system creates audit log entry
with cancellation details,
timestamps, and cargo information"]:::main N_LogCancellationTransaction_Node1 -- Yes --> N_LogCancellationTransaction_Node1_action N_LogCancellationTransaction_Node1_action --> E_LogCancellationTransaction N_LogCancellationTransaction_Node0 -- No --> N_LogCancellationTransaction_Node1 N_LogCancellationTransaction_Node1 -- No --> E_LogCancellationTransaction
File: GCX016.cbl
GIVEN:
Cancellation notice has been generated
WHEN:
The system logs the transaction
THEN:
The system records cancellation details including cargo information, cancellation type, timestamp, and user information in transaction log
File: GCX016.cbl
GIVEN:
A cargo record with updated status array containing cancellation code
WHEN:
The system logs cancellation transaction
THEN:
The system creates audit log entry with cancellation details, timestamps, and cargo information
β Consolidated Acceptance Criteria
- The system notifies integration services → the system sends cancellation notification to GCCIIS and other integration services with updated cargo status and cancellation details
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_NotifyIntegrationServices(["Start Step"])
E_NotifyIntegrationServices(["End Step"])
N_NotifyIntegrationServices_Node0{"The system notifies integration
services"}:::decision N_NotifyIntegrationServices_Node0_action["The system sends cancellation
notification to GCCIIS and other
integration services with updated
cargo status and cancellation
details"]:::main N_NotifyIntegrationServices_Node0 -- Yes --> N_NotifyIntegrationServices_Node0_action N_NotifyIntegrationServices_Node0_action --> E_NotifyIntegrationServices S_NotifyIntegrationServices --> N_NotifyIntegrationServices_Node0 N_NotifyIntegrationServices_Node0 -- No --> E_NotifyIntegrationServices
services"}:::decision N_NotifyIntegrationServices_Node0_action["The system sends cancellation
notification to GCCIIS and other
integration services with updated
cargo status and cancellation
details"]:::main N_NotifyIntegrationServices_Node0 -- Yes --> N_NotifyIntegrationServices_Node0_action N_NotifyIntegrationServices_Node0_action --> E_NotifyIntegrationServices S_NotifyIntegrationServices --> N_NotifyIntegrationServices_Node0 N_NotifyIntegrationServices_Node0 -- No --> E_NotifyIntegrationServices
File: GCX016.cbl
GIVEN:
Cancellation transaction has been logged
WHEN:
The system notifies integration services
THEN:
- The system sends cancellation notification to gcciis
- Other integration services with updated cargo status
- Cancellation details
β Consolidated Acceptance Criteria
- The system needs to calculate cargo age for destination indexing → the system converts both bond start date and current date to Julian format and calculates the difference in days
- Age calculation is performed → age in days equals current Julian date minus bond start Julian date
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CalculateAgeinDays(["Start Step"])
E_CalculateAgeinDays(["End Step"])
N_CalculateAgeinDays_Node0{"The system needs to calculate cargo
age for destination indexing"}:::decision N_CalculateAgeinDays_Node0_action["The system converts both bond start
date and current date to Julian
format and calculates the difference
in days"]:::main N_CalculateAgeinDays_Node0 -- Yes --> N_CalculateAgeinDays_Node0_action N_CalculateAgeinDays_Node0_action --> E_CalculateAgeinDays S_CalculateAgeinDays --> N_CalculateAgeinDays_Node0 N_CalculateAgeinDays_Node1{"Age calculation is performed"}:::decision N_CalculateAgeinDays_Node1_action["Age in days equals current Julian
date minus bond start Julian date"]:::main N_CalculateAgeinDays_Node1 -- Yes --> N_CalculateAgeinDays_Node1_action N_CalculateAgeinDays_Node1_action --> E_CalculateAgeinDays N_CalculateAgeinDays_Node0 -- No --> N_CalculateAgeinDays_Node1 N_CalculateAgeinDays_Node1 -- No --> E_CalculateAgeinDays
age for destination indexing"}:::decision N_CalculateAgeinDays_Node0_action["The system converts both bond start
date and current date to Julian
format and calculates the difference
in days"]:::main N_CalculateAgeinDays_Node0 -- Yes --> N_CalculateAgeinDays_Node0_action N_CalculateAgeinDays_Node0_action --> E_CalculateAgeinDays S_CalculateAgeinDays --> N_CalculateAgeinDays_Node0 N_CalculateAgeinDays_Node1{"Age calculation is performed"}:::decision N_CalculateAgeinDays_Node1_action["Age in days equals current Julian
date minus bond start Julian date"]:::main N_CalculateAgeinDays_Node1 -- Yes --> N_CalculateAgeinDays_Node1_action N_CalculateAgeinDays_Node1_action --> E_CalculateAgeinDays N_CalculateAgeinDays_Node0 -- No --> N_CalculateAgeinDays_Node1 N_CalculateAgeinDays_Node1 -- No --> E_CalculateAgeinDays
File: GCX016.cbl
GIVEN:
A cargo record with bond start date information is being processed
WHEN:
The system needs to calculate cargo age for destination indexing
THEN:
- The system converts both bond start date
- Current date to julian format
- Calculates the difference in days
File: GCX016.cbl
GIVEN:
Both current date and bond start date are in Julian format
WHEN:
Age calculation is performed
THEN:
Age in days equals current Julian date minus bond start Julian date
β Consolidated Acceptance Criteria
- Age calculation is required for destination indexing → the system sets cargo age to zero days
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetAgetoZeroNoBondDate(["Start Step"])
E_SetAgetoZeroNoBondDate(["End Step"])
N_SetAgetoZeroNoBondDate_Node0{"Age calculation is required for
destination indexing"}:::decision N_SetAgetoZeroNoBondDate_Node0_action["The system sets cargo age to zero
days"]:::main N_SetAgetoZeroNoBondDate_Node0 -- Yes --> N_SetAgetoZeroNoBondDate_Node0_action N_SetAgetoZeroNoBondDate_Node0_action --> E_SetAgetoZeroNoBondDate S_SetAgetoZeroNoBondDate --> N_SetAgetoZeroNoBondDate_Node0 N_SetAgetoZeroNoBondDate_Node0 -- No --> E_SetAgetoZeroNoBondDate
destination indexing"}:::decision N_SetAgetoZeroNoBondDate_Node0_action["The system sets cargo age to zero
days"]:::main N_SetAgetoZeroNoBondDate_Node0 -- Yes --> N_SetAgetoZeroNoBondDate_Node0_action N_SetAgetoZeroNoBondDate_Node0_action --> E_SetAgetoZeroNoBondDate S_SetAgetoZeroNoBondDate --> N_SetAgetoZeroNoBondDate_Node0 N_SetAgetoZeroNoBondDate_Node0 -- No --> E_SetAgetoZeroNoBondDate
File: GCX016.cbl
GIVEN:
A cargo record without a valid bond start date
WHEN:
Age calculation is required for destination indexing
THEN:
The system sets cargo age to zero days
β Consolidated Acceptance Criteria
- The system processes destination indexing decisions → the calculated age value is used to determine cargo priority for destination processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UseAgeforDestinationIndexingDecision(["Start Step"])
E_UseAgeforDestinationIndexingDecision(["End Step"])
N_UseAgeforDestinationIndexingDecision_Node0{"The system processes destination
indexing decisions"}:::decision N_UseAgeforDestinationIndexingDecision_Node0_action["The calculated age value is used to
determine cargo priority for
destination processing"]:::main N_UseAgeforDestinationIndexingDecision_Node0 -- Yes --> N_UseAgeforDestinationIndexingDecision_Node0_action N_UseAgeforDestinationIndexingDecision_Node0_action --> E_UseAgeforDestinationIndexingDecision S_UseAgeforDestinationIndexingDecision --> N_UseAgeforDestinationIndexingDecision_Node0 N_UseAgeforDestinationIndexingDecision_Node0 -- No --> E_UseAgeforDestinationIndexingDecision
indexing decisions"}:::decision N_UseAgeforDestinationIndexingDecision_Node0_action["The calculated age value is used to
determine cargo priority for
destination processing"]:::main N_UseAgeforDestinationIndexingDecision_Node0 -- Yes --> N_UseAgeforDestinationIndexingDecision_Node0_action N_UseAgeforDestinationIndexingDecision_Node0_action --> E_UseAgeforDestinationIndexingDecision S_UseAgeforDestinationIndexingDecision --> N_UseAgeforDestinationIndexingDecision_Node0 N_UseAgeforDestinationIndexingDecision_Node0 -- No --> E_UseAgeforDestinationIndexingDecision
File: GCX016.cbl
GIVEN:
Cargo age has been calculated or set to zero
WHEN:
The system processes destination indexing decisions
THEN:
The calculated age value is used to determine cargo priority for destination processing
β Consolidated Acceptance Criteria
- The system looks up the disposition code in the DC table → the disposition code information including counterpart code is retrieved from the table
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GetDispositionCodefromDCTable(["Start Step"])
E_GetDispositionCodefromDCTable(["End Step"])
N_GetDispositionCodefromDCTable_Node0{"The system looks up the disposition
code in the DC table"}:::decision N_GetDispositionCodefromDCTable_Node0_action["The disposition code information
including counterpart code is
retrieved from the table"]:::main N_GetDispositionCodefromDCTable_Node0 -- Yes --> N_GetDispositionCodefromDCTable_Node0_action N_GetDispositionCodefromDCTable_Node0_action --> E_GetDispositionCodefromDCTable S_GetDispositionCodefromDCTable --> N_GetDispositionCodefromDCTable_Node0 N_GetDispositionCodefromDCTable_Node0 -- No --> E_GetDispositionCodefromDCTable
code in the DC table"}:::decision N_GetDispositionCodefromDCTable_Node0_action["The disposition code information
including counterpart code is
retrieved from the table"]:::main N_GetDispositionCodefromDCTable_Node0 -- Yes --> N_GetDispositionCodefromDCTable_Node0_action N_GetDispositionCodefromDCTable_Node0_action --> E_GetDispositionCodefromDCTable S_GetDispositionCodefromDCTable --> N_GetDispositionCodefromDCTable_Node0 N_GetDispositionCodefromDCTable_Node0 -- No --> E_GetDispositionCodefromDCTable
File: GCX016.cbl
GIVEN:
A disposition code needs to be processed for counterpart removal
WHEN:
The system looks up the disposition code in the DC table
THEN:
The disposition code information including counterpart code is retrieved from the table
β Consolidated Acceptance Criteria
- The system checks if a counterpart code exists for the disposition code → if counterpart code exists, proceed with counterpart removal logic, otherwise skip counterpart removal processing
- If if a counterpart code exists for the current disposition code → the system either proceeds to search for counterpart codes in the status array or continues with normal processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_HasCounterpartCode(["Start Step"])
E_HasCounterpartCode(["End Step"])
N_HasCounterpartCode_Node0{"The system checks if a counterpart
code exists for the disposition code"}:::decision N_HasCounterpartCode_Node0_action["If counterpart code exists, proceed
with counterpart removal logic,
otherwise skip counterpart removal
processing"]:::main N_HasCounterpartCode_Node0 -- Yes --> N_HasCounterpartCode_Node0_action N_HasCounterpartCode_Node0_action --> E_HasCounterpartCode S_HasCounterpartCode --> N_HasCounterpartCode_Node0 N_HasCounterpartCode_Node1{"The system evaluates if a
counterpart code exists for the
current disposition code"}:::decision N_HasCounterpartCode_Node1_action["The system either proceeds to
search for counterpart codes in the
status array or continues with
normal processing"]:::main N_HasCounterpartCode_Node1 -- Yes --> N_HasCounterpartCode_Node1_action N_HasCounterpartCode_Node1_action --> E_HasCounterpartCode N_HasCounterpartCode_Node0 -- No --> N_HasCounterpartCode_Node1 N_HasCounterpartCode_Node1 -- No --> E_HasCounterpartCode
code exists for the disposition code"}:::decision N_HasCounterpartCode_Node0_action["If counterpart code exists, proceed
with counterpart removal logic,
otherwise skip counterpart removal
processing"]:::main N_HasCounterpartCode_Node0 -- Yes --> N_HasCounterpartCode_Node0_action N_HasCounterpartCode_Node0_action --> E_HasCounterpartCode S_HasCounterpartCode --> N_HasCounterpartCode_Node0 N_HasCounterpartCode_Node1{"The system evaluates if a
counterpart code exists for the
current disposition code"}:::decision N_HasCounterpartCode_Node1_action["The system either proceeds to
search for counterpart codes in the
status array or continues with
normal processing"]:::main N_HasCounterpartCode_Node1 -- Yes --> N_HasCounterpartCode_Node1_action N_HasCounterpartCode_Node1_action --> E_HasCounterpartCode N_HasCounterpartCode_Node0 -- No --> N_HasCounterpartCode_Node1 N_HasCounterpartCode_Node1 -- No --> E_HasCounterpartCode
File: GCX016.cbl
GIVEN:
Disposition code information has been retrieved from the DC table
WHEN:
The system checks if a counterpart code exists for the disposition code
THEN:
If counterpart code exists, proceed with counterpart removal logic, otherwise skip counterpart removal processing
File: GCX016.cbl
GIVEN:
The disposition code table has been checked for counterpart information
WHEN:
The system evaluates if a counterpart code exists for the current disposition code
THEN:
The system either proceeds to search for counterpart codes in the status array or continues with normal processing
β Consolidated Acceptance Criteria
- The system initializes the search process for the S09A status array → search parameters are set up to iterate through all elements in the status array
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_InitializeStatusArraySearch(["Start Step"])
E_InitializeStatusArraySearch(["End Step"])
N_InitializeStatusArraySearch_Node0{"The system initializes the search
process for the S09A status array"}:::decision N_InitializeStatusArraySearch_Node0_action["Search parameters are set up to
iterate through all elements in the
status array"]:::main N_InitializeStatusArraySearch_Node0 -- Yes --> N_InitializeStatusArraySearch_Node0_action N_InitializeStatusArraySearch_Node0_action --> E_InitializeStatusArraySearch S_InitializeStatusArraySearch --> N_InitializeStatusArraySearch_Node0 N_InitializeStatusArraySearch_Node0 -- No --> E_InitializeStatusArraySearch
process for the S09A status array"}:::decision N_InitializeStatusArraySearch_Node0_action["Search parameters are set up to
iterate through all elements in the
status array"]:::main N_InitializeStatusArraySearch_Node0 -- Yes --> N_InitializeStatusArraySearch_Node0_action N_InitializeStatusArraySearch_Node0_action --> E_InitializeStatusArraySearch S_InitializeStatusArraySearch --> N_InitializeStatusArraySearch_Node0 N_InitializeStatusArraySearch_Node0 -- No --> E_InitializeStatusArraySearch
File: GCX016.cbl
GIVEN:
A counterpart code exists and needs to be removed from the status array
WHEN:
The system initializes the search process for the S09A status array
THEN:
Search parameters are set up to iterate through all elements in the status array
β Consolidated Acceptance Criteria
- The system searches through each element in the S09A status array → each array element is evaluated against the counterpart code matching criteria
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SearchS09AArrayforMatchingElements(["Start Step"])
E_SearchS09AArrayforMatchingElements(["End Step"])
N_SearchS09AArrayforMatchingElements_Node0{"The system searches through each
element in the S09A status array"}:::decision N_SearchS09AArrayforMatchingElements_Node0_action["Each array element is evaluated
against the counterpart code
matching criteria"]:::main N_SearchS09AArrayforMatchingElements_Node0 -- Yes --> N_SearchS09AArrayforMatchingElements_Node0_action N_SearchS09AArrayforMatchingElements_Node0_action --> E_SearchS09AArrayforMatchingElements S_SearchS09AArrayforMatchingElements --> N_SearchS09AArrayforMatchingElements_Node0 N_SearchS09AArrayforMatchingElements_Node0 -- No --> E_SearchS09AArrayforMatchingElements
element in the S09A status array"}:::decision N_SearchS09AArrayforMatchingElements_Node0_action["Each array element is evaluated
against the counterpart code
matching criteria"]:::main N_SearchS09AArrayforMatchingElements_Node0 -- Yes --> N_SearchS09AArrayforMatchingElements_Node0_action N_SearchS09AArrayforMatchingElements_Node0_action --> E_SearchS09AArrayforMatchingElements S_SearchS09AArrayforMatchingElements --> N_SearchS09AArrayforMatchingElements_Node0 N_SearchS09AArrayforMatchingElements_Node0 -- No --> E_SearchS09AArrayforMatchingElements
File: GCX016.cbl
GIVEN:
The status array search has been initialized with counterpart code criteria
WHEN:
The system searches through each element in the S09A status array
THEN:
Each array element is evaluated against the counterpart code matching criteria
β Consolidated Acceptance Criteria
- The system continues searching for additional counterpart matches → the search process resumes with the remaining elements in the status array
- The system checks if more elements exist in the status array → if more elements exist, continue searching for additional counterpart matches, otherwise update array element count
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ContinueSearchforMoreMatches(["Start Step"])
E_ContinueSearchforMoreMatches(["End Step"])
N_ContinueSearchforMoreMatches_Node0{"The system continues searching for
additional counterpart matches"}:::decision N_ContinueSearchforMoreMatches_Node0_action["The search process resumes with the
remaining elements in the status
array"]:::main N_ContinueSearchforMoreMatches_Node0 -- Yes --> N_ContinueSearchforMoreMatches_Node0_action N_ContinueSearchforMoreMatches_Node0_action --> E_ContinueSearchforMoreMatches S_ContinueSearchforMoreMatches --> N_ContinueSearchforMoreMatches_Node0 N_ContinueSearchforMoreMatches_Node1{"The system checks if more elements
exist in the status array"}:::decision N_ContinueSearchforMoreMatches_Node1_action["If more elements exist, continue
searching for additional counterpart
matches, otherwise update array
element count"]:::main N_ContinueSearchforMoreMatches_Node1 -- Yes --> N_ContinueSearchforMoreMatches_Node1_action N_ContinueSearchforMoreMatches_Node1_action --> E_ContinueSearchforMoreMatches N_ContinueSearchforMoreMatches_Node0 -- No --> N_ContinueSearchforMoreMatches_Node1 N_ContinueSearchforMoreMatches_Node1 -- No --> E_ContinueSearchforMoreMatches
additional counterpart matches"}:::decision N_ContinueSearchforMoreMatches_Node0_action["The search process resumes with the
remaining elements in the status
array"]:::main N_ContinueSearchforMoreMatches_Node0 -- Yes --> N_ContinueSearchforMoreMatches_Node0_action N_ContinueSearchforMoreMatches_Node0_action --> E_ContinueSearchforMoreMatches S_ContinueSearchforMoreMatches --> N_ContinueSearchforMoreMatches_Node0 N_ContinueSearchforMoreMatches_Node1{"The system checks if more elements
exist in the status array"}:::decision N_ContinueSearchforMoreMatches_Node1_action["If more elements exist, continue
searching for additional counterpart
matches, otherwise update array
element count"]:::main N_ContinueSearchforMoreMatches_Node1 -- Yes --> N_ContinueSearchforMoreMatches_Node1_action N_ContinueSearchforMoreMatches_Node1_action --> E_ContinueSearchforMoreMatches N_ContinueSearchforMoreMatches_Node0 -- No --> N_ContinueSearchforMoreMatches_Node1 N_ContinueSearchforMoreMatches_Node1 -- No --> E_ContinueSearchforMoreMatches
File: GCX016.cbl
GIVEN:
A counterpart element has been removed and the array has been updated
WHEN:
The system continues searching for additional counterpart matches
THEN:
The search process resumes with the remaining elements in the status array
File: GCX016.cbl
GIVEN:
A counterpart code has been processed (either removed or skipped)
WHEN:
The system checks if more elements exist in the status array
THEN:
If more elements exist, continue searching for additional counterpart matches, otherwise update array element count
β Consolidated Acceptance Criteria
- The counterpart removal process is completed → the status array contains only non-counterpart elements and the removal process is finished
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CounterpartRemovalComplete(["Start Step"])
E_CounterpartRemovalComplete(["End Step"])
N_CounterpartRemovalComplete_Node0{"The counterpart removal process is
completed"}:::decision N_CounterpartRemovalComplete_Node0_action["The status array contains only
non-counterpart elements and the
removal process is finished"]:::main N_CounterpartRemovalComplete_Node0 -- Yes --> N_CounterpartRemovalComplete_Node0_action N_CounterpartRemovalComplete_Node0_action --> E_CounterpartRemovalComplete S_CounterpartRemovalComplete --> N_CounterpartRemovalComplete_Node0 N_CounterpartRemovalComplete_Node0 -- No --> E_CounterpartRemovalComplete
completed"}:::decision N_CounterpartRemovalComplete_Node0_action["The status array contains only
non-counterpart elements and the
removal process is finished"]:::main N_CounterpartRemovalComplete_Node0 -- Yes --> N_CounterpartRemovalComplete_Node0_action N_CounterpartRemovalComplete_Node0_action --> E_CounterpartRemovalComplete S_CounterpartRemovalComplete --> N_CounterpartRemovalComplete_Node0 N_CounterpartRemovalComplete_Node0 -- No --> E_CounterpartRemovalComplete
File: GCX016.cbl
GIVEN:
All elements in the status array have been checked for counterpart matches
WHEN:
The counterpart removal process is completed
THEN:
- The status array contains only non-counterpart elements
- The removal process is finished
β Consolidated Acceptance Criteria
- The disposition code has no associated counterpart code → the counterpart removal process is skipped and processing continues without array modification
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_NoCounterpartCodeSkipRemoval(["Start Step"])
E_NoCounterpartCodeSkipRemoval(["End Step"])
N_NoCounterpartCodeSkipRemoval_Node0{"The disposition code has no
associated counterpart code"}:::decision N_NoCounterpartCodeSkipRemoval_Node0_action["The counterpart removal process is
skipped and processing continues
without array modification"]:::main N_NoCounterpartCodeSkipRemoval_Node0 -- Yes --> N_NoCounterpartCodeSkipRemoval_Node0_action N_NoCounterpartCodeSkipRemoval_Node0_action --> E_NoCounterpartCodeSkipRemoval S_NoCounterpartCodeSkipRemoval --> N_NoCounterpartCodeSkipRemoval_Node0 N_NoCounterpartCodeSkipRemoval_Node0 -- No --> E_NoCounterpartCodeSkipRemoval
associated counterpart code"}:::decision N_NoCounterpartCodeSkipRemoval_Node0_action["The counterpart removal process is
skipped and processing continues
without array modification"]:::main N_NoCounterpartCodeSkipRemoval_Node0 -- Yes --> N_NoCounterpartCodeSkipRemoval_Node0_action N_NoCounterpartCodeSkipRemoval_Node0_action --> E_NoCounterpartCodeSkipRemoval S_NoCounterpartCodeSkipRemoval --> N_NoCounterpartCodeSkipRemoval_Node0 N_NoCounterpartCodeSkipRemoval_Node0 -- No --> E_NoCounterpartCodeSkipRemoval
File: GCX016.cbl
GIVEN:
A disposition code has been retrieved from the DC table
WHEN:
The disposition code has no associated counterpart code
THEN:
- The counterpart removal process is skipped
- Processing continues without array modification
β Consolidated Acceptance Criteria
- The system needs to perform quantity calculations → the system should retrieve the current released quantity from the cargo record
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GetCurrentReleasedQuantityfromCargo(["Start Step"])
E_GetCurrentReleasedQuantityfromCargo(["End Step"])
N_GetCurrentReleasedQuantityfromCargo_Node0{"The system needs to perform
quantity calculations"}:::decision N_GetCurrentReleasedQuantityfromCargo_Node0_action["The system should retrieve the
current released quantity from the
cargo record"]:::main N_GetCurrentReleasedQuantityfromCargo_Node0 -- Yes --> N_GetCurrentReleasedQuantityfromCargo_Node0_action N_GetCurrentReleasedQuantityfromCargo_Node0_action --> E_GetCurrentReleasedQuantityfromCargo S_GetCurrentReleasedQuantityfromCargo --> N_GetCurrentReleasedQuantityfromCargo_Node0 N_GetCurrentReleasedQuantityfromCargo_Node0 -- No --> E_GetCurrentReleasedQuantityfromCargo
quantity calculations"}:::decision N_GetCurrentReleasedQuantityfromCargo_Node0_action["The system should retrieve the
current released quantity from the
cargo record"]:::main N_GetCurrentReleasedQuantityfromCargo_Node0 -- Yes --> N_GetCurrentReleasedQuantityfromCargo_Node0_action N_GetCurrentReleasedQuantityfromCargo_Node0_action --> E_GetCurrentReleasedQuantityfromCargo S_GetCurrentReleasedQuantityfromCargo --> N_GetCurrentReleasedQuantityfromCargo_Node0 N_GetCurrentReleasedQuantityfromCargo_Node0 -- No --> E_GetCurrentReleasedQuantityfromCargo
File: GCX016.cbl
GIVEN:
A cargo record exists with current released quantity information
WHEN:
The system needs to perform quantity calculations
THEN:
The system should retrieve the current released quantity from the cargo record
β Consolidated Acceptance Criteria
- The system performs add quantity action → the system should calculate new released quantity as current released quantity plus X4 quantity
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AddActionReleasedQtyReleasedQtyX4Quantity(["Start Step"])
E_AddActionReleasedQtyReleasedQtyX4Quantity(["End Step"])
N_AddActionReleasedQtyReleasedQtyX4Quantity_Node0{"The system performs add quantity
action"}:::decision N_AddActionReleasedQtyReleasedQtyX4Quantity_Node0_action["The system should calculate new
released quantity as current
released quantity plus X4 quantity"]:::main N_AddActionReleasedQtyReleasedQtyX4Quantity_Node0 -- Yes --> N_AddActionReleasedQtyReleasedQtyX4Quantity_Node0_action N_AddActionReleasedQtyReleasedQtyX4Quantity_Node0_action --> E_AddActionReleasedQtyReleasedQtyX4Quantity S_AddActionReleasedQtyReleasedQtyX4Quantity --> N_AddActionReleasedQtyReleasedQtyX4Quantity_Node0 N_AddActionReleasedQtyReleasedQtyX4Quantity_Node0 -- No --> E_AddActionReleasedQtyReleasedQtyX4Quantity
action"}:::decision N_AddActionReleasedQtyReleasedQtyX4Quantity_Node0_action["The system should calculate new
released quantity as current
released quantity plus X4 quantity"]:::main N_AddActionReleasedQtyReleasedQtyX4Quantity_Node0 -- Yes --> N_AddActionReleasedQtyReleasedQtyX4Quantity_Node0_action N_AddActionReleasedQtyReleasedQtyX4Quantity_Node0_action --> E_AddActionReleasedQtyReleasedQtyX4Quantity S_AddActionReleasedQtyReleasedQtyX4Quantity --> N_AddActionReleasedQtyReleasedQtyX4Quantity_Node0 N_AddActionReleasedQtyReleasedQtyX4Quantity_Node0 -- No --> E_AddActionReleasedQtyReleasedQtyX4Quantity
File: GCX016.cbl
GIVEN:
A disposition code requires adding quantity to released amount AND current released quantity exists AND X4 segment contains quantity value
WHEN:
The system performs add quantity action
THEN:
The system should calculate new released quantity as current released quantity plus X4 quantity
β Consolidated Acceptance Criteria
- The system performs subtract quantity action → the system should calculate new released quantity as current released quantity minus X4 quantity
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SubtractActionReleasedQtyReleasedQtyX4Quantity(["Start Step"])
E_SubtractActionReleasedQtyReleasedQtyX4Quantity(["End Step"])
N_SubtractActionReleasedQtyReleasedQtyX4Quantity_Node0{"The system performs subtract
quantity action"}:::decision N_SubtractActionReleasedQtyReleasedQtyX4Quantity_Node0_action["The system should calculate new
released quantity as current
released quantity minus X4 quantity"]:::main N_SubtractActionReleasedQtyReleasedQtyX4Quantity_Node0 -- Yes --> N_SubtractActionReleasedQtyReleasedQtyX4Quantity_Node0_action N_SubtractActionReleasedQtyReleasedQtyX4Quantity_Node0_action --> E_SubtractActionReleasedQtyReleasedQtyX4Quantity S_SubtractActionReleasedQtyReleasedQtyX4Quantity --> N_SubtractActionReleasedQtyReleasedQtyX4Quantity_Node0 N_SubtractActionReleasedQtyReleasedQtyX4Quantity_Node0 -- No --> E_SubtractActionReleasedQtyReleasedQtyX4Quantity
quantity action"}:::decision N_SubtractActionReleasedQtyReleasedQtyX4Quantity_Node0_action["The system should calculate new
released quantity as current
released quantity minus X4 quantity"]:::main N_SubtractActionReleasedQtyReleasedQtyX4Quantity_Node0 -- Yes --> N_SubtractActionReleasedQtyReleasedQtyX4Quantity_Node0_action N_SubtractActionReleasedQtyReleasedQtyX4Quantity_Node0_action --> E_SubtractActionReleasedQtyReleasedQtyX4Quantity S_SubtractActionReleasedQtyReleasedQtyX4Quantity --> N_SubtractActionReleasedQtyReleasedQtyX4Quantity_Node0 N_SubtractActionReleasedQtyReleasedQtyX4Quantity_Node0 -- No --> E_SubtractActionReleasedQtyReleasedQtyX4Quantity
File: GCX016.cbl
GIVEN:
A disposition code requires subtracting quantity from released amount AND current released quantity exists AND X4 segment contains quantity value
WHEN:
The system performs subtract quantity action
THEN:
The system should calculate new released quantity as current released quantity minus X4 quantity
β Consolidated Acceptance Criteria
- The calculated result is less than zero → the system should identify this as an invalid negative quantity condition
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ResultLessThanZero(["Start Step"])
E_ResultLessThanZero(["End Step"])
N_ResultLessThanZero_Node0{"The calculated result is less than
zero"}:::decision N_ResultLessThanZero_Node0_action["The system should identify this as
an invalid negative quantity
condition"]:::main N_ResultLessThanZero_Node0 -- Yes --> N_ResultLessThanZero_Node0_action N_ResultLessThanZero_Node0_action --> E_ResultLessThanZero S_ResultLessThanZero --> N_ResultLessThanZero_Node0 N_ResultLessThanZero_Node0 -- No --> E_ResultLessThanZero
zero"}:::decision N_ResultLessThanZero_Node0_action["The system should identify this as
an invalid negative quantity
condition"]:::main N_ResultLessThanZero_Node0 -- Yes --> N_ResultLessThanZero_Node0_action N_ResultLessThanZero_Node0_action --> E_ResultLessThanZero S_ResultLessThanZero --> N_ResultLessThanZero_Node0 N_ResultLessThanZero_Node0 -- No --> E_ResultLessThanZero
File: GCX016.cbl
GIVEN:
A quantity calculation has been performed for released amount
WHEN:
The calculated result is less than zero
THEN:
The system should identify this as an invalid negative quantity condition
β Consolidated Acceptance Criteria
- The system needs to assign the released quantity → the system should retain the calculated released quantity value
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_KeepCalculatedReleasedQuantity(["Start Step"])
E_KeepCalculatedReleasedQuantity(["End Step"])
N_KeepCalculatedReleasedQuantity_Node0{"The system needs to assign the
released quantity"}:::decision N_KeepCalculatedReleasedQuantity_Node0_action["The system should retain the
calculated released quantity value"]:::main N_KeepCalculatedReleasedQuantity_Node0 -- Yes --> N_KeepCalculatedReleasedQuantity_Node0_action N_KeepCalculatedReleasedQuantity_Node0_action --> E_KeepCalculatedReleasedQuantity S_KeepCalculatedReleasedQuantity --> N_KeepCalculatedReleasedQuantity_Node0 N_KeepCalculatedReleasedQuantity_Node0 -- No --> E_KeepCalculatedReleasedQuantity
released quantity"}:::decision N_KeepCalculatedReleasedQuantity_Node0_action["The system should retain the
calculated released quantity value"]:::main N_KeepCalculatedReleasedQuantity_Node0 -- Yes --> N_KeepCalculatedReleasedQuantity_Node0_action N_KeepCalculatedReleasedQuantity_Node0_action --> E_KeepCalculatedReleasedQuantity S_KeepCalculatedReleasedQuantity --> N_KeepCalculatedReleasedQuantity_Node0 N_KeepCalculatedReleasedQuantity_Node0 -- No --> E_KeepCalculatedReleasedQuantity
File: GCX016.cbl
GIVEN:
A quantity calculation results in zero or positive value
WHEN:
The system needs to assign the released quantity
THEN:
The system should retain the calculated released quantity value
β Consolidated Acceptance Criteria
- The system needs to persist the quantity changes → the system should update the cargo record with the new released quantity value
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UpdateCargoRecordwithNewReleasedQuantity(["Start Step"])
E_UpdateCargoRecordwithNewReleasedQuantity(["End Step"])
N_UpdateCargoRecordwithNewReleasedQuantity_Node0{"The system needs to persist the
quantity changes"}:::decision N_UpdateCargoRecordwithNewReleasedQuantity_Node0_action["The system should update the cargo
record with the new released
quantity value"]:::main N_UpdateCargoRecordwithNewReleasedQuantity_Node0 -- Yes --> N_UpdateCargoRecordwithNewReleasedQuantity_Node0_action N_UpdateCargoRecordwithNewReleasedQuantity_Node0_action --> E_UpdateCargoRecordwithNewReleasedQuantity S_UpdateCargoRecordwithNewReleasedQuantity --> N_UpdateCargoRecordwithNewReleasedQuantity_Node0 N_UpdateCargoRecordwithNewReleasedQuantity_Node0 -- No --> E_UpdateCargoRecordwithNewReleasedQuantity
quantity changes"}:::decision N_UpdateCargoRecordwithNewReleasedQuantity_Node0_action["The system should update the cargo
record with the new released
quantity value"]:::main N_UpdateCargoRecordwithNewReleasedQuantity_Node0 -- Yes --> N_UpdateCargoRecordwithNewReleasedQuantity_Node0_action N_UpdateCargoRecordwithNewReleasedQuantity_Node0_action --> E_UpdateCargoRecordwithNewReleasedQuantity S_UpdateCargoRecordwithNewReleasedQuantity --> N_UpdateCargoRecordwithNewReleasedQuantity_Node0 N_UpdateCargoRecordwithNewReleasedQuantity_Node0 -- No --> E_UpdateCargoRecordwithNewReleasedQuantity
File: GCX016.cbl
GIVEN:
A final released quantity has been determined through calculations and validations
WHEN:
The system needs to persist the quantity changes
THEN:
The system should update the cargo record with the new released quantity value
β Consolidated Acceptance Criteria
- The system formats the hold message → the system includes appropriate location details in the message format based on hold location type
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_FormatHoldMessagewithLocationDetails(["Start Step"])
E_FormatHoldMessagewithLocationDetails(["End Step"])
N_FormatHoldMessagewithLocationDetails_Node0{"The system formats the hold message"}:::decision
N_FormatHoldMessagewithLocationDetails_Node0_action["The system includes appropriate
location details in the message
format based on hold location type"]:::main N_FormatHoldMessagewithLocationDetails_Node0 -- Yes --> N_FormatHoldMessagewithLocationDetails_Node0_action N_FormatHoldMessagewithLocationDetails_Node0_action --> E_FormatHoldMessagewithLocationDetails S_FormatHoldMessagewithLocationDetails --> N_FormatHoldMessagewithLocationDetails_Node0 N_FormatHoldMessagewithLocationDetails_Node0 -- No --> E_FormatHoldMessagewithLocationDetails
location details in the message
format based on hold location type"]:::main N_FormatHoldMessagewithLocationDetails_Node0 -- Yes --> N_FormatHoldMessagewithLocationDetails_Node0_action N_FormatHoldMessagewithLocationDetails_Node0_action --> E_FormatHoldMessagewithLocationDetails S_FormatHoldMessagewithLocationDetails --> N_FormatHoldMessagewithLocationDetails_Node0 N_FormatHoldMessagewithLocationDetails_Node0 -- No --> E_FormatHoldMessagewithLocationDetails
File: GCX016.cbl
GIVEN:
A cargo hold location has been determined as either border or destination
WHEN:
The system formats the hold message
THEN:
The system includes appropriate location details in the message format based on hold location type
β Consolidated Acceptance Criteria
- The system adds cargo information to the message → the system includes car ID, waybill number, US-CCN key, and other cargo identifiers in the message
- Cargo information needs to be included in the message → the system adds cargo status, identification numbers, and relevant cargo details to the message content
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IncludeCargoInformation(["Start Step"])
E_IncludeCargoInformation(["End Step"])
N_IncludeCargoInformation_Node0{"The system adds cargo information
to the message"}:::decision N_IncludeCargoInformation_Node0_action["The system includes car ID, waybill
number, US-CCN key, and other cargo
identifiers in the message"]:::main N_IncludeCargoInformation_Node0 -- Yes --> N_IncludeCargoInformation_Node0_action N_IncludeCargoInformation_Node0_action --> E_IncludeCargoInformation S_IncludeCargoInformation --> N_IncludeCargoInformation_Node0 N_IncludeCargoInformation_Node1{"Cargo information needs to be
included in the message"}:::decision N_IncludeCargoInformation_Node1_action["The system adds cargo status,
identification numbers, and relevant
cargo details to the message content"]:::main N_IncludeCargoInformation_Node1 -- Yes --> N_IncludeCargoInformation_Node1_action N_IncludeCargoInformation_Node1_action --> E_IncludeCargoInformation N_IncludeCargoInformation_Node0 -- No --> N_IncludeCargoInformation_Node1 N_IncludeCargoInformation_Node1 -- No --> E_IncludeCargoInformation
to the message"}:::decision N_IncludeCargoInformation_Node0_action["The system includes car ID, waybill
number, US-CCN key, and other cargo
identifiers in the message"]:::main N_IncludeCargoInformation_Node0 -- Yes --> N_IncludeCargoInformation_Node0_action N_IncludeCargoInformation_Node0_action --> E_IncludeCargoInformation S_IncludeCargoInformation --> N_IncludeCargoInformation_Node0 N_IncludeCargoInformation_Node1{"Cargo information needs to be
included in the message"}:::decision N_IncludeCargoInformation_Node1_action["The system adds cargo status,
identification numbers, and relevant
cargo details to the message content"]:::main N_IncludeCargoInformation_Node1 -- Yes --> N_IncludeCargoInformation_Node1_action N_IncludeCargoInformation_Node1_action --> E_IncludeCargoInformation N_IncludeCargoInformation_Node0 -- No --> N_IncludeCargoInformation_Node1 N_IncludeCargoInformation_Node1 -- No --> E_IncludeCargoInformation
File: GCX016.cbl
GIVEN:
A hold message is being formatted for cargo
WHEN:
The system adds cargo information to the message
THEN:
The system includes car ID, waybill number, US-CCN key, and other cargo identifiers in the message
File: GCX016.cbl
GIVEN:
A release message is being formatted
WHEN:
Cargo information needs to be included in the message
THEN:
The system adds cargo status, identification numbers, and relevant cargo details to the message content
β Consolidated Acceptance Criteria
- The system adds disposition code details → the system includes the disposition code and its description from the DC table in the message
- Disposition code details need to be added → the system includes the disposition code, its description, and associated customs action details in the message
- The disposition code type is NOT Manual Release AND NOT Auto Release → include the disposition code and its corresponding Merlin message text in the formatted message
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AddDispositionCodeDetails(["Start Step"])
E_AddDispositionCodeDetails(["End Step"])
N_AddDispositionCodeDetails_Node0{"The system adds disposition code
details"}:::decision N_AddDispositionCodeDetails_Node0_action["The system includes the disposition
code and its description from the DC
table in the message"]:::main N_AddDispositionCodeDetails_Node0 -- Yes --> N_AddDispositionCodeDetails_Node0_action N_AddDispositionCodeDetails_Node0_action --> E_AddDispositionCodeDetails S_AddDispositionCodeDetails --> N_AddDispositionCodeDetails_Node0 N_AddDispositionCodeDetails_Node1{"Disposition code details need to be
added"}:::decision N_AddDispositionCodeDetails_Node1_action["The system includes the disposition
code, its description, and
associated customs action details in
the message"]:::main N_AddDispositionCodeDetails_Node1 -- Yes --> N_AddDispositionCodeDetails_Node1_action N_AddDispositionCodeDetails_Node1_action --> E_AddDispositionCodeDetails N_AddDispositionCodeDetails_Node0 -- No --> N_AddDispositionCodeDetails_Node1 N_AddDispositionCodeDetails_Node2{"The disposition code type is NOT
Manual Release AND NOT Auto Release"}:::decision N_AddDispositionCodeDetails_Node2_action["Include the disposition code and
its corresponding Merlin message
text in the formatted message"]:::main N_AddDispositionCodeDetails_Node2 -- Yes --> N_AddDispositionCodeDetails_Node2_action N_AddDispositionCodeDetails_Node2_action --> E_AddDispositionCodeDetails N_AddDispositionCodeDetails_Node1 -- No --> N_AddDispositionCodeDetails_Node2 N_AddDispositionCodeDetails_Node2 -- No --> E_AddDispositionCodeDetails
details"}:::decision N_AddDispositionCodeDetails_Node0_action["The system includes the disposition
code and its description from the DC
table in the message"]:::main N_AddDispositionCodeDetails_Node0 -- Yes --> N_AddDispositionCodeDetails_Node0_action N_AddDispositionCodeDetails_Node0_action --> E_AddDispositionCodeDetails S_AddDispositionCodeDetails --> N_AddDispositionCodeDetails_Node0 N_AddDispositionCodeDetails_Node1{"Disposition code details need to be
added"}:::decision N_AddDispositionCodeDetails_Node1_action["The system includes the disposition
code, its description, and
associated customs action details in
the message"]:::main N_AddDispositionCodeDetails_Node1 -- Yes --> N_AddDispositionCodeDetails_Node1_action N_AddDispositionCodeDetails_Node1_action --> E_AddDispositionCodeDetails N_AddDispositionCodeDetails_Node0 -- No --> N_AddDispositionCodeDetails_Node1 N_AddDispositionCodeDetails_Node2{"The disposition code type is NOT
Manual Release AND NOT Auto Release"}:::decision N_AddDispositionCodeDetails_Node2_action["Include the disposition code and
its corresponding Merlin message
text in the formatted message"]:::main N_AddDispositionCodeDetails_Node2 -- Yes --> N_AddDispositionCodeDetails_Node2_action N_AddDispositionCodeDetails_Node2_action --> E_AddDispositionCodeDetails N_AddDispositionCodeDetails_Node1 -- No --> N_AddDispositionCodeDetails_Node2 N_AddDispositionCodeDetails_Node2 -- No --> E_AddDispositionCodeDetails
File: GCX016.cbl
GIVEN:
A hold message is being formatted with cargo information
WHEN:
The system adds disposition code details
THEN:
- The system includes the disposition code
- Its description from the dc table in the message
File: GCX016.cbl
GIVEN:
A release message contains cargo information
WHEN:
Disposition code details need to be added
THEN:
The system includes the disposition code, its description, and associated customs action details in the message
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
A disposition code is being processed for cargo
WHEN:
- The disposition code type is not manual release
- Not auto release
THEN:
- Include the disposition code
- Its corresponding merlin message text in the formatted message
β Consolidated Acceptance Criteria
- The system adds quantity information → the system includes total cargo quantity and quantity affected by the hold in the message
- The system formats quantity information → the system includes total quantity, release quantity, and quantity impact information in the broker message
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IncludeQuantityInformation(["Start Step"])
E_IncludeQuantityInformation(["End Step"])
N_IncludeQuantityInformation_Node0{"The system adds quantity
information"}:::decision N_IncludeQuantityInformation_Node0_action["The system includes total cargo
quantity and quantity affected by
the hold in the message"]:::main N_IncludeQuantityInformation_Node0 -- Yes --> N_IncludeQuantityInformation_Node0_action N_IncludeQuantityInformation_Node0_action --> E_IncludeQuantityInformation S_IncludeQuantityInformation --> N_IncludeQuantityInformation_Node0 N_IncludeQuantityInformation_Node1{"The system formats quantity
information"}:::decision N_IncludeQuantityInformation_Node1_action["The system includes total quantity,
release quantity, and quantity
impact information in the broker
message"]:::main N_IncludeQuantityInformation_Node1 -- Yes --> N_IncludeQuantityInformation_Node1_action N_IncludeQuantityInformation_Node1_action --> E_IncludeQuantityInformation N_IncludeQuantityInformation_Node0 -- No --> N_IncludeQuantityInformation_Node1 N_IncludeQuantityInformation_Node1 -- No --> E_IncludeQuantityInformation
information"}:::decision N_IncludeQuantityInformation_Node0_action["The system includes total cargo
quantity and quantity affected by
the hold in the message"]:::main N_IncludeQuantityInformation_Node0 -- Yes --> N_IncludeQuantityInformation_Node0_action N_IncludeQuantityInformation_Node0_action --> E_IncludeQuantityInformation S_IncludeQuantityInformation --> N_IncludeQuantityInformation_Node0 N_IncludeQuantityInformation_Node1{"The system formats quantity
information"}:::decision N_IncludeQuantityInformation_Node1_action["The system includes total quantity,
release quantity, and quantity
impact information in the broker
message"]:::main N_IncludeQuantityInformation_Node1 -- Yes --> N_IncludeQuantityInformation_Node1_action N_IncludeQuantityInformation_Node1_action --> E_IncludeQuantityInformation N_IncludeQuantityInformation_Node0 -- No --> N_IncludeQuantityInformation_Node1 N_IncludeQuantityInformation_Node1 -- No --> E_IncludeQuantityInformation
File: GCX016.cbl
GIVEN:
A hold message is being formatted with disposition code details
WHEN:
The system adds quantity information
THEN:
- The system includes total cargo quantity
- Quantity affected by the hold in the message
File: GCX016.cbl
GIVEN:
A broker bond message is being prepared with cargo quantity data
WHEN:
The system formats quantity information
THEN:
The system includes total quantity, release quantity, and quantity impact information in the broker message
β Consolidated Acceptance Criteria
- The system checks for K1 comments availability → if K1 comments exist, the system adds the remarks to the hold message, otherwise proceeds without comments
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AddK1CommentsifAvailable(["Start Step"])
E_AddK1CommentsifAvailable(["End Step"])
N_AddK1CommentsifAvailable_Node0{"The system checks for K1 comments
availability"}:::decision N_AddK1CommentsifAvailable_Node0_action["If K1 comments exist, the system
adds the remarks to the hold
message, otherwise proceeds without
comments"]:::main N_AddK1CommentsifAvailable_Node0 -- Yes --> N_AddK1CommentsifAvailable_Node0_action N_AddK1CommentsifAvailable_Node0_action --> E_AddK1CommentsifAvailable S_AddK1CommentsifAvailable --> N_AddK1CommentsifAvailable_Node0 N_AddK1CommentsifAvailable_Node0 -- No --> E_AddK1CommentsifAvailable
availability"}:::decision N_AddK1CommentsifAvailable_Node0_action["If K1 comments exist, the system
adds the remarks to the hold
message, otherwise proceeds without
comments"]:::main N_AddK1CommentsifAvailable_Node0 -- Yes --> N_AddK1CommentsifAvailable_Node0_action N_AddK1CommentsifAvailable_Node0_action --> E_AddK1CommentsifAvailable S_AddK1CommentsifAvailable --> N_AddK1CommentsifAvailable_Node0 N_AddK1CommentsifAvailable_Node0 -- No --> E_AddK1CommentsifAvailable
File: GCX016.cbl
GIVEN:
A hold message is being formatted with quantity information
WHEN:
The system checks for K1 comments availability
THEN:
If K1 comments exist, the system adds the remarks to the hold message, otherwise proceeds without comments
β Consolidated Acceptance Criteria
- If routing requirements → if message routing is required, the system proceeds to determine recipients, otherwise logs the message generation
- If routing requirements → the system determines if the message should be routed to USCS, brokers, or payer of freight based on message type and content
- If routing requirements → the system determines if the message needs to be routed to USCS operations or other destinations based on message type and content
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MessageRoutingRequired(["Start Step"])
E_MessageRoutingRequired(["End Step"])
N_MessageRoutingRequired_Node0{"The system evaluates routing
requirements"}:::decision N_MessageRoutingRequired_Node0_action["If message routing is required, the
system proceeds to determine
recipients, otherwise logs the
message generation"]:::main N_MessageRoutingRequired_Node0 -- Yes --> N_MessageRoutingRequired_Node0_action N_MessageRoutingRequired_Node0_action --> E_MessageRoutingRequired S_MessageRoutingRequired --> N_MessageRoutingRequired_Node0 N_MessageRoutingRequired_Node1{"The system evaluates routing
requirements"}:::decision N_MessageRoutingRequired_Node1_action["The system determines if the
message should be routed to USCS,
brokers, or payer of freight based
on message type and content"]:::main N_MessageRoutingRequired_Node1 -- Yes --> N_MessageRoutingRequired_Node1_action N_MessageRoutingRequired_Node1_action --> E_MessageRoutingRequired N_MessageRoutingRequired_Node0 -- No --> N_MessageRoutingRequired_Node1 N_MessageRoutingRequired_Node2{"The system evaluates routing
requirements"}:::decision N_MessageRoutingRequired_Node2_action["The system determines if the
message needs to be routed to USCS
operations or other destinations
based on message type and content"]:::main N_MessageRoutingRequired_Node2 -- Yes --> N_MessageRoutingRequired_Node2_action N_MessageRoutingRequired_Node2_action --> E_MessageRoutingRequired N_MessageRoutingRequired_Node1 -- No --> N_MessageRoutingRequired_Node2 N_MessageRoutingRequired_Node2 -- No --> E_MessageRoutingRequired
requirements"}:::decision N_MessageRoutingRequired_Node0_action["If message routing is required, the
system proceeds to determine
recipients, otherwise logs the
message generation"]:::main N_MessageRoutingRequired_Node0 -- Yes --> N_MessageRoutingRequired_Node0_action N_MessageRoutingRequired_Node0_action --> E_MessageRoutingRequired S_MessageRoutingRequired --> N_MessageRoutingRequired_Node0 N_MessageRoutingRequired_Node1{"The system evaluates routing
requirements"}:::decision N_MessageRoutingRequired_Node1_action["The system determines if the
message should be routed to USCS,
brokers, or payer of freight based
on message type and content"]:::main N_MessageRoutingRequired_Node1 -- Yes --> N_MessageRoutingRequired_Node1_action N_MessageRoutingRequired_Node1_action --> E_MessageRoutingRequired N_MessageRoutingRequired_Node0 -- No --> N_MessageRoutingRequired_Node1 N_MessageRoutingRequired_Node2{"The system evaluates routing
requirements"}:::decision N_MessageRoutingRequired_Node2_action["The system determines if the
message needs to be routed to USCS
operations or other destinations
based on message type and content"]:::main N_MessageRoutingRequired_Node2 -- Yes --> N_MessageRoutingRequired_Node2_action N_MessageRoutingRequired_Node2_action --> E_MessageRoutingRequired N_MessageRoutingRequired_Node1 -- No --> N_MessageRoutingRequired_Node2 N_MessageRoutingRequired_Node2 -- No --> E_MessageRoutingRequired
File: GCX016.cbl
GIVEN:
A hold message has been formatted with all required information
WHEN:
The system evaluates routing requirements
THEN:
If message routing is required, the system proceeds to determine recipients, otherwise logs the message generation
File: GCX016.cbl
GIVEN:
A complete notification message has been formatted
WHEN:
The system evaluates routing requirements
THEN:
- The system determines if the message should be routed to uscs, brokers, or payer of freight based on message type
- Content
File: GCX016.cbl
GIVEN:
A message has been formatted for arrival or cancellation
WHEN:
The system evaluates routing requirements
THEN:
- The system determines if the message needs to be routed to uscs operations or other destinations based on message type
- Content
β Consolidated Acceptance Criteria
- The system determines message recipients → the system identifies recipients including station Merlin IDs, broker contacts, and payer of freight based on cargo configuration
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_DetermineMessageRecipients(["Start Step"])
E_DetermineMessageRecipients(["End Step"])
N_DetermineMessageRecipients_Node0{"The system determines message
recipients"}:::decision N_DetermineMessageRecipients_Node0_action["The system identifies recipients
including station Merlin IDs, broker
contacts, and payer of freight based
on cargo configuration"]:::main N_DetermineMessageRecipients_Node0 -- Yes --> N_DetermineMessageRecipients_Node0_action N_DetermineMessageRecipients_Node0_action --> E_DetermineMessageRecipients S_DetermineMessageRecipients --> N_DetermineMessageRecipients_Node0 N_DetermineMessageRecipients_Node0 -- No --> E_DetermineMessageRecipients
recipients"}:::decision N_DetermineMessageRecipients_Node0_action["The system identifies recipients
including station Merlin IDs, broker
contacts, and payer of freight based
on cargo configuration"]:::main N_DetermineMessageRecipients_Node0 -- Yes --> N_DetermineMessageRecipients_Node0_action N_DetermineMessageRecipients_Node0_action --> E_DetermineMessageRecipients S_DetermineMessageRecipients --> N_DetermineMessageRecipients_Node0 N_DetermineMessageRecipients_Node0 -- No --> E_DetermineMessageRecipients
File: GCX016.cbl
GIVEN:
A hold message requires routing to external recipients
WHEN:
The system determines message recipients
THEN:
The system identifies recipients including station Merlin IDs, broker contacts, and payer of freight based on cargo configuration
β Consolidated Acceptance Criteria
- The system checks broker notification requirements → if broker notification is required, the system retrieves broker information, otherwise sends to multiple standard destinations
- The system checks broker notification requirements for the cargo → if broker notification is required, proceed to send broker notification, otherwise proceed to transaction logging
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_BrokerNotificationRequired(["Start Step"])
E_BrokerNotificationRequired(["End Step"])
N_BrokerNotificationRequired_Node0{"The system checks broker
notification requirements"}:::decision N_BrokerNotificationRequired_Node0_action["If broker notification is required,
the system retrieves broker
information, otherwise sends to
multiple standard destinations"]:::main N_BrokerNotificationRequired_Node0 -- Yes --> N_BrokerNotificationRequired_Node0_action N_BrokerNotificationRequired_Node0_action --> E_BrokerNotificationRequired S_BrokerNotificationRequired --> N_BrokerNotificationRequired_Node0 N_BrokerNotificationRequired_Node1{"The system checks broker
notification requirements for the
cargo"}:::decision N_BrokerNotificationRequired_Node1_action["If broker notification is required,
proceed to send broker notification,
otherwise proceed to transaction
logging"]:::main N_BrokerNotificationRequired_Node1 -- Yes --> N_BrokerNotificationRequired_Node1_action N_BrokerNotificationRequired_Node1_action --> E_BrokerNotificationRequired N_BrokerNotificationRequired_Node0 -- No --> N_BrokerNotificationRequired_Node1 N_BrokerNotificationRequired_Node1 -- No --> E_BrokerNotificationRequired
notification requirements"}:::decision N_BrokerNotificationRequired_Node0_action["If broker notification is required,
the system retrieves broker
information, otherwise sends to
multiple standard destinations"]:::main N_BrokerNotificationRequired_Node0 -- Yes --> N_BrokerNotificationRequired_Node0_action N_BrokerNotificationRequired_Node0_action --> E_BrokerNotificationRequired S_BrokerNotificationRequired --> N_BrokerNotificationRequired_Node0 N_BrokerNotificationRequired_Node1{"The system checks broker
notification requirements for the
cargo"}:::decision N_BrokerNotificationRequired_Node1_action["If broker notification is required,
proceed to send broker notification,
otherwise proceed to transaction
logging"]:::main N_BrokerNotificationRequired_Node1 -- Yes --> N_BrokerNotificationRequired_Node1_action N_BrokerNotificationRequired_Node1_action --> E_BrokerNotificationRequired N_BrokerNotificationRequired_Node0 -- No --> N_BrokerNotificationRequired_Node1 N_BrokerNotificationRequired_Node1 -- No --> E_BrokerNotificationRequired
File: GCX016.cbl
GIVEN:
Message recipients have been determined for hold message
WHEN:
The system checks broker notification requirements
THEN:
If broker notification is required, the system retrieves broker information, otherwise sends to multiple standard destinations
File: GCX016.cbl
GIVEN:
Unrelease message has been routed to appropriate users
WHEN:
The system checks broker notification requirements for the cargo
THEN:
If broker notification is required, proceed to send broker notification, otherwise proceed to transaction logging
β Consolidated Acceptance Criteria
- The system retrieves broker information → the system gets payer of freight broker information if available, otherwise uses cargo broker information
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GetBrokerInformation(["Start Step"])
E_GetBrokerInformation(["End Step"])
N_GetBrokerInformation_Node0{"The system retrieves broker
information"}:::decision N_GetBrokerInformation_Node0_action["The system gets payer of freight
broker information if available,
otherwise uses cargo broker
information"]:::main N_GetBrokerInformation_Node0 -- Yes --> N_GetBrokerInformation_Node0_action N_GetBrokerInformation_Node0_action --> E_GetBrokerInformation S_GetBrokerInformation --> N_GetBrokerInformation_Node0 N_GetBrokerInformation_Node0 -- No --> E_GetBrokerInformation
information"}:::decision N_GetBrokerInformation_Node0_action["The system gets payer of freight
broker information if available,
otherwise uses cargo broker
information"]:::main N_GetBrokerInformation_Node0 -- Yes --> N_GetBrokerInformation_Node0_action N_GetBrokerInformation_Node0_action --> E_GetBrokerInformation S_GetBrokerInformation --> N_GetBrokerInformation_Node0 N_GetBrokerInformation_Node0 -- No --> E_GetBrokerInformation
File: GCX016.cbl
GIVEN:
Broker notification is required for cargo hold message
WHEN:
The system retrieves broker information
THEN:
The system gets payer of freight broker information if available, otherwise uses cargo broker information
β Consolidated Acceptance Criteria
- The system checks broker communication preferences → the system determines if broker prefers email notification or Merlin messaging based on broker configuration
- The system checks broker preferences in the broker tables → the system retrieves broker contact information and routing preferences from BK/B1 tables
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CheckBrokerPreferences(["Start Step"])
E_CheckBrokerPreferences(["End Step"])
N_CheckBrokerPreferences_Node0{"The system checks broker
communication preferences"}:::decision N_CheckBrokerPreferences_Node0_action["The system determines if broker
prefers email notification or Merlin
messaging based on broker
configuration"]:::main N_CheckBrokerPreferences_Node0 -- Yes --> N_CheckBrokerPreferences_Node0_action N_CheckBrokerPreferences_Node0_action --> E_CheckBrokerPreferences S_CheckBrokerPreferences --> N_CheckBrokerPreferences_Node0 N_CheckBrokerPreferences_Node1{"The system checks broker
preferences in the broker tables"}:::decision N_CheckBrokerPreferences_Node1_action["The system retrieves broker contact
information and routing preferences
from BKB1 tables"]:::main N_CheckBrokerPreferences_Node1 -- Yes --> N_CheckBrokerPreferences_Node1_action N_CheckBrokerPreferences_Node1_action --> E_CheckBrokerPreferences N_CheckBrokerPreferences_Node0 -- No --> N_CheckBrokerPreferences_Node1 N_CheckBrokerPreferences_Node1 -- No --> E_CheckBrokerPreferences
communication preferences"}:::decision N_CheckBrokerPreferences_Node0_action["The system determines if broker
prefers email notification or Merlin
messaging based on broker
configuration"]:::main N_CheckBrokerPreferences_Node0 -- Yes --> N_CheckBrokerPreferences_Node0_action N_CheckBrokerPreferences_Node0_action --> E_CheckBrokerPreferences S_CheckBrokerPreferences --> N_CheckBrokerPreferences_Node0 N_CheckBrokerPreferences_Node1{"The system checks broker
preferences in the broker tables"}:::decision N_CheckBrokerPreferences_Node1_action["The system retrieves broker contact
information and routing preferences
from BKB1 tables"]:::main N_CheckBrokerPreferences_Node1 -- Yes --> N_CheckBrokerPreferences_Node1_action N_CheckBrokerPreferences_Node1_action --> E_CheckBrokerPreferences N_CheckBrokerPreferences_Node0 -- No --> N_CheckBrokerPreferences_Node1 N_CheckBrokerPreferences_Node1 -- No --> E_CheckBrokerPreferences
File: GCX016.cbl
GIVEN:
Broker information has been retrieved for notification
WHEN:
The system checks broker communication preferences
THEN:
The system determines if broker prefers email notification or Merlin messaging based on broker configuration
File: GCX016.cbl
GIVEN:
A broker notification is required for cargo processing
WHEN:
The system checks broker preferences in the broker tables
THEN:
- The system retrieves broker contact information
- Routing preferences from bk/b1 tables
β Consolidated Acceptance Criteria
- The system routes the message via email → the system sends the hold message to broker's email address and proceeds to send to payer of freight
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RouteviaEmail(["Start Step"])
E_RouteviaEmail(["End Step"])
N_RouteviaEmail_Node0{"The system routes the message via
email"}:::decision N_RouteviaEmail_Node0_action["The system sends the hold message
to broker s email address and
proceeds to send to payer of freight"]:::main N_RouteviaEmail_Node0 -- Yes --> N_RouteviaEmail_Node0_action N_RouteviaEmail_Node0_action --> E_RouteviaEmail S_RouteviaEmail --> N_RouteviaEmail_Node0 N_RouteviaEmail_Node0 -- No --> E_RouteviaEmail
email"}:::decision N_RouteviaEmail_Node0_action["The system sends the hold message
to broker s email address and
proceeds to send to payer of freight"]:::main N_RouteviaEmail_Node0 -- Yes --> N_RouteviaEmail_Node0_action N_RouteviaEmail_Node0_action --> E_RouteviaEmail S_RouteviaEmail --> N_RouteviaEmail_Node0 N_RouteviaEmail_Node0 -- No --> E_RouteviaEmail
File: GCX016.cbl
GIVEN:
Broker preferences indicate email as preferred communication method
WHEN:
The system routes the message via email
THEN:
- The system sends the hold message to broker's email address
- Proceeds to send to payer of freight
β Consolidated Acceptance Criteria
- The system routes the message via Merlin → the system sends the hold message to broker's Merlin ID and proceeds to send to payer of freight
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RouteviaMerlin(["Start Step"])
E_RouteviaMerlin(["End Step"])
N_RouteviaMerlin_Node0{"The system routes the message via
Merlin"}:::decision N_RouteviaMerlin_Node0_action["The system sends the hold message
to broker s Merlin ID and proceeds
to send to payer of freight"]:::main N_RouteviaMerlin_Node0 -- Yes --> N_RouteviaMerlin_Node0_action N_RouteviaMerlin_Node0_action --> E_RouteviaMerlin S_RouteviaMerlin --> N_RouteviaMerlin_Node0 N_RouteviaMerlin_Node0 -- No --> E_RouteviaMerlin
Merlin"}:::decision N_RouteviaMerlin_Node0_action["The system sends the hold message
to broker s Merlin ID and proceeds
to send to payer of freight"]:::main N_RouteviaMerlin_Node0 -- Yes --> N_RouteviaMerlin_Node0_action N_RouteviaMerlin_Node0_action --> E_RouteviaMerlin S_RouteviaMerlin --> N_RouteviaMerlin_Node0 N_RouteviaMerlin_Node0 -- No --> E_RouteviaMerlin
File: GCX016.cbl
GIVEN:
Broker preferences indicate Merlin as preferred communication method
WHEN:
The system routes the message via Merlin
THEN:
- The system sends the hold message to broker's merlin id
- Proceeds to send to payer of freight
β Consolidated Acceptance Criteria
- The system sends message to payer of freight → if payer of freight information exists, the system sends the hold message to payer of freight contact
- If payer of freight notification requirements → release message is sent to the payer of freight if they differ from the cargo broker
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SendtoPayerofFreight(["Start Step"])
E_SendtoPayerofFreight(["End Step"])
N_SendtoPayerofFreight_Node0{"The system sends message to payer
of freight"}:::decision N_SendtoPayerofFreight_Node0_action["If payer of freight information
exists, the system sends the hold
message to payer of freight contact"]:::main N_SendtoPayerofFreight_Node0 -- Yes --> N_SendtoPayerofFreight_Node0_action N_SendtoPayerofFreight_Node0_action --> E_SendtoPayerofFreight S_SendtoPayerofFreight --> N_SendtoPayerofFreight_Node0 N_SendtoPayerofFreight_Node1{"The system evaluates payer of
freight notification requirements"}:::decision N_SendtoPayerofFreight_Node1_action["Release message is sent to the
payer of freight if they differ from
the cargo broker"]:::main N_SendtoPayerofFreight_Node1 -- Yes --> N_SendtoPayerofFreight_Node1_action N_SendtoPayerofFreight_Node1_action --> E_SendtoPayerofFreight N_SendtoPayerofFreight_Node0 -- No --> N_SendtoPayerofFreight_Node1 N_SendtoPayerofFreight_Node1 -- No --> E_SendtoPayerofFreight
of freight"}:::decision N_SendtoPayerofFreight_Node0_action["If payer of freight information
exists, the system sends the hold
message to payer of freight contact"]:::main N_SendtoPayerofFreight_Node0 -- Yes --> N_SendtoPayerofFreight_Node0_action N_SendtoPayerofFreight_Node0_action --> E_SendtoPayerofFreight S_SendtoPayerofFreight --> N_SendtoPayerofFreight_Node0 N_SendtoPayerofFreight_Node1{"The system evaluates payer of
freight notification requirements"}:::decision N_SendtoPayerofFreight_Node1_action["Release message is sent to the
payer of freight if they differ from
the cargo broker"]:::main N_SendtoPayerofFreight_Node1 -- Yes --> N_SendtoPayerofFreight_Node1_action N_SendtoPayerofFreight_Node1_action --> E_SendtoPayerofFreight N_SendtoPayerofFreight_Node0 -- No --> N_SendtoPayerofFreight_Node1 N_SendtoPayerofFreight_Node1 -- No --> E_SendtoPayerofFreight
File: GCX016.cbl
GIVEN:
Hold message has been routed to broker via preferred communication method
WHEN:
The system sends message to payer of freight
THEN:
If payer of freight information exists, the system sends the hold message to payer of freight contact
File: GCX016.cbl
GIVEN:
Broker notification has been completed and payer of freight information is available
WHEN:
The system evaluates payer of freight notification requirements
THEN:
Release message is sent to the payer of freight if they differ from the cargo broker
β Consolidated Acceptance Criteria
- The system sends message to multiple destinations → the system sends the hold message to station-specific Merlin IDs and other configured destinations
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SendtoMultipleDestinations(["Start Step"])
E_SendtoMultipleDestinations(["End Step"])
N_SendtoMultipleDestinations_Node0{"The system sends message to
multiple destinations"}:::decision N_SendtoMultipleDestinations_Node0_action["The system sends the hold message
to station-specific Merlin IDs and
other configured destinations"]:::main N_SendtoMultipleDestinations_Node0 -- Yes --> N_SendtoMultipleDestinations_Node0_action N_SendtoMultipleDestinations_Node0_action --> E_SendtoMultipleDestinations S_SendtoMultipleDestinations --> N_SendtoMultipleDestinations_Node0 N_SendtoMultipleDestinations_Node0 -- No --> E_SendtoMultipleDestinations
multiple destinations"}:::decision N_SendtoMultipleDestinations_Node0_action["The system sends the hold message
to station-specific Merlin IDs and
other configured destinations"]:::main N_SendtoMultipleDestinations_Node0 -- Yes --> N_SendtoMultipleDestinations_Node0_action N_SendtoMultipleDestinations_Node0_action --> E_SendtoMultipleDestinations S_SendtoMultipleDestinations --> N_SendtoMultipleDestinations_Node0 N_SendtoMultipleDestinations_Node0 -- No --> E_SendtoMultipleDestinations
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
Hold message routing to specific recipients has been completed or broker notification is not required
WHEN:
The system sends message to multiple destinations
THEN:
- The system sends the hold message to station-specific merlin ids
- Other configured destinations
β Consolidated Acceptance Criteria
- The system logs the message generation → the system records the hold message generation event including recipients and message details for audit trail
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogHoldMessageGeneration(["Start Step"])
E_LogHoldMessageGeneration(["End Step"])
N_LogHoldMessageGeneration_Node0{"The system logs the message
generation"}:::decision N_LogHoldMessageGeneration_Node0_action["The system records the hold message
generation event including
recipients and message details for
audit trail"]:::main N_LogHoldMessageGeneration_Node0 -- Yes --> N_LogHoldMessageGeneration_Node0_action N_LogHoldMessageGeneration_Node0_action --> E_LogHoldMessageGeneration S_LogHoldMessageGeneration --> N_LogHoldMessageGeneration_Node0 N_LogHoldMessageGeneration_Node0 -- No --> E_LogHoldMessageGeneration
generation"}:::decision N_LogHoldMessageGeneration_Node0_action["The system records the hold message
generation event including
recipients and message details for
audit trail"]:::main N_LogHoldMessageGeneration_Node0 -- Yes --> N_LogHoldMessageGeneration_Node0_action N_LogHoldMessageGeneration_Node0_action --> E_LogHoldMessageGeneration S_LogHoldMessageGeneration --> N_LogHoldMessageGeneration_Node0 N_LogHoldMessageGeneration_Node0 -- No --> E_LogHoldMessageGeneration
File: GCX016.cbl
GIVEN:
Hold message has been sent to all required destinations
WHEN:
The system logs the message generation
THEN:
- The system records the hold message generation event including recipients
- Message details for audit trail
β Consolidated Acceptance Criteria
- The system processes status array elements → each array element is examined in sequence until all elements are processed
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LoopThroughS09AStatusArrayElements(["Start Step"])
E_LoopThroughS09AStatusArrayElements(["End Step"])
N_LoopThroughS09AStatusArrayElements_Node0{"The system processes status array
elements"}:::decision N_LoopThroughS09AStatusArrayElements_Node0_action["Each array element is examined in
sequence until all elements are
processed"]:::main N_LoopThroughS09AStatusArrayElements_Node0 -- Yes --> N_LoopThroughS09AStatusArrayElements_Node0_action N_LoopThroughS09AStatusArrayElements_Node0_action --> E_LoopThroughS09AStatusArrayElements S_LoopThroughS09AStatusArrayElements --> N_LoopThroughS09AStatusArrayElements_Node0 N_LoopThroughS09AStatusArrayElements_Node0 -- No --> E_LoopThroughS09AStatusArrayElements
elements"}:::decision N_LoopThroughS09AStatusArrayElements_Node0_action["Each array element is examined in
sequence until all elements are
processed"]:::main N_LoopThroughS09AStatusArrayElements_Node0 -- Yes --> N_LoopThroughS09AStatusArrayElements_Node0_action N_LoopThroughS09AStatusArrayElements_Node0_action --> E_LoopThroughS09AStatusArrayElements S_LoopThroughS09AStatusArrayElements --> N_LoopThroughS09AStatusArrayElements_Node0 N_LoopThroughS09AStatusArrayElements_Node0 -- No --> E_LoopThroughS09AStatusArrayElements
File: GCX016.cbl
GIVEN:
A populated S09A status array exists for cargo
WHEN:
The system processes status array elements
THEN:
Each array element is examined in sequence until all elements are processed
β Consolidated Acceptance Criteria
- The disposition code is evaluated for type classification → the system determines if the code represents a hold condition based on predefined hold code criteria
- The disposition code is evaluated for type classification → the system determines if the code represents a release condition based on predefined release code criteria
- The disposition code is evaluated for type classification → the system determines if the code represents a PTT condition based on predefined PTT code criteria
- The disposition code is evaluated for type classification → the system determines if the code represents a proceed condition based on predefined proceed code criteria
- The disposition code is evaluated for type classification → the system determines if the code represents an arrival condition based on predefined arrival code criteria
- The disposition code is evaluated for type classification → the system determines if the code represents an export condition based on predefined export code criteria
- The disposition code is evaluated for type classification → the system determines if the code represents an FDA condition based on predefined FDA code criteria
- The system checks the disposition code type against the DC table → the system should determine if the code is a valid status information code and proceed accordingly
- The system checks the disposition code type in the DC table → the system identifies if it is an information code with removal flag set
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CheckDispositionCodeType(["Start Step"])
E_CheckDispositionCodeType(["End Step"])
N_CheckDispositionCodeType_Node0{"The disposition code is evaluated
for type classification"}:::decision N_CheckDispositionCodeType_Node0_action["The system determines if the code
represents a hold condition based on
predefined hold code criteria"]:::main N_CheckDispositionCodeType_Node0 -- Yes --> N_CheckDispositionCodeType_Node0_action N_CheckDispositionCodeType_Node0_action --> E_CheckDispositionCodeType S_CheckDispositionCodeType --> N_CheckDispositionCodeType_Node0 N_CheckDispositionCodeType_Node1{"The disposition code is evaluated
for type classification"}:::decision N_CheckDispositionCodeType_Node1_action["The system determines if the code
represents a release condition based
on predefined release code criteria"]:::main N_CheckDispositionCodeType_Node1 -- Yes --> N_CheckDispositionCodeType_Node1_action N_CheckDispositionCodeType_Node1_action --> E_CheckDispositionCodeType N_CheckDispositionCodeType_Node0 -- No --> N_CheckDispositionCodeType_Node1 N_CheckDispositionCodeType_Node2{"The disposition code is evaluated
for type classification"}:::decision N_CheckDispositionCodeType_Node2_action["The system determines if the code
represents a PTT condition based on
predefined PTT code criteria"]:::main N_CheckDispositionCodeType_Node2 -- Yes --> N_CheckDispositionCodeType_Node2_action N_CheckDispositionCodeType_Node2_action --> E_CheckDispositionCodeType N_CheckDispositionCodeType_Node1 -- No --> N_CheckDispositionCodeType_Node2 N_CheckDispositionCodeType_Node3{"The disposition code is evaluated
for type classification"}:::decision N_CheckDispositionCodeType_Node3_action["The system determines if the code
represents a proceed condition based
on predefined proceed code criteria"]:::main N_CheckDispositionCodeType_Node3 -- Yes --> N_CheckDispositionCodeType_Node3_action N_CheckDispositionCodeType_Node3_action --> E_CheckDispositionCodeType N_CheckDispositionCodeType_Node2 -- No --> N_CheckDispositionCodeType_Node3 N_CheckDispositionCodeType_Node4{"The disposition code is evaluated
for type classification"}:::decision N_CheckDispositionCodeType_Node4_action["The system determines if the code
represents an arrival condition
based on predefined arrival code
criteria"]:::main N_CheckDispositionCodeType_Node4 -- Yes --> N_CheckDispositionCodeType_Node4_action N_CheckDispositionCodeType_Node4_action --> E_CheckDispositionCodeType N_CheckDispositionCodeType_Node3 -- No --> N_CheckDispositionCodeType_Node4 N_CheckDispositionCodeType_Node5{"The disposition code is evaluated
for type classification"}:::decision N_CheckDispositionCodeType_Node5_action["The system determines if the code
represents an export condition based
on predefined export code criteria"]:::main N_CheckDispositionCodeType_Node5 -- Yes --> N_CheckDispositionCodeType_Node5_action N_CheckDispositionCodeType_Node5_action --> E_CheckDispositionCodeType N_CheckDispositionCodeType_Node4 -- No --> N_CheckDispositionCodeType_Node5 N_CheckDispositionCodeType_Node6{"The disposition code is evaluated
for type classification"}:::decision N_CheckDispositionCodeType_Node6_action["The system determines if the code
represents an FDA condition based on
predefined FDA code criteria"]:::main N_CheckDispositionCodeType_Node6 -- Yes --> N_CheckDispositionCodeType_Node6_action N_CheckDispositionCodeType_Node6_action --> E_CheckDispositionCodeType N_CheckDispositionCodeType_Node5 -- No --> N_CheckDispositionCodeType_Node6 N_CheckDispositionCodeType_Node7{"The system checks the disposition
code type against the DC table"}:::decision N_CheckDispositionCodeType_Node7_action["The system should determine if the
code is a valid status information
code and proceed accordingly"]:::main N_CheckDispositionCodeType_Node7 -- Yes --> N_CheckDispositionCodeType_Node7_action N_CheckDispositionCodeType_Node7_action --> E_CheckDispositionCodeType N_CheckDispositionCodeType_Node6 -- No --> N_CheckDispositionCodeType_Node7 N_CheckDispositionCodeType_Node8{"The system checks the disposition
code type in the DC table"}:::decision N_CheckDispositionCodeType_Node8_action["The system identifies if it is an
information code with removal flag
set"]:::main N_CheckDispositionCodeType_Node8 -- Yes --> N_CheckDispositionCodeType_Node8_action N_CheckDispositionCodeType_Node8_action --> E_CheckDispositionCodeType N_CheckDispositionCodeType_Node7 -- No --> N_CheckDispositionCodeType_Node8 N_CheckDispositionCodeType_Node8 -- No --> E_CheckDispositionCodeType
for type classification"}:::decision N_CheckDispositionCodeType_Node0_action["The system determines if the code
represents a hold condition based on
predefined hold code criteria"]:::main N_CheckDispositionCodeType_Node0 -- Yes --> N_CheckDispositionCodeType_Node0_action N_CheckDispositionCodeType_Node0_action --> E_CheckDispositionCodeType S_CheckDispositionCodeType --> N_CheckDispositionCodeType_Node0 N_CheckDispositionCodeType_Node1{"The disposition code is evaluated
for type classification"}:::decision N_CheckDispositionCodeType_Node1_action["The system determines if the code
represents a release condition based
on predefined release code criteria"]:::main N_CheckDispositionCodeType_Node1 -- Yes --> N_CheckDispositionCodeType_Node1_action N_CheckDispositionCodeType_Node1_action --> E_CheckDispositionCodeType N_CheckDispositionCodeType_Node0 -- No --> N_CheckDispositionCodeType_Node1 N_CheckDispositionCodeType_Node2{"The disposition code is evaluated
for type classification"}:::decision N_CheckDispositionCodeType_Node2_action["The system determines if the code
represents a PTT condition based on
predefined PTT code criteria"]:::main N_CheckDispositionCodeType_Node2 -- Yes --> N_CheckDispositionCodeType_Node2_action N_CheckDispositionCodeType_Node2_action --> E_CheckDispositionCodeType N_CheckDispositionCodeType_Node1 -- No --> N_CheckDispositionCodeType_Node2 N_CheckDispositionCodeType_Node3{"The disposition code is evaluated
for type classification"}:::decision N_CheckDispositionCodeType_Node3_action["The system determines if the code
represents a proceed condition based
on predefined proceed code criteria"]:::main N_CheckDispositionCodeType_Node3 -- Yes --> N_CheckDispositionCodeType_Node3_action N_CheckDispositionCodeType_Node3_action --> E_CheckDispositionCodeType N_CheckDispositionCodeType_Node2 -- No --> N_CheckDispositionCodeType_Node3 N_CheckDispositionCodeType_Node4{"The disposition code is evaluated
for type classification"}:::decision N_CheckDispositionCodeType_Node4_action["The system determines if the code
represents an arrival condition
based on predefined arrival code
criteria"]:::main N_CheckDispositionCodeType_Node4 -- Yes --> N_CheckDispositionCodeType_Node4_action N_CheckDispositionCodeType_Node4_action --> E_CheckDispositionCodeType N_CheckDispositionCodeType_Node3 -- No --> N_CheckDispositionCodeType_Node4 N_CheckDispositionCodeType_Node5{"The disposition code is evaluated
for type classification"}:::decision N_CheckDispositionCodeType_Node5_action["The system determines if the code
represents an export condition based
on predefined export code criteria"]:::main N_CheckDispositionCodeType_Node5 -- Yes --> N_CheckDispositionCodeType_Node5_action N_CheckDispositionCodeType_Node5_action --> E_CheckDispositionCodeType N_CheckDispositionCodeType_Node4 -- No --> N_CheckDispositionCodeType_Node5 N_CheckDispositionCodeType_Node6{"The disposition code is evaluated
for type classification"}:::decision N_CheckDispositionCodeType_Node6_action["The system determines if the code
represents an FDA condition based on
predefined FDA code criteria"]:::main N_CheckDispositionCodeType_Node6 -- Yes --> N_CheckDispositionCodeType_Node6_action N_CheckDispositionCodeType_Node6_action --> E_CheckDispositionCodeType N_CheckDispositionCodeType_Node5 -- No --> N_CheckDispositionCodeType_Node6 N_CheckDispositionCodeType_Node7{"The system checks the disposition
code type against the DC table"}:::decision N_CheckDispositionCodeType_Node7_action["The system should determine if the
code is a valid status information
code and proceed accordingly"]:::main N_CheckDispositionCodeType_Node7 -- Yes --> N_CheckDispositionCodeType_Node7_action N_CheckDispositionCodeType_Node7_action --> E_CheckDispositionCodeType N_CheckDispositionCodeType_Node6 -- No --> N_CheckDispositionCodeType_Node7 N_CheckDispositionCodeType_Node8{"The system checks the disposition
code type in the DC table"}:::decision N_CheckDispositionCodeType_Node8_action["The system identifies if it is an
information code with removal flag
set"]:::main N_CheckDispositionCodeType_Node8 -- Yes --> N_CheckDispositionCodeType_Node8_action N_CheckDispositionCodeType_Node8_action --> E_CheckDispositionCodeType N_CheckDispositionCodeType_Node7 -- No --> N_CheckDispositionCodeType_Node8 N_CheckDispositionCodeType_Node8 -- No --> E_CheckDispositionCodeType
File: GCX016.cbl
GIVEN:
A status array element contains a disposition code
WHEN:
The disposition code is evaluated for type classification
THEN:
The system determines if the code represents a hold condition based on predefined hold code criteria
File: GCX016.cbl
GIVEN:
A status array element contains a disposition code
WHEN:
The disposition code is evaluated for type classification
THEN:
The system determines if the code represents a release condition based on predefined release code criteria
File: GCX016.cbl
GIVEN:
A status array element contains a disposition code
WHEN:
The disposition code is evaluated for type classification
THEN:
The system determines if the code represents a PTT condition based on predefined PTT code criteria
File: GCX016.cbl
GIVEN:
A status array element contains a disposition code
WHEN:
The disposition code is evaluated for type classification
THEN:
The system determines if the code represents a proceed condition based on predefined proceed code criteria
File: GCX016.cbl
GIVEN:
A status array element contains a disposition code
WHEN:
The disposition code is evaluated for type classification
THEN:
The system determines if the code represents an arrival condition based on predefined arrival code criteria
File: GCX016.cbl
GIVEN:
A status array element contains a disposition code
WHEN:
The disposition code is evaluated for type classification
THEN:
The system determines if the code represents an export condition based on predefined export code criteria
File: GCX016.cbl
GIVEN:
A status array element contains a disposition code
WHEN:
The disposition code is evaluated for type classification
THEN:
The system determines if the code represents an FDA condition based on predefined FDA code criteria
File: GCX016.cbl
GIVEN:
A disposition code has been received for processing
WHEN:
The system checks the disposition code type against the DC table
THEN:
- The system should determine if the code is a valid status information code
- Proceed accordingly
File: GCX016.cbl
GIVEN:
A disposition code is received for processing
WHEN:
The system checks the disposition code type in the DC table
THEN:
The system identifies if it is an information code with removal flag set
β Consolidated Acceptance Criteria
- The hold code is processed → the cargo hold flag is set to true
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetHoldFlag(["Start Step"])
E_SetHoldFlag(["End Step"])
N_SetHoldFlag_Node0{"The hold code is processed"}:::decision
N_SetHoldFlag_Node0_action["The cargo hold flag is set to true"]:::main
N_SetHoldFlag_Node0 -- Yes --> N_SetHoldFlag_Node0_action
N_SetHoldFlag_Node0_action --> E_SetHoldFlag
S_SetHoldFlag --> N_SetHoldFlag_Node0
N_SetHoldFlag_Node0 -- No --> E_SetHoldFlag
File: GCX016.cbl
GIVEN:
A disposition code is classified as a hold code
WHEN:
The hold code is processed
THEN:
The cargo hold flag is set to true
β Consolidated Acceptance Criteria
- If combined flag states → the system determines if both hold and release conditions exist simultaneously
- The system validates PTT quantity criteria → the system determines if the PTT quantity is valid and meets threshold requirements
- The system compares release quantity to total cargo quantity → the system determines if the release is partial (release quantity less than total quantity) or complete
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AnalyzeCombinedFlags(["Start Step"])
E_AnalyzeCombinedFlags(["End Step"])
N_AnalyzeCombinedFlags_Node0{"The system evaluates combined flag
states"}:::decision N_AnalyzeCombinedFlags_Node0_action["The system determines if both hold
and release conditions exist
simultaneously"]:::main N_AnalyzeCombinedFlags_Node0 -- Yes --> N_AnalyzeCombinedFlags_Node0_action N_AnalyzeCombinedFlags_Node0_action --> E_AnalyzeCombinedFlags S_AnalyzeCombinedFlags --> N_AnalyzeCombinedFlags_Node0 N_AnalyzeCombinedFlags_Node1{"The system validates PTT quantity
criteria"}:::decision N_AnalyzeCombinedFlags_Node1_action["The system determines if the PTT
quantity is valid and meets
threshold requirements"]:::main N_AnalyzeCombinedFlags_Node1 -- Yes --> N_AnalyzeCombinedFlags_Node1_action N_AnalyzeCombinedFlags_Node1_action --> E_AnalyzeCombinedFlags N_AnalyzeCombinedFlags_Node0 -- No --> N_AnalyzeCombinedFlags_Node1 N_AnalyzeCombinedFlags_Node2{"The system compares release
quantity to total cargo quantity"}:::decision N_AnalyzeCombinedFlags_Node2_action["The system determines if the
release is partial release quantity
less than total quantity or complete"]:::main N_AnalyzeCombinedFlags_Node2 -- Yes --> N_AnalyzeCombinedFlags_Node2_action N_AnalyzeCombinedFlags_Node2_action --> E_AnalyzeCombinedFlags N_AnalyzeCombinedFlags_Node1 -- No --> N_AnalyzeCombinedFlags_Node2 N_AnalyzeCombinedFlags_Node2 -- No --> E_AnalyzeCombinedFlags
states"}:::decision N_AnalyzeCombinedFlags_Node0_action["The system determines if both hold
and release conditions exist
simultaneously"]:::main N_AnalyzeCombinedFlags_Node0 -- Yes --> N_AnalyzeCombinedFlags_Node0_action N_AnalyzeCombinedFlags_Node0_action --> E_AnalyzeCombinedFlags S_AnalyzeCombinedFlags --> N_AnalyzeCombinedFlags_Node0 N_AnalyzeCombinedFlags_Node1{"The system validates PTT quantity
criteria"}:::decision N_AnalyzeCombinedFlags_Node1_action["The system determines if the PTT
quantity is valid and meets
threshold requirements"]:::main N_AnalyzeCombinedFlags_Node1 -- Yes --> N_AnalyzeCombinedFlags_Node1_action N_AnalyzeCombinedFlags_Node1_action --> E_AnalyzeCombinedFlags N_AnalyzeCombinedFlags_Node0 -- No --> N_AnalyzeCombinedFlags_Node1 N_AnalyzeCombinedFlags_Node2{"The system compares release
quantity to total cargo quantity"}:::decision N_AnalyzeCombinedFlags_Node2_action["The system determines if the
release is partial release quantity
less than total quantity or complete"]:::main N_AnalyzeCombinedFlags_Node2 -- Yes --> N_AnalyzeCombinedFlags_Node2_action N_AnalyzeCombinedFlags_Node2_action --> E_AnalyzeCombinedFlags N_AnalyzeCombinedFlags_Node1 -- No --> N_AnalyzeCombinedFlags_Node2 N_AnalyzeCombinedFlags_Node2 -- No --> E_AnalyzeCombinedFlags
File: GCX016.cbl
GIVEN:
All status array elements have been processed and flags are set
WHEN:
The system evaluates combined flag states
THEN:
- The system determines if both hold
- Release conditions exist simultaneously
File: GCX016.cbl
GIVEN:
PTT flag is set and PTT quantity is available
WHEN:
The system validates PTT quantity criteria
THEN:
- The system determines if the ptt quantity is valid
- Meets threshold requirements
File: GCX016.cbl
GIVEN:
Release flag is set and release quantity is available
WHEN:
The system compares release quantity to total cargo quantity
THEN:
The system determines if the release is partial (release quantity less than total quantity) or complete
β Consolidated Acceptance Criteria
- The system determines final cargo state → the final hold status is established considering border holds, destination holds, and other hold conditions
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetFinalHoldStatus(["Start Step"])
E_SetFinalHoldStatus(["End Step"])
N_SetFinalHoldStatus_Node0{"The system determines final cargo
state"}:::decision N_SetFinalHoldStatus_Node0_action["The final hold status is
established considering border
holds, destination holds, and other
hold conditions"]:::main N_SetFinalHoldStatus_Node0 -- Yes --> N_SetFinalHoldStatus_Node0_action N_SetFinalHoldStatus_Node0_action --> E_SetFinalHoldStatus S_SetFinalHoldStatus --> N_SetFinalHoldStatus_Node0 N_SetFinalHoldStatus_Node0 -- No --> E_SetFinalHoldStatus
state"}:::decision N_SetFinalHoldStatus_Node0_action["The final hold status is
established considering border
holds, destination holds, and other
hold conditions"]:::main N_SetFinalHoldStatus_Node0 -- Yes --> N_SetFinalHoldStatus_Node0_action N_SetFinalHoldStatus_Node0_action --> E_SetFinalHoldStatus S_SetFinalHoldStatus --> N_SetFinalHoldStatus_Node0 N_SetFinalHoldStatus_Node0 -- No --> E_SetFinalHoldStatus
File: GCX016.cbl
GIVEN:
Hold flags have been set during status array analysis
WHEN:
The system determines final cargo state
THEN:
The final hold status is established considering border holds, destination holds, and other hold conditions
β Consolidated Acceptance Criteria
- The system determines final cargo state → the final release status is established considering full release, partial release, and release quantities
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetFinalReleaseStatus(["Start Step"])
E_SetFinalReleaseStatus(["End Step"])
N_SetFinalReleaseStatus_Node0{"The system determines final cargo
state"}:::decision N_SetFinalReleaseStatus_Node0_action["The final release status is
established considering full
release, partial release, and
release quantities"]:::main N_SetFinalReleaseStatus_Node0 -- Yes --> N_SetFinalReleaseStatus_Node0_action N_SetFinalReleaseStatus_Node0_action --> E_SetFinalReleaseStatus S_SetFinalReleaseStatus --> N_SetFinalReleaseStatus_Node0 N_SetFinalReleaseStatus_Node0 -- No --> E_SetFinalReleaseStatus
state"}:::decision N_SetFinalReleaseStatus_Node0_action["The final release status is
established considering full
release, partial release, and
release quantities"]:::main N_SetFinalReleaseStatus_Node0 -- Yes --> N_SetFinalReleaseStatus_Node0_action N_SetFinalReleaseStatus_Node0_action --> E_SetFinalReleaseStatus S_SetFinalReleaseStatus --> N_SetFinalReleaseStatus_Node0 N_SetFinalReleaseStatus_Node0 -- No --> E_SetFinalReleaseStatus
File: GCX016.cbl
GIVEN:
Release flags and quantities have been determined during status array analysis
WHEN:
The system determines final cargo state
THEN:
The final release status is established considering full release, partial release, and release quantities
β Consolidated Acceptance Criteria
- The system determines final cargo state → the final PTT status is established if PTT quantity meets threshold requirements
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetFinalPTTStatus(["Start Step"])
E_SetFinalPTTStatus(["End Step"])
N_SetFinalPTTStatus_Node0{"The system determines final cargo
state"}:::decision N_SetFinalPTTStatus_Node0_action["The final PTT status is established
if PTT quantity meets threshold
requirements"]:::main N_SetFinalPTTStatus_Node0 -- Yes --> N_SetFinalPTTStatus_Node0_action N_SetFinalPTTStatus_Node0_action --> E_SetFinalPTTStatus S_SetFinalPTTStatus --> N_SetFinalPTTStatus_Node0 N_SetFinalPTTStatus_Node0 -- No --> E_SetFinalPTTStatus
state"}:::decision N_SetFinalPTTStatus_Node0_action["The final PTT status is established
if PTT quantity meets threshold
requirements"]:::main N_SetFinalPTTStatus_Node0 -- Yes --> N_SetFinalPTTStatus_Node0_action N_SetFinalPTTStatus_Node0_action --> E_SetFinalPTTStatus S_SetFinalPTTStatus --> N_SetFinalPTTStatus_Node0 N_SetFinalPTTStatus_Node0 -- No --> E_SetFinalPTTStatus
File: GCX016.cbl
GIVEN:
PTT flags and quantities have been validated during status array analysis
WHEN:
The system determines final cargo state
THEN:
The final PTT status is established if PTT quantity meets threshold requirements
β Consolidated Acceptance Criteria
- The system consolidates all status information → the final cargo state is determined considering the priority and combination of hold, release, PTT, proceed, arrival, export, and FDA conditions
- The system determines final cargo state → the cargo state is determined based on the combination of status flags and business rules
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_DetermineFinalCargoState(["Start Step"])
E_DetermineFinalCargoState(["End Step"])
N_DetermineFinalCargoState_Node0{"The system consolidates all status
information"}:::decision N_DetermineFinalCargoState_Node0_action["The final cargo state is determined
considering the priority and
combination of hold, release, PTT,
proceed, arrival, export, and FDA
conditions"]:::main N_DetermineFinalCargoState_Node0 -- Yes --> N_DetermineFinalCargoState_Node0_action N_DetermineFinalCargoState_Node0_action --> E_DetermineFinalCargoState S_DetermineFinalCargoState --> N_DetermineFinalCargoState_Node0 N_DetermineFinalCargoState_Node1{"The system determines final cargo
state"}:::decision N_DetermineFinalCargoState_Node1_action["The cargo state is determined based
on the combination of status flags
and business rules"]:::main N_DetermineFinalCargoState_Node1 -- Yes --> N_DetermineFinalCargoState_Node1_action N_DetermineFinalCargoState_Node1_action --> E_DetermineFinalCargoState N_DetermineFinalCargoState_Node0 -- No --> N_DetermineFinalCargoState_Node1 N_DetermineFinalCargoState_Node1 -- No --> E_DetermineFinalCargoState
information"}:::decision N_DetermineFinalCargoState_Node0_action["The final cargo state is determined
considering the priority and
combination of hold, release, PTT,
proceed, arrival, export, and FDA
conditions"]:::main N_DetermineFinalCargoState_Node0 -- Yes --> N_DetermineFinalCargoState_Node0_action N_DetermineFinalCargoState_Node0_action --> E_DetermineFinalCargoState S_DetermineFinalCargoState --> N_DetermineFinalCargoState_Node0 N_DetermineFinalCargoState_Node1{"The system determines final cargo
state"}:::decision N_DetermineFinalCargoState_Node1_action["The cargo state is determined based
on the combination of status flags
and business rules"]:::main N_DetermineFinalCargoState_Node1 -- Yes --> N_DetermineFinalCargoState_Node1_action N_DetermineFinalCargoState_Node1_action --> E_DetermineFinalCargoState N_DetermineFinalCargoState_Node0 -- No --> N_DetermineFinalCargoState_Node1 N_DetermineFinalCargoState_Node1 -- No --> E_DetermineFinalCargoState
File: GCX016.cbl
GIVEN:
All individual status flags have been set and analyzed
WHEN:
The system consolidates all status information
THEN:
- The final cargo state is determined considering the priority
- Combination of hold, release, ptt, proceed, arrival, export, and fda conditions
File: GCX016.cbl
GIVEN:
All status array elements have been analyzed and flags are set
WHEN:
The system determines final cargo state
THEN:
- The cargo state is determined based on the combination of status flags
- Business rules
β Consolidated Acceptance Criteria
- The manual release flag is set to true → the destination index should be cleared and Canadian manifest coordination should be initiated
- The system checks for manual release flag in cargo status → the system identifies if manual release conditions apply and proceeds to validate manual release requirements
- The manual release flag is set to true → the system clears the destination index and processes Canadian manifest coordination
- The manual release flag is set to true → the system sets manual release status, clears the destination index, and processes Canadian manifest coordination
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ManualReleaseFlagSet(["Start Step"])
E_ManualReleaseFlagSet(["End Step"])
N_ManualReleaseFlagSet_Node0{"The manual release flag is set to
true"}:::decision N_ManualReleaseFlagSet_Node0_action["The destination index should be
cleared and Canadian manifest
coordination should be initiated"]:::main N_ManualReleaseFlagSet_Node0 -- Yes --> N_ManualReleaseFlagSet_Node0_action N_ManualReleaseFlagSet_Node0_action --> E_ManualReleaseFlagSet S_ManualReleaseFlagSet --> N_ManualReleaseFlagSet_Node0 N_ManualReleaseFlagSet_Node1{"The system checks for manual
release flag in cargo status"}:::decision N_ManualReleaseFlagSet_Node1_action["The system identifies if manual
release conditions apply and
proceeds to validate manual release
requirements"]:::main N_ManualReleaseFlagSet_Node1 -- Yes --> N_ManualReleaseFlagSet_Node1_action N_ManualReleaseFlagSet_Node1_action --> E_ManualReleaseFlagSet N_ManualReleaseFlagSet_Node0 -- No --> N_ManualReleaseFlagSet_Node1 N_ManualReleaseFlagSet_Node2{"The manual release flag is set to
true"}:::decision N_ManualReleaseFlagSet_Node2_action["The system clears the destination
index and processes Canadian
manifest coordination"]:::main N_ManualReleaseFlagSet_Node2 -- Yes --> N_ManualReleaseFlagSet_Node2_action N_ManualReleaseFlagSet_Node2_action --> E_ManualReleaseFlagSet N_ManualReleaseFlagSet_Node1 -- No --> N_ManualReleaseFlagSet_Node2 N_ManualReleaseFlagSet_Node3{"The manual release flag is set to
true"}:::decision N_ManualReleaseFlagSet_Node3_action["The system sets manual release
status, clears the destination
index, and processes Canadian
manifest coordination"]:::main N_ManualReleaseFlagSet_Node3 -- Yes --> N_ManualReleaseFlagSet_Node3_action N_ManualReleaseFlagSet_Node3_action --> E_ManualReleaseFlagSet N_ManualReleaseFlagSet_Node2 -- No --> N_ManualReleaseFlagSet_Node3 N_ManualReleaseFlagSet_Node3 -- No --> E_ManualReleaseFlagSet
true"}:::decision N_ManualReleaseFlagSet_Node0_action["The destination index should be
cleared and Canadian manifest
coordination should be initiated"]:::main N_ManualReleaseFlagSet_Node0 -- Yes --> N_ManualReleaseFlagSet_Node0_action N_ManualReleaseFlagSet_Node0_action --> E_ManualReleaseFlagSet S_ManualReleaseFlagSet --> N_ManualReleaseFlagSet_Node0 N_ManualReleaseFlagSet_Node1{"The system checks for manual
release flag in cargo status"}:::decision N_ManualReleaseFlagSet_Node1_action["The system identifies if manual
release conditions apply and
proceeds to validate manual release
requirements"]:::main N_ManualReleaseFlagSet_Node1 -- Yes --> N_ManualReleaseFlagSet_Node1_action N_ManualReleaseFlagSet_Node1_action --> E_ManualReleaseFlagSet N_ManualReleaseFlagSet_Node0 -- No --> N_ManualReleaseFlagSet_Node1 N_ManualReleaseFlagSet_Node2{"The manual release flag is set to
true"}:::decision N_ManualReleaseFlagSet_Node2_action["The system clears the destination
index and processes Canadian
manifest coordination"]:::main N_ManualReleaseFlagSet_Node2 -- Yes --> N_ManualReleaseFlagSet_Node2_action N_ManualReleaseFlagSet_Node2_action --> E_ManualReleaseFlagSet N_ManualReleaseFlagSet_Node1 -- No --> N_ManualReleaseFlagSet_Node2 N_ManualReleaseFlagSet_Node3{"The manual release flag is set to
true"}:::decision N_ManualReleaseFlagSet_Node3_action["The system sets manual release
status, clears the destination
index, and processes Canadian
manifest coordination"]:::main N_ManualReleaseFlagSet_Node3 -- Yes --> N_ManualReleaseFlagSet_Node3_action N_ManualReleaseFlagSet_Node3_action --> E_ManualReleaseFlagSet N_ManualReleaseFlagSet_Node2 -- No --> N_ManualReleaseFlagSet_Node3 N_ManualReleaseFlagSet_Node3 -- No --> E_ManualReleaseFlagSet
File: GCX016.cbl
GIVEN:
A cargo record is being processed for status determination
WHEN:
The manual release flag is set to true
THEN:
- The destination index should be cleared
- Canadian manifest coordination should be initiated
File: GCX016.cbl
GIVEN:
A cargo record exists with status information
WHEN:
The system checks for manual release flag in cargo status
THEN:
- The system identifies if manual release conditions apply
- Proceeds to validate manual release requirements
File: GCX016.cbl
GIVEN:
A cargo record is being processed for status transition
WHEN:
The manual release flag is set to true
THEN:
- The system clears the destination index
- Processes canadian manifest coordination
File: GCX016.cbl
GIVEN:
A cargo record is being processed for final status determination
WHEN:
The manual release flag is set to true
THEN:
The system sets manual release status, clears the destination index, and processes Canadian manifest coordination
β Consolidated Acceptance Criteria
- The cargo currently has PTT status assigned → the current PTT status should be saved for potential restoration later in the process
- If if PTT status is present in the cargo status → the system sets a flag indicating PTT status presence and proceeds to either save PTT status or continue with normal processing
- PTT status is currently present on the cargo → the system saves and preserves the current PTT status
- If PTT status conditions → the system validates PTT quantities against established thresholds and maintains PTT status if conditions are met
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_PTTStatusPresent(["Start Step"])
E_PTTStatusPresent(["End Step"])
N_PTTStatusPresent_Node0{"The cargo currently has PTT status
assigned"}:::decision N_PTTStatusPresent_Node0_action["The current PTT status should be
saved for potential restoration
later in the process"]:::main N_PTTStatusPresent_Node0 -- Yes --> N_PTTStatusPresent_Node0_action N_PTTStatusPresent_Node0_action --> E_PTTStatusPresent S_PTTStatusPresent --> N_PTTStatusPresent_Node0 N_PTTStatusPresent_Node1{"The system evaluates if PTT status
is present in the cargo status"}:::decision N_PTTStatusPresent_Node1_action["The system sets a flag indicating
PTT status presence and proceeds to
either save PTT status or continue
with normal processing"]:::main N_PTTStatusPresent_Node1 -- Yes --> N_PTTStatusPresent_Node1_action N_PTTStatusPresent_Node1_action --> E_PTTStatusPresent N_PTTStatusPresent_Node0 -- No --> N_PTTStatusPresent_Node1 N_PTTStatusPresent_Node2{"PTT status is currently present on
the cargo"}:::decision N_PTTStatusPresent_Node2_action["The system saves and preserves the
current PTT status"]:::main N_PTTStatusPresent_Node2 -- Yes --> N_PTTStatusPresent_Node2_action N_PTTStatusPresent_Node2_action --> E_PTTStatusPresent N_PTTStatusPresent_Node1 -- No --> N_PTTStatusPresent_Node2 N_PTTStatusPresent_Node3{"The system evaluates PTT status
conditions"}:::decision N_PTTStatusPresent_Node3_action["The system validates PTT quantities
against established thresholds and
maintains PTT status if conditions
are met"]:::main N_PTTStatusPresent_Node3 -- Yes --> N_PTTStatusPresent_Node3_action N_PTTStatusPresent_Node3_action --> E_PTTStatusPresent N_PTTStatusPresent_Node2 -- No --> N_PTTStatusPresent_Node3 N_PTTStatusPresent_Node3 -- No --> E_PTTStatusPresent
assigned"}:::decision N_PTTStatusPresent_Node0_action["The current PTT status should be
saved for potential restoration
later in the process"]:::main N_PTTStatusPresent_Node0 -- Yes --> N_PTTStatusPresent_Node0_action N_PTTStatusPresent_Node0_action --> E_PTTStatusPresent S_PTTStatusPresent --> N_PTTStatusPresent_Node0 N_PTTStatusPresent_Node1{"The system evaluates if PTT status
is present in the cargo status"}:::decision N_PTTStatusPresent_Node1_action["The system sets a flag indicating
PTT status presence and proceeds to
either save PTT status or continue
with normal processing"]:::main N_PTTStatusPresent_Node1 -- Yes --> N_PTTStatusPresent_Node1_action N_PTTStatusPresent_Node1_action --> E_PTTStatusPresent N_PTTStatusPresent_Node0 -- No --> N_PTTStatusPresent_Node1 N_PTTStatusPresent_Node2{"PTT status is currently present on
the cargo"}:::decision N_PTTStatusPresent_Node2_action["The system saves and preserves the
current PTT status"]:::main N_PTTStatusPresent_Node2 -- Yes --> N_PTTStatusPresent_Node2_action N_PTTStatusPresent_Node2_action --> E_PTTStatusPresent N_PTTStatusPresent_Node1 -- No --> N_PTTStatusPresent_Node2 N_PTTStatusPresent_Node3{"The system evaluates PTT status
conditions"}:::decision N_PTTStatusPresent_Node3_action["The system validates PTT quantities
against established thresholds and
maintains PTT status if conditions
are met"]:::main N_PTTStatusPresent_Node3 -- Yes --> N_PTTStatusPresent_Node3_action N_PTTStatusPresent_Node3_action --> E_PTTStatusPresent N_PTTStatusPresent_Node2 -- No --> N_PTTStatusPresent_Node3 N_PTTStatusPresent_Node3 -- No --> E_PTTStatusPresent
File: GCX016.cbl
GIVEN:
A cargo record is being processed for status updates
WHEN:
The cargo currently has PTT status assigned
THEN:
The current PTT status should be saved for potential restoration later in the process
File: GCX016.cbl
GIVEN:
A cargo record with current status information
WHEN:
The system evaluates if PTT status is present in the cargo status
THEN:
- The system sets a flag indicating ptt status presence
- Proceeds to either save ptt status or continue with normal processing
File: GCX016.cbl
GIVEN:
A cargo record has existing status information
WHEN:
PTT status is currently present on the cargo
THEN:
- The system saves
- Preserves the current ptt status
File: GCX016.cbl
GIVEN:
A cargo record has PTT status indicators present
WHEN:
The system evaluates PTT status conditions
THEN:
- The system validates ptt quantities against established thresholds
- Maintains ptt status if conditions are met
β Consolidated Acceptance Criteria
- The released quantity is less than the total quantity → the cargo status should be set to hold on piece counts to reflect partial release
- The system compares released quantity to total quantity → if released quantity is less than total quantity, maintain PTT status for partial release, otherwise proceed with full release processing
- The released quantity is less than the total quantity → the system sets hold on piece counts status to indicate partial release
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ReleasedQuantityTotalQuantity(["Start Step"])
E_ReleasedQuantityTotalQuantity(["End Step"])
N_ReleasedQuantityTotalQuantity_Node0{"The released quantity is less than
the total quantity"}:::decision N_ReleasedQuantityTotalQuantity_Node0_action["The cargo status should be set to
hold on piece counts to reflect
partial release"]:::main N_ReleasedQuantityTotalQuantity_Node0 -- Yes --> N_ReleasedQuantityTotalQuantity_Node0_action N_ReleasedQuantityTotalQuantity_Node0_action --> E_ReleasedQuantityTotalQuantity S_ReleasedQuantityTotalQuantity --> N_ReleasedQuantityTotalQuantity_Node0 N_ReleasedQuantityTotalQuantity_Node1{"The system compares released
quantity to total quantity"}:::decision N_ReleasedQuantityTotalQuantity_Node1_action["If released quantity is less than
total quantity, maintain PTT status
for partial release, otherwise
proceed with full release processing"]:::main N_ReleasedQuantityTotalQuantity_Node1 -- Yes --> N_ReleasedQuantityTotalQuantity_Node1_action N_ReleasedQuantityTotalQuantity_Node1_action --> E_ReleasedQuantityTotalQuantity N_ReleasedQuantityTotalQuantity_Node0 -- No --> N_ReleasedQuantityTotalQuantity_Node1 N_ReleasedQuantityTotalQuantity_Node2{"The released quantity is less than
the total quantity"}:::decision N_ReleasedQuantityTotalQuantity_Node2_action["The system sets hold on piece
counts status to indicate partial
release"]:::main N_ReleasedQuantityTotalQuantity_Node2 -- Yes --> N_ReleasedQuantityTotalQuantity_Node2_action N_ReleasedQuantityTotalQuantity_Node2_action --> E_ReleasedQuantityTotalQuantity N_ReleasedQuantityTotalQuantity_Node1 -- No --> N_ReleasedQuantityTotalQuantity_Node2 N_ReleasedQuantityTotalQuantity_Node2 -- No --> E_ReleasedQuantityTotalQuantity
the total quantity"}:::decision N_ReleasedQuantityTotalQuantity_Node0_action["The cargo status should be set to
hold on piece counts to reflect
partial release"]:::main N_ReleasedQuantityTotalQuantity_Node0 -- Yes --> N_ReleasedQuantityTotalQuantity_Node0_action N_ReleasedQuantityTotalQuantity_Node0_action --> E_ReleasedQuantityTotalQuantity S_ReleasedQuantityTotalQuantity --> N_ReleasedQuantityTotalQuantity_Node0 N_ReleasedQuantityTotalQuantity_Node1{"The system compares released
quantity to total quantity"}:::decision N_ReleasedQuantityTotalQuantity_Node1_action["If released quantity is less than
total quantity, maintain PTT status
for partial release, otherwise
proceed with full release processing"]:::main N_ReleasedQuantityTotalQuantity_Node1 -- Yes --> N_ReleasedQuantityTotalQuantity_Node1_action N_ReleasedQuantityTotalQuantity_Node1_action --> E_ReleasedQuantityTotalQuantity N_ReleasedQuantityTotalQuantity_Node0 -- No --> N_ReleasedQuantityTotalQuantity_Node1 N_ReleasedQuantityTotalQuantity_Node2{"The released quantity is less than
the total quantity"}:::decision N_ReleasedQuantityTotalQuantity_Node2_action["The system sets hold on piece
counts status to indicate partial
release"]:::main N_ReleasedQuantityTotalQuantity_Node2 -- Yes --> N_ReleasedQuantityTotalQuantity_Node2_action N_ReleasedQuantityTotalQuantity_Node2_action --> E_ReleasedQuantityTotalQuantity N_ReleasedQuantityTotalQuantity_Node1 -- No --> N_ReleasedQuantityTotalQuantity_Node2 N_ReleasedQuantityTotalQuantity_Node2 -- No --> E_ReleasedQuantityTotalQuantity
File: GCX016.cbl
GIVEN:
A cargo record with defined total quantity and released quantity
WHEN:
The released quantity is less than the total quantity
THEN:
The cargo status should be set to hold on piece counts to reflect partial release
File: GCX016.cbl
GIVEN:
PTT quantities have been validated
WHEN:
The system compares released quantity to total quantity
THEN:
If released quantity is less than total quantity, maintain PTT status for partial release, otherwise proceed with full release processing
File: GCX016.cbl
GIVEN:
A cargo record has both released quantity and total quantity values
WHEN:
The released quantity is less than the total quantity
THEN:
The system sets hold on piece counts status to indicate partial release
β Consolidated Acceptance Criteria
- The released quantity equals the total quantity → the system should process full release and clear the destination index
- The released quantity equals the total quantity exactly → the system sets full release status and clears the destination index
- The system compares released quantity to total quantity → if released quantity equals total quantity, set full release status and clear hold flags, otherwise set partial release status
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ReleasedQuantityTotalQuantity(["Start Step"])
E_ReleasedQuantityTotalQuantity(["End Step"])
N_ReleasedQuantityTotalQuantity_Node0{"The released quantity equals the
total quantity"}:::decision N_ReleasedQuantityTotalQuantity_Node0_action["The system should process full
release and clear the destination
index"]:::main N_ReleasedQuantityTotalQuantity_Node0 -- Yes --> N_ReleasedQuantityTotalQuantity_Node0_action N_ReleasedQuantityTotalQuantity_Node0_action --> E_ReleasedQuantityTotalQuantity S_ReleasedQuantityTotalQuantity --> N_ReleasedQuantityTotalQuantity_Node0 N_ReleasedQuantityTotalQuantity_Node1{"The released quantity equals the
total quantity exactly"}:::decision N_ReleasedQuantityTotalQuantity_Node1_action["The system sets full release status
and clears the destination index"]:::main N_ReleasedQuantityTotalQuantity_Node1 -- Yes --> N_ReleasedQuantityTotalQuantity_Node1_action N_ReleasedQuantityTotalQuantity_Node1_action --> E_ReleasedQuantityTotalQuantity N_ReleasedQuantityTotalQuantity_Node0 -- No --> N_ReleasedQuantityTotalQuantity_Node1 N_ReleasedQuantityTotalQuantity_Node2{"The system compares released
quantity to total quantity"}:::decision N_ReleasedQuantityTotalQuantity_Node2_action["If released quantity equals total
quantity, set full release status
and clear hold flags, otherwise set
partial release status"]:::main N_ReleasedQuantityTotalQuantity_Node2 -- Yes --> N_ReleasedQuantityTotalQuantity_Node2_action N_ReleasedQuantityTotalQuantity_Node2_action --> E_ReleasedQuantityTotalQuantity N_ReleasedQuantityTotalQuantity_Node1 -- No --> N_ReleasedQuantityTotalQuantity_Node2 N_ReleasedQuantityTotalQuantity_Node2 -- No --> E_ReleasedQuantityTotalQuantity
total quantity"}:::decision N_ReleasedQuantityTotalQuantity_Node0_action["The system should process full
release and clear the destination
index"]:::main N_ReleasedQuantityTotalQuantity_Node0 -- Yes --> N_ReleasedQuantityTotalQuantity_Node0_action N_ReleasedQuantityTotalQuantity_Node0_action --> E_ReleasedQuantityTotalQuantity S_ReleasedQuantityTotalQuantity --> N_ReleasedQuantityTotalQuantity_Node0 N_ReleasedQuantityTotalQuantity_Node1{"The released quantity equals the
total quantity exactly"}:::decision N_ReleasedQuantityTotalQuantity_Node1_action["The system sets full release status
and clears the destination index"]:::main N_ReleasedQuantityTotalQuantity_Node1 -- Yes --> N_ReleasedQuantityTotalQuantity_Node1_action N_ReleasedQuantityTotalQuantity_Node1_action --> E_ReleasedQuantityTotalQuantity N_ReleasedQuantityTotalQuantity_Node0 -- No --> N_ReleasedQuantityTotalQuantity_Node1 N_ReleasedQuantityTotalQuantity_Node2{"The system compares released
quantity to total quantity"}:::decision N_ReleasedQuantityTotalQuantity_Node2_action["If released quantity equals total
quantity, set full release status
and clear hold flags, otherwise set
partial release status"]:::main N_ReleasedQuantityTotalQuantity_Node2 -- Yes --> N_ReleasedQuantityTotalQuantity_Node2_action N_ReleasedQuantityTotalQuantity_Node2_action --> E_ReleasedQuantityTotalQuantity N_ReleasedQuantityTotalQuantity_Node1 -- No --> N_ReleasedQuantityTotalQuantity_Node2 N_ReleasedQuantityTotalQuantity_Node2 -- No --> E_ReleasedQuantityTotalQuantity
File: GCX016.cbl
GIVEN:
A cargo record with released quantity and total quantity values
WHEN:
The released quantity equals the total quantity
THEN:
- The system should process full release
- Clear the destination index
File: GCX016.cbl
GIVEN:
A cargo record has released quantity and total quantity values
WHEN:
The released quantity equals the total quantity exactly
THEN:
- The system sets full release status
- Clears the destination index
File: GCX016.cbl
GIVEN:
A cargo record with positive released quantity and known total quantity
WHEN:
The system compares released quantity to total quantity
THEN:
- If released quantity equals total quantity, set full release status
- Clear hold flags, otherwise set partial release status
β Consolidated Acceptance Criteria
- Proceed status conditions are present in the cargo data → the cargo status should be set to proceed and the border arrival date should be updated
- Proceed status is present on the cargo → the system sets proceed status and updates the border arrival date
- Proceed status conditions are validated → the system sets proceed status and updates the border arrival date
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ProceedStatusPresent(["Start Step"])
E_ProceedStatusPresent(["End Step"])
N_ProceedStatusPresent_Node0{"Proceed status conditions are
present in the cargo data"}:::decision N_ProceedStatusPresent_Node0_action["The cargo status should be set to
proceed and the border arrival date
should be updated"]:::main N_ProceedStatusPresent_Node0 -- Yes --> N_ProceedStatusPresent_Node0_action N_ProceedStatusPresent_Node0_action --> E_ProceedStatusPresent S_ProceedStatusPresent --> N_ProceedStatusPresent_Node0 N_ProceedStatusPresent_Node1{"Proceed status is present on the
cargo"}:::decision N_ProceedStatusPresent_Node1_action["The system sets proceed status and
updates the border arrival date"]:::main N_ProceedStatusPresent_Node1 -- Yes --> N_ProceedStatusPresent_Node1_action N_ProceedStatusPresent_Node1_action --> E_ProceedStatusPresent N_ProceedStatusPresent_Node0 -- No --> N_ProceedStatusPresent_Node1 N_ProceedStatusPresent_Node2{"Proceed status conditions are
validated"}:::decision N_ProceedStatusPresent_Node2_action["The system sets proceed status and
updates the border arrival date"]:::main N_ProceedStatusPresent_Node2 -- Yes --> N_ProceedStatusPresent_Node2_action N_ProceedStatusPresent_Node2_action --> E_ProceedStatusPresent N_ProceedStatusPresent_Node1 -- No --> N_ProceedStatusPresent_Node2 N_ProceedStatusPresent_Node2 -- No --> E_ProceedStatusPresent
present in the cargo data"}:::decision N_ProceedStatusPresent_Node0_action["The cargo status should be set to
proceed and the border arrival date
should be updated"]:::main N_ProceedStatusPresent_Node0 -- Yes --> N_ProceedStatusPresent_Node0_action N_ProceedStatusPresent_Node0_action --> E_ProceedStatusPresent S_ProceedStatusPresent --> N_ProceedStatusPresent_Node0 N_ProceedStatusPresent_Node1{"Proceed status is present on the
cargo"}:::decision N_ProceedStatusPresent_Node1_action["The system sets proceed status and
updates the border arrival date"]:::main N_ProceedStatusPresent_Node1 -- Yes --> N_ProceedStatusPresent_Node1_action N_ProceedStatusPresent_Node1_action --> E_ProceedStatusPresent N_ProceedStatusPresent_Node0 -- No --> N_ProceedStatusPresent_Node1 N_ProceedStatusPresent_Node2{"Proceed status conditions are
validated"}:::decision N_ProceedStatusPresent_Node2_action["The system sets proceed status and
updates the border arrival date"]:::main N_ProceedStatusPresent_Node2 -- Yes --> N_ProceedStatusPresent_Node2_action N_ProceedStatusPresent_Node2_action --> E_ProceedStatusPresent N_ProceedStatusPresent_Node1 -- No --> N_ProceedStatusPresent_Node2 N_ProceedStatusPresent_Node2 -- No --> E_ProceedStatusPresent
File: GCX016.cbl
GIVEN:
A cargo record being evaluated for proceed status
WHEN:
Proceed status conditions are present in the cargo data
THEN:
- The cargo status should be set to proceed
- The border arrival date should be updated
File: GCX016.cbl
GIVEN:
A cargo record is being evaluated for status changes
WHEN:
Proceed status is present on the cargo
THEN:
- The system sets proceed status
- Updates the border arrival date
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
A cargo record is not in hold status and proceed status indicators are present
WHEN:
Proceed status conditions are validated
THEN:
- The system sets proceed status
- Updates the border arrival date
β Consolidated Acceptance Criteria
- The hold location is determined to be at the border → the cargo status should be set to border hold, otherwise it should be set to destination hold
- The hold location is determined to be at the border → the system sets border hold status
- Hold conditions exist at the border location → the system sets border hold status for the cargo
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_HoldatBorder(["Start Step"])
E_HoldatBorder(["End Step"])
N_HoldatBorder_Node0{"The hold location is determined to
be at the border"}:::decision N_HoldatBorder_Node0_action["The cargo status should be set to
border hold, otherwise it should be
set to destination hold"]:::main N_HoldatBorder_Node0 -- Yes --> N_HoldatBorder_Node0_action N_HoldatBorder_Node0_action --> E_HoldatBorder S_HoldatBorder --> N_HoldatBorder_Node0 N_HoldatBorder_Node1{"The hold location is determined to
be at the border"}:::decision N_HoldatBorder_Node1_action["The system sets border hold status"]:::main N_HoldatBorder_Node1 -- Yes --> N_HoldatBorder_Node1_action N_HoldatBorder_Node1_action --> E_HoldatBorder N_HoldatBorder_Node0 -- No --> N_HoldatBorder_Node1 N_HoldatBorder_Node2{"Hold conditions exist at the border
location"}:::decision N_HoldatBorder_Node2_action["The system sets border hold status
for the cargo"]:::main N_HoldatBorder_Node2 -- Yes --> N_HoldatBorder_Node2_action N_HoldatBorder_Node2_action --> E_HoldatBorder N_HoldatBorder_Node1 -- No --> N_HoldatBorder_Node2 N_HoldatBorder_Node2 -- No --> E_HoldatBorder
be at the border"}:::decision N_HoldatBorder_Node0_action["The cargo status should be set to
border hold, otherwise it should be
set to destination hold"]:::main N_HoldatBorder_Node0 -- Yes --> N_HoldatBorder_Node0_action N_HoldatBorder_Node0_action --> E_HoldatBorder S_HoldatBorder --> N_HoldatBorder_Node0 N_HoldatBorder_Node1{"The hold location is determined to
be at the border"}:::decision N_HoldatBorder_Node1_action["The system sets border hold status"]:::main N_HoldatBorder_Node1 -- Yes --> N_HoldatBorder_Node1_action N_HoldatBorder_Node1_action --> E_HoldatBorder N_HoldatBorder_Node0 -- No --> N_HoldatBorder_Node1 N_HoldatBorder_Node2{"Hold conditions exist at the border
location"}:::decision N_HoldatBorder_Node2_action["The system sets border hold status
for the cargo"]:::main N_HoldatBorder_Node2 -- Yes --> N_HoldatBorder_Node2_action N_HoldatBorder_Node2_action --> E_HoldatBorder N_HoldatBorder_Node1 -- No --> N_HoldatBorder_Node2 N_HoldatBorder_Node2 -- No --> E_HoldatBorder
File: GCX016.cbl
GIVEN:
A cargo record with hold status conditions present
WHEN:
The hold location is determined to be at the border
THEN:
The cargo status should be set to border hold, otherwise it should be set to destination hold
File: GCX016.cbl
GIVEN:
A cargo record has hold status present
WHEN:
The hold location is determined to be at the border
THEN:
The system sets border hold status
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
A cargo record has hold status present and is not in manual release or full release state
WHEN:
Hold conditions exist at the border location
THEN:
The system sets border hold status for the cargo
β Consolidated Acceptance Criteria
- Arrival status conditions are present in the cargo data → the cargo status should be set to arrival and the arrival date should be updated
- Arrival status is present on the cargo → the system sets arrival status and clears the destination index
- Arrival status indicators are present → the system sets arrival status and updates the arrival date
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ArrivalStatusPresent(["Start Step"])
E_ArrivalStatusPresent(["End Step"])
N_ArrivalStatusPresent_Node0{"Arrival status conditions are
present in the cargo data"}:::decision N_ArrivalStatusPresent_Node0_action["The cargo status should be set to
arrival and the arrival date should
be updated"]:::main N_ArrivalStatusPresent_Node0 -- Yes --> N_ArrivalStatusPresent_Node0_action N_ArrivalStatusPresent_Node0_action --> E_ArrivalStatusPresent S_ArrivalStatusPresent --> N_ArrivalStatusPresent_Node0 N_ArrivalStatusPresent_Node1{"Arrival status is present on the
cargo"}:::decision N_ArrivalStatusPresent_Node1_action["The system sets arrival status and
clears the destination index"]:::main N_ArrivalStatusPresent_Node1 -- Yes --> N_ArrivalStatusPresent_Node1_action N_ArrivalStatusPresent_Node1_action --> E_ArrivalStatusPresent N_ArrivalStatusPresent_Node0 -- No --> N_ArrivalStatusPresent_Node1 N_ArrivalStatusPresent_Node2{"Arrival status indicators are
present"}:::decision N_ArrivalStatusPresent_Node2_action["The system sets arrival status and
updates the arrival date"]:::main N_ArrivalStatusPresent_Node2 -- Yes --> N_ArrivalStatusPresent_Node2_action N_ArrivalStatusPresent_Node2_action --> E_ArrivalStatusPresent N_ArrivalStatusPresent_Node1 -- No --> N_ArrivalStatusPresent_Node2 N_ArrivalStatusPresent_Node2 -- No --> E_ArrivalStatusPresent
present in the cargo data"}:::decision N_ArrivalStatusPresent_Node0_action["The cargo status should be set to
arrival and the arrival date should
be updated"]:::main N_ArrivalStatusPresent_Node0 -- Yes --> N_ArrivalStatusPresent_Node0_action N_ArrivalStatusPresent_Node0_action --> E_ArrivalStatusPresent S_ArrivalStatusPresent --> N_ArrivalStatusPresent_Node0 N_ArrivalStatusPresent_Node1{"Arrival status is present on the
cargo"}:::decision N_ArrivalStatusPresent_Node1_action["The system sets arrival status and
clears the destination index"]:::main N_ArrivalStatusPresent_Node1 -- Yes --> N_ArrivalStatusPresent_Node1_action N_ArrivalStatusPresent_Node1_action --> E_ArrivalStatusPresent N_ArrivalStatusPresent_Node0 -- No --> N_ArrivalStatusPresent_Node1 N_ArrivalStatusPresent_Node2{"Arrival status indicators are
present"}:::decision N_ArrivalStatusPresent_Node2_action["The system sets arrival status and
updates the arrival date"]:::main N_ArrivalStatusPresent_Node2 -- Yes --> N_ArrivalStatusPresent_Node2_action N_ArrivalStatusPresent_Node2_action --> E_ArrivalStatusPresent N_ArrivalStatusPresent_Node1 -- No --> N_ArrivalStatusPresent_Node2 N_ArrivalStatusPresent_Node2 -- No --> E_ArrivalStatusPresent
File: GCX016.cbl
GIVEN:
A cargo record being processed for arrival status
WHEN:
Arrival status conditions are present in the cargo data
THEN:
- The cargo status should be set to arrival
- The arrival date should be updated
File: GCX016.cbl
GIVEN:
A cargo record is undergoing status evaluation
WHEN:
Arrival status is present on the cargo
THEN:
- The system sets arrival status
- Clears the destination index
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
A cargo record has completed proceed status processing or is not in proceed status
WHEN:
Arrival status indicators are present
THEN:
- The system sets arrival status
- Updates the arrival date
β Consolidated Acceptance Criteria
- Export status conditions are present in the cargo data → the cargo status should be set to export and the destination index should be cleared
- Export status is present on the cargo → the system sets export status and clears the destination index
- Export status indicators are present → the system sets export status and clears the destination index
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExportStatusPresent(["Start Step"])
E_ExportStatusPresent(["End Step"])
N_ExportStatusPresent_Node0{"Export status conditions are
present in the cargo data"}:::decision N_ExportStatusPresent_Node0_action["The cargo status should be set to
export and the destination index
should be cleared"]:::main N_ExportStatusPresent_Node0 -- Yes --> N_ExportStatusPresent_Node0_action N_ExportStatusPresent_Node0_action --> E_ExportStatusPresent S_ExportStatusPresent --> N_ExportStatusPresent_Node0 N_ExportStatusPresent_Node1{"Export status is present on the
cargo"}:::decision N_ExportStatusPresent_Node1_action["The system sets export status and
clears the destination index"]:::main N_ExportStatusPresent_Node1 -- Yes --> N_ExportStatusPresent_Node1_action N_ExportStatusPresent_Node1_action --> E_ExportStatusPresent N_ExportStatusPresent_Node0 -- No --> N_ExportStatusPresent_Node1 N_ExportStatusPresent_Node2{"Export status indicators are
present"}:::decision N_ExportStatusPresent_Node2_action["The system sets export status and
clears the destination index"]:::main N_ExportStatusPresent_Node2 -- Yes --> N_ExportStatusPresent_Node2_action N_ExportStatusPresent_Node2_action --> E_ExportStatusPresent N_ExportStatusPresent_Node1 -- No --> N_ExportStatusPresent_Node2 N_ExportStatusPresent_Node2 -- No --> E_ExportStatusPresent
present in the cargo data"}:::decision N_ExportStatusPresent_Node0_action["The cargo status should be set to
export and the destination index
should be cleared"]:::main N_ExportStatusPresent_Node0 -- Yes --> N_ExportStatusPresent_Node0_action N_ExportStatusPresent_Node0_action --> E_ExportStatusPresent S_ExportStatusPresent --> N_ExportStatusPresent_Node0 N_ExportStatusPresent_Node1{"Export status is present on the
cargo"}:::decision N_ExportStatusPresent_Node1_action["The system sets export status and
clears the destination index"]:::main N_ExportStatusPresent_Node1 -- Yes --> N_ExportStatusPresent_Node1_action N_ExportStatusPresent_Node1_action --> E_ExportStatusPresent N_ExportStatusPresent_Node0 -- No --> N_ExportStatusPresent_Node1 N_ExportStatusPresent_Node2{"Export status indicators are
present"}:::decision N_ExportStatusPresent_Node2_action["The system sets export status and
clears the destination index"]:::main N_ExportStatusPresent_Node2 -- Yes --> N_ExportStatusPresent_Node2_action N_ExportStatusPresent_Node2_action --> E_ExportStatusPresent N_ExportStatusPresent_Node1 -- No --> N_ExportStatusPresent_Node2 N_ExportStatusPresent_Node2 -- No --> E_ExportStatusPresent
File: GCX016.cbl
GIVEN:
A cargo record being evaluated for export status
WHEN:
Export status conditions are present in the cargo data
THEN:
- The cargo status should be set to export
- The destination index should be cleared
File: GCX016.cbl
GIVEN:
A cargo record is being processed for status changes
WHEN:
Export status is present on the cargo
THEN:
- The system sets export status
- Clears the destination index
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
A cargo record has completed arrival status processing or is not in arrival status
WHEN:
Export status indicators are present
THEN:
- The system sets export status
- Clears the destination index
β Consolidated Acceptance Criteria
- Cancel release status is detected in the cargo data → the cargo status should be set to unrelease, an unrelease notification should be generated, and the destination index should be re-established
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CancelReleaseStatus(["Start Step"])
E_CancelReleaseStatus(["End Step"])
N_CancelReleaseStatus_Node0{"Cancel release status is detected
in the cargo data"}:::decision N_CancelReleaseStatus_Node0_action["The cargo status should be set to
unrelease, an unrelease notification
should be generated, and the
destination index should be
re-established"]:::main N_CancelReleaseStatus_Node0 -- Yes --> N_CancelReleaseStatus_Node0_action N_CancelReleaseStatus_Node0_action --> E_CancelReleaseStatus S_CancelReleaseStatus --> N_CancelReleaseStatus_Node0 N_CancelReleaseStatus_Node0 -- No --> E_CancelReleaseStatus
in the cargo data"}:::decision N_CancelReleaseStatus_Node0_action["The cargo status should be set to
unrelease, an unrelease notification
should be generated, and the
destination index should be
re-established"]:::main N_CancelReleaseStatus_Node0 -- Yes --> N_CancelReleaseStatus_Node0_action N_CancelReleaseStatus_Node0_action --> E_CancelReleaseStatus S_CancelReleaseStatus --> N_CancelReleaseStatus_Node0 N_CancelReleaseStatus_Node0 -- No --> E_CancelReleaseStatus
File: GCX016.cbl
GIVEN:
A cargo record with potential cancel release conditions
WHEN:
Cancel release status is detected in the cargo data
THEN:
The cargo status should be set to unrelease, an unrelease notification should be generated, and the destination index should be re-established
β Consolidated Acceptance Criteria
- Final status calculations are being performed → the cargo age should be calculated and bond dates should be updated accordingly
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CalculateCargoAge(["Start Step"])
E_CalculateCargoAge(["End Step"])
N_CalculateCargoAge_Node0{"Final status calculations are being
performed"}:::decision N_CalculateCargoAge_Node0_action["The cargo age should be calculated
and bond dates should be updated
accordingly"]:::main N_CalculateCargoAge_Node0 -- Yes --> N_CalculateCargoAge_Node0_action N_CalculateCargoAge_Node0_action --> E_CalculateCargoAge S_CalculateCargoAge --> N_CalculateCargoAge_Node0 N_CalculateCargoAge_Node0 -- No --> E_CalculateCargoAge
performed"}:::decision N_CalculateCargoAge_Node0_action["The cargo age should be calculated
and bond dates should be updated
accordingly"]:::main N_CalculateCargoAge_Node0 -- Yes --> N_CalculateCargoAge_Node0_action N_CalculateCargoAge_Node0_action --> E_CalculateCargoAge S_CalculateCargoAge --> N_CalculateCargoAge_Node0 N_CalculateCargoAge_Node0 -- No --> E_CalculateCargoAge
File: GCX016.cbl
GIVEN:
A cargo record completing status determination processing
WHEN:
Final status calculations are being performed
THEN:
- The cargo age should be calculated
- Bond dates should be updated accordingly
β Consolidated Acceptance Criteria
- All other status determinations have been completed → the previously saved PTT status should be restored if it was saved earlier in the process
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RestorePTTStatusifSaved(["Start Step"])
E_RestorePTTStatusifSaved(["End Step"])
N_RestorePTTStatusifSaved_Node0{"All other status determinations
have been completed"}:::decision N_RestorePTTStatusifSaved_Node0_action["The previously saved PTT status
should be restored if it was saved
earlier in the process"]:::main N_RestorePTTStatusifSaved_Node0 -- Yes --> N_RestorePTTStatusifSaved_Node0_action N_RestorePTTStatusifSaved_Node0_action --> E_RestorePTTStatusifSaved S_RestorePTTStatusifSaved --> N_RestorePTTStatusifSaved_Node0 N_RestorePTTStatusifSaved_Node0 -- No --> E_RestorePTTStatusifSaved
have been completed"}:::decision N_RestorePTTStatusifSaved_Node0_action["The previously saved PTT status
should be restored if it was saved
earlier in the process"]:::main N_RestorePTTStatusifSaved_Node0 -- Yes --> N_RestorePTTStatusifSaved_Node0_action N_RestorePTTStatusifSaved_Node0_action --> E_RestorePTTStatusifSaved S_RestorePTTStatusifSaved --> N_RestorePTTStatusifSaved_Node0 N_RestorePTTStatusifSaved_Node0 -- No --> E_RestorePTTStatusifSaved
File: GCX016.cbl
GIVEN:
A cargo record that had PTT status saved during processing
WHEN:
All other status determinations have been completed
THEN:
The previously saved PTT status should be restored if it was saved earlier in the process
β Consolidated Acceptance Criteria
- A manual release request is processed for the cargo → the system shall force set the manual release flag to true AND bypass standard release validation checks
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ForceManualReleaseforCPRS(["Start Step"])
E_ForceManualReleaseforCPRS(["End Step"])
N_ForceManualReleaseforCPRS_Node0{"A manual release request is
processed for the cargo"}:::decision N_ForceManualReleaseforCPRS_Node0_action["The system shall force set the
manual release flag to true AND
bypass standard release validation
checks"]:::main N_ForceManualReleaseforCPRS_Node0 -- Yes --> N_ForceManualReleaseforCPRS_Node0_action N_ForceManualReleaseforCPRS_Node0_action --> E_ForceManualReleaseforCPRS S_ForceManualReleaseforCPRS --> N_ForceManualReleaseforCPRS_Node0 N_ForceManualReleaseforCPRS_Node0 -- No --> E_ForceManualReleaseforCPRS
processed for the cargo"}:::decision N_ForceManualReleaseforCPRS_Node0_action["The system shall force set the
manual release flag to true AND
bypass standard release validation
checks"]:::main N_ForceManualReleaseforCPRS_Node0 -- Yes --> N_ForceManualReleaseforCPRS_Node0_action N_ForceManualReleaseforCPRS_Node0_action --> E_ForceManualReleaseforCPRS S_ForceManualReleaseforCPRS --> N_ForceManualReleaseforCPRS_Node0 N_ForceManualReleaseforCPRS_Node0 -- No --> E_ForceManualReleaseforCPRS
File: GCX016.cbl
GIVEN:
A cargo record exists in the system AND the cargo belongs to CPRS (Canadian Pacific Railway System)
WHEN:
A manual release request is processed for the cargo
THEN:
- The system shall force set the manual release flag to true
- Bypass standard release validation checks
β Consolidated Acceptance Criteria
- If cargo movement requirements → the system shall determine if the cargo involves cross-border movement between US and Canada AND set cross-border processing flag accordingly
- The system checks if cargo is cross-border cargo → if cargo is cross-border, coordinate with Canadian system, otherwise proceed to update cargo status flags
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CrossBorderCargo(["Start Step"])
E_CrossBorderCargo(["End Step"])
N_CrossBorderCargo_Node0{"The system evaluates cargo movement
requirements"}:::decision N_CrossBorderCargo_Node0_action["The system shall determine if the
cargo involves cross-border movement
between US and Canada AND set
cross-border processing flag
accordingly"]:::main N_CrossBorderCargo_Node0 -- Yes --> N_CrossBorderCargo_Node0_action N_CrossBorderCargo_Node0_action --> E_CrossBorderCargo S_CrossBorderCargo --> N_CrossBorderCargo_Node0 N_CrossBorderCargo_Node1{"The system checks if cargo is
cross-border cargo"}:::decision N_CrossBorderCargo_Node1_action["If cargo is cross-border,
coordinate with Canadian system,
otherwise proceed to update cargo
status flags"]:::main N_CrossBorderCargo_Node1 -- Yes --> N_CrossBorderCargo_Node1_action N_CrossBorderCargo_Node1_action --> E_CrossBorderCargo N_CrossBorderCargo_Node0 -- No --> N_CrossBorderCargo_Node1 N_CrossBorderCargo_Node1 -- No --> E_CrossBorderCargo
requirements"}:::decision N_CrossBorderCargo_Node0_action["The system shall determine if the
cargo involves cross-border movement
between US and Canada AND set
cross-border processing flag
accordingly"]:::main N_CrossBorderCargo_Node0 -- Yes --> N_CrossBorderCargo_Node0_action N_CrossBorderCargo_Node0_action --> E_CrossBorderCargo S_CrossBorderCargo --> N_CrossBorderCargo_Node0 N_CrossBorderCargo_Node1{"The system checks if cargo is
cross-border cargo"}:::decision N_CrossBorderCargo_Node1_action["If cargo is cross-border,
coordinate with Canadian system,
otherwise proceed to update cargo
status flags"]:::main N_CrossBorderCargo_Node1 -- Yes --> N_CrossBorderCargo_Node1_action N_CrossBorderCargo_Node1_action --> E_CrossBorderCargo N_CrossBorderCargo_Node0 -- No --> N_CrossBorderCargo_Node1 N_CrossBorderCargo_Node1 -- No --> E_CrossBorderCargo
File: GCX016.cbl
GIVEN:
Cargo status has been updated to released
WHEN:
The system evaluates cargo movement requirements
THEN:
- The system shall determine if the cargo involves cross-border movement between us
- Canada
- Set cross-border processing flag accordingly
File: GCX016.cbl
GIVEN:
Conflicting hold status has been cleared
WHEN:
The system checks if cargo is cross-border cargo
THEN:
If cargo is cross-border, coordinate with Canadian system, otherwise proceed to update cargo status flags
β Consolidated Acceptance Criteria
- Cross-border coordination is established → the system shall generate a coordination log entry AND record cargo release details in GCX105 system AND include waybill and equipment information
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GenerateCanadianCoordinationLog(["Start Step"])
E_GenerateCanadianCoordinationLog(["End Step"])
N_GenerateCanadianCoordinationLog_Node0{"Cross-border coordination is
established"}:::decision N_GenerateCanadianCoordinationLog_Node0_action["The system shall generate a
coordination log entry AND record
cargo release details in GCX105
system AND include waybill and
equipment information"]:::main N_GenerateCanadianCoordinationLog_Node0 -- Yes --> N_GenerateCanadianCoordinationLog_Node0_action N_GenerateCanadianCoordinationLog_Node0_action --> E_GenerateCanadianCoordinationLog S_GenerateCanadianCoordinationLog --> N_GenerateCanadianCoordinationLog_Node0 N_GenerateCanadianCoordinationLog_Node0 -- No --> E_GenerateCanadianCoordinationLog
established"}:::decision N_GenerateCanadianCoordinationLog_Node0_action["The system shall generate a
coordination log entry AND record
cargo release details in GCX105
system AND include waybill and
equipment information"]:::main N_GenerateCanadianCoordinationLog_Node0 -- Yes --> N_GenerateCanadianCoordinationLog_Node0_action N_GenerateCanadianCoordinationLog_Node0_action --> E_GenerateCanadianCoordinationLog S_GenerateCanadianCoordinationLog --> N_GenerateCanadianCoordinationLog_Node0 N_GenerateCanadianCoordinationLog_Node0 -- No --> E_GenerateCanadianCoordinationLog
File: GCX016.cbl
GIVEN:
Matching Canadian manifest record is found AND cargo is manually released
WHEN:
Cross-border coordination is established
THEN:
- The system shall generate a coordination log entry
- Record cargo release details in gcx105 system
- Include waybill
- Equipment information
β Consolidated Acceptance Criteria
- Status array update is performed → the system shall update the S09 status array to reflect manual release AND shall not add new disposition codes AND preserve existing status history
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UpdateStatusArraywithoutNewCodes(["Start Step"])
E_UpdateStatusArraywithoutNewCodes(["End Step"])
N_UpdateStatusArraywithoutNewCodes_Node0{"Status array update is performed"}:::decision
N_UpdateStatusArraywithoutNewCodes_Node0_action["The system shall update the S09
status array to reflect manual
release AND shall not add new
disposition codes AND preserve
existing status history"]:::main N_UpdateStatusArraywithoutNewCodes_Node0 -- Yes --> N_UpdateStatusArraywithoutNewCodes_Node0_action N_UpdateStatusArraywithoutNewCodes_Node0_action --> E_UpdateStatusArraywithoutNewCodes S_UpdateStatusArraywithoutNewCodes --> N_UpdateStatusArraywithoutNewCodes_Node0 N_UpdateStatusArraywithoutNewCodes_Node0 -- No --> E_UpdateStatusArraywithoutNewCodes
status array to reflect manual
release AND shall not add new
disposition codes AND preserve
existing status history"]:::main N_UpdateStatusArraywithoutNewCodes_Node0 -- Yes --> N_UpdateStatusArraywithoutNewCodes_Node0_action N_UpdateStatusArraywithoutNewCodes_Node0_action --> E_UpdateStatusArraywithoutNewCodes S_UpdateStatusArraywithoutNewCodes --> N_UpdateStatusArraywithoutNewCodes_Node0 N_UpdateStatusArraywithoutNewCodes_Node0 -- No --> E_UpdateStatusArraywithoutNewCodes
File: GCX016.cbl
GIVEN:
Manual release processing is confirmed AND Canadian coordination is complete (if required)
WHEN:
Status array update is performed
THEN:
- The system shall update the s09 status array to reflect manual release
- Shall not add new disposition codes
- Preserve existing status history
β Consolidated Acceptance Criteria
- Cargo record finalization occurs → the system shall save the manual release flag in the cargo record AND maintain the flag for audit purposes AND ensure flag persists through subsequent processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SaveManualReleaseFlag(["Start Step"])
E_SaveManualReleaseFlag(["End Step"])
N_SaveManualReleaseFlag_Node0{"Cargo record finalization occurs"}:::decision
N_SaveManualReleaseFlag_Node0_action["The system shall save the manual
release flag in the cargo record AND
maintain the flag for audit purposes
AND ensure flag persists through
subsequent processing"]:::main N_SaveManualReleaseFlag_Node0 -- Yes --> N_SaveManualReleaseFlag_Node0_action N_SaveManualReleaseFlag_Node0_action --> E_SaveManualReleaseFlag S_SaveManualReleaseFlag --> N_SaveManualReleaseFlag_Node0 N_SaveManualReleaseFlag_Node0 -- No --> E_SaveManualReleaseFlag
release flag in the cargo record AND
maintain the flag for audit purposes
AND ensure flag persists through
subsequent processing"]:::main N_SaveManualReleaseFlag_Node0 -- Yes --> N_SaveManualReleaseFlag_Node0_action N_SaveManualReleaseFlag_Node0_action --> E_SaveManualReleaseFlag S_SaveManualReleaseFlag --> N_SaveManualReleaseFlag_Node0 N_SaveManualReleaseFlag_Node0 -- No --> E_SaveManualReleaseFlag
File: GCX016.cbl
GIVEN:
Status array has been updated AND manual release processing is in progress
WHEN:
Cargo record finalization occurs
THEN:
- The system shall save the manual release flag in the cargo record
- Maintain the flag for audit purposes
- Ensure flag persists through subsequent processing
β Consolidated Acceptance Criteria
- Bond date evaluation is performed → the system shall clear bond dates if cargo status allows AND remove time-based movement restrictions AND update bond-related fields accordingly
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ClearBondDatesifApplicable(["Start Step"])
E_ClearBondDatesifApplicable(["End Step"])
N_ClearBondDatesifApplicable_Node0{"Bond date evaluation is performed"}:::decision
N_ClearBondDatesifApplicable_Node0_action["The system shall clear bond dates
if cargo status allows AND remove
time-based movement restrictions AND
update bond-related fields
accordingly"]:::main N_ClearBondDatesifApplicable_Node0 -- Yes --> N_ClearBondDatesifApplicable_Node0_action N_ClearBondDatesifApplicable_Node0_action --> E_ClearBondDatesifApplicable S_ClearBondDatesifApplicable --> N_ClearBondDatesifApplicable_Node0 N_ClearBondDatesifApplicable_Node0 -- No --> E_ClearBondDatesifApplicable
if cargo status allows AND remove
time-based movement restrictions AND
update bond-related fields
accordingly"]:::main N_ClearBondDatesifApplicable_Node0 -- Yes --> N_ClearBondDatesifApplicable_Node0_action N_ClearBondDatesifApplicable_Node0_action --> E_ClearBondDatesifApplicable S_ClearBondDatesifApplicable --> N_ClearBondDatesifApplicable_Node0 N_ClearBondDatesifApplicable_Node0 -- No --> E_ClearBondDatesifApplicable
File: GCX016.cbl
GIVEN:
Manual release flag is saved AND cargo has associated bond dates
WHEN:
Bond date evaluation is performed
THEN:
- The system shall clear bond dates if cargo status allows
- Remove time-based movement restrictions
- Update bond-related fields accordingly
β Consolidated Acceptance Criteria
- FDA hold processing is triggered for the cargo → the system begins FDA hold evaluation workflow
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_FDAHoldProcessingStart(["Start Step"])
E_FDAHoldProcessingStart(["End Step"])
N_FDAHoldProcessingStart_Node0{"FDA hold processing is triggered
for the cargo"}:::decision N_FDAHoldProcessingStart_Node0_action["The system begins FDA hold
evaluation workflow"]:::main N_FDAHoldProcessingStart_Node0 -- Yes --> N_FDAHoldProcessingStart_Node0_action N_FDAHoldProcessingStart_Node0_action --> E_FDAHoldProcessingStart S_FDAHoldProcessingStart --> N_FDAHoldProcessingStart_Node0 N_FDAHoldProcessingStart_Node0 -- No --> E_FDAHoldProcessingStart
for the cargo"}:::decision N_FDAHoldProcessingStart_Node0_action["The system begins FDA hold
evaluation workflow"]:::main N_FDAHoldProcessingStart_Node0 -- Yes --> N_FDAHoldProcessingStart_Node0_action N_FDAHoldProcessingStart_Node0_action --> E_FDAHoldProcessingStart S_FDAHoldProcessingStart --> N_FDAHoldProcessingStart_Node0 N_FDAHoldProcessingStart_Node0 -- No --> E_FDAHoldProcessingStart
File: GCX016.cbl
GIVEN:
A cargo record exists in the system
WHEN:
FDA hold processing is triggered for the cargo
THEN:
The system begins FDA hold evaluation workflow
β Consolidated Acceptance Criteria
- If cargo location status → the system determines if cargo is at destination and proceeds with appropriate FDA processing path
- The system checks the cargo's current physical location → the system returns true if cargo is currently at destination location, false otherwise
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CargoatDestination(["Start Step"])
E_CargoatDestination(["End Step"])
N_CargoatDestination_Node0{"The system evaluates cargo location
status"}:::decision N_CargoatDestination_Node0_action["The system determines if cargo is
at destination and proceeds with
appropriate FDA processing path"]:::main N_CargoatDestination_Node0 -- Yes --> N_CargoatDestination_Node0_action N_CargoatDestination_Node0_action --> E_CargoatDestination S_CargoatDestination --> N_CargoatDestination_Node0 N_CargoatDestination_Node1{"The system checks the cargo s
current physical location"}:::decision N_CargoatDestination_Node1_action["The system returns true if cargo is
currently at destination location,
false otherwise"]:::main N_CargoatDestination_Node1 -- Yes --> N_CargoatDestination_Node1_action N_CargoatDestination_Node1_action --> E_CargoatDestination N_CargoatDestination_Node0 -- No --> N_CargoatDestination_Node1 N_CargoatDestination_Node1 -- No --> E_CargoatDestination
status"}:::decision N_CargoatDestination_Node0_action["The system determines if cargo is
at destination and proceeds with
appropriate FDA processing path"]:::main N_CargoatDestination_Node0 -- Yes --> N_CargoatDestination_Node0_action N_CargoatDestination_Node0_action --> E_CargoatDestination S_CargoatDestination --> N_CargoatDestination_Node0 N_CargoatDestination_Node1{"The system checks the cargo s
current physical location"}:::decision N_CargoatDestination_Node1_action["The system returns true if cargo is
currently at destination location,
false otherwise"]:::main N_CargoatDestination_Node1 -- Yes --> N_CargoatDestination_Node1_action N_CargoatDestination_Node1_action --> E_CargoatDestination N_CargoatDestination_Node0 -- No --> N_CargoatDestination_Node1 N_CargoatDestination_Node1 -- No --> E_CargoatDestination
File: GCX016.cbl
GIVEN:
A cargo record with location information exists
WHEN:
The system evaluates cargo location status
THEN:
- The system determines if cargo is at destination
- Proceeds with appropriate fda processing path
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
A cargo record with current location information available and cargo not at border
WHEN:
The system checks the cargo's current physical location
THEN:
The system returns true if cargo is currently at destination location, false otherwise
β Consolidated Acceptance Criteria
- The system scans the status array for FDA codes → the system identifies all FDA-related status codes present in the array
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CheckStatusArrayforFDACodes(["Start Step"])
E_CheckStatusArrayforFDACodes(["End Step"])
N_CheckStatusArrayforFDACodes_Node0{"The system scans the status array
for FDA codes"}:::decision N_CheckStatusArrayforFDACodes_Node0_action["The system identifies all
FDA-related status codes present in
the array"]:::main N_CheckStatusArrayforFDACodes_Node0 -- Yes --> N_CheckStatusArrayforFDACodes_Node0_action N_CheckStatusArrayforFDACodes_Node0_action --> E_CheckStatusArrayforFDACodes S_CheckStatusArrayforFDACodes --> N_CheckStatusArrayforFDACodes_Node0 N_CheckStatusArrayforFDACodes_Node0 -- No --> E_CheckStatusArrayforFDACodes
for FDA codes"}:::decision N_CheckStatusArrayforFDACodes_Node0_action["The system identifies all
FDA-related status codes present in
the array"]:::main N_CheckStatusArrayforFDACodes_Node0 -- Yes --> N_CheckStatusArrayforFDACodes_Node0_action N_CheckStatusArrayforFDACodes_Node0_action --> E_CheckStatusArrayforFDACodes S_CheckStatusArrayforFDACodes --> N_CheckStatusArrayforFDACodes_Node0 N_CheckStatusArrayforFDACodes_Node0 -- No --> E_CheckStatusArrayforFDACodes
File: GCX016.cbl
GIVEN:
Cargo is at destination location and has a status array
WHEN:
The system scans the status array for FDA codes
THEN:
The system identifies all FDA-related status codes present in the array
β Consolidated Acceptance Criteria
- If the presence of FDA hold codes → the system either proceeds with FDA hold processing if codes are found or exits FDA processing if no codes are present
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_FDAHoldCodeFound(["Start Step"])
E_FDAHoldCodeFound(["End Step"])
N_FDAHoldCodeFound_Node0{"The system evaluates the presence
of FDA hold codes"}:::decision N_FDAHoldCodeFound_Node0_action["The system either proceeds with FDA
hold processing if codes are found
or exits FDA processing if no codes
are present"]:::main N_FDAHoldCodeFound_Node0 -- Yes --> N_FDAHoldCodeFound_Node0_action N_FDAHoldCodeFound_Node0_action --> E_FDAHoldCodeFound S_FDAHoldCodeFound --> N_FDAHoldCodeFound_Node0 N_FDAHoldCodeFound_Node0 -- No --> E_FDAHoldCodeFound
of FDA hold codes"}:::decision N_FDAHoldCodeFound_Node0_action["The system either proceeds with FDA
hold processing if codes are found
or exits FDA processing if no codes
are present"]:::main N_FDAHoldCodeFound_Node0 -- Yes --> N_FDAHoldCodeFound_Node0_action N_FDAHoldCodeFound_Node0_action --> E_FDAHoldCodeFound S_FDAHoldCodeFound --> N_FDAHoldCodeFound_Node0 N_FDAHoldCodeFound_Node0 -- No --> E_FDAHoldCodeFound
File: GCX016.cbl
GIVEN:
The status array has been examined for FDA codes
WHEN:
The system evaluates the presence of FDA hold codes
THEN:
The system either proceeds with FDA hold processing if codes are found or exits FDA processing if no codes are present
β Consolidated Acceptance Criteria
- The system applies FDA-specific status codes → the cargo record is updated with appropriate FDA regulatory status codes
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ApplyFDASpecificStatusCodes(["Start Step"])
E_ApplyFDASpecificStatusCodes(["End Step"])
N_ApplyFDASpecificStatusCodes_Node0{"The system applies FDA-specific
status codes"}:::decision N_ApplyFDASpecificStatusCodes_Node0_action["The cargo record is updated with
appropriate FDA regulatory status
codes"]:::main N_ApplyFDASpecificStatusCodes_Node0 -- Yes --> N_ApplyFDASpecificStatusCodes_Node0_action N_ApplyFDASpecificStatusCodes_Node0_action --> E_ApplyFDASpecificStatusCodes S_ApplyFDASpecificStatusCodes --> N_ApplyFDASpecificStatusCodes_Node0 N_ApplyFDASpecificStatusCodes_Node0 -- No --> E_ApplyFDASpecificStatusCodes
status codes"}:::decision N_ApplyFDASpecificStatusCodes_Node0_action["The cargo record is updated with
appropriate FDA regulatory status
codes"]:::main N_ApplyFDASpecificStatusCodes_Node0 -- Yes --> N_ApplyFDASpecificStatusCodes_Node0_action N_ApplyFDASpecificStatusCodes_Node0_action --> E_ApplyFDASpecificStatusCodes S_ApplyFDASpecificStatusCodes --> N_ApplyFDASpecificStatusCodes_Node0 N_ApplyFDASpecificStatusCodes_Node0 -- No --> E_ApplyFDASpecificStatusCodes
File: GCX016.cbl
GIVEN:
FDA hold status has been set at destination
WHEN:
The system applies FDA-specific status codes
THEN:
The cargo record is updated with appropriate FDA regulatory status codes
β Consolidated Acceptance Criteria
- The system generates FDA hold description → a clear, business-readable description of the FDA hold is created and associated with the cargo
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GenerateFDAHoldDescription(["Start Step"])
E_GenerateFDAHoldDescription(["End Step"])
N_GenerateFDAHoldDescription_Node0{"The system generates FDA hold
description"}:::decision N_GenerateFDAHoldDescription_Node0_action["A clear, business-readable
description of the FDA hold is
created and associated with the
cargo"]:::main N_GenerateFDAHoldDescription_Node0 -- Yes --> N_GenerateFDAHoldDescription_Node0_action N_GenerateFDAHoldDescription_Node0_action --> E_GenerateFDAHoldDescription S_GenerateFDAHoldDescription --> N_GenerateFDAHoldDescription_Node0 N_GenerateFDAHoldDescription_Node0 -- No --> E_GenerateFDAHoldDescription
description"}:::decision N_GenerateFDAHoldDescription_Node0_action["A clear, business-readable
description of the FDA hold is
created and associated with the
cargo"]:::main N_GenerateFDAHoldDescription_Node0 -- Yes --> N_GenerateFDAHoldDescription_Node0_action N_GenerateFDAHoldDescription_Node0_action --> E_GenerateFDAHoldDescription S_GenerateFDAHoldDescription --> N_GenerateFDAHoldDescription_Node0 N_GenerateFDAHoldDescription_Node0 -- No --> E_GenerateFDAHoldDescription
File: GCX016.cbl
GIVEN:
FDA-specific status codes have been applied to cargo
WHEN:
The system generates FDA hold description
THEN:
- A clear, business-readable description of the fda hold is created
- Associated with the cargo
β Consolidated Acceptance Criteria
- The system checks for other hold codes in the status array → the system determines if additional hold codes exist that require combination with FDA hold
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_OtherHoldCodesPresent(["Start Step"])
E_OtherHoldCodesPresent(["End Step"])
N_OtherHoldCodesPresent_Node0{"The system checks for other hold
codes in the status array"}:::decision N_OtherHoldCodesPresent_Node0_action["The system determines if additional
hold codes exist that require
combination with FDA hold"]:::main N_OtherHoldCodesPresent_Node0 -- Yes --> N_OtherHoldCodesPresent_Node0_action N_OtherHoldCodesPresent_Node0_action --> E_OtherHoldCodesPresent S_OtherHoldCodesPresent --> N_OtherHoldCodesPresent_Node0 N_OtherHoldCodesPresent_Node0 -- No --> E_OtherHoldCodesPresent
codes in the status array"}:::decision N_OtherHoldCodesPresent_Node0_action["The system determines if additional
hold codes exist that require
combination with FDA hold"]:::main N_OtherHoldCodesPresent_Node0 -- Yes --> N_OtherHoldCodesPresent_Node0_action N_OtherHoldCodesPresent_Node0_action --> E_OtherHoldCodesPresent S_OtherHoldCodesPresent --> N_OtherHoldCodesPresent_Node0 N_OtherHoldCodesPresent_Node0 -- No --> E_OtherHoldCodesPresent
File: GCX016.cbl
GIVEN:
FDA hold description has been generated for cargo
WHEN:
The system checks for other hold codes in the status array
THEN:
The system determines if additional hold codes exist that require combination with FDA hold
β Consolidated Acceptance Criteria
- The system combines FDA hold with other holds → a comprehensive hold status is created that includes FDA hold and all other applicable hold codes
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CombineFDAHoldwithOtherHolds(["Start Step"])
E_CombineFDAHoldwithOtherHolds(["End Step"])
N_CombineFDAHoldwithOtherHolds_Node0{"The system combines FDA hold with
other holds"}:::decision N_CombineFDAHoldwithOtherHolds_Node0_action["A comprehensive hold status is
created that includes FDA hold and
all other applicable hold codes"]:::main N_CombineFDAHoldwithOtherHolds_Node0 -- Yes --> N_CombineFDAHoldwithOtherHolds_Node0_action N_CombineFDAHoldwithOtherHolds_Node0_action --> E_CombineFDAHoldwithOtherHolds S_CombineFDAHoldwithOtherHolds --> N_CombineFDAHoldwithOtherHolds_Node0 N_CombineFDAHoldwithOtherHolds_Node0 -- No --> E_CombineFDAHoldwithOtherHolds
other holds"}:::decision N_CombineFDAHoldwithOtherHolds_Node0_action["A comprehensive hold status is
created that includes FDA hold and
all other applicable hold codes"]:::main N_CombineFDAHoldwithOtherHolds_Node0 -- Yes --> N_CombineFDAHoldwithOtherHolds_Node0_action N_CombineFDAHoldwithOtherHolds_Node0_action --> E_CombineFDAHoldwithOtherHolds S_CombineFDAHoldwithOtherHolds --> N_CombineFDAHoldwithOtherHolds_Node0 N_CombineFDAHoldwithOtherHolds_Node0 -- No --> E_CombineFDAHoldwithOtherHolds
File: GCX016.cbl
GIVEN:
FDA hold exists and other hold codes are present in the status array
WHEN:
The system combines FDA hold with other holds
THEN:
- A comprehensive hold status is created that includes fda hold
- All other applicable hold codes
β Consolidated Acceptance Criteria
- The system updates the cargo status record → the cargo record is permanently updated with FDA hold status, descriptions, and all related information
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UpdateCargoStatusRecord(["Start Step"])
E_UpdateCargoStatusRecord(["End Step"])
N_UpdateCargoStatusRecord_Node0{"The system updates the cargo status
record"}:::decision N_UpdateCargoStatusRecord_Node0_action["The cargo record is permanently
updated with FDA hold status,
descriptions, and all related
information"]:::main N_UpdateCargoStatusRecord_Node0 -- Yes --> N_UpdateCargoStatusRecord_Node0_action N_UpdateCargoStatusRecord_Node0_action --> E_UpdateCargoStatusRecord S_UpdateCargoStatusRecord --> N_UpdateCargoStatusRecord_Node0 N_UpdateCargoStatusRecord_Node0 -- No --> E_UpdateCargoStatusRecord
record"}:::decision N_UpdateCargoStatusRecord_Node0_action["The cargo record is permanently
updated with FDA hold status,
descriptions, and all related
information"]:::main N_UpdateCargoStatusRecord_Node0 -- Yes --> N_UpdateCargoStatusRecord_Node0_action N_UpdateCargoStatusRecord_Node0_action --> E_UpdateCargoStatusRecord S_UpdateCargoStatusRecord --> N_UpdateCargoStatusRecord_Node0 N_UpdateCargoStatusRecord_Node0 -- No --> E_UpdateCargoStatusRecord
File: GCX016.cbl
GIVEN:
Destination hold flag has been set and all FDA processing is complete
WHEN:
The system updates the cargo status record
THEN:
The cargo record is permanently updated with FDA hold status, descriptions, and all related information
β Consolidated Acceptance Criteria
- The system generates FDA hold notification → appropriate notification messages are created for brokers, carriers, and other stakeholders about the FDA hold
- The system generates FDA hold notification → a notification is created to inform stakeholders about the FDA hold
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GenerateFDAHoldNotification(["Start Step"])
E_GenerateFDAHoldNotification(["End Step"])
N_GenerateFDAHoldNotification_Node0{"The system generates FDA hold
notification"}:::decision N_GenerateFDAHoldNotification_Node0_action["Appropriate notification messages
are created for brokers, carriers,
and other stakeholders about the FDA
hold"]:::main N_GenerateFDAHoldNotification_Node0 -- Yes --> N_GenerateFDAHoldNotification_Node0_action N_GenerateFDAHoldNotification_Node0_action --> E_GenerateFDAHoldNotification S_GenerateFDAHoldNotification --> N_GenerateFDAHoldNotification_Node0 N_GenerateFDAHoldNotification_Node1{"The system generates FDA hold
notification"}:::decision N_GenerateFDAHoldNotification_Node1_action["A notification is created to inform
stakeholders about the FDA hold"]:::main N_GenerateFDAHoldNotification_Node1 -- Yes --> N_GenerateFDAHoldNotification_Node1_action N_GenerateFDAHoldNotification_Node1_action --> E_GenerateFDAHoldNotification N_GenerateFDAHoldNotification_Node0 -- No --> N_GenerateFDAHoldNotification_Node1 N_GenerateFDAHoldNotification_Node1 -- No --> E_GenerateFDAHoldNotification
notification"}:::decision N_GenerateFDAHoldNotification_Node0_action["Appropriate notification messages
are created for brokers, carriers,
and other stakeholders about the FDA
hold"]:::main N_GenerateFDAHoldNotification_Node0 -- Yes --> N_GenerateFDAHoldNotification_Node0_action N_GenerateFDAHoldNotification_Node0_action --> E_GenerateFDAHoldNotification S_GenerateFDAHoldNotification --> N_GenerateFDAHoldNotification_Node0 N_GenerateFDAHoldNotification_Node1{"The system generates FDA hold
notification"}:::decision N_GenerateFDAHoldNotification_Node1_action["A notification is created to inform
stakeholders about the FDA hold"]:::main N_GenerateFDAHoldNotification_Node1 -- Yes --> N_GenerateFDAHoldNotification_Node1_action N_GenerateFDAHoldNotification_Node1_action --> E_GenerateFDAHoldNotification N_GenerateFDAHoldNotification_Node0 -- No --> N_GenerateFDAHoldNotification_Node1 N_GenerateFDAHoldNotification_Node1 -- No --> E_GenerateFDAHoldNotification
File: GCX016.cbl
GIVEN:
Cargo status record has been updated with FDA hold information
WHEN:
The system generates FDA hold notification
THEN:
Appropriate notification messages are created for brokers, carriers, and other stakeholders about the FDA hold
File: GCX016.cbl
GIVEN:
Hold location has been set as destination
WHEN:
The system generates FDA hold notification
THEN:
A notification is created to inform stakeholders about the FDA hold
β Consolidated Acceptance Criteria
- The system routes to FDA processing queue → the notification is sent to the appropriate FDA processing queue for regulatory review and action
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RoutetoFDAProcessingQueue(["Start Step"])
E_RoutetoFDAProcessingQueue(["End Step"])
N_RoutetoFDAProcessingQueue_Node0{"The system routes to FDA processing
queue"}:::decision N_RoutetoFDAProcessingQueue_Node0_action["The notification is sent to the
appropriate FDA processing queue for
regulatory review and action"]:::main N_RoutetoFDAProcessingQueue_Node0 -- Yes --> N_RoutetoFDAProcessingQueue_Node0_action N_RoutetoFDAProcessingQueue_Node0_action --> E_RoutetoFDAProcessingQueue S_RoutetoFDAProcessingQueue --> N_RoutetoFDAProcessingQueue_Node0 N_RoutetoFDAProcessingQueue_Node0 -- No --> E_RoutetoFDAProcessingQueue
queue"}:::decision N_RoutetoFDAProcessingQueue_Node0_action["The notification is sent to the
appropriate FDA processing queue for
regulatory review and action"]:::main N_RoutetoFDAProcessingQueue_Node0 -- Yes --> N_RoutetoFDAProcessingQueue_Node0_action N_RoutetoFDAProcessingQueue_Node0_action --> E_RoutetoFDAProcessingQueue S_RoutetoFDAProcessingQueue --> N_RoutetoFDAProcessingQueue_Node0 N_RoutetoFDAProcessingQueue_Node0 -- No --> E_RoutetoFDAProcessingQueue
File: GCX016.cbl
GIVEN:
FDA hold notification has been generated
WHEN:
The system routes to FDA processing queue
THEN:
- The notification is sent to the appropriate fda processing queue for regulatory review
- Action
β Consolidated Acceptance Criteria
- The system logs FDA hold action → a complete audit record of the FDA hold action is created including timestamps, cargo details, and regulatory codes
- System performs audit logging → system logs the FDA hold action with timestamp and regulatory details
- The system logs FDA hold action → the FDA hold action is recorded in the system logs
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogFDAHoldAction(["Start Step"])
E_LogFDAHoldAction(["End Step"])
N_LogFDAHoldAction_Node0{"The system logs FDA hold action"}:::decision
N_LogFDAHoldAction_Node0_action["A complete audit record of the FDA
hold action is created including
timestamps, cargo details, and
regulatory codes"]:::main N_LogFDAHoldAction_Node0 -- Yes --> N_LogFDAHoldAction_Node0_action N_LogFDAHoldAction_Node0_action --> E_LogFDAHoldAction S_LogFDAHoldAction --> N_LogFDAHoldAction_Node0 N_LogFDAHoldAction_Node1{"System performs audit logging"}:::decision N_LogFDAHoldAction_Node1_action["System logs the FDA hold action
with timestamp and regulatory
details"]:::main N_LogFDAHoldAction_Node1 -- Yes --> N_LogFDAHoldAction_Node1_action N_LogFDAHoldAction_Node1_action --> E_LogFDAHoldAction N_LogFDAHoldAction_Node0 -- No --> N_LogFDAHoldAction_Node1 N_LogFDAHoldAction_Node2{"The system logs FDA hold action"}:::decision N_LogFDAHoldAction_Node2_action["The FDA hold action is recorded in
the system logs"]:::main N_LogFDAHoldAction_Node2 -- Yes --> N_LogFDAHoldAction_Node2_action N_LogFDAHoldAction_Node2_action --> E_LogFDAHoldAction N_LogFDAHoldAction_Node1 -- No --> N_LogFDAHoldAction_Node2 N_LogFDAHoldAction_Node2 -- No --> E_LogFDAHoldAction
hold action is created including
timestamps, cargo details, and
regulatory codes"]:::main N_LogFDAHoldAction_Node0 -- Yes --> N_LogFDAHoldAction_Node0_action N_LogFDAHoldAction_Node0_action --> E_LogFDAHoldAction S_LogFDAHoldAction --> N_LogFDAHoldAction_Node0 N_LogFDAHoldAction_Node1{"System performs audit logging"}:::decision N_LogFDAHoldAction_Node1_action["System logs the FDA hold action
with timestamp and regulatory
details"]:::main N_LogFDAHoldAction_Node1 -- Yes --> N_LogFDAHoldAction_Node1_action N_LogFDAHoldAction_Node1_action --> E_LogFDAHoldAction N_LogFDAHoldAction_Node0 -- No --> N_LogFDAHoldAction_Node1 N_LogFDAHoldAction_Node2{"The system logs FDA hold action"}:::decision N_LogFDAHoldAction_Node2_action["The FDA hold action is recorded in
the system logs"]:::main N_LogFDAHoldAction_Node2 -- Yes --> N_LogFDAHoldAction_Node2_action N_LogFDAHoldAction_Node2_action --> E_LogFDAHoldAction N_LogFDAHoldAction_Node1 -- No --> N_LogFDAHoldAction_Node2 N_LogFDAHoldAction_Node2 -- No --> E_LogFDAHoldAction
File: GCX016.cbl
GIVEN:
FDA processing queue routing is complete
WHEN:
The system logs FDA hold action
THEN:
A complete audit record of the FDA hold action is created including timestamps, cargo details, and regulatory codes
File: GCX016.cbl
GIVEN:
Hold location indicator has been updated for cargo
WHEN:
System performs audit logging
THEN:
- System logs the fda hold action with timestamp
- Regulatory details
File: GCX016.cbl
GIVEN:
Cargo status array has been updated
WHEN:
The system logs FDA hold action
THEN:
The FDA hold action is recorded in the system logs
β Consolidated Acceptance Criteria
- The system completes FDA hold processing → fDA hold processing workflow is marked complete and control returns to main cargo processing flow
- FDA hold processing reaches completion → all FDA hold processing activities are finalized and the system is ready for next operations
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_FDAHoldProcessingComplete(["Start Step"])
E_FDAHoldProcessingComplete(["End Step"])
N_FDAHoldProcessingComplete_Node0{"The system completes FDA hold
processing"}:::decision N_FDAHoldProcessingComplete_Node0_action["FDA hold processing workflow is
marked complete and control returns
to main cargo processing flow"]:::main N_FDAHoldProcessingComplete_Node0 -- Yes --> N_FDAHoldProcessingComplete_Node0_action N_FDAHoldProcessingComplete_Node0_action --> E_FDAHoldProcessingComplete S_FDAHoldProcessingComplete --> N_FDAHoldProcessingComplete_Node0 N_FDAHoldProcessingComplete_Node1{"FDA hold processing reaches
completion"}:::decision N_FDAHoldProcessingComplete_Node1_action["All FDA hold processing activities
are finalized and the system is
ready for next operations"]:::main N_FDAHoldProcessingComplete_Node1 -- Yes --> N_FDAHoldProcessingComplete_Node1_action N_FDAHoldProcessingComplete_Node1_action --> E_FDAHoldProcessingComplete N_FDAHoldProcessingComplete_Node0 -- No --> N_FDAHoldProcessingComplete_Node1 N_FDAHoldProcessingComplete_Node1 -- No --> E_FDAHoldProcessingComplete
processing"}:::decision N_FDAHoldProcessingComplete_Node0_action["FDA hold processing workflow is
marked complete and control returns
to main cargo processing flow"]:::main N_FDAHoldProcessingComplete_Node0 -- Yes --> N_FDAHoldProcessingComplete_Node0_action N_FDAHoldProcessingComplete_Node0_action --> E_FDAHoldProcessingComplete S_FDAHoldProcessingComplete --> N_FDAHoldProcessingComplete_Node0 N_FDAHoldProcessingComplete_Node1{"FDA hold processing reaches
completion"}:::decision N_FDAHoldProcessingComplete_Node1_action["All FDA hold processing activities
are finalized and the system is
ready for next operations"]:::main N_FDAHoldProcessingComplete_Node1 -- Yes --> N_FDAHoldProcessingComplete_Node1_action N_FDAHoldProcessingComplete_Node1_action --> E_FDAHoldProcessingComplete N_FDAHoldProcessingComplete_Node0 -- No --> N_FDAHoldProcessingComplete_Node1 N_FDAHoldProcessingComplete_Node1 -- No --> E_FDAHoldProcessingComplete
File: GCX016.cbl
GIVEN:
FDA hold action has been logged successfully
WHEN:
The system completes FDA hold processing
THEN:
- Fda hold processing workflow is marked complete
- Control returns to main cargo processing flow
File: GCX016.cbl
GIVEN:
Cargo record has been updated with FDA status OR standard processing has been completed
WHEN:
FDA hold processing reaches completion
THEN:
- All fda hold processing activities are finalized
- The system is ready for next operations
β Consolidated Acceptance Criteria
- The system determines no FDA hold is required → fDA hold processing is bypassed and the system proceeds to completion without applying FDA holds
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_NoFDAHoldRequired(["Start Step"])
E_NoFDAHoldRequired(["End Step"])
N_NoFDAHoldRequired_Node0{"The system determines no FDA hold
is required"}:::decision N_NoFDAHoldRequired_Node0_action["FDA hold processing is bypassed and
the system proceeds to completion
without applying FDA holds"]:::main N_NoFDAHoldRequired_Node0 -- Yes --> N_NoFDAHoldRequired_Node0_action N_NoFDAHoldRequired_Node0_action --> E_NoFDAHoldRequired S_NoFDAHoldRequired --> N_NoFDAHoldRequired_Node0 N_NoFDAHoldRequired_Node0 -- No --> E_NoFDAHoldRequired
is required"}:::decision N_NoFDAHoldRequired_Node0_action["FDA hold processing is bypassed and
the system proceeds to completion
without applying FDA holds"]:::main N_NoFDAHoldRequired_Node0 -- Yes --> N_NoFDAHoldRequired_Node0_action N_NoFDAHoldRequired_Node0_action --> E_NoFDAHoldRequired S_NoFDAHoldRequired --> N_NoFDAHoldRequired_Node0 N_NoFDAHoldRequired_Node0 -- No --> E_NoFDAHoldRequired
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
Cargo is not at destination or no FDA hold codes are found
WHEN:
The system determines no FDA hold is required
THEN:
- Fda hold processing is bypassed
- The system proceeds to completion without applying fda holds
β Consolidated Acceptance Criteria
- If the cargo's current status → if cargo has existing PTT status, preserve current PTT status for comparison, otherwise proceed with PTT analysis
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CargoHasPTTStatus(["Start Step"])
E_CargoHasPTTStatus(["End Step"])
N_CargoHasPTTStatus_Node0{"The system evaluates the cargo s
current status"}:::decision N_CargoHasPTTStatus_Node0_action["If cargo has existing PTT status,
preserve current PTT status for
comparison, otherwise proceed with
PTT analysis"]:::main N_CargoHasPTTStatus_Node0 -- Yes --> N_CargoHasPTTStatus_Node0_action N_CargoHasPTTStatus_Node0_action --> E_CargoHasPTTStatus S_CargoHasPTTStatus --> N_CargoHasPTTStatus_Node0 N_CargoHasPTTStatus_Node0 -- No --> E_CargoHasPTTStatus
current status"}:::decision N_CargoHasPTTStatus_Node0_action["If cargo has existing PTT status,
preserve current PTT status for
comparison, otherwise proceed with
PTT analysis"]:::main N_CargoHasPTTStatus_Node0 -- Yes --> N_CargoHasPTTStatus_Node0_action N_CargoHasPTTStatus_Node0_action --> E_CargoHasPTTStatus S_CargoHasPTTStatus --> N_CargoHasPTTStatus_Node0 N_CargoHasPTTStatus_Node0 -- No --> E_CargoHasPTTStatus
File: GCX016.cbl
GIVEN:
A cargo record is being processed for PTT status changes
WHEN:
The system evaluates the cargo's current status
THEN:
If cargo has existing PTT status, preserve current PTT status for comparison, otherwise proceed with PTT analysis
β Consolidated Acceptance Criteria
- PTT processing begins → save the current PTT status values to working storage for potential restoration
- Complex status logic processing is initiated → the system saves and preserves the current PTT status for continued processing
- The system needs to process new disposition codes that might affect PTT status → the system saves the current PTT status information to temporary storage for potential restoration
- PTT status management begins → the system saves the current PTT status details including quantities and status codes for potential restoration
- PTT status management begins → the current PTT status and quantity information is saved for potential restoration
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SaveCurrentPTTStatus(["Start Step"])
E_SaveCurrentPTTStatus(["End Step"])
N_SaveCurrentPTTStatus_Node0{"PTT processing begins"}:::decision
N_SaveCurrentPTTStatus_Node0_action["Save the current PTT status values
to working storage for potential
restoration"]:::main N_SaveCurrentPTTStatus_Node0 -- Yes --> N_SaveCurrentPTTStatus_Node0_action N_SaveCurrentPTTStatus_Node0_action --> E_SaveCurrentPTTStatus S_SaveCurrentPTTStatus --> N_SaveCurrentPTTStatus_Node0 N_SaveCurrentPTTStatus_Node1{"Complex status logic processing is
initiated"}:::decision N_SaveCurrentPTTStatus_Node1_action["The system saves and preserves the
current PTT status for continued
processing"]:::main N_SaveCurrentPTTStatus_Node1 -- Yes --> N_SaveCurrentPTTStatus_Node1_action N_SaveCurrentPTTStatus_Node1_action --> E_SaveCurrentPTTStatus N_SaveCurrentPTTStatus_Node0 -- No --> N_SaveCurrentPTTStatus_Node1 N_SaveCurrentPTTStatus_Node2{"The system needs to process new
disposition codes that might affect
PTT status"}:::decision N_SaveCurrentPTTStatus_Node2_action["The system saves the current PTT
status information to temporary
storage for potential restoration"]:::main N_SaveCurrentPTTStatus_Node2 -- Yes --> N_SaveCurrentPTTStatus_Node2_action N_SaveCurrentPTTStatus_Node2_action --> E_SaveCurrentPTTStatus N_SaveCurrentPTTStatus_Node1 -- No --> N_SaveCurrentPTTStatus_Node2 N_SaveCurrentPTTStatus_Node3{"PTT status management begins"}:::decision N_SaveCurrentPTTStatus_Node3_action["The system saves the current PTT
status details including quantities
and status codes for potential
restoration"]:::main N_SaveCurrentPTTStatus_Node3 -- Yes --> N_SaveCurrentPTTStatus_Node3_action N_SaveCurrentPTTStatus_Node3_action --> E_SaveCurrentPTTStatus N_SaveCurrentPTTStatus_Node2 -- No --> N_SaveCurrentPTTStatus_Node3 N_SaveCurrentPTTStatus_Node4{"PTT status management begins"}:::decision N_SaveCurrentPTTStatus_Node4_action["The current PTT status and quantity
information is saved for potential
restoration"]:::main N_SaveCurrentPTTStatus_Node4 -- Yes --> N_SaveCurrentPTTStatus_Node4_action N_SaveCurrentPTTStatus_Node4_action --> E_SaveCurrentPTTStatus N_SaveCurrentPTTStatus_Node3 -- No --> N_SaveCurrentPTTStatus_Node4 N_SaveCurrentPTTStatus_Node4 -- No --> E_SaveCurrentPTTStatus
to working storage for potential
restoration"]:::main N_SaveCurrentPTTStatus_Node0 -- Yes --> N_SaveCurrentPTTStatus_Node0_action N_SaveCurrentPTTStatus_Node0_action --> E_SaveCurrentPTTStatus S_SaveCurrentPTTStatus --> N_SaveCurrentPTTStatus_Node0 N_SaveCurrentPTTStatus_Node1{"Complex status logic processing is
initiated"}:::decision N_SaveCurrentPTTStatus_Node1_action["The system saves and preserves the
current PTT status for continued
processing"]:::main N_SaveCurrentPTTStatus_Node1 -- Yes --> N_SaveCurrentPTTStatus_Node1_action N_SaveCurrentPTTStatus_Node1_action --> E_SaveCurrentPTTStatus N_SaveCurrentPTTStatus_Node0 -- No --> N_SaveCurrentPTTStatus_Node1 N_SaveCurrentPTTStatus_Node2{"The system needs to process new
disposition codes that might affect
PTT status"}:::decision N_SaveCurrentPTTStatus_Node2_action["The system saves the current PTT
status information to temporary
storage for potential restoration"]:::main N_SaveCurrentPTTStatus_Node2 -- Yes --> N_SaveCurrentPTTStatus_Node2_action N_SaveCurrentPTTStatus_Node2_action --> E_SaveCurrentPTTStatus N_SaveCurrentPTTStatus_Node1 -- No --> N_SaveCurrentPTTStatus_Node2 N_SaveCurrentPTTStatus_Node3{"PTT status management begins"}:::decision N_SaveCurrentPTTStatus_Node3_action["The system saves the current PTT
status details including quantities
and status codes for potential
restoration"]:::main N_SaveCurrentPTTStatus_Node3 -- Yes --> N_SaveCurrentPTTStatus_Node3_action N_SaveCurrentPTTStatus_Node3_action --> E_SaveCurrentPTTStatus N_SaveCurrentPTTStatus_Node2 -- No --> N_SaveCurrentPTTStatus_Node3 N_SaveCurrentPTTStatus_Node4{"PTT status management begins"}:::decision N_SaveCurrentPTTStatus_Node4_action["The current PTT status and quantity
information is saved for potential
restoration"]:::main N_SaveCurrentPTTStatus_Node4 -- Yes --> N_SaveCurrentPTTStatus_Node4_action N_SaveCurrentPTTStatus_Node4_action --> E_SaveCurrentPTTStatus N_SaveCurrentPTTStatus_Node3 -- No --> N_SaveCurrentPTTStatus_Node4 N_SaveCurrentPTTStatus_Node4 -- No --> E_SaveCurrentPTTStatus
File: GCX016.cbl
GIVEN:
Cargo has an existing PTT status
WHEN:
PTT processing begins
THEN:
Save the current PTT status values to working storage for potential restoration
File: GCX016.cbl
GIVEN:
A cargo record has existing PTT status
WHEN:
Complex status logic processing is initiated
THEN:
- The system saves
- Preserves the current ptt status for continued processing
File: GCX016.cbl
GIVEN:
A cargo record with existing PTT status
WHEN:
The system needs to process new disposition codes that might affect PTT status
THEN:
The system saves the current PTT status information to temporary storage for potential restoration
File: GCX016.cbl
GIVEN:
The cargo has an active PTT status
WHEN:
PTT status management begins
THEN:
- The system saves the current ptt status details including quantities
- Status codes for potential restoration
File: GCX016.cbl
GIVEN:
A cargo record is being processed for PTT status changes
WHEN:
PTT status management begins
THEN:
- The current ptt status
- Quantity information is saved for potential restoration
β Consolidated Acceptance Criteria
- The system analyzes the status array for PTT codes → identify and flag any PTT disposition codes present in the status array
- The system analyzes the status array for PTT processing → all PTT-related codes are identified and their positions in the array are noted
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AnalyzeStatusArrayforPTTCodes(["Start Step"])
E_AnalyzeStatusArrayforPTTCodes(["End Step"])
N_AnalyzeStatusArrayforPTTCodes_Node0{"The system analyzes the status
array for PTT codes"}:::decision N_AnalyzeStatusArrayforPTTCodes_Node0_action["Identify and flag any PTT
disposition codes present in the
status array"]:::main N_AnalyzeStatusArrayforPTTCodes_Node0 -- Yes --> N_AnalyzeStatusArrayforPTTCodes_Node0_action N_AnalyzeStatusArrayforPTTCodes_Node0_action --> E_AnalyzeStatusArrayforPTTCodes S_AnalyzeStatusArrayforPTTCodes --> N_AnalyzeStatusArrayforPTTCodes_Node0 N_AnalyzeStatusArrayforPTTCodes_Node1{"The system analyzes the status
array for PTT processing"}:::decision N_AnalyzeStatusArrayforPTTCodes_Node1_action["All PTT-related codes are
identified and their positions in
the array are noted"]:::main N_AnalyzeStatusArrayforPTTCodes_Node1 -- Yes --> N_AnalyzeStatusArrayforPTTCodes_Node1_action N_AnalyzeStatusArrayforPTTCodes_Node1_action --> E_AnalyzeStatusArrayforPTTCodes N_AnalyzeStatusArrayforPTTCodes_Node0 -- No --> N_AnalyzeStatusArrayforPTTCodes_Node1 N_AnalyzeStatusArrayforPTTCodes_Node1 -- No --> E_AnalyzeStatusArrayforPTTCodes
array for PTT codes"}:::decision N_AnalyzeStatusArrayforPTTCodes_Node0_action["Identify and flag any PTT
disposition codes present in the
status array"]:::main N_AnalyzeStatusArrayforPTTCodes_Node0 -- Yes --> N_AnalyzeStatusArrayforPTTCodes_Node0_action N_AnalyzeStatusArrayforPTTCodes_Node0_action --> E_AnalyzeStatusArrayforPTTCodes S_AnalyzeStatusArrayforPTTCodes --> N_AnalyzeStatusArrayforPTTCodes_Node0 N_AnalyzeStatusArrayforPTTCodes_Node1{"The system analyzes the status
array for PTT processing"}:::decision N_AnalyzeStatusArrayforPTTCodes_Node1_action["All PTT-related codes are
identified and their positions in
the array are noted"]:::main N_AnalyzeStatusArrayforPTTCodes_Node1 -- Yes --> N_AnalyzeStatusArrayforPTTCodes_Node1_action N_AnalyzeStatusArrayforPTTCodes_Node1_action --> E_AnalyzeStatusArrayforPTTCodes N_AnalyzeStatusArrayforPTTCodes_Node0 -- No --> N_AnalyzeStatusArrayforPTTCodes_Node1 N_AnalyzeStatusArrayforPTTCodes_Node1 -- No --> E_AnalyzeStatusArrayforPTTCodes
File: GCX016.cbl
GIVEN:
A cargo status array exists with multiple status entries
WHEN:
The system analyzes the status array for PTT codes
THEN:
- Identify
- Flag any ptt disposition codes present in the status array
File: GCX016.cbl
GIVEN:
A cargo record has a status array with multiple disposition codes
WHEN:
The system analyzes the status array for PTT processing
THEN:
- All ptt-related codes are identified
- Their positions in the array are noted
β Consolidated Acceptance Criteria
- The system checks for PTT disposition code presence → if PTT disposition code is found, proceed with PTT quantity extraction, otherwise restore previous PTT status if needed
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_PTTDispositionCodeFound(["Start Step"])
E_PTTDispositionCodeFound(["End Step"])
N_PTTDispositionCodeFound_Node0{"The system checks for PTT
disposition code presence"}:::decision N_PTTDispositionCodeFound_Node0_action["If PTT disposition code is found,
proceed with PTT quantity
extraction, otherwise restore
previous PTT status if needed"]:::main N_PTTDispositionCodeFound_Node0 -- Yes --> N_PTTDispositionCodeFound_Node0_action N_PTTDispositionCodeFound_Node0_action --> E_PTTDispositionCodeFound S_PTTDispositionCodeFound --> N_PTTDispositionCodeFound_Node0 N_PTTDispositionCodeFound_Node0 -- No --> E_PTTDispositionCodeFound
disposition code presence"}:::decision N_PTTDispositionCodeFound_Node0_action["If PTT disposition code is found,
proceed with PTT quantity
extraction, otherwise restore
previous PTT status if needed"]:::main N_PTTDispositionCodeFound_Node0 -- Yes --> N_PTTDispositionCodeFound_Node0_action N_PTTDispositionCodeFound_Node0_action --> E_PTTDispositionCodeFound S_PTTDispositionCodeFound --> N_PTTDispositionCodeFound_Node0 N_PTTDispositionCodeFound_Node0 -- No --> E_PTTDispositionCodeFound
File: GCX016.cbl
GIVEN:
The status array has been analyzed for PTT codes
WHEN:
The system checks for PTT disposition code presence
THEN:
If PTT disposition code is found, proceed with PTT quantity extraction, otherwise restore previous PTT status if needed
β Consolidated Acceptance Criteria
- The system extracts quantity information → retrieve the PTT quantity value from the status array entry for validation
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExtractPTTQuantityfromStatusArray(["Start Step"])
E_ExtractPTTQuantityfromStatusArray(["End Step"])
N_ExtractPTTQuantityfromStatusArray_Node0{"The system extracts quantity
information"}:::decision N_ExtractPTTQuantityfromStatusArray_Node0_action["Retrieve the PTT quantity value
from the status array entry for
validation"]:::main N_ExtractPTTQuantityfromStatusArray_Node0 -- Yes --> N_ExtractPTTQuantityfromStatusArray_Node0_action N_ExtractPTTQuantityfromStatusArray_Node0_action --> E_ExtractPTTQuantityfromStatusArray S_ExtractPTTQuantityfromStatusArray --> N_ExtractPTTQuantityfromStatusArray_Node0 N_ExtractPTTQuantityfromStatusArray_Node0 -- No --> E_ExtractPTTQuantityfromStatusArray
information"}:::decision N_ExtractPTTQuantityfromStatusArray_Node0_action["Retrieve the PTT quantity value
from the status array entry for
validation"]:::main N_ExtractPTTQuantityfromStatusArray_Node0 -- Yes --> N_ExtractPTTQuantityfromStatusArray_Node0_action N_ExtractPTTQuantityfromStatusArray_Node0_action --> E_ExtractPTTQuantityfromStatusArray S_ExtractPTTQuantityfromStatusArray --> N_ExtractPTTQuantityfromStatusArray_Node0 N_ExtractPTTQuantityfromStatusArray_Node0 -- No --> E_ExtractPTTQuantityfromStatusArray
File: GCX016.cbl
GIVEN:
A PTT disposition code has been found in the status array
WHEN:
The system extracts quantity information
THEN:
Retrieve the PTT quantity value from the status array entry for validation
β Consolidated Acceptance Criteria
- The system validates the PTT quantity against total cargo quantity → if PTT quantity is valid and within acceptable range, proceed with quantity calculations, otherwise generate PTT validation error
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ValidatePTTQuantityAgainstCargoQuantity(["Start Step"])
E_ValidatePTTQuantityAgainstCargoQuantity(["End Step"])
N_ValidatePTTQuantityAgainstCargoQuantity_Node0{"The system validates the PTT
quantity against total cargo
quantity"}:::decision N_ValidatePTTQuantityAgainstCargoQuantity_Node0_action["If PTT quantity is valid and within
acceptable range, proceed with
quantity calculations, otherwise
generate PTT validation error"]:::main N_ValidatePTTQuantityAgainstCargoQuantity_Node0 -- Yes --> N_ValidatePTTQuantityAgainstCargoQuantity_Node0_action N_ValidatePTTQuantityAgainstCargoQuantity_Node0_action --> E_ValidatePTTQuantityAgainstCargoQuantity S_ValidatePTTQuantityAgainstCargoQuantity --> N_ValidatePTTQuantityAgainstCargoQuantity_Node0 N_ValidatePTTQuantityAgainstCargoQuantity_Node0 -- No --> E_ValidatePTTQuantityAgainstCargoQuantity
quantity against total cargo
quantity"}:::decision N_ValidatePTTQuantityAgainstCargoQuantity_Node0_action["If PTT quantity is valid and within
acceptable range, proceed with
quantity calculations, otherwise
generate PTT validation error"]:::main N_ValidatePTTQuantityAgainstCargoQuantity_Node0 -- Yes --> N_ValidatePTTQuantityAgainstCargoQuantity_Node0_action N_ValidatePTTQuantityAgainstCargoQuantity_Node0_action --> E_ValidatePTTQuantityAgainstCargoQuantity S_ValidatePTTQuantityAgainstCargoQuantity --> N_ValidatePTTQuantityAgainstCargoQuantity_Node0 N_ValidatePTTQuantityAgainstCargoQuantity_Node0 -- No --> E_ValidatePTTQuantityAgainstCargoQuantity
File: GCX016.cbl
GIVEN:
PTT quantity has been extracted from the status array
WHEN:
The system validates the PTT quantity against total cargo quantity
THEN:
- If ptt quantity is valid
- Within acceptable range, proceed with quantity calculations, otherwise generate ptt validation error
β Consolidated Acceptance Criteria
- The system checks validation results → if quantity is valid, calculate remaining quantity after PTT, otherwise log PTT validation error
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_QuantityValid(["Start Step"])
E_QuantityValid(["End Step"])
N_QuantityValid_Node0{"The system checks validation
results"}:::decision N_QuantityValid_Node0_action["If quantity is valid, calculate
remaining quantity after PTT,
otherwise log PTT validation error"]:::main N_QuantityValid_Node0 -- Yes --> N_QuantityValid_Node0_action N_QuantityValid_Node0_action --> E_QuantityValid S_QuantityValid --> N_QuantityValid_Node0 N_QuantityValid_Node0 -- No --> E_QuantityValid
results"}:::decision N_QuantityValid_Node0_action["If quantity is valid, calculate
remaining quantity after PTT,
otherwise log PTT validation error"]:::main N_QuantityValid_Node0 -- Yes --> N_QuantityValid_Node0_action N_QuantityValid_Node0_action --> E_QuantityValid S_QuantityValid --> N_QuantityValid_Node0 N_QuantityValid_Node0 -- No --> E_QuantityValid
File: GCX016.cbl
GIVEN:
PTT quantity has been validated against business rules
WHEN:
The system checks validation results
THEN:
If quantity is valid, calculate remaining quantity after PTT, otherwise log PTT validation error
β Consolidated Acceptance Criteria
- The system calculates remaining quantities → subtract PTT quantity from total cargo quantity to determine remaining quantity for further processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CalculateRemainingQuantityAfterPTT(["Start Step"])
E_CalculateRemainingQuantityAfterPTT(["End Step"])
N_CalculateRemainingQuantityAfterPTT_Node0{"The system calculates remaining
quantities"}:::decision N_CalculateRemainingQuantityAfterPTT_Node0_action["Subtract PTT quantity from total
cargo quantity to determine
remaining quantity for further
processing"]:::main N_CalculateRemainingQuantityAfterPTT_Node0 -- Yes --> N_CalculateRemainingQuantityAfterPTT_Node0_action N_CalculateRemainingQuantityAfterPTT_Node0_action --> E_CalculateRemainingQuantityAfterPTT S_CalculateRemainingQuantityAfterPTT --> N_CalculateRemainingQuantityAfterPTT_Node0 N_CalculateRemainingQuantityAfterPTT_Node0 -- No --> E_CalculateRemainingQuantityAfterPTT
quantities"}:::decision N_CalculateRemainingQuantityAfterPTT_Node0_action["Subtract PTT quantity from total
cargo quantity to determine
remaining quantity for further
processing"]:::main N_CalculateRemainingQuantityAfterPTT_Node0 -- Yes --> N_CalculateRemainingQuantityAfterPTT_Node0_action N_CalculateRemainingQuantityAfterPTT_Node0_action --> E_CalculateRemainingQuantityAfterPTT S_CalculateRemainingQuantityAfterPTT --> N_CalculateRemainingQuantityAfterPTT_Node0 N_CalculateRemainingQuantityAfterPTT_Node0 -- No --> E_CalculateRemainingQuantityAfterPTT
File: GCX016.cbl
GIVEN:
PTT quantity has been validated as acceptable
WHEN:
The system calculates remaining quantities
THEN:
Subtract PTT quantity from total cargo quantity to determine remaining quantity for further processing
β Consolidated Acceptance Criteria
- The system sets PTT status → set PTT status with the partial quantity value and maintain tracking for remaining unreleased cargo
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetPTTStatuswithPartialQuantity(["Start Step"])
E_SetPTTStatuswithPartialQuantity(["End Step"])
N_SetPTTStatuswithPartialQuantity_Node0{"The system sets PTT status"}:::decision
N_SetPTTStatuswithPartialQuantity_Node0_action["Set PTT status with the partial
quantity value and maintain tracking
for remaining unreleased cargo"]:::main N_SetPTTStatuswithPartialQuantity_Node0 -- Yes --> N_SetPTTStatuswithPartialQuantity_Node0_action N_SetPTTStatuswithPartialQuantity_Node0_action --> E_SetPTTStatuswithPartialQuantity S_SetPTTStatuswithPartialQuantity --> N_SetPTTStatuswithPartialQuantity_Node0 N_SetPTTStatuswithPartialQuantity_Node0 -- No --> E_SetPTTStatuswithPartialQuantity
quantity value and maintain tracking
for remaining unreleased cargo"]:::main N_SetPTTStatuswithPartialQuantity_Node0 -- Yes --> N_SetPTTStatuswithPartialQuantity_Node0_action N_SetPTTStatuswithPartialQuantity_Node0_action --> E_SetPTTStatuswithPartialQuantity S_SetPTTStatuswithPartialQuantity --> N_SetPTTStatuswithPartialQuantity_Node0 N_SetPTTStatuswithPartialQuantity_Node0 -- No --> E_SetPTTStatuswithPartialQuantity
File: GCX016.cbl
GIVEN:
A partial release scenario has been identified
WHEN:
The system sets PTT status
THEN:
- Set ptt status with the partial quantity value
- Maintain tracking for remaining unreleased cargo
β Consolidated Acceptance Criteria
- The system updates released quantity → add PTT quantity to the cargo's total released quantity field
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UpdateReleasedQuantity(["Start Step"])
E_UpdateReleasedQuantity(["End Step"])
N_UpdateReleasedQuantity_Node0{"The system updates released
quantity"}:::decision N_UpdateReleasedQuantity_Node0_action["Add PTT quantity to the cargo s
total released quantity field"]:::main N_UpdateReleasedQuantity_Node0 -- Yes --> N_UpdateReleasedQuantity_Node0_action N_UpdateReleasedQuantity_Node0_action --> E_UpdateReleasedQuantity S_UpdateReleasedQuantity --> N_UpdateReleasedQuantity_Node0 N_UpdateReleasedQuantity_Node0 -- No --> E_UpdateReleasedQuantity
quantity"}:::decision N_UpdateReleasedQuantity_Node0_action["Add PTT quantity to the cargo s
total released quantity field"]:::main N_UpdateReleasedQuantity_Node0 -- Yes --> N_UpdateReleasedQuantity_Node0_action N_UpdateReleasedQuantity_Node0_action --> E_UpdateReleasedQuantity S_UpdateReleasedQuantity --> N_UpdateReleasedQuantity_Node0 N_UpdateReleasedQuantity_Node0 -- No --> E_UpdateReleasedQuantity
File: GCX016.cbl
GIVEN:
PTT status has been set with partial quantity
WHEN:
The system updates released quantity
THEN:
Add PTT quantity to the cargo's total released quantity field
β Consolidated Acceptance Criteria
- The system processes remaining cargo → preserve PTT status for the remaining unreleased cargo quantity to enable future processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_PreservePTTforRemainingCargo(["Start Step"])
E_PreservePTTforRemainingCargo(["End Step"])
N_PreservePTTforRemainingCargo_Node0{"The system processes remaining
cargo"}:::decision N_PreservePTTforRemainingCargo_Node0_action["Preserve PTT status for the
remaining unreleased cargo quantity
to enable future processing"]:::main N_PreservePTTforRemainingCargo_Node0 -- Yes --> N_PreservePTTforRemainingCargo_Node0_action N_PreservePTTforRemainingCargo_Node0_action --> E_PreservePTTforRemainingCargo S_PreservePTTforRemainingCargo --> N_PreservePTTforRemainingCargo_Node0 N_PreservePTTforRemainingCargo_Node0 -- No --> E_PreservePTTforRemainingCargo
cargo"}:::decision N_PreservePTTforRemainingCargo_Node0_action["Preserve PTT status for the
remaining unreleased cargo quantity
to enable future processing"]:::main N_PreservePTTforRemainingCargo_Node0 -- Yes --> N_PreservePTTforRemainingCargo_Node0_action N_PreservePTTforRemainingCargo_Node0_action --> E_PreservePTTforRemainingCargo S_PreservePTTforRemainingCargo --> N_PreservePTTforRemainingCargo_Node0 N_PreservePTTforRemainingCargo_Node0 -- No --> E_PreservePTTforRemainingCargo
File: GCX016.cbl
GIVEN:
Released quantity has been updated for partial release
WHEN:
The system processes remaining cargo
THEN:
Preserve PTT status for the remaining unreleased cargo quantity to enable future processing
β Consolidated Acceptance Criteria
- The system sets PTT release status → set full PTT release status for the entire cargo quantity
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetFullPTTReleaseStatus(["Start Step"])
E_SetFullPTTReleaseStatus(["End Step"])
N_SetFullPTTReleaseStatus_Node0{"The system sets PTT release status"}:::decision
N_SetFullPTTReleaseStatus_Node0_action["Set full PTT release status for the
entire cargo quantity"]:::main N_SetFullPTTReleaseStatus_Node0 -- Yes --> N_SetFullPTTReleaseStatus_Node0_action N_SetFullPTTReleaseStatus_Node0_action --> E_SetFullPTTReleaseStatus S_SetFullPTTReleaseStatus --> N_SetFullPTTReleaseStatus_Node0 N_SetFullPTTReleaseStatus_Node0 -- No --> E_SetFullPTTReleaseStatus
entire cargo quantity"]:::main N_SetFullPTTReleaseStatus_Node0 -- Yes --> N_SetFullPTTReleaseStatus_Node0_action N_SetFullPTTReleaseStatus_Node0_action --> E_SetFullPTTReleaseStatus S_SetFullPTTReleaseStatus --> N_SetFullPTTReleaseStatus_Node0 N_SetFullPTTReleaseStatus_Node0 -- No --> E_SetFullPTTReleaseStatus
File: GCX016.cbl
GIVEN:
The scenario is determined to be a full release (not partial)
WHEN:
The system sets PTT release status
THEN:
Set full PTT release status for the entire cargo quantity
β Consolidated Acceptance Criteria
- The system cleans up the status array → remove PTT status codes from the cargo status array to prevent duplicate processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ClearPTTStatusfromArray(["Start Step"])
E_ClearPTTStatusfromArray(["End Step"])
N_ClearPTTStatusfromArray_Node0{"The system cleans up the status
array"}:::decision N_ClearPTTStatusfromArray_Node0_action["Remove PTT status codes from the
cargo status array to prevent
duplicate processing"]:::main N_ClearPTTStatusfromArray_Node0 -- Yes --> N_ClearPTTStatusfromArray_Node0_action N_ClearPTTStatusfromArray_Node0_action --> E_ClearPTTStatusfromArray S_ClearPTTStatusfromArray --> N_ClearPTTStatusfromArray_Node0 N_ClearPTTStatusfromArray_Node0 -- No --> E_ClearPTTStatusfromArray
array"}:::decision N_ClearPTTStatusfromArray_Node0_action["Remove PTT status codes from the
cargo status array to prevent
duplicate processing"]:::main N_ClearPTTStatusfromArray_Node0 -- Yes --> N_ClearPTTStatusfromArray_Node0_action N_ClearPTTStatusfromArray_Node0_action --> E_ClearPTTStatusfromArray S_ClearPTTStatusfromArray --> N_ClearPTTStatusfromArray_Node0 N_ClearPTTStatusfromArray_Node0 -- No --> E_ClearPTTStatusfromArray
File: GCX016.cbl
GIVEN:
Full PTT release status has been set
WHEN:
The system cleans up the status array
THEN:
Remove PTT status codes from the cargo status array to prevent duplicate processing
β Consolidated Acceptance Criteria
- The system needs to restore previous state → restore the previously saved PTT status to maintain cargo status consistency
- The system needs to restore previous state → the previously saved PTT status and quantity information is restored
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RestorePreviousPTTStatusifNeeded(["Start Step"])
E_RestorePreviousPTTStatusifNeeded(["End Step"])
N_RestorePreviousPTTStatusifNeeded_Node0{"The system needs to restore
previous state"}:::decision N_RestorePreviousPTTStatusifNeeded_Node0_action["Restore the previously saved PTT
status to maintain cargo status
consistency"]:::main N_RestorePreviousPTTStatusifNeeded_Node0 -- Yes --> N_RestorePreviousPTTStatusifNeeded_Node0_action N_RestorePreviousPTTStatusifNeeded_Node0_action --> E_RestorePreviousPTTStatusifNeeded S_RestorePreviousPTTStatusifNeeded --> N_RestorePreviousPTTStatusifNeeded_Node0 N_RestorePreviousPTTStatusifNeeded_Node1{"The system needs to restore
previous state"}:::decision N_RestorePreviousPTTStatusifNeeded_Node1_action["The previously saved PTT status and
quantity information is restored"]:::main N_RestorePreviousPTTStatusifNeeded_Node1 -- Yes --> N_RestorePreviousPTTStatusifNeeded_Node1_action N_RestorePreviousPTTStatusifNeeded_Node1_action --> E_RestorePreviousPTTStatusifNeeded N_RestorePreviousPTTStatusifNeeded_Node0 -- No --> N_RestorePreviousPTTStatusifNeeded_Node1 N_RestorePreviousPTTStatusifNeeded_Node1 -- No --> E_RestorePreviousPTTStatusifNeeded
previous state"}:::decision N_RestorePreviousPTTStatusifNeeded_Node0_action["Restore the previously saved PTT
status to maintain cargo status
consistency"]:::main N_RestorePreviousPTTStatusifNeeded_Node0 -- Yes --> N_RestorePreviousPTTStatusifNeeded_Node0_action N_RestorePreviousPTTStatusifNeeded_Node0_action --> E_RestorePreviousPTTStatusifNeeded S_RestorePreviousPTTStatusifNeeded --> N_RestorePreviousPTTStatusifNeeded_Node0 N_RestorePreviousPTTStatusifNeeded_Node1{"The system needs to restore
previous state"}:::decision N_RestorePreviousPTTStatusifNeeded_Node1_action["The previously saved PTT status and
quantity information is restored"]:::main N_RestorePreviousPTTStatusifNeeded_Node1 -- Yes --> N_RestorePreviousPTTStatusifNeeded_Node1_action N_RestorePreviousPTTStatusifNeeded_Node1_action --> E_RestorePreviousPTTStatusifNeeded N_RestorePreviousPTTStatusifNeeded_Node0 -- No --> N_RestorePreviousPTTStatusifNeeded_Node1 N_RestorePreviousPTTStatusifNeeded_Node1 -- No --> E_RestorePreviousPTTStatusifNeeded
File: GCX016.cbl
GIVEN:
No PTT disposition code was found in the current processing
WHEN:
The system needs to restore previous state
THEN:
Restore the previously saved PTT status to maintain cargo status consistency
File: GCX016.cbl
GIVEN:
PTT processing cannot be completed or no PTT codes were found
WHEN:
The system needs to restore previous state
THEN:
- The previously saved ptt status
- Quantity information is restored
β Consolidated Acceptance Criteria
- The system updates the cargo record → write the final PTT status and associated quantities to the cargo database record
- The system updates the cargo record with final PTT status → the cargo record reflects the accurate PTT status and quantities for future business operations
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UpdateCargoRecordwithPTTStatus(["Start Step"])
E_UpdateCargoRecordwithPTTStatus(["End Step"])
N_UpdateCargoRecordwithPTTStatus_Node0{"The system updates the cargo record"}:::decision
N_UpdateCargoRecordwithPTTStatus_Node0_action["Write the final PTT status and
associated quantities to the cargo
database record"]:::main N_UpdateCargoRecordwithPTTStatus_Node0 -- Yes --> N_UpdateCargoRecordwithPTTStatus_Node0_action N_UpdateCargoRecordwithPTTStatus_Node0_action --> E_UpdateCargoRecordwithPTTStatus S_UpdateCargoRecordwithPTTStatus --> N_UpdateCargoRecordwithPTTStatus_Node0 N_UpdateCargoRecordwithPTTStatus_Node1{"The system updates the cargo record
with final PTT status"}:::decision N_UpdateCargoRecordwithPTTStatus_Node1_action["The cargo record reflects the
accurate PTT status and quantities
for future business operations"]:::main N_UpdateCargoRecordwithPTTStatus_Node1 -- Yes --> N_UpdateCargoRecordwithPTTStatus_Node1_action N_UpdateCargoRecordwithPTTStatus_Node1_action --> E_UpdateCargoRecordwithPTTStatus N_UpdateCargoRecordwithPTTStatus_Node0 -- No --> N_UpdateCargoRecordwithPTTStatus_Node1 N_UpdateCargoRecordwithPTTStatus_Node1 -- No --> E_UpdateCargoRecordwithPTTStatus
associated quantities to the cargo
database record"]:::main N_UpdateCargoRecordwithPTTStatus_Node0 -- Yes --> N_UpdateCargoRecordwithPTTStatus_Node0_action N_UpdateCargoRecordwithPTTStatus_Node0_action --> E_UpdateCargoRecordwithPTTStatus S_UpdateCargoRecordwithPTTStatus --> N_UpdateCargoRecordwithPTTStatus_Node0 N_UpdateCargoRecordwithPTTStatus_Node1{"The system updates the cargo record
with final PTT status"}:::decision N_UpdateCargoRecordwithPTTStatus_Node1_action["The cargo record reflects the
accurate PTT status and quantities
for future business operations"]:::main N_UpdateCargoRecordwithPTTStatus_Node1 -- Yes --> N_UpdateCargoRecordwithPTTStatus_Node1_action N_UpdateCargoRecordwithPTTStatus_Node1_action --> E_UpdateCargoRecordwithPTTStatus N_UpdateCargoRecordwithPTTStatus_Node0 -- No --> N_UpdateCargoRecordwithPTTStatus_Node1 N_UpdateCargoRecordwithPTTStatus_Node1 -- No --> E_UpdateCargoRecordwithPTTStatus
File: GCX016.cbl
GIVEN:
PTT status has been determined (new, preserved, or restored)
WHEN:
The system updates the cargo record
THEN:
- Write the final ptt status
- Associated quantities to the cargo database record
File: GCX016.cbl
GIVEN:
PTT status processing is complete and any required logging has been performed
WHEN:
The system updates the cargo record with final PTT status
THEN:
- The cargo record reflects the accurate ptt status
- Quantities for future business operations
β Consolidated Acceptance Criteria
- The system generates status messages → create and send PTT status notification messages to relevant external systems and stakeholders
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GeneratePTTStatusMessage(["Start Step"])
E_GeneratePTTStatusMessage(["End Step"])
N_GeneratePTTStatusMessage_Node0{"The system generates status
messages"}:::decision N_GeneratePTTStatusMessage_Node0_action["Create and send PTT status
notification messages to relevant
external systems and stakeholders"]:::main N_GeneratePTTStatusMessage_Node0 -- Yes --> N_GeneratePTTStatusMessage_Node0_action N_GeneratePTTStatusMessage_Node0_action --> E_GeneratePTTStatusMessage S_GeneratePTTStatusMessage --> N_GeneratePTTStatusMessage_Node0 N_GeneratePTTStatusMessage_Node0 -- No --> E_GeneratePTTStatusMessage
messages"}:::decision N_GeneratePTTStatusMessage_Node0_action["Create and send PTT status
notification messages to relevant
external systems and stakeholders"]:::main N_GeneratePTTStatusMessage_Node0 -- Yes --> N_GeneratePTTStatusMessage_Node0_action N_GeneratePTTStatusMessage_Node0_action --> E_GeneratePTTStatusMessage S_GeneratePTTStatusMessage --> N_GeneratePTTStatusMessage_Node0 N_GeneratePTTStatusMessage_Node0 -- No --> E_GeneratePTTStatusMessage
File: GCX016.cbl
GIVEN:
Cargo record has been updated with PTT status
WHEN:
The system generates status messages
THEN:
- Create
- Send ptt status notification messages to relevant external systems
- Stakeholders
β Consolidated Acceptance Criteria
- The system encounters validation errors → generate PTT validation error and proceed to error logging
- The system processes the validation error → an appropriate PTT validation error condition is set and processing continues to completion
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_PTTValidationError(["Start Step"])
E_PTTValidationError(["End Step"])
N_PTTValidationError_Node0{"The system encounters validation
errors"}:::decision N_PTTValidationError_Node0_action["Generate PTT validation error and
proceed to error logging"]:::main N_PTTValidationError_Node0 -- Yes --> N_PTTValidationError_Node0_action N_PTTValidationError_Node0_action --> E_PTTValidationError S_PTTValidationError --> N_PTTValidationError_Node0 N_PTTValidationError_Node1{"The system processes the validation
error"}:::decision N_PTTValidationError_Node1_action["An appropriate PTT validation error
condition is set and processing
continues to completion"]:::exclusion N_PTTValidationError_Node1 -- Yes -->|Alternative| N_PTTValidationError_Node1_action N_PTTValidationError_Node1_action --> E_PTTValidationError N_PTTValidationError_Node0 -- No --> N_PTTValidationError_Node1 N_PTTValidationError_Node1 -- No --> E_PTTValidationError
errors"}:::decision N_PTTValidationError_Node0_action["Generate PTT validation error and
proceed to error logging"]:::main N_PTTValidationError_Node0 -- Yes --> N_PTTValidationError_Node0_action N_PTTValidationError_Node0_action --> E_PTTValidationError S_PTTValidationError --> N_PTTValidationError_Node0 N_PTTValidationError_Node1{"The system processes the validation
error"}:::decision N_PTTValidationError_Node1_action["An appropriate PTT validation error
condition is set and processing
continues to completion"]:::exclusion N_PTTValidationError_Node1 -- Yes -->|Alternative| N_PTTValidationError_Node1_action N_PTTValidationError_Node1_action --> E_PTTValidationError N_PTTValidationError_Node0 -- No --> N_PTTValidationError_Node1 N_PTTValidationError_Node1 -- No --> E_PTTValidationError
File: GCX016.cbl
GIVEN:
PTT quantity validation has failed
WHEN:
The system encounters validation errors
THEN:
- Generate ptt validation error
- Proceed to error logging
File: GCX016.cbl
GIVEN:
PTT quantity validation has failed
WHEN:
The system processes the validation error
THEN:
- An appropriate ptt validation error condition is set
- Processing continues to completion
β Consolidated Acceptance Criteria
- The system logs the error → create detailed error log entry with PTT validation failure details and cargo information
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogPTTErrorMessage(["Start Step"])
E_LogPTTErrorMessage(["End Step"])
N_LogPTTErrorMessage_Node0{"The system logs the error"}:::decision
N_LogPTTErrorMessage_Node0_action["Create detailed error log entry
with PTT validation failure details
and cargo information"]:::exclusion N_LogPTTErrorMessage_Node0 -- Yes -->|Alternative| N_LogPTTErrorMessage_Node0_action N_LogPTTErrorMessage_Node0_action --> E_LogPTTErrorMessage S_LogPTTErrorMessage --> N_LogPTTErrorMessage_Node0 N_LogPTTErrorMessage_Node0 -- No --> E_LogPTTErrorMessage
with PTT validation failure details
and cargo information"]:::exclusion N_LogPTTErrorMessage_Node0 -- Yes -->|Alternative| N_LogPTTErrorMessage_Node0_action N_LogPTTErrorMessage_Node0_action --> E_LogPTTErrorMessage S_LogPTTErrorMessage --> N_LogPTTErrorMessage_Node0 N_LogPTTErrorMessage_Node0 -- No --> E_LogPTTErrorMessage
File: GCX016.cbl
GIVEN:
A PTT validation error has occurred
WHEN:
The system logs the error
THEN:
- Create detailed error log entry with ptt validation failure details
- Cargo information
β Consolidated Acceptance Criteria
- The system checks for border arrival date availability → if border arrival date is available, proceed to set proceed status, otherwise skip proceed processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_BorderArrivalDateAvailable(["Start Step"])
E_BorderArrivalDateAvailable(["End Step"])
N_BorderArrivalDateAvailable_Node0{"The system checks for border
arrival date availability"}:::decision N_BorderArrivalDateAvailable_Node0_action["If border arrival date is
available, proceed to set proceed
status, otherwise skip proceed
processing"]:::main N_BorderArrivalDateAvailable_Node0 -- Yes --> N_BorderArrivalDateAvailable_Node0_action N_BorderArrivalDateAvailable_Node0_action --> E_BorderArrivalDateAvailable S_BorderArrivalDateAvailable --> N_BorderArrivalDateAvailable_Node0 N_BorderArrivalDateAvailable_Node0 -- No --> E_BorderArrivalDateAvailable
arrival date availability"}:::decision N_BorderArrivalDateAvailable_Node0_action["If border arrival date is
available, proceed to set proceed
status, otherwise skip proceed
processing"]:::main N_BorderArrivalDateAvailable_Node0 -- Yes --> N_BorderArrivalDateAvailable_Node0_action N_BorderArrivalDateAvailable_Node0_action --> E_BorderArrivalDateAvailable S_BorderArrivalDateAvailable --> N_BorderArrivalDateAvailable_Node0 N_BorderArrivalDateAvailable_Node0 -- No --> E_BorderArrivalDateAvailable
File: GCX016.cbl
GIVEN:
Proceed flag is set in status array and border arrival requirements are being validated
WHEN:
The system checks for border arrival date availability
THEN:
If border arrival date is available, proceed to set proceed status, otherwise skip proceed processing
β Consolidated Acceptance Criteria
- The system sets proceed status in the cargo record → the cargo record status is updated to proceed and the system continues to update border arrival date
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetProceedStatusinCargoRecord(["Start Step"])
E_SetProceedStatusinCargoRecord(["End Step"])
N_SetProceedStatusinCargoRecord_Node0{"The system sets proceed status in
the cargo record"}:::decision N_SetProceedStatusinCargoRecord_Node0_action["The cargo record status is updated
to proceed and the system continues
to update border arrival date"]:::main N_SetProceedStatusinCargoRecord_Node0 -- Yes --> N_SetProceedStatusinCargoRecord_Node0_action N_SetProceedStatusinCargoRecord_Node0_action --> E_SetProceedStatusinCargoRecord S_SetProceedStatusinCargoRecord --> N_SetProceedStatusinCargoRecord_Node0 N_SetProceedStatusinCargoRecord_Node0 -- No --> E_SetProceedStatusinCargoRecord
the cargo record"}:::decision N_SetProceedStatusinCargoRecord_Node0_action["The cargo record status is updated
to proceed and the system continues
to update border arrival date"]:::main N_SetProceedStatusinCargoRecord_Node0 -- Yes --> N_SetProceedStatusinCargoRecord_Node0_action N_SetProceedStatusinCargoRecord_Node0_action --> E_SetProceedStatusinCargoRecord S_SetProceedStatusinCargoRecord --> N_SetProceedStatusinCargoRecord_Node0 N_SetProceedStatusinCargoRecord_Node0 -- No --> E_SetProceedStatusinCargoRecord
File: GCX016.cbl
GIVEN:
Border arrival date is available and all proceed validation requirements are met
WHEN:
The system sets proceed status in the cargo record
THEN:
- The cargo record status is updated to proceed
- The system continues to update border arrival date
β Consolidated Acceptance Criteria
- The system clears conflicting hold status → any hold status that conflicts with proceed status is removed and the system checks if cargo is cross-border
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ClearAnyConflictingHoldStatus(["Start Step"])
E_ClearAnyConflictingHoldStatus(["End Step"])
N_ClearAnyConflictingHoldStatus_Node0{"The system clears conflicting hold
status"}:::decision N_ClearAnyConflictingHoldStatus_Node0_action["Any hold status that conflicts with
proceed status is removed and the
system checks if cargo is
cross-border"]:::main N_ClearAnyConflictingHoldStatus_Node0 -- Yes --> N_ClearAnyConflictingHoldStatus_Node0_action N_ClearAnyConflictingHoldStatus_Node0_action --> E_ClearAnyConflictingHoldStatus S_ClearAnyConflictingHoldStatus --> N_ClearAnyConflictingHoldStatus_Node0 N_ClearAnyConflictingHoldStatus_Node0 -- No --> E_ClearAnyConflictingHoldStatus
status"}:::decision N_ClearAnyConflictingHoldStatus_Node0_action["Any hold status that conflicts with
proceed status is removed and the
system checks if cargo is
cross-border"]:::main N_ClearAnyConflictingHoldStatus_Node0 -- Yes --> N_ClearAnyConflictingHoldStatus_Node0_action N_ClearAnyConflictingHoldStatus_Node0_action --> E_ClearAnyConflictingHoldStatus S_ClearAnyConflictingHoldStatus --> N_ClearAnyConflictingHoldStatus_Node0 N_ClearAnyConflictingHoldStatus_Node0 -- No --> E_ClearAnyConflictingHoldStatus
File: GCX016.cbl
GIVEN:
Border arrival date has been updated in the cargo record
WHEN:
The system clears conflicting hold status
THEN:
- Any hold status that conflicts with proceed status is removed
- The system checks if cargo is cross-border
β Consolidated Acceptance Criteria
- The system coordinates with Canadian system → canadian manifest records are updated or notified of proceed status and the system continues to update cargo status flags
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CoordinatewithCanadianSystem(["Start Step"])
E_CoordinatewithCanadianSystem(["End Step"])
N_CoordinatewithCanadianSystem_Node0{"The system coordinates with
Canadian system"}:::decision N_CoordinatewithCanadianSystem_Node0_action["Canadian manifest records are
updated or notified of proceed
status and the system continues to
update cargo status flags"]:::main N_CoordinatewithCanadianSystem_Node0 -- Yes --> N_CoordinatewithCanadianSystem_Node0_action N_CoordinatewithCanadianSystem_Node0_action --> E_CoordinatewithCanadianSystem S_CoordinatewithCanadianSystem --> N_CoordinatewithCanadianSystem_Node0 N_CoordinatewithCanadianSystem_Node0 -- No --> E_CoordinatewithCanadianSystem
Canadian system"}:::decision N_CoordinatewithCanadianSystem_Node0_action["Canadian manifest records are
updated or notified of proceed
status and the system continues to
update cargo status flags"]:::main N_CoordinatewithCanadianSystem_Node0 -- Yes --> N_CoordinatewithCanadianSystem_Node0_action N_CoordinatewithCanadianSystem_Node0_action --> E_CoordinatewithCanadianSystem S_CoordinatewithCanadianSystem --> N_CoordinatewithCanadianSystem_Node0 N_CoordinatewithCanadianSystem_Node0 -- No --> E_CoordinatewithCanadianSystem
File: GCX016.cbl
GIVEN:
Cargo is identified as cross-border cargo
WHEN:
The system coordinates with Canadian system
THEN:
- Canadian manifest records are updated or notified of proceed status
- The system continues to update cargo status flags
β Consolidated Acceptance Criteria
- The system updates cargo status flags → all cargo status flags are updated to reflect proceed status and the system logs the status change
- The processing is complete → the system should update the cargo status flags to reflect the current state including the new informational status
- The system updates cargo status flags → update release status, hold status, and processing flags to reflect auto release approval without modifying the disposition code array
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UpdateCargoStatusFlags(["Start Step"])
E_UpdateCargoStatusFlags(["End Step"])
N_UpdateCargoStatusFlags_Node0{"The system updates cargo status
flags"}:::decision N_UpdateCargoStatusFlags_Node0_action["All cargo status flags are updated
to reflect proceed status and the
system logs the status change"]:::main N_UpdateCargoStatusFlags_Node0 -- Yes --> N_UpdateCargoStatusFlags_Node0_action N_UpdateCargoStatusFlags_Node0_action --> E_UpdateCargoStatusFlags S_UpdateCargoStatusFlags --> N_UpdateCargoStatusFlags_Node0 N_UpdateCargoStatusFlags_Node1{"The processing is complete"}:::decision N_UpdateCargoStatusFlags_Node1_action["The system should update the cargo
status flags to reflect the current
state including the new
informational status"]:::main N_UpdateCargoStatusFlags_Node1 -- Yes --> N_UpdateCargoStatusFlags_Node1_action N_UpdateCargoStatusFlags_Node1_action --> E_UpdateCargoStatusFlags N_UpdateCargoStatusFlags_Node0 -- No --> N_UpdateCargoStatusFlags_Node1 N_UpdateCargoStatusFlags_Node2{"The system updates cargo status
flags"}:::decision N_UpdateCargoStatusFlags_Node2_action["Update release status, hold status,
and processing flags to reflect auto
release approval without modifying
the disposition code array"]:::main N_UpdateCargoStatusFlags_Node2 -- Yes --> N_UpdateCargoStatusFlags_Node2_action N_UpdateCargoStatusFlags_Node2_action --> E_UpdateCargoStatusFlags N_UpdateCargoStatusFlags_Node1 -- No --> N_UpdateCargoStatusFlags_Node2 N_UpdateCargoStatusFlags_Node2 -- No --> E_UpdateCargoStatusFlags
flags"}:::decision N_UpdateCargoStatusFlags_Node0_action["All cargo status flags are updated
to reflect proceed status and the
system logs the status change"]:::main N_UpdateCargoStatusFlags_Node0 -- Yes --> N_UpdateCargoStatusFlags_Node0_action N_UpdateCargoStatusFlags_Node0_action --> E_UpdateCargoStatusFlags S_UpdateCargoStatusFlags --> N_UpdateCargoStatusFlags_Node0 N_UpdateCargoStatusFlags_Node1{"The processing is complete"}:::decision N_UpdateCargoStatusFlags_Node1_action["The system should update the cargo
status flags to reflect the current
state including the new
informational status"]:::main N_UpdateCargoStatusFlags_Node1 -- Yes --> N_UpdateCargoStatusFlags_Node1_action N_UpdateCargoStatusFlags_Node1_action --> E_UpdateCargoStatusFlags N_UpdateCargoStatusFlags_Node0 -- No --> N_UpdateCargoStatusFlags_Node1 N_UpdateCargoStatusFlags_Node2{"The system updates cargo status
flags"}:::decision N_UpdateCargoStatusFlags_Node2_action["Update release status, hold status,
and processing flags to reflect auto
release approval without modifying
the disposition code array"]:::main N_UpdateCargoStatusFlags_Node2 -- Yes --> N_UpdateCargoStatusFlags_Node2_action N_UpdateCargoStatusFlags_Node2_action --> E_UpdateCargoStatusFlags N_UpdateCargoStatusFlags_Node1 -- No --> N_UpdateCargoStatusFlags_Node2 N_UpdateCargoStatusFlags_Node2 -- No --> E_UpdateCargoStatusFlags
File: GCX016.cbl
GIVEN:
Proceed status has been set and any Canadian system coordination is complete
WHEN:
The system updates cargo status flags
THEN:
- All cargo status flags are updated to reflect proceed status
- The system logs the status change
File: GCX016.cbl
GIVEN:
An informational status code has been successfully added to the cargo status array
WHEN:
The processing is complete
THEN:
The system should update the cargo status flags to reflect the current state including the new informational status
File: GCX016.cbl
GIVEN:
Auto release flag has been set
WHEN:
The system updates cargo status flags
THEN:
Update release status, hold status, and processing flags to reflect auto release approval without modifying the disposition code array
β Consolidated Acceptance Criteria
- The system logs the proceed status change → the proceed status change is recorded in the system log and proceed processing is marked as complete
- The system completes proceed status processing → log the proceed status change with cargo identifier, previous status, new status, and timestamp for audit trail
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogProceedStatusChange(["Start Step"])
E_LogProceedStatusChange(["End Step"])
N_LogProceedStatusChange_Node0{"The system logs the proceed status
change"}:::decision N_LogProceedStatusChange_Node0_action["The proceed status change is
recorded in the system log and
proceed processing is marked as
complete"]:::main N_LogProceedStatusChange_Node0 -- Yes --> N_LogProceedStatusChange_Node0_action N_LogProceedStatusChange_Node0_action --> E_LogProceedStatusChange S_LogProceedStatusChange --> N_LogProceedStatusChange_Node0 N_LogProceedStatusChange_Node1{"The system completes proceed status
processing"}:::decision N_LogProceedStatusChange_Node1_action["Log the proceed status change with
cargo identifier, previous status,
new status, and timestamp for audit
trail"]:::main N_LogProceedStatusChange_Node1 -- Yes --> N_LogProceedStatusChange_Node1_action N_LogProceedStatusChange_Node1_action --> E_LogProceedStatusChange N_LogProceedStatusChange_Node0 -- No --> N_LogProceedStatusChange_Node1 N_LogProceedStatusChange_Node1 -- No --> E_LogProceedStatusChange
change"}:::decision N_LogProceedStatusChange_Node0_action["The proceed status change is
recorded in the system log and
proceed processing is marked as
complete"]:::main N_LogProceedStatusChange_Node0 -- Yes --> N_LogProceedStatusChange_Node0_action N_LogProceedStatusChange_Node0_action --> E_LogProceedStatusChange S_LogProceedStatusChange --> N_LogProceedStatusChange_Node0 N_LogProceedStatusChange_Node1{"The system completes proceed status
processing"}:::decision N_LogProceedStatusChange_Node1_action["Log the proceed status change with
cargo identifier, previous status,
new status, and timestamp for audit
trail"]:::main N_LogProceedStatusChange_Node1 -- Yes --> N_LogProceedStatusChange_Node1_action N_LogProceedStatusChange_Node1_action --> E_LogProceedStatusChange N_LogProceedStatusChange_Node0 -- No --> N_LogProceedStatusChange_Node1 N_LogProceedStatusChange_Node1 -- No --> E_LogProceedStatusChange
File: GCX016.cbl
GIVEN:
Cargo status flags have been updated to reflect proceed status
WHEN:
The system logs the proceed status change
THEN:
- The proceed status change is recorded in the system log
- Proceed processing is marked as complete
File: GCX016.cbl
GIVEN:
Cargo record status has been updated with proceed status and cleared hold flags
WHEN:
The system completes proceed status processing
THEN:
Log the proceed status change with cargo identifier, previous status, new status, and timestamp for audit trail
β Consolidated Acceptance Criteria
- The system processes the status array to identify hold-related codes → the system sets appropriate flags for border holds, destination holds, FDA holds, and piece count holds based on the codes found in the array
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AnalyzeStatusArrayforHoldCodes(["Start Step"])
E_AnalyzeStatusArrayforHoldCodes(["End Step"])
N_AnalyzeStatusArrayforHoldCodes_Node0{"The system processes the status
array to identify hold-related codes"}:::decision N_AnalyzeStatusArrayforHoldCodes_Node0_action["The system sets appropriate flags
for border holds, destination holds,
FDA holds, and piece count holds
based on the codes found in the
array"]:::main N_AnalyzeStatusArrayforHoldCodes_Node0 -- Yes --> N_AnalyzeStatusArrayforHoldCodes_Node0_action N_AnalyzeStatusArrayforHoldCodes_Node0_action --> E_AnalyzeStatusArrayforHoldCodes S_AnalyzeStatusArrayforHoldCodes --> N_AnalyzeStatusArrayforHoldCodes_Node0 N_AnalyzeStatusArrayforHoldCodes_Node0 -- No --> E_AnalyzeStatusArrayforHoldCodes
array to identify hold-related codes"}:::decision N_AnalyzeStatusArrayforHoldCodes_Node0_action["The system sets appropriate flags
for border holds, destination holds,
FDA holds, and piece count holds
based on the codes found in the
array"]:::main N_AnalyzeStatusArrayforHoldCodes_Node0 -- Yes --> N_AnalyzeStatusArrayforHoldCodes_Node0_action N_AnalyzeStatusArrayforHoldCodes_Node0_action --> E_AnalyzeStatusArrayforHoldCodes S_AnalyzeStatusArrayforHoldCodes --> N_AnalyzeStatusArrayforHoldCodes_Node0 N_AnalyzeStatusArrayforHoldCodes_Node0 -- No --> E_AnalyzeStatusArrayforHoldCodes
File: GCX016.cbl
GIVEN:
A cargo record with status array S09A containing various disposition codes
WHEN:
The system processes the status array to identify hold-related codes
THEN:
The system sets appropriate flags for border holds, destination holds, FDA holds, and piece count holds based on the codes found in the array
β Consolidated Acceptance Criteria
- If the hold codes to determine applicable locations → the system classifies the hold as border-only, destination-only, or both locations based on the specific disposition codes present
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_HoldLocationDetermination(["Start Step"])
E_HoldLocationDetermination(["End Step"])
N_HoldLocationDetermination_Node0{"The system evaluates the hold codes
to determine applicable locations"}:::decision N_HoldLocationDetermination_Node0_action["The system classifies the hold as
border-only, destination-only, or
both locations based on the specific
disposition codes present"]:::main N_HoldLocationDetermination_Node0 -- Yes --> N_HoldLocationDetermination_Node0_action N_HoldLocationDetermination_Node0_action --> E_HoldLocationDetermination S_HoldLocationDetermination --> N_HoldLocationDetermination_Node0 N_HoldLocationDetermination_Node0 -- No --> E_HoldLocationDetermination
to determine applicable locations"}:::decision N_HoldLocationDetermination_Node0_action["The system classifies the hold as
border-only, destination-only, or
both locations based on the specific
disposition codes present"]:::main N_HoldLocationDetermination_Node0 -- Yes --> N_HoldLocationDetermination_Node0_action N_HoldLocationDetermination_Node0_action --> E_HoldLocationDetermination S_HoldLocationDetermination --> N_HoldLocationDetermination_Node0 N_HoldLocationDetermination_Node0 -- No --> E_HoldLocationDetermination
File: GCX016.cbl
GIVEN:
A cargo record with identified hold codes in the status array
WHEN:
The system evaluates the hold codes to determine applicable locations
THEN:
The system classifies the hold as border-only, destination-only, or both locations based on the specific disposition codes present
β Consolidated Acceptance Criteria
- The system determines that hold codes apply to both border and destination → the system sets the cargo status to hold at both locations and updates all relevant status flags
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetBothBorderandDestinationHold(["Start Step"])
E_SetBothBorderandDestinationHold(["End Step"])
N_SetBothBorderandDestinationHold_Node0{"The system determines that hold
codes apply to both border and
destination"}:::decision N_SetBothBorderandDestinationHold_Node0_action["The system sets the cargo status to
hold at both locations and updates
all relevant status flags"]:::main N_SetBothBorderandDestinationHold_Node0 -- Yes --> N_SetBothBorderandDestinationHold_Node0_action N_SetBothBorderandDestinationHold_Node0_action --> E_SetBothBorderandDestinationHold S_SetBothBorderandDestinationHold --> N_SetBothBorderandDestinationHold_Node0 N_SetBothBorderandDestinationHold_Node0 -- No --> E_SetBothBorderandDestinationHold
codes apply to both border and
destination"}:::decision N_SetBothBorderandDestinationHold_Node0_action["The system sets the cargo status to
hold at both locations and updates
all relevant status flags"]:::main N_SetBothBorderandDestinationHold_Node0 -- Yes --> N_SetBothBorderandDestinationHold_Node0_action N_SetBothBorderandDestinationHold_Node0_action --> E_SetBothBorderandDestinationHold S_SetBothBorderandDestinationHold --> N_SetBothBorderandDestinationHold_Node0 N_SetBothBorderandDestinationHold_Node0 -- No --> E_SetBothBorderandDestinationHold
File: GCX016.cbl
GIVEN:
A cargo record with hold codes requiring restrictions at multiple locations
WHEN:
- The system determines that hold codes apply to both border
- Destination
THEN:
- The system sets the cargo status to hold at both locations
- Updates all relevant status flags
β Consolidated Acceptance Criteria
- The system validates the hold requirements against current cargo conditions → the system confirms the hold is valid or rejects invalid hold attempts based on cargo state and business rules
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ValidateHoldRequirements(["Start Step"])
E_ValidateHoldRequirements(["End Step"])
N_ValidateHoldRequirements_Node0{"The system validates the hold
requirements against current cargo
conditions"}:::decision N_ValidateHoldRequirements_Node0_action["The system confirms the hold is
valid or rejects invalid hold
attempts based on cargo state and
business rules"]:::main N_ValidateHoldRequirements_Node0 -- Yes --> N_ValidateHoldRequirements_Node0_action N_ValidateHoldRequirements_Node0_action --> E_ValidateHoldRequirements S_ValidateHoldRequirements --> N_ValidateHoldRequirements_Node0 N_ValidateHoldRequirements_Node0 -- No --> E_ValidateHoldRequirements
requirements against current cargo
conditions"}:::decision N_ValidateHoldRequirements_Node0_action["The system confirms the hold is
valid or rejects invalid hold
attempts based on cargo state and
business rules"]:::main N_ValidateHoldRequirements_Node0 -- Yes --> N_ValidateHoldRequirements_Node0_action N_ValidateHoldRequirements_Node0_action --> E_ValidateHoldRequirements S_ValidateHoldRequirements --> N_ValidateHoldRequirements_Node0 N_ValidateHoldRequirements_Node0 -- No --> E_ValidateHoldRequirements
File: GCX016.cbl
GIVEN:
A cargo record with proposed hold status changes
WHEN:
The system validates the hold requirements against current cargo conditions
THEN:
- The system confirms the hold is valid or rejects invalid hold attempts based on cargo state
- Business rules
β Consolidated Acceptance Criteria
- If disposition codes for FDA hold requirements → the system sets FDA hold flag if A3 or other FDA-related disposition codes are present
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_FDAHoldRequired(["Start Step"])
E_FDAHoldRequired(["End Step"])
N_FDAHoldRequired_Node0{"The system evaluates disposition
codes for FDA hold requirements"}:::decision N_FDAHoldRequired_Node0_action["The system sets FDA hold flag if A3
or other FDA-related disposition
codes are present"]:::main N_FDAHoldRequired_Node0 -- Yes --> N_FDAHoldRequired_Node0_action N_FDAHoldRequired_Node0_action --> E_FDAHoldRequired S_FDAHoldRequired --> N_FDAHoldRequired_Node0 N_FDAHoldRequired_Node0 -- No --> E_FDAHoldRequired
codes for FDA hold requirements"}:::decision N_FDAHoldRequired_Node0_action["The system sets FDA hold flag if A3
or other FDA-related disposition
codes are present"]:::main N_FDAHoldRequired_Node0 -- Yes --> N_FDAHoldRequired_Node0_action N_FDAHoldRequired_Node0_action --> E_FDAHoldRequired S_FDAHoldRequired --> N_FDAHoldRequired_Node0 N_FDAHoldRequired_Node0 -- No --> E_FDAHoldRequired
File: GCX016.cbl
GIVEN:
A cargo record with disposition codes that may require FDA oversight
WHEN:
The system evaluates disposition codes for FDA hold requirements
THEN:
The system sets FDA hold flag if A3 or other FDA-related disposition codes are present
β Consolidated Acceptance Criteria
- The system determines FDA hold is required at destination → the system sets HOLDFDA status and applies destination hold with FDA-specific processing requirements
- The FDA hold status is processed → the FDA hold at destination flag is set to true to indicate regulatory hold requirements
- FDA regulatory hold is required at destination → system sets FDA hold status flag at destination location
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetFDAHoldatDestination(["Start Step"])
E_SetFDAHoldatDestination(["End Step"])
N_SetFDAHoldatDestination_Node0{"The system determines FDA hold is
required at destination"}:::decision N_SetFDAHoldatDestination_Node0_action["The system sets HOLDFDA status and
applies destination hold with
FDA-specific processing requirements"]:::main N_SetFDAHoldatDestination_Node0 -- Yes --> N_SetFDAHoldatDestination_Node0_action N_SetFDAHoldatDestination_Node0_action --> E_SetFDAHoldatDestination S_SetFDAHoldatDestination --> N_SetFDAHoldatDestination_Node0 N_SetFDAHoldatDestination_Node1{"The FDA hold status is processed"}:::decision N_SetFDAHoldatDestination_Node1_action["The FDA hold at destination flag is
set to true to indicate regulatory
hold requirements"]:::main N_SetFDAHoldatDestination_Node1 -- Yes --> N_SetFDAHoldatDestination_Node1_action N_SetFDAHoldatDestination_Node1_action --> E_SetFDAHoldatDestination N_SetFDAHoldatDestination_Node0 -- No --> N_SetFDAHoldatDestination_Node1 N_SetFDAHoldatDestination_Node2{"FDA regulatory hold is required at
destination"}:::decision N_SetFDAHoldatDestination_Node2_action["System sets FDA hold status flag at
destination location"]:::main N_SetFDAHoldatDestination_Node2 -- Yes --> N_SetFDAHoldatDestination_Node2_action N_SetFDAHoldatDestination_Node2_action --> E_SetFDAHoldatDestination N_SetFDAHoldatDestination_Node1 -- No --> N_SetFDAHoldatDestination_Node2 N_SetFDAHoldatDestination_Node2 -- No --> E_SetFDAHoldatDestination
required at destination"}:::decision N_SetFDAHoldatDestination_Node0_action["The system sets HOLDFDA status and
applies destination hold with
FDA-specific processing requirements"]:::main N_SetFDAHoldatDestination_Node0 -- Yes --> N_SetFDAHoldatDestination_Node0_action N_SetFDAHoldatDestination_Node0_action --> E_SetFDAHoldatDestination S_SetFDAHoldatDestination --> N_SetFDAHoldatDestination_Node0 N_SetFDAHoldatDestination_Node1{"The FDA hold status is processed"}:::decision N_SetFDAHoldatDestination_Node1_action["The FDA hold at destination flag is
set to true to indicate regulatory
hold requirements"]:::main N_SetFDAHoldatDestination_Node1 -- Yes --> N_SetFDAHoldatDestination_Node1_action N_SetFDAHoldatDestination_Node1_action --> E_SetFDAHoldatDestination N_SetFDAHoldatDestination_Node0 -- No --> N_SetFDAHoldatDestination_Node1 N_SetFDAHoldatDestination_Node2{"FDA regulatory hold is required at
destination"}:::decision N_SetFDAHoldatDestination_Node2_action["System sets FDA hold status flag at
destination location"]:::main N_SetFDAHoldatDestination_Node2 -- Yes --> N_SetFDAHoldatDestination_Node2_action N_SetFDAHoldatDestination_Node2_action --> E_SetFDAHoldatDestination N_SetFDAHoldatDestination_Node1 -- No --> N_SetFDAHoldatDestination_Node2 N_SetFDAHoldatDestination_Node2 -- No --> E_SetFDAHoldatDestination
File: GCX016.cbl
GIVEN:
A cargo record requiring FDA hold processing
WHEN:
The system determines FDA hold is required at destination
THEN:
- The system sets holdfda status
- Applies destination hold with fda-specific processing requirements
File: GCX016.cbl
GIVEN:
An FDA hold disposition code has been identified
WHEN:
The FDA hold status is processed
THEN:
The FDA hold at destination flag is set to true to indicate regulatory hold requirements
File: GCX016.cbl
GIVEN:
FDA hold status is detected in cargo status array
WHEN:
FDA regulatory hold is required at destination
THEN:
System sets FDA hold status flag at destination location
β Consolidated Acceptance Criteria
- The system generates hold notification messages → the system creates detailed messages including hold type, location information, and relevant cargo details for broker notifications
- The system generates the hold message → the system creates a hold message containing specific location details, disposition codes, and routing information
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GenerateHoldMessagewithLocationDetails(["Start Step"])
E_GenerateHoldMessagewithLocationDetails(["End Step"])
N_GenerateHoldMessagewithLocationDetails_Node0{"The system generates hold
notification messages"}:::decision N_GenerateHoldMessagewithLocationDetails_Node0_action["The system creates detailed
messages including hold type,
location information, and relevant
cargo details for broker
notifications"]:::main N_GenerateHoldMessagewithLocationDetails_Node0 -- Yes --> N_GenerateHoldMessagewithLocationDetails_Node0_action N_GenerateHoldMessagewithLocationDetails_Node0_action --> E_GenerateHoldMessagewithLocationDetails S_GenerateHoldMessagewithLocationDetails --> N_GenerateHoldMessagewithLocationDetails_Node0 N_GenerateHoldMessagewithLocationDetails_Node1{"The system generates the hold
message"}:::decision N_GenerateHoldMessagewithLocationDetails_Node1_action["The system creates a hold message
containing specific location
details, disposition codes, and
routing information"]:::main N_GenerateHoldMessagewithLocationDetails_Node1 -- Yes --> N_GenerateHoldMessagewithLocationDetails_Node1_action N_GenerateHoldMessagewithLocationDetails_Node1_action --> E_GenerateHoldMessagewithLocationDetails N_GenerateHoldMessagewithLocationDetails_Node0 -- No --> N_GenerateHoldMessagewithLocationDetails_Node1 N_GenerateHoldMessagewithLocationDetails_Node1 -- No --> E_GenerateHoldMessagewithLocationDetails
notification messages"}:::decision N_GenerateHoldMessagewithLocationDetails_Node0_action["The system creates detailed
messages including hold type,
location information, and relevant
cargo details for broker
notifications"]:::main N_GenerateHoldMessagewithLocationDetails_Node0 -- Yes --> N_GenerateHoldMessagewithLocationDetails_Node0_action N_GenerateHoldMessagewithLocationDetails_Node0_action --> E_GenerateHoldMessagewithLocationDetails S_GenerateHoldMessagewithLocationDetails --> N_GenerateHoldMessagewithLocationDetails_Node0 N_GenerateHoldMessagewithLocationDetails_Node1{"The system generates the hold
message"}:::decision N_GenerateHoldMessagewithLocationDetails_Node1_action["The system creates a hold message
containing specific location
details, disposition codes, and
routing information"]:::main N_GenerateHoldMessagewithLocationDetails_Node1 -- Yes --> N_GenerateHoldMessagewithLocationDetails_Node1_action N_GenerateHoldMessagewithLocationDetails_Node1_action --> E_GenerateHoldMessagewithLocationDetails N_GenerateHoldMessagewithLocationDetails_Node0 -- No --> N_GenerateHoldMessagewithLocationDetails_Node1 N_GenerateHoldMessagewithLocationDetails_Node1 -- No --> E_GenerateHoldMessagewithLocationDetails
File: GCX016.cbl
GIVEN:
A cargo record with confirmed hold status and location details
WHEN:
The system generates hold notification messages
THEN:
The system creates detailed messages including hold type, location information, and relevant cargo details for broker notifications
File: GCX016.cbl
GIVEN:
A cargo record with determined hold location and routing decisions made
WHEN:
The system generates the hold message
THEN:
The system creates a hold message containing specific location details, disposition codes, and routing information
β Consolidated Acceptance Criteria
- The system updates the status array with hold information → the system adds appropriate hold disposition codes to the S09A status array and maintains proper sequencing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UpdateStatusArraywithHoldInformation(["Start Step"])
E_UpdateStatusArraywithHoldInformation(["End Step"])
N_UpdateStatusArraywithHoldInformation_Node0{"The system updates the status array
with hold information"}:::decision N_UpdateStatusArraywithHoldInformation_Node0_action["The system adds appropriate hold
disposition codes to the S09A status
array and maintains proper
sequencing"]:::main N_UpdateStatusArraywithHoldInformation_Node0 -- Yes --> N_UpdateStatusArraywithHoldInformation_Node0_action N_UpdateStatusArraywithHoldInformation_Node0_action --> E_UpdateStatusArraywithHoldInformation S_UpdateStatusArraywithHoldInformation --> N_UpdateStatusArraywithHoldInformation_Node0 N_UpdateStatusArraywithHoldInformation_Node0 -- No --> E_UpdateStatusArraywithHoldInformation
with hold information"}:::decision N_UpdateStatusArraywithHoldInformation_Node0_action["The system adds appropriate hold
disposition codes to the S09A status
array and maintains proper
sequencing"]:::main N_UpdateStatusArraywithHoldInformation_Node0 -- Yes --> N_UpdateStatusArraywithHoldInformation_Node0_action N_UpdateStatusArraywithHoldInformation_Node0_action --> E_UpdateStatusArraywithHoldInformation S_UpdateStatusArraywithHoldInformation --> N_UpdateStatusArraywithHoldInformation_Node0 N_UpdateStatusArraywithHoldInformation_Node0 -- No --> E_UpdateStatusArraywithHoldInformation
File: GCX016.cbl
GIVEN:
A cargo record with processed hold status changes
WHEN:
The system updates the status array with hold information
THEN:
- The system adds appropriate hold disposition codes to the s09a status array
- Maintains proper sequencing
β Consolidated Acceptance Criteria
- The system compares released quantity against total quantity → the system determines if quantities match for full release processing or routes to partial release
- The system compares released quantity against total quantity → the system identifies if cargo requires partial release processing when released quantity is less than total quantity
- The system compares released quantity to total quantity → the system determines if cargo is partially released (released quantity < total quantity) or fully released (released quantity = total quantity)
- If release eligibility → if released quantity equals or exceeds total quantity, cargo is eligible for full release, otherwise process as partial release
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CheckReleasedQuantityvsTotalQuantity(["Start Step"])
E_CheckReleasedQuantityvsTotalQuantity(["End Step"])
N_CheckReleasedQuantityvsTotalQuantity_Node0{"The system compares released
quantity against total quantity"}:::decision N_CheckReleasedQuantityvsTotalQuantity_Node0_action["The system determines if quantities
match for full release processing or
routes to partial release"]:::main N_CheckReleasedQuantityvsTotalQuantity_Node0 -- Yes --> N_CheckReleasedQuantityvsTotalQuantity_Node0_action N_CheckReleasedQuantityvsTotalQuantity_Node0_action --> E_CheckReleasedQuantityvsTotalQuantity S_CheckReleasedQuantityvsTotalQuantity --> N_CheckReleasedQuantityvsTotalQuantity_Node0 N_CheckReleasedQuantityvsTotalQuantity_Node1{"The system compares released
quantity against total quantity"}:::decision N_CheckReleasedQuantityvsTotalQuantity_Node1_action["The system identifies if cargo
requires partial release processing
when released quantity is less than
total quantity"]:::main N_CheckReleasedQuantityvsTotalQuantity_Node1 -- Yes --> N_CheckReleasedQuantityvsTotalQuantity_Node1_action N_CheckReleasedQuantityvsTotalQuantity_Node1_action --> E_CheckReleasedQuantityvsTotalQuantity N_CheckReleasedQuantityvsTotalQuantity_Node0 -- No --> N_CheckReleasedQuantityvsTotalQuantity_Node1 N_CheckReleasedQuantityvsTotalQuantity_Node2{"The system compares released
quantity to total quantity"}:::decision N_CheckReleasedQuantityvsTotalQuantity_Node2_action["The system determines if cargo is
partially released released quantity
total quantity or fully released
released quantity total quantity"]:::main N_CheckReleasedQuantityvsTotalQuantity_Node2 -- Yes --> N_CheckReleasedQuantityvsTotalQuantity_Node2_action N_CheckReleasedQuantityvsTotalQuantity_Node2_action --> E_CheckReleasedQuantityvsTotalQuantity N_CheckReleasedQuantityvsTotalQuantity_Node1 -- No --> N_CheckReleasedQuantityvsTotalQuantity_Node2 N_CheckReleasedQuantityvsTotalQuantity_Node3{"The system evaluates release
eligibility"}:::decision N_CheckReleasedQuantityvsTotalQuantity_Node3_action["If released quantity equals or
exceeds total quantity, cargo is
eligible for full release, otherwise
process as partial release"]:::main N_CheckReleasedQuantityvsTotalQuantity_Node3 -- Yes --> N_CheckReleasedQuantityvsTotalQuantity_Node3_action N_CheckReleasedQuantityvsTotalQuantity_Node3_action --> E_CheckReleasedQuantityvsTotalQuantity N_CheckReleasedQuantityvsTotalQuantity_Node2 -- No --> N_CheckReleasedQuantityvsTotalQuantity_Node3 N_CheckReleasedQuantityvsTotalQuantity_Node3 -- No --> E_CheckReleasedQuantityvsTotalQuantity
quantity against total quantity"}:::decision N_CheckReleasedQuantityvsTotalQuantity_Node0_action["The system determines if quantities
match for full release processing or
routes to partial release"]:::main N_CheckReleasedQuantityvsTotalQuantity_Node0 -- Yes --> N_CheckReleasedQuantityvsTotalQuantity_Node0_action N_CheckReleasedQuantityvsTotalQuantity_Node0_action --> E_CheckReleasedQuantityvsTotalQuantity S_CheckReleasedQuantityvsTotalQuantity --> N_CheckReleasedQuantityvsTotalQuantity_Node0 N_CheckReleasedQuantityvsTotalQuantity_Node1{"The system compares released
quantity against total quantity"}:::decision N_CheckReleasedQuantityvsTotalQuantity_Node1_action["The system identifies if cargo
requires partial release processing
when released quantity is less than
total quantity"]:::main N_CheckReleasedQuantityvsTotalQuantity_Node1 -- Yes --> N_CheckReleasedQuantityvsTotalQuantity_Node1_action N_CheckReleasedQuantityvsTotalQuantity_Node1_action --> E_CheckReleasedQuantityvsTotalQuantity N_CheckReleasedQuantityvsTotalQuantity_Node0 -- No --> N_CheckReleasedQuantityvsTotalQuantity_Node1 N_CheckReleasedQuantityvsTotalQuantity_Node2{"The system compares released
quantity to total quantity"}:::decision N_CheckReleasedQuantityvsTotalQuantity_Node2_action["The system determines if cargo is
partially released released quantity
total quantity or fully released
released quantity total quantity"]:::main N_CheckReleasedQuantityvsTotalQuantity_Node2 -- Yes --> N_CheckReleasedQuantityvsTotalQuantity_Node2_action N_CheckReleasedQuantityvsTotalQuantity_Node2_action --> E_CheckReleasedQuantityvsTotalQuantity N_CheckReleasedQuantityvsTotalQuantity_Node1 -- No --> N_CheckReleasedQuantityvsTotalQuantity_Node2 N_CheckReleasedQuantityvsTotalQuantity_Node3{"The system evaluates release
eligibility"}:::decision N_CheckReleasedQuantityvsTotalQuantity_Node3_action["If released quantity equals or
exceeds total quantity, cargo is
eligible for full release, otherwise
process as partial release"]:::main N_CheckReleasedQuantityvsTotalQuantity_Node3 -- Yes --> N_CheckReleasedQuantityvsTotalQuantity_Node3_action N_CheckReleasedQuantityvsTotalQuantity_Node3_action --> E_CheckReleasedQuantityvsTotalQuantity N_CheckReleasedQuantityvsTotalQuantity_Node2 -- No --> N_CheckReleasedQuantityvsTotalQuantity_Node3 N_CheckReleasedQuantityvsTotalQuantity_Node3 -- No --> E_CheckReleasedQuantityvsTotalQuantity
File: GCX016.cbl
GIVEN:
A cargo record with released quantity and total quantity values
WHEN:
The system compares released quantity against total quantity
THEN:
The system determines if quantities match for full release processing or routes to partial release
File: GCX016.cbl
GIVEN:
A cargo record exists with total quantity and released quantity values
WHEN:
The system compares released quantity against total quantity
THEN:
The system identifies if cargo requires partial release processing when released quantity is less than total quantity
File: GCX016.cbl
GIVEN:
A cargo record with total quantity and released quantity values
WHEN:
The system compares released quantity to total quantity
THEN:
The system determines if cargo is partially released (released quantity < total quantity) or fully released (released quantity = total quantity)
File: GCX016.cbl
GIVEN:
A cargo record with total quantity and released quantity values
WHEN:
The system evaluates release eligibility
THEN:
If released quantity equals or exceeds total quantity, cargo is eligible for full release, otherwise process as partial release
β Consolidated Acceptance Criteria
- The system updates hold status → the system removes all hold flags from the cargo record
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RemoveHoldFlags(["Start Step"])
E_RemoveHoldFlags(["End Step"])
N_RemoveHoldFlags_Node0{"The system updates hold status"}:::decision
N_RemoveHoldFlags_Node0_action["The system removes all hold flags
from the cargo record"]:::main N_RemoveHoldFlags_Node0 -- Yes --> N_RemoveHoldFlags_Node0_action N_RemoveHoldFlags_Node0_action --> E_RemoveHoldFlags S_RemoveHoldFlags --> N_RemoveHoldFlags_Node0 N_RemoveHoldFlags_Node0 -- No --> E_RemoveHoldFlags
from the cargo record"]:::main N_RemoveHoldFlags_Node0 -- Yes --> N_RemoveHoldFlags_Node0_action N_RemoveHoldFlags_Node0_action --> E_RemoveHoldFlags S_RemoveHoldFlags --> N_RemoveHoldFlags_Node0 N_RemoveHoldFlags_Node0 -- No --> E_RemoveHoldFlags
File: GCX016.cbl
GIVEN:
Cargo is being processed for full release
WHEN:
The system updates hold status
THEN:
The system removes all hold flags from the cargo record
β Consolidated Acceptance Criteria
- The system processes the release → the system sets the release date to current date
- The system processes the release date assignment → the current date and time is recorded as the release date
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetReleaseDate(["Start Step"])
E_SetReleaseDate(["End Step"])
N_SetReleaseDate_Node0{"The system processes the release"}:::decision
N_SetReleaseDate_Node0_action["The system sets the release date to
current date"]:::main N_SetReleaseDate_Node0 -- Yes --> N_SetReleaseDate_Node0_action N_SetReleaseDate_Node0_action --> E_SetReleaseDate S_SetReleaseDate --> N_SetReleaseDate_Node0 N_SetReleaseDate_Node1{"The system processes the release
date assignment"}:::decision N_SetReleaseDate_Node1_action["The current date and time is
recorded as the release date"]:::main N_SetReleaseDate_Node1 -- Yes --> N_SetReleaseDate_Node1_action N_SetReleaseDate_Node1_action --> E_SetReleaseDate N_SetReleaseDate_Node0 -- No --> N_SetReleaseDate_Node1 N_SetReleaseDate_Node1 -- No --> E_SetReleaseDate
current date"]:::main N_SetReleaseDate_Node0 -- Yes --> N_SetReleaseDate_Node0_action N_SetReleaseDate_Node0_action --> E_SetReleaseDate S_SetReleaseDate --> N_SetReleaseDate_Node0 N_SetReleaseDate_Node1{"The system processes the release
date assignment"}:::decision N_SetReleaseDate_Node1_action["The current date and time is
recorded as the release date"]:::main N_SetReleaseDate_Node1 -- Yes --> N_SetReleaseDate_Node1_action N_SetReleaseDate_Node1_action --> E_SetReleaseDate N_SetReleaseDate_Node0 -- No --> N_SetReleaseDate_Node1 N_SetReleaseDate_Node1 -- No --> E_SetReleaseDate
File: GCX016.cbl
GIVEN:
Cargo is being fully released
WHEN:
The system processes the release
THEN:
The system sets the release date to current date
File: GCX016.cbl
GIVEN:
Cargo that has been updated to released status
WHEN:
The system processes the release date assignment
THEN:
- The current date
- Time is recorded as the release date
β Consolidated Acceptance Criteria
- The system updates release quantities → the system sets release quantity equal to total quantity
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UpdateReleaseQuantitytoTotal(["Start Step"])
E_UpdateReleaseQuantitytoTotal(["End Step"])
N_UpdateReleaseQuantitytoTotal_Node0{"The system updates release
quantities"}:::decision N_UpdateReleaseQuantitytoTotal_Node0_action["The system sets release quantity
equal to total quantity"]:::main N_UpdateReleaseQuantitytoTotal_Node0 -- Yes --> N_UpdateReleaseQuantitytoTotal_Node0_action N_UpdateReleaseQuantitytoTotal_Node0_action --> E_UpdateReleaseQuantitytoTotal S_UpdateReleaseQuantitytoTotal --> N_UpdateReleaseQuantitytoTotal_Node0 N_UpdateReleaseQuantitytoTotal_Node0 -- No --> E_UpdateReleaseQuantitytoTotal
quantities"}:::decision N_UpdateReleaseQuantitytoTotal_Node0_action["The system sets release quantity
equal to total quantity"]:::main N_UpdateReleaseQuantitytoTotal_Node0 -- Yes --> N_UpdateReleaseQuantitytoTotal_Node0_action N_UpdateReleaseQuantitytoTotal_Node0_action --> E_UpdateReleaseQuantitytoTotal S_UpdateReleaseQuantitytoTotal --> N_UpdateReleaseQuantitytoTotal_Node0 N_UpdateReleaseQuantitytoTotal_Node0 -- No --> E_UpdateReleaseQuantitytoTotal
File: GCX016.cbl
GIVEN:
Cargo is being processed for full release
WHEN:
The system updates release quantities
THEN:
The system sets release quantity equal to total quantity
β Consolidated Acceptance Criteria
- The system processes the full release → the system clears the border hold status
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ClearBorderHoldStatus(["Start Step"])
E_ClearBorderHoldStatus(["End Step"])
N_ClearBorderHoldStatus_Node0{"The system processes the full
release"}:::decision N_ClearBorderHoldStatus_Node0_action["The system clears the border hold
status"]:::main N_ClearBorderHoldStatus_Node0 -- Yes --> N_ClearBorderHoldStatus_Node0_action N_ClearBorderHoldStatus_Node0_action --> E_ClearBorderHoldStatus S_ClearBorderHoldStatus --> N_ClearBorderHoldStatus_Node0 N_ClearBorderHoldStatus_Node0 -- No --> E_ClearBorderHoldStatus
release"}:::decision N_ClearBorderHoldStatus_Node0_action["The system clears the border hold
status"]:::main N_ClearBorderHoldStatus_Node0 -- Yes --> N_ClearBorderHoldStatus_Node0_action N_ClearBorderHoldStatus_Node0_action --> E_ClearBorderHoldStatus S_ClearBorderHoldStatus --> N_ClearBorderHoldStatus_Node0 N_ClearBorderHoldStatus_Node0 -- No --> E_ClearBorderHoldStatus
File: GCX016.cbl
GIVEN:
Cargo has border hold status and is being fully released
WHEN:
The system processes the full release
THEN:
The system clears the border hold status
β Consolidated Acceptance Criteria
- The system processes the full release → the system clears the destination hold status
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ClearDestinationHoldStatus(["Start Step"])
E_ClearDestinationHoldStatus(["End Step"])
N_ClearDestinationHoldStatus_Node0{"The system processes the full
release"}:::decision N_ClearDestinationHoldStatus_Node0_action["The system clears the destination
hold status"]:::main N_ClearDestinationHoldStatus_Node0 -- Yes --> N_ClearDestinationHoldStatus_Node0_action N_ClearDestinationHoldStatus_Node0_action --> E_ClearDestinationHoldStatus S_ClearDestinationHoldStatus --> N_ClearDestinationHoldStatus_Node0 N_ClearDestinationHoldStatus_Node0 -- No --> E_ClearDestinationHoldStatus
release"}:::decision N_ClearDestinationHoldStatus_Node0_action["The system clears the destination
hold status"]:::main N_ClearDestinationHoldStatus_Node0 -- Yes --> N_ClearDestinationHoldStatus_Node0_action N_ClearDestinationHoldStatus_Node0_action --> E_ClearDestinationHoldStatus S_ClearDestinationHoldStatus --> N_ClearDestinationHoldStatus_Node0 N_ClearDestinationHoldStatus_Node0 -- No --> E_ClearDestinationHoldStatus
File: GCX016.cbl
GIVEN:
Cargo has destination hold status and is being fully released
WHEN:
The system processes the full release
THEN:
The system clears the destination hold status
β Consolidated Acceptance Criteria
- The system completes release processing → the system saves the updated cargo record to the database
- The system completes the manifest integration process → the updated cargo record is saved to the database
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SaveUpdatedCargoRecord(["Start Step"])
E_SaveUpdatedCargoRecord(["End Step"])
N_SaveUpdatedCargoRecord_Node0{"The system completes release
processing"}:::decision N_SaveUpdatedCargoRecord_Node0_action["The system saves the updated cargo
record to the database"]:::main N_SaveUpdatedCargoRecord_Node0 -- Yes --> N_SaveUpdatedCargoRecord_Node0_action N_SaveUpdatedCargoRecord_Node0_action --> E_SaveUpdatedCargoRecord S_SaveUpdatedCargoRecord --> N_SaveUpdatedCargoRecord_Node0 N_SaveUpdatedCargoRecord_Node1{"The system completes the manifest
integration process"}:::decision N_SaveUpdatedCargoRecord_Node1_action["The updated cargo record is saved
to the database"]:::main N_SaveUpdatedCargoRecord_Node1 -- Yes --> N_SaveUpdatedCargoRecord_Node1_action N_SaveUpdatedCargoRecord_Node1_action --> E_SaveUpdatedCargoRecord N_SaveUpdatedCargoRecord_Node0 -- No --> N_SaveUpdatedCargoRecord_Node1 N_SaveUpdatedCargoRecord_Node1 -- No --> E_SaveUpdatedCargoRecord
processing"}:::decision N_SaveUpdatedCargoRecord_Node0_action["The system saves the updated cargo
record to the database"]:::main N_SaveUpdatedCargoRecord_Node0 -- Yes --> N_SaveUpdatedCargoRecord_Node0_action N_SaveUpdatedCargoRecord_Node0_action --> E_SaveUpdatedCargoRecord S_SaveUpdatedCargoRecord --> N_SaveUpdatedCargoRecord_Node0 N_SaveUpdatedCargoRecord_Node1{"The system completes the manifest
integration process"}:::decision N_SaveUpdatedCargoRecord_Node1_action["The updated cargo record is saved
to the database"]:::main N_SaveUpdatedCargoRecord_Node1 -- Yes --> N_SaveUpdatedCargoRecord_Node1_action N_SaveUpdatedCargoRecord_Node1_action --> E_SaveUpdatedCargoRecord N_SaveUpdatedCargoRecord_Node0 -- No --> N_SaveUpdatedCargoRecord_Node1 N_SaveUpdatedCargoRecord_Node1 -- No --> E_SaveUpdatedCargoRecord
File: GCX016.cbl
GIVEN:
All cargo release updates have been applied
WHEN:
The system completes release processing
THEN:
The system saves the updated cargo record to the database
File: GCX016.cbl
GIVEN:
A cargo record has been updated with all manifest information
WHEN:
The system completes the manifest integration process
THEN:
The updated cargo record is saved to the database
β Consolidated Acceptance Criteria
- Arrival status is being applied to the cargo → the export status is cleared and removed from the cargo record
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ClearExportStatusifSet(["Start Step"])
E_ClearExportStatusifSet(["End Step"])
N_ClearExportStatusifSet_Node0{"Arrival status is being applied to
the cargo"}:::decision N_ClearExportStatusifSet_Node0_action["The export status is cleared and
removed from the cargo record"]:::main N_ClearExportStatusifSet_Node0 -- Yes --> N_ClearExportStatusifSet_Node0_action N_ClearExportStatusifSet_Node0_action --> E_ClearExportStatusifSet S_ClearExportStatusifSet --> N_ClearExportStatusifSet_Node0 N_ClearExportStatusifSet_Node0 -- No --> E_ClearExportStatusifSet
the cargo"}:::decision N_ClearExportStatusifSet_Node0_action["The export status is cleared and
removed from the cargo record"]:::main N_ClearExportStatusifSet_Node0 -- Yes --> N_ClearExportStatusifSet_Node0_action N_ClearExportStatusifSet_Node0_action --> E_ClearExportStatusifSet S_ClearExportStatusifSet --> N_ClearExportStatusifSet_Node0 N_ClearExportStatusifSet_Node0 -- No --> E_ClearExportStatusifSet
File: GCX016.cbl
GIVEN:
Cargo has both arrival flag set and existing export status
WHEN:
Arrival status is being applied to the cargo
THEN:
- The export status is cleared
- Removed from the cargo record
β Consolidated Acceptance Criteria
- The export status is being applied → the export date is updated with the current system date
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UpdateExportDate(["Start Step"])
E_UpdateExportDate(["End Step"])
N_UpdateExportDate_Node0{"The export status is being applied"}:::decision
N_UpdateExportDate_Node0_action["The export date is updated with the
current system date"]:::main N_UpdateExportDate_Node0 -- Yes --> N_UpdateExportDate_Node0_action N_UpdateExportDate_Node0_action --> E_UpdateExportDate S_UpdateExportDate --> N_UpdateExportDate_Node0 N_UpdateExportDate_Node0 -- No --> E_UpdateExportDate
current system date"]:::main N_UpdateExportDate_Node0 -- Yes --> N_UpdateExportDate_Node0_action N_UpdateExportDate_Node0_action --> E_UpdateExportDate S_UpdateExportDate --> N_UpdateExportDate_Node0 N_UpdateExportDate_Node0 -- No --> E_UpdateExportDate
File: GCX016.cbl
GIVEN:
Cargo is being set to export status
WHEN:
The export status is being applied
THEN:
The export date is updated with the current system date
β Consolidated Acceptance Criteria
- The status change is being applied → the status change is logged with timestamp and details for audit trail
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogStatusChange(["Start Step"])
E_LogStatusChange(["End Step"])
N_LogStatusChange_Node0{"The status change is being applied"}:::decision
N_LogStatusChange_Node0_action["The status change is logged with
timestamp and details for audit
trail"]:::main N_LogStatusChange_Node0 -- Yes --> N_LogStatusChange_Node0_action N_LogStatusChange_Node0_action --> E_LogStatusChange S_LogStatusChange --> N_LogStatusChange_Node0 N_LogStatusChange_Node0 -- No --> E_LogStatusChange
timestamp and details for audit
trail"]:::main N_LogStatusChange_Node0 -- Yes --> N_LogStatusChange_Node0_action N_LogStatusChange_Node0_action --> E_LogStatusChange S_LogStatusChange --> N_LogStatusChange_Node0 N_LogStatusChange_Node0 -- No --> E_LogStatusChange
File: GCX016.cbl
GIVEN:
Cargo status is being changed to arrival or export
WHEN:
The status change is being applied
THEN:
- The status change is logged with timestamp
- Details for audit trail
β Consolidated Acceptance Criteria
- The status update is complete → status change notifications are generated and sent to relevant parties including brokers and customs
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GenerateStatusNotification(["Start Step"])
E_GenerateStatusNotification(["End Step"])
N_GenerateStatusNotification_Node0{"The status update is complete"}:::decision
N_GenerateStatusNotification_Node0_action["Status change notifications are
generated and sent to relevant
parties including brokers and
customs"]:::main N_GenerateStatusNotification_Node0 -- Yes --> N_GenerateStatusNotification_Node0_action N_GenerateStatusNotification_Node0_action --> E_GenerateStatusNotification S_GenerateStatusNotification --> N_GenerateStatusNotification_Node0 N_GenerateStatusNotification_Node0 -- No --> E_GenerateStatusNotification
generated and sent to relevant
parties including brokers and
customs"]:::main N_GenerateStatusNotification_Node0 -- Yes --> N_GenerateStatusNotification_Node0_action N_GenerateStatusNotification_Node0_action --> E_GenerateStatusNotification S_GenerateStatusNotification --> N_GenerateStatusNotification_Node0 N_GenerateStatusNotification_Node0 -- No --> E_GenerateStatusNotification
File: GCX016.cbl
GIVEN:
Cargo status has been updated to arrival or export
WHEN:
The status update is complete
THEN:
- Status change notifications are generated
- Sent to relevant parties including brokers
- Customs
β Consolidated Acceptance Criteria
- The system analyzes the cargo's current status array for release indicators → the system determines if the cargo was previously released based on release status flags and proceeds to status analysis or completes processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_PreviouslyReleasedCargoDetected(["Start Step"])
E_PreviouslyReleasedCargoDetected(["End Step"])
N_PreviouslyReleasedCargoDetected_Node0{"The system analyzes the cargo s
current status array for release
indicators"}:::decision N_PreviouslyReleasedCargoDetected_Node0_action["The system determines if the cargo
was previously released based on
release status flags and proceeds to
status analysis or completes
processing"]:::main N_PreviouslyReleasedCargoDetected_Node0 -- Yes --> N_PreviouslyReleasedCargoDetected_Node0_action N_PreviouslyReleasedCargoDetected_Node0_action --> E_PreviouslyReleasedCargoDetected S_PreviouslyReleasedCargoDetected --> N_PreviouslyReleasedCargoDetected_Node0 N_PreviouslyReleasedCargoDetected_Node0 -- No --> E_PreviouslyReleasedCargoDetected
current status array for release
indicators"}:::decision N_PreviouslyReleasedCargoDetected_Node0_action["The system determines if the cargo
was previously released based on
release status flags and proceeds to
status analysis or completes
processing"]:::main N_PreviouslyReleasedCargoDetected_Node0 -- Yes --> N_PreviouslyReleasedCargoDetected_Node0_action N_PreviouslyReleasedCargoDetected_Node0_action --> E_PreviouslyReleasedCargoDetected S_PreviouslyReleasedCargoDetected --> N_PreviouslyReleasedCargoDetected_Node0 N_PreviouslyReleasedCargoDetected_Node0 -- No --> E_PreviouslyReleasedCargoDetected
File: GCX016.cbl
GIVEN:
A cargo record exists in the system with status information
WHEN:
The system analyzes the cargo's current status array for release indicators
THEN:
- The system determines if the cargo was previously released based on release status flags
- Proceeds to status analysis or completes processing
β Consolidated Acceptance Criteria
- The system calls B570-VERIFY-THE-ARRAY to analyze status conditions → the system sets flags for cargo conditions including empty, held, released, PTT status and prepares for release status change detection
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AnalyzeCurrentStatusArray(["Start Step"])
E_AnalyzeCurrentStatusArray(["End Step"])
N_AnalyzeCurrentStatusArray_Node0{"The system calls
B570-VERIFY-THE-ARRAY to analyze
status conditions"}:::decision N_AnalyzeCurrentStatusArray_Node0_action["The system sets flags for cargo
conditions including empty, held,
released, PTT status and prepares
for release status change detection"]:::main N_AnalyzeCurrentStatusArray_Node0 -- Yes --> N_AnalyzeCurrentStatusArray_Node0_action N_AnalyzeCurrentStatusArray_Node0_action --> E_AnalyzeCurrentStatusArray S_AnalyzeCurrentStatusArray --> N_AnalyzeCurrentStatusArray_Node0 N_AnalyzeCurrentStatusArray_Node0 -- No --> E_AnalyzeCurrentStatusArray
B570-VERIFY-THE-ARRAY to analyze
status conditions"}:::decision N_AnalyzeCurrentStatusArray_Node0_action["The system sets flags for cargo
conditions including empty, held,
released, PTT status and prepares
for release status change detection"]:::main N_AnalyzeCurrentStatusArray_Node0 -- Yes --> N_AnalyzeCurrentStatusArray_Node0_action N_AnalyzeCurrentStatusArray_Node0_action --> E_AnalyzeCurrentStatusArray S_AnalyzeCurrentStatusArray --> N_AnalyzeCurrentStatusArray_Node0 N_AnalyzeCurrentStatusArray_Node0 -- No --> E_AnalyzeCurrentStatusArray
File: GCX016.cbl
GIVEN:
Previously released cargo has been identified
WHEN:
The system calls B570-VERIFY-THE-ARRAY to analyze status conditions
THEN:
- The system sets flags for cargo conditions including empty, held, released, ptt status
- Prepares for release status change detection
β Consolidated Acceptance Criteria
- The system compares current release status against previous release status → if release status changed from released to unreleased, proceed to unrelease scenario identification, otherwise complete processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ReleaseStatusChangedtoUnreleased(["Start Step"])
E_ReleaseStatusChangedtoUnreleased(["End Step"])
N_ReleaseStatusChangedtoUnreleased_Node0{"The system compares current release
status against previous release
status"}:::decision N_ReleaseStatusChangedtoUnreleased_Node0_action["If release status changed from
released to unreleased, proceed to
unrelease scenario identification,
otherwise complete processing"]:::main N_ReleaseStatusChangedtoUnreleased_Node0 -- Yes --> N_ReleaseStatusChangedtoUnreleased_Node0_action N_ReleaseStatusChangedtoUnreleased_Node0_action --> E_ReleaseStatusChangedtoUnreleased S_ReleaseStatusChangedtoUnreleased --> N_ReleaseStatusChangedtoUnreleased_Node0 N_ReleaseStatusChangedtoUnreleased_Node0 -- No --> E_ReleaseStatusChangedtoUnreleased
status against previous release
status"}:::decision N_ReleaseStatusChangedtoUnreleased_Node0_action["If release status changed from
released to unreleased, proceed to
unrelease scenario identification,
otherwise complete processing"]:::main N_ReleaseStatusChangedtoUnreleased_Node0 -- Yes --> N_ReleaseStatusChangedtoUnreleased_Node0_action N_ReleaseStatusChangedtoUnreleased_Node0_action --> E_ReleaseStatusChangedtoUnreleased S_ReleaseStatusChangedtoUnreleased --> N_ReleaseStatusChangedtoUnreleased_Node0 N_ReleaseStatusChangedtoUnreleased_Node0 -- No --> E_ReleaseStatusChangedtoUnreleased
File: GCX016.cbl
GIVEN:
The current status array has been analyzed and cargo was previously released
WHEN:
The system compares current release status against previous release status
THEN:
If release status changed from released to unreleased, proceed to unrelease scenario identification, otherwise complete processing
β Consolidated Acceptance Criteria
- If the disposition code and current cargo conditions → the system identifies the specific unrelease scenario type and prepares appropriate processing actions
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IdentifyCargoUnreleaseScenario(["Start Step"])
E_IdentifyCargoUnreleaseScenario(["End Step"])
N_IdentifyCargoUnreleaseScenario_Node0{"The system evaluates the
disposition code and current cargo
conditions"}:::decision N_IdentifyCargoUnreleaseScenario_Node0_action["The system identifies the specific
unrelease scenario type and prepares
appropriate processing actions"]:::main N_IdentifyCargoUnreleaseScenario_Node0 -- Yes --> N_IdentifyCargoUnreleaseScenario_Node0_action N_IdentifyCargoUnreleaseScenario_Node0_action --> E_IdentifyCargoUnreleaseScenario S_IdentifyCargoUnreleaseScenario --> N_IdentifyCargoUnreleaseScenario_Node0 N_IdentifyCargoUnreleaseScenario_Node0 -- No --> E_IdentifyCargoUnreleaseScenario
disposition code and current cargo
conditions"}:::decision N_IdentifyCargoUnreleaseScenario_Node0_action["The system identifies the specific
unrelease scenario type and prepares
appropriate processing actions"]:::main N_IdentifyCargoUnreleaseScenario_Node0 -- Yes --> N_IdentifyCargoUnreleaseScenario_Node0_action N_IdentifyCargoUnreleaseScenario_Node0_action --> E_IdentifyCargoUnreleaseScenario S_IdentifyCargoUnreleaseScenario --> N_IdentifyCargoUnreleaseScenario_Node0 N_IdentifyCargoUnreleaseScenario_Node0 -- No --> E_IdentifyCargoUnreleaseScenario
File: GCX016.cbl
GIVEN:
Release status has changed from released to unreleased
WHEN:
- The system evaluates the disposition code
- Current cargo conditions
THEN:
- The system identifies the specific unrelease scenario type
- Prepares appropriate processing actions
β Consolidated Acceptance Criteria
- The system calls C600-FORMAT-MERLIN-INFO to format the unrelease message → the system creates a formatted notification message containing disposition code, cargo details, and unrelease information
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GenerateUnreleaseNotification(["Start Step"])
E_GenerateUnreleaseNotification(["End Step"])
N_GenerateUnreleaseNotification_Node0{"The system calls
C600-FORMAT-MERLIN-INFO to format
the unrelease message"}:::decision N_GenerateUnreleaseNotification_Node0_action["The system creates a formatted
notification message containing
disposition code, cargo details, and
unrelease information"]:::main N_GenerateUnreleaseNotification_Node0 -- Yes --> N_GenerateUnreleaseNotification_Node0_action N_GenerateUnreleaseNotification_Node0_action --> E_GenerateUnreleaseNotification S_GenerateUnreleaseNotification --> N_GenerateUnreleaseNotification_Node0 N_GenerateUnreleaseNotification_Node0 -- No --> E_GenerateUnreleaseNotification
C600-FORMAT-MERLIN-INFO to format
the unrelease message"}:::decision N_GenerateUnreleaseNotification_Node0_action["The system creates a formatted
notification message containing
disposition code, cargo details, and
unrelease information"]:::main N_GenerateUnreleaseNotification_Node0 -- Yes --> N_GenerateUnreleaseNotification_Node0_action N_GenerateUnreleaseNotification_Node0_action --> E_GenerateUnreleaseNotification S_GenerateUnreleaseNotification --> N_GenerateUnreleaseNotification_Node0 N_GenerateUnreleaseNotification_Node0 -- No --> E_GenerateUnreleaseNotification
File: GCX016.cbl
GIVEN:
An unrelease scenario has been identified
WHEN:
The system calls C600-FORMAT-MERLIN-INFO to format the unrelease message
THEN:
The system creates a formatted notification message containing disposition code, cargo details, and unrelease information
β Consolidated Acceptance Criteria
- The system calls B580-SET-US-CARGO-STATUS to update cargo status → the cargo status is updated to unreleased condition with appropriate status description and flags
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UpdateCargoStatustoUnreleased(["Start Step"])
E_UpdateCargoStatustoUnreleased(["End Step"])
N_UpdateCargoStatustoUnreleased_Node0{"The system calls
B580-SET-US-CARGO-STATUS to update
cargo status"}:::decision N_UpdateCargoStatustoUnreleased_Node0_action["The cargo status is updated to
unreleased condition with
appropriate status description and
flags"]:::main N_UpdateCargoStatustoUnreleased_Node0 -- Yes --> N_UpdateCargoStatustoUnreleased_Node0_action N_UpdateCargoStatustoUnreleased_Node0_action --> E_UpdateCargoStatustoUnreleased S_UpdateCargoStatustoUnreleased --> N_UpdateCargoStatustoUnreleased_Node0 N_UpdateCargoStatustoUnreleased_Node0 -- No --> E_UpdateCargoStatustoUnreleased
B580-SET-US-CARGO-STATUS to update
cargo status"}:::decision N_UpdateCargoStatustoUnreleased_Node0_action["The cargo status is updated to
unreleased condition with
appropriate status description and
flags"]:::main N_UpdateCargoStatustoUnreleased_Node0 -- Yes --> N_UpdateCargoStatustoUnreleased_Node0_action N_UpdateCargoStatustoUnreleased_Node0_action --> E_UpdateCargoStatustoUnreleased S_UpdateCargoStatustoUnreleased --> N_UpdateCargoStatustoUnreleased_Node0 N_UpdateCargoStatustoUnreleased_Node0 -- No --> E_UpdateCargoStatustoUnreleased
File: GCX016.cbl
GIVEN:
Unrelease notification has been generated
WHEN:
The system calls B580-SET-US-CARGO-STATUS to update cargo status
THEN:
- The cargo status is updated to unreleased condition with appropriate status description
- Flags
β Consolidated Acceptance Criteria
- The system processes quantity adjustments for unrelease → release quantities are cleared or adjusted to reflect the unreleased status
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ClearReleaseQuantities(["Start Step"])
E_ClearReleaseQuantities(["End Step"])
N_ClearReleaseQuantities_Node0{"The system processes quantity
adjustments for unrelease"}:::decision N_ClearReleaseQuantities_Node0_action["Release quantities are cleared or
adjusted to reflect the unreleased
status"]:::main N_ClearReleaseQuantities_Node0 -- Yes --> N_ClearReleaseQuantities_Node0_action N_ClearReleaseQuantities_Node0_action --> E_ClearReleaseQuantities S_ClearReleaseQuantities --> N_ClearReleaseQuantities_Node0 N_ClearReleaseQuantities_Node0 -- No --> E_ClearReleaseQuantities
adjustments for unrelease"}:::decision N_ClearReleaseQuantities_Node0_action["Release quantities are cleared or
adjusted to reflect the unreleased
status"]:::main N_ClearReleaseQuantities_Node0 -- Yes --> N_ClearReleaseQuantities_Node0_action N_ClearReleaseQuantities_Node0_action --> E_ClearReleaseQuantities S_ClearReleaseQuantities --> N_ClearReleaseQuantities_Node0 N_ClearReleaseQuantities_Node0 -- No --> E_ClearReleaseQuantities
File: GCX016.cbl
GIVEN:
Cargo status has been updated to unreleased
WHEN:
The system processes quantity adjustments for unrelease
THEN:
Release quantities are cleared or adjusted to reflect the unreleased status
β Consolidated Acceptance Criteria
- The system calls B583-PROCESS-CDN-MFST to handle Canadian manifest processing → canadian manifest records are updated to reflect the cargo unrelease status
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ProcessCanadianManifestCrossreference(["Start Step"])
E_ProcessCanadianManifestCrossreference(["End Step"])
N_ProcessCanadianManifestCrossreference_Node0{"The system calls
B583-PROCESS-CDN-MFST to handle
Canadian manifest processing"}:::decision N_ProcessCanadianManifestCrossreference_Node0_action["Canadian manifest records are
updated to reflect the cargo
unrelease status"]:::main N_ProcessCanadianManifestCrossreference_Node0 -- Yes --> N_ProcessCanadianManifestCrossreference_Node0_action N_ProcessCanadianManifestCrossreference_Node0_action --> E_ProcessCanadianManifestCrossreference S_ProcessCanadianManifestCrossreference --> N_ProcessCanadianManifestCrossreference_Node0 N_ProcessCanadianManifestCrossreference_Node0 -- No --> E_ProcessCanadianManifestCrossreference
B583-PROCESS-CDN-MFST to handle
Canadian manifest processing"}:::decision N_ProcessCanadianManifestCrossreference_Node0_action["Canadian manifest records are
updated to reflect the cargo
unrelease status"]:::main N_ProcessCanadianManifestCrossreference_Node0 -- Yes --> N_ProcessCanadianManifestCrossreference_Node0_action N_ProcessCanadianManifestCrossreference_Node0_action --> E_ProcessCanadianManifestCrossreference S_ProcessCanadianManifestCrossreference --> N_ProcessCanadianManifestCrossreference_Node0 N_ProcessCanadianManifestCrossreference_Node0 -- No --> E_ProcessCanadianManifestCrossreference
File: GCX016.cbl
GIVEN:
Canadian manifest coordination is required
WHEN:
The system calls B583-PROCESS-CDN-MFST to handle Canadian manifest processing
THEN:
Canadian manifest records are updated to reflect the cargo unrelease status
β Consolidated Acceptance Criteria
- The system calls Z110-PREP-EMCSEND with message type UNRLSE → unrelease message is routed to default and cancel-specific Merlin IDs for appropriate user notification
- The system determines the appropriate recipients based on cargo location and broker information → the system routes the unrelease message to station-specific Merlin IDs, broker notification systems, and error handling destinations as appropriate
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RouteUnreleaseMessagetoAppropriateUsers(["Start Step"])
E_RouteUnreleaseMessagetoAppropriateUsers(["End Step"])
N_RouteUnreleaseMessagetoAppropriateUsers_Node0{"The system calls Z110-PREP-EMCSEND
with message type UNRLSE"}:::decision N_RouteUnreleaseMessagetoAppropriateUsers_Node0_action["Unrelease message is routed to
default and cancel-specific Merlin
IDs for appropriate user
notification"]:::main N_RouteUnreleaseMessagetoAppropriateUsers_Node0 -- Yes --> N_RouteUnreleaseMessagetoAppropriateUsers_Node0_action N_RouteUnreleaseMessagetoAppropriateUsers_Node0_action --> E_RouteUnreleaseMessagetoAppropriateUsers S_RouteUnreleaseMessagetoAppropriateUsers --> N_RouteUnreleaseMessagetoAppropriateUsers_Node0 N_RouteUnreleaseMessagetoAppropriateUsers_Node1{"The system determines the
appropriate recipients based on
cargo location and broker
information"}:::decision N_RouteUnreleaseMessagetoAppropriateUsers_Node1_action["The system routes the unrelease
message to station-specific Merlin
IDs, broker notification systems,
and error handling destinations as
appropriate"]:::main N_RouteUnreleaseMessagetoAppropriateUsers_Node1 -- Yes --> N_RouteUnreleaseMessagetoAppropriateUsers_Node1_action N_RouteUnreleaseMessagetoAppropriateUsers_Node1_action --> E_RouteUnreleaseMessagetoAppropriateUsers N_RouteUnreleaseMessagetoAppropriateUsers_Node0 -- No --> N_RouteUnreleaseMessagetoAppropriateUsers_Node1 N_RouteUnreleaseMessagetoAppropriateUsers_Node1 -- No --> E_RouteUnreleaseMessagetoAppropriateUsers
with message type UNRLSE"}:::decision N_RouteUnreleaseMessagetoAppropriateUsers_Node0_action["Unrelease message is routed to
default and cancel-specific Merlin
IDs for appropriate user
notification"]:::main N_RouteUnreleaseMessagetoAppropriateUsers_Node0 -- Yes --> N_RouteUnreleaseMessagetoAppropriateUsers_Node0_action N_RouteUnreleaseMessagetoAppropriateUsers_Node0_action --> E_RouteUnreleaseMessagetoAppropriateUsers S_RouteUnreleaseMessagetoAppropriateUsers --> N_RouteUnreleaseMessagetoAppropriateUsers_Node0 N_RouteUnreleaseMessagetoAppropriateUsers_Node1{"The system determines the
appropriate recipients based on
cargo location and broker
information"}:::decision N_RouteUnreleaseMessagetoAppropriateUsers_Node1_action["The system routes the unrelease
message to station-specific Merlin
IDs, broker notification systems,
and error handling destinations as
appropriate"]:::main N_RouteUnreleaseMessagetoAppropriateUsers_Node1 -- Yes --> N_RouteUnreleaseMessagetoAppropriateUsers_Node1_action N_RouteUnreleaseMessagetoAppropriateUsers_Node1_action --> E_RouteUnreleaseMessagetoAppropriateUsers N_RouteUnreleaseMessagetoAppropriateUsers_Node0 -- No --> N_RouteUnreleaseMessagetoAppropriateUsers_Node1 N_RouteUnreleaseMessagetoAppropriateUsers_Node1 -- No --> E_RouteUnreleaseMessagetoAppropriateUsers
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
Canadian system notification has been sent or Canadian coordination is not required
WHEN:
The system calls Z110-PREP-EMCSEND with message type UNRLSE
THEN:
- Unrelease message is routed to default
- Cancel-specific merlin ids for appropriate user notification
File: GCX016.cbl
GIVEN:
Unrelease notification message has been generated
WHEN:
- The system determines the appropriate recipients based on cargo location
- Broker information
THEN:
The system routes the unrelease message to station-specific Merlin IDs, broker notification systems, and error handling destinations as appropriate
β Consolidated Acceptance Criteria
- The system calls C801-NOTIFY-BROKER with unrelease information → broker receives notification about cargo unrelease with relevant details and disposition code information
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SendBrokerNotificationforUnrelease(["Start Step"])
E_SendBrokerNotificationforUnrelease(["End Step"])
N_SendBrokerNotificationforUnrelease_Node0{"The system calls C801-NOTIFY-BROKER
with unrelease information"}:::decision N_SendBrokerNotificationforUnrelease_Node0_action["Broker receives notification about
cargo unrelease with relevant
details and disposition code
information"]:::main N_SendBrokerNotificationforUnrelease_Node0 -- Yes --> N_SendBrokerNotificationforUnrelease_Node0_action N_SendBrokerNotificationforUnrelease_Node0_action --> E_SendBrokerNotificationforUnrelease S_SendBrokerNotificationforUnrelease --> N_SendBrokerNotificationforUnrelease_Node0 N_SendBrokerNotificationforUnrelease_Node0 -- No --> E_SendBrokerNotificationforUnrelease
with unrelease information"}:::decision N_SendBrokerNotificationforUnrelease_Node0_action["Broker receives notification about
cargo unrelease with relevant
details and disposition code
information"]:::main N_SendBrokerNotificationforUnrelease_Node0 -- Yes --> N_SendBrokerNotificationforUnrelease_Node0_action N_SendBrokerNotificationforUnrelease_Node0_action --> E_SendBrokerNotificationforUnrelease S_SendBrokerNotificationforUnrelease --> N_SendBrokerNotificationforUnrelease_Node0 N_SendBrokerNotificationforUnrelease_Node0 -- No --> E_SendBrokerNotificationforUnrelease
File: GCX016.cbl
GIVEN:
Broker notification is required for the unrelease event
WHEN:
The system calls C801-NOTIFY-BROKER with unrelease information
THEN:
- Broker receives notification about cargo unrelease with relevant details
- Disposition code information
β Consolidated Acceptance Criteria
- The system calls Z300-SPAWN-GCT1051E to log the transaction → cargo unrelease transaction is logged with complete details for audit trail and system tracking
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogCargoUnreleaseTransaction(["Start Step"])
E_LogCargoUnreleaseTransaction(["End Step"])
N_LogCargoUnreleaseTransaction_Node0{"The system calls
Z300-SPAWN-GCT1051E to log the
transaction"}:::decision N_LogCargoUnreleaseTransaction_Node0_action["Cargo unrelease transaction is
logged with complete details for
audit trail and system tracking"]:::main N_LogCargoUnreleaseTransaction_Node0 -- Yes --> N_LogCargoUnreleaseTransaction_Node0_action N_LogCargoUnreleaseTransaction_Node0_action --> E_LogCargoUnreleaseTransaction S_LogCargoUnreleaseTransaction --> N_LogCargoUnreleaseTransaction_Node0 N_LogCargoUnreleaseTransaction_Node0 -- No --> E_LogCargoUnreleaseTransaction
Z300-SPAWN-GCT1051E to log the
transaction"}:::decision N_LogCargoUnreleaseTransaction_Node0_action["Cargo unrelease transaction is
logged with complete details for
audit trail and system tracking"]:::main N_LogCargoUnreleaseTransaction_Node0 -- Yes --> N_LogCargoUnreleaseTransaction_Node0_action N_LogCargoUnreleaseTransaction_Node0_action --> E_LogCargoUnreleaseTransaction S_LogCargoUnreleaseTransaction --> N_LogCargoUnreleaseTransaction_Node0 N_LogCargoUnreleaseTransaction_Node0 -- No --> E_LogCargoUnreleaseTransaction
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
Broker notification has been sent or is not required
WHEN:
The system calls Z300-SPAWN-GCT1051E to log the transaction
THEN:
- Cargo unrelease transaction is logged with complete details for audit trail
- System tracking
β Consolidated Acceptance Criteria
- The system calls C700-CALL-GCCIIS with unrelease status information → integration services are updated with cargo unrelease status for equipment and container processing systems
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UpdateIntegrationServices(["Start Step"])
E_UpdateIntegrationServices(["End Step"])
N_UpdateIntegrationServices_Node0{"The system calls C700-CALL-GCCIIS
with unrelease status information"}:::decision N_UpdateIntegrationServices_Node0_action["Integration services are updated
with cargo unrelease status for
equipment and container processing
systems"]:::main N_UpdateIntegrationServices_Node0 -- Yes --> N_UpdateIntegrationServices_Node0_action N_UpdateIntegrationServices_Node0_action --> E_UpdateIntegrationServices S_UpdateIntegrationServices --> N_UpdateIntegrationServices_Node0 N_UpdateIntegrationServices_Node0 -- No --> E_UpdateIntegrationServices
with unrelease status information"}:::decision N_UpdateIntegrationServices_Node0_action["Integration services are updated
with cargo unrelease status for
equipment and container processing
systems"]:::main N_UpdateIntegrationServices_Node0 -- Yes --> N_UpdateIntegrationServices_Node0_action N_UpdateIntegrationServices_Node0_action --> E_UpdateIntegrationServices S_UpdateIntegrationServices --> N_UpdateIntegrationServices_Node0 N_UpdateIntegrationServices_Node0 -- No --> E_UpdateIntegrationServices
File: GCX016.cbl
GIVEN:
Cargo unrelease transaction has been logged
WHEN:
The system calls C700-CALL-GCCIIS with unrelease status information
THEN:
- Integration services are updated with cargo unrelease status for equipment
- Container processing systems
β Consolidated Acceptance Criteria
- The system needs to access Canadian cargo records → the system should connect to and query the Canadian cargo database
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AccessCanadianCargoDatabaseRecords(["Start Step"])
E_AccessCanadianCargoDatabaseRecords(["End Step"])
N_AccessCanadianCargoDatabaseRecords_Node0{"The system needs to access Canadian
cargo records"}:::decision N_AccessCanadianCargoDatabaseRecords_Node0_action["The system should connect to and
query the Canadian cargo database"]:::main N_AccessCanadianCargoDatabaseRecords_Node0 -- Yes --> N_AccessCanadianCargoDatabaseRecords_Node0_action N_AccessCanadianCargoDatabaseRecords_Node0_action --> E_AccessCanadianCargoDatabaseRecords S_AccessCanadianCargoDatabaseRecords --> N_AccessCanadianCargoDatabaseRecords_Node0 N_AccessCanadianCargoDatabaseRecords_Node0 -- No --> E_AccessCanadianCargoDatabaseRecords
cargo records"}:::decision N_AccessCanadianCargoDatabaseRecords_Node0_action["The system should connect to and
query the Canadian cargo database"]:::main N_AccessCanadianCargoDatabaseRecords_Node0 -- Yes --> N_AccessCanadianCargoDatabaseRecords_Node0_action N_AccessCanadianCargoDatabaseRecords_Node0_action --> E_AccessCanadianCargoDatabaseRecords S_AccessCanadianCargoDatabaseRecords --> N_AccessCanadianCargoDatabaseRecords_Node0 N_AccessCanadianCargoDatabaseRecords_Node0 -- No --> E_AccessCanadianCargoDatabaseRecords
File: GCX016.cbl
GIVEN:
Canadian manifest coordination is required
WHEN:
The system needs to access Canadian cargo records
THEN:
- The system should connect to
- Query the canadian cargo database
β Consolidated Acceptance Criteria
- The system searches for matching Canadian cargo using equipment ID → the system should locate Canadian cargo records that match the equipment identifier
- The system matches Canadian cargo by equipment ID → the system should validate if the Canadian records are usable for processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MatchCanadianCargobyEquipmentID(["Start Step"])
E_MatchCanadianCargobyEquipmentID(["End Step"])
N_MatchCanadianCargobyEquipmentID_Node0{"The system searches for matching
Canadian cargo using equipment ID"}:::decision N_MatchCanadianCargobyEquipmentID_Node0_action["The system should locate Canadian
cargo records that match the
equipment identifier"]:::main N_MatchCanadianCargobyEquipmentID_Node0 -- Yes --> N_MatchCanadianCargobyEquipmentID_Node0_action N_MatchCanadianCargobyEquipmentID_Node0_action --> E_MatchCanadianCargobyEquipmentID S_MatchCanadianCargobyEquipmentID --> N_MatchCanadianCargobyEquipmentID_Node0 N_MatchCanadianCargobyEquipmentID_Node1{"the system matches Canadian cargo
by equipment ID"}:::decision N_MatchCanadianCargobyEquipmentID_Node1_action["the system should validate if the
Canadian records are usable for
processing"]:::main N_MatchCanadianCargobyEquipmentID_Node1 -- Yes --> N_MatchCanadianCargobyEquipmentID_Node1_action N_MatchCanadianCargobyEquipmentID_Node1_action --> E_MatchCanadianCargobyEquipmentID N_MatchCanadianCargobyEquipmentID_Node0 -- No --> N_MatchCanadianCargobyEquipmentID_Node1 N_MatchCanadianCargobyEquipmentID_Node1 -- No --> E_MatchCanadianCargobyEquipmentID
Canadian cargo using equipment ID"}:::decision N_MatchCanadianCargobyEquipmentID_Node0_action["The system should locate Canadian
cargo records that match the
equipment identifier"]:::main N_MatchCanadianCargobyEquipmentID_Node0 -- Yes --> N_MatchCanadianCargobyEquipmentID_Node0_action N_MatchCanadianCargobyEquipmentID_Node0_action --> E_MatchCanadianCargobyEquipmentID S_MatchCanadianCargobyEquipmentID --> N_MatchCanadianCargobyEquipmentID_Node0 N_MatchCanadianCargobyEquipmentID_Node1{"the system matches Canadian cargo
by equipment ID"}:::decision N_MatchCanadianCargobyEquipmentID_Node1_action["the system should validate if the
Canadian records are usable for
processing"]:::main N_MatchCanadianCargobyEquipmentID_Node1 -- Yes --> N_MatchCanadianCargobyEquipmentID_Node1_action N_MatchCanadianCargobyEquipmentID_Node1_action --> E_MatchCanadianCargobyEquipmentID N_MatchCanadianCargobyEquipmentID_Node0 -- No --> N_MatchCanadianCargobyEquipmentID_Node1 N_MatchCanadianCargobyEquipmentID_Node1 -- No --> E_MatchCanadianCargobyEquipmentID
File: GCX016.cbl
GIVEN:
Canadian cargo database records are accessible
WHEN:
The system searches for matching Canadian cargo using equipment ID
THEN:
The system should locate Canadian cargo records that match the equipment identifier
File: GCX016.cbl
GIVEN:
Canadian CCN records are found
WHEN:
the system matches Canadian cargo by equipment ID
THEN:
the system should validate if the Canadian records are usable for processing
β Consolidated Acceptance Criteria
- The search results are evaluated → the system should determine if a valid Canadian cargo record was found and proceed accordingly or terminate Canadian processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CanadianCargoRecordFound(["Start Step"])
E_CanadianCargoRecordFound(["End Step"])
N_CanadianCargoRecordFound_Node0{"The search results are evaluated"}:::decision
N_CanadianCargoRecordFound_Node0_action["The system should determine if a
valid Canadian cargo record was
found and proceed accordingly or
terminate Canadian processing"]:::exclusion N_CanadianCargoRecordFound_Node0 -- Yes -->|Alternative| N_CanadianCargoRecordFound_Node0_action N_CanadianCargoRecordFound_Node0_action --> E_CanadianCargoRecordFound S_CanadianCargoRecordFound --> N_CanadianCargoRecordFound_Node0 N_CanadianCargoRecordFound_Node0 -- No --> E_CanadianCargoRecordFound
valid Canadian cargo record was
found and proceed accordingly or
terminate Canadian processing"]:::exclusion N_CanadianCargoRecordFound_Node0 -- Yes -->|Alternative| N_CanadianCargoRecordFound_Node0_action N_CanadianCargoRecordFound_Node0_action --> E_CanadianCargoRecordFound S_CanadianCargoRecordFound --> N_CanadianCargoRecordFound_Node0 N_CanadianCargoRecordFound_Node0 -- No --> E_CanadianCargoRecordFound
File: GCX016.cbl
GIVEN:
The system has searched for Canadian cargo by equipment ID
WHEN:
The search results are evaluated
THEN:
- The system should determine if a valid canadian cargo record was found
- Proceed accordingly or terminate canadian processing
β Consolidated Acceptance Criteria
- The system checks if the record is usable for coordination → the system should proceed with log message creation if the record is valid and usable, otherwise terminate Canadian processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CanadianRecordValidandUsable(["Start Step"])
E_CanadianRecordValidandUsable(["End Step"])
N_CanadianRecordValidandUsable_Node0{"The system checks if the record is
usable for coordination"}:::decision N_CanadianRecordValidandUsable_Node0_action["The system should proceed with log
message creation if the record is
valid and usable, otherwise
terminate Canadian processing"]:::exclusion N_CanadianRecordValidandUsable_Node0 -- Yes -->|Alternative| N_CanadianRecordValidandUsable_Node0_action N_CanadianRecordValidandUsable_Node0_action --> E_CanadianRecordValidandUsable S_CanadianRecordValidandUsable --> N_CanadianRecordValidandUsable_Node0 N_CanadianRecordValidandUsable_Node0 -- No --> E_CanadianRecordValidandUsable
usable for coordination"}:::decision N_CanadianRecordValidandUsable_Node0_action["The system should proceed with log
message creation if the record is
valid and usable, otherwise
terminate Canadian processing"]:::exclusion N_CanadianRecordValidandUsable_Node0 -- Yes -->|Alternative| N_CanadianRecordValidandUsable_Node0_action N_CanadianRecordValidandUsable_Node0_action --> E_CanadianRecordValidandUsable S_CanadianRecordValidandUsable --> N_CanadianRecordValidandUsable_Node0 N_CanadianRecordValidandUsable_Node0 -- No --> E_CanadianRecordValidandUsable
File: GCX016.cbl
GIVEN:
A Canadian cargo record status has been validated
WHEN:
The system checks if the record is usable for coordination
THEN:
- The system should proceed with log message creation if the record is valid
- Usable, otherwise terminate canadian processing
β Consolidated Acceptance Criteria
- The system creates a cross-border coordination log message → the system should generate a properly formatted log message containing relevant cargo release information
- The system creates audit documentation → the system should generate a cross-border log message documenting the coordination between US and Canadian cargo records
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CreateCrossBorderLogMessage(["Start Step"])
E_CreateCrossBorderLogMessage(["End Step"])
N_CreateCrossBorderLogMessage_Node0{"The system creates a cross-border
coordination log message"}:::decision N_CreateCrossBorderLogMessage_Node0_action["The system should generate a
properly formatted log message
containing relevant cargo release
information"]:::main N_CreateCrossBorderLogMessage_Node0 -- Yes --> N_CreateCrossBorderLogMessage_Node0_action N_CreateCrossBorderLogMessage_Node0_action --> E_CreateCrossBorderLogMessage S_CreateCrossBorderLogMessage --> N_CreateCrossBorderLogMessage_Node0 N_CreateCrossBorderLogMessage_Node1{"The system creates audit
documentation"}:::decision N_CreateCrossBorderLogMessage_Node1_action["The system should generate a
cross-border log message documenting
the coordination between US and
Canadian cargo records"]:::main N_CreateCrossBorderLogMessage_Node1 -- Yes --> N_CreateCrossBorderLogMessage_Node1_action N_CreateCrossBorderLogMessage_Node1_action --> E_CreateCrossBorderLogMessage N_CreateCrossBorderLogMessage_Node0 -- No --> N_CreateCrossBorderLogMessage_Node1 N_CreateCrossBorderLogMessage_Node1 -- No --> E_CreateCrossBorderLogMessage
coordination log message"}:::decision N_CreateCrossBorderLogMessage_Node0_action["The system should generate a
properly formatted log message
containing relevant cargo release
information"]:::main N_CreateCrossBorderLogMessage_Node0 -- Yes --> N_CreateCrossBorderLogMessage_Node0_action N_CreateCrossBorderLogMessage_Node0_action --> E_CreateCrossBorderLogMessage S_CreateCrossBorderLogMessage --> N_CreateCrossBorderLogMessage_Node0 N_CreateCrossBorderLogMessage_Node1{"The system creates audit
documentation"}:::decision N_CreateCrossBorderLogMessage_Node1_action["The system should generate a
cross-border log message documenting
the coordination between US and
Canadian cargo records"]:::main N_CreateCrossBorderLogMessage_Node1 -- Yes --> N_CreateCrossBorderLogMessage_Node1_action N_CreateCrossBorderLogMessage_Node1_action --> E_CreateCrossBorderLogMessage N_CreateCrossBorderLogMessage_Node0 -- No --> N_CreateCrossBorderLogMessage_Node1 N_CreateCrossBorderLogMessage_Node1 -- No --> E_CreateCrossBorderLogMessage
File: GCX016.cbl
GIVEN:
A valid and usable Canadian cargo record exists
WHEN:
The system creates a cross-border coordination log message
THEN:
The system should generate a properly formatted log message containing relevant cargo release information
File: GCX016.cbl
GIVEN:
A valid Canadian cargo record has been identified for cross-border coordination
WHEN:
The system creates audit documentation
THEN:
- The system should generate a cross-border log message documenting the coordination between us
- Canadian cargo records
β Consolidated Acceptance Criteria
- The system places the log message on the Canadian CCN → the system should successfully transmit and store the log message in the Canadian CCN system
- The system places the log message on the Canadian CCN → the cross-border coordination log message is successfully placed on the Canadian cargo control number for integration with Canadian customs systems
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_PlaceLogMessageonCanadianCCN(["Start Step"])
E_PlaceLogMessageonCanadianCCN(["End Step"])
N_PlaceLogMessageonCanadianCCN_Node0{"The system places the log message
on the Canadian CCN"}:::decision N_PlaceLogMessageonCanadianCCN_Node0_action["The system should successfully
transmit and store the log message
in the Canadian CCN system"]:::main N_PlaceLogMessageonCanadianCCN_Node0 -- Yes --> N_PlaceLogMessageonCanadianCCN_Node0_action N_PlaceLogMessageonCanadianCCN_Node0_action --> E_PlaceLogMessageonCanadianCCN S_PlaceLogMessageonCanadianCCN --> N_PlaceLogMessageonCanadianCCN_Node0 N_PlaceLogMessageonCanadianCCN_Node1{"The system places the log message
on the Canadian CCN"}:::decision N_PlaceLogMessageonCanadianCCN_Node1_action["The cross-border coordination log
message is successfully placed on
the Canadian cargo control number
for integration with Canadian
customs systems"]:::main N_PlaceLogMessageonCanadianCCN_Node1 -- Yes --> N_PlaceLogMessageonCanadianCCN_Node1_action N_PlaceLogMessageonCanadianCCN_Node1_action --> E_PlaceLogMessageonCanadianCCN N_PlaceLogMessageonCanadianCCN_Node0 -- No --> N_PlaceLogMessageonCanadianCCN_Node1 N_PlaceLogMessageonCanadianCCN_Node1 -- No --> E_PlaceLogMessageonCanadianCCN
on the Canadian CCN"}:::decision N_PlaceLogMessageonCanadianCCN_Node0_action["The system should successfully
transmit and store the log message
in the Canadian CCN system"]:::main N_PlaceLogMessageonCanadianCCN_Node0 -- Yes --> N_PlaceLogMessageonCanadianCCN_Node0_action N_PlaceLogMessageonCanadianCCN_Node0_action --> E_PlaceLogMessageonCanadianCCN S_PlaceLogMessageonCanadianCCN --> N_PlaceLogMessageonCanadianCCN_Node0 N_PlaceLogMessageonCanadianCCN_Node1{"The system places the log message
on the Canadian CCN"}:::decision N_PlaceLogMessageonCanadianCCN_Node1_action["The cross-border coordination log
message is successfully placed on
the Canadian cargo control number
for integration with Canadian
customs systems"]:::main N_PlaceLogMessageonCanadianCCN_Node1 -- Yes --> N_PlaceLogMessageonCanadianCCN_Node1_action N_PlaceLogMessageonCanadianCCN_Node1_action --> E_PlaceLogMessageonCanadianCCN N_PlaceLogMessageonCanadianCCN_Node0 -- No --> N_PlaceLogMessageonCanadianCCN_Node1 N_PlaceLogMessageonCanadianCCN_Node1 -- No --> E_PlaceLogMessageonCanadianCCN
File: GCX016.cbl
GIVEN:
A cross-border log message has been created
WHEN:
The system places the log message on the Canadian CCN
THEN:
- The system should successfully transmit
- Store the log message in the canadian ccn system
File: GCX016.cbl
GIVEN:
An audit trail has been created for Canadian system coordination
WHEN:
The system places the log message on the Canadian CCN
THEN:
The cross-border coordination log message is successfully placed on the Canadian cargo control number for integration with Canadian customs systems
β Consolidated Acceptance Criteria
- The system updates the Canadian manifest status → the system should update the Canadian manifest record to indicate successful cross-border coordination
- The system coordinates with Canadian manifest system → update Canadian manifest status to reflect the cargo release and maintain cross-border coordination
- The system updates Canadian manifest status → canadian cargo records are updated to reflect the cross-border coordination and US cargo release status
- The system processes the Canadian manifest coordination → canadian manifest status is updated to reflect the manual release action
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UpdateCanadianManifestStatus(["Start Step"])
E_UpdateCanadianManifestStatus(["End Step"])
N_UpdateCanadianManifestStatus_Node0{"The system updates the Canadian
manifest status"}:::decision N_UpdateCanadianManifestStatus_Node0_action["The system should update the
Canadian manifest record to indicate
successful cross-border coordination"]:::main N_UpdateCanadianManifestStatus_Node0 -- Yes --> N_UpdateCanadianManifestStatus_Node0_action N_UpdateCanadianManifestStatus_Node0_action --> E_UpdateCanadianManifestStatus S_UpdateCanadianManifestStatus --> N_UpdateCanadianManifestStatus_Node0 N_UpdateCanadianManifestStatus_Node1{"The system coordinates with
Canadian manifest system"}:::decision N_UpdateCanadianManifestStatus_Node1_action["Update Canadian manifest status to
reflect the cargo release and
maintain cross-border coordination"]:::main N_UpdateCanadianManifestStatus_Node1 -- Yes --> N_UpdateCanadianManifestStatus_Node1_action N_UpdateCanadianManifestStatus_Node1_action --> E_UpdateCanadianManifestStatus N_UpdateCanadianManifestStatus_Node0 -- No --> N_UpdateCanadianManifestStatus_Node1 N_UpdateCanadianManifestStatus_Node2{"The system updates Canadian
manifest status"}:::decision N_UpdateCanadianManifestStatus_Node2_action["Canadian cargo records are updated
to reflect the cross-border
coordination and US cargo release
status"]:::main N_UpdateCanadianManifestStatus_Node2 -- Yes --> N_UpdateCanadianManifestStatus_Node2_action N_UpdateCanadianManifestStatus_Node2_action --> E_UpdateCanadianManifestStatus N_UpdateCanadianManifestStatus_Node1 -- No --> N_UpdateCanadianManifestStatus_Node2 N_UpdateCanadianManifestStatus_Node3{"The system processes the Canadian
manifest coordination"}:::decision N_UpdateCanadianManifestStatus_Node3_action["Canadian manifest status is updated
to reflect the manual release action"]:::main N_UpdateCanadianManifestStatus_Node3 -- Yes --> N_UpdateCanadianManifestStatus_Node3_action N_UpdateCanadianManifestStatus_Node3_action --> E_UpdateCanadianManifestStatus N_UpdateCanadianManifestStatus_Node2 -- No --> N_UpdateCanadianManifestStatus_Node3 N_UpdateCanadianManifestStatus_Node3 -- No --> E_UpdateCanadianManifestStatus
manifest status"}:::decision N_UpdateCanadianManifestStatus_Node0_action["The system should update the
Canadian manifest record to indicate
successful cross-border coordination"]:::main N_UpdateCanadianManifestStatus_Node0 -- Yes --> N_UpdateCanadianManifestStatus_Node0_action N_UpdateCanadianManifestStatus_Node0_action --> E_UpdateCanadianManifestStatus S_UpdateCanadianManifestStatus --> N_UpdateCanadianManifestStatus_Node0 N_UpdateCanadianManifestStatus_Node1{"The system coordinates with
Canadian manifest system"}:::decision N_UpdateCanadianManifestStatus_Node1_action["Update Canadian manifest status to
reflect the cargo release and
maintain cross-border coordination"]:::main N_UpdateCanadianManifestStatus_Node1 -- Yes --> N_UpdateCanadianManifestStatus_Node1_action N_UpdateCanadianManifestStatus_Node1_action --> E_UpdateCanadianManifestStatus N_UpdateCanadianManifestStatus_Node0 -- No --> N_UpdateCanadianManifestStatus_Node1 N_UpdateCanadianManifestStatus_Node2{"The system updates Canadian
manifest status"}:::decision N_UpdateCanadianManifestStatus_Node2_action["Canadian cargo records are updated
to reflect the cross-border
coordination and US cargo release
status"]:::main N_UpdateCanadianManifestStatus_Node2 -- Yes --> N_UpdateCanadianManifestStatus_Node2_action N_UpdateCanadianManifestStatus_Node2_action --> E_UpdateCanadianManifestStatus N_UpdateCanadianManifestStatus_Node1 -- No --> N_UpdateCanadianManifestStatus_Node2 N_UpdateCanadianManifestStatus_Node3{"The system processes the Canadian
manifest coordination"}:::decision N_UpdateCanadianManifestStatus_Node3_action["Canadian manifest status is updated
to reflect the manual release action"]:::main N_UpdateCanadianManifestStatus_Node3 -- Yes --> N_UpdateCanadianManifestStatus_Node3_action N_UpdateCanadianManifestStatus_Node3_action --> E_UpdateCanadianManifestStatus N_UpdateCanadianManifestStatus_Node2 -- No --> N_UpdateCanadianManifestStatus_Node3 N_UpdateCanadianManifestStatus_Node3 -- No --> E_UpdateCanadianManifestStatus
File: GCX016.cbl
GIVEN:
The log message has been placed on Canadian CCN
WHEN:
The system updates the Canadian manifest status
THEN:
The system should update the Canadian manifest record to indicate successful cross-border coordination
File: GCX016.cbl
GIVEN:
Canadian log message has been generated
WHEN:
The system coordinates with Canadian manifest system
THEN:
- Update canadian manifest status to reflect the cargo release
- Maintain cross-border coordination
File: GCX016.cbl
GIVEN:
A cross-border log message has been generated for matching Canadian cargo
WHEN:
The system updates Canadian manifest status
THEN:
- Canadian cargo records are updated to reflect the cross-border coordination
- Us cargo release status
File: GCX016.cbl
GIVEN:
Canadian manifest records found and log message generated
WHEN:
The system processes the Canadian manifest coordination
THEN:
Canadian manifest status is updated to reflect the manual release action
β Consolidated Acceptance Criteria
- The coordination process completes → the system should mark the Canadian coordination as complete and continue with normal processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CanadianCoordinationComplete(["Start Step"])
E_CanadianCoordinationComplete(["End Step"])
N_CanadianCoordinationComplete_Node0{"The coordination process completes"}:::decision
N_CanadianCoordinationComplete_Node0_action["The system should mark the Canadian
coordination as complete and
continue with normal processing"]:::main N_CanadianCoordinationComplete_Node0 -- Yes --> N_CanadianCoordinationComplete_Node0_action N_CanadianCoordinationComplete_Node0_action --> E_CanadianCoordinationComplete S_CanadianCoordinationComplete --> N_CanadianCoordinationComplete_Node0 N_CanadianCoordinationComplete_Node0 -- No --> E_CanadianCoordinationComplete
coordination as complete and
continue with normal processing"]:::main N_CanadianCoordinationComplete_Node0 -- Yes --> N_CanadianCoordinationComplete_Node0_action N_CanadianCoordinationComplete_Node0_action --> E_CanadianCoordinationComplete S_CanadianCoordinationComplete --> N_CanadianCoordinationComplete_Node0 N_CanadianCoordinationComplete_Node0 -- No --> E_CanadianCoordinationComplete
File: GCX016.cbl
GIVEN:
The Canadian manifest status has been updated
WHEN:
The coordination process completes
THEN:
- The system should mark the canadian coordination as complete
- Continue with normal processing
β Consolidated Acceptance Criteria
- Canadian manifest coordination is not required → the system should bypass all Canadian manifest processing and continue with normal operations
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_NoCanadianManifestProcessingRequired(["Start Step"])
E_NoCanadianManifestProcessingRequired(["End Step"])
N_NoCanadianManifestProcessingRequired_Node0{"Canadian manifest coordination is
not required"}:::decision N_NoCanadianManifestProcessingRequired_Node0_action["The system should bypass all
Canadian manifest processing and
continue with normal operations"]:::main N_NoCanadianManifestProcessingRequired_Node0 -- Yes --> N_NoCanadianManifestProcessingRequired_Node0_action N_NoCanadianManifestProcessingRequired_Node0_action --> E_NoCanadianManifestProcessingRequired S_NoCanadianManifestProcessingRequired --> N_NoCanadianManifestProcessingRequired_Node0 N_NoCanadianManifestProcessingRequired_Node0 -- No --> E_NoCanadianManifestProcessingRequired
not required"}:::decision N_NoCanadianManifestProcessingRequired_Node0_action["The system should bypass all
Canadian manifest processing and
continue with normal operations"]:::main N_NoCanadianManifestProcessingRequired_Node0 -- Yes --> N_NoCanadianManifestProcessingRequired_Node0_action N_NoCanadianManifestProcessingRequired_Node0_action --> E_NoCanadianManifestProcessingRequired S_NoCanadianManifestProcessingRequired --> N_NoCanadianManifestProcessingRequired_Node0 N_NoCanadianManifestProcessingRequired_Node0 -- No --> E_NoCanadianManifestProcessingRequired
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
US cargo has been released
WHEN:
Canadian manifest coordination is not required
THEN:
- The system should bypass all canadian manifest processing
- Continue with normal operations
β Consolidated Acceptance Criteria
- No valid Canadian record is found or the record is invalid → the system should terminate Canadian coordination processing and continue with normal operations
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CanadianRecordNotFoundorInvalid(["Start Step"])
E_CanadianRecordNotFoundorInvalid(["End Step"])
N_CanadianRecordNotFoundorInvalid_Node0{"No valid Canadian record is found
or the record is invalid"}:::decision N_CanadianRecordNotFoundorInvalid_Node0_action["The system should terminate
Canadian coordination processing and
continue with normal operations"]:::exclusion N_CanadianRecordNotFoundorInvalid_Node0 -- Yes -->|Alternative| N_CanadianRecordNotFoundorInvalid_Node0_action N_CanadianRecordNotFoundorInvalid_Node0_action --> E_CanadianRecordNotFoundorInvalid S_CanadianRecordNotFoundorInvalid --> N_CanadianRecordNotFoundorInvalid_Node0 N_CanadianRecordNotFoundorInvalid_Node0 -- No --> E_CanadianRecordNotFoundorInvalid
or the record is invalid"}:::decision N_CanadianRecordNotFoundorInvalid_Node0_action["The system should terminate
Canadian coordination processing and
continue with normal operations"]:::exclusion N_CanadianRecordNotFoundorInvalid_Node0 -- Yes -->|Alternative| N_CanadianRecordNotFoundorInvalid_Node0_action N_CanadianRecordNotFoundorInvalid_Node0_action --> E_CanadianRecordNotFoundorInvalid S_CanadianRecordNotFoundorInvalid --> N_CanadianRecordNotFoundorInvalid_Node0 N_CanadianRecordNotFoundorInvalid_Node0 -- No --> E_CanadianRecordNotFoundorInvalid
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
The system has attempted to find and validate Canadian cargo records
WHEN:
No valid Canadian record is found or the record is invalid
THEN:
- The system should terminate canadian coordination processing
- Continue with normal operations
β Consolidated Acceptance Criteria
- The system accesses the Canadian cargo database → the system should retrieve Canadian CCN records for processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AccessCanadianCargoDatabase(["Start Step"])
E_AccessCanadianCargoDatabase(["End Step"])
N_AccessCanadianCargoDatabase_Node0{"the system accesses the Canadian
cargo database"}:::decision N_AccessCanadianCargoDatabase_Node0_action["the system should retrieve Canadian
CCN records for processing"]:::main N_AccessCanadianCargoDatabase_Node0 -- Yes --> N_AccessCanadianCargoDatabase_Node0_action N_AccessCanadianCargoDatabase_Node0_action --> E_AccessCanadianCargoDatabase S_AccessCanadianCargoDatabase --> N_AccessCanadianCargoDatabase_Node0 N_AccessCanadianCargoDatabase_Node0 -- No --> E_AccessCanadianCargoDatabase
cargo database"}:::decision N_AccessCanadianCargoDatabase_Node0_action["the system should retrieve Canadian
CCN records for processing"]:::main N_AccessCanadianCargoDatabase_Node0 -- Yes --> N_AccessCanadianCargoDatabase_Node0_action N_AccessCanadianCargoDatabase_Node0_action --> E_AccessCanadianCargoDatabase S_AccessCanadianCargoDatabase --> N_AccessCanadianCargoDatabase_Node0 N_AccessCanadianCargoDatabase_Node0 -- No --> E_AccessCanadianCargoDatabase
File: GCX016.cbl
GIVEN:
matching Canadian manifests need to be found
WHEN:
the system accesses the Canadian cargo database
THEN:
the system should retrieve Canadian CCN records for processing
β Consolidated Acceptance Criteria
- The system checks for Canadian CCN records → if Canadian CCN records are found, proceed to match Canadian cargo by equipment ID, otherwise skip Canadian processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CanadianCCNRecordsFound(["Start Step"])
E_CanadianCCNRecordsFound(["End Step"])
N_CanadianCCNRecordsFound_Node0{"the system checks for Canadian CCN
records"}:::decision N_CanadianCCNRecordsFound_Node0_action["if Canadian CCN records are found,
proceed to match Canadian cargo by
equipment ID, otherwise skip
Canadian processing"]:::main N_CanadianCCNRecordsFound_Node0 -- Yes --> N_CanadianCCNRecordsFound_Node0_action N_CanadianCCNRecordsFound_Node0_action --> E_CanadianCCNRecordsFound S_CanadianCCNRecordsFound --> N_CanadianCCNRecordsFound_Node0 N_CanadianCCNRecordsFound_Node0 -- No --> E_CanadianCCNRecordsFound
records"}:::decision N_CanadianCCNRecordsFound_Node0_action["if Canadian CCN records are found,
proceed to match Canadian cargo by
equipment ID, otherwise skip
Canadian processing"]:::main N_CanadianCCNRecordsFound_Node0 -- Yes --> N_CanadianCCNRecordsFound_Node0_action N_CanadianCCNRecordsFound_Node0_action --> E_CanadianCCNRecordsFound S_CanadianCCNRecordsFound --> N_CanadianCCNRecordsFound_Node0 N_CanadianCCNRecordsFound_Node0 -- No --> E_CanadianCCNRecordsFound
File: GCX016.cbl
GIVEN:
the Canadian cargo database has been accessed
WHEN:
the system checks for Canadian CCN records
THEN:
if Canadian CCN records are found, proceed to match Canadian cargo by equipment ID, otherwise skip Canadian processing
β Consolidated Acceptance Criteria
- The system validates Canadian records → if records are valid, generate log message for Canadian CCN, otherwise exclude deleted or unusable records
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ValidCanadianRecords(["Start Step"])
E_ValidCanadianRecords(["End Step"])
N_ValidCanadianRecords_Node0{"the system validates Canadian
records"}:::decision N_ValidCanadianRecords_Node0_action["if records are valid, generate log
message for Canadian CCN, otherwise
exclude deleted or unusable records"]:::main N_ValidCanadianRecords_Node0 -- Yes --> N_ValidCanadianRecords_Node0_action N_ValidCanadianRecords_Node0_action --> E_ValidCanadianRecords S_ValidCanadianRecords --> N_ValidCanadianRecords_Node0 N_ValidCanadianRecords_Node0 -- No --> E_ValidCanadianRecords
records"}:::decision N_ValidCanadianRecords_Node0_action["if records are valid, generate log
message for Canadian CCN, otherwise
exclude deleted or unusable records"]:::main N_ValidCanadianRecords_Node0 -- Yes --> N_ValidCanadianRecords_Node0_action N_ValidCanadianRecords_Node0_action --> E_ValidCanadianRecords S_ValidCanadianRecords --> N_ValidCanadianRecords_Node0 N_ValidCanadianRecords_Node0 -- No --> E_ValidCanadianRecords
File: GCX016.cbl
GIVEN:
Canadian cargo has been matched by equipment ID
WHEN:
the system validates Canadian records
THEN:
if records are valid, generate log message for Canadian CCN, otherwise exclude deleted or unusable records
β Consolidated Acceptance Criteria
- The system encounters deleted or unusable Canadian records → the system should exclude these records and re-validate the remaining records
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExcludeDeletedUnusableCanadianRecords(["Start Step"])
E_ExcludeDeletedUnusableCanadianRecords(["End Step"])
N_ExcludeDeletedUnusableCanadianRecords_Node0{"the system encounters deleted or
unusable Canadian records"}:::decision N_ExcludeDeletedUnusableCanadianRecords_Node0_action["the system should exclude these
records and re-validate the
remaining records"]:::main N_ExcludeDeletedUnusableCanadianRecords_Node0 -- Yes --> N_ExcludeDeletedUnusableCanadianRecords_Node0_action N_ExcludeDeletedUnusableCanadianRecords_Node0_action --> E_ExcludeDeletedUnusableCanadianRecords S_ExcludeDeletedUnusableCanadianRecords --> N_ExcludeDeletedUnusableCanadianRecords_Node0 N_ExcludeDeletedUnusableCanadianRecords_Node0 -- No --> E_ExcludeDeletedUnusableCanadianRecords
unusable Canadian records"}:::decision N_ExcludeDeletedUnusableCanadianRecords_Node0_action["the system should exclude these
records and re-validate the
remaining records"]:::main N_ExcludeDeletedUnusableCanadianRecords_Node0 -- Yes --> N_ExcludeDeletedUnusableCanadianRecords_Node0_action N_ExcludeDeletedUnusableCanadianRecords_Node0_action --> E_ExcludeDeletedUnusableCanadianRecords S_ExcludeDeletedUnusableCanadianRecords --> N_ExcludeDeletedUnusableCanadianRecords_Node0 N_ExcludeDeletedUnusableCanadianRecords_Node0 -- No --> E_ExcludeDeletedUnusableCanadianRecords
File: GCX016.cbl
GIVEN:
Canadian records need validation
WHEN:
the system encounters deleted or unusable Canadian records
THEN:
- The system should exclude these records
- Re-validate the remaining records
β Consolidated Acceptance Criteria
- The system generates a log message for Canadian CCN → the system should place the log message on the Canadian system
- The system confirms Canadian manifest record availability → a log message is generated containing the Canadian CCN information for audit purposes
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GenerateLogMessageforCanadianCCN(["Start Step"])
E_GenerateLogMessageforCanadianCCN(["End Step"])
N_GenerateLogMessageforCanadianCCN_Node0{"the system generates a log message
for Canadian CCN"}:::decision N_GenerateLogMessageforCanadianCCN_Node0_action["the system should place the log
message on the Canadian system"]:::main N_GenerateLogMessageforCanadianCCN_Node0 -- Yes --> N_GenerateLogMessageforCanadianCCN_Node0_action N_GenerateLogMessageforCanadianCCN_Node0_action --> E_GenerateLogMessageforCanadianCCN S_GenerateLogMessageforCanadianCCN --> N_GenerateLogMessageforCanadianCCN_Node0 N_GenerateLogMessageforCanadianCCN_Node1{"The system confirms Canadian
manifest record availability"}:::decision N_GenerateLogMessageforCanadianCCN_Node1_action["A log message is generated
containing the Canadian CCN
information for audit purposes"]:::main N_GenerateLogMessageforCanadianCCN_Node1 -- Yes --> N_GenerateLogMessageforCanadianCCN_Node1_action N_GenerateLogMessageforCanadianCCN_Node1_action --> E_GenerateLogMessageforCanadianCCN N_GenerateLogMessageforCanadianCCN_Node0 -- No --> N_GenerateLogMessageforCanadianCCN_Node1 N_GenerateLogMessageforCanadianCCN_Node1 -- No --> E_GenerateLogMessageforCanadianCCN
for Canadian CCN"}:::decision N_GenerateLogMessageforCanadianCCN_Node0_action["the system should place the log
message on the Canadian system"]:::main N_GenerateLogMessageforCanadianCCN_Node0 -- Yes --> N_GenerateLogMessageforCanadianCCN_Node0_action N_GenerateLogMessageforCanadianCCN_Node0_action --> E_GenerateLogMessageforCanadianCCN S_GenerateLogMessageforCanadianCCN --> N_GenerateLogMessageforCanadianCCN_Node0 N_GenerateLogMessageforCanadianCCN_Node1{"The system confirms Canadian
manifest record availability"}:::decision N_GenerateLogMessageforCanadianCCN_Node1_action["A log message is generated
containing the Canadian CCN
information for audit purposes"]:::main N_GenerateLogMessageforCanadianCCN_Node1 -- Yes --> N_GenerateLogMessageforCanadianCCN_Node1_action N_GenerateLogMessageforCanadianCCN_Node1_action --> E_GenerateLogMessageforCanadianCCN N_GenerateLogMessageforCanadianCCN_Node0 -- No --> N_GenerateLogMessageforCanadianCCN_Node1 N_GenerateLogMessageforCanadianCCN_Node1 -- No --> E_GenerateLogMessageforCanadianCCN
File: GCX016.cbl
GIVEN:
valid Canadian records are identified
WHEN:
the system generates a log message for Canadian CCN
THEN:
the system should place the log message on the Canadian system
File: GCX016.cbl
GIVEN:
Canadian manifest records exist for the cargo being manually released
WHEN:
The system confirms Canadian manifest record availability
THEN:
A log message is generated containing the Canadian CCN information for audit purposes
β Consolidated Acceptance Criteria
- The system places the log message on the Canadian system → the system should create an audit trail for the cross-border release
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_PlaceLogMessageonCanadianSystem(["Start Step"])
E_PlaceLogMessageonCanadianSystem(["End Step"])
N_PlaceLogMessageonCanadianSystem_Node0{"the system places the log message
on the Canadian system"}:::decision N_PlaceLogMessageonCanadianSystem_Node0_action["the system should create an audit
trail for the cross-border release"]:::main N_PlaceLogMessageonCanadianSystem_Node0 -- Yes --> N_PlaceLogMessageonCanadianSystem_Node0_action N_PlaceLogMessageonCanadianSystem_Node0_action --> E_PlaceLogMessageonCanadianSystem S_PlaceLogMessageonCanadianSystem --> N_PlaceLogMessageonCanadianSystem_Node0 N_PlaceLogMessageonCanadianSystem_Node0 -- No --> E_PlaceLogMessageonCanadianSystem
on the Canadian system"}:::decision N_PlaceLogMessageonCanadianSystem_Node0_action["the system should create an audit
trail for the cross-border release"]:::main N_PlaceLogMessageonCanadianSystem_Node0 -- Yes --> N_PlaceLogMessageonCanadianSystem_Node0_action N_PlaceLogMessageonCanadianSystem_Node0_action --> E_PlaceLogMessageonCanadianSystem S_PlaceLogMessageonCanadianSystem --> N_PlaceLogMessageonCanadianSystem_Node0 N_PlaceLogMessageonCanadianSystem_Node0 -- No --> E_PlaceLogMessageonCanadianSystem
File: GCX016.cbl
GIVEN:
a log message has been generated for Canadian CCN
WHEN:
the system places the log message on the Canadian system
THEN:
the system should create an audit trail for the cross-border release
β Consolidated Acceptance Criteria
- The system creates an audit trail for cross-border release → the Canadian notification process should be marked as complete
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CreateAuditTrailforCrossBorderRelease(["Start Step"])
E_CreateAuditTrailforCrossBorderRelease(["End Step"])
N_CreateAuditTrailforCrossBorderRelease_Node0{"the system creates an audit trail
for cross-border release"}:::decision N_CreateAuditTrailforCrossBorderRelease_Node0_action["the Canadian notification process
should be marked as complete"]:::main N_CreateAuditTrailforCrossBorderRelease_Node0 -- Yes --> N_CreateAuditTrailforCrossBorderRelease_Node0_action N_CreateAuditTrailforCrossBorderRelease_Node0_action --> E_CreateAuditTrailforCrossBorderRelease S_CreateAuditTrailforCrossBorderRelease --> N_CreateAuditTrailforCrossBorderRelease_Node0 N_CreateAuditTrailforCrossBorderRelease_Node0 -- No --> E_CreateAuditTrailforCrossBorderRelease
for cross-border release"}:::decision N_CreateAuditTrailforCrossBorderRelease_Node0_action["the Canadian notification process
should be marked as complete"]:::main N_CreateAuditTrailforCrossBorderRelease_Node0 -- Yes --> N_CreateAuditTrailforCrossBorderRelease_Node0_action N_CreateAuditTrailforCrossBorderRelease_Node0_action --> E_CreateAuditTrailforCrossBorderRelease S_CreateAuditTrailforCrossBorderRelease --> N_CreateAuditTrailforCrossBorderRelease_Node0 N_CreateAuditTrailforCrossBorderRelease_Node0 -- No --> E_CreateAuditTrailforCrossBorderRelease
File: GCX016.cbl
GIVEN:
the log message has been placed on the Canadian system
WHEN:
the system creates an audit trail for cross-border release
THEN:
the Canadian notification process should be marked as complete
β Consolidated Acceptance Criteria
- The cargo status is set to manual release → the RT076 destination index should be cleared and the cargo should no longer be tracked for destination-specific requirements
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ManualReleaseProcessing(["Start Step"])
E_ManualReleaseProcessing(["End Step"])
N_ManualReleaseProcessing_Node0{"The cargo status is set to manual
release"}:::decision N_ManualReleaseProcessing_Node0_action["The RT076 destination index should
be cleared and the cargo should no
longer be tracked for
destination-specific requirements"]:::main N_ManualReleaseProcessing_Node0 -- Yes --> N_ManualReleaseProcessing_Node0_action N_ManualReleaseProcessing_Node0_action --> E_ManualReleaseProcessing S_ManualReleaseProcessing --> N_ManualReleaseProcessing_Node0 N_ManualReleaseProcessing_Node0 -- No --> E_ManualReleaseProcessing
release"}:::decision N_ManualReleaseProcessing_Node0_action["The RT076 destination index should
be cleared and the cargo should no
longer be tracked for
destination-specific requirements"]:::main N_ManualReleaseProcessing_Node0 -- Yes --> N_ManualReleaseProcessing_Node0_action N_ManualReleaseProcessing_Node0_action --> E_ManualReleaseProcessing S_ManualReleaseProcessing --> N_ManualReleaseProcessing_Node0 N_ManualReleaseProcessing_Node0 -- No --> E_ManualReleaseProcessing
File: GCX016.cbl
GIVEN:
A cargo record exists with manual release status (MRL) and has an existing destination index
WHEN:
The cargo status is set to manual release
THEN:
- The rt076 destination index should be cleared
- The cargo should no longer be tracked for destination-specific requirements
β Consolidated Acceptance Criteria
- The cargo status is set to FDA hold at destination → the RT076 destination index should be set with FDA hold status and destination location information
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_FDAHoldatDestination(["Start Step"])
E_FDAHoldatDestination(["End Step"])
N_FDAHoldatDestination_Node0{"The cargo status is set to FDA hold
at destination"}:::decision N_FDAHoldatDestination_Node0_action["The RT076 destination index should
be set with FDA hold status and
destination location information"]:::main N_FDAHoldatDestination_Node0 -- Yes --> N_FDAHoldatDestination_Node0_action N_FDAHoldatDestination_Node0_action --> E_FDAHoldatDestination S_FDAHoldatDestination --> N_FDAHoldatDestination_Node0 N_FDAHoldatDestination_Node0 -- No --> E_FDAHoldatDestination
at destination"}:::decision N_FDAHoldatDestination_Node0_action["The RT076 destination index should
be set with FDA hold status and
destination location information"]:::main N_FDAHoldatDestination_Node0 -- Yes --> N_FDAHoldatDestination_Node0_action N_FDAHoldatDestination_Node0_action --> E_FDAHoldatDestination S_FDAHoldatDestination --> N_FDAHoldatDestination_Node0 N_FDAHoldatDestination_Node0 -- No --> E_FDAHoldatDestination
File: GCX016.cbl
GIVEN:
A cargo record exists and FDA hold disposition code (A3) is applied at destination location
WHEN:
The cargo status is set to FDA hold at destination
THEN:
- The rt076 destination index should be set with fda hold status
- Destination location information
β Consolidated Acceptance Criteria
- The cargo status is set to full release → the RT076 destination index should be cleared and destination tracking requirements should be removed
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_FullReleaseProcessing(["Start Step"])
E_FullReleaseProcessing(["End Step"])
N_FullReleaseProcessing_Node0{"The cargo status is set to full
release"}:::decision N_FullReleaseProcessing_Node0_action["The RT076 destination index should
be cleared and destination tracking
requirements should be removed"]:::main N_FullReleaseProcessing_Node0 -- Yes --> N_FullReleaseProcessing_Node0_action N_FullReleaseProcessing_Node0_action --> E_FullReleaseProcessing S_FullReleaseProcessing --> N_FullReleaseProcessing_Node0 N_FullReleaseProcessing_Node0 -- No --> E_FullReleaseProcessing
release"}:::decision N_FullReleaseProcessing_Node0_action["The RT076 destination index should
be cleared and destination tracking
requirements should be removed"]:::main N_FullReleaseProcessing_Node0 -- Yes --> N_FullReleaseProcessing_Node0_action N_FullReleaseProcessing_Node0_action --> E_FullReleaseProcessing S_FullReleaseProcessing --> N_FullReleaseProcessing_Node0 N_FullReleaseProcessing_Node0 -- No --> E_FullReleaseProcessing
File: GCX016.cbl
GIVEN:
A cargo record exists with full release status where released quantity equals or exceeds total quantity
WHEN:
The cargo status is set to full release
THEN:
- The rt076 destination index should be cleared
- Destination tracking requirements should be removed
β Consolidated Acceptance Criteria
- The cargo status is set to arrival at destination → the RT076 destination index should be set with arrival date and destination location information
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ArrivalStatusProcessing(["Start Step"])
E_ArrivalStatusProcessing(["End Step"])
N_ArrivalStatusProcessing_Node0{"The cargo status is set to arrival
at destination"}:::decision N_ArrivalStatusProcessing_Node0_action["The RT076 destination index should
be set with arrival date and
destination location information"]:::main N_ArrivalStatusProcessing_Node0 -- Yes --> N_ArrivalStatusProcessing_Node0_action N_ArrivalStatusProcessing_Node0_action --> E_ArrivalStatusProcessing S_ArrivalStatusProcessing --> N_ArrivalStatusProcessing_Node0 N_ArrivalStatusProcessing_Node0 -- No --> E_ArrivalStatusProcessing
at destination"}:::decision N_ArrivalStatusProcessing_Node0_action["The RT076 destination index should
be set with arrival date and
destination location information"]:::main N_ArrivalStatusProcessing_Node0 -- Yes --> N_ArrivalStatusProcessing_Node0_action N_ArrivalStatusProcessing_Node0_action --> E_ArrivalStatusProcessing S_ArrivalStatusProcessing --> N_ArrivalStatusProcessing_Node0 N_ArrivalStatusProcessing_Node0 -- No --> E_ArrivalStatusProcessing
File: GCX016.cbl
GIVEN:
A cargo record exists and arrival status is being processed with valid arrival date and destination location
WHEN:
The cargo status is set to arrival at destination
THEN:
- The rt076 destination index should be set with arrival date
- Destination location information
β Consolidated Acceptance Criteria
- The cargo status is set to export → the RT076 destination index should be cleared and domestic destination tracking should be removed
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExportStatusProcessing(["Start Step"])
E_ExportStatusProcessing(["End Step"])
N_ExportStatusProcessing_Node0{"The cargo status is set to export"}:::decision
N_ExportStatusProcessing_Node0_action["The RT076 destination index should
be cleared and domestic destination
tracking should be removed"]:::main N_ExportStatusProcessing_Node0 -- Yes --> N_ExportStatusProcessing_Node0_action N_ExportStatusProcessing_Node0_action --> E_ExportStatusProcessing S_ExportStatusProcessing --> N_ExportStatusProcessing_Node0 N_ExportStatusProcessing_Node0 -- No --> E_ExportStatusProcessing
be cleared and domestic destination
tracking should be removed"]:::main N_ExportStatusProcessing_Node0 -- Yes --> N_ExportStatusProcessing_Node0_action N_ExportStatusProcessing_Node0_action --> E_ExportStatusProcessing S_ExportStatusProcessing --> N_ExportStatusProcessing_Node0 N_ExportStatusProcessing_Node0 -- No --> E_ExportStatusProcessing
File: GCX016.cbl
GIVEN:
A cargo record exists and export status is being applied
WHEN:
The cargo status is set to export
THEN:
- The rt076 destination index should be cleared
- Domestic destination tracking should be removed
β Consolidated Acceptance Criteria
- The cargo arrival status is cancelled → the previous bond date should be restored and the RT076 destination index should be re-established with the restored bond date
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ArrivalCancellation(["Start Step"])
E_ArrivalCancellation(["End Step"])
N_ArrivalCancellation_Node0{"The cargo arrival status is
cancelled"}:::decision N_ArrivalCancellation_Node0_action["The previous bond date should be
restored and the RT076 destination
index should be re-established with
the restored bond date"]:::main N_ArrivalCancellation_Node0 -- Yes --> N_ArrivalCancellation_Node0_action N_ArrivalCancellation_Node0_action --> E_ArrivalCancellation S_ArrivalCancellation --> N_ArrivalCancellation_Node0 N_ArrivalCancellation_Node0 -- No --> E_ArrivalCancellation
cancelled"}:::decision N_ArrivalCancellation_Node0_action["The previous bond date should be
restored and the RT076 destination
index should be re-established with
the restored bond date"]:::main N_ArrivalCancellation_Node0 -- Yes --> N_ArrivalCancellation_Node0_action N_ArrivalCancellation_Node0_action --> E_ArrivalCancellation S_ArrivalCancellation --> N_ArrivalCancellation_Node0 N_ArrivalCancellation_Node0 -- No --> E_ArrivalCancellation
File: GCX016.cbl
GIVEN:
A cargo record exists with cancelled arrival status and has previous bond date information available
WHEN:
The cargo arrival status is cancelled
THEN:
- The previous bond date should be restored
- The rt076 destination index should be re-established with the restored bond date
β Consolidated Acceptance Criteria
- The cargo export status is cancelled → the RT076 destination index should be re-established with bond date information to resume domestic destination tracking
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExportCancellation(["Start Step"])
E_ExportCancellation(["End Step"])
N_ExportCancellation_Node0{"The cargo export status is
cancelled"}:::decision N_ExportCancellation_Node0_action["The RT076 destination index should
be re-established with bond date
information to resume domestic
destination tracking"]:::main N_ExportCancellation_Node0 -- Yes --> N_ExportCancellation_Node0_action N_ExportCancellation_Node0_action --> E_ExportCancellation S_ExportCancellation --> N_ExportCancellation_Node0 N_ExportCancellation_Node0 -- No --> E_ExportCancellation
cancelled"}:::decision N_ExportCancellation_Node0_action["The RT076 destination index should
be re-established with bond date
information to resume domestic
destination tracking"]:::main N_ExportCancellation_Node0 -- Yes --> N_ExportCancellation_Node0_action N_ExportCancellation_Node0_action --> E_ExportCancellation S_ExportCancellation --> N_ExportCancellation_Node0 N_ExportCancellation_Node0 -- No --> E_ExportCancellation
File: GCX016.cbl
GIVEN:
A cargo record exists with cancelled export status and has bond date information available
WHEN:
The cargo export status is cancelled
THEN:
The RT076 destination index should be re-established with bond date information to resume domestic destination tracking
β Consolidated Acceptance Criteria
- Bond date calculation is initiated for cargo processing → the system should convert the calendar date to Julian date format for bond tracking and cargo age calculation purposes
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CalculateJulianDateforBondStart(["Start Step"])
E_CalculateJulianDateforBondStart(["End Step"])
N_CalculateJulianDateforBondStart_Node0{"Bond date calculation is initiated
for cargo processing"}:::decision N_CalculateJulianDateforBondStart_Node0_action["The system should convert the
calendar date to Julian date format
for bond tracking and cargo age
calculation purposes"]:::main N_CalculateJulianDateforBondStart_Node0 -- Yes --> N_CalculateJulianDateforBondStart_Node0_action N_CalculateJulianDateforBondStart_Node0_action --> E_CalculateJulianDateforBondStart S_CalculateJulianDateforBondStart --> N_CalculateJulianDateforBondStart_Node0 N_CalculateJulianDateforBondStart_Node0 -- No --> E_CalculateJulianDateforBondStart
for cargo processing"}:::decision N_CalculateJulianDateforBondStart_Node0_action["The system should convert the
calendar date to Julian date format
for bond tracking and cargo age
calculation purposes"]:::main N_CalculateJulianDateforBondStart_Node0 -- Yes --> N_CalculateJulianDateforBondStart_Node0_action N_CalculateJulianDateforBondStart_Node0_action --> E_CalculateJulianDateforBondStart S_CalculateJulianDateforBondStart --> N_CalculateJulianDateforBondStart_Node0 N_CalculateJulianDateforBondStart_Node0 -- No --> E_CalculateJulianDateforBondStart
File: GCX016.cbl
GIVEN:
A cargo record requires bond date processing with valid calendar date information
WHEN:
Bond date calculation is initiated for cargo processing
THEN:
- The system should convert the calendar date to julian date format for bond tracking
- Cargo age calculation purposes
β Consolidated Acceptance Criteria
- Destination index updates are processed → the RT076 destination index record should be updated with current status, dates, and location information reflecting the cargo's destination tracking requirements
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UpdateRT076DestinationIndex(["Start Step"])
E_UpdateRT076DestinationIndex(["End Step"])
N_UpdateRT076DestinationIndex_Node0{"Destination index updates are
processed"}:::decision N_UpdateRT076DestinationIndex_Node0_action["The RT076 destination index record
should be updated with current
status, dates, and location
information reflecting the cargo s
destination tracking requirements"]:::main N_UpdateRT076DestinationIndex_Node0 -- Yes --> N_UpdateRT076DestinationIndex_Node0_action N_UpdateRT076DestinationIndex_Node0_action --> E_UpdateRT076DestinationIndex S_UpdateRT076DestinationIndex --> N_UpdateRT076DestinationIndex_Node0 N_UpdateRT076DestinationIndex_Node0 -- No --> E_UpdateRT076DestinationIndex
processed"}:::decision N_UpdateRT076DestinationIndex_Node0_action["The RT076 destination index record
should be updated with current
status, dates, and location
information reflecting the cargo s
destination tracking requirements"]:::main N_UpdateRT076DestinationIndex_Node0 -- Yes --> N_UpdateRT076DestinationIndex_Node0_action N_UpdateRT076DestinationIndex_Node0_action --> E_UpdateRT076DestinationIndex S_UpdateRT076DestinationIndex --> N_UpdateRT076DestinationIndex_Node0 N_UpdateRT076DestinationIndex_Node0 -- No --> E_UpdateRT076DestinationIndex
File: GCX016.cbl
GIVEN:
A cargo record has undergone status changes that affect destination tracking requirements
WHEN:
Destination index updates are processed
THEN:
The RT076 destination index record should be updated with current status, dates, and location information reflecting the cargo's destination tracking requirements
β Consolidated Acceptance Criteria
- The system prepares to update cargo records in the database → the status array data is moved to the appropriate database segment structure
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MoveS09AArrayDatatoDatabaseSegments(["Start Step"])
E_MoveS09AArrayDatatoDatabaseSegments(["End Step"])
N_MoveS09AArrayDatatoDatabaseSegments_Node0{"The system prepares to update cargo
records in the database"}:::decision N_MoveS09AArrayDatatoDatabaseSegments_Node0_action["The status array data is moved to
the appropriate database segment
structure"]:::main N_MoveS09AArrayDatatoDatabaseSegments_Node0 -- Yes --> N_MoveS09AArrayDatatoDatabaseSegments_Node0_action N_MoveS09AArrayDatatoDatabaseSegments_Node0_action --> E_MoveS09AArrayDatatoDatabaseSegments S_MoveS09AArrayDatatoDatabaseSegments --> N_MoveS09AArrayDatatoDatabaseSegments_Node0 N_MoveS09AArrayDatatoDatabaseSegments_Node0 -- No --> E_MoveS09AArrayDatatoDatabaseSegments
records in the database"}:::decision N_MoveS09AArrayDatatoDatabaseSegments_Node0_action["The status array data is moved to
the appropriate database segment
structure"]:::main N_MoveS09AArrayDatatoDatabaseSegments_Node0 -- Yes --> N_MoveS09AArrayDatatoDatabaseSegments_Node0_action N_MoveS09AArrayDatatoDatabaseSegments_Node0_action --> E_MoveS09AArrayDatatoDatabaseSegments S_MoveS09AArrayDatatoDatabaseSegments --> N_MoveS09AArrayDatatoDatabaseSegments_Node0 N_MoveS09AArrayDatatoDatabaseSegments_Node0 -- No --> E_MoveS09AArrayDatatoDatabaseSegments
File: GCX016.cbl
GIVEN:
Status array has been updated with new cargo status information
WHEN:
The system prepares to update cargo records in the database
THEN:
The status array data is moved to the appropriate database segment structure
β Consolidated Acceptance Criteria
- The system updates the cargo root record → core cargo fields including status description, processing timestamps, and control information are updated
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UpdateCargoRootRecordFields(["Start Step"])
E_UpdateCargoRootRecordFields(["End Step"])
N_UpdateCargoRootRecordFields_Node0{"The system updates the cargo root
record"}:::decision N_UpdateCargoRootRecordFields_Node0_action["Core cargo fields including status
description, processing timestamps,
and control information are updated"]:::main N_UpdateCargoRootRecordFields_Node0 -- Yes --> N_UpdateCargoRootRecordFields_Node0_action N_UpdateCargoRootRecordFields_Node0_action --> E_UpdateCargoRootRecordFields S_UpdateCargoRootRecordFields --> N_UpdateCargoRootRecordFields_Node0 N_UpdateCargoRootRecordFields_Node0 -- No --> E_UpdateCargoRootRecordFields
record"}:::decision N_UpdateCargoRootRecordFields_Node0_action["Core cargo fields including status
description, processing timestamps,
and control information are updated"]:::main N_UpdateCargoRootRecordFields_Node0 -- Yes --> N_UpdateCargoRootRecordFields_Node0_action N_UpdateCargoRootRecordFields_Node0_action --> E_UpdateCargoRootRecordFields S_UpdateCargoRootRecordFields --> N_UpdateCargoRootRecordFields_Node0 N_UpdateCargoRootRecordFields_Node0 -- No --> E_UpdateCargoRootRecordFields
File: GCX016.cbl
GIVEN:
Cargo status has been determined and validated
WHEN:
The system updates the cargo root record
THEN:
Core cargo fields including status description, processing timestamps, and control information are updated
β Consolidated Acceptance Criteria
- The system updates cargo status information → current status codes, hold flags, release flags, and processing indicators are applied to the cargo record
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UpdateStatusInformation(["Start Step"])
E_UpdateStatusInformation(["End Step"])
N_UpdateStatusInformation_Node0{"The system updates cargo status
information"}:::decision N_UpdateStatusInformation_Node0_action["Current status codes, hold flags,
release flags, and processing
indicators are applied to the cargo
record"]:::main N_UpdateStatusInformation_Node0 -- Yes --> N_UpdateStatusInformation_Node0_action N_UpdateStatusInformation_Node0_action --> E_UpdateStatusInformation S_UpdateStatusInformation --> N_UpdateStatusInformation_Node0 N_UpdateStatusInformation_Node0 -- No --> E_UpdateStatusInformation
information"}:::decision N_UpdateStatusInformation_Node0_action["Current status codes, hold flags,
release flags, and processing
indicators are applied to the cargo
record"]:::main N_UpdateStatusInformation_Node0 -- Yes --> N_UpdateStatusInformation_Node0_action N_UpdateStatusInformation_Node0_action --> E_UpdateStatusInformation S_UpdateStatusInformation --> N_UpdateStatusInformation_Node0 N_UpdateStatusInformation_Node0 -- No --> E_UpdateStatusInformation
File: GCX016.cbl
GIVEN:
Disposition codes have been processed and status flags determined
WHEN:
The system updates cargo status information
THEN:
Current status codes, hold flags, release flags, and processing indicators are applied to the cargo record
β Consolidated Acceptance Criteria
- The system updates cargo quantity information → total quantities, released quantities, piece counts, and quantity-related flags are updated in the cargo record
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UpdateQuantityInformation(["Start Step"])
E_UpdateQuantityInformation(["End Step"])
N_UpdateQuantityInformation_Node0{"The system updates cargo quantity
information"}:::decision N_UpdateQuantityInformation_Node0_action["Total quantities, released
quantities, piece counts, and
quantity-related flags are updated
in the cargo record"]:::main N_UpdateQuantityInformation_Node0 -- Yes --> N_UpdateQuantityInformation_Node0_action N_UpdateQuantityInformation_Node0_action --> E_UpdateQuantityInformation S_UpdateQuantityInformation --> N_UpdateQuantityInformation_Node0 N_UpdateQuantityInformation_Node0 -- No --> E_UpdateQuantityInformation
information"}:::decision N_UpdateQuantityInformation_Node0_action["Total quantities, released
quantities, piece counts, and
quantity-related flags are updated
in the cargo record"]:::main N_UpdateQuantityInformation_Node0 -- Yes --> N_UpdateQuantityInformation_Node0_action N_UpdateQuantityInformation_Node0_action --> E_UpdateQuantityInformation S_UpdateQuantityInformation --> N_UpdateQuantityInformation_Node0 N_UpdateQuantityInformation_Node0 -- No --> E_UpdateQuantityInformation
File: GCX016.cbl
GIVEN:
Quantity changes have been calculated from disposition code processing
WHEN:
The system updates cargo quantity information
THEN:
Total quantities, released quantities, piece counts, and quantity-related flags are updated in the cargo record
β Consolidated Acceptance Criteria
- The system updates hold and release flags → hold flags, release flags, border hold indicators, destination hold indicators, and partial release flags are set correctly
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UpdateHoldReleaseFlags(["Start Step"])
E_UpdateHoldReleaseFlags(["End Step"])
N_UpdateHoldReleaseFlags_Node0{"The system updates hold and release
flags"}:::decision N_UpdateHoldReleaseFlags_Node0_action["Hold flags, release flags, border
hold indicators, destination hold
indicators, and partial release
flags are set correctly"]:::main N_UpdateHoldReleaseFlags_Node0 -- Yes --> N_UpdateHoldReleaseFlags_Node0_action N_UpdateHoldReleaseFlags_Node0_action --> E_UpdateHoldReleaseFlags S_UpdateHoldReleaseFlags --> N_UpdateHoldReleaseFlags_Node0 N_UpdateHoldReleaseFlags_Node0 -- No --> E_UpdateHoldReleaseFlags
flags"}:::decision N_UpdateHoldReleaseFlags_Node0_action["Hold flags, release flags, border
hold indicators, destination hold
indicators, and partial release
flags are set correctly"]:::main N_UpdateHoldReleaseFlags_Node0 -- Yes --> N_UpdateHoldReleaseFlags_Node0_action N_UpdateHoldReleaseFlags_Node0_action --> E_UpdateHoldReleaseFlags S_UpdateHoldReleaseFlags --> N_UpdateHoldReleaseFlags_Node0 N_UpdateHoldReleaseFlags_Node0 -- No --> E_UpdateHoldReleaseFlags
File: GCX016.cbl
GIVEN:
Cargo status has been determined as held, released, or partially released
WHEN:
- The system updates hold
- Release flags
THEN:
Hold flags, release flags, border hold indicators, destination hold indicators, and partial release flags are set correctly
β Consolidated Acceptance Criteria
- The system updates arrival and export status → arrival flags, export flags, arrival dates, export dates, and location-specific indicators are updated
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UpdateArrivalExportStatus(["Start Step"])
E_UpdateArrivalExportStatus(["End Step"])
N_UpdateArrivalExportStatus_Node0{"The system updates arrival and
export status"}:::decision N_UpdateArrivalExportStatus_Node0_action["Arrival flags, export flags,
arrival dates, export dates, and
location-specific indicators are
updated"]:::main N_UpdateArrivalExportStatus_Node0 -- Yes --> N_UpdateArrivalExportStatus_Node0_action N_UpdateArrivalExportStatus_Node0_action --> E_UpdateArrivalExportStatus S_UpdateArrivalExportStatus --> N_UpdateArrivalExportStatus_Node0 N_UpdateArrivalExportStatus_Node0 -- No --> E_UpdateArrivalExportStatus
export status"}:::decision N_UpdateArrivalExportStatus_Node0_action["Arrival flags, export flags,
arrival dates, export dates, and
location-specific indicators are
updated"]:::main N_UpdateArrivalExportStatus_Node0 -- Yes --> N_UpdateArrivalExportStatus_Node0_action N_UpdateArrivalExportStatus_Node0_action --> E_UpdateArrivalExportStatus S_UpdateArrivalExportStatus --> N_UpdateArrivalExportStatus_Node0 N_UpdateArrivalExportStatus_Node0 -- No --> E_UpdateArrivalExportStatus
File: GCX016.cbl
GIVEN:
Arrival or export events have been processed for the cargo
WHEN:
- The system updates arrival
- Export status
THEN:
Arrival flags, export flags, arrival dates, export dates, and location-specific indicators are updated
β Consolidated Acceptance Criteria
- The system updates bond information in the cargo record → bond numbers, entry numbers, in-bond control numbers, and bond-related flags are updated
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UpdateBondInformation(["Start Step"])
E_UpdateBondInformation(["End Step"])
N_UpdateBondInformation_Node0{"The system updates bond information
in the cargo record"}:::decision N_UpdateBondInformation_Node0_action["Bond numbers, entry numbers,
in-bond control numbers, and
bond-related flags are updated"]:::main N_UpdateBondInformation_Node0 -- Yes --> N_UpdateBondInformation_Node0_action N_UpdateBondInformation_Node0_action --> E_UpdateBondInformation S_UpdateBondInformation --> N_UpdateBondInformation_Node0 N_UpdateBondInformation_Node0 -- No --> E_UpdateBondInformation
in the cargo record"}:::decision N_UpdateBondInformation_Node0_action["Bond numbers, entry numbers,
in-bond control numbers, and
bond-related flags are updated"]:::main N_UpdateBondInformation_Node0 -- Yes --> N_UpdateBondInformation_Node0_action N_UpdateBondInformation_Node0_action --> E_UpdateBondInformation S_UpdateBondInformation --> N_UpdateBondInformation_Node0 N_UpdateBondInformation_Node0 -- No --> E_UpdateBondInformation
File: GCX016.cbl
GIVEN:
Bond processing has been completed and bond information validated
WHEN:
The system updates bond information in the cargo record
THEN:
Bond numbers, entry numbers, in-bond control numbers, and bond-related flags are updated
β Consolidated Acceptance Criteria
- The system checks the update operation result → if the update was successful, processing continues; if the update failed, error handling is initiated
- Checking the database update result → if the update was successful, proceed to logging, otherwise handle the database error
- The system checks if the database update was successful → if successful, proceed to log changes, otherwise handle database error and retry operation
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_DatabaseUpdateSuccessful(["Start Step"])
E_DatabaseUpdateSuccessful(["End Step"])
N_DatabaseUpdateSuccessful_Node0{"The system checks the update
operation result"}:::decision N_DatabaseUpdateSuccessful_Node0_action["If the update was successful,
processing continues if the update
failed, error handling is initiated"]:::main N_DatabaseUpdateSuccessful_Node0 -- Yes --> N_DatabaseUpdateSuccessful_Node0_action N_DatabaseUpdateSuccessful_Node0_action --> E_DatabaseUpdateSuccessful S_DatabaseUpdateSuccessful --> N_DatabaseUpdateSuccessful_Node0 N_DatabaseUpdateSuccessful_Node1{"Checking the database update result"}:::decision N_DatabaseUpdateSuccessful_Node1_action["If the update was successful,
proceed to logging, otherwise handle
the database error"]:::main N_DatabaseUpdateSuccessful_Node1 -- Yes --> N_DatabaseUpdateSuccessful_Node1_action N_DatabaseUpdateSuccessful_Node1_action --> E_DatabaseUpdateSuccessful N_DatabaseUpdateSuccessful_Node0 -- No --> N_DatabaseUpdateSuccessful_Node1 N_DatabaseUpdateSuccessful_Node2{"The system checks if the database
update was successful"}:::decision N_DatabaseUpdateSuccessful_Node2_action["If successful, proceed to log
changes, otherwise handle database
error and retry operation"]:::main N_DatabaseUpdateSuccessful_Node2 -- Yes --> N_DatabaseUpdateSuccessful_Node2_action N_DatabaseUpdateSuccessful_Node2_action --> E_DatabaseUpdateSuccessful N_DatabaseUpdateSuccessful_Node1 -- No --> N_DatabaseUpdateSuccessful_Node2 N_DatabaseUpdateSuccessful_Node2 -- No --> E_DatabaseUpdateSuccessful
operation result"}:::decision N_DatabaseUpdateSuccessful_Node0_action["If the update was successful,
processing continues if the update
failed, error handling is initiated"]:::main N_DatabaseUpdateSuccessful_Node0 -- Yes --> N_DatabaseUpdateSuccessful_Node0_action N_DatabaseUpdateSuccessful_Node0_action --> E_DatabaseUpdateSuccessful S_DatabaseUpdateSuccessful --> N_DatabaseUpdateSuccessful_Node0 N_DatabaseUpdateSuccessful_Node1{"Checking the database update result"}:::decision N_DatabaseUpdateSuccessful_Node1_action["If the update was successful,
proceed to logging, otherwise handle
the database error"]:::main N_DatabaseUpdateSuccessful_Node1 -- Yes --> N_DatabaseUpdateSuccessful_Node1_action N_DatabaseUpdateSuccessful_Node1_action --> E_DatabaseUpdateSuccessful N_DatabaseUpdateSuccessful_Node0 -- No --> N_DatabaseUpdateSuccessful_Node1 N_DatabaseUpdateSuccessful_Node2{"The system checks if the database
update was successful"}:::decision N_DatabaseUpdateSuccessful_Node2_action["If successful, proceed to log
changes, otherwise handle database
error and retry operation"]:::main N_DatabaseUpdateSuccessful_Node2 -- Yes --> N_DatabaseUpdateSuccessful_Node2_action N_DatabaseUpdateSuccessful_Node2_action --> E_DatabaseUpdateSuccessful N_DatabaseUpdateSuccessful_Node1 -- No --> N_DatabaseUpdateSuccessful_Node2 N_DatabaseUpdateSuccessful_Node2 -- No --> E_DatabaseUpdateSuccessful
File: GCX016.cbl
GIVEN:
A database update operation has been attempted
WHEN:
The system checks the update operation result
THEN:
If the update was successful, processing continues; if the update failed, error handling is initiated
File: GCX016.cbl
GIVEN:
A cargo record replacement operation has been attempted
WHEN:
Checking the database update result
THEN:
If the update was successful, proceed to logging, otherwise handle the database error
File: GCX016.cbl
GIVEN:
Cargo record replacement has been attempted
WHEN:
The system checks if the database update was successful
THEN:
- If successful, proceed to log changes, otherwise handle database error
- Retry operation
β Consolidated Acceptance Criteria
- The system logs the successful update → update confirmation information including cargo identifier, timestamp, and processing details are recorded
- The system processes the successful operation → success information is logged for audit trail and processing continues
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogSuccessfulUpdate(["Start Step"])
E_LogSuccessfulUpdate(["End Step"])
N_LogSuccessfulUpdate_Node0{"The system logs the successful
update"}:::decision N_LogSuccessfulUpdate_Node0_action["Update confirmation information
including cargo identifier,
timestamp, and processing details
are recorded"]:::main N_LogSuccessfulUpdate_Node0 -- Yes --> N_LogSuccessfulUpdate_Node0_action N_LogSuccessfulUpdate_Node0_action --> E_LogSuccessfulUpdate S_LogSuccessfulUpdate --> N_LogSuccessfulUpdate_Node0 N_LogSuccessfulUpdate_Node1{"The system processes the successful
operation"}:::decision N_LogSuccessfulUpdate_Node1_action["Success information is logged for
audit trail and processing continues"]:::main N_LogSuccessfulUpdate_Node1 -- Yes --> N_LogSuccessfulUpdate_Node1_action N_LogSuccessfulUpdate_Node1_action --> E_LogSuccessfulUpdate N_LogSuccessfulUpdate_Node0 -- No --> N_LogSuccessfulUpdate_Node1 N_LogSuccessfulUpdate_Node1 -- No --> E_LogSuccessfulUpdate
update"}:::decision N_LogSuccessfulUpdate_Node0_action["Update confirmation information
including cargo identifier,
timestamp, and processing details
are recorded"]:::main N_LogSuccessfulUpdate_Node0 -- Yes --> N_LogSuccessfulUpdate_Node0_action N_LogSuccessfulUpdate_Node0_action --> E_LogSuccessfulUpdate S_LogSuccessfulUpdate --> N_LogSuccessfulUpdate_Node0 N_LogSuccessfulUpdate_Node1{"The system processes the successful
operation"}:::decision N_LogSuccessfulUpdate_Node1_action["Success information is logged for
audit trail and processing continues"]:::main N_LogSuccessfulUpdate_Node1 -- Yes --> N_LogSuccessfulUpdate_Node1_action N_LogSuccessfulUpdate_Node1_action --> E_LogSuccessfulUpdate N_LogSuccessfulUpdate_Node0 -- No --> N_LogSuccessfulUpdate_Node1 N_LogSuccessfulUpdate_Node1 -- No --> E_LogSuccessfulUpdate
File: GCX016.cbl
GIVEN:
A cargo record has been successfully updated in the database
WHEN:
The system logs the successful update
THEN:
Update confirmation information including cargo identifier, timestamp, and processing details are recorded
File: GCX016.cbl
GIVEN:
U1 segment database operation completed successfully
WHEN:
The system processes the successful operation
THEN:
- Success information is logged for audit trail
- Processing continues
β Consolidated Acceptance Criteria
- The system handles the database error → error information is logged, appropriate error messages are generated, and error recovery procedures are initiated
- The system handles the database error → the system logs error details and returns error status
- Processing the database error → execute appropriate error handling procedures and complete the operation with error status
- The system handles the database error → log error details, determine if retry is appropriate, and implement error recovery procedures
- The system encounters the error condition → the database error is handled according to error handling procedures
- The system detects the operation failure → error handling procedures are invoked and processing terminates with error status
- The system encounters a database error → the system handles the database error through appropriate error recovery procedures
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_HandleDatabaseError(["Start Step"])
E_HandleDatabaseError(["End Step"])
N_HandleDatabaseError_Node0{"The system handles the database
error"}:::decision N_HandleDatabaseError_Node0_action["Error information is logged,
appropriate error messages are
generated, and error recovery
procedures are initiated"]:::exclusion N_HandleDatabaseError_Node0 -- Yes -->|Alternative| N_HandleDatabaseError_Node0_action N_HandleDatabaseError_Node0_action --> E_HandleDatabaseError S_HandleDatabaseError --> N_HandleDatabaseError_Node0 N_HandleDatabaseError_Node1{"The system handles the database
error"}:::decision N_HandleDatabaseError_Node1_action["The system logs error details and
returns error status"]:::exclusion N_HandleDatabaseError_Node1 -- Yes -->|Alternative| N_HandleDatabaseError_Node1_action N_HandleDatabaseError_Node1_action --> E_HandleDatabaseError N_HandleDatabaseError_Node0 -- No --> N_HandleDatabaseError_Node1 N_HandleDatabaseError_Node2{"Processing the database error"}:::decision N_HandleDatabaseError_Node2_action["Execute appropriate error handling
procedures and complete the
operation with error status"]:::exclusion N_HandleDatabaseError_Node2 -- Yes -->|Alternative| N_HandleDatabaseError_Node2_action N_HandleDatabaseError_Node2_action --> E_HandleDatabaseError N_HandleDatabaseError_Node1 -- No --> N_HandleDatabaseError_Node2 N_HandleDatabaseError_Node3{"The system handles the database
error"}:::decision N_HandleDatabaseError_Node3_action["Log error details, determine if
retry is appropriate, and implement
error recovery procedures"]:::exclusion N_HandleDatabaseError_Node3 -- Yes -->|Alternative| N_HandleDatabaseError_Node3_action N_HandleDatabaseError_Node3_action --> E_HandleDatabaseError N_HandleDatabaseError_Node2 -- No --> N_HandleDatabaseError_Node3 N_HandleDatabaseError_Node4{"The system encounters the error
condition"}:::decision N_HandleDatabaseError_Node4_action["The database error is handled
according to error handling
procedures"]:::exclusion N_HandleDatabaseError_Node4 -- Yes -->|Alternative| N_HandleDatabaseError_Node4_action N_HandleDatabaseError_Node4_action --> E_HandleDatabaseError N_HandleDatabaseError_Node3 -- No --> N_HandleDatabaseError_Node4 N_HandleDatabaseError_Node5{"The system detects the operation
failure"}:::decision N_HandleDatabaseError_Node5_action["Error handling procedures are
invoked and processing terminates
with error status"]:::main N_HandleDatabaseError_Node5 -- Yes --> N_HandleDatabaseError_Node5_action N_HandleDatabaseError_Node5_action --> E_HandleDatabaseError N_HandleDatabaseError_Node4 -- No --> N_HandleDatabaseError_Node5 N_HandleDatabaseError_Node6{"The system encounters a database
error"}:::decision N_HandleDatabaseError_Node6_action["The system handles the database
error through appropriate error
recovery procedures"]:::exclusion N_HandleDatabaseError_Node6 -- Yes -->|Alternative| N_HandleDatabaseError_Node6_action N_HandleDatabaseError_Node6_action --> E_HandleDatabaseError N_HandleDatabaseError_Node5 -- No --> N_HandleDatabaseError_Node6 N_HandleDatabaseError_Node6 -- No --> E_HandleDatabaseError
error"}:::decision N_HandleDatabaseError_Node0_action["Error information is logged,
appropriate error messages are
generated, and error recovery
procedures are initiated"]:::exclusion N_HandleDatabaseError_Node0 -- Yes -->|Alternative| N_HandleDatabaseError_Node0_action N_HandleDatabaseError_Node0_action --> E_HandleDatabaseError S_HandleDatabaseError --> N_HandleDatabaseError_Node0 N_HandleDatabaseError_Node1{"The system handles the database
error"}:::decision N_HandleDatabaseError_Node1_action["The system logs error details and
returns error status"]:::exclusion N_HandleDatabaseError_Node1 -- Yes -->|Alternative| N_HandleDatabaseError_Node1_action N_HandleDatabaseError_Node1_action --> E_HandleDatabaseError N_HandleDatabaseError_Node0 -- No --> N_HandleDatabaseError_Node1 N_HandleDatabaseError_Node2{"Processing the database error"}:::decision N_HandleDatabaseError_Node2_action["Execute appropriate error handling
procedures and complete the
operation with error status"]:::exclusion N_HandleDatabaseError_Node2 -- Yes -->|Alternative| N_HandleDatabaseError_Node2_action N_HandleDatabaseError_Node2_action --> E_HandleDatabaseError N_HandleDatabaseError_Node1 -- No --> N_HandleDatabaseError_Node2 N_HandleDatabaseError_Node3{"The system handles the database
error"}:::decision N_HandleDatabaseError_Node3_action["Log error details, determine if
retry is appropriate, and implement
error recovery procedures"]:::exclusion N_HandleDatabaseError_Node3 -- Yes -->|Alternative| N_HandleDatabaseError_Node3_action N_HandleDatabaseError_Node3_action --> E_HandleDatabaseError N_HandleDatabaseError_Node2 -- No --> N_HandleDatabaseError_Node3 N_HandleDatabaseError_Node4{"The system encounters the error
condition"}:::decision N_HandleDatabaseError_Node4_action["The database error is handled
according to error handling
procedures"]:::exclusion N_HandleDatabaseError_Node4 -- Yes -->|Alternative| N_HandleDatabaseError_Node4_action N_HandleDatabaseError_Node4_action --> E_HandleDatabaseError N_HandleDatabaseError_Node3 -- No --> N_HandleDatabaseError_Node4 N_HandleDatabaseError_Node5{"The system detects the operation
failure"}:::decision N_HandleDatabaseError_Node5_action["Error handling procedures are
invoked and processing terminates
with error status"]:::main N_HandleDatabaseError_Node5 -- Yes --> N_HandleDatabaseError_Node5_action N_HandleDatabaseError_Node5_action --> E_HandleDatabaseError N_HandleDatabaseError_Node4 -- No --> N_HandleDatabaseError_Node5 N_HandleDatabaseError_Node6{"The system encounters a database
error"}:::decision N_HandleDatabaseError_Node6_action["The system handles the database
error through appropriate error
recovery procedures"]:::exclusion N_HandleDatabaseError_Node6 -- Yes -->|Alternative| N_HandleDatabaseError_Node6_action N_HandleDatabaseError_Node6_action --> E_HandleDatabaseError N_HandleDatabaseError_Node5 -- No --> N_HandleDatabaseError_Node6 N_HandleDatabaseError_Node6 -- No --> E_HandleDatabaseError
File: GCX016.cbl
GIVEN:
A database update operation has failed
WHEN:
The system handles the database error
THEN:
Error information is logged, appropriate error messages are generated, and error recovery procedures are initiated
File: GCX016.cbl
GIVEN:
A database operation has failed or segment key is invalid
WHEN:
The system handles the database error
THEN:
- The system logs error details
- Returns error status
File: GCX016.cbl
GIVEN:
A database update operation has failed
WHEN:
Processing the database error
THEN:
- Execute appropriate error handling procedures
- Complete the operation with error status
File: GCX016.cbl
GIVEN:
Database update has failed
WHEN:
The system handles the database error
THEN:
Log error details, determine if retry is appropriate, and implement error recovery procedures
File: GCX016.cbl
GIVEN:
A database error occurs during Canadian cargo search
WHEN:
The system encounters the error condition
THEN:
The database error is handled according to error handling procedures
File: GCX016.cbl
GIVEN:
A database operation on U1 segment has failed
WHEN:
The system detects the operation failure
THEN:
- Error handling procedures are invoked
- Processing terminates with error status
File: GCX016.cbl
GIVEN:
A database insertion has failed
WHEN:
The system encounters a database error
THEN:
The system handles the database error through appropriate error recovery procedures
β Consolidated Acceptance Criteria
- The system checks the equipment type for integration eligibility → only valid container types (containers, trailers, etc.) are allowed to proceed with integration processing, while invalid types are skipped
- The validation result indicates container type status → processing continues for valid container types or error handling is triggered for invalid types
- The system validates container type for message inclusion → the system determines if the container type is valid for equipment information inclusion in the release message
- The system checks if the container type is valid for export operations → the system either proceeds with message generation for valid container types or handles invalid container type scenarios
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ContainerTypeValid(["Start Step"])
E_ContainerTypeValid(["End Step"])
N_ContainerTypeValid_Node0{"The system checks the equipment
type for integration eligibility"}:::decision N_ContainerTypeValid_Node0_action["Only valid container types
containers, trailers, etc. are
allowed to proceed with integration
processing, while invalid types are
skipped"]:::main N_ContainerTypeValid_Node0 -- Yes --> N_ContainerTypeValid_Node0_action N_ContainerTypeValid_Node0_action --> E_ContainerTypeValid S_ContainerTypeValid --> N_ContainerTypeValid_Node0 N_ContainerTypeValid_Node1{"The validation result indicates
container type status"}:::decision N_ContainerTypeValid_Node1_action["Processing continues for valid
container types or error handling is
triggered for invalid types"]:::main N_ContainerTypeValid_Node1 -- Yes --> N_ContainerTypeValid_Node1_action N_ContainerTypeValid_Node1_action --> E_ContainerTypeValid N_ContainerTypeValid_Node0 -- No --> N_ContainerTypeValid_Node1 N_ContainerTypeValid_Node2{"The system validates container type
for message inclusion"}:::decision N_ContainerTypeValid_Node2_action["The system determines if the
container type is valid for
equipment information inclusion in
the release message"]:::main N_ContainerTypeValid_Node2 -- Yes --> N_ContainerTypeValid_Node2_action N_ContainerTypeValid_Node2_action --> E_ContainerTypeValid N_ContainerTypeValid_Node1 -- No --> N_ContainerTypeValid_Node2 N_ContainerTypeValid_Node3{"The system checks if the container
type is valid for export operations"}:::decision N_ContainerTypeValid_Node3_action["The system either proceeds with
message generation for valid
container types or handles invalid
container type scenarios"]:::main N_ContainerTypeValid_Node3 -- Yes --> N_ContainerTypeValid_Node3_action N_ContainerTypeValid_Node3_action --> E_ContainerTypeValid N_ContainerTypeValid_Node2 -- No --> N_ContainerTypeValid_Node3 N_ContainerTypeValid_Node3 -- No --> E_ContainerTypeValid
type for integration eligibility"}:::decision N_ContainerTypeValid_Node0_action["Only valid container types
containers, trailers, etc. are
allowed to proceed with integration
processing, while invalid types are
skipped"]:::main N_ContainerTypeValid_Node0 -- Yes --> N_ContainerTypeValid_Node0_action N_ContainerTypeValid_Node0_action --> E_ContainerTypeValid S_ContainerTypeValid --> N_ContainerTypeValid_Node0 N_ContainerTypeValid_Node1{"The validation result indicates
container type status"}:::decision N_ContainerTypeValid_Node1_action["Processing continues for valid
container types or error handling is
triggered for invalid types"]:::main N_ContainerTypeValid_Node1 -- Yes --> N_ContainerTypeValid_Node1_action N_ContainerTypeValid_Node1_action --> E_ContainerTypeValid N_ContainerTypeValid_Node0 -- No --> N_ContainerTypeValid_Node1 N_ContainerTypeValid_Node2{"The system validates container type
for message inclusion"}:::decision N_ContainerTypeValid_Node2_action["The system determines if the
container type is valid for
equipment information inclusion in
the release message"]:::main N_ContainerTypeValid_Node2 -- Yes --> N_ContainerTypeValid_Node2_action N_ContainerTypeValid_Node2_action --> E_ContainerTypeValid N_ContainerTypeValid_Node1 -- No --> N_ContainerTypeValid_Node2 N_ContainerTypeValid_Node3{"The system checks if the container
type is valid for export operations"}:::decision N_ContainerTypeValid_Node3_action["The system either proceeds with
message generation for valid
container types or handles invalid
container type scenarios"]:::main N_ContainerTypeValid_Node3 -- Yes --> N_ContainerTypeValid_Node3_action N_ContainerTypeValid_Node3_action --> E_ContainerTypeValid N_ContainerTypeValid_Node2 -- No --> N_ContainerTypeValid_Node3 N_ContainerTypeValid_Node3 -- No --> E_ContainerTypeValid
File: GCX016.cbl
GIVEN:
An integration service call is required for cargo equipment
WHEN:
The system checks the equipment type for integration eligibility
THEN:
Only valid container types (containers, trailers, etc.) are allowed to proceed with integration processing, while invalid types are skipped
File: GCX016.cbl
GIVEN:
Container type validation has been performed against system tables
WHEN:
The validation result indicates container type status
THEN:
Processing continues for valid container types or error handling is triggered for invalid types
File: GCX016.cbl
GIVEN:
A cargo record has associated equipment type information
WHEN:
The system validates container type for message inclusion
THEN:
The system determines if the container type is valid for equipment information inclusion in the release message
File: GCX016.cbl
GIVEN:
A cargo record with container type information is being processed for export
WHEN:
The system checks if the container type is valid for export operations
THEN:
The system either proceeds with message generation for valid container types or handles invalid container type scenarios
β Consolidated Acceptance Criteria
- The system validates the specific equipment type details → the equipment type is confirmed as eligible for hold/release notifications and status changes
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ValidateEquipmentType(["Start Step"])
E_ValidateEquipmentType(["End Step"])
N_ValidateEquipmentType_Node0{"The system validates the specific
equipment type details"}:::decision N_ValidateEquipmentType_Node0_action["The equipment type is confirmed as
eligible for holdrelease
notifications and status changes"]:::main N_ValidateEquipmentType_Node0 -- Yes --> N_ValidateEquipmentType_Node0_action N_ValidateEquipmentType_Node0_action --> E_ValidateEquipmentType S_ValidateEquipmentType --> N_ValidateEquipmentType_Node0 N_ValidateEquipmentType_Node0 -- No --> E_ValidateEquipmentType
equipment type details"}:::decision N_ValidateEquipmentType_Node0_action["The equipment type is confirmed as
eligible for holdrelease
notifications and status changes"]:::main N_ValidateEquipmentType_Node0 -- Yes --> N_ValidateEquipmentType_Node0_action N_ValidateEquipmentType_Node0_action --> E_ValidateEquipmentType S_ValidateEquipmentType --> N_ValidateEquipmentType_Node0 N_ValidateEquipmentType_Node0 -- No --> E_ValidateEquipmentType
File: GCX016.cbl
GIVEN:
A container type has been determined as valid for integration
WHEN:
The system validates the specific equipment type details
THEN:
- The equipment type is confirmed as eligible for hold/release notifications
- Status changes
β Consolidated Acceptance Criteria
- The system maps internal cargo status to integration service format → internal status codes are translated to appropriate GCCIIS-compatible status values
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MapInternalStatustoIntegrationFormat(["Start Step"])
E_MapInternalStatustoIntegrationFormat(["End Step"])
N_MapInternalStatustoIntegrationFormat_Node0{"The system maps internal cargo
status to integration service format"}:::decision N_MapInternalStatustoIntegrationFormat_Node0_action["Internal status codes are
translated to appropriate
GCCIIS-compatible status values"]:::main N_MapInternalStatustoIntegrationFormat_Node0 -- Yes --> N_MapInternalStatustoIntegrationFormat_Node0_action N_MapInternalStatustoIntegrationFormat_Node0_action --> E_MapInternalStatustoIntegrationFormat S_MapInternalStatustoIntegrationFormat --> N_MapInternalStatustoIntegrationFormat_Node0 N_MapInternalStatustoIntegrationFormat_Node0 -- No --> E_MapInternalStatustoIntegrationFormat
status to integration service format"}:::decision N_MapInternalStatustoIntegrationFormat_Node0_action["Internal status codes are
translated to appropriate
GCCIIS-compatible status values"]:::main N_MapInternalStatustoIntegrationFormat_Node0 -- Yes --> N_MapInternalStatustoIntegrationFormat_Node0_action N_MapInternalStatustoIntegrationFormat_Node0_action --> E_MapInternalStatustoIntegrationFormat S_MapInternalStatustoIntegrationFormat --> N_MapInternalStatustoIntegrationFormat_Node0 N_MapInternalStatustoIntegrationFormat_Node0 -- No --> E_MapInternalStatustoIntegrationFormat
File: GCX016.cbl
GIVEN:
Valid equipment type has been confirmed for integration
WHEN:
The system maps internal cargo status to integration service format
THEN:
Internal status codes are translated to appropriate GCCIIS-compatible status values
β Consolidated Acceptance Criteria
- If if hold notification is required → hold notification is required when cargo has hold status conditions that need to be communicated to external systems
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_HoldNotificationRequired(["Start Step"])
E_HoldNotificationRequired(["End Step"])
N_HoldNotificationRequired_Node0{"The system evaluates if hold
notification is required"}:::decision N_HoldNotificationRequired_Node0_action["Hold notification is required when
cargo has hold status conditions
that need to be communicated to
external systems"]:::main N_HoldNotificationRequired_Node0 -- Yes --> N_HoldNotificationRequired_Node0_action N_HoldNotificationRequired_Node0_action --> E_HoldNotificationRequired S_HoldNotificationRequired --> N_HoldNotificationRequired_Node0 N_HoldNotificationRequired_Node0 -- No --> E_HoldNotificationRequired
notification is required"}:::decision N_HoldNotificationRequired_Node0_action["Hold notification is required when
cargo has hold status conditions
that need to be communicated to
external systems"]:::main N_HoldNotificationRequired_Node0 -- Yes --> N_HoldNotificationRequired_Node0_action N_HoldNotificationRequired_Node0_action --> E_HoldNotificationRequired S_HoldNotificationRequired --> N_HoldNotificationRequired_Node0 N_HoldNotificationRequired_Node0 -- No --> E_HoldNotificationRequired
File: GCX016.cbl
GIVEN:
Cargo status has been mapped to integration format
WHEN:
The system evaluates if hold notification is required
THEN:
Hold notification is required when cargo has hold status conditions that need to be communicated to external systems
β Consolidated Acceptance Criteria
- The system prepares hold notification data → all required hold information including cargo details, hold reasons, and status descriptions are formatted for GCCIIS transmission
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_PrepareHoldNotificationData(["Start Step"])
E_PrepareHoldNotificationData(["End Step"])
N_PrepareHoldNotificationData_Node0{"The system prepares hold
notification data"}:::decision N_PrepareHoldNotificationData_Node0_action["All required hold information
including cargo details, hold
reasons, and status descriptions are
formatted for GCCIIS transmission"]:::main N_PrepareHoldNotificationData_Node0 -- Yes --> N_PrepareHoldNotificationData_Node0_action N_PrepareHoldNotificationData_Node0_action --> E_PrepareHoldNotificationData S_PrepareHoldNotificationData --> N_PrepareHoldNotificationData_Node0 N_PrepareHoldNotificationData_Node0 -- No --> E_PrepareHoldNotificationData
notification data"}:::decision N_PrepareHoldNotificationData_Node0_action["All required hold information
including cargo details, hold
reasons, and status descriptions are
formatted for GCCIIS transmission"]:::main N_PrepareHoldNotificationData_Node0 -- Yes --> N_PrepareHoldNotificationData_Node0_action N_PrepareHoldNotificationData_Node0_action --> E_PrepareHoldNotificationData S_PrepareHoldNotificationData --> N_PrepareHoldNotificationData_Node0 N_PrepareHoldNotificationData_Node0 -- No --> E_PrepareHoldNotificationData
File: GCX016.cbl
GIVEN:
Hold notification has been determined as required
WHEN:
The system prepares hold notification data
THEN:
All required hold information including cargo details, hold reasons, and status descriptions are formatted for GCCIIS transmission
β Consolidated Acceptance Criteria
- The system calls GCCIIS for hold notification → the hold notification is transmitted to GCCIIS with all required cargo hold information
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CallGCCIISforHold(["Start Step"])
E_CallGCCIISforHold(["End Step"])
N_CallGCCIISforHold_Node0{"The system calls GCCIIS for hold
notification"}:::decision N_CallGCCIISforHold_Node0_action["The hold notification is
transmitted to GCCIIS with all
required cargo hold information"]:::main N_CallGCCIISforHold_Node0 -- Yes --> N_CallGCCIISforHold_Node0_action N_CallGCCIISforHold_Node0_action --> E_CallGCCIISforHold S_CallGCCIISforHold --> N_CallGCCIISforHold_Node0 N_CallGCCIISforHold_Node0 -- No --> E_CallGCCIISforHold
notification"}:::decision N_CallGCCIISforHold_Node0_action["The hold notification is
transmitted to GCCIIS with all
required cargo hold information"]:::main N_CallGCCIISforHold_Node0 -- Yes --> N_CallGCCIISforHold_Node0_action N_CallGCCIISforHold_Node0_action --> E_CallGCCIISforHold S_CallGCCIISforHold --> N_CallGCCIISforHold_Node0 N_CallGCCIISforHold_Node0 -- No --> E_CallGCCIISforHold
File: GCX016.cbl
GIVEN:
Hold notification data has been prepared
WHEN:
The system calls GCCIIS for hold notification
THEN:
The hold notification is transmitted to GCCIIS with all required cargo hold information
β Consolidated Acceptance Criteria
- If if release notification is required → release notification is required when cargo has release status conditions that need to be communicated to external systems
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ReleaseNotificationRequired(["Start Step"])
E_ReleaseNotificationRequired(["End Step"])
N_ReleaseNotificationRequired_Node0{"The system evaluates if release
notification is required"}:::decision N_ReleaseNotificationRequired_Node0_action["Release notification is required
when cargo has release status
conditions that need to be
communicated to external systems"]:::main N_ReleaseNotificationRequired_Node0 -- Yes --> N_ReleaseNotificationRequired_Node0_action N_ReleaseNotificationRequired_Node0_action --> E_ReleaseNotificationRequired S_ReleaseNotificationRequired --> N_ReleaseNotificationRequired_Node0 N_ReleaseNotificationRequired_Node0 -- No --> E_ReleaseNotificationRequired
notification is required"}:::decision N_ReleaseNotificationRequired_Node0_action["Release notification is required
when cargo has release status
conditions that need to be
communicated to external systems"]:::main N_ReleaseNotificationRequired_Node0 -- Yes --> N_ReleaseNotificationRequired_Node0_action N_ReleaseNotificationRequired_Node0_action --> E_ReleaseNotificationRequired S_ReleaseNotificationRequired --> N_ReleaseNotificationRequired_Node0 N_ReleaseNotificationRequired_Node0 -- No --> E_ReleaseNotificationRequired
File: GCX016.cbl
GIVEN:
Hold notification processing has been completed or skipped
WHEN:
The system evaluates if release notification is required
THEN:
Release notification is required when cargo has release status conditions that need to be communicated to external systems
β Consolidated Acceptance Criteria
- The system prepares release notification data → all required release information including cargo details, release quantities, and status descriptions are formatted for GCCIIS transmission
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_PrepareReleaseNotificationData(["Start Step"])
E_PrepareReleaseNotificationData(["End Step"])
N_PrepareReleaseNotificationData_Node0{"The system prepares release
notification data"}:::decision N_PrepareReleaseNotificationData_Node0_action["All required release information
including cargo details, release
quantities, and status descriptions
are formatted for GCCIIS
transmission"]:::main N_PrepareReleaseNotificationData_Node0 -- Yes --> N_PrepareReleaseNotificationData_Node0_action N_PrepareReleaseNotificationData_Node0_action --> E_PrepareReleaseNotificationData S_PrepareReleaseNotificationData --> N_PrepareReleaseNotificationData_Node0 N_PrepareReleaseNotificationData_Node0 -- No --> E_PrepareReleaseNotificationData
notification data"}:::decision N_PrepareReleaseNotificationData_Node0_action["All required release information
including cargo details, release
quantities, and status descriptions
are formatted for GCCIIS
transmission"]:::main N_PrepareReleaseNotificationData_Node0 -- Yes --> N_PrepareReleaseNotificationData_Node0_action N_PrepareReleaseNotificationData_Node0_action --> E_PrepareReleaseNotificationData S_PrepareReleaseNotificationData --> N_PrepareReleaseNotificationData_Node0 N_PrepareReleaseNotificationData_Node0 -- No --> E_PrepareReleaseNotificationData
File: GCX016.cbl
GIVEN:
Release notification has been determined as required
WHEN:
The system prepares release notification data
THEN:
All required release information including cargo details, release quantities, and status descriptions are formatted for GCCIIS transmission
β Consolidated Acceptance Criteria
- The system calls GCCIIS for release notification → the release notification is transmitted to GCCIIS with all required cargo release information
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CallGCCIISforRelease(["Start Step"])
E_CallGCCIISforRelease(["End Step"])
N_CallGCCIISforRelease_Node0{"The system calls GCCIIS for release
notification"}:::decision N_CallGCCIISforRelease_Node0_action["The release notification is
transmitted to GCCIIS with all
required cargo release information"]:::main N_CallGCCIISforRelease_Node0 -- Yes --> N_CallGCCIISforRelease_Node0_action N_CallGCCIISforRelease_Node0_action --> E_CallGCCIISforRelease S_CallGCCIISforRelease --> N_CallGCCIISforRelease_Node0 N_CallGCCIISforRelease_Node0 -- No --> E_CallGCCIISforRelease
notification"}:::decision N_CallGCCIISforRelease_Node0_action["The release notification is
transmitted to GCCIIS with all
required cargo release information"]:::main N_CallGCCIISforRelease_Node0 -- Yes --> N_CallGCCIISforRelease_Node0_action N_CallGCCIISforRelease_Node0_action --> E_CallGCCIISforRelease S_CallGCCIISforRelease --> N_CallGCCIISforRelease_Node0 N_CallGCCIISforRelease_Node0 -- No --> E_CallGCCIISforRelease
File: GCX016.cbl
GIVEN:
Release notification data has been prepared
WHEN:
The system calls GCCIIS for release notification
THEN:
The release notification is transmitted to GCCIIS with all required cargo release information
β Consolidated Acceptance Criteria
- If if status change notification is required → status change notification is required when cargo status has changed and needs to be synchronized with external systems
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_StatusChangeRequired(["Start Step"])
E_StatusChangeRequired(["End Step"])
N_StatusChangeRequired_Node0{"The system evaluates if status
change notification is required"}:::decision N_StatusChangeRequired_Node0_action["Status change notification is
required when cargo status has
changed and needs to be synchronized
with external systems"]:::main N_StatusChangeRequired_Node0 -- Yes --> N_StatusChangeRequired_Node0_action N_StatusChangeRequired_Node0_action --> E_StatusChangeRequired S_StatusChangeRequired --> N_StatusChangeRequired_Node0 N_StatusChangeRequired_Node0 -- No --> E_StatusChangeRequired
change notification is required"}:::decision N_StatusChangeRequired_Node0_action["Status change notification is
required when cargo status has
changed and needs to be synchronized
with external systems"]:::main N_StatusChangeRequired_Node0 -- Yes --> N_StatusChangeRequired_Node0_action N_StatusChangeRequired_Node0_action --> E_StatusChangeRequired S_StatusChangeRequired --> N_StatusChangeRequired_Node0 N_StatusChangeRequired_Node0 -- No --> E_StatusChangeRequired
File: GCX016.cbl
GIVEN:
Release notification processing has been completed or skipped
WHEN:
The system evaluates if status change notification is required
THEN:
- Status change notification is required when cargo status has changed
- Needs to be synchronized with external systems
β Consolidated Acceptance Criteria
- The system prepares status change data → all required status change information including cargo details, new status, and change reasons are formatted for GCCIIS transmission
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_PrepareStatusChangeData(["Start Step"])
E_PrepareStatusChangeData(["End Step"])
N_PrepareStatusChangeData_Node0{"The system prepares status change
data"}:::decision N_PrepareStatusChangeData_Node0_action["All required status change
information including cargo details,
new status, and change reasons are
formatted for GCCIIS transmission"]:::main N_PrepareStatusChangeData_Node0 -- Yes --> N_PrepareStatusChangeData_Node0_action N_PrepareStatusChangeData_Node0_action --> E_PrepareStatusChangeData S_PrepareStatusChangeData --> N_PrepareStatusChangeData_Node0 N_PrepareStatusChangeData_Node0 -- No --> E_PrepareStatusChangeData
data"}:::decision N_PrepareStatusChangeData_Node0_action["All required status change
information including cargo details,
new status, and change reasons are
formatted for GCCIIS transmission"]:::main N_PrepareStatusChangeData_Node0 -- Yes --> N_PrepareStatusChangeData_Node0_action N_PrepareStatusChangeData_Node0_action --> E_PrepareStatusChangeData S_PrepareStatusChangeData --> N_PrepareStatusChangeData_Node0 N_PrepareStatusChangeData_Node0 -- No --> E_PrepareStatusChangeData
File: GCX016.cbl
GIVEN:
Status change notification has been determined as required
WHEN:
The system prepares status change data
THEN:
All required status change information including cargo details, new status, and change reasons are formatted for GCCIIS transmission
β Consolidated Acceptance Criteria
- The system calls GCCIIS for status update → the status change notification is transmitted to GCCIIS with all required cargo status information
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CallGCCIISforStatusUpdate(["Start Step"])
E_CallGCCIISforStatusUpdate(["End Step"])
N_CallGCCIISforStatusUpdate_Node0{"The system calls GCCIIS for status
update"}:::decision N_CallGCCIISforStatusUpdate_Node0_action["The status change notification is
transmitted to GCCIIS with all
required cargo status information"]:::main N_CallGCCIISforStatusUpdate_Node0 -- Yes --> N_CallGCCIISforStatusUpdate_Node0_action N_CallGCCIISforStatusUpdate_Node0_action --> E_CallGCCIISforStatusUpdate S_CallGCCIISforStatusUpdate --> N_CallGCCIISforStatusUpdate_Node0 N_CallGCCIISforStatusUpdate_Node0 -- No --> E_CallGCCIISforStatusUpdate
update"}:::decision N_CallGCCIISforStatusUpdate_Node0_action["The status change notification is
transmitted to GCCIIS with all
required cargo status information"]:::main N_CallGCCIISforStatusUpdate_Node0 -- Yes --> N_CallGCCIISforStatusUpdate_Node0_action N_CallGCCIISforStatusUpdate_Node0_action --> E_CallGCCIISforStatusUpdate S_CallGCCIISforStatusUpdate --> N_CallGCCIISforStatusUpdate_Node0 N_CallGCCIISforStatusUpdate_Node0 -- No --> E_CallGCCIISforStatusUpdate
File: GCX016.cbl
GIVEN:
Status change data has been prepared
WHEN:
The system calls GCCIIS for status update
THEN:
The status change notification is transmitted to GCCIIS with all required cargo status information
β Consolidated Acceptance Criteria
- The system logs integration call results → all integration service call results including success/failure status and response details are recorded for audit trail
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogIntegrationCallResults(["Start Step"])
E_LogIntegrationCallResults(["End Step"])
N_LogIntegrationCallResults_Node0{"The system logs integration call
results"}:::decision N_LogIntegrationCallResults_Node0_action["All integration service call
results including successfailure
status and response details are
recorded for audit trail"]:::main N_LogIntegrationCallResults_Node0 -- Yes --> N_LogIntegrationCallResults_Node0_action N_LogIntegrationCallResults_Node0_action --> E_LogIntegrationCallResults S_LogIntegrationCallResults --> N_LogIntegrationCallResults_Node0 N_LogIntegrationCallResults_Node0 -- No --> E_LogIntegrationCallResults
results"}:::decision N_LogIntegrationCallResults_Node0_action["All integration service call
results including successfailure
status and response details are
recorded for audit trail"]:::main N_LogIntegrationCallResults_Node0 -- Yes --> N_LogIntegrationCallResults_Node0_action N_LogIntegrationCallResults_Node0_action --> E_LogIntegrationCallResults S_LogIntegrationCallResults --> N_LogIntegrationCallResults_Node0 N_LogIntegrationCallResults_Node0 -- No --> E_LogIntegrationCallResults
File: GCX016.cbl
GIVEN:
GCCIIS integration calls have been completed
WHEN:
The system logs integration call results
THEN:
- All integration service call results including success/failure status
- Response details are recorded for audit trail
β Consolidated Acceptance Criteria
- The system completes integration processing → integration service processing is marked as complete and control returns to the calling process
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IntegrationComplete(["Start Step"])
E_IntegrationComplete(["End Step"])
N_IntegrationComplete_Node0{"The system completes integration
processing"}:::decision N_IntegrationComplete_Node0_action["Integration service processing is
marked as complete and control
returns to the calling process"]:::main N_IntegrationComplete_Node0 -- Yes --> N_IntegrationComplete_Node0_action N_IntegrationComplete_Node0_action --> E_IntegrationComplete S_IntegrationComplete --> N_IntegrationComplete_Node0 N_IntegrationComplete_Node0 -- No --> E_IntegrationComplete
processing"}:::decision N_IntegrationComplete_Node0_action["Integration service processing is
marked as complete and control
returns to the calling process"]:::main N_IntegrationComplete_Node0 -- Yes --> N_IntegrationComplete_Node0_action N_IntegrationComplete_Node0_action --> E_IntegrationComplete S_IntegrationComplete --> N_IntegrationComplete_Node0 N_IntegrationComplete_Node0 -- No --> E_IntegrationComplete
File: GCX016.cbl
GIVEN:
All required integration calls have been made and results logged
WHEN:
The system completes integration processing
THEN:
- Integration service processing is marked as complete
- Control returns to the calling process
β Consolidated Acceptance Criteria
- The system determines container type is invalid for integration → all GCCIIS integration processing is skipped and control proceeds to completion
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SkipIntegrationInvalidContainer(["Start Step"])
E_SkipIntegrationInvalidContainer(["End Step"])
N_SkipIntegrationInvalidContainer_Node0{"The system determines container
type is invalid for integration"}:::decision N_SkipIntegrationInvalidContainer_Node0_action["All GCCIIS integration processing
is skipped and control proceeds to
completion"]:::exclusion N_SkipIntegrationInvalidContainer_Node0 -- Yes -->|Alternative| N_SkipIntegrationInvalidContainer_Node0_action N_SkipIntegrationInvalidContainer_Node0_action --> E_SkipIntegrationInvalidContainer S_SkipIntegrationInvalidContainer --> N_SkipIntegrationInvalidContainer_Node0 N_SkipIntegrationInvalidContainer_Node0 -- No --> E_SkipIntegrationInvalidContainer
type is invalid for integration"}:::decision N_SkipIntegrationInvalidContainer_Node0_action["All GCCIIS integration processing
is skipped and control proceeds to
completion"]:::exclusion N_SkipIntegrationInvalidContainer_Node0 -- Yes -->|Alternative| N_SkipIntegrationInvalidContainer_Node0_action N_SkipIntegrationInvalidContainer_Node0_action --> E_SkipIntegrationInvalidContainer S_SkipIntegrationInvalidContainer --> N_SkipIntegrationInvalidContainer_Node0 N_SkipIntegrationInvalidContainer_Node0 -- No --> E_SkipIntegrationInvalidContainer
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
Container type validation has failed
WHEN:
The system determines container type is invalid for integration
THEN:
- All gcciis integration processing is skipped
- Control proceeds to completion
β Consolidated Acceptance Criteria
- The system needs to verify release status for all related cargo → the car ID and waybill number are extracted from the current cargo record and stored for subsequent cargo matching operations
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GetCarIDandWaybillfromCurrentCargo(["Start Step"])
E_GetCarIDandWaybillfromCurrentCargo(["End Step"])
N_GetCarIDandWaybillfromCurrentCargo_Node0{"The system needs to verify release
status for all related cargo"}:::decision N_GetCarIDandWaybillfromCurrentCargo_Node0_action["The car ID and waybill number are
extracted from the current cargo
record and stored for subsequent
cargo matching operations"]:::main N_GetCarIDandWaybillfromCurrentCargo_Node0 -- Yes --> N_GetCarIDandWaybillfromCurrentCargo_Node0_action N_GetCarIDandWaybillfromCurrentCargo_Node0_action --> E_GetCarIDandWaybillfromCurrentCargo S_GetCarIDandWaybillfromCurrentCargo --> N_GetCarIDandWaybillfromCurrentCargo_Node0 N_GetCarIDandWaybillfromCurrentCargo_Node0 -- No --> E_GetCarIDandWaybillfromCurrentCargo
status for all related cargo"}:::decision N_GetCarIDandWaybillfromCurrentCargo_Node0_action["The car ID and waybill number are
extracted from the current cargo
record and stored for subsequent
cargo matching operations"]:::main N_GetCarIDandWaybillfromCurrentCargo_Node0 -- Yes --> N_GetCarIDandWaybillfromCurrentCargo_Node0_action N_GetCarIDandWaybillfromCurrentCargo_Node0_action --> E_GetCarIDandWaybillfromCurrentCargo S_GetCarIDandWaybillfromCurrentCargo --> N_GetCarIDandWaybillfromCurrentCargo_Node0 N_GetCarIDandWaybillfromCurrentCargo_Node0 -- No --> E_GetCarIDandWaybillfromCurrentCargo
File: GCX016.cbl
GIVEN:
A cargo record is being processed for release verification
WHEN:
The system needs to verify release status for all related cargo
THEN:
- The car id
- Waybill number are extracted from the current cargo record
- Stored for subsequent cargo matching operations
β Consolidated Acceptance Criteria
- The system begins scanning related cargo records → all cargo scan counters and release eligibility flags are reset to initial values
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_InitializeCargoScanCounter(["Start Step"])
E_InitializeCargoScanCounter(["End Step"])
N_InitializeCargoScanCounter_Node0{"The system begins scanning related
cargo records"}:::decision N_InitializeCargoScanCounter_Node0_action["All cargo scan counters and release
eligibility flags are reset to
initial values"]:::main N_InitializeCargoScanCounter_Node0 -- Yes --> N_InitializeCargoScanCounter_Node0_action N_InitializeCargoScanCounter_Node0_action --> E_InitializeCargoScanCounter S_InitializeCargoScanCounter --> N_InitializeCargoScanCounter_Node0 N_InitializeCargoScanCounter_Node0 -- No --> E_InitializeCargoScanCounter
cargo records"}:::decision N_InitializeCargoScanCounter_Node0_action["All cargo scan counters and release
eligibility flags are reset to
initial values"]:::main N_InitializeCargoScanCounter_Node0 -- Yes --> N_InitializeCargoScanCounter_Node0_action N_InitializeCargoScanCounter_Node0_action --> E_InitializeCargoScanCounter S_InitializeCargoScanCounter --> N_InitializeCargoScanCounter_Node0 N_InitializeCargoScanCounter_Node0 -- No --> E_InitializeCargoScanCounter
File: GCX016.cbl
GIVEN:
Multi-cargo release verification is starting
WHEN:
The system begins scanning related cargo records
THEN:
- All cargo scan counters
- Release eligibility flags are reset to initial values
β Consolidated Acceptance Criteria
- The system searches for related cargo records → all cargo records matching the car ID and waybill combination are retrieved and made available for release verification processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_FetchAllCargoRecordsMatchingCarIDandWaybill(["Start Step"])
E_FetchAllCargoRecordsMatchingCarIDandWaybill(["End Step"])
N_FetchAllCargoRecordsMatchingCarIDandWaybill_Node0{"The system searches for related
cargo records"}:::decision N_FetchAllCargoRecordsMatchingCarIDandWaybill_Node0_action["All cargo records matching the car
ID and waybill combination are
retrieved and made available for
release verification processing"]:::main N_FetchAllCargoRecordsMatchingCarIDandWaybill_Node0 -- Yes --> N_FetchAllCargoRecordsMatchingCarIDandWaybill_Node0_action N_FetchAllCargoRecordsMatchingCarIDandWaybill_Node0_action --> E_FetchAllCargoRecordsMatchingCarIDandWaybill S_FetchAllCargoRecordsMatchingCarIDandWaybill --> N_FetchAllCargoRecordsMatchingCarIDandWaybill_Node0 N_FetchAllCargoRecordsMatchingCarIDandWaybill_Node0 -- No --> E_FetchAllCargoRecordsMatchingCarIDandWaybill
cargo records"}:::decision N_FetchAllCargoRecordsMatchingCarIDandWaybill_Node0_action["All cargo records matching the car
ID and waybill combination are
retrieved and made available for
release verification processing"]:::main N_FetchAllCargoRecordsMatchingCarIDandWaybill_Node0 -- Yes --> N_FetchAllCargoRecordsMatchingCarIDandWaybill_Node0_action N_FetchAllCargoRecordsMatchingCarIDandWaybill_Node0_action --> E_FetchAllCargoRecordsMatchingCarIDandWaybill S_FetchAllCargoRecordsMatchingCarIDandWaybill --> N_FetchAllCargoRecordsMatchingCarIDandWaybill_Node0 N_FetchAllCargoRecordsMatchingCarIDandWaybill_Node0 -- No --> E_FetchAllCargoRecordsMatchingCarIDandWaybill
File: GCX016.cbl
GIVEN:
Car ID and waybill criteria are established
WHEN:
The system searches for related cargo records
THEN:
- All cargo records matching the car id
- Waybill combination are retrieved
- Made available for release verification processing
β Consolidated Acceptance Criteria
- The system continues the release verification scan → the next cargo record matching the car ID and waybill is retrieved and made current for release status checking
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GetNextCargoRecord(["Start Step"])
E_GetNextCargoRecord(["End Step"])
N_GetNextCargoRecord_Node0{"The system continues the release
verification scan"}:::decision N_GetNextCargoRecord_Node0_action["The next cargo record matching the
car ID and waybill is retrieved and
made current for release status
checking"]:::main N_GetNextCargoRecord_Node0 -- Yes --> N_GetNextCargoRecord_Node0_action N_GetNextCargoRecord_Node0_action --> E_GetNextCargoRecord S_GetNextCargoRecord --> N_GetNextCargoRecord_Node0 N_GetNextCargoRecord_Node0 -- No --> E_GetNextCargoRecord
verification scan"}:::decision N_GetNextCargoRecord_Node0_action["The next cargo record matching the
car ID and waybill is retrieved and
made current for release status
checking"]:::main N_GetNextCargoRecord_Node0 -- Yes --> N_GetNextCargoRecord_Node0_action N_GetNextCargoRecord_Node0_action --> E_GetNextCargoRecord S_GetNextCargoRecord --> N_GetNextCargoRecord_Node0 N_GetNextCargoRecord_Node0 -- No --> E_GetNextCargoRecord
File: GCX016.cbl
GIVEN:
Additional cargo records are available for processing
WHEN:
The system continues the release verification scan
THEN:
- The next cargo record matching the car id
- Waybill is retrieved
- Made current for release status checking
β Consolidated Acceptance Criteria
- The system checks the cargo's current release status → the cargo's release status is determined and used to direct further validation checks
- The system checks the cargo release status during release processing → the system determines whether the cargo qualifies for IM tag removal based on its release status
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CheckCargoReleaseStatus(["Start Step"])
E_CheckCargoReleaseStatus(["End Step"])
N_CheckCargoReleaseStatus_Node0{"The system checks the cargo s
current release status"}:::decision N_CheckCargoReleaseStatus_Node0_action["The cargo s release status is
determined and used to direct
further validation checks"]:::main N_CheckCargoReleaseStatus_Node0 -- Yes --> N_CheckCargoReleaseStatus_Node0_action N_CheckCargoReleaseStatus_Node0_action --> E_CheckCargoReleaseStatus S_CheckCargoReleaseStatus --> N_CheckCargoReleaseStatus_Node0 N_CheckCargoReleaseStatus_Node1{"The system checks the cargo release
status during release processing"}:::decision N_CheckCargoReleaseStatus_Node1_action["The system determines whether the
cargo qualifies for IM tag removal
based on its release status"]:::main N_CheckCargoReleaseStatus_Node1 -- Yes --> N_CheckCargoReleaseStatus_Node1_action N_CheckCargoReleaseStatus_Node1_action --> E_CheckCargoReleaseStatus N_CheckCargoReleaseStatus_Node0 -- No --> N_CheckCargoReleaseStatus_Node1 N_CheckCargoReleaseStatus_Node1 -- No --> E_CheckCargoReleaseStatus
current release status"}:::decision N_CheckCargoReleaseStatus_Node0_action["The cargo s release status is
determined and used to direct
further validation checks"]:::main N_CheckCargoReleaseStatus_Node0 -- Yes --> N_CheckCargoReleaseStatus_Node0_action N_CheckCargoReleaseStatus_Node0_action --> E_CheckCargoReleaseStatus S_CheckCargoReleaseStatus --> N_CheckCargoReleaseStatus_Node0 N_CheckCargoReleaseStatus_Node1{"The system checks the cargo release
status during release processing"}:::decision N_CheckCargoReleaseStatus_Node1_action["The system determines whether the
cargo qualifies for IM tag removal
based on its release status"]:::main N_CheckCargoReleaseStatus_Node1 -- Yes --> N_CheckCargoReleaseStatus_Node1_action N_CheckCargoReleaseStatus_Node1_action --> E_CheckCargoReleaseStatus N_CheckCargoReleaseStatus_Node0 -- No --> N_CheckCargoReleaseStatus_Node1 N_CheckCargoReleaseStatus_Node1 -- No --> E_CheckCargoReleaseStatus
File: GCX016.cbl
GIVEN:
A cargo record is being evaluated for release verification
WHEN:
The system checks the cargo's current release status
THEN:
- The cargo's release status is determined
- Used to direct further validation checks
File: GCX016.cbl
GIVEN:
A cargo record exists in the system with current status information
WHEN:
The system checks the cargo release status during release processing
THEN:
The system determines whether the cargo qualifies for IM tag removal based on its release status
β Consolidated Acceptance Criteria
- The system determines if the cargo is currently in released status → if cargo is not released, active hold checks are performed, otherwise manual release flag validation is conducted
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IsCargoReleased(["Start Step"])
E_IsCargoReleased(["End Step"])
N_IsCargoReleased_Node0{"The system determines if the cargo
is currently in released status"}:::decision N_IsCargoReleased_Node0_action["If cargo is not released, active
hold checks are performed, otherwise
manual release flag validation is
conducted"]:::main N_IsCargoReleased_Node0 -- Yes --> N_IsCargoReleased_Node0_action N_IsCargoReleased_Node0_action --> E_IsCargoReleased S_IsCargoReleased --> N_IsCargoReleased_Node0 N_IsCargoReleased_Node0 -- No --> E_IsCargoReleased
is currently in released status"}:::decision N_IsCargoReleased_Node0_action["If cargo is not released, active
hold checks are performed, otherwise
manual release flag validation is
conducted"]:::main N_IsCargoReleased_Node0 -- Yes --> N_IsCargoReleased_Node0_action N_IsCargoReleased_Node0_action --> E_IsCargoReleased S_IsCargoReleased --> N_IsCargoReleased_Node0 N_IsCargoReleased_Node0 -- No --> E_IsCargoReleased
File: GCX016.cbl
GIVEN:
Cargo release status has been evaluated
WHEN:
The system determines if the cargo is currently in released status
THEN:
If cargo is not released, active hold checks are performed, otherwise manual release flag validation is conducted
β Consolidated Acceptance Criteria
- The system checks for active hold conditions on the cargo → all active hold flags and conditions are evaluated to determine if holds exist that prevent release
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CheckforActiveHolds(["Start Step"])
E_CheckforActiveHolds(["End Step"])
N_CheckforActiveHolds_Node0{"The system checks for active hold
conditions on the cargo"}:::decision N_CheckforActiveHolds_Node0_action["All active hold flags and
conditions are evaluated to
determine if holds exist that
prevent release"]:::main N_CheckforActiveHolds_Node0 -- Yes --> N_CheckforActiveHolds_Node0_action N_CheckforActiveHolds_Node0_action --> E_CheckforActiveHolds S_CheckforActiveHolds --> N_CheckforActiveHolds_Node0 N_CheckforActiveHolds_Node0 -- No --> E_CheckforActiveHolds
conditions on the cargo"}:::decision N_CheckforActiveHolds_Node0_action["All active hold flags and
conditions are evaluated to
determine if holds exist that
prevent release"]:::main N_CheckforActiveHolds_Node0 -- Yes --> N_CheckforActiveHolds_Node0_action N_CheckforActiveHolds_Node0_action --> E_CheckforActiveHolds S_CheckforActiveHolds --> N_CheckforActiveHolds_Node0 N_CheckforActiveHolds_Node0 -- No --> E_CheckforActiveHolds
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
Cargo is not currently in released status
WHEN:
The system checks for active hold conditions on the cargo
THEN:
- All active hold flags
- Conditions are evaluated to determine if holds exist that prevent release
β Consolidated Acceptance Criteria
- If whether active holds exist → if active holds are present, cargo is marked as not release eligible, otherwise manual release flag checking continues
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_HasActiveHolds(["Start Step"])
E_HasActiveHolds(["End Step"])
N_HasActiveHolds_Node0{"The system evaluates whether active
holds exist"}:::decision N_HasActiveHolds_Node0_action["If active holds are present, cargo
is marked as not release eligible,
otherwise manual release flag
checking continues"]:::main N_HasActiveHolds_Node0 -- Yes --> N_HasActiveHolds_Node0_action N_HasActiveHolds_Node0_action --> E_HasActiveHolds S_HasActiveHolds --> N_HasActiveHolds_Node0 N_HasActiveHolds_Node0 -- No --> E_HasActiveHolds
holds exist"}:::decision N_HasActiveHolds_Node0_action["If active holds are present, cargo
is marked as not release eligible,
otherwise manual release flag
checking continues"]:::main N_HasActiveHolds_Node0 -- Yes --> N_HasActiveHolds_Node0_action N_HasActiveHolds_Node0_action --> E_HasActiveHolds S_HasActiveHolds --> N_HasActiveHolds_Node0 N_HasActiveHolds_Node0 -- No --> E_HasActiveHolds
File: GCX016.cbl
GIVEN:
Active hold conditions have been checked
WHEN:
The system evaluates whether active holds exist
THEN:
If active holds are present, cargo is marked as not release eligible, otherwise manual release flag checking continues
β Consolidated Acceptance Criteria
- The system processes cargo with active holds → the cargo is marked as not eligible for release and the release eligibility counter is updated accordingly
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MarkasNotReleaseEligible(["Start Step"])
E_MarkasNotReleaseEligible(["End Step"])
N_MarkasNotReleaseEligible_Node0{"The system processes cargo with
active holds"}:::decision N_MarkasNotReleaseEligible_Node0_action["The cargo is marked as not eligible
for release and the release
eligibility counter is updated
accordingly"]:::main N_MarkasNotReleaseEligible_Node0 -- Yes --> N_MarkasNotReleaseEligible_Node0_action N_MarkasNotReleaseEligible_Node0_action --> E_MarkasNotReleaseEligible S_MarkasNotReleaseEligible --> N_MarkasNotReleaseEligible_Node0 N_MarkasNotReleaseEligible_Node0 -- No --> E_MarkasNotReleaseEligible
active holds"}:::decision N_MarkasNotReleaseEligible_Node0_action["The cargo is marked as not eligible
for release and the release
eligibility counter is updated
accordingly"]:::main N_MarkasNotReleaseEligible_Node0 -- Yes --> N_MarkasNotReleaseEligible_Node0_action N_MarkasNotReleaseEligible_Node0_action --> E_MarkasNotReleaseEligible S_MarkasNotReleaseEligible --> N_MarkasNotReleaseEligible_Node0 N_MarkasNotReleaseEligible_Node0 -- No --> E_MarkasNotReleaseEligible
File: GCX016.cbl
GIVEN:
Cargo has active hold conditions
WHEN:
The system processes cargo with active holds
THEN:
- The cargo is marked as not eligible for release
- The release eligibility counter is updated accordingly
β Consolidated Acceptance Criteria
- The system checks for manual release authorization → the manual release flag is evaluated to determine if special release authorization has been granted
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CheckManualReleaseFlag(["Start Step"])
E_CheckManualReleaseFlag(["End Step"])
N_CheckManualReleaseFlag_Node0{"The system checks for manual
release authorization"}:::decision N_CheckManualReleaseFlag_Node0_action["The manual release flag is
evaluated to determine if special
release authorization has been
granted"]:::main N_CheckManualReleaseFlag_Node0 -- Yes --> N_CheckManualReleaseFlag_Node0_action N_CheckManualReleaseFlag_Node0_action --> E_CheckManualReleaseFlag S_CheckManualReleaseFlag --> N_CheckManualReleaseFlag_Node0 N_CheckManualReleaseFlag_Node0 -- No --> E_CheckManualReleaseFlag
release authorization"}:::decision N_CheckManualReleaseFlag_Node0_action["The manual release flag is
evaluated to determine if special
release authorization has been
granted"]:::main N_CheckManualReleaseFlag_Node0 -- Yes --> N_CheckManualReleaseFlag_Node0_action N_CheckManualReleaseFlag_Node0_action --> E_CheckManualReleaseFlag S_CheckManualReleaseFlag --> N_CheckManualReleaseFlag_Node0 N_CheckManualReleaseFlag_Node0 -- No --> E_CheckManualReleaseFlag
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
Cargo does not have active holds or is in released status
WHEN:
The system checks for manual release authorization
THEN:
The manual release flag is evaluated to determine if special release authorization has been granted
β Consolidated Acceptance Criteria
- If manual release authorization → if manual release is authorized, cargo is marked as release eligible, otherwise quantity validation is performed
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ManuallyReleased(["Start Step"])
E_ManuallyReleased(["End Step"])
N_ManuallyReleased_Node0{"The system evaluates manual release
authorization"}:::decision N_ManuallyReleased_Node0_action["If manual release is authorized,
cargo is marked as release eligible,
otherwise quantity validation is
performed"]:::main N_ManuallyReleased_Node0 -- Yes --> N_ManuallyReleased_Node0_action N_ManuallyReleased_Node0_action --> E_ManuallyReleased S_ManuallyReleased --> N_ManuallyReleased_Node0 N_ManuallyReleased_Node0 -- No --> E_ManuallyReleased
authorization"}:::decision N_ManuallyReleased_Node0_action["If manual release is authorized,
cargo is marked as release eligible,
otherwise quantity validation is
performed"]:::main N_ManuallyReleased_Node0 -- Yes --> N_ManuallyReleased_Node0_action N_ManuallyReleased_Node0_action --> E_ManuallyReleased S_ManuallyReleased --> N_ManuallyReleased_Node0 N_ManuallyReleased_Node0 -- No --> E_ManuallyReleased
File: GCX016.cbl
GIVEN:
Manual release flag has been checked
WHEN:
The system evaluates manual release authorization
THEN:
If manual release is authorized, cargo is marked as release eligible, otherwise quantity validation is performed
β Consolidated Acceptance Criteria
- The system processes cargo with release authorization → the cargo is marked as eligible for release and the release eligibility counter is updated
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MarkasReleaseEligible(["Start Step"])
E_MarkasReleaseEligible(["End Step"])
N_MarkasReleaseEligible_Node0{"The system processes cargo with
release authorization"}:::decision N_MarkasReleaseEligible_Node0_action["The cargo is marked as eligible for
release and the release eligibility
counter is updated"]:::main N_MarkasReleaseEligible_Node0 -- Yes --> N_MarkasReleaseEligible_Node0_action N_MarkasReleaseEligible_Node0_action --> E_MarkasReleaseEligible S_MarkasReleaseEligible --> N_MarkasReleaseEligible_Node0 N_MarkasReleaseEligible_Node0 -- No --> E_MarkasReleaseEligible
release authorization"}:::decision N_MarkasReleaseEligible_Node0_action["The cargo is marked as eligible for
release and the release eligibility
counter is updated"]:::main N_MarkasReleaseEligible_Node0 -- Yes --> N_MarkasReleaseEligible_Node0_action N_MarkasReleaseEligible_Node0_action --> E_MarkasReleaseEligible S_MarkasReleaseEligible --> N_MarkasReleaseEligible_Node0 N_MarkasReleaseEligible_Node0 -- No --> E_MarkasReleaseEligible
File: GCX016.cbl
GIVEN:
Cargo has manual release authorization or passes all validation checks
WHEN:
The system processes cargo with release authorization
THEN:
- The cargo is marked as eligible for release
- The release eligibility counter is updated
β Consolidated Acceptance Criteria
- The system performs quantity validation for release eligibility → cargo quantities are compared against expected values and release thresholds to determine validation status
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CheckQuantityValidation(["Start Step"])
E_CheckQuantityValidation(["End Step"])
N_CheckQuantityValidation_Node0{"The system performs quantity
validation for release eligibility"}:::decision N_CheckQuantityValidation_Node0_action["Cargo quantities are compared
against expected values and release
thresholds to determine validation
status"]:::main N_CheckQuantityValidation_Node0 -- Yes --> N_CheckQuantityValidation_Node0_action N_CheckQuantityValidation_Node0_action --> E_CheckQuantityValidation S_CheckQuantityValidation --> N_CheckQuantityValidation_Node0 N_CheckQuantityValidation_Node0 -- No --> E_CheckQuantityValidation
validation for release eligibility"}:::decision N_CheckQuantityValidation_Node0_action["Cargo quantities are compared
against expected values and release
thresholds to determine validation
status"]:::main N_CheckQuantityValidation_Node0 -- Yes --> N_CheckQuantityValidation_Node0_action N_CheckQuantityValidation_Node0_action --> E_CheckQuantityValidation S_CheckQuantityValidation --> N_CheckQuantityValidation_Node0 N_CheckQuantityValidation_Node0 -- No --> E_CheckQuantityValidation
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
Cargo does not have manual release authorization
WHEN:
The system performs quantity validation for release eligibility
THEN:
- Cargo quantities are compared against expected values
- Release thresholds to determine validation status
β Consolidated Acceptance Criteria
- The system processes cargo with quantity mismatches → the cargo is marked for partial release status and the release eligibility counter is updated to reflect partial release
- The system assigns release status → the system should mark the cargo as partially released
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MarkasPartialRelease(["Start Step"])
E_MarkasPartialRelease(["End Step"])
N_MarkasPartialRelease_Node0{"The system processes cargo with
quantity mismatches"}:::decision N_MarkasPartialRelease_Node0_action["The cargo is marked for partial
release status and the release
eligibility counter is updated to
reflect partial release"]:::main N_MarkasPartialRelease_Node0 -- Yes --> N_MarkasPartialRelease_Node0_action N_MarkasPartialRelease_Node0_action --> E_MarkasPartialRelease S_MarkasPartialRelease --> N_MarkasPartialRelease_Node0 N_MarkasPartialRelease_Node1{"The system assigns release status"}:::decision N_MarkasPartialRelease_Node1_action["The system should mark the cargo as
partially released"]:::main N_MarkasPartialRelease_Node1 -- Yes --> N_MarkasPartialRelease_Node1_action N_MarkasPartialRelease_Node1_action --> E_MarkasPartialRelease N_MarkasPartialRelease_Node0 -- No --> N_MarkasPartialRelease_Node1 N_MarkasPartialRelease_Node1 -- No --> E_MarkasPartialRelease
quantity mismatches"}:::decision N_MarkasPartialRelease_Node0_action["The cargo is marked for partial
release status and the release
eligibility counter is updated to
reflect partial release"]:::main N_MarkasPartialRelease_Node0 -- Yes --> N_MarkasPartialRelease_Node0_action N_MarkasPartialRelease_Node0_action --> E_MarkasPartialRelease S_MarkasPartialRelease --> N_MarkasPartialRelease_Node0 N_MarkasPartialRelease_Node1{"The system assigns release status"}:::decision N_MarkasPartialRelease_Node1_action["The system should mark the cargo as
partially released"]:::main N_MarkasPartialRelease_Node1 -- Yes --> N_MarkasPartialRelease_Node1_action N_MarkasPartialRelease_Node1_action --> E_MarkasPartialRelease N_MarkasPartialRelease_Node0 -- No --> N_MarkasPartialRelease_Node1 N_MarkasPartialRelease_Node1 -- No --> E_MarkasPartialRelease
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
Cargo quantities do not match full release requirements
WHEN:
The system processes cargo with quantity mismatches
THEN:
- The cargo is marked for partial release status
- The release eligibility counter is updated to reflect partial release
File: GCX016.cbl
GIVEN:
Release quantity is less than the total cargo quantity
WHEN:
The system assigns release status
THEN:
The system should mark the cargo as partially released
β Consolidated Acceptance Criteria
- The system updates release verification statistics → release eligibility counters are incremented based on the cargo's determined status (eligible, not eligible, or partial)
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UpdateReleaseEligibilityCounter(["Start Step"])
E_UpdateReleaseEligibilityCounter(["End Step"])
N_UpdateReleaseEligibilityCounter_Node0{"The system updates release
verification statistics"}:::decision N_UpdateReleaseEligibilityCounter_Node0_action["Release eligibility counters are
incremented based on the cargo s
determined status eligible, not
eligible, or partial"]:::main N_UpdateReleaseEligibilityCounter_Node0 -- Yes --> N_UpdateReleaseEligibilityCounter_Node0_action N_UpdateReleaseEligibilityCounter_Node0_action --> E_UpdateReleaseEligibilityCounter S_UpdateReleaseEligibilityCounter --> N_UpdateReleaseEligibilityCounter_Node0 N_UpdateReleaseEligibilityCounter_Node0 -- No --> E_UpdateReleaseEligibilityCounter
verification statistics"}:::decision N_UpdateReleaseEligibilityCounter_Node0_action["Release eligibility counters are
incremented based on the cargo s
determined status eligible, not
eligible, or partial"]:::main N_UpdateReleaseEligibilityCounter_Node0 -- Yes --> N_UpdateReleaseEligibilityCounter_Node0_action N_UpdateReleaseEligibilityCounter_Node0_action --> E_UpdateReleaseEligibilityCounter S_UpdateReleaseEligibilityCounter --> N_UpdateReleaseEligibilityCounter_Node0 N_UpdateReleaseEligibilityCounter_Node0 -- No --> E_UpdateReleaseEligibilityCounter
File: GCX016.cbl
GIVEN:
Cargo release eligibility has been determined
WHEN:
The system updates release verification statistics
THEN:
Release eligibility counters are incremented based on the cargo's determined status (eligible, not eligible, or partial)
β Consolidated Acceptance Criteria
- The system continues the multi-cargo verification process → the system positions to process the next cargo record in the car ID and waybill group
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MovetoNextCargoRecord(["Start Step"])
E_MovetoNextCargoRecord(["End Step"])
N_MovetoNextCargoRecord_Node0{"The system continues the
multi-cargo verification process"}:::decision N_MovetoNextCargoRecord_Node0_action["The system positions to process the
next cargo record in the car ID and
waybill group"]:::main N_MovetoNextCargoRecord_Node0 -- Yes --> N_MovetoNextCargoRecord_Node0_action N_MovetoNextCargoRecord_Node0_action --> E_MovetoNextCargoRecord S_MovetoNextCargoRecord --> N_MovetoNextCargoRecord_Node0 N_MovetoNextCargoRecord_Node0 -- No --> E_MovetoNextCargoRecord
multi-cargo verification process"}:::decision N_MovetoNextCargoRecord_Node0_action["The system positions to process the
next cargo record in the car ID and
waybill group"]:::main N_MovetoNextCargoRecord_Node0 -- Yes --> N_MovetoNextCargoRecord_Node0_action N_MovetoNextCargoRecord_Node0_action --> E_MovetoNextCargoRecord S_MovetoNextCargoRecord --> N_MovetoNextCargoRecord_Node0 N_MovetoNextCargoRecord_Node0 -- No --> E_MovetoNextCargoRecord
File: GCX016.cbl
GIVEN:
Current cargo record processing is complete
WHEN:
The system continues the multi-cargo verification process
THEN:
- The system positions to process the next cargo record in the car id
- Waybill group
β Consolidated Acceptance Criteria
- The system analyzes overall release verification results → individual cargo release statuses are consolidated to determine the overall release eligibility for the entire car and waybill group
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AnalyzeOverallReleaseStatus(["Start Step"])
E_AnalyzeOverallReleaseStatus(["End Step"])
N_AnalyzeOverallReleaseStatus_Node0{"The system analyzes overall release
verification results"}:::decision N_AnalyzeOverallReleaseStatus_Node0_action["Individual cargo release statuses
are consolidated to determine the
overall release eligibility for the
entire car and waybill group"]:::main N_AnalyzeOverallReleaseStatus_Node0 -- Yes --> N_AnalyzeOverallReleaseStatus_Node0_action N_AnalyzeOverallReleaseStatus_Node0_action --> E_AnalyzeOverallReleaseStatus S_AnalyzeOverallReleaseStatus --> N_AnalyzeOverallReleaseStatus_Node0 N_AnalyzeOverallReleaseStatus_Node0 -- No --> E_AnalyzeOverallReleaseStatus
verification results"}:::decision N_AnalyzeOverallReleaseStatus_Node0_action["Individual cargo release statuses
are consolidated to determine the
overall release eligibility for the
entire car and waybill group"]:::main N_AnalyzeOverallReleaseStatus_Node0 -- Yes --> N_AnalyzeOverallReleaseStatus_Node0_action N_AnalyzeOverallReleaseStatus_Node0_action --> E_AnalyzeOverallReleaseStatus S_AnalyzeOverallReleaseStatus --> N_AnalyzeOverallReleaseStatus_Node0 N_AnalyzeOverallReleaseStatus_Node0 -- No --> E_AnalyzeOverallReleaseStatus
File: GCX016.cbl
GIVEN:
All cargo records for the car ID and waybill have been processed
WHEN:
The system analyzes overall release verification results
THEN:
- Individual cargo release statuses are consolidated to determine the overall release eligibility for the entire car
- Waybill group
β Consolidated Acceptance Criteria
- The system determines final release authorization → if all cargo is release eligible, overall status is set to YES, otherwise overall status is set to NO
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AllCargoReleaseEligible(["Start Step"])
E_AllCargoReleaseEligible(["End Step"])
N_AllCargoReleaseEligible_Node0{"The system determines final release
authorization"}:::decision N_AllCargoReleaseEligible_Node0_action["If all cargo is release eligible,
overall status is set to YES,
otherwise overall status is set to
NO"]:::main N_AllCargoReleaseEligible_Node0 -- Yes --> N_AllCargoReleaseEligible_Node0_action N_AllCargoReleaseEligible_Node0_action --> E_AllCargoReleaseEligible S_AllCargoReleaseEligible --> N_AllCargoReleaseEligible_Node0 N_AllCargoReleaseEligible_Node0 -- No --> E_AllCargoReleaseEligible
authorization"}:::decision N_AllCargoReleaseEligible_Node0_action["If all cargo is release eligible,
overall status is set to YES,
otherwise overall status is set to
NO"]:::main N_AllCargoReleaseEligible_Node0 -- Yes --> N_AllCargoReleaseEligible_Node0_action N_AllCargoReleaseEligible_Node0_action --> E_AllCargoReleaseEligible S_AllCargoReleaseEligible --> N_AllCargoReleaseEligible_Node0 N_AllCargoReleaseEligible_Node0 -- No --> E_AllCargoReleaseEligible
File: GCX016.cbl
GIVEN:
Overall release status analysis is complete
WHEN:
The system determines final release authorization
THEN:
If all cargo is release eligible, overall status is set to YES, otherwise overall status is set to NO
β Consolidated Acceptance Criteria
- The system sets final release authorization → the overall release status is set to YES, indicating full authorization for release of all cargo
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetOverallReleaseStatusYES(["Start Step"])
E_SetOverallReleaseStatusYES(["End Step"])
N_SetOverallReleaseStatusYES_Node0{"The system sets final release
authorization"}:::decision N_SetOverallReleaseStatusYES_Node0_action["The overall release status is set
to YES, indicating full
authorization for release of all
cargo"]:::main N_SetOverallReleaseStatusYES_Node0 -- Yes --> N_SetOverallReleaseStatusYES_Node0_action N_SetOverallReleaseStatusYES_Node0_action --> E_SetOverallReleaseStatusYES S_SetOverallReleaseStatusYES --> N_SetOverallReleaseStatusYES_Node0 N_SetOverallReleaseStatusYES_Node0 -- No --> E_SetOverallReleaseStatusYES
authorization"}:::decision N_SetOverallReleaseStatusYES_Node0_action["The overall release status is set
to YES, indicating full
authorization for release of all
cargo"]:::main N_SetOverallReleaseStatusYES_Node0 -- Yes --> N_SetOverallReleaseStatusYES_Node0_action N_SetOverallReleaseStatusYES_Node0_action --> E_SetOverallReleaseStatusYES S_SetOverallReleaseStatusYES --> N_SetOverallReleaseStatusYES_Node0 N_SetOverallReleaseStatusYES_Node0 -- No --> E_SetOverallReleaseStatusYES
File: GCX016.cbl
GIVEN:
All cargo in the car and waybill group is release eligible
WHEN:
The system sets final release authorization
THEN:
The overall release status is set to YES, indicating full authorization for release of all cargo
β Consolidated Acceptance Criteria
- The system sets final release authorization → the overall release status is set to NO, preventing release of the entire car and waybill group
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetOverallReleaseStatusNO(["Start Step"])
E_SetOverallReleaseStatusNO(["End Step"])
N_SetOverallReleaseStatusNO_Node0{"The system sets final release
authorization"}:::decision N_SetOverallReleaseStatusNO_Node0_action["The overall release status is set
to NO, preventing release of the
entire car and waybill group"]:::main N_SetOverallReleaseStatusNO_Node0 -- Yes --> N_SetOverallReleaseStatusNO_Node0_action N_SetOverallReleaseStatusNO_Node0_action --> E_SetOverallReleaseStatusNO S_SetOverallReleaseStatusNO --> N_SetOverallReleaseStatusNO_Node0 N_SetOverallReleaseStatusNO_Node0 -- No --> E_SetOverallReleaseStatusNO
authorization"}:::decision N_SetOverallReleaseStatusNO_Node0_action["The overall release status is set
to NO, preventing release of the
entire car and waybill group"]:::main N_SetOverallReleaseStatusNO_Node0 -- Yes --> N_SetOverallReleaseStatusNO_Node0_action N_SetOverallReleaseStatusNO_Node0_action --> E_SetOverallReleaseStatusNO S_SetOverallReleaseStatusNO --> N_SetOverallReleaseStatusNO_Node0 N_SetOverallReleaseStatusNO_Node0 -- No --> E_SetOverallReleaseStatusNO
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
One or more cargo records in the car and waybill group are not release eligible
WHEN:
The system sets final release authorization
THEN:
- The overall release status is set to no, preventing release of the entire car
- Waybill group
β Consolidated Acceptance Criteria
- The system generates verification documentation → a detailed report is created showing all cargo evaluated, their individual statuses, and the final overall release determination
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GenerateReleaseVerificationReport(["Start Step"])
E_GenerateReleaseVerificationReport(["End Step"])
N_GenerateReleaseVerificationReport_Node0{"The system generates verification
documentation"}:::decision N_GenerateReleaseVerificationReport_Node0_action["A detailed report is created
showing all cargo evaluated, their
individual statuses, and the final
overall release determination"]:::main N_GenerateReleaseVerificationReport_Node0 -- Yes --> N_GenerateReleaseVerificationReport_Node0_action N_GenerateReleaseVerificationReport_Node0_action --> E_GenerateReleaseVerificationReport S_GenerateReleaseVerificationReport --> N_GenerateReleaseVerificationReport_Node0 N_GenerateReleaseVerificationReport_Node0 -- No --> E_GenerateReleaseVerificationReport
documentation"}:::decision N_GenerateReleaseVerificationReport_Node0_action["A detailed report is created
showing all cargo evaluated, their
individual statuses, and the final
overall release determination"]:::main N_GenerateReleaseVerificationReport_Node0 -- Yes --> N_GenerateReleaseVerificationReport_Node0_action N_GenerateReleaseVerificationReport_Node0_action --> E_GenerateReleaseVerificationReport S_GenerateReleaseVerificationReport --> N_GenerateReleaseVerificationReport_Node0 N_GenerateReleaseVerificationReport_Node0 -- No --> E_GenerateReleaseVerificationReport
File: GCX016.cbl
GIVEN:
Release verification analysis is complete
WHEN:
The system generates verification documentation
THEN:
A detailed report is created showing all cargo evaluated, their individual statuses, and the final overall release determination
β Consolidated Acceptance Criteria
- The system returns verification results → the final release status (YES/NO) and supporting verification details are returned to enable appropriate cargo handling decisions
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ReturnReleaseVerificationResult(["Start Step"])
E_ReturnReleaseVerificationResult(["End Step"])
N_ReturnReleaseVerificationResult_Node0{"The system returns verification
results"}:::decision N_ReturnReleaseVerificationResult_Node0_action["The final release status YESNO and
supporting verification details are
returned to enable appropriate cargo
handling decisions"]:::main N_ReturnReleaseVerificationResult_Node0 -- Yes --> N_ReturnReleaseVerificationResult_Node0_action N_ReturnReleaseVerificationResult_Node0_action --> E_ReturnReleaseVerificationResult S_ReturnReleaseVerificationResult --> N_ReturnReleaseVerificationResult_Node0 N_ReturnReleaseVerificationResult_Node0 -- No --> E_ReturnReleaseVerificationResult
results"}:::decision N_ReturnReleaseVerificationResult_Node0_action["The final release status YESNO and
supporting verification details are
returned to enable appropriate cargo
handling decisions"]:::main N_ReturnReleaseVerificationResult_Node0 -- Yes --> N_ReturnReleaseVerificationResult_Node0_action N_ReturnReleaseVerificationResult_Node0_action --> E_ReturnReleaseVerificationResult S_ReturnReleaseVerificationResult --> N_ReturnReleaseVerificationResult_Node0 N_ReturnReleaseVerificationResult_Node0 -- No --> E_ReturnReleaseVerificationResult
File: GCX016.cbl
GIVEN:
Release verification process is complete and documented
WHEN:
The system returns verification results
THEN:
The final release status (YES/NO) and supporting verification details are returned to enable appropriate cargo handling decisions
β Consolidated Acceptance Criteria
- The system validates manual release conditions including broker authorization and cargo status → the system confirms manual release is valid and clears destination index for further processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ValidateManualReleaseConditions(["Start Step"])
E_ValidateManualReleaseConditions(["End Step"])
N_ValidateManualReleaseConditions_Node0{"The system validates manual release
conditions including broker
authorization and cargo status"}:::decision N_ValidateManualReleaseConditions_Node0_action["The system confirms manual release
is valid and clears destination
index for further processing"]:::main N_ValidateManualReleaseConditions_Node0 -- Yes --> N_ValidateManualReleaseConditions_Node0_action N_ValidateManualReleaseConditions_Node0_action --> E_ValidateManualReleaseConditions S_ValidateManualReleaseConditions --> N_ValidateManualReleaseConditions_Node0 N_ValidateManualReleaseConditions_Node0 -- No --> E_ValidateManualReleaseConditions
conditions including broker
authorization and cargo status"}:::decision N_ValidateManualReleaseConditions_Node0_action["The system confirms manual release
is valid and clears destination
index for further processing"]:::main N_ValidateManualReleaseConditions_Node0 -- Yes --> N_ValidateManualReleaseConditions_Node0_action N_ValidateManualReleaseConditions_Node0_action --> E_ValidateManualReleaseConditions S_ValidateManualReleaseConditions --> N_ValidateManualReleaseConditions_Node0 N_ValidateManualReleaseConditions_Node0 -- No --> E_ValidateManualReleaseConditions
File: GCX016.cbl
GIVEN:
Cargo has manual release flag set
WHEN:
- The system validates manual release conditions including broker authorization
- Cargo status
THEN:
- The system confirms manual release is valid
- Clears destination index for further processing
β Consolidated Acceptance Criteria
- The system examines cargo status for hold conditions including border holds, destination holds, FDA holds, or seizure status → the system identifies if cargo is held and determines the type and location of hold
- If if cargo has any active hold conditions (border hold, destination hold, FDA hold, or other hold types) → if cargo is held, manual release processing continues; if not held, the request is rejected
- If the current cargo status from GCCC-CARGO-ROOT record → if cargo is currently held (has any hold status flags active), proceed with setting proceed status flag, otherwise skip proceed processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CargoCurrentlyHeld(["Start Step"])
E_CargoCurrentlyHeld(["End Step"])
N_CargoCurrentlyHeld_Node0{"The system examines cargo status
for hold conditions including border
holds, destination holds, FDA holds,
or seizure status"}:::decision N_CargoCurrentlyHeld_Node0_action["The system identifies if cargo is
held and determines the type and
location of hold"]:::main N_CargoCurrentlyHeld_Node0 -- Yes --> N_CargoCurrentlyHeld_Node0_action N_CargoCurrentlyHeld_Node0_action --> E_CargoCurrentlyHeld S_CargoCurrentlyHeld --> N_CargoCurrentlyHeld_Node0 N_CargoCurrentlyHeld_Node1{"The system evaluates if cargo has
any active hold conditions border
hold, destination hold, FDA hold, or
other hold types"}:::decision N_CargoCurrentlyHeld_Node1_action["If cargo is held, manual release
processing continues if not held,
the request is rejected"]:::exclusion N_CargoCurrentlyHeld_Node1 -- Yes -->|Alternative| N_CargoCurrentlyHeld_Node1_action N_CargoCurrentlyHeld_Node1_action --> E_CargoCurrentlyHeld N_CargoCurrentlyHeld_Node0 -- No --> N_CargoCurrentlyHeld_Node1 N_CargoCurrentlyHeld_Node2{"The system evaluates the current
cargo status from GCCC-CARGO-ROOT
record"}:::decision N_CargoCurrentlyHeld_Node2_action["If cargo is currently held has any
hold status flags active, proceed
with setting proceed status flag,
otherwise skip proceed processing"]:::main N_CargoCurrentlyHeld_Node2 -- Yes --> N_CargoCurrentlyHeld_Node2_action N_CargoCurrentlyHeld_Node2_action --> E_CargoCurrentlyHeld N_CargoCurrentlyHeld_Node1 -- No --> N_CargoCurrentlyHeld_Node2 N_CargoCurrentlyHeld_Node2 -- No --> E_CargoCurrentlyHeld
for hold conditions including border
holds, destination holds, FDA holds,
or seizure status"}:::decision N_CargoCurrentlyHeld_Node0_action["The system identifies if cargo is
held and determines the type and
location of hold"]:::main N_CargoCurrentlyHeld_Node0 -- Yes --> N_CargoCurrentlyHeld_Node0_action N_CargoCurrentlyHeld_Node0_action --> E_CargoCurrentlyHeld S_CargoCurrentlyHeld --> N_CargoCurrentlyHeld_Node0 N_CargoCurrentlyHeld_Node1{"The system evaluates if cargo has
any active hold conditions border
hold, destination hold, FDA hold, or
other hold types"}:::decision N_CargoCurrentlyHeld_Node1_action["If cargo is held, manual release
processing continues if not held,
the request is rejected"]:::exclusion N_CargoCurrentlyHeld_Node1 -- Yes -->|Alternative| N_CargoCurrentlyHeld_Node1_action N_CargoCurrentlyHeld_Node1_action --> E_CargoCurrentlyHeld N_CargoCurrentlyHeld_Node0 -- No --> N_CargoCurrentlyHeld_Node1 N_CargoCurrentlyHeld_Node2{"The system evaluates the current
cargo status from GCCC-CARGO-ROOT
record"}:::decision N_CargoCurrentlyHeld_Node2_action["If cargo is currently held has any
hold status flags active, proceed
with setting proceed status flag,
otherwise skip proceed processing"]:::main N_CargoCurrentlyHeld_Node2 -- Yes --> N_CargoCurrentlyHeld_Node2_action N_CargoCurrentlyHeld_Node2_action --> E_CargoCurrentlyHeld N_CargoCurrentlyHeld_Node1 -- No --> N_CargoCurrentlyHeld_Node2 N_CargoCurrentlyHeld_Node2 -- No --> E_CargoCurrentlyHeld
File: GCX016.cbl
GIVEN:
A cargo record with current status information
WHEN:
The system examines cargo status for hold conditions including border holds, destination holds, FDA holds, or seizure status
THEN:
- The system identifies if cargo is held
- Determines the type
- Location of hold
File: GCX016.cbl
GIVEN:
CPRS cargo with current status information available
WHEN:
The system evaluates if cargo has any active hold conditions (border hold, destination hold, FDA hold, or other hold types)
THEN:
If cargo is held, manual release processing continues; if not held, the request is rejected
File: GCX016.cbl
GIVEN:
Proceed flag is set in status array and cargo record exists with current status information
WHEN:
The system evaluates the current cargo status from GCCC-CARGO-ROOT record
THEN:
If cargo is currently held (has any hold status flags active), proceed with setting proceed status flag, otherwise skip proceed processing
β Consolidated Acceptance Criteria
- The system checks hold location information in cargo status → the system identifies whether cargo is held at border, destination, or both locations and validates release authority for that location
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CheckHoldLocationBordervsDestination(["Start Step"])
E_CheckHoldLocationBordervsDestination(["End Step"])
N_CheckHoldLocationBordervsDestination_Node0{"The system checks hold location
information in cargo status"}:::decision N_CheckHoldLocationBordervsDestination_Node0_action["The system identifies whether cargo
is held at border, destination, or
both locations and validates release
authority for that location"]:::main N_CheckHoldLocationBordervsDestination_Node0 -- Yes --> N_CheckHoldLocationBordervsDestination_Node0_action N_CheckHoldLocationBordervsDestination_Node0_action --> E_CheckHoldLocationBordervsDestination S_CheckHoldLocationBordervsDestination --> N_CheckHoldLocationBordervsDestination_Node0 N_CheckHoldLocationBordervsDestination_Node0 -- No --> E_CheckHoldLocationBordervsDestination
information in cargo status"}:::decision N_CheckHoldLocationBordervsDestination_Node0_action["The system identifies whether cargo
is held at border, destination, or
both locations and validates release
authority for that location"]:::main N_CheckHoldLocationBordervsDestination_Node0 -- Yes --> N_CheckHoldLocationBordervsDestination_Node0_action N_CheckHoldLocationBordervsDestination_Node0_action --> E_CheckHoldLocationBordervsDestination S_CheckHoldLocationBordervsDestination --> N_CheckHoldLocationBordervsDestination_Node0 N_CheckHoldLocationBordervsDestination_Node0 -- No --> E_CheckHoldLocationBordervsDestination
File: GCX016.cbl
GIVEN:
Cargo is currently held
WHEN:
The system checks hold location information in cargo status
THEN:
- The system identifies whether cargo is held at border, destination, or both locations
- Validates release authority for that location
β Consolidated Acceptance Criteria
- The system validates if the disposition code has authority to release the specific hold type at the specific location → the system confirms hold can be released or rejects release attempt if disposition code lacks authority
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_HoldStatusValidforRelease(["Start Step"])
E_HoldStatusValidforRelease(["End Step"])
N_HoldStatusValidforRelease_Node0{"The system validates if the
disposition code has authority to
release the specific hold type at
the specific location"}:::decision N_HoldStatusValidforRelease_Node0_action["The system confirms hold can be
released or rejects release attempt
if disposition code lacks authority"]:::main N_HoldStatusValidforRelease_Node0 -- Yes --> N_HoldStatusValidforRelease_Node0_action N_HoldStatusValidforRelease_Node0_action --> E_HoldStatusValidforRelease S_HoldStatusValidforRelease --> N_HoldStatusValidforRelease_Node0 N_HoldStatusValidforRelease_Node0 -- No --> E_HoldStatusValidforRelease
disposition code has authority to
release the specific hold type at
the specific location"}:::decision N_HoldStatusValidforRelease_Node0_action["The system confirms hold can be
released or rejects release attempt
if disposition code lacks authority"]:::main N_HoldStatusValidforRelease_Node0 -- Yes --> N_HoldStatusValidforRelease_Node0_action N_HoldStatusValidforRelease_Node0_action --> E_HoldStatusValidforRelease S_HoldStatusValidforRelease --> N_HoldStatusValidforRelease_Node0 N_HoldStatusValidforRelease_Node0 -- No --> E_HoldStatusValidforRelease
File: GCX016.cbl
GIVEN:
Cargo is held at a specific location with a particular hold type
WHEN:
The system validates if the disposition code has authority to release the specific hold type at the specific location
THEN:
The system confirms hold can be released or rejects release attempt if disposition code lacks authority
β Consolidated Acceptance Criteria
- The system compares requested release quantity against total cargo quantity and existing released quantity → the system validates that total released quantity does not exceed total cargo quantity and prevents negative quantities
- The system validates release quantities against total cargo quantities → if released quantity is less than total quantity, maintain partial release status, if equal or greater, allow full release consideration
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ValidateReleaseQuantities(["Start Step"])
E_ValidateReleaseQuantities(["End Step"])
N_ValidateReleaseQuantities_Node0{"The system compares requested
release quantity against total cargo
quantity and existing released
quantity"}:::decision N_ValidateReleaseQuantities_Node0_action["The system validates that total
released quantity does not exceed
total cargo quantity and prevents
negative quantities"]:::main N_ValidateReleaseQuantities_Node0 -- Yes --> N_ValidateReleaseQuantities_Node0_action N_ValidateReleaseQuantities_Node0_action --> E_ValidateReleaseQuantities S_ValidateReleaseQuantities --> N_ValidateReleaseQuantities_Node0 N_ValidateReleaseQuantities_Node1{"The system validates release
quantities against total cargo
quantities"}:::decision N_ValidateReleaseQuantities_Node1_action["If released quantity is less than
total quantity, maintain partial
release status, if equal or greater,
allow full release consideration"]:::main N_ValidateReleaseQuantities_Node1 -- Yes --> N_ValidateReleaseQuantities_Node1_action N_ValidateReleaseQuantities_Node1_action --> E_ValidateReleaseQuantities N_ValidateReleaseQuantities_Node0 -- No --> N_ValidateReleaseQuantities_Node1 N_ValidateReleaseQuantities_Node1 -- No --> E_ValidateReleaseQuantities
release quantity against total cargo
quantity and existing released
quantity"}:::decision N_ValidateReleaseQuantities_Node0_action["The system validates that total
released quantity does not exceed
total cargo quantity and prevents
negative quantities"]:::main N_ValidateReleaseQuantities_Node0 -- Yes --> N_ValidateReleaseQuantities_Node0_action N_ValidateReleaseQuantities_Node0_action --> E_ValidateReleaseQuantities S_ValidateReleaseQuantities --> N_ValidateReleaseQuantities_Node0 N_ValidateReleaseQuantities_Node1{"The system validates release
quantities against total cargo
quantities"}:::decision N_ValidateReleaseQuantities_Node1_action["If released quantity is less than
total quantity, maintain partial
release status, if equal or greater,
allow full release consideration"]:::main N_ValidateReleaseQuantities_Node1 -- Yes --> N_ValidateReleaseQuantities_Node1_action N_ValidateReleaseQuantities_Node1_action --> E_ValidateReleaseQuantities N_ValidateReleaseQuantities_Node0 -- No --> N_ValidateReleaseQuantities_Node1 N_ValidateReleaseQuantities_Node1 -- No --> E_ValidateReleaseQuantities
File: GCX016.cbl
GIVEN:
A release request with specified quantities
WHEN:
- The system compares requested release quantity against total cargo quantity
- Existing released quantity
THEN:
- The system validates that total released quantity does not exceed total cargo quantity
- Prevents negative quantities
File: GCX016.cbl
GIVEN:
PTT status has been validated
WHEN:
The system validates release quantities against total cargo quantities
THEN:
If released quantity is less than total quantity, maintain partial release status, if equal or greater, allow full release consideration
β Consolidated Acceptance Criteria
- The system calculates total released quantity including the new release amount → the system confirms total released quantity is less than or equal to total cargo quantity, or rejects the release if it would exceed total
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ReleasedQuantityTotalQuantity(["Start Step"])
E_ReleasedQuantityTotalQuantity(["End Step"])
N_ReleasedQuantityTotalQuantity_Node0{"The system calculates total
released quantity including the new
release amount"}:::decision N_ReleasedQuantityTotalQuantity_Node0_action["The system confirms total released
quantity is less than or equal to
total cargo quantity, or rejects the
release if it would exceed total"]:::main N_ReleasedQuantityTotalQuantity_Node0 -- Yes --> N_ReleasedQuantityTotalQuantity_Node0_action N_ReleasedQuantityTotalQuantity_Node0_action --> E_ReleasedQuantityTotalQuantity S_ReleasedQuantityTotalQuantity --> N_ReleasedQuantityTotalQuantity_Node0 N_ReleasedQuantityTotalQuantity_Node0 -- No --> E_ReleasedQuantityTotalQuantity
released quantity including the new
release amount"}:::decision N_ReleasedQuantityTotalQuantity_Node0_action["The system confirms total released
quantity is less than or equal to
total cargo quantity, or rejects the
release if it would exceed total"]:::main N_ReleasedQuantityTotalQuantity_Node0 -- Yes --> N_ReleasedQuantityTotalQuantity_Node0_action N_ReleasedQuantityTotalQuantity_Node0_action --> E_ReleasedQuantityTotalQuantity S_ReleasedQuantityTotalQuantity --> N_ReleasedQuantityTotalQuantity_Node0 N_ReleasedQuantityTotalQuantity_Node0 -- No --> E_ReleasedQuantityTotalQuantity
File: GCX016.cbl
GIVEN:
Cargo with existing released quantities and a new release request
WHEN:
The system calculates total released quantity including the new release amount
THEN:
The system confirms total released quantity is less than or equal to total cargo quantity, or rejects the release if it would exceed total
β Consolidated Acceptance Criteria
- The system checks PTT permit validity and associated conditions → the system validates PTT permit is current and allows for the requested release action
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CheckPTTStatus(["Start Step"])
E_CheckPTTStatus(["End Step"])
N_CheckPTTStatus_Node0{"The system checks PTT permit
validity and associated conditions"}:::decision N_CheckPTTStatus_Node0_action["The system validates PTT permit is
current and allows for the requested
release action"]:::main N_CheckPTTStatus_Node0 -- Yes --> N_CheckPTTStatus_Node0_action N_CheckPTTStatus_Node0_action --> E_CheckPTTStatus S_CheckPTTStatus --> N_CheckPTTStatus_Node0 N_CheckPTTStatus_Node0 -- No --> E_CheckPTTStatus
validity and associated conditions"}:::decision N_CheckPTTStatus_Node0_action["The system validates PTT permit is
current and allows for the requested
release action"]:::main N_CheckPTTStatus_Node0 -- Yes --> N_CheckPTTStatus_Node0_action N_CheckPTTStatus_Node0_action --> E_CheckPTTStatus S_CheckPTTStatus --> N_CheckPTTStatus_Node0 N_CheckPTTStatus_Node0 -- No --> E_CheckPTTStatus
File: GCX016.cbl
GIVEN:
Cargo with PTT (Proceed to Transfer) status
WHEN:
- The system checks ptt permit validity
- Associated conditions
THEN:
- The system validates ptt permit is current
- Allows for the requested release action
β Consolidated Acceptance Criteria
- The system validates PTT permit dates, conditions, and authorization → the system confirms PTT permit is valid for current release request or rejects if permit is expired or invalid
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_PTTPermitValid(["Start Step"])
E_PTTPermitValid(["End Step"])
N_PTTPermitValid_Node0{"The system validates PTT permit
dates, conditions, and authorization"}:::decision N_PTTPermitValid_Node0_action["The system confirms PTT permit is
valid for current release request or
rejects if permit is expired or
invalid"]:::main N_PTTPermitValid_Node0 -- Yes --> N_PTTPermitValid_Node0_action N_PTTPermitValid_Node0_action --> E_PTTPermitValid S_PTTPermitValid --> N_PTTPermitValid_Node0 N_PTTPermitValid_Node0 -- No --> E_PTTPermitValid
dates, conditions, and authorization"}:::decision N_PTTPermitValid_Node0_action["The system confirms PTT permit is
valid for current release request or
rejects if permit is expired or
invalid"]:::main N_PTTPermitValid_Node0 -- Yes --> N_PTTPermitValid_Node0_action N_PTTPermitValid_Node0_action --> E_PTTPermitValid S_PTTPermitValid --> N_PTTPermitValid_Node0 N_PTTPermitValid_Node0 -- No --> E_PTTPermitValid
File: GCX016.cbl
GIVEN:
Cargo with PTT status and associated permit information
WHEN:
The system validates PTT permit dates, conditions, and authorization
THEN:
The system confirms PTT permit is valid for current release request or rejects if permit is expired or invalid
β Consolidated Acceptance Criteria
- The system processes the disposition code and checks for existing counterpart codes in cargo status → the system removes all applicable counterpart codes before applying the new disposition code
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ValidateCounterpartCodesRemoved(["Start Step"])
E_ValidateCounterpartCodesRemoved(["End Step"])
N_ValidateCounterpartCodesRemoved_Node0{"The system processes the
disposition code and checks for
existing counterpart codes in cargo
status"}:::decision N_ValidateCounterpartCodesRemoved_Node0_action["The system removes all applicable
counterpart codes before applying
the new disposition code"]:::main N_ValidateCounterpartCodesRemoved_Node0 -- Yes --> N_ValidateCounterpartCodesRemoved_Node0_action N_ValidateCounterpartCodesRemoved_Node0_action --> E_ValidateCounterpartCodesRemoved S_ValidateCounterpartCodesRemoved --> N_ValidateCounterpartCodesRemoved_Node0 N_ValidateCounterpartCodesRemoved_Node0 -- No --> E_ValidateCounterpartCodesRemoved
disposition code and checks for
existing counterpart codes in cargo
status"}:::decision N_ValidateCounterpartCodesRemoved_Node0_action["The system removes all applicable
counterpart codes before applying
the new disposition code"]:::main N_ValidateCounterpartCodesRemoved_Node0 -- Yes --> N_ValidateCounterpartCodesRemoved_Node0_action N_ValidateCounterpartCodesRemoved_Node0_action --> E_ValidateCounterpartCodesRemoved S_ValidateCounterpartCodesRemoved --> N_ValidateCounterpartCodesRemoved_Node0 N_ValidateCounterpartCodesRemoved_Node0 -- No --> E_ValidateCounterpartCodesRemoved
File: GCX016.cbl
GIVEN:
A disposition code that requires counterpart code removal
WHEN:
- The system processes the disposition code
- Checks for existing counterpart codes in cargo status
THEN:
The system removes all applicable counterpart codes before applying the new disposition code
β Consolidated Acceptance Criteria
- The system completes counterpart code removal process → the system confirms all applicable counterpart codes have been cleared from cargo status array
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AllCounterpartCodesCleared(["Start Step"])
E_AllCounterpartCodesCleared(["End Step"])
N_AllCounterpartCodesCleared_Node0{"The system completes counterpart
code removal process"}:::decision N_AllCounterpartCodesCleared_Node0_action["The system confirms all applicable
counterpart codes have been cleared
from cargo status array"]:::main N_AllCounterpartCodesCleared_Node0 -- Yes --> N_AllCounterpartCodesCleared_Node0_action N_AllCounterpartCodesCleared_Node0_action --> E_AllCounterpartCodesCleared S_AllCounterpartCodesCleared --> N_AllCounterpartCodesCleared_Node0 N_AllCounterpartCodesCleared_Node0 -- No --> E_AllCounterpartCodesCleared
code removal process"}:::decision N_AllCounterpartCodesCleared_Node0_action["The system confirms all applicable
counterpart codes have been cleared
from cargo status array"]:::main N_AllCounterpartCodesCleared_Node0 -- Yes --> N_AllCounterpartCodesCleared_Node0_action N_AllCounterpartCodesCleared_Node0_action --> E_AllCounterpartCodesCleared S_AllCounterpartCodesCleared --> N_AllCounterpartCodesCleared_Node0 N_AllCounterpartCodesCleared_Node0 -- No --> E_AllCounterpartCodesCleared
File: GCX016.cbl
GIVEN:
Disposition code processing that requires counterpart code removal
WHEN:
The system completes counterpart code removal process
THEN:
The system confirms all applicable counterpart codes have been cleared from cargo status array
β Consolidated Acceptance Criteria
- The system checks for FDA hold status in cargo disposition codes → the system identifies if cargo is under FDA hold and determines if release is permitted
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CheckFDAHoldStatus(["Start Step"])
E_CheckFDAHoldStatus(["End Step"])
N_CheckFDAHoldStatus_Node0{"The system checks for FDA hold
status in cargo disposition codes"}:::decision N_CheckFDAHoldStatus_Node0_action["The system identifies if cargo is
under FDA hold and determines if
release is permitted"]:::main N_CheckFDAHoldStatus_Node0 -- Yes --> N_CheckFDAHoldStatus_Node0_action N_CheckFDAHoldStatus_Node0_action --> E_CheckFDAHoldStatus S_CheckFDAHoldStatus --> N_CheckFDAHoldStatus_Node0 N_CheckFDAHoldStatus_Node0 -- No --> E_CheckFDAHoldStatus
status in cargo disposition codes"}:::decision N_CheckFDAHoldStatus_Node0_action["The system identifies if cargo is
under FDA hold and determines if
release is permitted"]:::main N_CheckFDAHoldStatus_Node0 -- Yes --> N_CheckFDAHoldStatus_Node0_action N_CheckFDAHoldStatus_Node0_action --> E_CheckFDAHoldStatus S_CheckFDAHoldStatus --> N_CheckFDAHoldStatus_Node0 N_CheckFDAHoldStatus_Node0 -- No --> E_CheckFDAHoldStatus
File: GCX016.cbl
GIVEN:
Cargo that may be subject to FDA regulations
WHEN:
The system checks for FDA hold status in cargo disposition codes
THEN:
- The system identifies if cargo is under fda hold
- Determines if release is permitted
β Consolidated Acceptance Criteria
- If if FDA hold conditions prevent release → the system blocks release if FDA hold is active or allows release if FDA clearance is obtained
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_FDAHoldPreventsRelease(["Start Step"])
E_FDAHoldPreventsRelease(["End Step"])
N_FDAHoldPreventsRelease_Node0{"The system evaluates if FDA hold
conditions prevent release"}:::decision N_FDAHoldPreventsRelease_Node0_action["The system blocks release if FDA
hold is active or allows release if
FDA clearance is obtained"]:::main N_FDAHoldPreventsRelease_Node0 -- Yes --> N_FDAHoldPreventsRelease_Node0_action N_FDAHoldPreventsRelease_Node0_action --> E_FDAHoldPreventsRelease S_FDAHoldPreventsRelease --> N_FDAHoldPreventsRelease_Node0 N_FDAHoldPreventsRelease_Node0 -- No --> E_FDAHoldPreventsRelease
conditions prevent release"}:::decision N_FDAHoldPreventsRelease_Node0_action["The system blocks release if FDA
hold is active or allows release if
FDA clearance is obtained"]:::main N_FDAHoldPreventsRelease_Node0 -- Yes --> N_FDAHoldPreventsRelease_Node0_action N_FDAHoldPreventsRelease_Node0_action --> E_FDAHoldPreventsRelease S_FDAHoldPreventsRelease --> N_FDAHoldPreventsRelease_Node0 N_FDAHoldPreventsRelease_Node0 -- No --> E_FDAHoldPreventsRelease
File: GCX016.cbl
GIVEN:
Cargo with FDA hold status
WHEN:
The system evaluates if FDA hold conditions prevent release
THEN:
The system blocks release if FDA hold is active or allows release if FDA clearance is obtained
β Consolidated Acceptance Criteria
- The system checks bond number, bond type, and bond status information → the system validates bond information is complete and bond is active for cargo movement
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ValidateBondInformation(["Start Step"])
E_ValidateBondInformation(["End Step"])
N_ValidateBondInformation_Node0{"The system checks bond number, bond
type, and bond status information"}:::decision N_ValidateBondInformation_Node0_action["The system validates bond
information is complete and bond is
active for cargo movement"]:::main N_ValidateBondInformation_Node0 -- Yes --> N_ValidateBondInformation_Node0_action N_ValidateBondInformation_Node0_action --> E_ValidateBondInformation S_ValidateBondInformation --> N_ValidateBondInformation_Node0 N_ValidateBondInformation_Node0 -- No --> E_ValidateBondInformation
type, and bond status information"}:::decision N_ValidateBondInformation_Node0_action["The system validates bond
information is complete and bond is
active for cargo movement"]:::main N_ValidateBondInformation_Node0 -- Yes --> N_ValidateBondInformation_Node0_action N_ValidateBondInformation_Node0_action --> E_ValidateBondInformation S_ValidateBondInformation --> N_ValidateBondInformation_Node0 N_ValidateBondInformation_Node0 -- No --> E_ValidateBondInformation
File: GCX016.cbl
GIVEN:
Cargo requiring bond validation for release
WHEN:
The system checks bond number, bond type, and bond status information
THEN:
- The system validates bond information is complete
- Bond is active for cargo movement
β Consolidated Acceptance Criteria
- The system checks if bond status and type allow for the requested release action → the system authorizes release if bond permits the action or rejects if bond restrictions apply
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_BondStatusAllowsRelease(["Start Step"])
E_BondStatusAllowsRelease(["End Step"])
N_BondStatusAllowsRelease_Node0{"The system checks if bond status
and type allow for the requested
release action"}:::decision N_BondStatusAllowsRelease_Node0_action["The system authorizes release if
bond permits the action or rejects
if bond restrictions apply"]:::main N_BondStatusAllowsRelease_Node0 -- Yes --> N_BondStatusAllowsRelease_Node0_action N_BondStatusAllowsRelease_Node0_action --> E_BondStatusAllowsRelease S_BondStatusAllowsRelease --> N_BondStatusAllowsRelease_Node0 N_BondStatusAllowsRelease_Node0 -- No --> E_BondStatusAllowsRelease
and type allow for the requested
release action"}:::decision N_BondStatusAllowsRelease_Node0_action["The system authorizes release if
bond permits the action or rejects
if bond restrictions apply"]:::main N_BondStatusAllowsRelease_Node0 -- Yes --> N_BondStatusAllowsRelease_Node0_action N_BondStatusAllowsRelease_Node0_action --> E_BondStatusAllowsRelease S_BondStatusAllowsRelease --> N_BondStatusAllowsRelease_Node0 N_BondStatusAllowsRelease_Node0 -- No --> E_BondStatusAllowsRelease
File: GCX016.cbl
GIVEN:
Cargo with validated bond information
WHEN:
- The system checks if bond status
- Type allow for the requested release action
THEN:
The system authorizes release if bond permits the action or rejects if bond restrictions apply
β Consolidated Acceptance Criteria
- The system checks for seizure status on cargo or equipment → the system identifies if seizure conditions exist that would prevent release
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CheckSeizureStatus(["Start Step"])
E_CheckSeizureStatus(["End Step"])
N_CheckSeizureStatus_Node0{"The system checks for seizure
status on cargo or equipment"}:::decision N_CheckSeizureStatus_Node0_action["The system identifies if seizure
conditions exist that would prevent
release"]:::main N_CheckSeizureStatus_Node0 -- Yes --> N_CheckSeizureStatus_Node0_action N_CheckSeizureStatus_Node0_action --> E_CheckSeizureStatus S_CheckSeizureStatus --> N_CheckSeizureStatus_Node0 N_CheckSeizureStatus_Node0 -- No --> E_CheckSeizureStatus
status on cargo or equipment"}:::decision N_CheckSeizureStatus_Node0_action["The system identifies if seizure
conditions exist that would prevent
release"]:::main N_CheckSeizureStatus_Node0 -- Yes --> N_CheckSeizureStatus_Node0_action N_CheckSeizureStatus_Node0_action --> E_CheckSeizureStatus S_CheckSeizureStatus --> N_CheckSeizureStatus_Node0 N_CheckSeizureStatus_Node0 -- No --> E_CheckSeizureStatus
File: GCX016.cbl
GIVEN:
Cargo and associated transportation equipment
WHEN:
The system checks for seizure status on cargo or equipment
THEN:
The system identifies if seizure conditions exist that would prevent release
β Consolidated Acceptance Criteria
- If if seizure status prevents cargo release → the system blocks release if equipment is seized or allows release if seizure is cleared
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_EquipmentSeized(["Start Step"])
E_EquipmentSeized(["End Step"])
N_EquipmentSeized_Node0{"The system evaluates if seizure
status prevents cargo release"}:::decision N_EquipmentSeized_Node0_action["The system blocks release if
equipment is seized or allows
release if seizure is cleared"]:::main N_EquipmentSeized_Node0 -- Yes --> N_EquipmentSeized_Node0_action N_EquipmentSeized_Node0_action --> E_EquipmentSeized S_EquipmentSeized --> N_EquipmentSeized_Node0 N_EquipmentSeized_Node0 -- No --> E_EquipmentSeized
status prevents cargo release"}:::decision N_EquipmentSeized_Node0_action["The system blocks release if
equipment is seized or allows
release if seizure is cleared"]:::main N_EquipmentSeized_Node0 -- Yes --> N_EquipmentSeized_Node0_action N_EquipmentSeized_Node0_action --> E_EquipmentSeized S_EquipmentSeized --> N_EquipmentSeized_Node0 N_EquipmentSeized_Node0 -- No --> E_EquipmentSeized
File: GCX016.cbl
GIVEN:
Cargo with potential equipment seizure status
WHEN:
The system evaluates if seizure status prevents cargo release
THEN:
The system blocks release if equipment is seized or allows release if seizure is cleared
β Consolidated Acceptance Criteria
- All validation criteria including quantities, holds, permits, bonds, and seizure status are satisfied → the system confirms release validation is successful and cargo is eligible for release processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ReleaseValidationPassed(["Start Step"])
E_ReleaseValidationPassed(["End Step"])
N_ReleaseValidationPassed_Node0{"All validation criteria including
quantities, holds, permits, bonds,
and seizure status are satisfied"}:::decision N_ReleaseValidationPassed_Node0_action["The system confirms release
validation is successful and cargo
is eligible for release processing"]:::main N_ReleaseValidationPassed_Node0 -- Yes --> N_ReleaseValidationPassed_Node0_action N_ReleaseValidationPassed_Node0_action --> E_ReleaseValidationPassed S_ReleaseValidationPassed --> N_ReleaseValidationPassed_Node0 N_ReleaseValidationPassed_Node0 -- No --> E_ReleaseValidationPassed
quantities, holds, permits, bonds,
and seizure status are satisfied"}:::decision N_ReleaseValidationPassed_Node0_action["The system confirms release
validation is successful and cargo
is eligible for release processing"]:::main N_ReleaseValidationPassed_Node0 -- Yes --> N_ReleaseValidationPassed_Node0_action N_ReleaseValidationPassed_Node0_action --> E_ReleaseValidationPassed S_ReleaseValidationPassed --> N_ReleaseValidationPassed_Node0 N_ReleaseValidationPassed_Node0 -- No --> E_ReleaseValidationPassed
File: GCX016.cbl
GIVEN:
Cargo that has passed all release validation checks
WHEN:
All validation criteria including quantities, holds, permits, bonds, and seizure status are satisfied
THEN:
- The system confirms release validation is successful
- Cargo is eligible for release processing
β Consolidated Acceptance Criteria
- Validation criteria for quantities, holds, permits, bonds, or seizure status are not satisfied → the system rejects the release request and maintains current cargo status
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ReleaseValidationFailed(["Start Step"])
E_ReleaseValidationFailed(["End Step"])
N_ReleaseValidationFailed_Node0{"Validation criteria for quantities,
holds, permits, bonds, or seizure
status are not satisfied"}:::decision N_ReleaseValidationFailed_Node0_action["The system rejects the release
request and maintains current cargo
status"]:::main N_ReleaseValidationFailed_Node0 -- Yes --> N_ReleaseValidationFailed_Node0_action N_ReleaseValidationFailed_Node0_action --> E_ReleaseValidationFailed S_ReleaseValidationFailed --> N_ReleaseValidationFailed_Node0 N_ReleaseValidationFailed_Node0 -- No --> E_ReleaseValidationFailed
holds, permits, bonds, or seizure
status are not satisfied"}:::decision N_ReleaseValidationFailed_Node0_action["The system rejects the release
request and maintains current cargo
status"]:::main N_ReleaseValidationFailed_Node0 -- Yes --> N_ReleaseValidationFailed_Node0_action N_ReleaseValidationFailed_Node0_action --> E_ReleaseValidationFailed S_ReleaseValidationFailed --> N_ReleaseValidationFailed_Node0 N_ReleaseValidationFailed_Node0 -- No --> E_ReleaseValidationFailed
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
Cargo that fails one or more release validation checks
WHEN:
Validation criteria for quantities, holds, permits, bonds, or seizure status are not satisfied
THEN:
- The system rejects the release request
- Maintains current cargo status
β Consolidated Acceptance Criteria
- The system completes all validation checks → the system logs validation results including specific reasons for success or failure and updates cargo processing history
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogValidationResults(["Start Step"])
E_LogValidationResults(["End Step"])
N_LogValidationResults_Node0{"The system completes all validation
checks"}:::decision N_LogValidationResults_Node0_action["The system logs validation results
including specific reasons for
success or failure and updates cargo
processing history"]:::main N_LogValidationResults_Node0 -- Yes --> N_LogValidationResults_Node0_action N_LogValidationResults_Node0_action --> E_LogValidationResults S_LogValidationResults --> N_LogValidationResults_Node0 N_LogValidationResults_Node0 -- No --> E_LogValidationResults
checks"}:::decision N_LogValidationResults_Node0_action["The system logs validation results
including specific reasons for
success or failure and updates cargo
processing history"]:::main N_LogValidationResults_Node0 -- Yes --> N_LogValidationResults_Node0_action N_LogValidationResults_Node0_action --> E_LogValidationResults S_LogValidationResults --> N_LogValidationResults_Node0 N_LogValidationResults_Node0 -- No --> E_LogValidationResults
File: GCX016.cbl
GIVEN:
Completed release validation process with success or failure outcome
WHEN:
The system completes all validation checks
THEN:
- The system logs validation results including specific reasons for success or failure
- Updates cargo processing history
β Consolidated Acceptance Criteria
- If the message type for formatting → the system selects either standard release format or broker bond message format based on the message classification
- The disposition code type is Manual Release (MRL) OR Auto Release (ARL) → skip formatting the disposition code message and proceed to standard cargo details formatting
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CheckMessageType(["Start Step"])
E_CheckMessageType(["End Step"])
N_CheckMessageType_Node0{"The system evaluates the message
type for formatting"}:::decision N_CheckMessageType_Node0_action["The system selects either standard
release format or broker bond
message format based on the message
classification"]:::main N_CheckMessageType_Node0 -- Yes --> N_CheckMessageType_Node0_action N_CheckMessageType_Node0_action --> E_CheckMessageType S_CheckMessageType --> N_CheckMessageType_Node0 N_CheckMessageType_Node1{"The disposition code type is Manual
Release MRL OR Auto Release ARL"}:::decision N_CheckMessageType_Node1_action["Skip formatting the disposition
code message and proceed to standard
cargo details formatting"]:::main N_CheckMessageType_Node1 -- Yes --> N_CheckMessageType_Node1_action N_CheckMessageType_Node1_action --> E_CheckMessageType N_CheckMessageType_Node0 -- No --> N_CheckMessageType_Node1 N_CheckMessageType_Node1 -- No --> E_CheckMessageType
type for formatting"}:::decision N_CheckMessageType_Node0_action["The system selects either standard
release format or broker bond
message format based on the message
classification"]:::main N_CheckMessageType_Node0 -- Yes --> N_CheckMessageType_Node0_action N_CheckMessageType_Node0_action --> E_CheckMessageType S_CheckMessageType --> N_CheckMessageType_Node0 N_CheckMessageType_Node1{"The disposition code type is Manual
Release MRL OR Auto Release ARL"}:::decision N_CheckMessageType_Node1_action["Skip formatting the disposition
code message and proceed to standard
cargo details formatting"]:::main N_CheckMessageType_Node1 -- Yes --> N_CheckMessageType_Node1_action N_CheckMessageType_Node1_action --> E_CheckMessageType N_CheckMessageType_Node0 -- No --> N_CheckMessageType_Node1 N_CheckMessageType_Node1 -- No --> E_CheckMessageType
File: GCX016.cbl
GIVEN:
A Merlin release message needs to be generated
WHEN:
The system evaluates the message type for formatting
THEN:
The system selects either standard release format or broker bond message format based on the message classification
File: GCX016.cbl
GIVEN:
A Merlin message is being formatted for cargo processing
WHEN:
The disposition code type is Manual Release (MRL) OR Auto Release (ARL)
THEN:
- Skip formatting the disposition code message
- Proceed to standard cargo details formatting
β Consolidated Acceptance Criteria
- Quantity information needs to be added → the system includes total quantities, release quantities, and remaining quantities in the message
- The system adds quantity details to the release message → released quantities, total quantities, and remaining quantities are included to show the impact of the release action
- Quantity changes need to be documented for audit purposes → the system logs original quantities, modified quantities, release quantities, and quantity calculation details in the audit entry
- The system adds quantity information to the message → total quantities and affected quantities are included in the hold message
- The system adds quantity information to release message → the system includes both total cargo quantity and current released quantity amounts in the message content
- Quantity information needs to be logged → all relevant quantity information including changes and current values are added to the log message
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AddQuantityInformation(["Start Step"])
E_AddQuantityInformation(["End Step"])
N_AddQuantityInformation_Node0{"Quantity information needs to be
added"}:::decision N_AddQuantityInformation_Node0_action["The system includes total
quantities, release quantities, and
remaining quantities in the message"]:::main N_AddQuantityInformation_Node0 -- Yes --> N_AddQuantityInformation_Node0_action N_AddQuantityInformation_Node0_action --> E_AddQuantityInformation S_AddQuantityInformation --> N_AddQuantityInformation_Node0 N_AddQuantityInformation_Node1{"The system adds quantity details to
the release message"}:::decision N_AddQuantityInformation_Node1_action["Released quantities, total
quantities, and remaining quantities
are included to show the impact of
the release action"]:::main N_AddQuantityInformation_Node1 -- Yes --> N_AddQuantityInformation_Node1_action N_AddQuantityInformation_Node1_action --> E_AddQuantityInformation N_AddQuantityInformation_Node0 -- No --> N_AddQuantityInformation_Node1 N_AddQuantityInformation_Node2{"Quantity changes need to be
documented for audit purposes"}:::decision N_AddQuantityInformation_Node2_action["The system logs original
quantities, modified quantities,
release quantities, and quantity
calculation details in the audit
entry"]:::main N_AddQuantityInformation_Node2 -- Yes --> N_AddQuantityInformation_Node2_action N_AddQuantityInformation_Node2_action --> E_AddQuantityInformation N_AddQuantityInformation_Node1 -- No --> N_AddQuantityInformation_Node2 N_AddQuantityInformation_Node3{"The system adds quantity
information to the message"}:::decision N_AddQuantityInformation_Node3_action["Total quantities and affected
quantities are included in the hold
message"]:::main N_AddQuantityInformation_Node3 -- Yes --> N_AddQuantityInformation_Node3_action N_AddQuantityInformation_Node3_action --> E_AddQuantityInformation N_AddQuantityInformation_Node2 -- No --> N_AddQuantityInformation_Node3 N_AddQuantityInformation_Node4{"The system adds quantity
information to release message"}:::decision N_AddQuantityInformation_Node4_action["The system includes both total
cargo quantity and current released
quantity amounts in the message
content"]:::main N_AddQuantityInformation_Node4 -- Yes --> N_AddQuantityInformation_Node4_action N_AddQuantityInformation_Node4_action --> E_AddQuantityInformation N_AddQuantityInformation_Node3 -- No --> N_AddQuantityInformation_Node4 N_AddQuantityInformation_Node5{"Quantity information needs to be
logged"}:::decision N_AddQuantityInformation_Node5_action["All relevant quantity information
including changes and current values
are added to the log message"]:::main N_AddQuantityInformation_Node5 -- Yes --> N_AddQuantityInformation_Node5_action N_AddQuantityInformation_Node5_action --> E_AddQuantityInformation N_AddQuantityInformation_Node4 -- No --> N_AddQuantityInformation_Node5 N_AddQuantityInformation_Node5 -- No --> E_AddQuantityInformation
added"}:::decision N_AddQuantityInformation_Node0_action["The system includes total
quantities, release quantities, and
remaining quantities in the message"]:::main N_AddQuantityInformation_Node0 -- Yes --> N_AddQuantityInformation_Node0_action N_AddQuantityInformation_Node0_action --> E_AddQuantityInformation S_AddQuantityInformation --> N_AddQuantityInformation_Node0 N_AddQuantityInformation_Node1{"The system adds quantity details to
the release message"}:::decision N_AddQuantityInformation_Node1_action["Released quantities, total
quantities, and remaining quantities
are included to show the impact of
the release action"]:::main N_AddQuantityInformation_Node1 -- Yes --> N_AddQuantityInformation_Node1_action N_AddQuantityInformation_Node1_action --> E_AddQuantityInformation N_AddQuantityInformation_Node0 -- No --> N_AddQuantityInformation_Node1 N_AddQuantityInformation_Node2{"Quantity changes need to be
documented for audit purposes"}:::decision N_AddQuantityInformation_Node2_action["The system logs original
quantities, modified quantities,
release quantities, and quantity
calculation details in the audit
entry"]:::main N_AddQuantityInformation_Node2 -- Yes --> N_AddQuantityInformation_Node2_action N_AddQuantityInformation_Node2_action --> E_AddQuantityInformation N_AddQuantityInformation_Node1 -- No --> N_AddQuantityInformation_Node2 N_AddQuantityInformation_Node3{"The system adds quantity
information to the message"}:::decision N_AddQuantityInformation_Node3_action["Total quantities and affected
quantities are included in the hold
message"]:::main N_AddQuantityInformation_Node3 -- Yes --> N_AddQuantityInformation_Node3_action N_AddQuantityInformation_Node3_action --> E_AddQuantityInformation N_AddQuantityInformation_Node2 -- No --> N_AddQuantityInformation_Node3 N_AddQuantityInformation_Node4{"The system adds quantity
information to release message"}:::decision N_AddQuantityInformation_Node4_action["The system includes both total
cargo quantity and current released
quantity amounts in the message
content"]:::main N_AddQuantityInformation_Node4 -- Yes --> N_AddQuantityInformation_Node4_action N_AddQuantityInformation_Node4_action --> E_AddQuantityInformation N_AddQuantityInformation_Node3 -- No --> N_AddQuantityInformation_Node4 N_AddQuantityInformation_Node5{"Quantity information needs to be
logged"}:::decision N_AddQuantityInformation_Node5_action["All relevant quantity information
including changes and current values
are added to the log message"]:::main N_AddQuantityInformation_Node5 -- Yes --> N_AddQuantityInformation_Node5_action N_AddQuantityInformation_Node5_action --> E_AddQuantityInformation N_AddQuantityInformation_Node4 -- No --> N_AddQuantityInformation_Node5 N_AddQuantityInformation_Node5 -- No --> E_AddQuantityInformation
File: GCX016.cbl
GIVEN:
A release message contains disposition code details
WHEN:
Quantity information needs to be added
THEN:
The system includes total quantities, release quantities, and remaining quantities in the message
File: GCX016.cbl
GIVEN:
Disposition codes have been added and quantity information is available from cargo processing
WHEN:
The system adds quantity details to the release message
THEN:
Released quantities, total quantities, and remaining quantities are included to show the impact of the release action
File: GCX016.cbl
GIVEN:
Cargo quantities are being processed or modified
WHEN:
Quantity changes need to be documented for audit purposes
THEN:
The system logs original quantities, modified quantities, release quantities, and quantity calculation details in the audit entry
File: GCX016.cbl
GIVEN:
Hold message with cargo information exists
WHEN:
The system adds quantity information to the message
THEN:
- Total quantities
- Affected quantities are included in the hold message
File: GCX016.cbl
GIVEN:
A cargo record contains total quantity and current released quantity values
WHEN:
The system adds quantity information to release message
THEN:
- The system includes both total cargo quantity
- Current released quantity amounts in the message content
File: GCX016.cbl
GIVEN:
Cargo processing involves quantity changes
WHEN:
Quantity information needs to be logged
THEN:
- All relevant quantity information including changes
- Current values are added to the log message
β Consolidated Acceptance Criteria
- The system checks for K1 comment segments → if K1 comments are available, the system proceeds to include them; otherwise, it continues to quantity action formatting
- The system checks for available K1 comments → the system determines whether K1 comment information exists and should be included in the message
- The system checks for K1 comment availability → the system determines if K1 comment segments exist and are available for inclusion in the release message
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_K1CommentsAvailable(["Start Step"])
E_K1CommentsAvailable(["End Step"])
N_K1CommentsAvailable_Node0{"The system checks for K1 comment
segments"}:::decision N_K1CommentsAvailable_Node0_action["If K1 comments are available, the
system proceeds to include them
otherwise, it continues to quantity
action formatting"]:::main N_K1CommentsAvailable_Node0 -- Yes --> N_K1CommentsAvailable_Node0_action N_K1CommentsAvailable_Node0_action --> E_K1CommentsAvailable S_K1CommentsAvailable --> N_K1CommentsAvailable_Node0 N_K1CommentsAvailable_Node1{"The system checks for available K1
comments"}:::decision N_K1CommentsAvailable_Node1_action["The system determines whether K1
comment information exists and
should be included in the message"]:::main N_K1CommentsAvailable_Node1 -- Yes --> N_K1CommentsAvailable_Node1_action N_K1CommentsAvailable_Node1_action --> E_K1CommentsAvailable N_K1CommentsAvailable_Node0 -- No --> N_K1CommentsAvailable_Node1 N_K1CommentsAvailable_Node2{"The system checks for K1 comment
availability"}:::decision N_K1CommentsAvailable_Node2_action["The system determines if K1 comment
segments exist and are available for
inclusion in the release message"]:::main N_K1CommentsAvailable_Node2 -- Yes --> N_K1CommentsAvailable_Node2_action N_K1CommentsAvailable_Node2_action --> E_K1CommentsAvailable N_K1CommentsAvailable_Node1 -- No --> N_K1CommentsAvailable_Node2 N_K1CommentsAvailable_Node2 -- No --> E_K1CommentsAvailable
segments"}:::decision N_K1CommentsAvailable_Node0_action["If K1 comments are available, the
system proceeds to include them
otherwise, it continues to quantity
action formatting"]:::main N_K1CommentsAvailable_Node0 -- Yes --> N_K1CommentsAvailable_Node0_action N_K1CommentsAvailable_Node0_action --> E_K1CommentsAvailable S_K1CommentsAvailable --> N_K1CommentsAvailable_Node0 N_K1CommentsAvailable_Node1{"The system checks for available K1
comments"}:::decision N_K1CommentsAvailable_Node1_action["The system determines whether K1
comment information exists and
should be included in the message"]:::main N_K1CommentsAvailable_Node1 -- Yes --> N_K1CommentsAvailable_Node1_action N_K1CommentsAvailable_Node1_action --> E_K1CommentsAvailable N_K1CommentsAvailable_Node0 -- No --> N_K1CommentsAvailable_Node1 N_K1CommentsAvailable_Node2{"The system checks for K1 comment
availability"}:::decision N_K1CommentsAvailable_Node2_action["The system determines if K1 comment
segments exist and are available for
inclusion in the release message"]:::main N_K1CommentsAvailable_Node2 -- Yes --> N_K1CommentsAvailable_Node2_action N_K1CommentsAvailable_Node2_action --> E_K1CommentsAvailable N_K1CommentsAvailable_Node1 -- No --> N_K1CommentsAvailable_Node2 N_K1CommentsAvailable_Node2 -- No --> E_K1CommentsAvailable
File: GCX016.cbl
GIVEN:
A release message has quantity information
WHEN:
The system checks for K1 comment segments
THEN:
If K1 comments are available, the system proceeds to include them; otherwise, it continues to quantity action formatting
File: GCX016.cbl
GIVEN:
A disposition message is being formatted
WHEN:
The system checks for available K1 comments
THEN:
- The system determines whether k1 comment information exists
- Should be included in the message
File: GCX016.cbl
GIVEN:
A message processing transaction may contain K1 comment segments
WHEN:
The system checks for K1 comment availability
THEN:
- The system determines if k1 comment segments exist
- Are available for inclusion in the release message
β Consolidated Acceptance Criteria
- The system includes K1 comments in the message → the system adds up to 4 K1 comment segments to the release message content
- The system includes K1 comment segments in the message → the system adds up to four K1 comment segments to the release message content, respecting the maximum limit
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IncludeUpto4K1CommentSegments(["Start Step"])
E_IncludeUpto4K1CommentSegments(["End Step"])
N_IncludeUpto4K1CommentSegments_Node0{"The system includes K1 comments in
the message"}:::decision N_IncludeUpto4K1CommentSegments_Node0_action["The system adds up to 4 K1 comment
segments to the release message
content"]:::main N_IncludeUpto4K1CommentSegments_Node0 -- Yes --> N_IncludeUpto4K1CommentSegments_Node0_action N_IncludeUpto4K1CommentSegments_Node0_action --> E_IncludeUpto4K1CommentSegments S_IncludeUpto4K1CommentSegments --> N_IncludeUpto4K1CommentSegments_Node0 N_IncludeUpto4K1CommentSegments_Node1{"The system includes K1 comment
segments in the message"}:::decision N_IncludeUpto4K1CommentSegments_Node1_action["The system adds up to four K1
comment segments to the release
message content, respecting the
maximum limit"]:::main N_IncludeUpto4K1CommentSegments_Node1 -- Yes --> N_IncludeUpto4K1CommentSegments_Node1_action N_IncludeUpto4K1CommentSegments_Node1_action --> E_IncludeUpto4K1CommentSegments N_IncludeUpto4K1CommentSegments_Node0 -- No --> N_IncludeUpto4K1CommentSegments_Node1 N_IncludeUpto4K1CommentSegments_Node1 -- No --> E_IncludeUpto4K1CommentSegments
the message"}:::decision N_IncludeUpto4K1CommentSegments_Node0_action["The system adds up to 4 K1 comment
segments to the release message
content"]:::main N_IncludeUpto4K1CommentSegments_Node0 -- Yes --> N_IncludeUpto4K1CommentSegments_Node0_action N_IncludeUpto4K1CommentSegments_Node0_action --> E_IncludeUpto4K1CommentSegments S_IncludeUpto4K1CommentSegments --> N_IncludeUpto4K1CommentSegments_Node0 N_IncludeUpto4K1CommentSegments_Node1{"The system includes K1 comment
segments in the message"}:::decision N_IncludeUpto4K1CommentSegments_Node1_action["The system adds up to four K1
comment segments to the release
message content, respecting the
maximum limit"]:::main N_IncludeUpto4K1CommentSegments_Node1 -- Yes --> N_IncludeUpto4K1CommentSegments_Node1_action N_IncludeUpto4K1CommentSegments_Node1_action --> E_IncludeUpto4K1CommentSegments N_IncludeUpto4K1CommentSegments_Node0 -- No --> N_IncludeUpto4K1CommentSegments_Node1 N_IncludeUpto4K1CommentSegments_Node1 -- No --> E_IncludeUpto4K1CommentSegments
File: GCX016.cbl
GIVEN:
K1 comment segments are available
WHEN:
The system includes K1 comments in the message
THEN:
The system adds up to 4 K1 comment segments to the release message content
File: GCX016.cbl
GIVEN:
K1 comment segments are available for inclusion in release message
WHEN:
The system includes K1 comment segments in the message
THEN:
The system adds up to four K1 comment segments to the release message content, respecting the maximum limit
β Consolidated Acceptance Criteria
- If whether to show quantity operations → if quantity changes need to be displayed, the system shows add/subtract operations; otherwise, it proceeds to format equipment information
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ShowAddSubtractOperations(["Start Step"])
E_ShowAddSubtractOperations(["End Step"])
N_ShowAddSubtractOperations_Node0{"The system evaluates whether to
show quantity operations"}:::decision N_ShowAddSubtractOperations_Node0_action["If quantity changes need to be
displayed, the system shows
addsubtract operations otherwise, it
proceeds to format equipment
information"]:::main N_ShowAddSubtractOperations_Node0 -- Yes --> N_ShowAddSubtractOperations_Node0_action N_ShowAddSubtractOperations_Node0_action --> E_ShowAddSubtractOperations S_ShowAddSubtractOperations --> N_ShowAddSubtractOperations_Node0 N_ShowAddSubtractOperations_Node0 -- No --> E_ShowAddSubtractOperations
show quantity operations"}:::decision N_ShowAddSubtractOperations_Node0_action["If quantity changes need to be
displayed, the system shows
addsubtract operations otherwise, it
proceeds to format equipment
information"]:::main N_ShowAddSubtractOperations_Node0 -- Yes --> N_ShowAddSubtractOperations_Node0_action N_ShowAddSubtractOperations_Node0_action --> E_ShowAddSubtractOperations S_ShowAddSubtractOperations --> N_ShowAddSubtractOperations_Node0 N_ShowAddSubtractOperations_Node0 -- No --> E_ShowAddSubtractOperations
File: GCX016.cbl
GIVEN:
The release message formatting is in progress
WHEN:
The system evaluates whether to show quantity operations
THEN:
If quantity changes need to be displayed, the system shows add/subtract operations; otherwise, it proceeds to format equipment information
β Consolidated Acceptance Criteria
- The system formats quantity changes → the system shows the specific add or subtract operations being performed on the release quantities
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_DisplayQuantityChanges(["Start Step"])
E_DisplayQuantityChanges(["End Step"])
N_DisplayQuantityChanges_Node0{"The system formats quantity changes"}:::decision
N_DisplayQuantityChanges_Node0_action["The system shows the specific add
or subtract operations being
performed on the release quantities"]:::main N_DisplayQuantityChanges_Node0 -- Yes --> N_DisplayQuantityChanges_Node0_action N_DisplayQuantityChanges_Node0_action --> E_DisplayQuantityChanges S_DisplayQuantityChanges --> N_DisplayQuantityChanges_Node0 N_DisplayQuantityChanges_Node0 -- No --> E_DisplayQuantityChanges
or subtract operations being
performed on the release quantities"]:::main N_DisplayQuantityChanges_Node0 -- Yes --> N_DisplayQuantityChanges_Node0_action N_DisplayQuantityChanges_Node0_action --> E_DisplayQuantityChanges S_DisplayQuantityChanges --> N_DisplayQuantityChanges_Node0 N_DisplayQuantityChanges_Node0 -- No --> E_DisplayQuantityChanges
File: GCX016.cbl
GIVEN:
Quantity operations need to be displayed
WHEN:
The system formats quantity changes
THEN:
The system shows the specific add or subtract operations being performed on the release quantities
β Consolidated Acceptance Criteria
- Car ID and waybill information is formatted → the system includes formatted car identification numbers and waybill details in the message
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_FormatCarIDandWaybillInfo(["Start Step"])
E_FormatCarIDandWaybillInfo(["End Step"])
N_FormatCarIDandWaybillInfo_Node0{"Car ID and waybill information is
formatted"}:::decision N_FormatCarIDandWaybillInfo_Node0_action["The system includes formatted car
identification numbers and waybill
details in the message"]:::main N_FormatCarIDandWaybillInfo_Node0 -- Yes --> N_FormatCarIDandWaybillInfo_Node0_action N_FormatCarIDandWaybillInfo_Node0_action --> E_FormatCarIDandWaybillInfo S_FormatCarIDandWaybillInfo --> N_FormatCarIDandWaybillInfo_Node0 N_FormatCarIDandWaybillInfo_Node0 -- No --> E_FormatCarIDandWaybillInfo
formatted"}:::decision N_FormatCarIDandWaybillInfo_Node0_action["The system includes formatted car
identification numbers and waybill
details in the message"]:::main N_FormatCarIDandWaybillInfo_Node0 -- Yes --> N_FormatCarIDandWaybillInfo_Node0_action N_FormatCarIDandWaybillInfo_Node0_action --> E_FormatCarIDandWaybillInfo S_FormatCarIDandWaybillInfo --> N_FormatCarIDandWaybillInfo_Node0 N_FormatCarIDandWaybillInfo_Node0 -- No --> E_FormatCarIDandWaybillInfo
File: GCX016.cbl
GIVEN:
The release message requires equipment information
WHEN:
- Car id
- Waybill information is formatted
THEN:
- The system includes formatted car identification numbers
- Waybill details in the message
β Consolidated Acceptance Criteria
- US-CCN information needs to be added → the system includes the US Customs Control Number and related identification details in the message
- The system adds US-CCN information to the message → the message includes the US Customs Control Number for customs tracking and processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AddUSCCNInformation(["Start Step"])
E_AddUSCCNInformation(["End Step"])
N_AddUSCCNInformation_Node0{"US-CCN information needs to be
added"}:::decision N_AddUSCCNInformation_Node0_action["The system includes the US Customs
Control Number and related
identification details in the
message"]:::main N_AddUSCCNInformation_Node0 -- Yes --> N_AddUSCCNInformation_Node0_action N_AddUSCCNInformation_Node0_action --> E_AddUSCCNInformation S_AddUSCCNInformation --> N_AddUSCCNInformation_Node0 N_AddUSCCNInformation_Node1{"The system adds US-CCN information
to the message"}:::decision N_AddUSCCNInformation_Node1_action["The message includes the US Customs
Control Number for customs tracking
and processing"]:::main N_AddUSCCNInformation_Node1 -- Yes --> N_AddUSCCNInformation_Node1_action N_AddUSCCNInformation_Node1_action --> E_AddUSCCNInformation N_AddUSCCNInformation_Node0 -- No --> N_AddUSCCNInformation_Node1 N_AddUSCCNInformation_Node1 -- No --> E_AddUSCCNInformation
added"}:::decision N_AddUSCCNInformation_Node0_action["The system includes the US Customs
Control Number and related
identification details in the
message"]:::main N_AddUSCCNInformation_Node0 -- Yes --> N_AddUSCCNInformation_Node0_action N_AddUSCCNInformation_Node0_action --> E_AddUSCCNInformation S_AddUSCCNInformation --> N_AddUSCCNInformation_Node0 N_AddUSCCNInformation_Node1{"The system adds US-CCN information
to the message"}:::decision N_AddUSCCNInformation_Node1_action["The message includes the US Customs
Control Number for customs tracking
and processing"]:::main N_AddUSCCNInformation_Node1 -- Yes --> N_AddUSCCNInformation_Node1_action N_AddUSCCNInformation_Node1_action --> E_AddUSCCNInformation N_AddUSCCNInformation_Node0 -- No --> N_AddUSCCNInformation_Node1 N_AddUSCCNInformation_Node1 -- No --> E_AddUSCCNInformation
File: GCX016.cbl
GIVEN:
The release message contains equipment information
WHEN:
US-CCN information needs to be added
THEN:
- The system includes the us customs control number
- Related identification details in the message
File: GCX016.cbl
GIVEN:
Cargo details are being formatted AND US-CCN information is available
WHEN:
The system adds US-CCN information to the message
THEN:
- The message includes the us customs control number for customs tracking
- Processing
β Consolidated Acceptance Criteria
- Processing timestamps need to be included → the system adds the date and time when the release processing was performed
- The system includes processing timestamps in release message → the system adds formatted date and time information showing when cargo processing events occurred
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IncludeProcessingTimestamps(["Start Step"])
E_IncludeProcessingTimestamps(["End Step"])
N_IncludeProcessingTimestamps_Node0{"Processing timestamps need to be
included"}:::decision N_IncludeProcessingTimestamps_Node0_action["The system adds the date and time
when the release processing was
performed"]:::main N_IncludeProcessingTimestamps_Node0 -- Yes --> N_IncludeProcessingTimestamps_Node0_action N_IncludeProcessingTimestamps_Node0_action --> E_IncludeProcessingTimestamps S_IncludeProcessingTimestamps --> N_IncludeProcessingTimestamps_Node0 N_IncludeProcessingTimestamps_Node1{"The system includes processing
timestamps in release message"}:::decision N_IncludeProcessingTimestamps_Node1_action["The system adds formatted date and
time information showing when cargo
processing events occurred"]:::main N_IncludeProcessingTimestamps_Node1 -- Yes --> N_IncludeProcessingTimestamps_Node1_action N_IncludeProcessingTimestamps_Node1_action --> E_IncludeProcessingTimestamps N_IncludeProcessingTimestamps_Node0 -- No --> N_IncludeProcessingTimestamps_Node1 N_IncludeProcessingTimestamps_Node1 -- No --> E_IncludeProcessingTimestamps
included"}:::decision N_IncludeProcessingTimestamps_Node0_action["The system adds the date and time
when the release processing was
performed"]:::main N_IncludeProcessingTimestamps_Node0 -- Yes --> N_IncludeProcessingTimestamps_Node0_action N_IncludeProcessingTimestamps_Node0_action --> E_IncludeProcessingTimestamps S_IncludeProcessingTimestamps --> N_IncludeProcessingTimestamps_Node0 N_IncludeProcessingTimestamps_Node1{"The system includes processing
timestamps in release message"}:::decision N_IncludeProcessingTimestamps_Node1_action["The system adds formatted date and
time information showing when cargo
processing events occurred"]:::main N_IncludeProcessingTimestamps_Node1 -- Yes --> N_IncludeProcessingTimestamps_Node1_action N_IncludeProcessingTimestamps_Node1_action --> E_IncludeProcessingTimestamps N_IncludeProcessingTimestamps_Node0 -- No --> N_IncludeProcessingTimestamps_Node1 N_IncludeProcessingTimestamps_Node1 -- No --> E_IncludeProcessingTimestamps
File: GCX016.cbl
GIVEN:
The release message contains US-CCN information
WHEN:
Processing timestamps need to be included
THEN:
- The system adds the date
- Time when the release processing was performed
File: GCX016.cbl
GIVEN:
Cargo processing has occurred with specific date and time stamps
WHEN:
The system includes processing timestamps in release message
THEN:
- The system adds formatted date
- Time information showing when cargo processing events occurred
β Consolidated Acceptance Criteria
- Message destination needs to be set → the system assigns the appropriate Merlin destination based on message type and routing requirements
- Message destination routing needs to be determined → set the appropriate message destination based on message type, cargo location, and processing requirements
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetMessageDestination(["Start Step"])
E_SetMessageDestination(["End Step"])
N_SetMessageDestination_Node0{"Message destination needs to be set"}:::decision
N_SetMessageDestination_Node0_action["The system assigns the appropriate
Merlin destination based on message
type and routing requirements"]:::main N_SetMessageDestination_Node0 -- Yes --> N_SetMessageDestination_Node0_action N_SetMessageDestination_Node0_action --> E_SetMessageDestination S_SetMessageDestination --> N_SetMessageDestination_Node0 N_SetMessageDestination_Node1{"Message destination routing needs
to be determined"}:::decision N_SetMessageDestination_Node1_action["Set the appropriate message
destination based on message type,
cargo location, and processing
requirements"]:::main N_SetMessageDestination_Node1 -- Yes --> N_SetMessageDestination_Node1_action N_SetMessageDestination_Node1_action --> E_SetMessageDestination N_SetMessageDestination_Node0 -- No --> N_SetMessageDestination_Node1 N_SetMessageDestination_Node1 -- No --> E_SetMessageDestination
Merlin destination based on message
type and routing requirements"]:::main N_SetMessageDestination_Node0 -- Yes --> N_SetMessageDestination_Node0_action N_SetMessageDestination_Node0_action --> E_SetMessageDestination S_SetMessageDestination --> N_SetMessageDestination_Node0 N_SetMessageDestination_Node1{"Message destination routing needs
to be determined"}:::decision N_SetMessageDestination_Node1_action["Set the appropriate message
destination based on message type,
cargo location, and processing
requirements"]:::main N_SetMessageDestination_Node1 -- Yes --> N_SetMessageDestination_Node1_action N_SetMessageDestination_Node1_action --> E_SetMessageDestination N_SetMessageDestination_Node0 -- No --> N_SetMessageDestination_Node1 N_SetMessageDestination_Node1 -- No --> E_SetMessageDestination
File: GCX016.cbl
GIVEN:
The release message contains all required information
WHEN:
Message destination needs to be set
THEN:
- The system assigns the appropriate merlin destination based on message type
- Routing requirements
File: GCX016.cbl
GIVEN:
A Merlin message has been formatted and is ready for transmission
WHEN:
Message destination routing needs to be determined
THEN:
Set the appropriate message destination based on message type, cargo location, and processing requirements
β Consolidated Acceptance Criteria
- Final message format is prepared → the system formats the complete message according to Merlin system requirements with all components properly structured
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_PrepareFinalMessageFormat(["Start Step"])
E_PrepareFinalMessageFormat(["End Step"])
N_PrepareFinalMessageFormat_Node0{"Final message format is prepared"}:::decision
N_PrepareFinalMessageFormat_Node0_action["The system formats the complete
message according to Merlin system
requirements with all components
properly structured"]:::main N_PrepareFinalMessageFormat_Node0 -- Yes --> N_PrepareFinalMessageFormat_Node0_action N_PrepareFinalMessageFormat_Node0_action --> E_PrepareFinalMessageFormat S_PrepareFinalMessageFormat --> N_PrepareFinalMessageFormat_Node0 N_PrepareFinalMessageFormat_Node0 -- No --> E_PrepareFinalMessageFormat
message according to Merlin system
requirements with all components
properly structured"]:::main N_PrepareFinalMessageFormat_Node0 -- Yes --> N_PrepareFinalMessageFormat_Node0_action N_PrepareFinalMessageFormat_Node0_action --> E_PrepareFinalMessageFormat S_PrepareFinalMessageFormat --> N_PrepareFinalMessageFormat_Node0 N_PrepareFinalMessageFormat_Node0 -- No --> E_PrepareFinalMessageFormat
File: GCX016.cbl
GIVEN:
The release message has a destination assigned
WHEN:
Final message format is prepared
THEN:
The system formats the complete message according to Merlin system requirements with all components properly structured
β Consolidated Acceptance Criteria
- The message is sent to Merlin system → the system transmits the release message to the Merlin system for processing and distribution to recipients
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SendtoMerlinSystem(["Start Step"])
E_SendtoMerlinSystem(["End Step"])
N_SendtoMerlinSystem_Node0{"The message is sent to Merlin
system"}:::decision N_SendtoMerlinSystem_Node0_action["The system transmits the release
message to the Merlin system for
processing and distribution to
recipients"]:::main N_SendtoMerlinSystem_Node0 -- Yes --> N_SendtoMerlinSystem_Node0_action N_SendtoMerlinSystem_Node0_action --> E_SendtoMerlinSystem S_SendtoMerlinSystem --> N_SendtoMerlinSystem_Node0 N_SendtoMerlinSystem_Node0 -- No --> E_SendtoMerlinSystem
system"}:::decision N_SendtoMerlinSystem_Node0_action["The system transmits the release
message to the Merlin system for
processing and distribution to
recipients"]:::main N_SendtoMerlinSystem_Node0 -- Yes --> N_SendtoMerlinSystem_Node0_action N_SendtoMerlinSystem_Node0_action --> E_SendtoMerlinSystem S_SendtoMerlinSystem --> N_SendtoMerlinSystem_Node0 N_SendtoMerlinSystem_Node0 -- No --> E_SendtoMerlinSystem
File: GCX016.cbl
GIVEN:
The final message format is prepared
WHEN:
The message is sent to Merlin system
THEN:
- The system transmits the release message to the merlin system for processing
- Distribution to recipients
β Consolidated Acceptance Criteria
- The system processes the N7 segment → equipment data including container type, car initial, and car number are extracted and made available for processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ReceiveN7EquipmentSegment(["Start Step"])
E_ReceiveN7EquipmentSegment(["End Step"])
N_ReceiveN7EquipmentSegment_Node0{"The system processes the N7 segment"}:::decision
N_ReceiveN7EquipmentSegment_Node0_action["Equipment data including container
type, car initial, and car number
are extracted and made available for
processing"]:::main N_ReceiveN7EquipmentSegment_Node0 -- Yes --> N_ReceiveN7EquipmentSegment_Node0_action N_ReceiveN7EquipmentSegment_Node0_action --> E_ReceiveN7EquipmentSegment S_ReceiveN7EquipmentSegment --> N_ReceiveN7EquipmentSegment_Node0 N_ReceiveN7EquipmentSegment_Node0 -- No --> E_ReceiveN7EquipmentSegment
type, car initial, and car number
are extracted and made available for
processing"]:::main N_ReceiveN7EquipmentSegment_Node0 -- Yes --> N_ReceiveN7EquipmentSegment_Node0_action N_ReceiveN7EquipmentSegment_Node0_action --> E_ReceiveN7EquipmentSegment S_ReceiveN7EquipmentSegment --> N_ReceiveN7EquipmentSegment_Node0 N_ReceiveN7EquipmentSegment_Node0 -- No --> E_ReceiveN7EquipmentSegment
File: GCX016.cbl
GIVEN:
An N7 equipment segment is available in the message queue
WHEN:
The system processes the N7 segment
THEN:
- Equipment data including container type, car initial, and car number are extracted
- Made available for processing
β Consolidated Acceptance Criteria
- The system extracts container type from the segment → container type code is identified and stored for validation and processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExtractContainerEquipmentType(["Start Step"])
E_ExtractContainerEquipmentType(["End Step"])
N_ExtractContainerEquipmentType_Node0{"The system extracts container type
from the segment"}:::decision N_ExtractContainerEquipmentType_Node0_action["Container type code is identified
and stored for validation and
processing"]:::main N_ExtractContainerEquipmentType_Node0 -- Yes --> N_ExtractContainerEquipmentType_Node0_action N_ExtractContainerEquipmentType_Node0_action --> E_ExtractContainerEquipmentType S_ExtractContainerEquipmentType --> N_ExtractContainerEquipmentType_Node0 N_ExtractContainerEquipmentType_Node0 -- No --> E_ExtractContainerEquipmentType
from the segment"}:::decision N_ExtractContainerEquipmentType_Node0_action["Container type code is identified
and stored for validation and
processing"]:::main N_ExtractContainerEquipmentType_Node0 -- Yes --> N_ExtractContainerEquipmentType_Node0_action N_ExtractContainerEquipmentType_Node0_action --> E_ExtractContainerEquipmentType S_ExtractContainerEquipmentType --> N_ExtractContainerEquipmentType_Node0 N_ExtractContainerEquipmentType_Node0 -- No --> E_ExtractContainerEquipmentType
File: GCX016.cbl
GIVEN:
N7 segment data contains equipment type information
WHEN:
The system extracts container type from the segment
THEN:
- Container type code is identified
- Stored for validation
- Processing
β Consolidated Acceptance Criteria
- The system validates the container type against GCSTBRT container type tables → container type is confirmed as valid or invalid based on table lookup results
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ValidateContainerTypeAgainstSystemTables(["Start Step"])
E_ValidateContainerTypeAgainstSystemTables(["End Step"])
N_ValidateContainerTypeAgainstSystemTables_Node0{"The system validates the container
type against GCSTBRT container type
tables"}:::decision N_ValidateContainerTypeAgainstSystemTables_Node0_action["Container type is confirmed as
valid or invalid based on table
lookup results"]:::main N_ValidateContainerTypeAgainstSystemTables_Node0 -- Yes --> N_ValidateContainerTypeAgainstSystemTables_Node0_action N_ValidateContainerTypeAgainstSystemTables_Node0_action --> E_ValidateContainerTypeAgainstSystemTables S_ValidateContainerTypeAgainstSystemTables --> N_ValidateContainerTypeAgainstSystemTables_Node0 N_ValidateContainerTypeAgainstSystemTables_Node0 -- No --> E_ValidateContainerTypeAgainstSystemTables
type against GCSTBRT container type
tables"}:::decision N_ValidateContainerTypeAgainstSystemTables_Node0_action["Container type is confirmed as
valid or invalid based on table
lookup results"]:::main N_ValidateContainerTypeAgainstSystemTables_Node0 -- Yes --> N_ValidateContainerTypeAgainstSystemTables_Node0_action N_ValidateContainerTypeAgainstSystemTables_Node0_action --> E_ValidateContainerTypeAgainstSystemTables S_ValidateContainerTypeAgainstSystemTables --> N_ValidateContainerTypeAgainstSystemTables_Node0 N_ValidateContainerTypeAgainstSystemTables_Node0 -- No --> E_ValidateContainerTypeAgainstSystemTables
File: GCX016.cbl
GIVEN:
A container type code has been extracted from N7 segment
WHEN:
The system validates the container type against GCSTBRT container type tables
THEN:
Container type is confirmed as valid or invalid based on table lookup results
β Consolidated Acceptance Criteria
- The system updates cargo record with equipment information → cargo record contains updated car initial, car number, and equipment type information from the N7 segment
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UpdateEquipmentInformationinCargoRecord(["Start Step"])
E_UpdateEquipmentInformationinCargoRecord(["End Step"])
N_UpdateEquipmentInformationinCargoRecord_Node0{"The system updates cargo record
with equipment information"}:::decision N_UpdateEquipmentInformationinCargoRecord_Node0_action["Cargo record contains updated car
initial, car number, and equipment
type information from the N7 segment"]:::main N_UpdateEquipmentInformationinCargoRecord_Node0 -- Yes --> N_UpdateEquipmentInformationinCargoRecord_Node0_action N_UpdateEquipmentInformationinCargoRecord_Node0_action --> E_UpdateEquipmentInformationinCargoRecord S_UpdateEquipmentInformationinCargoRecord --> N_UpdateEquipmentInformationinCargoRecord_Node0 N_UpdateEquipmentInformationinCargoRecord_Node0 -- No --> E_UpdateEquipmentInformationinCargoRecord
with equipment information"}:::decision N_UpdateEquipmentInformationinCargoRecord_Node0_action["Cargo record contains updated car
initial, car number, and equipment
type information from the N7 segment"]:::main N_UpdateEquipmentInformationinCargoRecord_Node0 -- Yes --> N_UpdateEquipmentInformationinCargoRecord_Node0_action N_UpdateEquipmentInformationinCargoRecord_Node0_action --> E_UpdateEquipmentInformationinCargoRecord S_UpdateEquipmentInformationinCargoRecord --> N_UpdateEquipmentInformationinCargoRecord_Node0 N_UpdateEquipmentInformationinCargoRecord_Node0 -- No --> E_UpdateEquipmentInformationinCargoRecord
File: GCX016.cbl
GIVEN:
Container type is valid and equipment data is available from N7 segment
WHEN:
The system updates cargo record with equipment information
THEN:
Cargo record contains updated car initial, car number, and equipment type information from the N7 segment
β Consolidated Acceptance Criteria
- If integration service requirements based on cargo hold status and equipment type → integration service call is required for held cargo with container or trailer equipment types, or skipped for PTT status cargo
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IntegrationServiceRequired(["Start Step"])
E_IntegrationServiceRequired(["End Step"])
N_IntegrationServiceRequired_Node0{"The system evaluates integration
service requirements based on cargo
hold status and equipment type"}:::decision N_IntegrationServiceRequired_Node0_action["Integration service call is
required for held cargo with
container or trailer equipment
types, or skipped for PTT status
cargo"]:::main N_IntegrationServiceRequired_Node0 -- Yes --> N_IntegrationServiceRequired_Node0_action N_IntegrationServiceRequired_Node0_action --> E_IntegrationServiceRequired S_IntegrationServiceRequired --> N_IntegrationServiceRequired_Node0 N_IntegrationServiceRequired_Node0 -- No --> E_IntegrationServiceRequired
service requirements based on cargo
hold status and equipment type"}:::decision N_IntegrationServiceRequired_Node0_action["Integration service call is
required for held cargo with
container or trailer equipment
types, or skipped for PTT status
cargo"]:::main N_IntegrationServiceRequired_Node0 -- Yes --> N_IntegrationServiceRequired_Node0_action N_IntegrationServiceRequired_Node0_action --> E_IntegrationServiceRequired S_IntegrationServiceRequired --> N_IntegrationServiceRequired_Node0 N_IntegrationServiceRequired_Node0 -- No --> E_IntegrationServiceRequired
File: GCX016.cbl
GIVEN:
Equipment information has been updated in cargo record
WHEN:
- The system evaluates integration service requirements based on cargo hold status
- Equipment type
THEN:
Integration service call is required for held cargo with container or trailer equipment types, or skipped for PTT status cargo
β Consolidated Acceptance Criteria
- The system prepares data for GCCIIS integration → container data including equipment type, status, and cargo information is formatted and ready for integration service call
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_PrepareContainerDataforIntegrationCall(["Start Step"])
E_PrepareContainerDataforIntegrationCall(["End Step"])
N_PrepareContainerDataforIntegrationCall_Node0{"The system prepares data for GCCIIS
integration"}:::decision N_PrepareContainerDataforIntegrationCall_Node0_action["Container data including equipment
type, status, and cargo information
is formatted and ready for
integration service call"]:::main N_PrepareContainerDataforIntegrationCall_Node0 -- Yes --> N_PrepareContainerDataforIntegrationCall_Node0_action N_PrepareContainerDataforIntegrationCall_Node0_action --> E_PrepareContainerDataforIntegrationCall S_PrepareContainerDataforIntegrationCall --> N_PrepareContainerDataforIntegrationCall_Node0 N_PrepareContainerDataforIntegrationCall_Node0 -- No --> E_PrepareContainerDataforIntegrationCall
integration"}:::decision N_PrepareContainerDataforIntegrationCall_Node0_action["Container data including equipment
type, status, and cargo information
is formatted and ready for
integration service call"]:::main N_PrepareContainerDataforIntegrationCall_Node0 -- Yes --> N_PrepareContainerDataforIntegrationCall_Node0_action N_PrepareContainerDataforIntegrationCall_Node0_action --> E_PrepareContainerDataforIntegrationCall S_PrepareContainerDataforIntegrationCall --> N_PrepareContainerDataforIntegrationCall_Node0 N_PrepareContainerDataforIntegrationCall_Node0 -- No --> E_PrepareContainerDataforIntegrationCall
File: GCX016.cbl
GIVEN:
Integration service call is required for the container
WHEN:
The system prepares data for GCCIIS integration
THEN:
- Container data including equipment type, status, and cargo information is formatted
- Ready for integration service call
β Consolidated Acceptance Criteria
- The system calls GCCIIS integration service → equipment interface system is notified of container status changes and processes hold or release actions accordingly
- The system calls GCCIIS integration service with the notification message → integration service processes the notification and returns success or failure status
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CallGCCIISIntegrationService(["Start Step"])
E_CallGCCIISIntegrationService(["End Step"])
N_CallGCCIISIntegrationService_Node0{"The system calls GCCIIS integration
service"}:::decision N_CallGCCIISIntegrationService_Node0_action["Equipment interface system is
notified of container status changes
and processes hold or release
actions accordingly"]:::main N_CallGCCIISIntegrationService_Node0 -- Yes --> N_CallGCCIISIntegrationService_Node0_action N_CallGCCIISIntegrationService_Node0_action --> E_CallGCCIISIntegrationService S_CallGCCIISIntegrationService --> N_CallGCCIISIntegrationService_Node0 N_CallGCCIISIntegrationService_Node1{"The system calls GCCIIS integration
service with the notification
message"}:::decision N_CallGCCIISIntegrationService_Node1_action["Integration service processes the
notification and returns success or
failure status"]:::main N_CallGCCIISIntegrationService_Node1 -- Yes --> N_CallGCCIISIntegrationService_Node1_action N_CallGCCIISIntegrationService_Node1_action --> E_CallGCCIISIntegrationService N_CallGCCIISIntegrationService_Node0 -- No --> N_CallGCCIISIntegrationService_Node1 N_CallGCCIISIntegrationService_Node1 -- No --> E_CallGCCIISIntegrationService
service"}:::decision N_CallGCCIISIntegrationService_Node0_action["Equipment interface system is
notified of container status changes
and processes hold or release
actions accordingly"]:::main N_CallGCCIISIntegrationService_Node0 -- Yes --> N_CallGCCIISIntegrationService_Node0_action N_CallGCCIISIntegrationService_Node0_action --> E_CallGCCIISIntegrationService S_CallGCCIISIntegrationService --> N_CallGCCIISIntegrationService_Node0 N_CallGCCIISIntegrationService_Node1{"The system calls GCCIIS integration
service with the notification
message"}:::decision N_CallGCCIISIntegrationService_Node1_action["Integration service processes the
notification and returns success or
failure status"]:::main N_CallGCCIISIntegrationService_Node1 -- Yes --> N_CallGCCIISIntegrationService_Node1_action N_CallGCCIISIntegrationService_Node1_action --> E_CallGCCIISIntegrationService N_CallGCCIISIntegrationService_Node0 -- No --> N_CallGCCIISIntegrationService_Node1 N_CallGCCIISIntegrationService_Node1 -- No --> E_CallGCCIISIntegrationService
File: GCX016.cbl
GIVEN:
Container data is prepared for integration service
WHEN:
The system calls GCCIIS integration service
THEN:
- Equipment interface system is notified of container status changes
- Processes hold or release actions accordingly
File: GCX016.cbl
GIVEN:
A prepared notification message for hold, release, or status change
WHEN:
The system calls GCCIIS integration service with the notification message
THEN:
- Integration service processes the notification
- Returns success or failure status
β Consolidated Acceptance Criteria
- If export status based on cargo routing and destination information → container is identified as export or domestic based on routing criteria and cargo status
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExportContainer(["Start Step"])
E_ExportContainer(["End Step"])
N_ExportContainer_Node0{"The system evaluates export status
based on cargo routing and
destination information"}:::decision N_ExportContainer_Node0_action["Container is identified as export
or domestic based on routing
criteria and cargo status"]:::main N_ExportContainer_Node0 -- Yes --> N_ExportContainer_Node0_action N_ExportContainer_Node0_action --> E_ExportContainer S_ExportContainer --> N_ExportContainer_Node0 N_ExportContainer_Node0 -- No --> E_ExportContainer
based on cargo routing and
destination information"}:::decision N_ExportContainer_Node0_action["Container is identified as export
or domestic based on routing
criteria and cargo status"]:::main N_ExportContainer_Node0 -- Yes --> N_ExportContainer_Node0_action N_ExportContainer_Node0_action --> E_ExportContainer S_ExportContainer --> N_ExportContainer_Node0 N_ExportContainer_Node0 -- No --> E_ExportContainer
File: GCX016.cbl
GIVEN:
Container processing is in progress
WHEN:
- The system evaluates export status based on cargo routing
- Destination information
THEN:
- Container is identified as export or domestic based on routing criteria
- Cargo status
β Consolidated Acceptance Criteria
- The system routes container for export processing → container information is sent to USEXP basket for export-specific processing and documentation
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RoutetoUSEXPBasketforExportProcessing(["Start Step"])
E_RoutetoUSEXPBasketforExportProcessing(["End Step"])
N_RoutetoUSEXPBasketforExportProcessing_Node0{"The system routes container for
export processing"}:::decision N_RoutetoUSEXPBasketforExportProcessing_Node0_action["Container information is sent to
USEXP basket for export-specific
processing and documentation"]:::main N_RoutetoUSEXPBasketforExportProcessing_Node0 -- Yes --> N_RoutetoUSEXPBasketforExportProcessing_Node0_action N_RoutetoUSEXPBasketforExportProcessing_Node0_action --> E_RoutetoUSEXPBasketforExportProcessing S_RoutetoUSEXPBasketforExportProcessing --> N_RoutetoUSEXPBasketforExportProcessing_Node0 N_RoutetoUSEXPBasketforExportProcessing_Node0 -- No --> E_RoutetoUSEXPBasketforExportProcessing
export processing"}:::decision N_RoutetoUSEXPBasketforExportProcessing_Node0_action["Container information is sent to
USEXP basket for export-specific
processing and documentation"]:::main N_RoutetoUSEXPBasketforExportProcessing_Node0 -- Yes --> N_RoutetoUSEXPBasketforExportProcessing_Node0_action N_RoutetoUSEXPBasketforExportProcessing_Node0_action --> E_RoutetoUSEXPBasketforExportProcessing S_RoutetoUSEXPBasketforExportProcessing --> N_RoutetoUSEXPBasketforExportProcessing_Node0 N_RoutetoUSEXPBasketforExportProcessing_Node0 -- No --> E_RoutetoUSEXPBasketforExportProcessing
File: GCX016.cbl
GIVEN:
Container is identified as export container
WHEN:
The system routes container for export processing
THEN:
- Container information is sent to usexp basket for export-specific processing
- Documentation
β Consolidated Acceptance Criteria
- If container type for special handling requirements → container is classified as requiring special handling or standard processing based on type characteristics
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SpecialContainerType(["Start Step"])
E_SpecialContainerType(["End Step"])
N_SpecialContainerType_Node0{"The system evaluates container type
for special handling requirements"}:::decision N_SpecialContainerType_Node0_action["Container is classified as
requiring special handling or
standard processing based on type
characteristics"]:::main N_SpecialContainerType_Node0 -- Yes --> N_SpecialContainerType_Node0_action N_SpecialContainerType_Node0_action --> E_SpecialContainerType S_SpecialContainerType --> N_SpecialContainerType_Node0 N_SpecialContainerType_Node0 -- No --> E_SpecialContainerType
for special handling requirements"}:::decision N_SpecialContainerType_Node0_action["Container is classified as
requiring special handling or
standard processing based on type
characteristics"]:::main N_SpecialContainerType_Node0 -- Yes --> N_SpecialContainerType_Node0_action N_SpecialContainerType_Node0_action --> E_SpecialContainerType S_SpecialContainerType --> N_SpecialContainerType_Node0 N_SpecialContainerType_Node0 -- No --> E_SpecialContainerType
File: GCX016.cbl
GIVEN:
Container type has been validated and processing is in progress
WHEN:
The system evaluates container type for special handling requirements
THEN:
Container is classified as requiring special handling or standard processing based on type characteristics
β Consolidated Acceptance Criteria
- The system applies special container handling rules → container processing follows specialized rules appropriate for the specific container type characteristics
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ApplySpecialContainerHandlingRules(["Start Step"])
E_ApplySpecialContainerHandlingRules(["End Step"])
N_ApplySpecialContainerHandlingRules_Node0{"The system applies special
container handling rules"}:::decision N_ApplySpecialContainerHandlingRules_Node0_action["Container processing follows
specialized rules appropriate for
the specific container type
characteristics"]:::main N_ApplySpecialContainerHandlingRules_Node0 -- Yes --> N_ApplySpecialContainerHandlingRules_Node0_action N_ApplySpecialContainerHandlingRules_Node0_action --> E_ApplySpecialContainerHandlingRules S_ApplySpecialContainerHandlingRules --> N_ApplySpecialContainerHandlingRules_Node0 N_ApplySpecialContainerHandlingRules_Node0 -- No --> E_ApplySpecialContainerHandlingRules
container handling rules"}:::decision N_ApplySpecialContainerHandlingRules_Node0_action["Container processing follows
specialized rules appropriate for
the specific container type
characteristics"]:::main N_ApplySpecialContainerHandlingRules_Node0 -- Yes --> N_ApplySpecialContainerHandlingRules_Node0_action N_ApplySpecialContainerHandlingRules_Node0_action --> E_ApplySpecialContainerHandlingRules S_ApplySpecialContainerHandlingRules --> N_ApplySpecialContainerHandlingRules_Node0 N_ApplySpecialContainerHandlingRules_Node0 -- No --> E_ApplySpecialContainerHandlingRules
File: GCX016.cbl
GIVEN:
Container is identified as requiring special handling
WHEN:
The system applies special container handling rules
THEN:
Container processing follows specialized rules appropriate for the specific container type characteristics
β Consolidated Acceptance Criteria
- The system updates container status in cargo record → cargo record reflects current container status including any status changes from processing activities
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UpdateContainerStatusinCargoRecord(["Start Step"])
E_UpdateContainerStatusinCargoRecord(["End Step"])
N_UpdateContainerStatusinCargoRecord_Node0{"The system updates container status
in cargo record"}:::decision N_UpdateContainerStatusinCargoRecord_Node0_action["Cargo record reflects current
container status including any
status changes from processing
activities"]:::main N_UpdateContainerStatusinCargoRecord_Node0 -- Yes --> N_UpdateContainerStatusinCargoRecord_Node0_action N_UpdateContainerStatusinCargoRecord_Node0_action --> E_UpdateContainerStatusinCargoRecord S_UpdateContainerStatusinCargoRecord --> N_UpdateContainerStatusinCargoRecord_Node0 N_UpdateContainerStatusinCargoRecord_Node0 -- No --> E_UpdateContainerStatusinCargoRecord
in cargo record"}:::decision N_UpdateContainerStatusinCargoRecord_Node0_action["Cargo record reflects current
container status including any
status changes from processing
activities"]:::main N_UpdateContainerStatusinCargoRecord_Node0 -- Yes --> N_UpdateContainerStatusinCargoRecord_Node0_action N_UpdateContainerStatusinCargoRecord_Node0_action --> E_UpdateContainerStatusinCargoRecord S_UpdateContainerStatusinCargoRecord --> N_UpdateContainerStatusinCargoRecord_Node0 N_UpdateContainerStatusinCargoRecord_Node0 -- No --> E_UpdateContainerStatusinCargoRecord
File: GCX016.cbl
GIVEN:
Container processing including special handling (if required) has been completed
WHEN:
The system updates container status in cargo record
THEN:
Cargo record reflects current container status including any status changes from processing activities
β Consolidated Acceptance Criteria
- The system logs container processing information → processing activities, status changes, and container information are recorded in system logs for audit and tracking purposes
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogContainerProcessingInformation(["Start Step"])
E_LogContainerProcessingInformation(["End Step"])
N_LogContainerProcessingInformation_Node0{"The system logs container
processing information"}:::decision N_LogContainerProcessingInformation_Node0_action["Processing activities, status
changes, and container information
are recorded in system logs for
audit and tracking purposes"]:::main N_LogContainerProcessingInformation_Node0 -- Yes --> N_LogContainerProcessingInformation_Node0_action N_LogContainerProcessingInformation_Node0_action --> E_LogContainerProcessingInformation S_LogContainerProcessingInformation --> N_LogContainerProcessingInformation_Node0 N_LogContainerProcessingInformation_Node0 -- No --> E_LogContainerProcessingInformation
processing information"}:::decision N_LogContainerProcessingInformation_Node0_action["Processing activities, status
changes, and container information
are recorded in system logs for
audit and tracking purposes"]:::main N_LogContainerProcessingInformation_Node0 -- Yes --> N_LogContainerProcessingInformation_Node0_action N_LogContainerProcessingInformation_Node0_action --> E_LogContainerProcessingInformation S_LogContainerProcessingInformation --> N_LogContainerProcessingInformation_Node0 N_LogContainerProcessingInformation_Node0 -- No --> E_LogContainerProcessingInformation
File: GCX016.cbl
GIVEN:
Container status has been updated in cargo record
WHEN:
The system logs container processing information
THEN:
- Processing activities, status changes, and container information are recorded in system logs for audit
- Tracking purposes
β Consolidated Acceptance Criteria
- The system generates container type error message → error message is created indicating invalid container type and processing is directed to skip container processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GenerateContainerTypeErrorMessage(["Start Step"])
E_GenerateContainerTypeErrorMessage(["End Step"])
N_GenerateContainerTypeErrorMessage_Node0{"The system generates container type
error message"}:::decision N_GenerateContainerTypeErrorMessage_Node0_action["Error message is created indicating
invalid container type and
processing is directed to skip
container processing"]:::exclusion N_GenerateContainerTypeErrorMessage_Node0 -- Yes -->|Alternative| N_GenerateContainerTypeErrorMessage_Node0_action N_GenerateContainerTypeErrorMessage_Node0_action --> E_GenerateContainerTypeErrorMessage S_GenerateContainerTypeErrorMessage --> N_GenerateContainerTypeErrorMessage_Node0 N_GenerateContainerTypeErrorMessage_Node0 -- No --> E_GenerateContainerTypeErrorMessage
error message"}:::decision N_GenerateContainerTypeErrorMessage_Node0_action["Error message is created indicating
invalid container type and
processing is directed to skip
container processing"]:::exclusion N_GenerateContainerTypeErrorMessage_Node0 -- Yes -->|Alternative| N_GenerateContainerTypeErrorMessage_Node0_action N_GenerateContainerTypeErrorMessage_Node0_action --> E_GenerateContainerTypeErrorMessage S_GenerateContainerTypeErrorMessage --> N_GenerateContainerTypeErrorMessage_Node0 N_GenerateContainerTypeErrorMessage_Node0 -- No --> E_GenerateContainerTypeErrorMessage
File: GCX016.cbl
GIVEN:
Container type validation has failed against system tables
WHEN:
The system generates container type error message
THEN:
- Error message is created indicating invalid container type
- Processing is directed to skip container processing
β Consolidated Acceptance Criteria
- The system skips container processing → container processing is bypassed and system continues with next processing step without updating container information
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SkipContainerProcessing(["Start Step"])
E_SkipContainerProcessing(["End Step"])
N_SkipContainerProcessing_Node0{"The system skips container
processing"}:::decision N_SkipContainerProcessing_Node0_action["Container processing is bypassed
and system continues with next
processing step without updating
container information"]:::main N_SkipContainerProcessing_Node0 -- Yes --> N_SkipContainerProcessing_Node0_action N_SkipContainerProcessing_Node0_action --> E_SkipContainerProcessing S_SkipContainerProcessing --> N_SkipContainerProcessing_Node0 N_SkipContainerProcessing_Node0 -- No --> E_SkipContainerProcessing
processing"}:::decision N_SkipContainerProcessing_Node0_action["Container processing is bypassed
and system continues with next
processing step without updating
container information"]:::main N_SkipContainerProcessing_Node0 -- Yes --> N_SkipContainerProcessing_Node0_action N_SkipContainerProcessing_Node0_action --> E_SkipContainerProcessing S_SkipContainerProcessing --> N_SkipContainerProcessing_Node0 N_SkipContainerProcessing_Node0 -- No --> E_SkipContainerProcessing
File: GCX016.cbl
GIVEN:
Container type error has been generated or invalid container type detected
WHEN:
The system skips container processing
THEN:
- Container processing is bypassed
- System continues with next processing step without updating container information
β Consolidated Acceptance Criteria
- The system verifies full release conditions → the system confirms that released quantity equals or exceeds total quantity AND no hold conditions exist
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_VerifyFullReleaseConditions(["Start Step"])
E_VerifyFullReleaseConditions(["End Step"])
N_VerifyFullReleaseConditions_Node0{"The system verifies full release
conditions"}:::decision N_VerifyFullReleaseConditions_Node0_action["The system confirms that released
quantity equals or exceeds total
quantity AND no hold conditions
exist"]:::main N_VerifyFullReleaseConditions_Node0 -- Yes --> N_VerifyFullReleaseConditions_Node0_action N_VerifyFullReleaseConditions_Node0_action --> E_VerifyFullReleaseConditions S_VerifyFullReleaseConditions --> N_VerifyFullReleaseConditions_Node0 N_VerifyFullReleaseConditions_Node0 -- No --> E_VerifyFullReleaseConditions
conditions"}:::decision N_VerifyFullReleaseConditions_Node0_action["The system confirms that released
quantity equals or exceeds total
quantity AND no hold conditions
exist"]:::main N_VerifyFullReleaseConditions_Node0 -- Yes --> N_VerifyFullReleaseConditions_Node0_action N_VerifyFullReleaseConditions_Node0_action --> E_VerifyFullReleaseConditions S_VerifyFullReleaseConditions --> N_VerifyFullReleaseConditions_Node0 N_VerifyFullReleaseConditions_Node0 -- No --> E_VerifyFullReleaseConditions
File: GCX016.cbl
GIVEN:
Cargo has a release status and associated release quantities
WHEN:
The system verifies full release conditions
THEN:
- The system confirms that released quantity equals or exceeds total quantity
- No hold conditions exist
β Consolidated Acceptance Criteria
- If if cargo is fully released → if released quantity is greater than or equal to total quantity AND no active holds exist, then cargo is considered fully released, otherwise it is partially released or held
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IsCargoFullyReleased(["Start Step"])
E_IsCargoFullyReleased(["End Step"])
N_IsCargoFullyReleased_Node0{"The system evaluates if cargo is
fully released"}:::decision N_IsCargoFullyReleased_Node0_action["If released quantity is greater
than or equal to total quantity AND
no active holds exist, then cargo is
considered fully released, otherwise
it is partially released or held"]:::main N_IsCargoFullyReleased_Node0 -- Yes --> N_IsCargoFullyReleased_Node0_action N_IsCargoFullyReleased_Node0_action --> E_IsCargoFullyReleased S_IsCargoFullyReleased --> N_IsCargoFullyReleased_Node0 N_IsCargoFullyReleased_Node0 -- No --> E_IsCargoFullyReleased
fully released"}:::decision N_IsCargoFullyReleased_Node0_action["If released quantity is greater
than or equal to total quantity AND
no active holds exist, then cargo is
considered fully released, otherwise
it is partially released or held"]:::main N_IsCargoFullyReleased_Node0 -- Yes --> N_IsCargoFullyReleased_Node0_action N_IsCargoFullyReleased_Node0_action --> E_IsCargoFullyReleased S_IsCargoFullyReleased --> N_IsCargoFullyReleased_Node0 N_IsCargoFullyReleased_Node0 -- No --> E_IsCargoFullyReleased
File: GCX016.cbl
GIVEN:
Cargo has release quantity information and status array data
WHEN:
The system evaluates if cargo is fully released
THEN:
- If released quantity is greater than or equal to total quantity
- No active holds exist, then cargo is considered fully released, otherwise it is partially released or held
β Consolidated Acceptance Criteria
- The system checks for existing IM inspection tags in the cargo status array → if IM tags are found in the status array, proceed with tag removal, otherwise skip IM tag processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IMTagsPresent(["Start Step"])
E_IMTagsPresent(["End Step"])
N_IMTagsPresent_Node0{"The system checks for existing IM
inspection tags in the cargo status
array"}:::decision N_IMTagsPresent_Node0_action["If IM tags are found in the status
array, proceed with tag removal,
otherwise skip IM tag processing"]:::main N_IMTagsPresent_Node0 -- Yes --> N_IMTagsPresent_Node0_action N_IMTagsPresent_Node0_action --> E_IMTagsPresent S_IMTagsPresent --> N_IMTagsPresent_Node0 N_IMTagsPresent_Node0 -- No --> E_IMTagsPresent
inspection tags in the cargo status
array"}:::decision N_IMTagsPresent_Node0_action["If IM tags are found in the status
array, proceed with tag removal,
otherwise skip IM tag processing"]:::main N_IMTagsPresent_Node0 -- Yes --> N_IMTagsPresent_Node0_action N_IMTagsPresent_Node0_action --> E_IMTagsPresent S_IMTagsPresent --> N_IMTagsPresent_Node0 N_IMTagsPresent_Node0 -- No --> E_IMTagsPresent
File: GCX016.cbl
GIVEN:
Cargo is confirmed as fully released
WHEN:
The system checks for existing IM inspection tags in the cargo status array
THEN:
If IM tags are found in the status array, proceed with tag removal, otherwise skip IM tag processing
β Consolidated Acceptance Criteria
- The system processes IM tag removal → all IM inspection tags are removed from the cargo status array
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RemoveIMInspectionTags(["Start Step"])
E_RemoveIMInspectionTags(["End Step"])
N_RemoveIMInspectionTags_Node0{"The system processes IM tag removal"}:::decision
N_RemoveIMInspectionTags_Node0_action["All IM inspection tags are removed
from the cargo status array"]:::main N_RemoveIMInspectionTags_Node0 -- Yes --> N_RemoveIMInspectionTags_Node0_action N_RemoveIMInspectionTags_Node0_action --> E_RemoveIMInspectionTags S_RemoveIMInspectionTags --> N_RemoveIMInspectionTags_Node0 N_RemoveIMInspectionTags_Node0 -- No --> E_RemoveIMInspectionTags
from the cargo status array"]:::main N_RemoveIMInspectionTags_Node0 -- Yes --> N_RemoveIMInspectionTags_Node0_action N_RemoveIMInspectionTags_Node0_action --> E_RemoveIMInspectionTags S_RemoveIMInspectionTags --> N_RemoveIMInspectionTags_Node0 N_RemoveIMInspectionTags_Node0 -- No --> E_RemoveIMInspectionTags
File: GCX016.cbl
GIVEN:
Cargo is fully released AND IM tags are present in the status array
WHEN:
The system processes IM tag removal
THEN:
All IM inspection tags are removed from the cargo status array
β Consolidated Acceptance Criteria
- The system updates cargo status records → the cargo record is updated in the database with the modified status array AND the cargo status description is updated to reflect the removal
- The system updates cargo status records → the system modifies cargo status, updates S09 segments, and sets appropriate status descriptions
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UpdateCargoStatusRecords(["Start Step"])
E_UpdateCargoStatusRecords(["End Step"])
N_UpdateCargoStatusRecords_Node0{"The system updates cargo status
records"}:::decision N_UpdateCargoStatusRecords_Node0_action["The cargo record is updated in the
database with the modified status
array AND the cargo status
description is updated to reflect
the removal"]:::main N_UpdateCargoStatusRecords_Node0 -- Yes --> N_UpdateCargoStatusRecords_Node0_action N_UpdateCargoStatusRecords_Node0_action --> E_UpdateCargoStatusRecords S_UpdateCargoStatusRecords --> N_UpdateCargoStatusRecords_Node0 N_UpdateCargoStatusRecords_Node1{"The system updates cargo status
records"}:::decision N_UpdateCargoStatusRecords_Node1_action["The system modifies cargo status,
updates S09 segments, and sets
appropriate status descriptions"]:::main N_UpdateCargoStatusRecords_Node1 -- Yes --> N_UpdateCargoStatusRecords_Node1_action N_UpdateCargoStatusRecords_Node1_action --> E_UpdateCargoStatusRecords N_UpdateCargoStatusRecords_Node0 -- No --> N_UpdateCargoStatusRecords_Node1 N_UpdateCargoStatusRecords_Node1 -- No --> E_UpdateCargoStatusRecords
records"}:::decision N_UpdateCargoStatusRecords_Node0_action["The cargo record is updated in the
database with the modified status
array AND the cargo status
description is updated to reflect
the removal"]:::main N_UpdateCargoStatusRecords_Node0 -- Yes --> N_UpdateCargoStatusRecords_Node0_action N_UpdateCargoStatusRecords_Node0_action --> E_UpdateCargoStatusRecords S_UpdateCargoStatusRecords --> N_UpdateCargoStatusRecords_Node0 N_UpdateCargoStatusRecords_Node1{"The system updates cargo status
records"}:::decision N_UpdateCargoStatusRecords_Node1_action["The system modifies cargo status,
updates S09 segments, and sets
appropriate status descriptions"]:::main N_UpdateCargoStatusRecords_Node1 -- Yes --> N_UpdateCargoStatusRecords_Node1_action N_UpdateCargoStatusRecords_Node1_action --> E_UpdateCargoStatusRecords N_UpdateCargoStatusRecords_Node0 -- No --> N_UpdateCargoStatusRecords_Node1 N_UpdateCargoStatusRecords_Node1 -- No --> E_UpdateCargoStatusRecords
File: GCX016.cbl
GIVEN:
IM tags have been removed from the cargo status array
WHEN:
The system updates cargo status records
THEN:
- The cargo record is updated in the database with the modified status array
- The cargo status description is updated to reflect the removal
File: GCX016.cbl
GIVEN:
Cargo unrelease event has been logged
WHEN:
The system updates cargo status records
THEN:
The system modifies cargo status, updates S09 segments, and sets appropriate status descriptions
β Consolidated Acceptance Criteria
- The system logs the IM tag removal activity → a log entry is created documenting the IM tag removal with cargo identifier, timestamp, and removal details
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogIMTagRemoval(["Start Step"])
E_LogIMTagRemoval(["End Step"])
N_LogIMTagRemoval_Node0{"The system logs the IM tag removal
activity"}:::decision N_LogIMTagRemoval_Node0_action["A log entry is created documenting
the IM tag removal with cargo
identifier, timestamp, and removal
details"]:::main N_LogIMTagRemoval_Node0 -- Yes --> N_LogIMTagRemoval_Node0_action N_LogIMTagRemoval_Node0_action --> E_LogIMTagRemoval S_LogIMTagRemoval --> N_LogIMTagRemoval_Node0 N_LogIMTagRemoval_Node0 -- No --> E_LogIMTagRemoval
activity"}:::decision N_LogIMTagRemoval_Node0_action["A log entry is created documenting
the IM tag removal with cargo
identifier, timestamp, and removal
details"]:::main N_LogIMTagRemoval_Node0 -- Yes --> N_LogIMTagRemoval_Node0_action N_LogIMTagRemoval_Node0_action --> E_LogIMTagRemoval S_LogIMTagRemoval --> N_LogIMTagRemoval_Node0 N_LogIMTagRemoval_Node0 -- No --> E_LogIMTagRemoval
File: GCX016.cbl
GIVEN:
IM tags have been successfully removed from cargo
WHEN:
The system logs the IM tag removal activity
THEN:
A log entry is created documenting the IM tag removal with cargo identifier, timestamp, and removal details
β Consolidated Acceptance Criteria
- If IM tag processing requirements → iM tag processing is skipped AND the system continues with standard release processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SkipIMTagProcessing(["Start Step"])
E_SkipIMTagProcessing(["End Step"])
N_SkipIMTagProcessing_Node0{"The system evaluates IM tag
processing requirements"}:::decision N_SkipIMTagProcessing_Node0_action["IM tag processing is skipped AND
the system continues with standard
release processing"]:::main N_SkipIMTagProcessing_Node0 -- Yes --> N_SkipIMTagProcessing_Node0_action N_SkipIMTagProcessing_Node0_action --> E_SkipIMTagProcessing S_SkipIMTagProcessing --> N_SkipIMTagProcessing_Node0 N_SkipIMTagProcessing_Node0 -- No --> E_SkipIMTagProcessing
processing requirements"}:::decision N_SkipIMTagProcessing_Node0_action["IM tag processing is skipped AND
the system continues with standard
release processing"]:::main N_SkipIMTagProcessing_Node0 -- Yes --> N_SkipIMTagProcessing_Node0_action N_SkipIMTagProcessing_Node0_action --> E_SkipIMTagProcessing S_SkipIMTagProcessing --> N_SkipIMTagProcessing_Node0 N_SkipIMTagProcessing_Node0 -- No --> E_SkipIMTagProcessing
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
Cargo is determined to be partially released, held, or not released
WHEN:
The system evaluates IM tag processing requirements
THEN:
- Im tag processing is skipped
- The system continues with standard release processing
β Consolidated Acceptance Criteria
- If the export operation type → the system identifies whether it is a standard export or export cancellation operation
- If the export operation type flag → the system routes to either standard export processing or export cancellation processing based on the flag value
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExportOperationType(["Start Step"])
E_ExportOperationType(["End Step"])
N_ExportOperationType_Node0{"The system evaluates the export
operation type"}:::decision N_ExportOperationType_Node0_action["The system identifies whether it is
a standard export or export
cancellation operation"]:::main N_ExportOperationType_Node0 -- Yes --> N_ExportOperationType_Node0_action N_ExportOperationType_Node0_action --> E_ExportOperationType S_ExportOperationType --> N_ExportOperationType_Node0 N_ExportOperationType_Node1{"The system evaluates the export
operation type flag"}:::decision N_ExportOperationType_Node1_action["The system routes to either
standard export processing or export
cancellation processing based on the
flag value"]:::main N_ExportOperationType_Node1 -- Yes --> N_ExportOperationType_Node1_action N_ExportOperationType_Node1_action --> E_ExportOperationType N_ExportOperationType_Node0 -- No --> N_ExportOperationType_Node1 N_ExportOperationType_Node1 -- No --> E_ExportOperationType
operation type"}:::decision N_ExportOperationType_Node0_action["The system identifies whether it is
a standard export or export
cancellation operation"]:::main N_ExportOperationType_Node0 -- Yes --> N_ExportOperationType_Node0_action N_ExportOperationType_Node0_action --> E_ExportOperationType S_ExportOperationType --> N_ExportOperationType_Node0 N_ExportOperationType_Node1{"The system evaluates the export
operation type flag"}:::decision N_ExportOperationType_Node1_action["The system routes to either
standard export processing or export
cancellation processing based on the
flag value"]:::main N_ExportOperationType_Node1 -- Yes --> N_ExportOperationType_Node1_action N_ExportOperationType_Node1_action --> E_ExportOperationType N_ExportOperationType_Node0 -- No --> N_ExportOperationType_Node1 N_ExportOperationType_Node1 -- No --> E_ExportOperationType
File: GCX016.cbl
GIVEN:
A cargo export status has been detected in cargo processing
WHEN:
The system evaluates the export operation type
THEN:
The system identifies whether it is a standard export or export cancellation operation
File: GCX016.cbl
GIVEN:
An export message generation request is received
WHEN:
The system evaluates the export operation type flag
THEN:
The system routes to either standard export processing or export cancellation processing based on the flag value
β Consolidated Acceptance Criteria
- The system sets the export message type → the message type is configured for standard export processing
- The system needs to set the message type for export processing → the system assigns the export message type flag to indicate standard export processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetExportMessageType(["Start Step"])
E_SetExportMessageType(["End Step"])
N_SetExportMessageType_Node0{"The system sets the export message
type"}:::decision N_SetExportMessageType_Node0_action["The message type is configured for
standard export processing"]:::main N_SetExportMessageType_Node0 -- Yes --> N_SetExportMessageType_Node0_action N_SetExportMessageType_Node0_action --> E_SetExportMessageType S_SetExportMessageType --> N_SetExportMessageType_Node0 N_SetExportMessageType_Node1{"The system needs to set the message
type for export processing"}:::decision N_SetExportMessageType_Node1_action["The system assigns the export
message type flag to indicate
standard export processing"]:::main N_SetExportMessageType_Node1 -- Yes --> N_SetExportMessageType_Node1_action N_SetExportMessageType_Node1_action --> E_SetExportMessageType N_SetExportMessageType_Node0 -- No --> N_SetExportMessageType_Node1 N_SetExportMessageType_Node1 -- No --> E_SetExportMessageType
type"}:::decision N_SetExportMessageType_Node0_action["The message type is configured for
standard export processing"]:::main N_SetExportMessageType_Node0 -- Yes --> N_SetExportMessageType_Node0_action N_SetExportMessageType_Node0_action --> E_SetExportMessageType S_SetExportMessageType --> N_SetExportMessageType_Node0 N_SetExportMessageType_Node1{"The system needs to set the message
type for export processing"}:::decision N_SetExportMessageType_Node1_action["The system assigns the export
message type flag to indicate
standard export processing"]:::main N_SetExportMessageType_Node1 -- Yes --> N_SetExportMessageType_Node1_action N_SetExportMessageType_Node1_action --> E_SetExportMessageType N_SetExportMessageType_Node0 -- No --> N_SetExportMessageType_Node1 N_SetExportMessageType_Node1 -- No --> E_SetExportMessageType
File: GCX016.cbl
GIVEN:
The operation has been identified as a standard export
WHEN:
The system sets the export message type
THEN:
The message type is configured for standard export processing
File: GCX016.cbl
GIVEN:
A standard export operation is being processed
WHEN:
The system needs to set the message type for export processing
THEN:
The system assigns the export message type flag to indicate standard export processing
β Consolidated Acceptance Criteria
- The system sets the export cancellation message type → the message type is configured for export cancellation processing
- The system needs to set the message type for cancellation processing → the system assigns the export cancellation message type flag to indicate cancellation processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetExportCancellationMessageType(["Start Step"])
E_SetExportCancellationMessageType(["End Step"])
N_SetExportCancellationMessageType_Node0{"The system sets the export
cancellation message type"}:::decision N_SetExportCancellationMessageType_Node0_action["The message type is configured for
export cancellation processing"]:::main N_SetExportCancellationMessageType_Node0 -- Yes --> N_SetExportCancellationMessageType_Node0_action N_SetExportCancellationMessageType_Node0_action --> E_SetExportCancellationMessageType S_SetExportCancellationMessageType --> N_SetExportCancellationMessageType_Node0 N_SetExportCancellationMessageType_Node1{"The system needs to set the message
type for cancellation processing"}:::decision N_SetExportCancellationMessageType_Node1_action["The system assigns the export
cancellation message type flag to
indicate cancellation processing"]:::main N_SetExportCancellationMessageType_Node1 -- Yes --> N_SetExportCancellationMessageType_Node1_action N_SetExportCancellationMessageType_Node1_action --> E_SetExportCancellationMessageType N_SetExportCancellationMessageType_Node0 -- No --> N_SetExportCancellationMessageType_Node1 N_SetExportCancellationMessageType_Node1 -- No --> E_SetExportCancellationMessageType
cancellation message type"}:::decision N_SetExportCancellationMessageType_Node0_action["The message type is configured for
export cancellation processing"]:::main N_SetExportCancellationMessageType_Node0 -- Yes --> N_SetExportCancellationMessageType_Node0_action N_SetExportCancellationMessageType_Node0_action --> E_SetExportCancellationMessageType S_SetExportCancellationMessageType --> N_SetExportCancellationMessageType_Node0 N_SetExportCancellationMessageType_Node1{"The system needs to set the message
type for cancellation processing"}:::decision N_SetExportCancellationMessageType_Node1_action["The system assigns the export
cancellation message type flag to
indicate cancellation processing"]:::main N_SetExportCancellationMessageType_Node1 -- Yes --> N_SetExportCancellationMessageType_Node1_action N_SetExportCancellationMessageType_Node1_action --> E_SetExportCancellationMessageType N_SetExportCancellationMessageType_Node0 -- No --> N_SetExportCancellationMessageType_Node1 N_SetExportCancellationMessageType_Node1 -- No --> E_SetExportCancellationMessageType
File: GCX016.cbl
GIVEN:
The operation has been identified as an export cancellation
WHEN:
The system sets the export cancellation message type
THEN:
The message type is configured for export cancellation processing
File: GCX016.cbl
GIVEN:
An export cancellation operation is being processed
WHEN:
The system needs to set the message type for cancellation processing
THEN:
The system assigns the export cancellation message type flag to indicate cancellation processing
β Consolidated Acceptance Criteria
- The system calls the message preparation service Z110-PREP-EMCSEND → the export message is formatted and prepared for transmission
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CallZ110PREPEMCSENDMessagePreparation(["Start Step"])
E_CallZ110PREPEMCSENDMessagePreparation(["End Step"])
N_CallZ110PREPEMCSENDMessagePreparation_Node0{"The system calls the message
preparation service
Z110-PREP-EMCSEND"}:::decision N_CallZ110PREPEMCSENDMessagePreparation_Node0_action["The export message is formatted and
prepared for transmission"]:::main N_CallZ110PREPEMCSENDMessagePreparation_Node0 -- Yes --> N_CallZ110PREPEMCSENDMessagePreparation_Node0_action N_CallZ110PREPEMCSENDMessagePreparation_Node0_action --> E_CallZ110PREPEMCSENDMessagePreparation S_CallZ110PREPEMCSENDMessagePreparation --> N_CallZ110PREPEMCSENDMessagePreparation_Node0 N_CallZ110PREPEMCSENDMessagePreparation_Node0 -- No --> E_CallZ110PREPEMCSENDMessagePreparation
preparation service
Z110-PREP-EMCSEND"}:::decision N_CallZ110PREPEMCSENDMessagePreparation_Node0_action["The export message is formatted and
prepared for transmission"]:::main N_CallZ110PREPEMCSENDMessagePreparation_Node0 -- Yes --> N_CallZ110PREPEMCSENDMessagePreparation_Node0_action N_CallZ110PREPEMCSENDMessagePreparation_Node0_action --> E_CallZ110PREPEMCSENDMessagePreparation S_CallZ110PREPEMCSENDMessagePreparation --> N_CallZ110PREPEMCSENDMessagePreparation_Node0 N_CallZ110PREPEMCSENDMessagePreparation_Node0 -- No --> E_CallZ110PREPEMCSENDMessagePreparation
File: GCX016.cbl
GIVEN:
The export message type has been configured
WHEN:
The system calls the message preparation service Z110-PREP-EMCSEND
THEN:
- The export message is formatted
- Prepared for transmission
β Consolidated Acceptance Criteria
- The system validates the container type → the system determines if the equipment type is a valid container for special routing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ContainerTypeValidation(["Start Step"])
E_ContainerTypeValidation(["End Step"])
N_ContainerTypeValidation_Node0{"The system validates the container
type"}:::decision N_ContainerTypeValidation_Node0_action["The system determines if the
equipment type is a valid container
for special routing"]:::main N_ContainerTypeValidation_Node0 -- Yes --> N_ContainerTypeValidation_Node0_action N_ContainerTypeValidation_Node0_action --> E_ContainerTypeValidation S_ContainerTypeValidation --> N_ContainerTypeValidation_Node0 N_ContainerTypeValidation_Node0 -- No --> E_ContainerTypeValidation
type"}:::decision N_ContainerTypeValidation_Node0_action["The system determines if the
equipment type is a valid container
for special routing"]:::main N_ContainerTypeValidation_Node0 -- Yes --> N_ContainerTypeValidation_Node0_action N_ContainerTypeValidation_Node0_action --> E_ContainerTypeValidation S_ContainerTypeValidation --> N_ContainerTypeValidation_Node0 N_ContainerTypeValidation_Node0 -- No --> E_ContainerTypeValidation
File: GCX016.cbl
GIVEN:
An export message has been prepared for transmission
WHEN:
The system validates the container type
THEN:
The system determines if the equipment type is a valid container for special routing
β Consolidated Acceptance Criteria
- The system routes the export message → the message is routed to USEXP baskets for container-specific processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RoutetoUSEXPBasketsforContainerTypes(["Start Step"])
E_RoutetoUSEXPBasketsforContainerTypes(["End Step"])
N_RoutetoUSEXPBasketsforContainerTypes_Node0{"The system routes the export
message"}:::decision N_RoutetoUSEXPBasketsforContainerTypes_Node0_action["The message is routed to USEXP
baskets for container-specific
processing"]:::main N_RoutetoUSEXPBasketsforContainerTypes_Node0 -- Yes --> N_RoutetoUSEXPBasketsforContainerTypes_Node0_action N_RoutetoUSEXPBasketsforContainerTypes_Node0_action --> E_RoutetoUSEXPBasketsforContainerTypes S_RoutetoUSEXPBasketsforContainerTypes --> N_RoutetoUSEXPBasketsforContainerTypes_Node0 N_RoutetoUSEXPBasketsforContainerTypes_Node0 -- No --> E_RoutetoUSEXPBasketsforContainerTypes
message"}:::decision N_RoutetoUSEXPBasketsforContainerTypes_Node0_action["The message is routed to USEXP
baskets for container-specific
processing"]:::main N_RoutetoUSEXPBasketsforContainerTypes_Node0 -- Yes --> N_RoutetoUSEXPBasketsforContainerTypes_Node0_action N_RoutetoUSEXPBasketsforContainerTypes_Node0_action --> E_RoutetoUSEXPBasketsforContainerTypes S_RoutetoUSEXPBasketsforContainerTypes --> N_RoutetoUSEXPBasketsforContainerTypes_Node0 N_RoutetoUSEXPBasketsforContainerTypes_Node0 -- No --> E_RoutetoUSEXPBasketsforContainerTypes
File: GCX016.cbl
GIVEN:
The container type validation has determined the equipment is a valid container
WHEN:
The system routes the export message
THEN:
The message is routed to USEXP baskets for container-specific processing
β Consolidated Acceptance Criteria
- The system sets export message keywords → the message is tagged with appropriate keywords for export processing
- The system processes messages related to cargo export operations or US export procedures → the system sets keywords 'EXPORT' and 'USEXP' to ensure export-related messages are properly categorized for customs and export processing systems
- The system prepares the export message for USEXP processing → appropriate export message keywords are set based on container type and export requirements
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetExportMessageKeywords(["Start Step"])
E_SetExportMessageKeywords(["End Step"])
N_SetExportMessageKeywords_Node0{"The system sets export message
keywords"}:::decision N_SetExportMessageKeywords_Node0_action["The message is tagged with
appropriate keywords for export
processing"]:::main N_SetExportMessageKeywords_Node0 -- Yes --> N_SetExportMessageKeywords_Node0_action N_SetExportMessageKeywords_Node0_action --> E_SetExportMessageKeywords S_SetExportMessageKeywords --> N_SetExportMessageKeywords_Node0 N_SetExportMessageKeywords_Node1{"The system processes messages
related to cargo export operations
or US export procedures"}:::decision N_SetExportMessageKeywords_Node1_action["The system sets keywords EXPORT and
USEXP to ensure export-related
messages are properly categorized
for customs and export processing
systems"]:::main N_SetExportMessageKeywords_Node1 -- Yes --> N_SetExportMessageKeywords_Node1_action N_SetExportMessageKeywords_Node1_action --> E_SetExportMessageKeywords N_SetExportMessageKeywords_Node0 -- No --> N_SetExportMessageKeywords_Node1 N_SetExportMessageKeywords_Node2{"The system prepares the export
message for USEXP processing"}:::decision N_SetExportMessageKeywords_Node2_action["Appropriate export message keywords
are set based on container type and
export requirements"]:::main N_SetExportMessageKeywords_Node2 -- Yes --> N_SetExportMessageKeywords_Node2_action N_SetExportMessageKeywords_Node2_action --> E_SetExportMessageKeywords N_SetExportMessageKeywords_Node1 -- No --> N_SetExportMessageKeywords_Node2 N_SetExportMessageKeywords_Node2 -- No --> E_SetExportMessageKeywords
keywords"}:::decision N_SetExportMessageKeywords_Node0_action["The message is tagged with
appropriate keywords for export
processing"]:::main N_SetExportMessageKeywords_Node0 -- Yes --> N_SetExportMessageKeywords_Node0_action N_SetExportMessageKeywords_Node0_action --> E_SetExportMessageKeywords S_SetExportMessageKeywords --> N_SetExportMessageKeywords_Node0 N_SetExportMessageKeywords_Node1{"The system processes messages
related to cargo export operations
or US export procedures"}:::decision N_SetExportMessageKeywords_Node1_action["The system sets keywords EXPORT and
USEXP to ensure export-related
messages are properly categorized
for customs and export processing
systems"]:::main N_SetExportMessageKeywords_Node1 -- Yes --> N_SetExportMessageKeywords_Node1_action N_SetExportMessageKeywords_Node1_action --> E_SetExportMessageKeywords N_SetExportMessageKeywords_Node0 -- No --> N_SetExportMessageKeywords_Node1 N_SetExportMessageKeywords_Node2{"The system prepares the export
message for USEXP processing"}:::decision N_SetExportMessageKeywords_Node2_action["Appropriate export message keywords
are set based on container type and
export requirements"]:::main N_SetExportMessageKeywords_Node2 -- Yes --> N_SetExportMessageKeywords_Node2_action N_SetExportMessageKeywords_Node2_action --> E_SetExportMessageKeywords N_SetExportMessageKeywords_Node1 -- No --> N_SetExportMessageKeywords_Node2 N_SetExportMessageKeywords_Node2 -- No --> E_SetExportMessageKeywords
File: GCX016.cbl
GIVEN:
The export message routing has been determined
WHEN:
The system sets export message keywords
THEN:
The message is tagged with appropriate keywords for export processing
File: GCX016.cbl
GIVEN:
A message type is determined to be an export message
WHEN:
The system processes messages related to cargo export operations or US export procedures
THEN:
- The system sets keywords 'export' and 'usexp' to ensure export-related messages are properly categorized for customs
- Export processing systems
File: GCX016.cbl
GIVEN:
A container has been qualified for USEXP basket routing
WHEN:
The system prepares the export message for USEXP processing
THEN:
- Appropriate export message keywords are set based on container type
- Export requirements
β Consolidated Acceptance Criteria
- The system formats the export subject line → the subject line contains formatted cargo and export operation information
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_FormatExportSubjectLine(["Start Step"])
E_FormatExportSubjectLine(["End Step"])
N_FormatExportSubjectLine_Node0{"The system formats the export
subject line"}:::decision N_FormatExportSubjectLine_Node0_action["The subject line contains formatted
cargo and export operation
information"]:::main N_FormatExportSubjectLine_Node0 -- Yes --> N_FormatExportSubjectLine_Node0_action N_FormatExportSubjectLine_Node0_action --> E_FormatExportSubjectLine S_FormatExportSubjectLine --> N_FormatExportSubjectLine_Node0 N_FormatExportSubjectLine_Node0 -- No --> E_FormatExportSubjectLine
subject line"}:::decision N_FormatExportSubjectLine_Node0_action["The subject line contains formatted
cargo and export operation
information"]:::main N_FormatExportSubjectLine_Node0 -- Yes --> N_FormatExportSubjectLine_Node0_action N_FormatExportSubjectLine_Node0_action --> E_FormatExportSubjectLine S_FormatExportSubjectLine --> N_FormatExportSubjectLine_Node0 N_FormatExportSubjectLine_Node0 -- No --> E_FormatExportSubjectLine
File: GCX016.cbl
GIVEN:
Export message keywords have been configured
WHEN:
The system formats the export subject line
THEN:
- The subject line contains formatted cargo
- Export operation information
β Consolidated Acceptance Criteria
- The system validates the destination user from message routing tables → the system determines if the destination user is valid for receiving export notifications
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ValidDestinationUser(["Start Step"])
E_ValidDestinationUser(["End Step"])
N_ValidDestinationUser_Node0{"The system validates the
destination user from message
routing tables"}:::decision N_ValidDestinationUser_Node0_action["The system determines if the
destination user is valid for
receiving export notifications"]:::main N_ValidDestinationUser_Node0 -- Yes --> N_ValidDestinationUser_Node0_action N_ValidDestinationUser_Node0_action --> E_ValidDestinationUser S_ValidDestinationUser --> N_ValidDestinationUser_Node0 N_ValidDestinationUser_Node0 -- No --> E_ValidDestinationUser
destination user from message
routing tables"}:::decision N_ValidDestinationUser_Node0_action["The system determines if the
destination user is valid for
receiving export notifications"]:::main N_ValidDestinationUser_Node0 -- Yes --> N_ValidDestinationUser_Node0_action N_ValidDestinationUser_Node0_action --> E_ValidDestinationUser S_ValidDestinationUser --> N_ValidDestinationUser_Node0 N_ValidDestinationUser_Node0 -- No --> E_ValidDestinationUser
File: GCX016.cbl
GIVEN:
The export subject line has been formatted
WHEN:
The system validates the destination user from message routing tables
THEN:
The system determines if the destination user is valid for receiving export notifications
β Consolidated Acceptance Criteria
- The system routes to the default USEXP user → the export message is assigned to the default USEXP user for processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RoutetoDefaultUSEXPUser(["Start Step"])
E_RoutetoDefaultUSEXPUser(["End Step"])
N_RoutetoDefaultUSEXPUser_Node0{"The system routes to the default
USEXP user"}:::decision N_RoutetoDefaultUSEXPUser_Node0_action["The export message is assigned to
the default USEXP user for
processing"]:::main N_RoutetoDefaultUSEXPUser_Node0 -- Yes --> N_RoutetoDefaultUSEXPUser_Node0_action N_RoutetoDefaultUSEXPUser_Node0_action --> E_RoutetoDefaultUSEXPUser S_RoutetoDefaultUSEXPUser --> N_RoutetoDefaultUSEXPUser_Node0 N_RoutetoDefaultUSEXPUser_Node0 -- No --> E_RoutetoDefaultUSEXPUser
USEXP user"}:::decision N_RoutetoDefaultUSEXPUser_Node0_action["The export message is assigned to
the default USEXP user for
processing"]:::main N_RoutetoDefaultUSEXPUser_Node0 -- Yes --> N_RoutetoDefaultUSEXPUser_Node0_action N_RoutetoDefaultUSEXPUser_Node0_action --> E_RoutetoDefaultUSEXPUser S_RoutetoDefaultUSEXPUser --> N_RoutetoDefaultUSEXPUser_Node0 N_RoutetoDefaultUSEXPUser_Node0 -- No --> E_RoutetoDefaultUSEXPUser
File: GCX016.cbl
GIVEN:
The destination user validation has determined the user is invalid
WHEN:
The system routes to the default USEXP user
THEN:
The export message is assigned to the default USEXP user for processing
β Consolidated Acceptance Criteria
- The system sends the export notification message → the export notification is transmitted to the designated user
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SendExportNotificationMessage(["Start Step"])
E_SendExportNotificationMessage(["End Step"])
N_SendExportNotificationMessage_Node0{"The system sends the export
notification message"}:::decision N_SendExportNotificationMessage_Node0_action["The export notification is
transmitted to the designated user"]:::main N_SendExportNotificationMessage_Node0 -- Yes --> N_SendExportNotificationMessage_Node0_action N_SendExportNotificationMessage_Node0_action --> E_SendExportNotificationMessage S_SendExportNotificationMessage --> N_SendExportNotificationMessage_Node0 N_SendExportNotificationMessage_Node0 -- No --> E_SendExportNotificationMessage
notification message"}:::decision N_SendExportNotificationMessage_Node0_action["The export notification is
transmitted to the designated user"]:::main N_SendExportNotificationMessage_Node0 -- Yes --> N_SendExportNotificationMessage_Node0_action N_SendExportNotificationMessage_Node0_action --> E_SendExportNotificationMessage S_SendExportNotificationMessage --> N_SendExportNotificationMessage_Node0 N_SendExportNotificationMessage_Node0 -- No --> E_SendExportNotificationMessage
File: GCX016.cbl
GIVEN:
A valid destination user has been determined (either original or default)
WHEN:
The system sends the export notification message
THEN:
The export notification is transmitted to the designated user
β Consolidated Acceptance Criteria
- The system logs the export message transaction → the export message transaction is recorded in the system logs
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogExportMessageTransaction(["Start Step"])
E_LogExportMessageTransaction(["End Step"])
N_LogExportMessageTransaction_Node0{"The system logs the export message
transaction"}:::decision N_LogExportMessageTransaction_Node0_action["The export message transaction is
recorded in the system logs"]:::main N_LogExportMessageTransaction_Node0 -- Yes --> N_LogExportMessageTransaction_Node0_action N_LogExportMessageTransaction_Node0_action --> E_LogExportMessageTransaction S_LogExportMessageTransaction --> N_LogExportMessageTransaction_Node0 N_LogExportMessageTransaction_Node0 -- No --> E_LogExportMessageTransaction
transaction"}:::decision N_LogExportMessageTransaction_Node0_action["The export message transaction is
recorded in the system logs"]:::main N_LogExportMessageTransaction_Node0 -- Yes --> N_LogExportMessageTransaction_Node0_action N_LogExportMessageTransaction_Node0_action --> E_LogExportMessageTransaction S_LogExportMessageTransaction --> N_LogExportMessageTransaction_Node0 N_LogExportMessageTransaction_Node0 -- No --> E_LogExportMessageTransaction
File: GCX016.cbl
GIVEN:
The export notification message has been sent successfully
WHEN:
The system logs the export message transaction
THEN:
The export message transaction is recorded in the system logs
β Consolidated Acceptance Criteria
- The system processes the V9 event segment → the system identifies the event type and prepares for appropriate arrival or cancellation processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_TrainArrivalEventReceived(["Start Step"])
E_TrainArrivalEventReceived(["End Step"])
N_TrainArrivalEventReceived_Node0{"The system processes the V9 event
segment"}:::decision N_TrainArrivalEventReceived_Node0_action["The system identifies the event
type and prepares for appropriate
arrival or cancellation processing"]:::main N_TrainArrivalEventReceived_Node0 -- Yes --> N_TrainArrivalEventReceived_Node0_action N_TrainArrivalEventReceived_Node0_action --> E_TrainArrivalEventReceived S_TrainArrivalEventReceived --> N_TrainArrivalEventReceived_Node0 N_TrainArrivalEventReceived_Node0 -- No --> E_TrainArrivalEventReceived
segment"}:::decision N_TrainArrivalEventReceived_Node0_action["The system identifies the event
type and prepares for appropriate
arrival or cancellation processing"]:::main N_TrainArrivalEventReceived_Node0 -- Yes --> N_TrainArrivalEventReceived_Node0_action N_TrainArrivalEventReceived_Node0_action --> E_TrainArrivalEventReceived S_TrainArrivalEventReceived --> N_TrainArrivalEventReceived_Node0 N_TrainArrivalEventReceived_Node0 -- No --> E_TrainArrivalEventReceived
File: GCX016.cbl
GIVEN:
A train arrival event message is received from the message queue
WHEN:
The system processes the V9 event segment
THEN:
- The system identifies the event type
- Prepares for appropriate arrival or cancellation processing
β Consolidated Acceptance Criteria
- If the disposition code → the system sets arrival processing flags and prepares port arrival notification
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_PODTrainArrivedatPort(["Start Step"])
E_PODTrainArrivedatPort(["End Step"])
N_PODTrainArrivedatPort_Node0{"The system evaluates the
disposition code"}:::decision N_PODTrainArrivedatPort_Node0_action["The system sets arrival processing
flags and prepares port arrival
notification"]:::main N_PODTrainArrivedatPort_Node0 -- Yes --> N_PODTrainArrivedatPort_Node0_action N_PODTrainArrivedatPort_Node0_action --> E_PODTrainArrivedatPort S_PODTrainArrivedatPort --> N_PODTrainArrivedatPort_Node0 N_PODTrainArrivedatPort_Node0 -- No --> E_PODTrainArrivedatPort
disposition code"}:::decision N_PODTrainArrivedatPort_Node0_action["The system sets arrival processing
flags and prepares port arrival
notification"]:::main N_PODTrainArrivedatPort_Node0 -- Yes --> N_PODTrainArrivedatPort_Node0_action N_PODTrainArrivedatPort_Node0_action --> E_PODTrainArrivedatPort S_PODTrainArrivedatPort --> N_PODTrainArrivedatPort_Node0 N_PODTrainArrivedatPort_Node0 -- No --> E_PODTrainArrivedatPort
File: GCX016.cbl
GIVEN:
A V9 segment with event code 'POD' is received
WHEN:
The system evaluates the disposition code
THEN:
- The system sets arrival processing flags
- Prepares port arrival notification
β Consolidated Acceptance Criteria
- If the disposition code → the system sets arrival processing flags and prepares destination arrival notification
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AADTrainArrivedatDestination(["Start Step"])
E_AADTrainArrivedatDestination(["End Step"])
N_AADTrainArrivedatDestination_Node0{"The system evaluates the
disposition code"}:::decision N_AADTrainArrivedatDestination_Node0_action["The system sets arrival processing
flags and prepares destination
arrival notification"]:::main N_AADTrainArrivedatDestination_Node0 -- Yes --> N_AADTrainArrivedatDestination_Node0_action N_AADTrainArrivedatDestination_Node0_action --> E_AADTrainArrivedatDestination S_AADTrainArrivedatDestination --> N_AADTrainArrivedatDestination_Node0 N_AADTrainArrivedatDestination_Node0 -- No --> E_AADTrainArrivedatDestination
disposition code"}:::decision N_AADTrainArrivedatDestination_Node0_action["The system sets arrival processing
flags and prepares destination
arrival notification"]:::main N_AADTrainArrivedatDestination_Node0 -- Yes --> N_AADTrainArrivedatDestination_Node0_action N_AADTrainArrivedatDestination_Node0_action --> E_AADTrainArrivedatDestination S_AADTrainArrivedatDestination --> N_AADTrainArrivedatDestination_Node0 N_AADTrainArrivedatDestination_Node0 -- No --> E_AADTrainArrivedatDestination
File: GCX016.cbl
GIVEN:
A V9 segment with event code 'AAD' is received
WHEN:
The system evaluates the disposition code
THEN:
- The system sets arrival processing flags
- Prepares destination arrival notification
β Consolidated Acceptance Criteria
- If the disposition code → the system sets cancellation processing flags and prepares arrival cancellation notification
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_COCCancelTrainArrival(["Start Step"])
E_COCCancelTrainArrival(["End Step"])
N_COCCancelTrainArrival_Node0{"The system evaluates the
disposition code"}:::decision N_COCCancelTrainArrival_Node0_action["The system sets cancellation
processing flags and prepares
arrival cancellation notification"]:::main N_COCCancelTrainArrival_Node0 -- Yes --> N_COCCancelTrainArrival_Node0_action N_COCCancelTrainArrival_Node0_action --> E_COCCancelTrainArrival S_COCCancelTrainArrival --> N_COCCancelTrainArrival_Node0 N_COCCancelTrainArrival_Node0 -- No --> E_COCCancelTrainArrival
disposition code"}:::decision N_COCCancelTrainArrival_Node0_action["The system sets cancellation
processing flags and prepares
arrival cancellation notification"]:::main N_COCCancelTrainArrival_Node0 -- Yes --> N_COCCancelTrainArrival_Node0_action N_COCCancelTrainArrival_Node0_action --> E_COCCancelTrainArrival S_COCCancelTrainArrival --> N_COCCancelTrainArrival_Node0 N_COCCancelTrainArrival_Node0 -- No --> E_COCCancelTrainArrival
File: GCX016.cbl
GIVEN:
A V9 segment with event code 'COC' is received
WHEN:
The system evaluates the disposition code
THEN:
- The system sets cancellation processing flags
- Prepares arrival cancellation notification
β Consolidated Acceptance Criteria
- The system prepares message routing configuration → the system sets arrival message type flag and configures routing parameters
- If the message type for arrival processing → the system sets the arrival message type flag to indicate standard arrival message generation
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetArrivalMessageType(["Start Step"])
E_SetArrivalMessageType(["End Step"])
N_SetArrivalMessageType_Node0{"The system prepares message routing
configuration"}:::decision N_SetArrivalMessageType_Node0_action["The system sets arrival message
type flag and configures routing
parameters"]:::main N_SetArrivalMessageType_Node0 -- Yes --> N_SetArrivalMessageType_Node0_action N_SetArrivalMessageType_Node0_action --> E_SetArrivalMessageType S_SetArrivalMessageType --> N_SetArrivalMessageType_Node0 N_SetArrivalMessageType_Node1{"The system evaluates the message
type for arrival processing"}:::decision N_SetArrivalMessageType_Node1_action["The system sets the arrival message
type flag to indicate standard
arrival message generation"]:::main N_SetArrivalMessageType_Node1 -- Yes --> N_SetArrivalMessageType_Node1_action N_SetArrivalMessageType_Node1_action --> E_SetArrivalMessageType N_SetArrivalMessageType_Node0 -- No --> N_SetArrivalMessageType_Node1 N_SetArrivalMessageType_Node1 -- No --> E_SetArrivalMessageType
configuration"}:::decision N_SetArrivalMessageType_Node0_action["The system sets arrival message
type flag and configures routing
parameters"]:::main N_SetArrivalMessageType_Node0 -- Yes --> N_SetArrivalMessageType_Node0_action N_SetArrivalMessageType_Node0_action --> E_SetArrivalMessageType S_SetArrivalMessageType --> N_SetArrivalMessageType_Node0 N_SetArrivalMessageType_Node1{"The system evaluates the message
type for arrival processing"}:::decision N_SetArrivalMessageType_Node1_action["The system sets the arrival message
type flag to indicate standard
arrival message generation"]:::main N_SetArrivalMessageType_Node1 -- Yes --> N_SetArrivalMessageType_Node1_action N_SetArrivalMessageType_Node1_action --> E_SetArrivalMessageType N_SetArrivalMessageType_Node0 -- No --> N_SetArrivalMessageType_Node1 N_SetArrivalMessageType_Node1 -- No --> E_SetArrivalMessageType
File: GCX016.cbl
GIVEN:
An arrival event (POD or AAD) has been identified
WHEN:
The system prepares message routing configuration
THEN:
- The system sets arrival message type flag
- Configures routing parameters
File: GCX016.cbl
GIVEN:
An arrival message processing request is initiated
WHEN:
The system evaluates the message type for arrival processing
THEN:
The system sets the arrival message type flag to indicate standard arrival message generation
β Consolidated Acceptance Criteria
- The system prepares message routing configuration → the system sets cancellation message type flag and configures routing parameters
- If the message type for cancellation processing → the system sets the cancellation message type flag to indicate arrival cancellation message generation
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetCancellationMessageType(["Start Step"])
E_SetCancellationMessageType(["End Step"])
N_SetCancellationMessageType_Node0{"The system prepares message routing
configuration"}:::decision N_SetCancellationMessageType_Node0_action["The system sets cancellation
message type flag and configures
routing parameters"]:::main N_SetCancellationMessageType_Node0 -- Yes --> N_SetCancellationMessageType_Node0_action N_SetCancellationMessageType_Node0_action --> E_SetCancellationMessageType S_SetCancellationMessageType --> N_SetCancellationMessageType_Node0 N_SetCancellationMessageType_Node1{"The system evaluates the message
type for cancellation processing"}:::decision N_SetCancellationMessageType_Node1_action["The system sets the cancellation
message type flag to indicate
arrival cancellation message
generation"]:::main N_SetCancellationMessageType_Node1 -- Yes --> N_SetCancellationMessageType_Node1_action N_SetCancellationMessageType_Node1_action --> E_SetCancellationMessageType N_SetCancellationMessageType_Node0 -- No --> N_SetCancellationMessageType_Node1 N_SetCancellationMessageType_Node1 -- No --> E_SetCancellationMessageType
configuration"}:::decision N_SetCancellationMessageType_Node0_action["The system sets cancellation
message type flag and configures
routing parameters"]:::main N_SetCancellationMessageType_Node0 -- Yes --> N_SetCancellationMessageType_Node0_action N_SetCancellationMessageType_Node0_action --> E_SetCancellationMessageType S_SetCancellationMessageType --> N_SetCancellationMessageType_Node0 N_SetCancellationMessageType_Node1{"The system evaluates the message
type for cancellation processing"}:::decision N_SetCancellationMessageType_Node1_action["The system sets the cancellation
message type flag to indicate
arrival cancellation message
generation"]:::main N_SetCancellationMessageType_Node1 -- Yes --> N_SetCancellationMessageType_Node1_action N_SetCancellationMessageType_Node1_action --> E_SetCancellationMessageType N_SetCancellationMessageType_Node0 -- No --> N_SetCancellationMessageType_Node1 N_SetCancellationMessageType_Node1 -- No --> E_SetCancellationMessageType
File: GCX016.cbl
GIVEN:
A cancellation event (COC) has been identified
WHEN:
The system prepares message routing configuration
THEN:
- The system sets cancellation message type flag
- Configures routing parameters
File: GCX016.cbl
GIVEN:
An arrival cancellation processing request is initiated
WHEN:
The system evaluates the message type for cancellation processing
THEN:
The system sets the cancellation message type flag to indicate arrival cancellation message generation
β Consolidated Acceptance Criteria
- The system formats the notification message → the system creates a properly formatted USCS arrival message with train and location details
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_PrepareUSCSArrivalMessage(["Start Step"])
E_PrepareUSCSArrivalMessage(["End Step"])
N_PrepareUSCSArrivalMessage_Node0{"The system formats the notification
message"}:::decision N_PrepareUSCSArrivalMessage_Node0_action["The system creates a properly
formatted USCS arrival message with
train and location details"]:::main N_PrepareUSCSArrivalMessage_Node0 -- Yes --> N_PrepareUSCSArrivalMessage_Node0_action N_PrepareUSCSArrivalMessage_Node0_action --> E_PrepareUSCSArrivalMessage S_PrepareUSCSArrivalMessage --> N_PrepareUSCSArrivalMessage_Node0 N_PrepareUSCSArrivalMessage_Node0 -- No --> E_PrepareUSCSArrivalMessage
message"}:::decision N_PrepareUSCSArrivalMessage_Node0_action["The system creates a properly
formatted USCS arrival message with
train and location details"]:::main N_PrepareUSCSArrivalMessage_Node0 -- Yes --> N_PrepareUSCSArrivalMessage_Node0_action N_PrepareUSCSArrivalMessage_Node0_action --> E_PrepareUSCSArrivalMessage S_PrepareUSCSArrivalMessage --> N_PrepareUSCSArrivalMessage_Node0 N_PrepareUSCSArrivalMessage_Node0 -- No --> E_PrepareUSCSArrivalMessage
File: GCX016.cbl
GIVEN:
Arrival message type has been set for POD or AAD events
WHEN:
The system formats the notification message
THEN:
- The system creates a properly formatted uscs arrival message with train
- Location details
β Consolidated Acceptance Criteria
- The system formats the notification message → the system creates a properly formatted USCS cancellation message with train and location details
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_PrepareUSCSCancellationMessage(["Start Step"])
E_PrepareUSCSCancellationMessage(["End Step"])
N_PrepareUSCSCancellationMessage_Node0{"The system formats the notification
message"}:::decision N_PrepareUSCSCancellationMessage_Node0_action["The system creates a properly
formatted USCS cancellation message
with train and location details"]:::main N_PrepareUSCSCancellationMessage_Node0 -- Yes --> N_PrepareUSCSCancellationMessage_Node0_action N_PrepareUSCSCancellationMessage_Node0_action --> E_PrepareUSCSCancellationMessage S_PrepareUSCSCancellationMessage --> N_PrepareUSCSCancellationMessage_Node0 N_PrepareUSCSCancellationMessage_Node0 -- No --> E_PrepareUSCSCancellationMessage
message"}:::decision N_PrepareUSCSCancellationMessage_Node0_action["The system creates a properly
formatted USCS cancellation message
with train and location details"]:::main N_PrepareUSCSCancellationMessage_Node0 -- Yes --> N_PrepareUSCSCancellationMessage_Node0_action N_PrepareUSCSCancellationMessage_Node0_action --> E_PrepareUSCSCancellationMessage S_PrepareUSCSCancellationMessage --> N_PrepareUSCSCancellationMessage_Node0 N_PrepareUSCSCancellationMessage_Node0 -- No --> E_PrepareUSCSCancellationMessage
File: GCX016.cbl
GIVEN:
Cancellation message type has been set for COC events
WHEN:
The system formats the notification message
THEN:
- The system creates a properly formatted uscs cancellation message with train
- Location details
β Consolidated Acceptance Criteria
- The system formats the message content → the system structures the message with proper headers, data fields, and formatting requirements
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_FormatMessageContent(["Start Step"])
E_FormatMessageContent(["End Step"])
N_FormatMessageContent_Node0{"The system formats the message
content"}:::decision N_FormatMessageContent_Node0_action["The system structures the message
with proper headers, data fields,
and formatting requirements"]:::main N_FormatMessageContent_Node0 -- Yes --> N_FormatMessageContent_Node0_action N_FormatMessageContent_Node0_action --> E_FormatMessageContent S_FormatMessageContent --> N_FormatMessageContent_Node0 N_FormatMessageContent_Node0 -- No --> E_FormatMessageContent
content"}:::decision N_FormatMessageContent_Node0_action["The system structures the message
with proper headers, data fields,
and formatting requirements"]:::main N_FormatMessageContent_Node0 -- Yes --> N_FormatMessageContent_Node0_action N_FormatMessageContent_Node0_action --> E_FormatMessageContent S_FormatMessageContent --> N_FormatMessageContent_Node0 N_FormatMessageContent_Node0 -- No --> E_FormatMessageContent
File: GCX016.cbl
GIVEN:
A USCS message has been prepared for arrival or cancellation
WHEN:
The system formats the message content
THEN:
The system structures the message with proper headers, data fields, and formatting requirements
β Consolidated Acceptance Criteria
- The system adds train-specific information → the system includes train ID, vessel name, and current status in the message
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IncludeTrainInformation(["Start Step"])
E_IncludeTrainInformation(["End Step"])
N_IncludeTrainInformation_Node0{"The system adds train-specific
information"}:::decision N_IncludeTrainInformation_Node0_action["The system includes train ID,
vessel name, and current status in
the message"]:::main N_IncludeTrainInformation_Node0 -- Yes --> N_IncludeTrainInformation_Node0_action N_IncludeTrainInformation_Node0_action --> E_IncludeTrainInformation S_IncludeTrainInformation --> N_IncludeTrainInformation_Node0 N_IncludeTrainInformation_Node0 -- No --> E_IncludeTrainInformation
information"}:::decision N_IncludeTrainInformation_Node0_action["The system includes train ID,
vessel name, and current status in
the message"]:::main N_IncludeTrainInformation_Node0 -- Yes --> N_IncludeTrainInformation_Node0_action N_IncludeTrainInformation_Node0_action --> E_IncludeTrainInformation S_IncludeTrainInformation --> N_IncludeTrainInformation_Node0 N_IncludeTrainInformation_Node0 -- No --> E_IncludeTrainInformation
File: GCX016.cbl
GIVEN:
Message content formatting is in progress
WHEN:
The system adds train-specific information
THEN:
The system includes train ID, vessel name, and current status in the message
β Consolidated Acceptance Criteria
- The system adds location details → the system includes appropriate port or destination information based on the event type (POD/AAD)
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IncludePortDestinationDetails(["Start Step"])
E_IncludePortDestinationDetails(["End Step"])
N_IncludePortDestinationDetails_Node0{"The system adds location details"}:::decision
N_IncludePortDestinationDetails_Node0_action["The system includes appropriate
port or destination information
based on the event type PODAAD"]:::main N_IncludePortDestinationDetails_Node0 -- Yes --> N_IncludePortDestinationDetails_Node0_action N_IncludePortDestinationDetails_Node0_action --> E_IncludePortDestinationDetails S_IncludePortDestinationDetails --> N_IncludePortDestinationDetails_Node0 N_IncludePortDestinationDetails_Node0 -- No --> E_IncludePortDestinationDetails
port or destination information
based on the event type PODAAD"]:::main N_IncludePortDestinationDetails_Node0 -- Yes --> N_IncludePortDestinationDetails_Node0_action N_IncludePortDestinationDetails_Node0_action --> E_IncludePortDestinationDetails S_IncludePortDestinationDetails --> N_IncludePortDestinationDetails_Node0 N_IncludePortDestinationDetails_Node0 -- No --> E_IncludePortDestinationDetails
File: GCX016.cbl
GIVEN:
Train information has been included in the message
WHEN:
The system adds location details
THEN:
The system includes appropriate port or destination information based on the event type (POD/AAD)
β Consolidated Acceptance Criteria
- The system adds temporal information → the system includes event date, time, and timezone information in the notification message
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IncludeTimestampInformation(["Start Step"])
E_IncludeTimestampInformation(["End Step"])
N_IncludeTimestampInformation_Node0{"The system adds temporal
information"}:::decision N_IncludeTimestampInformation_Node0_action["The system includes event date,
time, and timezone information in
the notification message"]:::main N_IncludeTimestampInformation_Node0 -- Yes --> N_IncludeTimestampInformation_Node0_action N_IncludeTimestampInformation_Node0_action --> E_IncludeTimestampInformation S_IncludeTimestampInformation --> N_IncludeTimestampInformation_Node0 N_IncludeTimestampInformation_Node0 -- No --> E_IncludeTimestampInformation
information"}:::decision N_IncludeTimestampInformation_Node0_action["The system includes event date,
time, and timezone information in
the notification message"]:::main N_IncludeTimestampInformation_Node0 -- Yes --> N_IncludeTimestampInformation_Node0_action N_IncludeTimestampInformation_Node0_action --> E_IncludeTimestampInformation S_IncludeTimestampInformation --> N_IncludeTimestampInformation_Node0 N_IncludeTimestampInformation_Node0 -- No --> E_IncludeTimestampInformation
File: GCX016.cbl
GIVEN:
Location details have been included in the message
WHEN:
The system adds temporal information
THEN:
The system includes event date, time, and timezone information in the notification message
β Consolidated Acceptance Criteria
- The system initiates USCS routing → the system sends the notification message to USCS system endpoints
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RoutetoUSCSSystem(["Start Step"])
E_RoutetoUSCSSystem(["End Step"])
N_RoutetoUSCSSystem_Node0{"The system initiates USCS routing"}:::decision
N_RoutetoUSCSSystem_Node0_action["The system sends the notification
message to USCS system endpoints"]:::main N_RoutetoUSCSSystem_Node0 -- Yes --> N_RoutetoUSCSSystem_Node0_action N_RoutetoUSCSSystem_Node0_action --> E_RoutetoUSCSSystem S_RoutetoUSCSSystem --> N_RoutetoUSCSSystem_Node0 N_RoutetoUSCSSystem_Node0 -- No --> E_RoutetoUSCSSystem
message to USCS system endpoints"]:::main N_RoutetoUSCSSystem_Node0 -- Yes --> N_RoutetoUSCSSystem_Node0_action N_RoutetoUSCSSystem_Node0_action --> E_RoutetoUSCSSystem S_RoutetoUSCSSystem --> N_RoutetoUSCSSystem_Node0 N_RoutetoUSCSSystem_Node0 -- No --> E_RoutetoUSCSSystem
File: GCX016.cbl
GIVEN:
Message routing evaluation determines USCS routing is required
WHEN:
The system initiates USCS routing
THEN:
The system sends the notification message to USCS system endpoints
β Consolidated Acceptance Criteria
- The system initiates broker routing → the system sends the notification message to identified brokers via configured communication channels
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RoutetoBrokerNotifications(["Start Step"])
E_RoutetoBrokerNotifications(["End Step"])
N_RoutetoBrokerNotifications_Node0{"The system initiates broker routing"}:::decision
N_RoutetoBrokerNotifications_Node0_action["The system sends the notification
message to identified brokers via
configured communication channels"]:::main N_RoutetoBrokerNotifications_Node0 -- Yes --> N_RoutetoBrokerNotifications_Node0_action N_RoutetoBrokerNotifications_Node0_action --> E_RoutetoBrokerNotifications S_RoutetoBrokerNotifications --> N_RoutetoBrokerNotifications_Node0 N_RoutetoBrokerNotifications_Node0 -- No --> E_RoutetoBrokerNotifications
message to identified brokers via
configured communication channels"]:::main N_RoutetoBrokerNotifications_Node0 -- Yes --> N_RoutetoBrokerNotifications_Node0_action N_RoutetoBrokerNotifications_Node0_action --> E_RoutetoBrokerNotifications S_RoutetoBrokerNotifications --> N_RoutetoBrokerNotifications_Node0 N_RoutetoBrokerNotifications_Node0 -- No --> E_RoutetoBrokerNotifications
File: GCX016.cbl
GIVEN:
Message routing evaluation determines broker notification is required
WHEN:
The system initiates broker routing
THEN:
The system sends the notification message to identified brokers via configured communication channels
β Consolidated Acceptance Criteria
- The system initiates payer of freight routing → the system sends the notification message to payer of freight contacts via configured communication channels
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RoutetoPayerofFreight(["Start Step"])
E_RoutetoPayerofFreight(["End Step"])
N_RoutetoPayerofFreight_Node0{"The system initiates payer of
freight routing"}:::decision N_RoutetoPayerofFreight_Node0_action["The system sends the notification
message to payer of freight contacts
via configured communication
channels"]:::main N_RoutetoPayerofFreight_Node0 -- Yes --> N_RoutetoPayerofFreight_Node0_action N_RoutetoPayerofFreight_Node0_action --> E_RoutetoPayerofFreight S_RoutetoPayerofFreight --> N_RoutetoPayerofFreight_Node0 N_RoutetoPayerofFreight_Node0 -- No --> E_RoutetoPayerofFreight
freight routing"}:::decision N_RoutetoPayerofFreight_Node0_action["The system sends the notification
message to payer of freight contacts
via configured communication
channels"]:::main N_RoutetoPayerofFreight_Node0 -- Yes --> N_RoutetoPayerofFreight_Node0_action N_RoutetoPayerofFreight_Node0_action --> E_RoutetoPayerofFreight S_RoutetoPayerofFreight --> N_RoutetoPayerofFreight_Node0 N_RoutetoPayerofFreight_Node0 -- No --> E_RoutetoPayerofFreight
File: GCX016.cbl
GIVEN:
Message routing evaluation determines payer of freight notification is required
WHEN:
The system initiates payer of freight routing
THEN:
The system sends the notification message to payer of freight contacts via configured communication channels
β Consolidated Acceptance Criteria
- The system transmits the arrival notification → the system successfully sends arrival messages to USCS, brokers, and payer of freight as configured
- Arrival notifications are sent → the system sends arrival messages to relevant stakeholders and systems
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SendArrivalNotification(["Start Step"])
E_SendArrivalNotification(["End Step"])
N_SendArrivalNotification_Node0{"The system transmits the arrival
notification"}:::decision N_SendArrivalNotification_Node0_action["The system successfully sends
arrival messages to USCS, brokers,
and payer of freight as configured"]:::main N_SendArrivalNotification_Node0 -- Yes --> N_SendArrivalNotification_Node0_action N_SendArrivalNotification_Node0_action --> E_SendArrivalNotification S_SendArrivalNotification --> N_SendArrivalNotification_Node0 N_SendArrivalNotification_Node1{"Arrival notifications are sent"}:::decision N_SendArrivalNotification_Node1_action["The system sends arrival messages
to relevant stakeholders and systems"]:::main N_SendArrivalNotification_Node1 -- Yes --> N_SendArrivalNotification_Node1_action N_SendArrivalNotification_Node1_action --> E_SendArrivalNotification N_SendArrivalNotification_Node0 -- No --> N_SendArrivalNotification_Node1 N_SendArrivalNotification_Node1 -- No --> E_SendArrivalNotification
notification"}:::decision N_SendArrivalNotification_Node0_action["The system successfully sends
arrival messages to USCS, brokers,
and payer of freight as configured"]:::main N_SendArrivalNotification_Node0 -- Yes --> N_SendArrivalNotification_Node0_action N_SendArrivalNotification_Node0_action --> E_SendArrivalNotification S_SendArrivalNotification --> N_SendArrivalNotification_Node0 N_SendArrivalNotification_Node1{"Arrival notifications are sent"}:::decision N_SendArrivalNotification_Node1_action["The system sends arrival messages
to relevant stakeholders and systems"]:::main N_SendArrivalNotification_Node1 -- Yes --> N_SendArrivalNotification_Node1_action N_SendArrivalNotification_Node1_action --> E_SendArrivalNotification N_SendArrivalNotification_Node0 -- No --> N_SendArrivalNotification_Node1 N_SendArrivalNotification_Node1 -- No --> E_SendArrivalNotification
File: GCX016.cbl
GIVEN:
Message routing has been configured for arrival notifications
WHEN:
The system transmits the arrival notification
THEN:
The system successfully sends arrival messages to USCS, brokers, and payer of freight as configured
File: GCX016.cbl
GIVEN:
A train has successfully arrived and any required unlock processing is complete
WHEN:
Arrival notifications are sent
THEN:
- The system sends arrival messages to relevant stakeholders
- Systems
β Consolidated Acceptance Criteria
- The system transmits the cancellation notification → the system successfully sends cancellation messages to USCS, brokers, and payer of freight as configured
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SendCancellationNotification(["Start Step"])
E_SendCancellationNotification(["End Step"])
N_SendCancellationNotification_Node0{"The system transmits the
cancellation notification"}:::decision N_SendCancellationNotification_Node0_action["The system successfully sends
cancellation messages to USCS,
brokers, and payer of freight as
configured"]:::main N_SendCancellationNotification_Node0 -- Yes --> N_SendCancellationNotification_Node0_action N_SendCancellationNotification_Node0_action --> E_SendCancellationNotification S_SendCancellationNotification --> N_SendCancellationNotification_Node0 N_SendCancellationNotification_Node0 -- No --> E_SendCancellationNotification
cancellation notification"}:::decision N_SendCancellationNotification_Node0_action["The system successfully sends
cancellation messages to USCS,
brokers, and payer of freight as
configured"]:::main N_SendCancellationNotification_Node0 -- Yes --> N_SendCancellationNotification_Node0_action N_SendCancellationNotification_Node0_action --> E_SendCancellationNotification S_SendCancellationNotification --> N_SendCancellationNotification_Node0 N_SendCancellationNotification_Node0 -- No --> E_SendCancellationNotification
File: GCX016.cbl
GIVEN:
Message routing has been configured for cancellation notifications
WHEN:
The system transmits the cancellation notification
THEN:
The system successfully sends cancellation messages to USCS, brokers, and payer of freight as configured
β Consolidated Acceptance Criteria
- The system performs activity logging → the system records message transmission details, recipients, timestamps, and status in audit logs
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogMessageActivity(["Start Step"])
E_LogMessageActivity(["End Step"])
N_LogMessageActivity_Node0{"The system performs activity
logging"}:::decision N_LogMessageActivity_Node0_action["The system records message
transmission details, recipients,
timestamps, and status in audit logs"]:::main N_LogMessageActivity_Node0 -- Yes --> N_LogMessageActivity_Node0_action N_LogMessageActivity_Node0_action --> E_LogMessageActivity S_LogMessageActivity --> N_LogMessageActivity_Node0 N_LogMessageActivity_Node0 -- No --> E_LogMessageActivity
logging"}:::decision N_LogMessageActivity_Node0_action["The system records message
transmission details, recipients,
timestamps, and status in audit logs"]:::main N_LogMessageActivity_Node0 -- Yes --> N_LogMessageActivity_Node0_action N_LogMessageActivity_Node0_action --> E_LogMessageActivity S_LogMessageActivity --> N_LogMessageActivity_Node0 N_LogMessageActivity_Node0 -- No --> E_LogMessageActivity
File: GCX016.cbl
GIVEN:
Arrival or cancellation notifications have been transmitted
WHEN:
The system performs activity logging
THEN:
The system records message transmission details, recipients, timestamps, and status in audit logs
β Consolidated Acceptance Criteria
- The system finalizes arrival notification processing → the system marks the arrival notification process as complete and returns to main message processing flow
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ArrivalNotificationComplete(["Start Step"])
E_ArrivalNotificationComplete(["End Step"])
N_ArrivalNotificationComplete_Node0{"The system finalizes arrival
notification processing"}:::decision N_ArrivalNotificationComplete_Node0_action["The system marks the arrival
notification process as complete and
returns to main message processing
flow"]:::main N_ArrivalNotificationComplete_Node0 -- Yes --> N_ArrivalNotificationComplete_Node0_action N_ArrivalNotificationComplete_Node0_action --> E_ArrivalNotificationComplete S_ArrivalNotificationComplete --> N_ArrivalNotificationComplete_Node0 N_ArrivalNotificationComplete_Node0 -- No --> E_ArrivalNotificationComplete
notification processing"}:::decision N_ArrivalNotificationComplete_Node0_action["The system marks the arrival
notification process as complete and
returns to main message processing
flow"]:::main N_ArrivalNotificationComplete_Node0 -- Yes --> N_ArrivalNotificationComplete_Node0_action N_ArrivalNotificationComplete_Node0_action --> E_ArrivalNotificationComplete S_ArrivalNotificationComplete --> N_ArrivalNotificationComplete_Node0 N_ArrivalNotificationComplete_Node0 -- No --> E_ArrivalNotificationComplete
File: GCX016.cbl
GIVEN:
Train status has been updated successfully
WHEN:
The system finalizes arrival notification processing
THEN:
- The system marks the arrival notification process as complete
- Returns to main message processing flow
β Consolidated Acceptance Criteria
- The system needs to identify payer of freight information → the system accesses the cargo secondary records (GCSA2RT) to search for payer information
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AccessCargoSecondaryRecords(["Start Step"])
E_AccessCargoSecondaryRecords(["End Step"])
N_AccessCargoSecondaryRecords_Node0{"The system needs to identify payer
of freight information"}:::decision N_AccessCargoSecondaryRecords_Node0_action["The system accesses the cargo
secondary records GCSA2RT to search
for payer information"]:::main N_AccessCargoSecondaryRecords_Node0 -- Yes --> N_AccessCargoSecondaryRecords_Node0_action N_AccessCargoSecondaryRecords_Node0_action --> E_AccessCargoSecondaryRecords S_AccessCargoSecondaryRecords --> N_AccessCargoSecondaryRecords_Node0 N_AccessCargoSecondaryRecords_Node0 -- No --> E_AccessCargoSecondaryRecords
of freight information"}:::decision N_AccessCargoSecondaryRecords_Node0_action["The system accesses the cargo
secondary records GCSA2RT to search
for payer information"]:::main N_AccessCargoSecondaryRecords_Node0 -- Yes --> N_AccessCargoSecondaryRecords_Node0_action N_AccessCargoSecondaryRecords_Node0_action --> E_AccessCargoSecondaryRecords S_AccessCargoSecondaryRecords --> N_AccessCargoSecondaryRecords_Node0 N_AccessCargoSecondaryRecords_Node0 -- No --> E_AccessCargoSecondaryRecords
File: GCX016.cbl
GIVEN:
A cargo record exists in the system
WHEN:
The system needs to identify payer of freight information
THEN:
The system accesses the cargo secondary records (GCSA2RT) to search for payer information
β Consolidated Acceptance Criteria
- The system searches for payer of freight information → the system iterates through secondary records to find N101 segments containing payer codes
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SearchforN101Segments(["Start Step"])
E_SearchforN101Segments(["End Step"])
N_SearchforN101Segments_Node0{"The system searches for payer of
freight information"}:::decision N_SearchforN101Segments_Node0_action["The system iterates through
secondary records to find N101
segments containing payer codes"]:::main N_SearchforN101Segments_Node0 -- Yes --> N_SearchforN101Segments_Node0_action N_SearchforN101Segments_Node0_action --> E_SearchforN101Segments S_SearchforN101Segments --> N_SearchforN101Segments_Node0 N_SearchforN101Segments_Node0 -- No --> E_SearchforN101Segments
freight information"}:::decision N_SearchforN101Segments_Node0_action["The system iterates through
secondary records to find N101
segments containing payer codes"]:::main N_SearchforN101Segments_Node0 -- Yes --> N_SearchforN101Segments_Node0_action N_SearchforN101Segments_Node0_action --> E_SearchforN101Segments S_SearchforN101Segments --> N_SearchforN101Segments_Node0 N_SearchforN101Segments_Node0 -- No --> E_SearchforN101Segments
File: GCX016.cbl
GIVEN:
Cargo secondary records are accessible
WHEN:
The system searches for payer of freight information
THEN:
The system iterates through secondary records to find N101 segments containing payer codes
β Consolidated Acceptance Criteria
- No N101 segments are found in the secondary records → the system returns with no payer found status
- The system checks for N101 segment existence → the system determines if N101 segments are found for qualifier processing or continues searching for additional records
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_N101SegmentFound(["Start Step"])
E_N101SegmentFound(["End Step"])
N_N101SegmentFound_Node0{"No N101 segments are found in the
secondary records"}:::decision N_N101SegmentFound_Node0_action["The system returns with no payer
found status"]:::main N_N101SegmentFound_Node0 -- Yes --> N_N101SegmentFound_Node0_action N_N101SegmentFound_Node0_action --> E_N101SegmentFound S_N101SegmentFound --> N_N101SegmentFound_Node0 N_N101SegmentFound_Node1{"The system checks for N101 segment
existence"}:::decision N_N101SegmentFound_Node1_action["The system determines if N101
segments are found for qualifier
processing or continues searching
for additional records"]:::main N_N101SegmentFound_Node1 -- Yes --> N_N101SegmentFound_Node1_action N_N101SegmentFound_Node1_action --> E_N101SegmentFound N_N101SegmentFound_Node0 -- No --> N_N101SegmentFound_Node1 N_N101SegmentFound_Node1 -- No --> E_N101SegmentFound
secondary records"}:::decision N_N101SegmentFound_Node0_action["The system returns with no payer
found status"]:::main N_N101SegmentFound_Node0 -- Yes --> N_N101SegmentFound_Node0_action N_N101SegmentFound_Node0_action --> E_N101SegmentFound S_N101SegmentFound --> N_N101SegmentFound_Node0 N_N101SegmentFound_Node1{"The system checks for N101 segment
existence"}:::decision N_N101SegmentFound_Node1_action["The system determines if N101
segments are found for qualifier
processing or continues searching
for additional records"]:::main N_N101SegmentFound_Node1 -- Yes --> N_N101SegmentFound_Node1_action N_N101SegmentFound_Node1_action --> E_N101SegmentFound N_N101SegmentFound_Node0 -- No --> N_N101SegmentFound_Node1 N_N101SegmentFound_Node1 -- No --> E_N101SegmentFound
File: GCX016.cbl
GIVEN:
The system is searching cargo secondary records
WHEN:
No N101 segments are found in the secondary records
THEN:
The system returns with no payer found status
File: GCX016.cbl
GIVEN:
The system has attempted to read N101 segments
WHEN:
The system checks for N101 segment existence
THEN:
The system determines if N101 segments are found for qualifier processing or continues searching for additional records
β Consolidated Acceptance Criteria
- The system processes the N101 segment → the system extracts the payer of freight code from the segment data
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExtractPayerofFreightCode(["Start Step"])
E_ExtractPayerofFreightCode(["End Step"])
N_ExtractPayerofFreightCode_Node0{"The system processes the N101
segment"}:::decision N_ExtractPayerofFreightCode_Node0_action["The system extracts the payer of
freight code from the segment data"]:::main N_ExtractPayerofFreightCode_Node0 -- Yes --> N_ExtractPayerofFreightCode_Node0_action N_ExtractPayerofFreightCode_Node0_action --> E_ExtractPayerofFreightCode S_ExtractPayerofFreightCode --> N_ExtractPayerofFreightCode_Node0 N_ExtractPayerofFreightCode_Node0 -- No --> E_ExtractPayerofFreightCode
segment"}:::decision N_ExtractPayerofFreightCode_Node0_action["The system extracts the payer of
freight code from the segment data"]:::main N_ExtractPayerofFreightCode_Node0 -- Yes --> N_ExtractPayerofFreightCode_Node0_action N_ExtractPayerofFreightCode_Node0_action --> E_ExtractPayerofFreightCode S_ExtractPayerofFreightCode --> N_ExtractPayerofFreightCode_Node0 N_ExtractPayerofFreightCode_Node0 -- No --> E_ExtractPayerofFreightCode
File: GCX016.cbl
GIVEN:
An N101 segment is found in cargo secondary records
WHEN:
The system processes the N101 segment
THEN:
The system extracts the payer of freight code from the segment data
β Consolidated Acceptance Criteria
- The payer code does not start with 'PF=' → the system treats it as a standard payer code
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CheckifCodeStartswithPF(["Start Step"])
E_CheckifCodeStartswithPF(["End Step"])
N_CheckifCodeStartswithPF_Node0{"The payer code does not start with
PF"}:::decision N_CheckifCodeStartswithPF_Node0_action["The system treats it as a standard
payer code"]:::main N_CheckifCodeStartswithPF_Node0 -- Yes --> N_CheckifCodeStartswithPF_Node0_action N_CheckifCodeStartswithPF_Node0_action --> E_CheckifCodeStartswithPF S_CheckifCodeStartswithPF --> N_CheckifCodeStartswithPF_Node0 N_CheckifCodeStartswithPF_Node0 -- No --> E_CheckifCodeStartswithPF
PF"}:::decision N_CheckifCodeStartswithPF_Node0_action["The system treats it as a standard
payer code"]:::main N_CheckifCodeStartswithPF_Node0 -- Yes --> N_CheckifCodeStartswithPF_Node0_action N_CheckifCodeStartswithPF_Node0_action --> E_CheckifCodeStartswithPF S_CheckifCodeStartswithPF --> N_CheckifCodeStartswithPF_Node0 N_CheckifCodeStartswithPF_Node0 -- No --> E_CheckifCodeStartswithPF
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
A payer of freight code has been extracted from N101 segment
WHEN:
The payer code does not start with 'PF='
THEN:
The system treats it as a standard payer code
β Consolidated Acceptance Criteria
- The system processes the PF-formatted code → the system extracts the broker code portion after the 'PF=' prefix
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExtractBrokerCodeAfterPF(["Start Step"])
E_ExtractBrokerCodeAfterPF(["End Step"])
N_ExtractBrokerCodeAfterPF_Node0{"The system processes the
PF-formatted code"}:::decision N_ExtractBrokerCodeAfterPF_Node0_action["The system extracts the broker code
portion after the PF prefix"]:::main N_ExtractBrokerCodeAfterPF_Node0 -- Yes --> N_ExtractBrokerCodeAfterPF_Node0_action N_ExtractBrokerCodeAfterPF_Node0_action --> E_ExtractBrokerCodeAfterPF S_ExtractBrokerCodeAfterPF --> N_ExtractBrokerCodeAfterPF_Node0 N_ExtractBrokerCodeAfterPF_Node0 -- No --> E_ExtractBrokerCodeAfterPF
PF-formatted code"}:::decision N_ExtractBrokerCodeAfterPF_Node0_action["The system extracts the broker code
portion after the PF prefix"]:::main N_ExtractBrokerCodeAfterPF_Node0 -- Yes --> N_ExtractBrokerCodeAfterPF_Node0_action N_ExtractBrokerCodeAfterPF_Node0_action --> E_ExtractBrokerCodeAfterPF S_ExtractBrokerCodeAfterPF --> N_ExtractBrokerCodeAfterPF_Node0 N_ExtractBrokerCodeAfterPF_Node0 -- No --> E_ExtractBrokerCodeAfterPF
File: GCX016.cbl
GIVEN:
The payer code starts with 'PF='
WHEN:
The system processes the PF-formatted code
THEN:
The system extracts the broker code portion after the 'PF=' prefix
β Consolidated Acceptance Criteria
- The system looks up the broker information → the system searches the BK broker table and B1 broker detail table to retrieve the broker short name
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LookupBrokerShortName(["Start Step"])
E_LookupBrokerShortName(["End Step"])
N_LookupBrokerShortName_Node0{"The system looks up the broker
information"}:::decision N_LookupBrokerShortName_Node0_action["The system searches the BK broker
table and B1 broker detail table to
retrieve the broker short name"]:::main N_LookupBrokerShortName_Node0 -- Yes --> N_LookupBrokerShortName_Node0_action N_LookupBrokerShortName_Node0_action --> E_LookupBrokerShortName S_LookupBrokerShortName --> N_LookupBrokerShortName_Node0 N_LookupBrokerShortName_Node0 -- No --> E_LookupBrokerShortName
information"}:::decision N_LookupBrokerShortName_Node0_action["The system searches the BK broker
table and B1 broker detail table to
retrieve the broker short name"]:::main N_LookupBrokerShortName_Node0 -- Yes --> N_LookupBrokerShortName_Node0_action N_LookupBrokerShortName_Node0_action --> E_LookupBrokerShortName S_LookupBrokerShortName --> N_LookupBrokerShortName_Node0 N_LookupBrokerShortName_Node0 -- No --> E_LookupBrokerShortName
File: GCX016.cbl
GIVEN:
A broker code has been extracted from the PF= formatted payer code
WHEN:
The system looks up the broker information
THEN:
- The system searches the bk broker table
- B1 broker detail table to retrieve the broker short name
β Consolidated Acceptance Criteria
- The system processes the payer code → the system uses the code directly as the payer of freight identifier without broker lookup
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UseStandardPayerCode(["Start Step"])
E_UseStandardPayerCode(["End Step"])
N_UseStandardPayerCode_Node0{"The system processes the payer code"}:::decision
N_UseStandardPayerCode_Node0_action["The system uses the code directly
as the payer of freight identifier
without broker lookup"]:::main N_UseStandardPayerCode_Node0 -- Yes --> N_UseStandardPayerCode_Node0_action N_UseStandardPayerCode_Node0_action --> E_UseStandardPayerCode S_UseStandardPayerCode --> N_UseStandardPayerCode_Node0 N_UseStandardPayerCode_Node0 -- No --> E_UseStandardPayerCode
as the payer of freight identifier
without broker lookup"]:::main N_UseStandardPayerCode_Node0 -- Yes --> N_UseStandardPayerCode_Node0_action N_UseStandardPayerCode_Node0_action --> E_UseStandardPayerCode S_UseStandardPayerCode --> N_UseStandardPayerCode_Node0 N_UseStandardPayerCode_Node0 -- No --> E_UseStandardPayerCode
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
The payer code does not start with 'PF='
WHEN:
The system processes the payer code
THEN:
The system uses the code directly as the payer of freight identifier without broker lookup
β Consolidated Acceptance Criteria
- The system completes payer identification → the system stores the payer of freight information in working storage for subsequent cargo processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_StorePayerofFreightInformation(["Start Step"])
E_StorePayerofFreightInformation(["End Step"])
N_StorePayerofFreightInformation_Node0{"The system completes payer
identification"}:::decision N_StorePayerofFreightInformation_Node0_action["The system stores the payer of
freight information in working
storage for subsequent cargo
processing"]:::main N_StorePayerofFreightInformation_Node0 -- Yes --> N_StorePayerofFreightInformation_Node0_action N_StorePayerofFreightInformation_Node0_action --> E_StorePayerofFreightInformation S_StorePayerofFreightInformation --> N_StorePayerofFreightInformation_Node0 N_StorePayerofFreightInformation_Node0 -- No --> E_StorePayerofFreightInformation
identification"}:::decision N_StorePayerofFreightInformation_Node0_action["The system stores the payer of
freight information in working
storage for subsequent cargo
processing"]:::main N_StorePayerofFreightInformation_Node0 -- Yes --> N_StorePayerofFreightInformation_Node0_action N_StorePayerofFreightInformation_Node0_action --> E_StorePayerofFreightInformation S_StorePayerofFreightInformation --> N_StorePayerofFreightInformation_Node0 N_StorePayerofFreightInformation_Node0 -- No --> E_StorePayerofFreightInformation
File: GCX016.cbl
GIVEN:
Payer of freight information has been identified through either broker lookup or standard processing
WHEN:
The system completes payer identification
THEN:
The system stores the payer of freight information in working storage for subsequent cargo processing
β Consolidated Acceptance Criteria
- The system has either found payer information or determined no payer exists → the system returns the payer information results with appropriate status indicators
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ReturnPayerInformation(["Start Step"])
E_ReturnPayerInformation(["End Step"])
N_ReturnPayerInformation_Node0{"The system has either found payer
information or determined no payer
exists"}:::decision N_ReturnPayerInformation_Node0_action["The system returns the payer
information results with appropriate
status indicators"]:::main N_ReturnPayerInformation_Node0 -- Yes --> N_ReturnPayerInformation_Node0_action N_ReturnPayerInformation_Node0_action --> E_ReturnPayerInformation S_ReturnPayerInformation --> N_ReturnPayerInformation_Node0 N_ReturnPayerInformation_Node0 -- No --> E_ReturnPayerInformation
information or determined no payer
exists"}:::decision N_ReturnPayerInformation_Node0_action["The system returns the payer
information results with appropriate
status indicators"]:::main N_ReturnPayerInformation_Node0 -- Yes --> N_ReturnPayerInformation_Node0_action N_ReturnPayerInformation_Node0_action --> E_ReturnPayerInformation S_ReturnPayerInformation --> N_ReturnPayerInformation_Node0 N_ReturnPayerInformation_Node0 -- No --> E_ReturnPayerInformation
File: GCX016.cbl
GIVEN:
Payer of freight identification process is complete
WHEN:
The system has either found payer information or determined no payer exists
THEN:
The system returns the payer information results with appropriate status indicators
β Consolidated Acceptance Criteria
- If the entity type → the system identifies whether the entity is classified as a payer of freight entity
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IsEntityaPayerofFreight(["Start Step"])
E_IsEntityaPayerofFreight(["End Step"])
N_IsEntityaPayerofFreight_Node0{"The system evaluates the entity
type"}:::decision N_IsEntityaPayerofFreight_Node0_action["The system identifies whether the
entity is classified as a payer of
freight entity"]:::main N_IsEntityaPayerofFreight_Node0 -- Yes --> N_IsEntityaPayerofFreight_Node0_action N_IsEntityaPayerofFreight_Node0_action --> E_IsEntityaPayerofFreight S_IsEntityaPayerofFreight --> N_IsEntityaPayerofFreight_Node0 N_IsEntityaPayerofFreight_Node0 -- No --> E_IsEntityaPayerofFreight
type"}:::decision N_IsEntityaPayerofFreight_Node0_action["The system identifies whether the
entity is classified as a payer of
freight entity"]:::main N_IsEntityaPayerofFreight_Node0 -- Yes --> N_IsEntityaPayerofFreight_Node0_action N_IsEntityaPayerofFreight_Node0_action --> E_IsEntityaPayerofFreight S_IsEntityaPayerofFreight --> N_IsEntityaPayerofFreight_Node0 N_IsEntityaPayerofFreight_Node0 -- No --> E_IsEntityaPayerofFreight
File: GCX016.cbl
GIVEN:
An entity code is provided for broker name resolution
WHEN:
The system evaluates the entity type
THEN:
The system identifies whether the entity is classified as a payer of freight entity
β Consolidated Acceptance Criteria
- The system prepares the entity code for broker lookup → the system adds 'PF=' prefix to the entity code to create the lookup key
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AddPFPrefixtoEntityCode(["Start Step"])
E_AddPFPrefixtoEntityCode(["End Step"])
N_AddPFPrefixtoEntityCode_Node0{"The system prepares the entity code
for broker lookup"}:::decision N_AddPFPrefixtoEntityCode_Node0_action["The system adds PF prefix to the
entity code to create the lookup key"]:::main N_AddPFPrefixtoEntityCode_Node0 -- Yes --> N_AddPFPrefixtoEntityCode_Node0_action N_AddPFPrefixtoEntityCode_Node0_action --> E_AddPFPrefixtoEntityCode S_AddPFPrefixtoEntityCode --> N_AddPFPrefixtoEntityCode_Node0 N_AddPFPrefixtoEntityCode_Node0 -- No --> E_AddPFPrefixtoEntityCode
for broker lookup"}:::decision N_AddPFPrefixtoEntityCode_Node0_action["The system adds PF prefix to the
entity code to create the lookup key"]:::main N_AddPFPrefixtoEntityCode_Node0 -- Yes --> N_AddPFPrefixtoEntityCode_Node0_action N_AddPFPrefixtoEntityCode_Node0_action --> E_AddPFPrefixtoEntityCode S_AddPFPrefixtoEntityCode --> N_AddPFPrefixtoEntityCode_Node0 N_AddPFPrefixtoEntityCode_Node0 -- No --> E_AddPFPrefixtoEntityCode
File: GCX016.cbl
GIVEN:
An entity has been identified as a payer of freight
WHEN:
The system prepares the entity code for broker lookup
THEN:
The system adds 'PF=' prefix to the entity code to create the lookup key
β Consolidated Acceptance Criteria
- The system searches for broker information in the BK table → the system attempts to locate matching broker record in GCSTBRT BK table
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LookupBrokerInformationinBKTable(["Start Step"])
E_LookupBrokerInformationinBKTable(["End Step"])
N_LookupBrokerInformationinBKTable_Node0{"The system searches for broker
information in the BK table"}:::decision N_LookupBrokerInformationinBKTable_Node0_action["The system attempts to locate
matching broker record in GCSTBRT BK
table"]:::main N_LookupBrokerInformationinBKTable_Node0 -- Yes --> N_LookupBrokerInformationinBKTable_Node0_action N_LookupBrokerInformationinBKTable_Node0_action --> E_LookupBrokerInformationinBKTable S_LookupBrokerInformationinBKTable --> N_LookupBrokerInformationinBKTable_Node0 N_LookupBrokerInformationinBKTable_Node0 -- No --> E_LookupBrokerInformationinBKTable
information in the BK table"}:::decision N_LookupBrokerInformationinBKTable_Node0_action["The system attempts to locate
matching broker record in GCSTBRT BK
table"]:::main N_LookupBrokerInformationinBKTable_Node0 -- Yes --> N_LookupBrokerInformationinBKTable_Node0_action N_LookupBrokerInformationinBKTable_Node0_action --> E_LookupBrokerInformationinBKTable S_LookupBrokerInformationinBKTable --> N_LookupBrokerInformationinBKTable_Node0 N_LookupBrokerInformationinBKTable_Node0 -- No --> E_LookupBrokerInformationinBKTable
File: GCX016.cbl
GIVEN:
A formatted entity code (with or without PF= prefix) is available
WHEN:
The system searches for broker information in the BK table
THEN:
The system attempts to locate matching broker record in GCSTBRT BK table
β Consolidated Acceptance Criteria
- If the lookup results → the system determines if a valid broker record was found or not found
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_BrokerFoundinBKTable(["Start Step"])
E_BrokerFoundinBKTable(["End Step"])
N_BrokerFoundinBKTable_Node0{"The system evaluates the lookup
results"}:::decision N_BrokerFoundinBKTable_Node0_action["The system determines if a valid
broker record was found or not found"]:::main N_BrokerFoundinBKTable_Node0 -- Yes --> N_BrokerFoundinBKTable_Node0_action N_BrokerFoundinBKTable_Node0_action --> E_BrokerFoundinBKTable S_BrokerFoundinBKTable --> N_BrokerFoundinBKTable_Node0 N_BrokerFoundinBKTable_Node0 -- No --> E_BrokerFoundinBKTable
results"}:::decision N_BrokerFoundinBKTable_Node0_action["The system determines if a valid
broker record was found or not found"]:::main N_BrokerFoundinBKTable_Node0 -- Yes --> N_BrokerFoundinBKTable_Node0_action N_BrokerFoundinBKTable_Node0_action --> E_BrokerFoundinBKTable S_BrokerFoundinBKTable --> N_BrokerFoundinBKTable_Node0 N_BrokerFoundinBKTable_Node0 -- No --> E_BrokerFoundinBKTable
File: GCX016.cbl
GIVEN:
A broker lookup has been performed in the BK table
WHEN:
The system evaluates the lookup results
THEN:
The system determines if a valid broker record was found or not found
β Consolidated Acceptance Criteria
- The system processes the broker information → the system retrieves and returns the broker short name from the broker record
- The system retrieves broker short name → broker short name is set as the payer of freight name
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RetrieveBrokerShortName(["Start Step"])
E_RetrieveBrokerShortName(["End Step"])
N_RetrieveBrokerShortName_Node0{"The system processes the broker
information"}:::decision N_RetrieveBrokerShortName_Node0_action["The system retrieves and returns
the broker short name from the
broker record"]:::main N_RetrieveBrokerShortName_Node0 -- Yes --> N_RetrieveBrokerShortName_Node0_action N_RetrieveBrokerShortName_Node0_action --> E_RetrieveBrokerShortName S_RetrieveBrokerShortName --> N_RetrieveBrokerShortName_Node0 N_RetrieveBrokerShortName_Node1{"The system retrieves broker short
name"}:::decision N_RetrieveBrokerShortName_Node1_action["Broker short name is set as the
payer of freight name"]:::main N_RetrieveBrokerShortName_Node1 -- Yes --> N_RetrieveBrokerShortName_Node1_action N_RetrieveBrokerShortName_Node1_action --> E_RetrieveBrokerShortName N_RetrieveBrokerShortName_Node0 -- No --> N_RetrieveBrokerShortName_Node1 N_RetrieveBrokerShortName_Node1 -- No --> E_RetrieveBrokerShortName
information"}:::decision N_RetrieveBrokerShortName_Node0_action["The system retrieves and returns
the broker short name from the
broker record"]:::main N_RetrieveBrokerShortName_Node0 -- Yes --> N_RetrieveBrokerShortName_Node0_action N_RetrieveBrokerShortName_Node0_action --> E_RetrieveBrokerShortName S_RetrieveBrokerShortName --> N_RetrieveBrokerShortName_Node0 N_RetrieveBrokerShortName_Node1{"The system retrieves broker short
name"}:::decision N_RetrieveBrokerShortName_Node1_action["Broker short name is set as the
payer of freight name"]:::main N_RetrieveBrokerShortName_Node1 -- Yes --> N_RetrieveBrokerShortName_Node1_action N_RetrieveBrokerShortName_Node1_action --> E_RetrieveBrokerShortName N_RetrieveBrokerShortName_Node0 -- No --> N_RetrieveBrokerShortName_Node1 N_RetrieveBrokerShortName_Node1 -- No --> E_RetrieveBrokerShortName
File: GCX016.cbl
GIVEN:
A valid broker record has been found in the BK table
WHEN:
The system processes the broker information
THEN:
- The system retrieves
- Returns the broker short name from the broker record
File: GCX016.cbl
GIVEN:
Broker short name has been found in table lookup
WHEN:
The system retrieves broker short name
THEN:
Broker short name is set as the payer of freight name
β Consolidated Acceptance Criteria
- The system needs to provide a broker name → the system uses a default name value for the broker name
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UseDefaultNameifNotFound(["Start Step"])
E_UseDefaultNameifNotFound(["End Step"])
N_UseDefaultNameifNotFound_Node0{"The system needs to provide a
broker name"}:::decision N_UseDefaultNameifNotFound_Node0_action["The system uses a default name
value for the broker name"]:::main N_UseDefaultNameifNotFound_Node0 -- Yes --> N_UseDefaultNameifNotFound_Node0_action N_UseDefaultNameifNotFound_Node0_action --> E_UseDefaultNameifNotFound S_UseDefaultNameifNotFound --> N_UseDefaultNameifNotFound_Node0 N_UseDefaultNameifNotFound_Node0 -- No --> E_UseDefaultNameifNotFound
broker name"}:::decision N_UseDefaultNameifNotFound_Node0_action["The system uses a default name
value for the broker name"]:::main N_UseDefaultNameifNotFound_Node0 -- Yes --> N_UseDefaultNameifNotFound_Node0_action N_UseDefaultNameifNotFound_Node0_action --> E_UseDefaultNameifNotFound S_UseDefaultNameifNotFound --> N_UseDefaultNameifNotFound_Node0 N_UseDefaultNameifNotFound_Node0 -- No --> E_UseDefaultNameifNotFound
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
Either no broker record was found in the BK table OR the entity is not a payer of freight
WHEN:
The system needs to provide a broker name
THEN:
The system uses a default name value for the broker name
β Consolidated Acceptance Criteria
- The broker name resolution process completes → the system returns the final broker short name for use in subsequent processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ReturnBrokerShortName(["Start Step"])
E_ReturnBrokerShortName(["End Step"])
N_ReturnBrokerShortName_Node0{"The broker name resolution process
completes"}:::decision N_ReturnBrokerShortName_Node0_action["The system returns the final broker
short name for use in subsequent
processing"]:::main N_ReturnBrokerShortName_Node0 -- Yes --> N_ReturnBrokerShortName_Node0_action N_ReturnBrokerShortName_Node0_action --> E_ReturnBrokerShortName S_ReturnBrokerShortName --> N_ReturnBrokerShortName_Node0 N_ReturnBrokerShortName_Node0 -- No --> E_ReturnBrokerShortName
completes"}:::decision N_ReturnBrokerShortName_Node0_action["The system returns the final broker
short name for use in subsequent
processing"]:::main N_ReturnBrokerShortName_Node0 -- Yes --> N_ReturnBrokerShortName_Node0_action N_ReturnBrokerShortName_Node0_action --> E_ReturnBrokerShortName S_ReturnBrokerShortName --> N_ReturnBrokerShortName_Node0 N_ReturnBrokerShortName_Node0 -- No --> E_ReturnBrokerShortName
File: GCX016.cbl
GIVEN:
Either a broker short name has been retrieved from the BK table OR a default name has been assigned
WHEN:
The broker name resolution process completes
THEN:
The system returns the final broker short name for use in subsequent processing
β Consolidated Acceptance Criteria
- The cargo record type is CPRS → set the cargo status to 'ERROR' and status description to 'ERROR'
- The cargo record type is not CPRS → set the cargo status to 'SENT' and status description to 'SENT'
- The current cargo status is blank or equals 'ACK-R' → set the acknowledgment status to 'ACK' or 'ACK-R' as default
- The cargo type is CPRS → set cargo status to 'ERROR' with description 'ERROR'
- The cargo type is not CPRS → set cargo status to 'SENT' with description 'SENT'
- The cargo type is CPRS → set cargo status to 'ERROR' with description 'ERROR', otherwise set status to 'SENT' with description 'SENT'
- The cargo type is CPRS → set cargo status to 'ERROR' with status description 'ERROR'
- The cargo type is not CPRS → set cargo status to 'SENT' with status description 'SENT'
- The current cargo status is blank or equals 'ACK-R' → set default acknowledgment status to 'ACK' or 'ACK-R' based on system configuration
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetDefaultCPRSUSCSStatus(["Start Step"])
E_SetDefaultCPRSUSCSStatus(["End Step"])
N_SetDefaultCPRSUSCSStatus_Node0{"The cargo record type is CPRS"}:::decision
N_SetDefaultCPRSUSCSStatus_Node0_action["Set the cargo status to ERROR and
status description to ERROR"]:::main N_SetDefaultCPRSUSCSStatus_Node0 -- Yes --> N_SetDefaultCPRSUSCSStatus_Node0_action N_SetDefaultCPRSUSCSStatus_Node0_action --> E_SetDefaultCPRSUSCSStatus S_SetDefaultCPRSUSCSStatus --> N_SetDefaultCPRSUSCSStatus_Node0 N_SetDefaultCPRSUSCSStatus_Node1{"The cargo record type is not CPRS"}:::decision N_SetDefaultCPRSUSCSStatus_Node1_action["Set the cargo status to SENT and
status description to SENT"]:::main N_SetDefaultCPRSUSCSStatus_Node1 -- Yes --> N_SetDefaultCPRSUSCSStatus_Node1_action N_SetDefaultCPRSUSCSStatus_Node1_action --> E_SetDefaultCPRSUSCSStatus N_SetDefaultCPRSUSCSStatus_Node0 -- No --> N_SetDefaultCPRSUSCSStatus_Node1 N_SetDefaultCPRSUSCSStatus_Node2{"The current cargo status is blank
or equals ACK-R"}:::decision N_SetDefaultCPRSUSCSStatus_Node2_action["Set the acknowledgment status to
ACK or ACK-R as default"]:::main N_SetDefaultCPRSUSCSStatus_Node2 -- Yes --> N_SetDefaultCPRSUSCSStatus_Node2_action N_SetDefaultCPRSUSCSStatus_Node2_action --> E_SetDefaultCPRSUSCSStatus N_SetDefaultCPRSUSCSStatus_Node1 -- No --> N_SetDefaultCPRSUSCSStatus_Node2 N_SetDefaultCPRSUSCSStatus_Node3{"The cargo type is CPRS"}:::decision N_SetDefaultCPRSUSCSStatus_Node3_action["Set cargo status to ERROR with
description ERROR"]:::main N_SetDefaultCPRSUSCSStatus_Node3 -- Yes --> N_SetDefaultCPRSUSCSStatus_Node3_action N_SetDefaultCPRSUSCSStatus_Node3_action --> E_SetDefaultCPRSUSCSStatus N_SetDefaultCPRSUSCSStatus_Node2 -- No --> N_SetDefaultCPRSUSCSStatus_Node3 N_SetDefaultCPRSUSCSStatus_Node4{"The cargo type is not CPRS"}:::decision N_SetDefaultCPRSUSCSStatus_Node4_action["Set cargo status to SENT with
description SENT"]:::main N_SetDefaultCPRSUSCSStatus_Node4 -- Yes --> N_SetDefaultCPRSUSCSStatus_Node4_action N_SetDefaultCPRSUSCSStatus_Node4_action --> E_SetDefaultCPRSUSCSStatus N_SetDefaultCPRSUSCSStatus_Node3 -- No --> N_SetDefaultCPRSUSCSStatus_Node4 N_SetDefaultCPRSUSCSStatus_Node5{"The cargo type is CPRS"}:::decision N_SetDefaultCPRSUSCSStatus_Node5_action["Set cargo status to ERROR with
description ERROR , otherwise set
status to SENT with description SENT"]:::main N_SetDefaultCPRSUSCSStatus_Node5 -- Yes --> N_SetDefaultCPRSUSCSStatus_Node5_action N_SetDefaultCPRSUSCSStatus_Node5_action --> E_SetDefaultCPRSUSCSStatus N_SetDefaultCPRSUSCSStatus_Node4 -- No --> N_SetDefaultCPRSUSCSStatus_Node5 N_SetDefaultCPRSUSCSStatus_Node6{"The cargo type is CPRS"}:::decision N_SetDefaultCPRSUSCSStatus_Node6_action["Set cargo status to ERROR with
status description ERROR"]:::main N_SetDefaultCPRSUSCSStatus_Node6 -- Yes --> N_SetDefaultCPRSUSCSStatus_Node6_action N_SetDefaultCPRSUSCSStatus_Node6_action --> E_SetDefaultCPRSUSCSStatus N_SetDefaultCPRSUSCSStatus_Node5 -- No --> N_SetDefaultCPRSUSCSStatus_Node6 N_SetDefaultCPRSUSCSStatus_Node7{"The cargo type is not CPRS"}:::decision N_SetDefaultCPRSUSCSStatus_Node7_action["Set cargo status to SENT with
status description SENT"]:::main N_SetDefaultCPRSUSCSStatus_Node7 -- Yes --> N_SetDefaultCPRSUSCSStatus_Node7_action N_SetDefaultCPRSUSCSStatus_Node7_action --> E_SetDefaultCPRSUSCSStatus N_SetDefaultCPRSUSCSStatus_Node6 -- No --> N_SetDefaultCPRSUSCSStatus_Node7 N_SetDefaultCPRSUSCSStatus_Node8{"The current cargo status is blank
or equals ACK-R"}:::decision N_SetDefaultCPRSUSCSStatus_Node8_action["Set default acknowledgment status
to ACK or ACK-R based on system
configuration"]:::main N_SetDefaultCPRSUSCSStatus_Node8 -- Yes --> N_SetDefaultCPRSUSCSStatus_Node8_action N_SetDefaultCPRSUSCSStatus_Node8_action --> E_SetDefaultCPRSUSCSStatus N_SetDefaultCPRSUSCSStatus_Node7 -- No --> N_SetDefaultCPRSUSCSStatus_Node8 N_SetDefaultCPRSUSCSStatus_Node8 -- No --> E_SetDefaultCPRSUSCSStatus
status description to ERROR"]:::main N_SetDefaultCPRSUSCSStatus_Node0 -- Yes --> N_SetDefaultCPRSUSCSStatus_Node0_action N_SetDefaultCPRSUSCSStatus_Node0_action --> E_SetDefaultCPRSUSCSStatus S_SetDefaultCPRSUSCSStatus --> N_SetDefaultCPRSUSCSStatus_Node0 N_SetDefaultCPRSUSCSStatus_Node1{"The cargo record type is not CPRS"}:::decision N_SetDefaultCPRSUSCSStatus_Node1_action["Set the cargo status to SENT and
status description to SENT"]:::main N_SetDefaultCPRSUSCSStatus_Node1 -- Yes --> N_SetDefaultCPRSUSCSStatus_Node1_action N_SetDefaultCPRSUSCSStatus_Node1_action --> E_SetDefaultCPRSUSCSStatus N_SetDefaultCPRSUSCSStatus_Node0 -- No --> N_SetDefaultCPRSUSCSStatus_Node1 N_SetDefaultCPRSUSCSStatus_Node2{"The current cargo status is blank
or equals ACK-R"}:::decision N_SetDefaultCPRSUSCSStatus_Node2_action["Set the acknowledgment status to
ACK or ACK-R as default"]:::main N_SetDefaultCPRSUSCSStatus_Node2 -- Yes --> N_SetDefaultCPRSUSCSStatus_Node2_action N_SetDefaultCPRSUSCSStatus_Node2_action --> E_SetDefaultCPRSUSCSStatus N_SetDefaultCPRSUSCSStatus_Node1 -- No --> N_SetDefaultCPRSUSCSStatus_Node2 N_SetDefaultCPRSUSCSStatus_Node3{"The cargo type is CPRS"}:::decision N_SetDefaultCPRSUSCSStatus_Node3_action["Set cargo status to ERROR with
description ERROR"]:::main N_SetDefaultCPRSUSCSStatus_Node3 -- Yes --> N_SetDefaultCPRSUSCSStatus_Node3_action N_SetDefaultCPRSUSCSStatus_Node3_action --> E_SetDefaultCPRSUSCSStatus N_SetDefaultCPRSUSCSStatus_Node2 -- No --> N_SetDefaultCPRSUSCSStatus_Node3 N_SetDefaultCPRSUSCSStatus_Node4{"The cargo type is not CPRS"}:::decision N_SetDefaultCPRSUSCSStatus_Node4_action["Set cargo status to SENT with
description SENT"]:::main N_SetDefaultCPRSUSCSStatus_Node4 -- Yes --> N_SetDefaultCPRSUSCSStatus_Node4_action N_SetDefaultCPRSUSCSStatus_Node4_action --> E_SetDefaultCPRSUSCSStatus N_SetDefaultCPRSUSCSStatus_Node3 -- No --> N_SetDefaultCPRSUSCSStatus_Node4 N_SetDefaultCPRSUSCSStatus_Node5{"The cargo type is CPRS"}:::decision N_SetDefaultCPRSUSCSStatus_Node5_action["Set cargo status to ERROR with
description ERROR , otherwise set
status to SENT with description SENT"]:::main N_SetDefaultCPRSUSCSStatus_Node5 -- Yes --> N_SetDefaultCPRSUSCSStatus_Node5_action N_SetDefaultCPRSUSCSStatus_Node5_action --> E_SetDefaultCPRSUSCSStatus N_SetDefaultCPRSUSCSStatus_Node4 -- No --> N_SetDefaultCPRSUSCSStatus_Node5 N_SetDefaultCPRSUSCSStatus_Node6{"The cargo type is CPRS"}:::decision N_SetDefaultCPRSUSCSStatus_Node6_action["Set cargo status to ERROR with
status description ERROR"]:::main N_SetDefaultCPRSUSCSStatus_Node6 -- Yes --> N_SetDefaultCPRSUSCSStatus_Node6_action N_SetDefaultCPRSUSCSStatus_Node6_action --> E_SetDefaultCPRSUSCSStatus N_SetDefaultCPRSUSCSStatus_Node5 -- No --> N_SetDefaultCPRSUSCSStatus_Node6 N_SetDefaultCPRSUSCSStatus_Node7{"The cargo type is not CPRS"}:::decision N_SetDefaultCPRSUSCSStatus_Node7_action["Set cargo status to SENT with
status description SENT"]:::main N_SetDefaultCPRSUSCSStatus_Node7 -- Yes --> N_SetDefaultCPRSUSCSStatus_Node7_action N_SetDefaultCPRSUSCSStatus_Node7_action --> E_SetDefaultCPRSUSCSStatus N_SetDefaultCPRSUSCSStatus_Node6 -- No --> N_SetDefaultCPRSUSCSStatus_Node7 N_SetDefaultCPRSUSCSStatus_Node8{"The current cargo status is blank
or equals ACK-R"}:::decision N_SetDefaultCPRSUSCSStatus_Node8_action["Set default acknowledgment status
to ACK or ACK-R based on system
configuration"]:::main N_SetDefaultCPRSUSCSStatus_Node8 -- Yes --> N_SetDefaultCPRSUSCSStatus_Node8_action N_SetDefaultCPRSUSCSStatus_Node8_action --> E_SetDefaultCPRSUSCSStatus N_SetDefaultCPRSUSCSStatus_Node7 -- No --> N_SetDefaultCPRSUSCSStatus_Node8 N_SetDefaultCPRSUSCSStatus_Node8 -- No --> E_SetDefaultCPRSUSCSStatus
File: GCX016.cbl
GIVEN:
A new cargo record is being created
WHEN:
The cargo record type is CPRS
THEN:
Set the cargo status to 'ERROR' and status description to 'ERROR'
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
A new cargo record is being created
WHEN:
The cargo record type is not CPRS
THEN:
Set the cargo status to 'SENT' and status description to 'SENT'
File: GCX016.cbl
GIVEN:
A new cargo record is being created
WHEN:
The current cargo status is blank or equals 'ACK-R'
THEN:
Set the acknowledgment status to 'ACK' or 'ACK-R' as default
File: GCX016.cbl
GIVEN:
A new cargo record is being created
WHEN:
The cargo type is CPRS
THEN:
Set cargo status to 'ERROR' with description 'ERROR'
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
A new cargo record is being created
WHEN:
The cargo type is not CPRS
THEN:
Set cargo status to 'SENT' with description 'SENT'
File: GCX016.cbl
GIVEN:
A new cargo record is being created
WHEN:
The cargo type is CPRS
THEN:
Set cargo status to 'ERROR' with description 'ERROR', otherwise set status to 'SENT' with description 'SENT'
File: GCX016.cbl
GIVEN:
A new cargo record is being initialized
WHEN:
The cargo type is CPRS
THEN:
Set cargo status to 'ERROR' with status description 'ERROR'
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
A new cargo record is being initialized
WHEN:
The cargo type is not CPRS
THEN:
Set cargo status to 'SENT' with status description 'SENT'
File: GCX016.cbl
GIVEN:
A cargo record is being processed
WHEN:
The current cargo status is blank or equals 'ACK-R'
THEN:
Set default acknowledgment status to 'ACK' or 'ACK-R' based on system configuration
β Consolidated Acceptance Criteria
- The entry type code is 61 (immediate transport), 62 (transport export), 63 (immediate export), or 69 (US-Canada-US movement) → set the M1109 master in-bond flag and process according to the specific entry type requirements
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MasterInBondProcessingTypes61626369(["Start Step"])
E_MasterInBondProcessingTypes61626369(["End Step"])
N_MasterInBondProcessingTypes61626369_Node0{"The entry type code is 61 immediate
transport, 62 transport export, 63
immediate export, or 69 US-Canada-US
movement"}:::decision N_MasterInBondProcessingTypes61626369_Node0_action["Set the M1109 master in-bond flag
and process according to the
specific entry type requirements"]:::main N_MasterInBondProcessingTypes61626369_Node0 -- Yes --> N_MasterInBondProcessingTypes61626369_Node0_action N_MasterInBondProcessingTypes61626369_Node0_action --> E_MasterInBondProcessingTypes61626369 S_MasterInBondProcessingTypes61626369 --> N_MasterInBondProcessingTypes61626369_Node0 N_MasterInBondProcessingTypes61626369_Node0 -- No --> E_MasterInBondProcessingTypes61626369
transport, 62 transport export, 63
immediate export, or 69 US-Canada-US
movement"}:::decision N_MasterInBondProcessingTypes61626369_Node0_action["Set the M1109 master in-bond flag
and process according to the
specific entry type requirements"]:::main N_MasterInBondProcessingTypes61626369_Node0 -- Yes --> N_MasterInBondProcessingTypes61626369_Node0_action N_MasterInBondProcessingTypes61626369_Node0_action --> E_MasterInBondProcessingTypes61626369 S_MasterInBondProcessingTypes61626369 --> N_MasterInBondProcessingTypes61626369_Node0 N_MasterInBondProcessingTypes61626369_Node0 -- No --> E_MasterInBondProcessingTypes61626369
File: GCX016.cbl
GIVEN:
A new cargo record has an entry type code
WHEN:
The entry type code is 61 (immediate transport), 62 (transport export), 63 (immediate export), or 69 (US-Canada-US movement)
THEN:
- Set the m1109 master in-bond flag
- Process according to the specific entry type requirements
β Consolidated Acceptance Criteria
- The entry type code is 00 (border processing) → clear bond information and process as border entry with default border processing rules
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_BorderEntryProcessingType00(["Start Step"])
E_BorderEntryProcessingType00(["End Step"])
N_BorderEntryProcessingType00_Node0{"The entry type code is 00 border
processing"}:::decision N_BorderEntryProcessingType00_Node0_action["Clear bond information and process
as border entry with default border
processing rules"]:::main N_BorderEntryProcessingType00_Node0 -- Yes --> N_BorderEntryProcessingType00_Node0_action N_BorderEntryProcessingType00_Node0_action --> E_BorderEntryProcessingType00 S_BorderEntryProcessingType00 --> N_BorderEntryProcessingType00_Node0 N_BorderEntryProcessingType00_Node0 -- No --> E_BorderEntryProcessingType00
processing"}:::decision N_BorderEntryProcessingType00_Node0_action["Clear bond information and process
as border entry with default border
processing rules"]:::main N_BorderEntryProcessingType00_Node0 -- Yes --> N_BorderEntryProcessingType00_Node0_action N_BorderEntryProcessingType00_Node0_action --> E_BorderEntryProcessingType00 S_BorderEntryProcessingType00 --> N_BorderEntryProcessingType00_Node0 N_BorderEntryProcessingType00_Node0 -- No --> E_BorderEntryProcessingType00
File: GCX016.cbl
GIVEN:
A new cargo record has an entry type code
WHEN:
The entry type code is 00 (border processing)
THEN:
- Clear bond information
- Process as border entry with default border processing rules
β Consolidated Acceptance Criteria
- The entry type code is not 61, 62, 63, 69, or 00 → process using standard entry processing rules without special in-bond or border handling
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_StandardEntryProcessing(["Start Step"])
E_StandardEntryProcessing(["End Step"])
N_StandardEntryProcessing_Node0{"The entry type code is not 61, 62,
63, 69, or 00"}:::decision N_StandardEntryProcessing_Node0_action["Process using standard entry
processing rules without special
in-bond or border handling"]:::main N_StandardEntryProcessing_Node0 -- Yes --> N_StandardEntryProcessing_Node0_action N_StandardEntryProcessing_Node0_action --> E_StandardEntryProcessing S_StandardEntryProcessing --> N_StandardEntryProcessing_Node0 N_StandardEntryProcessing_Node0 -- No --> E_StandardEntryProcessing
63, 69, or 00"}:::decision N_StandardEntryProcessing_Node0_action["Process using standard entry
processing rules without special
in-bond or border handling"]:::main N_StandardEntryProcessing_Node0 -- Yes --> N_StandardEntryProcessing_Node0_action N_StandardEntryProcessing_Node0_action --> E_StandardEntryProcessing S_StandardEntryProcessing --> N_StandardEntryProcessing_Node0 N_StandardEntryProcessing_Node0 -- No --> E_StandardEntryProcessing
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
A new cargo record has an entry type code
WHEN:
The entry type code is not 61, 62, 63, 69, or 00
THEN:
Process using standard entry processing rules without special in-bond or border handling
β Consolidated Acceptance Criteria
- Manifest fields need to be populated → set manifest data fields from X4 segment including arrival date, arrival time, and manifest reference numbers
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetManifestDataFields(["Start Step"])
E_SetManifestDataFields(["End Step"])
N_SetManifestDataFields_Node0{"Manifest fields need to be
populated"}:::decision N_SetManifestDataFields_Node0_action["Set manifest data fields from X4
segment including arrival date,
arrival time, and manifest reference
numbers"]:::main N_SetManifestDataFields_Node0 -- Yes --> N_SetManifestDataFields_Node0_action N_SetManifestDataFields_Node0_action --> E_SetManifestDataFields S_SetManifestDataFields --> N_SetManifestDataFields_Node0 N_SetManifestDataFields_Node0 -- No --> E_SetManifestDataFields
populated"}:::decision N_SetManifestDataFields_Node0_action["Set manifest data fields from X4
segment including arrival date,
arrival time, and manifest reference
numbers"]:::main N_SetManifestDataFields_Node0 -- Yes --> N_SetManifestDataFields_Node0_action N_SetManifestDataFields_Node0_action --> E_SetManifestDataFields S_SetManifestDataFields --> N_SetManifestDataFields_Node0 N_SetManifestDataFields_Node0 -- No --> E_SetManifestDataFields
File: GCX016.cbl
GIVEN:
A new cargo record requires manifest data
WHEN:
Manifest fields need to be populated
THEN:
Set manifest data fields from X4 segment including arrival date, arrival time, and manifest reference numbers
β Consolidated Acceptance Criteria
- The system processes the M10 segment for manifest data integration → the SCAC code is extracted from M10-02 field and stored for carrier identification
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExtractSCACCodefromM1002(["Start Step"])
E_ExtractSCACCodefromM1002(["End Step"])
N_ExtractSCACCodefromM1002_Node0{"The system processes the M10
segment for manifest data
integration"}:::decision N_ExtractSCACCodefromM1002_Node0_action["The SCAC code is extracted from
M10-02 field and stored for carrier
identification"]:::main N_ExtractSCACCodefromM1002_Node0 -- Yes --> N_ExtractSCACCodefromM1002_Node0_action N_ExtractSCACCodefromM1002_Node0_action --> E_ExtractSCACCodefromM1002 S_ExtractSCACCodefromM1002 --> N_ExtractSCACCodefromM1002_Node0 N_ExtractSCACCodefromM1002_Node0 -- No --> E_ExtractSCACCodefromM1002
segment for manifest data
integration"}:::decision N_ExtractSCACCodefromM1002_Node0_action["The SCAC code is extracted from
M10-02 field and stored for carrier
identification"]:::main N_ExtractSCACCodefromM1002_Node0 -- Yes --> N_ExtractSCACCodefromM1002_Node0_action N_ExtractSCACCodefromM1002_Node0_action --> E_ExtractSCACCodefromM1002 S_ExtractSCACCodefromM1002 --> N_ExtractSCACCodefromM1002_Node0 N_ExtractSCACCodefromM1002_Node0 -- No --> E_ExtractSCACCodefromM1002
File: GCX016.cbl
GIVEN:
An M10 manifest segment is received with carrier information in field M10-02
WHEN:
The system processes the M10 segment for manifest data integration
THEN:
- The scac code is extracted from m10-02 field
- Stored for carrier identification
β Consolidated Acceptance Criteria
- The system processes the M10 segment for manifest data integration → the transport type is extracted from M10-03 field and stored for transportation mode identification
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExtractTransportTypefromM1003(["Start Step"])
E_ExtractTransportTypefromM1003(["End Step"])
N_ExtractTransportTypefromM1003_Node0{"The system processes the M10
segment for manifest data
integration"}:::decision N_ExtractTransportTypefromM1003_Node0_action["The transport type is extracted
from M10-03 field and stored for
transportation mode identification"]:::main N_ExtractTransportTypefromM1003_Node0 -- Yes --> N_ExtractTransportTypefromM1003_Node0_action N_ExtractTransportTypefromM1003_Node0_action --> E_ExtractTransportTypefromM1003 S_ExtractTransportTypefromM1003 --> N_ExtractTransportTypefromM1003_Node0 N_ExtractTransportTypefromM1003_Node0 -- No --> E_ExtractTransportTypefromM1003
segment for manifest data
integration"}:::decision N_ExtractTransportTypefromM1003_Node0_action["The transport type is extracted
from M10-03 field and stored for
transportation mode identification"]:::main N_ExtractTransportTypefromM1003_Node0 -- Yes --> N_ExtractTransportTypefromM1003_Node0_action N_ExtractTransportTypefromM1003_Node0_action --> E_ExtractTransportTypefromM1003 S_ExtractTransportTypefromM1003 --> N_ExtractTransportTypefromM1003_Node0 N_ExtractTransportTypefromM1003_Node0 -- No --> E_ExtractTransportTypefromM1003
File: GCX016.cbl
GIVEN:
An M10 manifest segment is received with transport type information in field M10-03
WHEN:
The system processes the M10 segment for manifest data integration
THEN:
- The transport type is extracted from m10-03 field
- Stored for transportation mode identification
β Consolidated Acceptance Criteria
- The system processes the M10 segment for manifest data integration → the country code is extracted from M10-04 field and stored for origin country identification
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExtractCountryCodefromM1004(["Start Step"])
E_ExtractCountryCodefromM1004(["End Step"])
N_ExtractCountryCodefromM1004_Node0{"The system processes the M10
segment for manifest data
integration"}:::decision N_ExtractCountryCodefromM1004_Node0_action["The country code is extracted from
M10-04 field and stored for origin
country identification"]:::main N_ExtractCountryCodefromM1004_Node0 -- Yes --> N_ExtractCountryCodefromM1004_Node0_action N_ExtractCountryCodefromM1004_Node0_action --> E_ExtractCountryCodefromM1004 S_ExtractCountryCodefromM1004 --> N_ExtractCountryCodefromM1004_Node0 N_ExtractCountryCodefromM1004_Node0 -- No --> E_ExtractCountryCodefromM1004
segment for manifest data
integration"}:::decision N_ExtractCountryCodefromM1004_Node0_action["The country code is extracted from
M10-04 field and stored for origin
country identification"]:::main N_ExtractCountryCodefromM1004_Node0 -- Yes --> N_ExtractCountryCodefromM1004_Node0_action N_ExtractCountryCodefromM1004_Node0_action --> E_ExtractCountryCodefromM1004 S_ExtractCountryCodefromM1004 --> N_ExtractCountryCodefromM1004_Node0 N_ExtractCountryCodefromM1004_Node0 -- No --> E_ExtractCountryCodefromM1004
File: GCX016.cbl
GIVEN:
An M10 manifest segment is received with country information in field M10-04
WHEN:
The system processes the M10 segment for manifest data integration
THEN:
- The country code is extracted from m10-04 field
- Stored for origin country identification
β Consolidated Acceptance Criteria
- The system processes the M10 segment for manifest data integration → the vessel name is extracted from M10-05 field and stored for carrier vessel identification
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExtractVesselNamefromM1005(["Start Step"])
E_ExtractVesselNamefromM1005(["End Step"])
N_ExtractVesselNamefromM1005_Node0{"The system processes the M10
segment for manifest data
integration"}:::decision N_ExtractVesselNamefromM1005_Node0_action["The vessel name is extracted from
M10-05 field and stored for carrier
vessel identification"]:::main N_ExtractVesselNamefromM1005_Node0 -- Yes --> N_ExtractVesselNamefromM1005_Node0_action N_ExtractVesselNamefromM1005_Node0_action --> E_ExtractVesselNamefromM1005 S_ExtractVesselNamefromM1005 --> N_ExtractVesselNamefromM1005_Node0 N_ExtractVesselNamefromM1005_Node0 -- No --> E_ExtractVesselNamefromM1005
segment for manifest data
integration"}:::decision N_ExtractVesselNamefromM1005_Node0_action["The vessel name is extracted from
M10-05 field and stored for carrier
vessel identification"]:::main N_ExtractVesselNamefromM1005_Node0 -- Yes --> N_ExtractVesselNamefromM1005_Node0_action N_ExtractVesselNamefromM1005_Node0_action --> E_ExtractVesselNamefromM1005 S_ExtractVesselNamefromM1005 --> N_ExtractVesselNamefromM1005_Node0 N_ExtractVesselNamefromM1005_Node0 -- No --> E_ExtractVesselNamefromM1005
File: GCX016.cbl
GIVEN:
An M10 manifest segment is received with vessel information in field M10-05
WHEN:
The system processes the M10 segment for manifest data integration
THEN:
- The vessel name is extracted from m10-05 field
- Stored for carrier vessel identification
β Consolidated Acceptance Criteria
- The system processes the M10 segment for manifest data integration → the flight/voyage number is extracted from M10-06 field and stored for trip identification
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExtractFlightVoyageNumberfromM1006(["Start Step"])
E_ExtractFlightVoyageNumberfromM1006(["End Step"])
N_ExtractFlightVoyageNumberfromM1006_Node0{"The system processes the M10
segment for manifest data
integration"}:::decision N_ExtractFlightVoyageNumberfromM1006_Node0_action["The flightvoyage number is
extracted from M10-06 field and
stored for trip identification"]:::main N_ExtractFlightVoyageNumberfromM1006_Node0 -- Yes --> N_ExtractFlightVoyageNumberfromM1006_Node0_action N_ExtractFlightVoyageNumberfromM1006_Node0_action --> E_ExtractFlightVoyageNumberfromM1006 S_ExtractFlightVoyageNumberfromM1006 --> N_ExtractFlightVoyageNumberfromM1006_Node0 N_ExtractFlightVoyageNumberfromM1006_Node0 -- No --> E_ExtractFlightVoyageNumberfromM1006
segment for manifest data
integration"}:::decision N_ExtractFlightVoyageNumberfromM1006_Node0_action["The flightvoyage number is
extracted from M10-06 field and
stored for trip identification"]:::main N_ExtractFlightVoyageNumberfromM1006_Node0 -- Yes --> N_ExtractFlightVoyageNumberfromM1006_Node0_action N_ExtractFlightVoyageNumberfromM1006_Node0_action --> E_ExtractFlightVoyageNumberfromM1006 S_ExtractFlightVoyageNumberfromM1006 --> N_ExtractFlightVoyageNumberfromM1006_Node0 N_ExtractFlightVoyageNumberfromM1006_Node0 -- No --> E_ExtractFlightVoyageNumberfromM1006
File: GCX016.cbl
GIVEN:
An M10 manifest segment is received with flight/voyage information in field M10-06
WHEN:
The system processes the M10 segment for manifest data integration
THEN:
- The flight/voyage number is extracted from m10-06 field
- Stored for trip identification
β Consolidated Acceptance Criteria
- The system processes the M10 segment for manifest data integration → the quantity is extracted from M10-07 field and stored for cargo quantity tracking
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExtractQuantityfromM1007(["Start Step"])
E_ExtractQuantityfromM1007(["End Step"])
N_ExtractQuantityfromM1007_Node0{"The system processes the M10
segment for manifest data
integration"}:::decision N_ExtractQuantityfromM1007_Node0_action["The quantity is extracted from
M10-07 field and stored for cargo
quantity tracking"]:::main N_ExtractQuantityfromM1007_Node0 -- Yes --> N_ExtractQuantityfromM1007_Node0_action N_ExtractQuantityfromM1007_Node0_action --> E_ExtractQuantityfromM1007 S_ExtractQuantityfromM1007 --> N_ExtractQuantityfromM1007_Node0 N_ExtractQuantityfromM1007_Node0 -- No --> E_ExtractQuantityfromM1007
segment for manifest data
integration"}:::decision N_ExtractQuantityfromM1007_Node0_action["The quantity is extracted from
M10-07 field and stored for cargo
quantity tracking"]:::main N_ExtractQuantityfromM1007_Node0 -- Yes --> N_ExtractQuantityfromM1007_Node0_action N_ExtractQuantityfromM1007_Node0_action --> E_ExtractQuantityfromM1007 S_ExtractQuantityfromM1007 --> N_ExtractQuantityfromM1007_Node0 N_ExtractQuantityfromM1007_Node0 -- No --> E_ExtractQuantityfromM1007
File: GCX016.cbl
GIVEN:
An M10 manifest segment is received with quantity information in field M10-07
WHEN:
The system processes the M10 segment for manifest data integration
THEN:
- The quantity is extracted from m10-07 field
- Stored for cargo quantity tracking
β Consolidated Acceptance Criteria
- The system processes the M10 segment for manifest data integration → the manifest type code is extracted from M10-08 field and stored for manifest classification
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExtractManifestTypeCodefromM1008(["Start Step"])
E_ExtractManifestTypeCodefromM1008(["End Step"])
N_ExtractManifestTypeCodefromM1008_Node0{"The system processes the M10
segment for manifest data
integration"}:::decision N_ExtractManifestTypeCodefromM1008_Node0_action["The manifest type code is extracted
from M10-08 field and stored for
manifest classification"]:::main N_ExtractManifestTypeCodefromM1008_Node0 -- Yes --> N_ExtractManifestTypeCodefromM1008_Node0_action N_ExtractManifestTypeCodefromM1008_Node0_action --> E_ExtractManifestTypeCodefromM1008 S_ExtractManifestTypeCodefromM1008 --> N_ExtractManifestTypeCodefromM1008_Node0 N_ExtractManifestTypeCodefromM1008_Node0 -- No --> E_ExtractManifestTypeCodefromM1008
segment for manifest data
integration"}:::decision N_ExtractManifestTypeCodefromM1008_Node0_action["The manifest type code is extracted
from M10-08 field and stored for
manifest classification"]:::main N_ExtractManifestTypeCodefromM1008_Node0 -- Yes --> N_ExtractManifestTypeCodefromM1008_Node0_action N_ExtractManifestTypeCodefromM1008_Node0_action --> E_ExtractManifestTypeCodefromM1008 S_ExtractManifestTypeCodefromM1008 --> N_ExtractManifestTypeCodefromM1008_Node0 N_ExtractManifestTypeCodefromM1008_Node0 -- No --> E_ExtractManifestTypeCodefromM1008
File: GCX016.cbl
GIVEN:
An M10 manifest segment is received with manifest type information in field M10-08
WHEN:
The system processes the M10 segment for manifest data integration
THEN:
- The manifest type code is extracted from m10-08 field
- Stored for manifest classification
β Consolidated Acceptance Criteria
- The system processes the M10 segment for manifest data integration → the condition response code is extracted from M10-09 field and stored for manifest condition tracking
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExtractConditionResponseCodefromM1009(["Start Step"])
E_ExtractConditionResponseCodefromM1009(["End Step"])
N_ExtractConditionResponseCodefromM1009_Node0{"The system processes the M10
segment for manifest data
integration"}:::decision N_ExtractConditionResponseCodefromM1009_Node0_action["The condition response code is
extracted from M10-09 field and
stored for manifest condition
tracking"]:::main N_ExtractConditionResponseCodefromM1009_Node0 -- Yes --> N_ExtractConditionResponseCodefromM1009_Node0_action N_ExtractConditionResponseCodefromM1009_Node0_action --> E_ExtractConditionResponseCodefromM1009 S_ExtractConditionResponseCodefromM1009 --> N_ExtractConditionResponseCodefromM1009_Node0 N_ExtractConditionResponseCodefromM1009_Node0 -- No --> E_ExtractConditionResponseCodefromM1009
segment for manifest data
integration"}:::decision N_ExtractConditionResponseCodefromM1009_Node0_action["The condition response code is
extracted from M10-09 field and
stored for manifest condition
tracking"]:::main N_ExtractConditionResponseCodefromM1009_Node0 -- Yes --> N_ExtractConditionResponseCodefromM1009_Node0_action N_ExtractConditionResponseCodefromM1009_Node0_action --> E_ExtractConditionResponseCodefromM1009 S_ExtractConditionResponseCodefromM1009 --> N_ExtractConditionResponseCodefromM1009_Node0 N_ExtractConditionResponseCodefromM1009_Node0 -- No --> E_ExtractConditionResponseCodefromM1009
File: GCX016.cbl
GIVEN:
An M10 manifest segment is received with condition response information in field M10-09
WHEN:
The system processes the M10 segment for manifest data integration
THEN:
- The condition response code is extracted from m10-09 field
- Stored for manifest condition tracking
β Consolidated Acceptance Criteria
- The system validates the transport type against valid transportation modes → the system determines if the transport type is valid for further processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IsTransportTypeValid(["Start Step"])
E_IsTransportTypeValid(["End Step"])
N_IsTransportTypeValid_Node0{"The system validates the transport
type against valid transportation
modes"}:::decision N_IsTransportTypeValid_Node0_action["The system determines if the
transport type is valid for further
processing"]:::main N_IsTransportTypeValid_Node0 -- Yes --> N_IsTransportTypeValid_Node0_action N_IsTransportTypeValid_Node0_action --> E_IsTransportTypeValid S_IsTransportTypeValid --> N_IsTransportTypeValid_Node0 N_IsTransportTypeValid_Node0 -- No --> E_IsTransportTypeValid
type against valid transportation
modes"}:::decision N_IsTransportTypeValid_Node0_action["The system determines if the
transport type is valid for further
processing"]:::main N_IsTransportTypeValid_Node0 -- Yes --> N_IsTransportTypeValid_Node0_action N_IsTransportTypeValid_Node0_action --> E_IsTransportTypeValid S_IsTransportTypeValid --> N_IsTransportTypeValid_Node0 N_IsTransportTypeValid_Node0 -- No --> E_IsTransportTypeValid
File: GCX016.cbl
GIVEN:
A transport type code has been extracted from M10-03 field
WHEN:
The system validates the transport type against valid transportation modes
THEN:
The system determines if the transport type is valid for further processing
β Consolidated Acceptance Criteria
- The system maps the transport type to internal coding standards → the transport type is converted to the appropriate internal system code
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MapTransportTypetoInternalCode(["Start Step"])
E_MapTransportTypetoInternalCode(["End Step"])
N_MapTransportTypetoInternalCode_Node0{"The system maps the transport type
to internal coding standards"}:::decision N_MapTransportTypetoInternalCode_Node0_action["The transport type is converted to
the appropriate internal system code"]:::main N_MapTransportTypetoInternalCode_Node0 -- Yes --> N_MapTransportTypetoInternalCode_Node0_action N_MapTransportTypetoInternalCode_Node0_action --> E_MapTransportTypetoInternalCode S_MapTransportTypetoInternalCode --> N_MapTransportTypetoInternalCode_Node0 N_MapTransportTypetoInternalCode_Node0 -- No --> E_MapTransportTypetoInternalCode
to internal coding standards"}:::decision N_MapTransportTypetoInternalCode_Node0_action["The transport type is converted to
the appropriate internal system code"]:::main N_MapTransportTypetoInternalCode_Node0 -- Yes --> N_MapTransportTypetoInternalCode_Node0_action N_MapTransportTypetoInternalCode_Node0_action --> E_MapTransportTypetoInternalCode S_MapTransportTypetoInternalCode --> N_MapTransportTypetoInternalCode_Node0 N_MapTransportTypetoInternalCode_Node0 -- No --> E_MapTransportTypetoInternalCode
File: GCX016.cbl
GIVEN:
A transport type code has been validated as a recognized transportation mode
WHEN:
The system maps the transport type to internal coding standards
THEN:
The transport type is converted to the appropriate internal system code
β Consolidated Acceptance Criteria
- The system cannot map the transport type to internal coding standards → the system assigns a default transport type code for processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetDefaultTransportType(["Start Step"])
E_SetDefaultTransportType(["End Step"])
N_SetDefaultTransportType_Node0{"The system cannot map the transport
type to internal coding standards"}:::decision N_SetDefaultTransportType_Node0_action["The system assigns a default
transport type code for processing"]:::main N_SetDefaultTransportType_Node0 -- Yes --> N_SetDefaultTransportType_Node0_action N_SetDefaultTransportType_Node0_action --> E_SetDefaultTransportType S_SetDefaultTransportType --> N_SetDefaultTransportType_Node0 N_SetDefaultTransportType_Node0 -- No --> E_SetDefaultTransportType
type to internal coding standards"}:::decision N_SetDefaultTransportType_Node0_action["The system assigns a default
transport type code for processing"]:::main N_SetDefaultTransportType_Node0 -- Yes --> N_SetDefaultTransportType_Node0_action N_SetDefaultTransportType_Node0_action --> E_SetDefaultTransportType S_SetDefaultTransportType --> N_SetDefaultTransportType_Node0 N_SetDefaultTransportType_Node0 -- No --> E_SetDefaultTransportType
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
A transport type code has been extracted but is not a recognized valid transportation mode
WHEN:
The system cannot map the transport type to internal coding standards
THEN:
The system assigns a default transport type code for processing
β Consolidated Acceptance Criteria
- The system builds the manifest information into cargo record structure → all manifest data is consolidated into a complete cargo record with SCAC, transport type, country, vessel, voyage, quantity, manifest type, and condition codes
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_BuildManifestInformationintoCargoRecord(["Start Step"])
E_BuildManifestInformationintoCargoRecord(["End Step"])
N_BuildManifestInformationintoCargoRecord_Node0{"The system builds the manifest
information into cargo record
structure"}:::decision N_BuildManifestInformationintoCargoRecord_Node0_action["All manifest data is consolidated
into a complete cargo record with
SCAC, transport type, country,
vessel, voyage, quantity, manifest
type, and condition codes"]:::main N_BuildManifestInformationintoCargoRecord_Node0 -- Yes --> N_BuildManifestInformationintoCargoRecord_Node0_action N_BuildManifestInformationintoCargoRecord_Node0_action --> E_BuildManifestInformationintoCargoRecord S_BuildManifestInformationintoCargoRecord --> N_BuildManifestInformationintoCargoRecord_Node0 N_BuildManifestInformationintoCargoRecord_Node0 -- No --> E_BuildManifestInformationintoCargoRecord
information into cargo record
structure"}:::decision N_BuildManifestInformationintoCargoRecord_Node0_action["All manifest data is consolidated
into a complete cargo record with
SCAC, transport type, country,
vessel, voyage, quantity, manifest
type, and condition codes"]:::main N_BuildManifestInformationintoCargoRecord_Node0 -- Yes --> N_BuildManifestInformationintoCargoRecord_Node0_action N_BuildManifestInformationintoCargoRecord_Node0_action --> E_BuildManifestInformationintoCargoRecord S_BuildManifestInformationintoCargoRecord --> N_BuildManifestInformationintoCargoRecord_Node0 N_BuildManifestInformationintoCargoRecord_Node0 -- No --> E_BuildManifestInformationintoCargoRecord
File: GCX016.cbl
GIVEN:
All M10 manifest data elements have been extracted and validated
WHEN:
The system builds the manifest information into cargo record structure
THEN:
All manifest data is consolidated into a complete cargo record with SCAC, transport type, country, vessel, voyage, quantity, manifest type, and condition codes
β Consolidated Acceptance Criteria
- The system updates the cargo record with M10 manifest data → the cargo record is updated with all manifest information including carrier, transport mode, origin, vessel details, quantities, and status codes
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UpdateCargoRecordwithM10Data(["Start Step"])
E_UpdateCargoRecordwithM10Data(["End Step"])
N_UpdateCargoRecordwithM10Data_Node0{"The system updates the cargo record
with M10 manifest data"}:::decision N_UpdateCargoRecordwithM10Data_Node0_action["The cargo record is updated with
all manifest information including
carrier, transport mode, origin,
vessel details, quantities, and
status codes"]:::main N_UpdateCargoRecordwithM10Data_Node0 -- Yes --> N_UpdateCargoRecordwithM10Data_Node0_action N_UpdateCargoRecordwithM10Data_Node0_action --> E_UpdateCargoRecordwithM10Data S_UpdateCargoRecordwithM10Data --> N_UpdateCargoRecordwithM10Data_Node0 N_UpdateCargoRecordwithM10Data_Node0 -- No --> E_UpdateCargoRecordwithM10Data
with M10 manifest data"}:::decision N_UpdateCargoRecordwithM10Data_Node0_action["The cargo record is updated with
all manifest information including
carrier, transport mode, origin,
vessel details, quantities, and
status codes"]:::main N_UpdateCargoRecordwithM10Data_Node0 -- Yes --> N_UpdateCargoRecordwithM10Data_Node0_action N_UpdateCargoRecordwithM10Data_Node0_action --> E_UpdateCargoRecordwithM10Data S_UpdateCargoRecordwithM10Data --> N_UpdateCargoRecordwithM10Data_Node0 N_UpdateCargoRecordwithM10Data_Node0 -- No --> E_UpdateCargoRecordwithM10Data
File: GCX016.cbl
GIVEN:
Manifest information has been built into a structured cargo record format
WHEN:
The system updates the cargo record with M10 manifest data
THEN:
The cargo record is updated with all manifest information including carrier, transport mode, origin, vessel details, quantities, and status codes
β Consolidated Acceptance Criteria
- If the station type → the system routes to bonded-to station lookup for bonded stations or border crossing station lookup for border stations
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_StationType(["Start Step"])
E_StationType(["End Step"])
N_StationType_Node0{"The system evaluates the station
type"}:::decision N_StationType_Node0_action["The system routes to bonded-to
station lookup for bonded stations
or border crossing station lookup
for border stations"]:::main N_StationType_Node0 -- Yes --> N_StationType_Node0_action N_StationType_Node0_action --> E_StationType S_StationType --> N_StationType_Node0 N_StationType_Node0 -- No --> E_StationType
type"}:::decision N_StationType_Node0_action["The system routes to bonded-to
station lookup for bonded stations
or border crossing station lookup
for border stations"]:::main N_StationType_Node0 -- Yes --> N_StationType_Node0_action N_StationType_Node0_action --> E_StationType S_StationType --> N_StationType_Node0 N_StationType_Node0 -- No --> E_StationType
File: GCX016.cbl
GIVEN:
A station data lookup request is received
WHEN:
The system evaluates the station type
THEN:
The system routes to bonded-to station lookup for bonded stations or border crossing station lookup for border stations
β Consolidated Acceptance Criteria
- The system searches the SD table using station identifier → the system retrieves station directory information if found
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SearchSDTable(["Start Step"])
E_SearchSDTable(["End Step"])
N_SearchSDTable_Node0{"The system searches the SD table
using station identifier"}:::decision N_SearchSDTable_Node0_action["The system retrieves station
directory information if found"]:::main N_SearchSDTable_Node0 -- Yes --> N_SearchSDTable_Node0_action N_SearchSDTable_Node0_action --> E_SearchSDTable S_SearchSDTable --> N_SearchSDTable_Node0 N_SearchSDTable_Node0 -- No --> E_SearchSDTable
using station identifier"}:::decision N_SearchSDTable_Node0_action["The system retrieves station
directory information if found"]:::main N_SearchSDTable_Node0 -- Yes --> N_SearchSDTable_Node0_action N_SearchSDTable_Node0_action --> E_SearchSDTable S_SearchSDTable --> N_SearchSDTable_Node0 N_SearchSDTable_Node0 -- No --> E_SearchSDTable
File: GCX016.cbl
GIVEN:
A station lookup request is initiated
WHEN:
The system searches the SD table using station identifier
THEN:
The system retrieves station directory information if found
β Consolidated Acceptance Criteria
- The system checks if the station was found in SD table → if found, retrieve station name; if not found, search DS table
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_StationFoundinSD(["Start Step"])
E_StationFoundinSD(["End Step"])
N_StationFoundinSD_Node0{"The system checks if the station
was found in SD table"}:::decision N_StationFoundinSD_Node0_action["If found, retrieve station name if
not found, search DS table"]:::main N_StationFoundinSD_Node0 -- Yes --> N_StationFoundinSD_Node0_action N_StationFoundinSD_Node0_action --> E_StationFoundinSD S_StationFoundinSD --> N_StationFoundinSD_Node0 N_StationFoundinSD_Node0 -- No --> E_StationFoundinSD
was found in SD table"}:::decision N_StationFoundinSD_Node0_action["If found, retrieve station name if
not found, search DS table"]:::main N_StationFoundinSD_Node0 -- Yes --> N_StationFoundinSD_Node0_action N_StationFoundinSD_Node0_action --> E_StationFoundinSD S_StationFoundinSD --> N_StationFoundinSD_Node0 N_StationFoundinSD_Node0 -- No --> E_StationFoundinSD
File: GCX016.cbl
GIVEN:
The SD table has been searched for a station
WHEN:
The system checks if the station was found in SD table
THEN:
If found, retrieve station name; if not found, search DS table
β Consolidated Acceptance Criteria
- The system searches the DS table using station identifier → the system retrieves destination station information if found
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SearchDSTable(["Start Step"])
E_SearchDSTable(["End Step"])
N_SearchDSTable_Node0{"The system searches the DS table
using station identifier"}:::decision N_SearchDSTable_Node0_action["The system retrieves destination
station information if found"]:::main N_SearchDSTable_Node0 -- Yes --> N_SearchDSTable_Node0_action N_SearchDSTable_Node0_action --> E_SearchDSTable S_SearchDSTable --> N_SearchDSTable_Node0 N_SearchDSTable_Node0 -- No --> E_SearchDSTable
using station identifier"}:::decision N_SearchDSTable_Node0_action["The system retrieves destination
station information if found"]:::main N_SearchDSTable_Node0 -- Yes --> N_SearchDSTable_Node0_action N_SearchDSTable_Node0_action --> E_SearchDSTable S_SearchDSTable --> N_SearchDSTable_Node0 N_SearchDSTable_Node0 -- No --> E_SearchDSTable
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
Station was not found in SD table
WHEN:
The system searches the DS table using station identifier
THEN:
The system retrieves destination station information if found
β Consolidated Acceptance Criteria
- The system checks if the station was found in DS table → if found, retrieve station description; if not found, search KS table
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_StationFoundinDS(["Start Step"])
E_StationFoundinDS(["End Step"])
N_StationFoundinDS_Node0{"The system checks if the station
was found in DS table"}:::decision N_StationFoundinDS_Node0_action["If found, retrieve station
description if not found, search KS
table"]:::main N_StationFoundinDS_Node0 -- Yes --> N_StationFoundinDS_Node0_action N_StationFoundinDS_Node0_action --> E_StationFoundinDS S_StationFoundinDS --> N_StationFoundinDS_Node0 N_StationFoundinDS_Node0 -- No --> E_StationFoundinDS
was found in DS table"}:::decision N_StationFoundinDS_Node0_action["If found, retrieve station
description if not found, search KS
table"]:::main N_StationFoundinDS_Node0 -- Yes --> N_StationFoundinDS_Node0_action N_StationFoundinDS_Node0_action --> E_StationFoundinDS S_StationFoundinDS --> N_StationFoundinDS_Node0 N_StationFoundinDS_Node0 -- No --> E_StationFoundinDS
File: GCX016.cbl
GIVEN:
The DS table has been searched for a station
WHEN:
The system checks if the station was found in DS table
THEN:
If found, retrieve station description; if not found, search KS table
β Consolidated Acceptance Criteria
- The system searches the KS table using station identifier → the system retrieves known station information if found
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SearchKSTable(["Start Step"])
E_SearchKSTable(["End Step"])
N_SearchKSTable_Node0{"The system searches the KS table
using station identifier"}:::decision N_SearchKSTable_Node0_action["The system retrieves known station
information if found"]:::main N_SearchKSTable_Node0 -- Yes --> N_SearchKSTable_Node0_action N_SearchKSTable_Node0_action --> E_SearchKSTable S_SearchKSTable --> N_SearchKSTable_Node0 N_SearchKSTable_Node0 -- No --> E_SearchKSTable
using station identifier"}:::decision N_SearchKSTable_Node0_action["The system retrieves known station
information if found"]:::main N_SearchKSTable_Node0 -- Yes --> N_SearchKSTable_Node0_action N_SearchKSTable_Node0_action --> E_SearchKSTable S_SearchKSTable --> N_SearchKSTable_Node0 N_SearchKSTable_Node0 -- No --> E_SearchKSTable
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
Station was not found in SD or DS tables
WHEN:
The system searches the KS table using station identifier
THEN:
The system retrieves known station information if found
β Consolidated Acceptance Criteria
- The system checks if the station was found in KS table → if found, retrieve location details; if not found, generate station not found error
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_StationFoundinKS(["Start Step"])
E_StationFoundinKS(["End Step"])
N_StationFoundinKS_Node0{"The system checks if the station
was found in KS table"}:::decision N_StationFoundinKS_Node0_action["If found, retrieve location details
if not found, generate station not
found error"]:::main N_StationFoundinKS_Node0 -- Yes --> N_StationFoundinKS_Node0_action N_StationFoundinKS_Node0_action --> E_StationFoundinKS S_StationFoundinKS --> N_StationFoundinKS_Node0 N_StationFoundinKS_Node0 -- No --> E_StationFoundinKS
was found in KS table"}:::decision N_StationFoundinKS_Node0_action["If found, retrieve location details
if not found, generate station not
found error"]:::main N_StationFoundinKS_Node0 -- Yes --> N_StationFoundinKS_Node0_action N_StationFoundinKS_Node0_action --> E_StationFoundinKS S_StationFoundinKS --> N_StationFoundinKS_Node0 N_StationFoundinKS_Node0 -- No --> E_StationFoundinKS
File: GCX016.cbl
GIVEN:
The KS table has been searched for a station
WHEN:
The system checks if the station was found in KS table
THEN:
If found, retrieve location details; if not found, generate station not found error
β Consolidated Acceptance Criteria
- The system retrieves station data → the system extracts and stores the station name for formatting
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RetrieveStationName(["Start Step"])
E_RetrieveStationName(["End Step"])
N_RetrieveStationName_Node0{"The system retrieves station data"}:::decision
N_RetrieveStationName_Node0_action["The system extracts and stores the
station name for formatting"]:::main N_RetrieveStationName_Node0 -- Yes --> N_RetrieveStationName_Node0_action N_RetrieveStationName_Node0_action --> E_RetrieveStationName S_RetrieveStationName --> N_RetrieveStationName_Node0 N_RetrieveStationName_Node0 -- No --> E_RetrieveStationName
station name for formatting"]:::main N_RetrieveStationName_Node0 -- Yes --> N_RetrieveStationName_Node0_action N_RetrieveStationName_Node0_action --> E_RetrieveStationName S_RetrieveStationName --> N_RetrieveStationName_Node0 N_RetrieveStationName_Node0 -- No --> E_RetrieveStationName
File: GCX016.cbl
GIVEN:
Station is found in SD table
WHEN:
The system retrieves station data
THEN:
- The system extracts
- Stores the station name for formatting
β Consolidated Acceptance Criteria
- The system retrieves station data → the system extracts and stores the station description for formatting
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RetrieveStationDescription(["Start Step"])
E_RetrieveStationDescription(["End Step"])
N_RetrieveStationDescription_Node0{"The system retrieves station data"}:::decision
N_RetrieveStationDescription_Node0_action["The system extracts and stores the
station description for formatting"]:::main N_RetrieveStationDescription_Node0 -- Yes --> N_RetrieveStationDescription_Node0_action N_RetrieveStationDescription_Node0_action --> E_RetrieveStationDescription S_RetrieveStationDescription --> N_RetrieveStationDescription_Node0 N_RetrieveStationDescription_Node0 -- No --> E_RetrieveStationDescription
station description for formatting"]:::main N_RetrieveStationDescription_Node0 -- Yes --> N_RetrieveStationDescription_Node0_action N_RetrieveStationDescription_Node0_action --> E_RetrieveStationDescription S_RetrieveStationDescription --> N_RetrieveStationDescription_Node0 N_RetrieveStationDescription_Node0 -- No --> E_RetrieveStationDescription
File: GCX016.cbl
GIVEN:
Station is found in DS table
WHEN:
The system retrieves station data
THEN:
- The system extracts
- Stores the station description for formatting
β Consolidated Acceptance Criteria
- The system retrieves station data → the system extracts and stores the location details for formatting
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RetrieveLocationDetails(["Start Step"])
E_RetrieveLocationDetails(["End Step"])
N_RetrieveLocationDetails_Node0{"The system retrieves station data"}:::decision
N_RetrieveLocationDetails_Node0_action["The system extracts and stores the
location details for formatting"]:::main N_RetrieveLocationDetails_Node0 -- Yes --> N_RetrieveLocationDetails_Node0_action N_RetrieveLocationDetails_Node0_action --> E_RetrieveLocationDetails S_RetrieveLocationDetails --> N_RetrieveLocationDetails_Node0 N_RetrieveLocationDetails_Node0 -- No --> E_RetrieveLocationDetails
location details for formatting"]:::main N_RetrieveLocationDetails_Node0 -- Yes --> N_RetrieveLocationDetails_Node0_action N_RetrieveLocationDetails_Node0_action --> E_RetrieveLocationDetails S_RetrieveLocationDetails --> N_RetrieveLocationDetails_Node0 N_RetrieveLocationDetails_Node0 -- No --> E_RetrieveLocationDetails
File: GCX016.cbl
GIVEN:
Station is found in KS table
WHEN:
The system retrieves station data
THEN:
- The system extracts
- Stores the location details for formatting
β Consolidated Acceptance Criteria
- The system formats the station data → the system creates a standardized station information structure with name, description, and location details
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_FormatStationInformation(["Start Step"])
E_FormatStationInformation(["End Step"])
N_FormatStationInformation_Node0{"The system formats the station data"}:::decision
N_FormatStationInformation_Node0_action["The system creates a standardized
station information structure with
name, description, and location
details"]:::main N_FormatStationInformation_Node0 -- Yes --> N_FormatStationInformation_Node0_action N_FormatStationInformation_Node0_action --> E_FormatStationInformation S_FormatStationInformation --> N_FormatStationInformation_Node0 N_FormatStationInformation_Node0 -- No --> E_FormatStationInformation
station information structure with
name, description, and location
details"]:::main N_FormatStationInformation_Node0 -- Yes --> N_FormatStationInformation_Node0_action N_FormatStationInformation_Node0_action --> E_FormatStationInformation S_FormatStationInformation --> N_FormatStationInformation_Node0 N_FormatStationInformation_Node0 -- No --> E_FormatStationInformation
File: GCX016.cbl
GIVEN:
Station information has been retrieved from any of the station tables
WHEN:
The system formats the station data
THEN:
The system creates a standardized station information structure with name, description, and location details
β Consolidated Acceptance Criteria
- The system updates the cargo record → the system stores the station data in the appropriate cargo record fields
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UpdateCargoRecordwithStationData(["Start Step"])
E_UpdateCargoRecordwithStationData(["End Step"])
N_UpdateCargoRecordwithStationData_Node0{"The system updates the cargo record"}:::decision
N_UpdateCargoRecordwithStationData_Node0_action["The system stores the station data
in the appropriate cargo record
fields"]:::main N_UpdateCargoRecordwithStationData_Node0 -- Yes --> N_UpdateCargoRecordwithStationData_Node0_action N_UpdateCargoRecordwithStationData_Node0_action --> E_UpdateCargoRecordwithStationData S_UpdateCargoRecordwithStationData --> N_UpdateCargoRecordwithStationData_Node0 N_UpdateCargoRecordwithStationData_Node0 -- No --> E_UpdateCargoRecordwithStationData
in the appropriate cargo record
fields"]:::main N_UpdateCargoRecordwithStationData_Node0 -- Yes --> N_UpdateCargoRecordwithStationData_Node0_action N_UpdateCargoRecordwithStationData_Node0_action --> E_UpdateCargoRecordwithStationData S_UpdateCargoRecordwithStationData --> N_UpdateCargoRecordwithStationData_Node0 N_UpdateCargoRecordwithStationData_Node0 -- No --> E_UpdateCargoRecordwithStationData
File: GCX016.cbl
GIVEN:
Station information has been formatted
WHEN:
The system updates the cargo record
THEN:
The system stores the station data in the appropriate cargo record fields
β Consolidated Acceptance Criteria
- The system completes all station table searches → the system generates a station not found error and continues with lookup completion
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_StationNotFoundError(["Start Step"])
E_StationNotFoundError(["End Step"])
N_StationNotFoundError_Node0{"The system completes all station
table searches"}:::decision N_StationNotFoundError_Node0_action["The system generates a station not
found error and continues with
lookup completion"]:::main N_StationNotFoundError_Node0 -- Yes --> N_StationNotFoundError_Node0_action N_StationNotFoundError_Node0_action --> E_StationNotFoundError S_StationNotFoundError --> N_StationNotFoundError_Node0 N_StationNotFoundError_Node0 -- No --> E_StationNotFoundError
table searches"}:::decision N_StationNotFoundError_Node0_action["The system generates a station not
found error and continues with
lookup completion"]:::main N_StationNotFoundError_Node0 -- Yes --> N_StationNotFoundError_Node0_action N_StationNotFoundError_Node0_action --> E_StationNotFoundError S_StationNotFoundError --> N_StationNotFoundError_Node0 N_StationNotFoundError_Node0 -- No --> E_StationNotFoundError
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
Station was not found in SD, DS, or KS tables
WHEN:
The system completes all station table searches
THEN:
- The system generates a station not found error
- Continues with lookup completion
β Consolidated Acceptance Criteria
- The system checks for location ID availability in the cargo record → the system proceeds to extract location ID if available, otherwise uses default/unknown station
- If the location ID field → if location ID is available, proceed to DS table lookup, otherwise set default location name
- The system begins the lookup process → the system checks if a location ID is available and either proceeds with table lookups or uses default location name
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LocationIDAvailable(["Start Step"])
E_LocationIDAvailable(["End Step"])
N_LocationIDAvailable_Node0{"The system checks for location ID
availability in the cargo record"}:::decision N_LocationIDAvailable_Node0_action["The system proceeds to extract
location ID if available, otherwise
uses defaultunknown station"]:::main N_LocationIDAvailable_Node0 -- Yes --> N_LocationIDAvailable_Node0_action N_LocationIDAvailable_Node0_action --> E_LocationIDAvailable S_LocationIDAvailable --> N_LocationIDAvailable_Node0 N_LocationIDAvailable_Node1{"The system evaluates the location
ID field"}:::decision N_LocationIDAvailable_Node1_action["If location ID is available,
proceed to DS table lookup,
otherwise set default location name"]:::main N_LocationIDAvailable_Node1 -- Yes --> N_LocationIDAvailable_Node1_action N_LocationIDAvailable_Node1_action --> E_LocationIDAvailable N_LocationIDAvailable_Node0 -- No --> N_LocationIDAvailable_Node1 N_LocationIDAvailable_Node2{"The system begins the lookup
process"}:::decision N_LocationIDAvailable_Node2_action["The system checks if a location ID
is available and either proceeds
with table lookups or uses default
location name"]:::main N_LocationIDAvailable_Node2 -- Yes --> N_LocationIDAvailable_Node2_action N_LocationIDAvailable_Node2_action --> E_LocationIDAvailable N_LocationIDAvailable_Node1 -- No --> N_LocationIDAvailable_Node2 N_LocationIDAvailable_Node2 -- No --> E_LocationIDAvailable
availability in the cargo record"}:::decision N_LocationIDAvailable_Node0_action["The system proceeds to extract
location ID if available, otherwise
uses defaultunknown station"]:::main N_LocationIDAvailable_Node0 -- Yes --> N_LocationIDAvailable_Node0_action N_LocationIDAvailable_Node0_action --> E_LocationIDAvailable S_LocationIDAvailable --> N_LocationIDAvailable_Node0 N_LocationIDAvailable_Node1{"The system evaluates the location
ID field"}:::decision N_LocationIDAvailable_Node1_action["If location ID is available,
proceed to DS table lookup,
otherwise set default location name"]:::main N_LocationIDAvailable_Node1 -- Yes --> N_LocationIDAvailable_Node1_action N_LocationIDAvailable_Node1_action --> E_LocationIDAvailable N_LocationIDAvailable_Node0 -- No --> N_LocationIDAvailable_Node1 N_LocationIDAvailable_Node2{"The system begins the lookup
process"}:::decision N_LocationIDAvailable_Node2_action["The system checks if a location ID
is available and either proceeds
with table lookups or uses default
location name"]:::main N_LocationIDAvailable_Node2 -- Yes --> N_LocationIDAvailable_Node2_action N_LocationIDAvailable_Node2_action --> E_LocationIDAvailable N_LocationIDAvailable_Node1 -- No --> N_LocationIDAvailable_Node2 N_LocationIDAvailable_Node2 -- No --> E_LocationIDAvailable
File: GCX016.cbl
GIVEN:
A cargo record is being processed for destination station lookup
WHEN:
The system checks for location ID availability in the cargo record
THEN:
The system proceeds to extract location ID if available, otherwise uses default/unknown station
File: GCX016.cbl
GIVEN:
A location processing request is received
WHEN:
The system evaluates the location ID field
THEN:
If location ID is available, proceed to DS table lookup, otherwise set default location name
File: GCX016.cbl
GIVEN:
A station information lookup request is initiated
WHEN:
The system begins the lookup process
THEN:
- The system checks if a location id is available
- Either proceeds with table lookups or uses default location name
β Consolidated Acceptance Criteria
- The system extracts the location ID from the cargo record → the location ID is available for station table lookup operations
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExtractLocationIDfromCargoRecord(["Start Step"])
E_ExtractLocationIDfromCargoRecord(["End Step"])
N_ExtractLocationIDfromCargoRecord_Node0{"The system extracts the location ID
from the cargo record"}:::decision N_ExtractLocationIDfromCargoRecord_Node0_action["The location ID is available for
station table lookup operations"]:::main N_ExtractLocationIDfromCargoRecord_Node0 -- Yes --> N_ExtractLocationIDfromCargoRecord_Node0_action N_ExtractLocationIDfromCargoRecord_Node0_action --> E_ExtractLocationIDfromCargoRecord S_ExtractLocationIDfromCargoRecord --> N_ExtractLocationIDfromCargoRecord_Node0 N_ExtractLocationIDfromCargoRecord_Node0 -- No --> E_ExtractLocationIDfromCargoRecord
from the cargo record"}:::decision N_ExtractLocationIDfromCargoRecord_Node0_action["The location ID is available for
station table lookup operations"]:::main N_ExtractLocationIDfromCargoRecord_Node0 -- Yes --> N_ExtractLocationIDfromCargoRecord_Node0_action N_ExtractLocationIDfromCargoRecord_Node0_action --> E_ExtractLocationIDfromCargoRecord S_ExtractLocationIDfromCargoRecord --> N_ExtractLocationIDfromCargoRecord_Node0 N_ExtractLocationIDfromCargoRecord_Node0 -- No --> E_ExtractLocationIDfromCargoRecord
File: GCX016.cbl
GIVEN:
A cargo record contains a valid location ID
WHEN:
The system extracts the location ID from the cargo record
THEN:
The location ID is available for station table lookup operations
β Consolidated Acceptance Criteria
- The system searches the DS table using the location ID → the system retrieves station information if found or proceeds to secondary lookup
- The system performs DS table lookup → the system searches the DS table for matching station name records
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LookupStationinDSTable(["Start Step"])
E_LookupStationinDSTable(["End Step"])
N_LookupStationinDSTable_Node0{"The system searches the DS table
using the location ID"}:::decision N_LookupStationinDSTable_Node0_action["The system retrieves station
information if found or proceeds to
secondary lookup"]:::main N_LookupStationinDSTable_Node0 -- Yes --> N_LookupStationinDSTable_Node0_action N_LookupStationinDSTable_Node0_action --> E_LookupStationinDSTable S_LookupStationinDSTable --> N_LookupStationinDSTable_Node0 N_LookupStationinDSTable_Node1{"The system performs DS table lookup"}:::decision N_LookupStationinDSTable_Node1_action["The system searches the DS table
for matching station name records"]:::main N_LookupStationinDSTable_Node1 -- Yes --> N_LookupStationinDSTable_Node1_action N_LookupStationinDSTable_Node1_action --> E_LookupStationinDSTable N_LookupStationinDSTable_Node0 -- No --> N_LookupStationinDSTable_Node1 N_LookupStationinDSTable_Node1 -- No --> E_LookupStationinDSTable
using the location ID"}:::decision N_LookupStationinDSTable_Node0_action["The system retrieves station
information if found or proceeds to
secondary lookup"]:::main N_LookupStationinDSTable_Node0 -- Yes --> N_LookupStationinDSTable_Node0_action N_LookupStationinDSTable_Node0_action --> E_LookupStationinDSTable S_LookupStationinDSTable --> N_LookupStationinDSTable_Node0 N_LookupStationinDSTable_Node1{"The system performs DS table lookup"}:::decision N_LookupStationinDSTable_Node1_action["The system searches the DS table
for matching station name records"]:::main N_LookupStationinDSTable_Node1 -- Yes --> N_LookupStationinDSTable_Node1_action N_LookupStationinDSTable_Node1_action --> E_LookupStationinDSTable N_LookupStationinDSTable_Node0 -- No --> N_LookupStationinDSTable_Node1 N_LookupStationinDSTable_Node1 -- No --> E_LookupStationinDSTable
File: GCX016.cbl
GIVEN:
A location ID has been extracted from the cargo record
WHEN:
The system searches the DS table using the location ID
THEN:
The system retrieves station information if found or proceeds to secondary lookup
File: GCX016.cbl
GIVEN:
A location ID has been identified from the cargo record
WHEN:
The system performs DS table lookup
THEN:
The system searches the DS table for matching station name records
β Consolidated Acceptance Criteria
- The system checks if a matching DS table entry was found → the system extracts station information if found, otherwise performs KS table lookup
- The system checks the lookup results → the system determines if a valid DS table entry was found and sets appropriate processing flags
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_DSTableEntryFound(["Start Step"])
E_DSTableEntryFound(["End Step"])
N_DSTableEntryFound_Node0{"The system checks if a matching DS
table entry was found"}:::decision N_DSTableEntryFound_Node0_action["The system extracts station
information if found, otherwise
performs KS table lookup"]:::main N_DSTableEntryFound_Node0 -- Yes --> N_DSTableEntryFound_Node0_action N_DSTableEntryFound_Node0_action --> E_DSTableEntryFound S_DSTableEntryFound --> N_DSTableEntryFound_Node0 N_DSTableEntryFound_Node1{"The system checks the lookup
results"}:::decision N_DSTableEntryFound_Node1_action["The system determines if a valid DS
table entry was found and sets
appropriate processing flags"]:::main N_DSTableEntryFound_Node1 -- Yes --> N_DSTableEntryFound_Node1_action N_DSTableEntryFound_Node1_action --> E_DSTableEntryFound N_DSTableEntryFound_Node0 -- No --> N_DSTableEntryFound_Node1 N_DSTableEntryFound_Node1 -- No --> E_DSTableEntryFound
table entry was found"}:::decision N_DSTableEntryFound_Node0_action["The system extracts station
information if found, otherwise
performs KS table lookup"]:::main N_DSTableEntryFound_Node0 -- Yes --> N_DSTableEntryFound_Node0_action N_DSTableEntryFound_Node0_action --> E_DSTableEntryFound S_DSTableEntryFound --> N_DSTableEntryFound_Node0 N_DSTableEntryFound_Node1{"The system checks the lookup
results"}:::decision N_DSTableEntryFound_Node1_action["The system determines if a valid DS
table entry was found and sets
appropriate processing flags"]:::main N_DSTableEntryFound_Node1 -- Yes --> N_DSTableEntryFound_Node1_action N_DSTableEntryFound_Node1_action --> E_DSTableEntryFound N_DSTableEntryFound_Node0 -- No --> N_DSTableEntryFound_Node1 N_DSTableEntryFound_Node1 -- No --> E_DSTableEntryFound
File: GCX016.cbl
GIVEN:
A DS table lookup has been performed using the location ID
WHEN:
The system checks if a matching DS table entry was found
THEN:
The system extracts station information if found, otherwise performs KS table lookup
File: GCX016.cbl
GIVEN:
A DS table lookup has been performed using location ID
WHEN:
The system checks the lookup results
THEN:
- The system determines if a valid ds table entry was found
- Sets appropriate processing flags
β Consolidated Acceptance Criteria
- The system searches the KS table using the location ID → the system retrieves station information if found or logs station not found warning
- The system performs KS table lookup → the system searches the KS table for matching station description records
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LookupStationinKSTable(["Start Step"])
E_LookupStationinKSTable(["End Step"])
N_LookupStationinKSTable_Node0{"The system searches the KS table
using the location ID"}:::decision N_LookupStationinKSTable_Node0_action["The system retrieves station
information if found or logs station
not found warning"]:::main N_LookupStationinKSTable_Node0 -- Yes --> N_LookupStationinKSTable_Node0_action N_LookupStationinKSTable_Node0_action --> E_LookupStationinKSTable S_LookupStationinKSTable --> N_LookupStationinKSTable_Node0 N_LookupStationinKSTable_Node1{"The system performs KS table lookup"}:::decision N_LookupStationinKSTable_Node1_action["The system searches the KS table
for matching station description
records"]:::main N_LookupStationinKSTable_Node1 -- Yes --> N_LookupStationinKSTable_Node1_action N_LookupStationinKSTable_Node1_action --> E_LookupStationinKSTable N_LookupStationinKSTable_Node0 -- No --> N_LookupStationinKSTable_Node1 N_LookupStationinKSTable_Node1 -- No --> E_LookupStationinKSTable
using the location ID"}:::decision N_LookupStationinKSTable_Node0_action["The system retrieves station
information if found or logs station
not found warning"]:::main N_LookupStationinKSTable_Node0 -- Yes --> N_LookupStationinKSTable_Node0_action N_LookupStationinKSTable_Node0_action --> E_LookupStationinKSTable S_LookupStationinKSTable --> N_LookupStationinKSTable_Node0 N_LookupStationinKSTable_Node1{"The system performs KS table lookup"}:::decision N_LookupStationinKSTable_Node1_action["The system searches the KS table
for matching station description
records"]:::main N_LookupStationinKSTable_Node1 -- Yes --> N_LookupStationinKSTable_Node1_action N_LookupStationinKSTable_Node1_action --> E_LookupStationinKSTable N_LookupStationinKSTable_Node0 -- No --> N_LookupStationinKSTable_Node1 N_LookupStationinKSTable_Node1 -- No --> E_LookupStationinKSTable
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
The DS table lookup did not find a matching station entry
WHEN:
The system searches the KS table using the location ID
THEN:
The system retrieves station information if found or logs station not found warning
File: GCX016.cbl
GIVEN:
A location ID has been identified and DS table processing is complete
WHEN:
The system performs KS table lookup
THEN:
The system searches the KS table for matching station description records
β Consolidated Acceptance Criteria
- The system checks if a matching KS table entry was found → the system extracts station information if found, otherwise logs station not found warning
- The system checks the lookup results → the system determines if a valid KS table entry was found and sets appropriate processing flags
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_KSTableEntryFound(["Start Step"])
E_KSTableEntryFound(["End Step"])
N_KSTableEntryFound_Node0{"The system checks if a matching KS
table entry was found"}:::decision N_KSTableEntryFound_Node0_action["The system extracts station
information if found, otherwise logs
station not found warning"]:::main N_KSTableEntryFound_Node0 -- Yes --> N_KSTableEntryFound_Node0_action N_KSTableEntryFound_Node0_action --> E_KSTableEntryFound S_KSTableEntryFound --> N_KSTableEntryFound_Node0 N_KSTableEntryFound_Node1{"The system checks the lookup
results"}:::decision N_KSTableEntryFound_Node1_action["The system determines if a valid KS
table entry was found and sets
appropriate processing flags"]:::main N_KSTableEntryFound_Node1 -- Yes --> N_KSTableEntryFound_Node1_action N_KSTableEntryFound_Node1_action --> E_KSTableEntryFound N_KSTableEntryFound_Node0 -- No --> N_KSTableEntryFound_Node1 N_KSTableEntryFound_Node1 -- No --> E_KSTableEntryFound
table entry was found"}:::decision N_KSTableEntryFound_Node0_action["The system extracts station
information if found, otherwise logs
station not found warning"]:::main N_KSTableEntryFound_Node0 -- Yes --> N_KSTableEntryFound_Node0_action N_KSTableEntryFound_Node0_action --> E_KSTableEntryFound S_KSTableEntryFound --> N_KSTableEntryFound_Node0 N_KSTableEntryFound_Node1{"The system checks the lookup
results"}:::decision N_KSTableEntryFound_Node1_action["The system determines if a valid KS
table entry was found and sets
appropriate processing flags"]:::main N_KSTableEntryFound_Node1 -- Yes --> N_KSTableEntryFound_Node1_action N_KSTableEntryFound_Node1_action --> E_KSTableEntryFound N_KSTableEntryFound_Node0 -- No --> N_KSTableEntryFound_Node1 N_KSTableEntryFound_Node1 -- No --> E_KSTableEntryFound
File: GCX016.cbl
GIVEN:
A KS table lookup has been performed using the location ID
WHEN:
The system checks if a matching KS table entry was found
THEN:
The system extracts station information if found, otherwise logs station not found warning
File: GCX016.cbl
GIVEN:
A KS table lookup has been performed using location ID
WHEN:
The system checks the lookup results
THEN:
- The system determines if a valid ks table entry was found
- Sets appropriate processing flags
β Consolidated Acceptance Criteria
- The system extracts station name and description from the table entry → the station information is available for mapping to the cargo record
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExtractStationNameandDescription(["Start Step"])
E_ExtractStationNameandDescription(["End Step"])
N_ExtractStationNameandDescription_Node0{"The system extracts station name
and description from the table entry"}:::decision N_ExtractStationNameandDescription_Node0_action["The station information is
available for mapping to the cargo
record"]:::main N_ExtractStationNameandDescription_Node0 -- Yes --> N_ExtractStationNameandDescription_Node0_action N_ExtractStationNameandDescription_Node0_action --> E_ExtractStationNameandDescription S_ExtractStationNameandDescription --> N_ExtractStationNameandDescription_Node0 N_ExtractStationNameandDescription_Node0 -- No --> E_ExtractStationNameandDescription
and description from the table entry"}:::decision N_ExtractStationNameandDescription_Node0_action["The station information is
available for mapping to the cargo
record"]:::main N_ExtractStationNameandDescription_Node0 -- Yes --> N_ExtractStationNameandDescription_Node0_action N_ExtractStationNameandDescription_Node0_action --> E_ExtractStationNameandDescription S_ExtractStationNameandDescription --> N_ExtractStationNameandDescription_Node0 N_ExtractStationNameandDescription_Node0 -- No --> E_ExtractStationNameandDescription
File: GCX016.cbl
GIVEN:
A station entry has been found in either DS or KS table
WHEN:
- The system extracts station name
- Description from the table entry
THEN:
The station information is available for mapping to the cargo record
β Consolidated Acceptance Criteria
- The system maps the location ID to the station information → the location ID is associated with the corresponding station details
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MapLocationIDtoStationInformation(["Start Step"])
E_MapLocationIDtoStationInformation(["End Step"])
N_MapLocationIDtoStationInformation_Node0{"The system maps the location ID to
the station information"}:::decision N_MapLocationIDtoStationInformation_Node0_action["The location ID is associated with
the corresponding station details"]:::main N_MapLocationIDtoStationInformation_Node0 -- Yes --> N_MapLocationIDtoStationInformation_Node0_action N_MapLocationIDtoStationInformation_Node0_action --> E_MapLocationIDtoStationInformation S_MapLocationIDtoStationInformation --> N_MapLocationIDtoStationInformation_Node0 N_MapLocationIDtoStationInformation_Node0 -- No --> E_MapLocationIDtoStationInformation
the station information"}:::decision N_MapLocationIDtoStationInformation_Node0_action["The location ID is associated with
the corresponding station details"]:::main N_MapLocationIDtoStationInformation_Node0 -- Yes --> N_MapLocationIDtoStationInformation_Node0_action N_MapLocationIDtoStationInformation_Node0_action --> E_MapLocationIDtoStationInformation S_MapLocationIDtoStationInformation --> N_MapLocationIDtoStationInformation_Node0 N_MapLocationIDtoStationInformation_Node0 -- No --> E_MapLocationIDtoStationInformation
File: GCX016.cbl
GIVEN:
Station name and description have been extracted from the table lookup
WHEN:
The system maps the location ID to the station information
THEN:
The location ID is associated with the corresponding station details
β Consolidated Acceptance Criteria
- The system updates the cargo record with station details → the cargo record contains the station name and description for the location ID
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UpdateCargoRecordwithStationDetails(["Start Step"])
E_UpdateCargoRecordwithStationDetails(["End Step"])
N_UpdateCargoRecordwithStationDetails_Node0{"The system updates the cargo record
with station details"}:::decision N_UpdateCargoRecordwithStationDetails_Node0_action["The cargo record contains the
station name and description for the
location ID"]:::main N_UpdateCargoRecordwithStationDetails_Node0 -- Yes --> N_UpdateCargoRecordwithStationDetails_Node0_action N_UpdateCargoRecordwithStationDetails_Node0_action --> E_UpdateCargoRecordwithStationDetails S_UpdateCargoRecordwithStationDetails --> N_UpdateCargoRecordwithStationDetails_Node0 N_UpdateCargoRecordwithStationDetails_Node0 -- No --> E_UpdateCargoRecordwithStationDetails
with station details"}:::decision N_UpdateCargoRecordwithStationDetails_Node0_action["The cargo record contains the
station name and description for the
location ID"]:::main N_UpdateCargoRecordwithStationDetails_Node0 -- Yes --> N_UpdateCargoRecordwithStationDetails_Node0_action N_UpdateCargoRecordwithStationDetails_Node0_action --> E_UpdateCargoRecordwithStationDetails S_UpdateCargoRecordwithStationDetails --> N_UpdateCargoRecordwithStationDetails_Node0 N_UpdateCargoRecordwithStationDetails_Node0 -- No --> E_UpdateCargoRecordwithStationDetails
File: GCX016.cbl
GIVEN:
Location ID has been mapped to station information
WHEN:
The system updates the cargo record with station details
THEN:
- The cargo record contains the station name
- Description for the location id
β Consolidated Acceptance Criteria
- The system checks if KCSM station lookup is required → the system performs KCSM station lookup if required, otherwise completes station lookup
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_KCSMStationRequired(["Start Step"])
E_KCSMStationRequired(["End Step"])
N_KCSMStationRequired_Node0{"The system checks if KCSM station
lookup is required"}:::decision N_KCSMStationRequired_Node0_action["The system performs KCSM station
lookup if required, otherwise
completes station lookup"]:::main N_KCSMStationRequired_Node0 -- Yes --> N_KCSMStationRequired_Node0_action N_KCSMStationRequired_Node0_action --> E_KCSMStationRequired S_KCSMStationRequired --> N_KCSMStationRequired_Node0 N_KCSMStationRequired_Node0 -- No --> E_KCSMStationRequired
lookup is required"}:::decision N_KCSMStationRequired_Node0_action["The system performs KCSM station
lookup if required, otherwise
completes station lookup"]:::main N_KCSMStationRequired_Node0 -- Yes --> N_KCSMStationRequired_Node0_action N_KCSMStationRequired_Node0_action --> E_KCSMStationRequired S_KCSMStationRequired --> N_KCSMStationRequired_Node0 N_KCSMStationRequired_Node0 -- No --> E_KCSMStationRequired
File: GCX016.cbl
GIVEN:
The cargo record has been updated with station details
WHEN:
The system checks if KCSM station lookup is required
THEN:
The system performs KCSM station lookup if required, otherwise completes station lookup
β Consolidated Acceptance Criteria
- The system performs KCSM station lookup → the system retrieves KCSM-specific station information for mapping
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_PerformKCSMStationLookup(["Start Step"])
E_PerformKCSMStationLookup(["End Step"])
N_PerformKCSMStationLookup_Node0{"The system performs KCSM station
lookup"}:::decision N_PerformKCSMStationLookup_Node0_action["The system retrieves KCSM-specific
station information for mapping"]:::main N_PerformKCSMStationLookup_Node0 -- Yes --> N_PerformKCSMStationLookup_Node0_action N_PerformKCSMStationLookup_Node0_action --> E_PerformKCSMStationLookup S_PerformKCSMStationLookup --> N_PerformKCSMStationLookup_Node0 N_PerformKCSMStationLookup_Node0 -- No --> E_PerformKCSMStationLookup
lookup"}:::decision N_PerformKCSMStationLookup_Node0_action["The system retrieves KCSM-specific
station information for mapping"]:::main N_PerformKCSMStationLookup_Node0 -- Yes --> N_PerformKCSMStationLookup_Node0_action N_PerformKCSMStationLookup_Node0_action --> E_PerformKCSMStationLookup S_PerformKCSMStationLookup --> N_PerformKCSMStationLookup_Node0 N_PerformKCSMStationLookup_Node0 -- No --> E_PerformKCSMStationLookup
File: GCX016.cbl
GIVEN:
KCSM station lookup is required for the cargo record
WHEN:
The system performs KCSM station lookup
THEN:
The system retrieves KCSM-specific station information for mapping
β Consolidated Acceptance Criteria
- The system applies KCSM station mapping → the cargo record is updated with KCSM-specific station information
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ApplyKCSMStationMapping(["Start Step"])
E_ApplyKCSMStationMapping(["End Step"])
N_ApplyKCSMStationMapping_Node0{"The system applies KCSM station
mapping"}:::decision N_ApplyKCSMStationMapping_Node0_action["The cargo record is updated with
KCSM-specific station information"]:::main N_ApplyKCSMStationMapping_Node0 -- Yes --> N_ApplyKCSMStationMapping_Node0_action N_ApplyKCSMStationMapping_Node0_action --> E_ApplyKCSMStationMapping S_ApplyKCSMStationMapping --> N_ApplyKCSMStationMapping_Node0 N_ApplyKCSMStationMapping_Node0 -- No --> E_ApplyKCSMStationMapping
mapping"}:::decision N_ApplyKCSMStationMapping_Node0_action["The cargo record is updated with
KCSM-specific station information"]:::main N_ApplyKCSMStationMapping_Node0 -- Yes --> N_ApplyKCSMStationMapping_Node0_action N_ApplyKCSMStationMapping_Node0_action --> E_ApplyKCSMStationMapping S_ApplyKCSMStationMapping --> N_ApplyKCSMStationMapping_Node0 N_ApplyKCSMStationMapping_Node0 -- No --> E_ApplyKCSMStationMapping
File: GCX016.cbl
GIVEN:
KCSM station lookup has been performed successfully
WHEN:
The system applies KCSM station mapping
THEN:
The cargo record is updated with KCSM-specific station information
β Consolidated Acceptance Criteria
- The system logs a station not found warning → a warning is recorded indicating the location ID could not be resolved to station information
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogStationNotFoundWarning(["Start Step"])
E_LogStationNotFoundWarning(["End Step"])
N_LogStationNotFoundWarning_Node0{"The system logs a station not found
warning"}:::decision N_LogStationNotFoundWarning_Node0_action["A warning is recorded indicating
the location ID could not be
resolved to station information"]:::main N_LogStationNotFoundWarning_Node0 -- Yes --> N_LogStationNotFoundWarning_Node0_action N_LogStationNotFoundWarning_Node0_action --> E_LogStationNotFoundWarning S_LogStationNotFoundWarning --> N_LogStationNotFoundWarning_Node0 N_LogStationNotFoundWarning_Node0 -- No --> E_LogStationNotFoundWarning
warning"}:::decision N_LogStationNotFoundWarning_Node0_action["A warning is recorded indicating
the location ID could not be
resolved to station information"]:::main N_LogStationNotFoundWarning_Node0 -- Yes --> N_LogStationNotFoundWarning_Node0_action N_LogStationNotFoundWarning_Node0_action --> E_LogStationNotFoundWarning S_LogStationNotFoundWarning --> N_LogStationNotFoundWarning_Node0 N_LogStationNotFoundWarning_Node0 -- No --> E_LogStationNotFoundWarning
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
Both DS and KS table lookups have failed to find a matching station entry
WHEN:
The system logs a station not found warning
THEN:
A warning is recorded indicating the location ID could not be resolved to station information
β Consolidated Acceptance Criteria
- The system uses default/unknown station information → the cargo record is assigned default station details to complete processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UseDefaultUnknownStation(["Start Step"])
E_UseDefaultUnknownStation(["End Step"])
N_UseDefaultUnknownStation_Node0{"The system uses defaultunknown
station information"}:::decision N_UseDefaultUnknownStation_Node0_action["The cargo record is assigned
default station details to complete
processing"]:::main N_UseDefaultUnknownStation_Node0 -- Yes --> N_UseDefaultUnknownStation_Node0_action N_UseDefaultUnknownStation_Node0_action --> E_UseDefaultUnknownStation S_UseDefaultUnknownStation --> N_UseDefaultUnknownStation_Node0 N_UseDefaultUnknownStation_Node0 -- No --> E_UseDefaultUnknownStation
station information"}:::decision N_UseDefaultUnknownStation_Node0_action["The cargo record is assigned
default station details to complete
processing"]:::main N_UseDefaultUnknownStation_Node0 -- Yes --> N_UseDefaultUnknownStation_Node0_action N_UseDefaultUnknownStation_Node0_action --> E_UseDefaultUnknownStation S_UseDefaultUnknownStation --> N_UseDefaultUnknownStation_Node0 N_UseDefaultUnknownStation_Node0 -- No --> E_UseDefaultUnknownStation
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
Station lookup has failed or location ID is not available
WHEN:
The system uses default/unknown station information
THEN:
The cargo record is assigned default station details to complete processing
β Consolidated Acceptance Criteria
- If the station type → the system routes to either DS table for standard stations or KS table for KCSM stations
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_StationTypeCheck(["Start Step"])
E_StationTypeCheck(["End Step"])
N_StationTypeCheck_Node0{"The system evaluates the station
type"}:::decision N_StationTypeCheck_Node0_action["The system routes to either DS
table for standard stations or KS
table for KCSM stations"]:::main N_StationTypeCheck_Node0 -- Yes --> N_StationTypeCheck_Node0_action N_StationTypeCheck_Node0_action --> E_StationTypeCheck S_StationTypeCheck --> N_StationTypeCheck_Node0 N_StationTypeCheck_Node0 -- No --> E_StationTypeCheck
type"}:::decision N_StationTypeCheck_Node0_action["The system routes to either DS
table for standard stations or KS
table for KCSM stations"]:::main N_StationTypeCheck_Node0 -- Yes --> N_StationTypeCheck_Node0_action N_StationTypeCheck_Node0_action --> E_StationTypeCheck S_StationTypeCheck --> N_StationTypeCheck_Node0 N_StationTypeCheck_Node0 -- No --> E_StationTypeCheck
File: GCX016.cbl
GIVEN:
A station lookup request is received
WHEN:
The system evaluates the station type
THEN:
The system routes to either DS table for standard stations or KS table for KCSM stations
β Consolidated Acceptance Criteria
- The system accesses the DS table → station code, name, and description are retrieved from DS table records
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AccessDSTableforStandardStations(["Start Step"])
E_AccessDSTableforStandardStations(["End Step"])
N_AccessDSTableforStandardStations_Node0{"The system accesses the DS table"}:::decision
N_AccessDSTableforStandardStations_Node0_action["Station code, name, and description
are retrieved from DS table records"]:::main N_AccessDSTableforStandardStations_Node0 -- Yes --> N_AccessDSTableforStandardStations_Node0_action N_AccessDSTableforStandardStations_Node0_action --> E_AccessDSTableforStandardStations S_AccessDSTableforStandardStations --> N_AccessDSTableforStandardStations_Node0 N_AccessDSTableforStandardStations_Node0 -- No --> E_AccessDSTableforStandardStations
are retrieved from DS table records"]:::main N_AccessDSTableforStandardStations_Node0 -- Yes --> N_AccessDSTableforStandardStations_Node0_action N_AccessDSTableforStandardStations_Node0_action --> E_AccessDSTableforStandardStations S_AccessDSTableforStandardStations --> N_AccessDSTableforStandardStations_Node0 N_AccessDSTableforStandardStations_Node0 -- No --> E_AccessDSTableforStandardStations
File: GCX016.cbl
GIVEN:
A standard station type is identified
WHEN:
The system accesses the DS table
THEN:
Station code, name, and description are retrieved from DS table records
β Consolidated Acceptance Criteria
- The system accesses the KS table → station code, name, and description are retrieved from KS table records
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AccessKSTableforKCSMStations(["Start Step"])
E_AccessKSTableforKCSMStations(["End Step"])
N_AccessKSTableforKCSMStations_Node0{"The system accesses the KS table"}:::decision
N_AccessKSTableforKCSMStations_Node0_action["Station code, name, and description
are retrieved from KS table records"]:::main N_AccessKSTableforKCSMStations_Node0 -- Yes --> N_AccessKSTableforKCSMStations_Node0_action N_AccessKSTableforKCSMStations_Node0_action --> E_AccessKSTableforKCSMStations S_AccessKSTableforKCSMStations --> N_AccessKSTableforKCSMStations_Node0 N_AccessKSTableforKCSMStations_Node0 -- No --> E_AccessKSTableforKCSMStations
are retrieved from KS table records"]:::main N_AccessKSTableforKCSMStations_Node0 -- Yes --> N_AccessKSTableforKCSMStations_Node0_action N_AccessKSTableforKCSMStations_Node0_action --> E_AccessKSTableforKCSMStations S_AccessKSTableforKCSMStations --> N_AccessKSTableforKCSMStations_Node0 N_AccessKSTableforKCSMStations_Node0 -- No --> E_AccessKSTableforKCSMStations
File: GCX016.cbl
GIVEN:
A KCSM station type is identified
WHEN:
The system accesses the KS table
THEN:
Station code, name, and description are retrieved from KS table records
β Consolidated Acceptance Criteria
- If if KCSM-specific mapping is required → the system either applies KCSM mapping rules or proceeds to validation
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_KCSMSpecificMappingRequired(["Start Step"])
E_KCSMSpecificMappingRequired(["End Step"])
N_KCSMSpecificMappingRequired_Node0{"The system evaluates if
KCSM-specific mapping is required"}:::decision N_KCSMSpecificMappingRequired_Node0_action["The system either applies KCSM
mapping rules or proceeds to
validation"]:::main N_KCSMSpecificMappingRequired_Node0 -- Yes --> N_KCSMSpecificMappingRequired_Node0_action N_KCSMSpecificMappingRequired_Node0_action --> E_KCSMSpecificMappingRequired S_KCSMSpecificMappingRequired --> N_KCSMSpecificMappingRequired_Node0 N_KCSMSpecificMappingRequired_Node0 -- No --> E_KCSMSpecificMappingRequired
KCSM-specific mapping is required"}:::decision N_KCSMSpecificMappingRequired_Node0_action["The system either applies KCSM
mapping rules or proceeds to
validation"]:::main N_KCSMSpecificMappingRequired_Node0 -- Yes --> N_KCSMSpecificMappingRequired_Node0_action N_KCSMSpecificMappingRequired_Node0_action --> E_KCSMSpecificMappingRequired S_KCSMSpecificMappingRequired --> N_KCSMSpecificMappingRequired_Node0 N_KCSMSpecificMappingRequired_Node0 -- No --> E_KCSMSpecificMappingRequired
File: GCX016.cbl
GIVEN:
Station information has been retrieved
WHEN:
The system evaluates if KCSM-specific mapping is required
THEN:
The system either applies KCSM mapping rules or proceeds to validation
β Consolidated Acceptance Criteria
- The system applies KCSM station mapping rules → station information is transformed according to KCSM business requirements
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ApplyKCSMStationMappingRules(["Start Step"])
E_ApplyKCSMStationMappingRules(["End Step"])
N_ApplyKCSMStationMappingRules_Node0{"The system applies KCSM station
mapping rules"}:::decision N_ApplyKCSMStationMappingRules_Node0_action["Station information is transformed
according to KCSM business
requirements"]:::main N_ApplyKCSMStationMappingRules_Node0 -- Yes --> N_ApplyKCSMStationMappingRules_Node0_action N_ApplyKCSMStationMappingRules_Node0_action --> E_ApplyKCSMStationMappingRules S_ApplyKCSMStationMappingRules --> N_ApplyKCSMStationMappingRules_Node0 N_ApplyKCSMStationMappingRules_Node0 -- No --> E_ApplyKCSMStationMappingRules
mapping rules"}:::decision N_ApplyKCSMStationMappingRules_Node0_action["Station information is transformed
according to KCSM business
requirements"]:::main N_ApplyKCSMStationMappingRules_Node0 -- Yes --> N_ApplyKCSMStationMappingRules_Node0_action N_ApplyKCSMStationMappingRules_Node0_action --> E_ApplyKCSMStationMappingRules S_ApplyKCSMStationMappingRules --> N_ApplyKCSMStationMappingRules_Node0 N_ApplyKCSMStationMappingRules_Node0 -- No --> E_ApplyKCSMStationMappingRules
File: GCX016.cbl
GIVEN:
KCSM-specific mapping is required
WHEN:
The system applies KCSM station mapping rules
THEN:
Station information is transformed according to KCSM business requirements
β Consolidated Acceptance Criteria
- The system formats station information for KCSM → station data is presented in KCSM-compliant format
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_FormatStationInformationforKCSM(["Start Step"])
E_FormatStationInformationforKCSM(["End Step"])
N_FormatStationInformationforKCSM_Node0{"The system formats station
information for KCSM"}:::decision N_FormatStationInformationforKCSM_Node0_action["Station data is presented in
KCSM-compliant format"]:::main N_FormatStationInformationforKCSM_Node0 -- Yes --> N_FormatStationInformationforKCSM_Node0_action N_FormatStationInformationforKCSM_Node0_action --> E_FormatStationInformationforKCSM S_FormatStationInformationforKCSM --> N_FormatStationInformationforKCSM_Node0 N_FormatStationInformationforKCSM_Node0 -- No --> E_FormatStationInformationforKCSM
information for KCSM"}:::decision N_FormatStationInformationforKCSM_Node0_action["Station data is presented in
KCSM-compliant format"]:::main N_FormatStationInformationforKCSM_Node0 -- Yes --> N_FormatStationInformationforKCSM_Node0_action N_FormatStationInformationforKCSM_Node0_action --> E_FormatStationInformationforKCSM S_FormatStationInformationforKCSM --> N_FormatStationInformationforKCSM_Node0 N_FormatStationInformationforKCSM_Node0 -- No --> E_FormatStationInformationforKCSM
File: GCX016.cbl
GIVEN:
KCSM mapping rules have been applied
WHEN:
The system formats station information for KCSM
THEN:
Station data is presented in KCSM-compliant format
β Consolidated Acceptance Criteria
- The system validates station data → station data is confirmed as complete and accurate or flagged as invalid
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ValidateStationData(["Start Step"])
E_ValidateStationData(["End Step"])
N_ValidateStationData_Node0{"The system validates station data"}:::decision
N_ValidateStationData_Node0_action["Station data is confirmed as
complete and accurate or flagged as
invalid"]:::main N_ValidateStationData_Node0 -- Yes --> N_ValidateStationData_Node0_action N_ValidateStationData_Node0_action --> E_ValidateStationData S_ValidateStationData --> N_ValidateStationData_Node0 N_ValidateStationData_Node0 -- No --> E_ValidateStationData
complete and accurate or flagged as
invalid"]:::main N_ValidateStationData_Node0 -- Yes --> N_ValidateStationData_Node0_action N_ValidateStationData_Node0_action --> E_ValidateStationData S_ValidateStationData --> N_ValidateStationData_Node0 N_ValidateStationData_Node0 -- No --> E_ValidateStationData
File: GCX016.cbl
GIVEN:
Station information has been retrieved and optionally formatted
WHEN:
The system validates station data
THEN:
- Station data is confirmed as complete
- Accurate or flagged as invalid
β Consolidated Acceptance Criteria
- The system checks if station was found → the system either returns station information or handles station not found condition
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_StationFound(["Start Step"])
E_StationFound(["End Step"])
N_StationFound_Node0{"The system checks if station was
found"}:::decision N_StationFound_Node0_action["The system either returns station
information or handles station not
found condition"]:::main N_StationFound_Node0 -- Yes --> N_StationFound_Node0_action N_StationFound_Node0_action --> E_StationFound S_StationFound --> N_StationFound_Node0 N_StationFound_Node0 -- No --> E_StationFound
found"}:::decision N_StationFound_Node0_action["The system either returns station
information or handles station not
found condition"]:::main N_StationFound_Node0 -- Yes --> N_StationFound_Node0_action N_StationFound_Node0_action --> E_StationFound S_StationFound --> N_StationFound_Node0 N_StationFound_Node0 -- No --> E_StationFound
File: GCX016.cbl
GIVEN:
Station data validation has been completed
WHEN:
The system checks if station was found
THEN:
The system either returns station information or handles station not found condition
β Consolidated Acceptance Criteria
- The system logs station not found error → error is recorded with station lookup details for troubleshooting
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogStationNotFoundError(["Start Step"])
E_LogStationNotFoundError(["End Step"])
N_LogStationNotFoundError_Node0{"The system logs station not found
error"}:::decision N_LogStationNotFoundError_Node0_action["Error is recorded with station
lookup details for troubleshooting"]:::exclusion N_LogStationNotFoundError_Node0 -- Yes -->|Alternative| N_LogStationNotFoundError_Node0_action N_LogStationNotFoundError_Node0_action --> E_LogStationNotFoundError S_LogStationNotFoundError --> N_LogStationNotFoundError_Node0 N_LogStationNotFoundError_Node0 -- No --> E_LogStationNotFoundError
error"}:::decision N_LogStationNotFoundError_Node0_action["Error is recorded with station
lookup details for troubleshooting"]:::exclusion N_LogStationNotFoundError_Node0 -- Yes -->|Alternative| N_LogStationNotFoundError_Node0_action N_LogStationNotFoundError_Node0_action --> E_LogStationNotFoundError S_LogStationNotFoundError --> N_LogStationNotFoundError_Node0 N_LogStationNotFoundError_Node0 -- No --> E_LogStationNotFoundError
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
Station lookup has failed to find valid station
WHEN:
The system logs station not found error
THEN:
Error is recorded with station lookup details for troubleshooting
β Consolidated Acceptance Criteria
- The system uses default station information → default station values are provided to ensure processing continuity
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UseDefaultStationInformation(["Start Step"])
E_UseDefaultStationInformation(["End Step"])
N_UseDefaultStationInformation_Node0{"The system uses default station
information"}:::decision N_UseDefaultStationInformation_Node0_action["Default station values are provided
to ensure processing continuity"]:::main N_UseDefaultStationInformation_Node0 -- Yes --> N_UseDefaultStationInformation_Node0_action N_UseDefaultStationInformation_Node0_action --> E_UseDefaultStationInformation S_UseDefaultStationInformation --> N_UseDefaultStationInformation_Node0 N_UseDefaultStationInformation_Node0 -- No --> E_UseDefaultStationInformation
information"}:::decision N_UseDefaultStationInformation_Node0_action["Default station values are provided
to ensure processing continuity"]:::main N_UseDefaultStationInformation_Node0 -- Yes --> N_UseDefaultStationInformation_Node0_action N_UseDefaultStationInformation_Node0_action --> E_UseDefaultStationInformation S_UseDefaultStationInformation --> N_UseDefaultStationInformation_Node0 N_UseDefaultStationInformation_Node0 -- No --> E_UseDefaultStationInformation
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
Station not found error has been logged
WHEN:
The system uses default station information
THEN:
Default station values are provided to ensure processing continuity
β Consolidated Acceptance Criteria
- The system processes the message formatting request → the system creates a standard disposition message format with disposition code and cargo details
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_FormatStandardDispositionMessage(["Start Step"])
E_FormatStandardDispositionMessage(["End Step"])
N_FormatStandardDispositionMessage_Node0{"The system processes the message
formatting request"}:::decision N_FormatStandardDispositionMessage_Node0_action["The system creates a standard
disposition message format with
disposition code and cargo details"]:::main N_FormatStandardDispositionMessage_Node0 -- Yes --> N_FormatStandardDispositionMessage_Node0_action N_FormatStandardDispositionMessage_Node0_action --> E_FormatStandardDispositionMessage S_FormatStandardDispositionMessage --> N_FormatStandardDispositionMessage_Node0 N_FormatStandardDispositionMessage_Node0 -- No --> E_FormatStandardDispositionMessage
formatting request"}:::decision N_FormatStandardDispositionMessage_Node0_action["The system creates a standard
disposition message format with
disposition code and cargo details"]:::main N_FormatStandardDispositionMessage_Node0 -- Yes --> N_FormatStandardDispositionMessage_Node0_action N_FormatStandardDispositionMessage_Node0_action --> E_FormatStandardDispositionMessage S_FormatStandardDispositionMessage --> N_FormatStandardDispositionMessage_Node0 N_FormatStandardDispositionMessage_Node0 -- No --> E_FormatStandardDispositionMessage
File: GCX016.cbl
GIVEN:
A disposition code message needs to be formatted AND message type is standard disposition message
WHEN:
The system processes the message formatting request
THEN:
- The system creates a standard disposition message format with disposition code
- Cargo details
β Consolidated Acceptance Criteria
- The system processes the message formatting request → the system creates a broker bond message format with bond-specific information
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_FormatBrokerBondMessage(["Start Step"])
E_FormatBrokerBondMessage(["End Step"])
N_FormatBrokerBondMessage_Node0{"The system processes the message
formatting request"}:::decision N_FormatBrokerBondMessage_Node0_action["The system creates a broker bond
message format with bond-specific
information"]:::main N_FormatBrokerBondMessage_Node0 -- Yes --> N_FormatBrokerBondMessage_Node0_action N_FormatBrokerBondMessage_Node0_action --> E_FormatBrokerBondMessage S_FormatBrokerBondMessage --> N_FormatBrokerBondMessage_Node0 N_FormatBrokerBondMessage_Node0 -- No --> E_FormatBrokerBondMessage
formatting request"}:::decision N_FormatBrokerBondMessage_Node0_action["The system creates a broker bond
message format with bond-specific
information"]:::main N_FormatBrokerBondMessage_Node0 -- Yes --> N_FormatBrokerBondMessage_Node0_action N_FormatBrokerBondMessage_Node0_action --> E_FormatBrokerBondMessage S_FormatBrokerBondMessage --> N_FormatBrokerBondMessage_Node0 N_FormatBrokerBondMessage_Node0 -- No --> E_FormatBrokerBondMessage
File: GCX016.cbl
GIVEN:
A disposition code message needs to be formatted AND message type is broker bond message
WHEN:
The system processes the message formatting request
THEN:
The system creates a broker bond message format with bond-specific information
β Consolidated Acceptance Criteria
- The system adds disposition code details to the message → the message includes the disposition code value and related processing information
- A disposition code was being processed for the missing cargo → the system includes the disposition code in the error message to identify what customs action was attempted
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AddDispositionCodeInformation(["Start Step"])
E_AddDispositionCodeInformation(["End Step"])
N_AddDispositionCodeInformation_Node0{"The system adds disposition code
details to the message"}:::decision N_AddDispositionCodeInformation_Node0_action["The message includes the
disposition code value and related
processing information"]:::main N_AddDispositionCodeInformation_Node0 -- Yes --> N_AddDispositionCodeInformation_Node0_action N_AddDispositionCodeInformation_Node0_action --> E_AddDispositionCodeInformation S_AddDispositionCodeInformation --> N_AddDispositionCodeInformation_Node0 N_AddDispositionCodeInformation_Node1{"A disposition code was being
processed for the missing cargo"}:::decision N_AddDispositionCodeInformation_Node1_action["The system includes the disposition
code in the error message to
identify what customs action was
attempted"]:::main N_AddDispositionCodeInformation_Node1 -- Yes --> N_AddDispositionCodeInformation_Node1_action N_AddDispositionCodeInformation_Node1_action --> E_AddDispositionCodeInformation N_AddDispositionCodeInformation_Node0 -- No --> N_AddDispositionCodeInformation_Node1 N_AddDispositionCodeInformation_Node1 -- No --> E_AddDispositionCodeInformation
details to the message"}:::decision N_AddDispositionCodeInformation_Node0_action["The message includes the
disposition code value and related
processing information"]:::main N_AddDispositionCodeInformation_Node0 -- Yes --> N_AddDispositionCodeInformation_Node0_action N_AddDispositionCodeInformation_Node0_action --> E_AddDispositionCodeInformation S_AddDispositionCodeInformation --> N_AddDispositionCodeInformation_Node0 N_AddDispositionCodeInformation_Node1{"A disposition code was being
processed for the missing cargo"}:::decision N_AddDispositionCodeInformation_Node1_action["The system includes the disposition
code in the error message to
identify what customs action was
attempted"]:::main N_AddDispositionCodeInformation_Node1 -- Yes --> N_AddDispositionCodeInformation_Node1_action N_AddDispositionCodeInformation_Node1_action --> E_AddDispositionCodeInformation N_AddDispositionCodeInformation_Node0 -- No --> N_AddDispositionCodeInformation_Node1 N_AddDispositionCodeInformation_Node1 -- No --> E_AddDispositionCodeInformation
File: GCX016.cbl
GIVEN:
A message is being formatted with disposition code information
WHEN:
The system adds disposition code details to the message
THEN:
- The message includes the disposition code value
- Related processing information
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
A CPRS cargo not found error is being formatted
WHEN:
A disposition code was being processed for the missing cargo
THEN:
The system includes the disposition code in the error message to identify what customs action was attempted
β Consolidated Acceptance Criteria
- The system adds disposition description to the message → the message includes the descriptive text explaining the disposition code meaning
- Disposition code has an associated description → add disposition code description to the formatted output for clarity
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AddDispositionDescription(["Start Step"])
E_AddDispositionDescription(["End Step"])
N_AddDispositionDescription_Node0{"The system adds disposition
description to the message"}:::decision N_AddDispositionDescription_Node0_action["The message includes the
descriptive text explaining the
disposition code meaning"]:::main N_AddDispositionDescription_Node0 -- Yes --> N_AddDispositionDescription_Node0_action N_AddDispositionDescription_Node0_action --> E_AddDispositionDescription S_AddDispositionDescription --> N_AddDispositionDescription_Node0 N_AddDispositionDescription_Node1{"Disposition code has an associated
description"}:::decision N_AddDispositionDescription_Node1_action["Add disposition code description to
the formatted output for clarity"]:::main N_AddDispositionDescription_Node1 -- Yes --> N_AddDispositionDescription_Node1_action N_AddDispositionDescription_Node1_action --> E_AddDispositionDescription N_AddDispositionDescription_Node0 -- No --> N_AddDispositionDescription_Node1 N_AddDispositionDescription_Node1 -- No --> E_AddDispositionDescription
description to the message"}:::decision N_AddDispositionDescription_Node0_action["The message includes the
descriptive text explaining the
disposition code meaning"]:::main N_AddDispositionDescription_Node0 -- Yes --> N_AddDispositionDescription_Node0_action N_AddDispositionDescription_Node0_action --> E_AddDispositionDescription S_AddDispositionDescription --> N_AddDispositionDescription_Node0 N_AddDispositionDescription_Node1{"Disposition code has an associated
description"}:::decision N_AddDispositionDescription_Node1_action["Add disposition code description to
the formatted output for clarity"]:::main N_AddDispositionDescription_Node1 -- Yes --> N_AddDispositionDescription_Node1_action N_AddDispositionDescription_Node1_action --> E_AddDispositionDescription N_AddDispositionDescription_Node0 -- No --> N_AddDispositionDescription_Node1 N_AddDispositionDescription_Node1 -- No --> E_AddDispositionDescription
File: GCX016.cbl
GIVEN:
A message contains disposition code information
WHEN:
The system adds disposition description to the message
THEN:
The message includes the descriptive text explaining the disposition code meaning
File: GCX016.cbl
GIVEN:
A formatted disposition code
WHEN:
Disposition code has an associated description
THEN:
Add disposition code description to the formatted output for clarity
β Consolidated Acceptance Criteria
- If the quantity impact of the disposition code → the system determines whether quantities will be added, subtracted, or remain unchanged
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_DetermineQuantityAction(["Start Step"])
E_DetermineQuantityAction(["End Step"])
N_DetermineQuantityAction_Node0{"The system evaluates the quantity
impact of the disposition code"}:::decision N_DetermineQuantityAction_Node0_action["The system determines whether
quantities will be added,
subtracted, or remain unchanged"]:::main N_DetermineQuantityAction_Node0 -- Yes --> N_DetermineQuantityAction_Node0_action N_DetermineQuantityAction_Node0_action --> E_DetermineQuantityAction S_DetermineQuantityAction --> N_DetermineQuantityAction_Node0 N_DetermineQuantityAction_Node0 -- No --> E_DetermineQuantityAction
impact of the disposition code"}:::decision N_DetermineQuantityAction_Node0_action["The system determines whether
quantities will be added,
subtracted, or remain unchanged"]:::main N_DetermineQuantityAction_Node0 -- Yes --> N_DetermineQuantityAction_Node0_action N_DetermineQuantityAction_Node0_action --> E_DetermineQuantityAction S_DetermineQuantityAction --> N_DetermineQuantityAction_Node0 N_DetermineQuantityAction_Node0 -- No --> E_DetermineQuantityAction
File: GCX016.cbl
GIVEN:
A disposition code is being processed that affects cargo quantities
WHEN:
The system evaluates the quantity impact of the disposition code
THEN:
The system determines whether quantities will be added, subtracted, or remain unchanged
β Consolidated Acceptance Criteria
- The system formats the quantity action message → the message indicates that the specified quantity will be added to the cargo release amount
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_FormatAddQuantityMessage(["Start Step"])
E_FormatAddQuantityMessage(["End Step"])
N_FormatAddQuantityMessage_Node0{"The system formats the quantity
action message"}:::decision N_FormatAddQuantityMessage_Node0_action["The message indicates that the
specified quantity will be added to
the cargo release amount"]:::main N_FormatAddQuantityMessage_Node0 -- Yes --> N_FormatAddQuantityMessage_Node0_action N_FormatAddQuantityMessage_Node0_action --> E_FormatAddQuantityMessage S_FormatAddQuantityMessage --> N_FormatAddQuantityMessage_Node0 N_FormatAddQuantityMessage_Node0 -- No --> E_FormatAddQuantityMessage
action message"}:::decision N_FormatAddQuantityMessage_Node0_action["The message indicates that the
specified quantity will be added to
the cargo release amount"]:::main N_FormatAddQuantityMessage_Node0 -- Yes --> N_FormatAddQuantityMessage_Node0_action N_FormatAddQuantityMessage_Node0_action --> E_FormatAddQuantityMessage S_FormatAddQuantityMessage --> N_FormatAddQuantityMessage_Node0 N_FormatAddQuantityMessage_Node0 -- No --> E_FormatAddQuantityMessage
File: GCX016.cbl
GIVEN:
Quantity action type is determined to be add quantity
WHEN:
The system formats the quantity action message
THEN:
The message indicates that the specified quantity will be added to the cargo release amount
β Consolidated Acceptance Criteria
- The system formats the quantity action message → the message indicates that the specified quantity will be subtracted from the cargo release amount
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_FormatSubtractQuantityMessage(["Start Step"])
E_FormatSubtractQuantityMessage(["End Step"])
N_FormatSubtractQuantityMessage_Node0{"The system formats the quantity
action message"}:::decision N_FormatSubtractQuantityMessage_Node0_action["The message indicates that the
specified quantity will be
subtracted from the cargo release
amount"]:::main N_FormatSubtractQuantityMessage_Node0 -- Yes --> N_FormatSubtractQuantityMessage_Node0_action N_FormatSubtractQuantityMessage_Node0_action --> E_FormatSubtractQuantityMessage S_FormatSubtractQuantityMessage --> N_FormatSubtractQuantityMessage_Node0 N_FormatSubtractQuantityMessage_Node0 -- No --> E_FormatSubtractQuantityMessage
action message"}:::decision N_FormatSubtractQuantityMessage_Node0_action["The message indicates that the
specified quantity will be
subtracted from the cargo release
amount"]:::main N_FormatSubtractQuantityMessage_Node0 -- Yes --> N_FormatSubtractQuantityMessage_Node0_action N_FormatSubtractQuantityMessage_Node0_action --> E_FormatSubtractQuantityMessage S_FormatSubtractQuantityMessage --> N_FormatSubtractQuantityMessage_Node0 N_FormatSubtractQuantityMessage_Node0 -- No --> E_FormatSubtractQuantityMessage
File: GCX016.cbl
GIVEN:
Quantity action type is determined to be subtract quantity
WHEN:
The system formats the quantity action message
THEN:
The message indicates that the specified quantity will be subtracted from the cargo release amount
β Consolidated Acceptance Criteria
- The system formats the quantity action message → the message indicates that no quantity changes will be made to the cargo
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_FormatNoQuantityChangeMessage(["Start Step"])
E_FormatNoQuantityChangeMessage(["End Step"])
N_FormatNoQuantityChangeMessage_Node0{"The system formats the quantity
action message"}:::decision N_FormatNoQuantityChangeMessage_Node0_action["The message indicates that no
quantity changes will be made to the
cargo"]:::main N_FormatNoQuantityChangeMessage_Node0 -- Yes --> N_FormatNoQuantityChangeMessage_Node0_action N_FormatNoQuantityChangeMessage_Node0_action --> E_FormatNoQuantityChangeMessage S_FormatNoQuantityChangeMessage --> N_FormatNoQuantityChangeMessage_Node0 N_FormatNoQuantityChangeMessage_Node0 -- No --> E_FormatNoQuantityChangeMessage
action message"}:::decision N_FormatNoQuantityChangeMessage_Node0_action["The message indicates that no
quantity changes will be made to the
cargo"]:::main N_FormatNoQuantityChangeMessage_Node0 -- Yes --> N_FormatNoQuantityChangeMessage_Node0_action N_FormatNoQuantityChangeMessage_Node0_action --> E_FormatNoQuantityChangeMessage S_FormatNoQuantityChangeMessage --> N_FormatNoQuantityChangeMessage_Node0 N_FormatNoQuantityChangeMessage_Node0 -- No --> E_FormatNoQuantityChangeMessage
File: GCX016.cbl
GIVEN:
Quantity action type is determined to be no change
WHEN:
The system formats the quantity action message
THEN:
The message indicates that no quantity changes will be made to the cargo
β Consolidated Acceptance Criteria
- The system includes entry number information in the message → the message contains the entry number for customs reference and tracking
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IncludeEntryNumberInformation(["Start Step"])
E_IncludeEntryNumberInformation(["End Step"])
N_IncludeEntryNumberInformation_Node0{"The system includes entry number
information in the message"}:::decision N_IncludeEntryNumberInformation_Node0_action["The message contains the entry
number for customs reference and
tracking"]:::main N_IncludeEntryNumberInformation_Node0 -- Yes --> N_IncludeEntryNumberInformation_Node0_action N_IncludeEntryNumberInformation_Node0_action --> E_IncludeEntryNumberInformation S_IncludeEntryNumberInformation --> N_IncludeEntryNumberInformation_Node0 N_IncludeEntryNumberInformation_Node0 -- No --> E_IncludeEntryNumberInformation
information in the message"}:::decision N_IncludeEntryNumberInformation_Node0_action["The message contains the entry
number for customs reference and
tracking"]:::main N_IncludeEntryNumberInformation_Node0 -- Yes --> N_IncludeEntryNumberInformation_Node0_action N_IncludeEntryNumberInformation_Node0_action --> E_IncludeEntryNumberInformation S_IncludeEntryNumberInformation --> N_IncludeEntryNumberInformation_Node0 N_IncludeEntryNumberInformation_Node0 -- No --> E_IncludeEntryNumberInformation
File: GCX016.cbl
GIVEN:
A disposition message is being formatted AND entry number information is available
WHEN:
The system includes entry number information in the message
THEN:
- The message contains the entry number for customs reference
- Tracking
β Consolidated Acceptance Criteria
- The system adds the first K1 comment to the message → the message includes the first K1 comment text for additional context
- The first K1 comment segment exists and contains data → add the first K1 comment segment to the Merlin message format
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AddFirstK1Comment(["Start Step"])
E_AddFirstK1Comment(["End Step"])
N_AddFirstK1Comment_Node0{"The system adds the first K1
comment to the message"}:::decision N_AddFirstK1Comment_Node0_action["The message includes the first K1
comment text for additional context"]:::main N_AddFirstK1Comment_Node0 -- Yes --> N_AddFirstK1Comment_Node0_action N_AddFirstK1Comment_Node0_action --> E_AddFirstK1Comment S_AddFirstK1Comment --> N_AddFirstK1Comment_Node0 N_AddFirstK1Comment_Node1{"The first K1 comment segment exists
and contains data"}:::decision N_AddFirstK1Comment_Node1_action["Add the first K1 comment segment to
the Merlin message format"]:::main N_AddFirstK1Comment_Node1 -- Yes --> N_AddFirstK1Comment_Node1_action N_AddFirstK1Comment_Node1_action --> E_AddFirstK1Comment N_AddFirstK1Comment_Node0 -- No --> N_AddFirstK1Comment_Node1 N_AddFirstK1Comment_Node1 -- No --> E_AddFirstK1Comment
comment to the message"}:::decision N_AddFirstK1Comment_Node0_action["The message includes the first K1
comment text for additional context"]:::main N_AddFirstK1Comment_Node0 -- Yes --> N_AddFirstK1Comment_Node0_action N_AddFirstK1Comment_Node0_action --> E_AddFirstK1Comment S_AddFirstK1Comment --> N_AddFirstK1Comment_Node0 N_AddFirstK1Comment_Node1{"The first K1 comment segment exists
and contains data"}:::decision N_AddFirstK1Comment_Node1_action["Add the first K1 comment segment to
the Merlin message format"]:::main N_AddFirstK1Comment_Node1 -- Yes --> N_AddFirstK1Comment_Node1_action N_AddFirstK1Comment_Node1_action --> E_AddFirstK1Comment N_AddFirstK1Comment_Node0 -- No --> N_AddFirstK1Comment_Node1 N_AddFirstK1Comment_Node1 -- No --> E_AddFirstK1Comment
File: GCX016.cbl
GIVEN:
K1 comments are available AND first K1 comment exists
WHEN:
The system adds the first K1 comment to the message
THEN:
The message includes the first K1 comment text for additional context
File: GCX016.cbl
GIVEN:
K1 comment segments are available for the cargo being processed
WHEN:
- The first k1 comment segment exists
- Contains data
THEN:
Add the first K1 comment segment to the Merlin message format
β Consolidated Acceptance Criteria
- The system adds the second K1 comment to the message → the message includes the second K1 comment text for additional context
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AddSecondK1Comment(["Start Step"])
E_AddSecondK1Comment(["End Step"])
N_AddSecondK1Comment_Node0{"The system adds the second K1
comment to the message"}:::decision N_AddSecondK1Comment_Node0_action["The message includes the second K1
comment text for additional context"]:::main N_AddSecondK1Comment_Node0 -- Yes --> N_AddSecondK1Comment_Node0_action N_AddSecondK1Comment_Node0_action --> E_AddSecondK1Comment S_AddSecondK1Comment --> N_AddSecondK1Comment_Node0 N_AddSecondK1Comment_Node0 -- No --> E_AddSecondK1Comment
comment to the message"}:::decision N_AddSecondK1Comment_Node0_action["The message includes the second K1
comment text for additional context"]:::main N_AddSecondK1Comment_Node0 -- Yes --> N_AddSecondK1Comment_Node0_action N_AddSecondK1Comment_Node0_action --> E_AddSecondK1Comment S_AddSecondK1Comment --> N_AddSecondK1Comment_Node0 N_AddSecondK1Comment_Node0 -- No --> E_AddSecondK1Comment
File: GCX016.cbl
GIVEN:
K1 comments are available AND second K1 comment exists
WHEN:
The system adds the second K1 comment to the message
THEN:
The message includes the second K1 comment text for additional context
β Consolidated Acceptance Criteria
- The system adds the third K1 comment to the message → the message includes the third K1 comment text for additional context
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AddThirdK1Comment(["Start Step"])
E_AddThirdK1Comment(["End Step"])
N_AddThirdK1Comment_Node0{"The system adds the third K1
comment to the message"}:::decision N_AddThirdK1Comment_Node0_action["The message includes the third K1
comment text for additional context"]:::main N_AddThirdK1Comment_Node0 -- Yes --> N_AddThirdK1Comment_Node0_action N_AddThirdK1Comment_Node0_action --> E_AddThirdK1Comment S_AddThirdK1Comment --> N_AddThirdK1Comment_Node0 N_AddThirdK1Comment_Node0 -- No --> E_AddThirdK1Comment
comment to the message"}:::decision N_AddThirdK1Comment_Node0_action["The message includes the third K1
comment text for additional context"]:::main N_AddThirdK1Comment_Node0 -- Yes --> N_AddThirdK1Comment_Node0_action N_AddThirdK1Comment_Node0_action --> E_AddThirdK1Comment S_AddThirdK1Comment --> N_AddThirdK1Comment_Node0 N_AddThirdK1Comment_Node0 -- No --> E_AddThirdK1Comment
File: GCX016.cbl
GIVEN:
K1 comments are available AND third K1 comment exists
WHEN:
The system adds the third K1 comment to the message
THEN:
The message includes the third K1 comment text for additional context
β Consolidated Acceptance Criteria
- The system adds the fourth K1 comment to the message → the message includes the fourth K1 comment text for additional context
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AddFourthK1Comment(["Start Step"])
E_AddFourthK1Comment(["End Step"])
N_AddFourthK1Comment_Node0{"The system adds the fourth K1
comment to the message"}:::decision N_AddFourthK1Comment_Node0_action["The message includes the fourth K1
comment text for additional context"]:::main N_AddFourthK1Comment_Node0 -- Yes --> N_AddFourthK1Comment_Node0_action N_AddFourthK1Comment_Node0_action --> E_AddFourthK1Comment S_AddFourthK1Comment --> N_AddFourthK1Comment_Node0 N_AddFourthK1Comment_Node0 -- No --> E_AddFourthK1Comment
comment to the message"}:::decision N_AddFourthK1Comment_Node0_action["The message includes the fourth K1
comment text for additional context"]:::main N_AddFourthK1Comment_Node0 -- Yes --> N_AddFourthK1Comment_Node0_action N_AddFourthK1Comment_Node0_action --> E_AddFourthK1Comment S_AddFourthK1Comment --> N_AddFourthK1Comment_Node0 N_AddFourthK1Comment_Node0 -- No --> E_AddFourthK1Comment
File: GCX016.cbl
GIVEN:
K1 comments are available AND fourth K1 comment exists
WHEN:
The system adds the fourth K1 comment to the message
THEN:
The message includes the fourth K1 comment text for additional context
β Consolidated Acceptance Criteria
- The system formats cargo details for the message → the message includes formatted cargo identification and tracking information
- Cargo details are being formatted → all cargo identification fields are properly formatted and included in the log message
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_FormatCargoDetails(["Start Step"])
E_FormatCargoDetails(["End Step"])
N_FormatCargoDetails_Node0{"The system formats cargo details
for the message"}:::decision N_FormatCargoDetails_Node0_action["The message includes formatted
cargo identification and tracking
information"]:::main N_FormatCargoDetails_Node0 -- Yes --> N_FormatCargoDetails_Node0_action N_FormatCargoDetails_Node0_action --> E_FormatCargoDetails S_FormatCargoDetails --> N_FormatCargoDetails_Node0 N_FormatCargoDetails_Node1{"Cargo details are being formatted"}:::decision N_FormatCargoDetails_Node1_action["All cargo identification fields are
properly formatted and included in
the log message"]:::main N_FormatCargoDetails_Node1 -- Yes --> N_FormatCargoDetails_Node1_action N_FormatCargoDetails_Node1_action --> E_FormatCargoDetails N_FormatCargoDetails_Node0 -- No --> N_FormatCargoDetails_Node1 N_FormatCargoDetails_Node1 -- No --> E_FormatCargoDetails
for the message"}:::decision N_FormatCargoDetails_Node0_action["The message includes formatted
cargo identification and tracking
information"]:::main N_FormatCargoDetails_Node0 -- Yes --> N_FormatCargoDetails_Node0_action N_FormatCargoDetails_Node0_action --> E_FormatCargoDetails S_FormatCargoDetails --> N_FormatCargoDetails_Node0 N_FormatCargoDetails_Node1{"Cargo details are being formatted"}:::decision N_FormatCargoDetails_Node1_action["All cargo identification fields are
properly formatted and included in
the log message"]:::main N_FormatCargoDetails_Node1 -- Yes --> N_FormatCargoDetails_Node1_action N_FormatCargoDetails_Node1_action --> E_FormatCargoDetails N_FormatCargoDetails_Node0 -- No --> N_FormatCargoDetails_Node1 N_FormatCargoDetails_Node1 -- No --> E_FormatCargoDetails
File: GCX016.cbl
GIVEN:
A disposition message requires cargo details
WHEN:
The system formats cargo details for the message
THEN:
- The message includes formatted cargo identification
- Tracking information
File: GCX016.cbl
GIVEN:
Cargo information needs to be logged
WHEN:
Cargo details are being formatted
THEN:
- All cargo identification fields are properly formatted
- Included in the log message
β Consolidated Acceptance Criteria
- The system adds car ID information to the message → the message includes the railroad car identification for equipment tracking
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AddCarIDInformation(["Start Step"])
E_AddCarIDInformation(["End Step"])
N_AddCarIDInformation_Node0{"The system adds car ID information
to the message"}:::decision N_AddCarIDInformation_Node0_action["The message includes the railroad
car identification for equipment
tracking"]:::main N_AddCarIDInformation_Node0 -- Yes --> N_AddCarIDInformation_Node0_action N_AddCarIDInformation_Node0_action --> E_AddCarIDInformation S_AddCarIDInformation --> N_AddCarIDInformation_Node0 N_AddCarIDInformation_Node0 -- No --> E_AddCarIDInformation
to the message"}:::decision N_AddCarIDInformation_Node0_action["The message includes the railroad
car identification for equipment
tracking"]:::main N_AddCarIDInformation_Node0 -- Yes --> N_AddCarIDInformation_Node0_action N_AddCarIDInformation_Node0_action --> E_AddCarIDInformation S_AddCarIDInformation --> N_AddCarIDInformation_Node0 N_AddCarIDInformation_Node0 -- No --> E_AddCarIDInformation
File: GCX016.cbl
GIVEN:
Cargo details are being formatted AND car ID information is available
WHEN:
The system adds car ID information to the message
THEN:
The message includes the railroad car identification for equipment tracking
β Consolidated Acceptance Criteria
- The system adds waybill information to the message → the message includes the waybill number for shipment tracking and reference
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AddWaybillInformation(["Start Step"])
E_AddWaybillInformation(["End Step"])
N_AddWaybillInformation_Node0{"The system adds waybill information
to the message"}:::decision N_AddWaybillInformation_Node0_action["The message includes the waybill
number for shipment tracking and
reference"]:::main N_AddWaybillInformation_Node0 -- Yes --> N_AddWaybillInformation_Node0_action N_AddWaybillInformation_Node0_action --> E_AddWaybillInformation S_AddWaybillInformation --> N_AddWaybillInformation_Node0 N_AddWaybillInformation_Node0 -- No --> E_AddWaybillInformation
to the message"}:::decision N_AddWaybillInformation_Node0_action["The message includes the waybill
number for shipment tracking and
reference"]:::main N_AddWaybillInformation_Node0 -- Yes --> N_AddWaybillInformation_Node0_action N_AddWaybillInformation_Node0_action --> E_AddWaybillInformation S_AddWaybillInformation --> N_AddWaybillInformation_Node0 N_AddWaybillInformation_Node0 -- No --> E_AddWaybillInformation
File: GCX016.cbl
GIVEN:
Cargo details are being formatted AND waybill information is available
WHEN:
The system adds waybill information to the message
THEN:
- The message includes the waybill number for shipment tracking
- Reference
β Consolidated Acceptance Criteria
- The system adds processing timestamp to the message → the message includes the current processing date and time for audit trail
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AddProcessingTimestamp(["Start Step"])
E_AddProcessingTimestamp(["End Step"])
N_AddProcessingTimestamp_Node0{"The system adds processing
timestamp to the message"}:::decision N_AddProcessingTimestamp_Node0_action["The message includes the current
processing date and time for audit
trail"]:::main N_AddProcessingTimestamp_Node0 -- Yes --> N_AddProcessingTimestamp_Node0_action N_AddProcessingTimestamp_Node0_action --> E_AddProcessingTimestamp S_AddProcessingTimestamp --> N_AddProcessingTimestamp_Node0 N_AddProcessingTimestamp_Node0 -- No --> E_AddProcessingTimestamp
timestamp to the message"}:::decision N_AddProcessingTimestamp_Node0_action["The message includes the current
processing date and time for audit
trail"]:::main N_AddProcessingTimestamp_Node0 -- Yes --> N_AddProcessingTimestamp_Node0_action N_AddProcessingTimestamp_Node0_action --> E_AddProcessingTimestamp S_AddProcessingTimestamp --> N_AddProcessingTimestamp_Node0 N_AddProcessingTimestamp_Node0 -- No --> E_AddProcessingTimestamp
File: GCX016.cbl
GIVEN:
A disposition message is being finalized
WHEN:
The system adds processing timestamp to the message
THEN:
- The message includes the current processing date
- Time for audit trail
β Consolidated Acceptance Criteria
- The system finalizes the message format → the message is properly formatted and ready for transmission to recipients
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_FinalizeMessageFormat(["Start Step"])
E_FinalizeMessageFormat(["End Step"])
N_FinalizeMessageFormat_Node0{"The system finalizes the message
format"}:::decision N_FinalizeMessageFormat_Node0_action["The message is properly formatted
and ready for transmission to
recipients"]:::main N_FinalizeMessageFormat_Node0 -- Yes --> N_FinalizeMessageFormat_Node0_action N_FinalizeMessageFormat_Node0_action --> E_FinalizeMessageFormat S_FinalizeMessageFormat --> N_FinalizeMessageFormat_Node0 N_FinalizeMessageFormat_Node0 -- No --> E_FinalizeMessageFormat
format"}:::decision N_FinalizeMessageFormat_Node0_action["The message is properly formatted
and ready for transmission to
recipients"]:::main N_FinalizeMessageFormat_Node0 -- Yes --> N_FinalizeMessageFormat_Node0_action N_FinalizeMessageFormat_Node0_action --> E_FinalizeMessageFormat S_FinalizeMessageFormat --> N_FinalizeMessageFormat_Node0 N_FinalizeMessageFormat_Node0 -- No --> E_FinalizeMessageFormat
File: GCX016.cbl
GIVEN:
All message components have been added to the disposition message
WHEN:
The system finalizes the message format
THEN:
- The message is properly formatted
- Ready for transmission to recipients
β Consolidated Acceptance Criteria
- The system retrieves the quantity action details from the DC table → the quantity action type and parameters are available for processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RetrieveQuantityActionfromDCTable(["Start Step"])
E_RetrieveQuantityActionfromDCTable(["End Step"])
N_RetrieveQuantityActionfromDCTable_Node0{"The system retrieves the quantity
action details from the DC table"}:::decision N_RetrieveQuantityActionfromDCTable_Node0_action["The quantity action type and
parameters are available for
processing"]:::main N_RetrieveQuantityActionfromDCTable_Node0 -- Yes --> N_RetrieveQuantityActionfromDCTable_Node0_action N_RetrieveQuantityActionfromDCTable_Node0_action --> E_RetrieveQuantityActionfromDCTable S_RetrieveQuantityActionfromDCTable --> N_RetrieveQuantityActionfromDCTable_Node0 N_RetrieveQuantityActionfromDCTable_Node0 -- No --> E_RetrieveQuantityActionfromDCTable
action details from the DC table"}:::decision N_RetrieveQuantityActionfromDCTable_Node0_action["The quantity action type and
parameters are available for
processing"]:::main N_RetrieveQuantityActionfromDCTable_Node0 -- Yes --> N_RetrieveQuantityActionfromDCTable_Node0_action N_RetrieveQuantityActionfromDCTable_Node0_action --> E_RetrieveQuantityActionfromDCTable S_RetrieveQuantityActionfromDCTable --> N_RetrieveQuantityActionfromDCTable_Node0 N_RetrieveQuantityActionfromDCTable_Node0 -- No --> E_RetrieveQuantityActionfromDCTable
File: GCX016.cbl
GIVEN:
A disposition code has been identified as having quantity action
WHEN:
The system retrieves the quantity action details from the DC table
THEN:
- The quantity action type
- Parameters are available for processing
β Consolidated Acceptance Criteria
- If the action type field → the system routes to either ADD or SUBTRACT quantity processing based on the action type
- If the action type for quantity processing → the system classifies the action as either ADD operation or SUBTRACT operation based on disposition code configuration
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ActionType(["Start Step"])
E_ActionType(["End Step"])
N_ActionType_Node0{"The system evaluates the action
type field"}:::decision N_ActionType_Node0_action["The system routes to either ADD or
SUBTRACT quantity processing based
on the action type"]:::main N_ActionType_Node0 -- Yes --> N_ActionType_Node0_action N_ActionType_Node0_action --> E_ActionType S_ActionType --> N_ActionType_Node0 N_ActionType_Node1{"The system evaluates the action
type for quantity processing"}:::decision N_ActionType_Node1_action["The system classifies the action as
either ADD operation or SUBTRACT
operation based on disposition code
configuration"]:::main N_ActionType_Node1 -- Yes --> N_ActionType_Node1_action N_ActionType_Node1_action --> E_ActionType N_ActionType_Node0 -- No --> N_ActionType_Node1 N_ActionType_Node1 -- No --> E_ActionType
type field"}:::decision N_ActionType_Node0_action["The system routes to either ADD or
SUBTRACT quantity processing based
on the action type"]:::main N_ActionType_Node0 -- Yes --> N_ActionType_Node0_action N_ActionType_Node0_action --> E_ActionType S_ActionType --> N_ActionType_Node0 N_ActionType_Node1{"The system evaluates the action
type for quantity processing"}:::decision N_ActionType_Node1_action["The system classifies the action as
either ADD operation or SUBTRACT
operation based on disposition code
configuration"]:::main N_ActionType_Node1 -- Yes --> N_ActionType_Node1_action N_ActionType_Node1_action --> E_ActionType N_ActionType_Node0 -- No --> N_ActionType_Node1 N_ActionType_Node1 -- No --> E_ActionType
File: GCX016.cbl
GIVEN:
Quantity action details have been retrieved from the DC table
WHEN:
The system evaluates the action type field
THEN:
The system routes to either ADD or SUBTRACT quantity processing based on the action type
File: GCX016.cbl
GIVEN:
Disposition code details have been retrieved with quantity action requirements
WHEN:
The system evaluates the action type for quantity processing
THEN:
The system classifies the action as either ADD operation or SUBTRACT operation based on disposition code configuration
β Consolidated Acceptance Criteria
- The system formats the quantity action message → a message is created showing the quantity that will be added to the release quantity
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_FormatADDQuantityMessage(["Start Step"])
E_FormatADDQuantityMessage(["End Step"])
N_FormatADDQuantityMessage_Node0{"The system formats the quantity
action message"}:::decision N_FormatADDQuantityMessage_Node0_action["A message is created showing the
quantity that will be added to the
release quantity"]:::main N_FormatADDQuantityMessage_Node0 -- Yes --> N_FormatADDQuantityMessage_Node0_action N_FormatADDQuantityMessage_Node0_action --> E_FormatADDQuantityMessage S_FormatADDQuantityMessage --> N_FormatADDQuantityMessage_Node0 N_FormatADDQuantityMessage_Node0 -- No --> E_FormatADDQuantityMessage
action message"}:::decision N_FormatADDQuantityMessage_Node0_action["A message is created showing the
quantity that will be added to the
release quantity"]:::main N_FormatADDQuantityMessage_Node0 -- Yes --> N_FormatADDQuantityMessage_Node0_action N_FormatADDQuantityMessage_Node0_action --> E_FormatADDQuantityMessage S_FormatADDQuantityMessage --> N_FormatADDQuantityMessage_Node0 N_FormatADDQuantityMessage_Node0 -- No --> E_FormatADDQuantityMessage
File: GCX016.cbl
GIVEN:
The quantity action type is ADD
WHEN:
The system formats the quantity action message
THEN:
A message is created showing the quantity that will be added to the release quantity
β Consolidated Acceptance Criteria
- The system formats the quantity action message → a message is created showing the quantity that will be subtracted from the release quantity
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_FormatSUBTRACTQuantityMessage(["Start Step"])
E_FormatSUBTRACTQuantityMessage(["End Step"])
N_FormatSUBTRACTQuantityMessage_Node0{"The system formats the quantity
action message"}:::decision N_FormatSUBTRACTQuantityMessage_Node0_action["A message is created showing the
quantity that will be subtracted
from the release quantity"]:::main N_FormatSUBTRACTQuantityMessage_Node0 -- Yes --> N_FormatSUBTRACTQuantityMessage_Node0_action N_FormatSUBTRACTQuantityMessage_Node0_action --> E_FormatSUBTRACTQuantityMessage S_FormatSUBTRACTQuantityMessage --> N_FormatSUBTRACTQuantityMessage_Node0 N_FormatSUBTRACTQuantityMessage_Node0 -- No --> E_FormatSUBTRACTQuantityMessage
action message"}:::decision N_FormatSUBTRACTQuantityMessage_Node0_action["A message is created showing the
quantity that will be subtracted
from the release quantity"]:::main N_FormatSUBTRACTQuantityMessage_Node0 -- Yes --> N_FormatSUBTRACTQuantityMessage_Node0_action N_FormatSUBTRACTQuantityMessage_Node0_action --> E_FormatSUBTRACTQuantityMessage S_FormatSUBTRACTQuantityMessage --> N_FormatSUBTRACTQuantityMessage_Node0 N_FormatSUBTRACTQuantityMessage_Node0 -- No --> E_FormatSUBTRACTQuantityMessage
File: GCX016.cbl
GIVEN:
The quantity action type is SUBTRACT
WHEN:
The system formats the quantity action message
THEN:
A message is created showing the quantity that will be subtracted from the release quantity
β Consolidated Acceptance Criteria
- The system calculates the new release quantity based on the action type → the new release quantity is computed by adding or subtracting the action amount from the current quantity
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CalculateNewReleaseQuantity(["Start Step"])
E_CalculateNewReleaseQuantity(["End Step"])
N_CalculateNewReleaseQuantity_Node0{"The system calculates the new
release quantity based on the action
type"}:::decision N_CalculateNewReleaseQuantity_Node0_action["The new release quantity is
computed by adding or subtracting
the action amount from the current
quantity"]:::main N_CalculateNewReleaseQuantity_Node0 -- Yes --> N_CalculateNewReleaseQuantity_Node0_action N_CalculateNewReleaseQuantity_Node0_action --> E_CalculateNewReleaseQuantity S_CalculateNewReleaseQuantity --> N_CalculateNewReleaseQuantity_Node0 N_CalculateNewReleaseQuantity_Node0 -- No --> E_CalculateNewReleaseQuantity
release quantity based on the action
type"}:::decision N_CalculateNewReleaseQuantity_Node0_action["The new release quantity is
computed by adding or subtracting
the action amount from the current
quantity"]:::main N_CalculateNewReleaseQuantity_Node0 -- Yes --> N_CalculateNewReleaseQuantity_Node0_action N_CalculateNewReleaseQuantity_Node0_action --> E_CalculateNewReleaseQuantity S_CalculateNewReleaseQuantity --> N_CalculateNewReleaseQuantity_Node0 N_CalculateNewReleaseQuantity_Node0 -- No --> E_CalculateNewReleaseQuantity
File: GCX016.cbl
GIVEN:
The current release quantity and quantity action amount are known
WHEN:
The system calculates the new release quantity based on the action type
THEN:
The new release quantity is computed by adding or subtracting the action amount from the current quantity
β Consolidated Acceptance Criteria
- The calculated quantity would be less than zero → the system identifies this as an invalid condition requiring correction
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_QuantityWouldBeNegative(["Start Step"])
E_QuantityWouldBeNegative(["End Step"])
N_QuantityWouldBeNegative_Node0{"The calculated quantity would be
less than zero"}:::decision N_QuantityWouldBeNegative_Node0_action["The system identifies this as an
invalid condition requiring
correction"]:::main N_QuantityWouldBeNegative_Node0 -- Yes --> N_QuantityWouldBeNegative_Node0_action N_QuantityWouldBeNegative_Node0_action --> E_QuantityWouldBeNegative S_QuantityWouldBeNegative --> N_QuantityWouldBeNegative_Node0 N_QuantityWouldBeNegative_Node0 -- No --> E_QuantityWouldBeNegative
less than zero"}:::decision N_QuantityWouldBeNegative_Node0_action["The system identifies this as an
invalid condition requiring
correction"]:::main N_QuantityWouldBeNegative_Node0 -- Yes --> N_QuantityWouldBeNegative_Node0_action N_QuantityWouldBeNegative_Node0_action --> E_QuantityWouldBeNegative S_QuantityWouldBeNegative --> N_QuantityWouldBeNegative_Node0 N_QuantityWouldBeNegative_Node0 -- No --> E_QuantityWouldBeNegative
File: GCX016.cbl
GIVEN:
A new release quantity has been calculated
WHEN:
The calculated quantity would be less than zero
THEN:
The system identifies this as an invalid condition requiring correction
β Consolidated Acceptance Criteria
- The system applies the minimum quantity constraint → the release quantity is set to zero to prevent negative values
- The system validates the quantity calculation result → the system sets the cargo release quantity to zero to prevent negative values
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetQuantitytoZero(["Start Step"])
E_SetQuantitytoZero(["End Step"])
N_SetQuantitytoZero_Node0{"The system applies the minimum
quantity constraint"}:::decision N_SetQuantitytoZero_Node0_action["The release quantity is set to zero
to prevent negative values"]:::main N_SetQuantitytoZero_Node0 -- Yes --> N_SetQuantitytoZero_Node0_action N_SetQuantitytoZero_Node0_action --> E_SetQuantitytoZero S_SetQuantitytoZero --> N_SetQuantitytoZero_Node0 N_SetQuantitytoZero_Node1{"The system validates the quantity
calculation result"}:::decision N_SetQuantitytoZero_Node1_action["The system sets the cargo release
quantity to zero to prevent negative
values"]:::main N_SetQuantitytoZero_Node1 -- Yes --> N_SetQuantitytoZero_Node1_action N_SetQuantitytoZero_Node1_action --> E_SetQuantitytoZero N_SetQuantitytoZero_Node0 -- No --> N_SetQuantitytoZero_Node1 N_SetQuantitytoZero_Node1 -- No --> E_SetQuantitytoZero
quantity constraint"}:::decision N_SetQuantitytoZero_Node0_action["The release quantity is set to zero
to prevent negative values"]:::main N_SetQuantitytoZero_Node0 -- Yes --> N_SetQuantitytoZero_Node0_action N_SetQuantitytoZero_Node0_action --> E_SetQuantitytoZero S_SetQuantitytoZero --> N_SetQuantitytoZero_Node0 N_SetQuantitytoZero_Node1{"The system validates the quantity
calculation result"}:::decision N_SetQuantitytoZero_Node1_action["The system sets the cargo release
quantity to zero to prevent negative
values"]:::main N_SetQuantitytoZero_Node1 -- Yes --> N_SetQuantitytoZero_Node1_action N_SetQuantitytoZero_Node1_action --> E_SetQuantitytoZero N_SetQuantitytoZero_Node0 -- No --> N_SetQuantitytoZero_Node1 N_SetQuantitytoZero_Node1 -- No --> E_SetQuantitytoZero
File: GCX016.cbl
GIVEN:
A calculated release quantity would be negative
WHEN:
The system applies the minimum quantity constraint
THEN:
The release quantity is set to zero to prevent negative values
File: GCX016.cbl
GIVEN:
A calculated cargo release quantity that is less than zero
WHEN:
The system validates the quantity calculation result
THEN:
The system sets the cargo release quantity to zero to prevent negative values
β Consolidated Acceptance Criteria
- The system validates the calculated quantity → the calculated quantity is accepted as the new release quantity
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UseCalculatedQuantity(["Start Step"])
E_UseCalculatedQuantity(["End Step"])
N_UseCalculatedQuantity_Node0{"The system validates the calculated
quantity"}:::decision N_UseCalculatedQuantity_Node0_action["The calculated quantity is accepted
as the new release quantity"]:::main N_UseCalculatedQuantity_Node0 -- Yes --> N_UseCalculatedQuantity_Node0_action N_UseCalculatedQuantity_Node0_action --> E_UseCalculatedQuantity S_UseCalculatedQuantity --> N_UseCalculatedQuantity_Node0 N_UseCalculatedQuantity_Node0 -- No --> E_UseCalculatedQuantity
quantity"}:::decision N_UseCalculatedQuantity_Node0_action["The calculated quantity is accepted
as the new release quantity"]:::main N_UseCalculatedQuantity_Node0 -- Yes --> N_UseCalculatedQuantity_Node0_action N_UseCalculatedQuantity_Node0_action --> E_UseCalculatedQuantity S_UseCalculatedQuantity --> N_UseCalculatedQuantity_Node0 N_UseCalculatedQuantity_Node0 -- No --> E_UseCalculatedQuantity
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
A new release quantity has been calculated and is not negative
WHEN:
The system validates the calculated quantity
THEN:
The calculated quantity is accepted as the new release quantity
β Consolidated Acceptance Criteria
- The system formats the quantity action display message → a formatted message is created containing all relevant quantity action information
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_FormatQuantityActionDisplayMessage(["Start Step"])
E_FormatQuantityActionDisplayMessage(["End Step"])
N_FormatQuantityActionDisplayMessage_Node0{"The system formats the quantity
action display message"}:::decision N_FormatQuantityActionDisplayMessage_Node0_action["A formatted message is created
containing all relevant quantity
action information"]:::main N_FormatQuantityActionDisplayMessage_Node0 -- Yes --> N_FormatQuantityActionDisplayMessage_Node0_action N_FormatQuantityActionDisplayMessage_Node0_action --> E_FormatQuantityActionDisplayMessage S_FormatQuantityActionDisplayMessage --> N_FormatQuantityActionDisplayMessage_Node0 N_FormatQuantityActionDisplayMessage_Node0 -- No --> E_FormatQuantityActionDisplayMessage
action display message"}:::decision N_FormatQuantityActionDisplayMessage_Node0_action["A formatted message is created
containing all relevant quantity
action information"]:::main N_FormatQuantityActionDisplayMessage_Node0 -- Yes --> N_FormatQuantityActionDisplayMessage_Node0_action N_FormatQuantityActionDisplayMessage_Node0_action --> E_FormatQuantityActionDisplayMessage S_FormatQuantityActionDisplayMessage --> N_FormatQuantityActionDisplayMessage_Node0 N_FormatQuantityActionDisplayMessage_Node0 -- No --> E_FormatQuantityActionDisplayMessage
File: GCX016.cbl
GIVEN:
The final release quantity has been determined
WHEN:
The system formats the quantity action display message
THEN:
A formatted message is created containing all relevant quantity action information
β Consolidated Acceptance Criteria
- The system includes current quantity information → the current released quantity is added to the message for broker reference
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IncludeCurrentReleasedQuantity(["Start Step"])
E_IncludeCurrentReleasedQuantity(["End Step"])
N_IncludeCurrentReleasedQuantity_Node0{"The system includes current
quantity information"}:::decision N_IncludeCurrentReleasedQuantity_Node0_action["The current released quantity is
added to the message for broker
reference"]:::main N_IncludeCurrentReleasedQuantity_Node0 -- Yes --> N_IncludeCurrentReleasedQuantity_Node0_action N_IncludeCurrentReleasedQuantity_Node0_action --> E_IncludeCurrentReleasedQuantity S_IncludeCurrentReleasedQuantity --> N_IncludeCurrentReleasedQuantity_Node0 N_IncludeCurrentReleasedQuantity_Node0 -- No --> E_IncludeCurrentReleasedQuantity
quantity information"}:::decision N_IncludeCurrentReleasedQuantity_Node0_action["The current released quantity is
added to the message for broker
reference"]:::main N_IncludeCurrentReleasedQuantity_Node0 -- Yes --> N_IncludeCurrentReleasedQuantity_Node0_action N_IncludeCurrentReleasedQuantity_Node0_action --> E_IncludeCurrentReleasedQuantity S_IncludeCurrentReleasedQuantity --> N_IncludeCurrentReleasedQuantity_Node0 N_IncludeCurrentReleasedQuantity_Node0 -- No --> E_IncludeCurrentReleasedQuantity
File: GCX016.cbl
GIVEN:
A quantity action display message is being formatted
WHEN:
The system includes current quantity information
THEN:
The current released quantity is added to the message for broker reference
β Consolidated Acceptance Criteria
- The system includes entry number information → the broker entry number is added to the message for cargo identification
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IncludeBrokerEntryNumber(["Start Step"])
E_IncludeBrokerEntryNumber(["End Step"])
N_IncludeBrokerEntryNumber_Node0{"The system includes entry number
information"}:::decision N_IncludeBrokerEntryNumber_Node0_action["The broker entry number is added to
the message for cargo identification"]:::main N_IncludeBrokerEntryNumber_Node0 -- Yes --> N_IncludeBrokerEntryNumber_Node0_action N_IncludeBrokerEntryNumber_Node0_action --> E_IncludeBrokerEntryNumber S_IncludeBrokerEntryNumber --> N_IncludeBrokerEntryNumber_Node0 N_IncludeBrokerEntryNumber_Node0 -- No --> E_IncludeBrokerEntryNumber
information"}:::decision N_IncludeBrokerEntryNumber_Node0_action["The broker entry number is added to
the message for cargo identification"]:::main N_IncludeBrokerEntryNumber_Node0 -- Yes --> N_IncludeBrokerEntryNumber_Node0_action N_IncludeBrokerEntryNumber_Node0_action --> E_IncludeBrokerEntryNumber S_IncludeBrokerEntryNumber --> N_IncludeBrokerEntryNumber_Node0 N_IncludeBrokerEntryNumber_Node0 -- No --> E_IncludeBrokerEntryNumber
File: GCX016.cbl
GIVEN:
A quantity action display message is being formatted and broker entry number exists
WHEN:
The system includes entry number information
THEN:
The broker entry number is added to the message for cargo identification
β Consolidated Acceptance Criteria
- The system includes the quantity change details → the exact amount being added or subtracted is included in the message
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IncludeQuantityChangeAmount(["Start Step"])
E_IncludeQuantityChangeAmount(["End Step"])
N_IncludeQuantityChangeAmount_Node0{"The system includes the quantity
change details"}:::decision N_IncludeQuantityChangeAmount_Node0_action["The exact amount being added or
subtracted is included in the
message"]:::main N_IncludeQuantityChangeAmount_Node0 -- Yes --> N_IncludeQuantityChangeAmount_Node0_action N_IncludeQuantityChangeAmount_Node0_action --> E_IncludeQuantityChangeAmount S_IncludeQuantityChangeAmount --> N_IncludeQuantityChangeAmount_Node0 N_IncludeQuantityChangeAmount_Node0 -- No --> E_IncludeQuantityChangeAmount
change details"}:::decision N_IncludeQuantityChangeAmount_Node0_action["The exact amount being added or
subtracted is included in the
message"]:::main N_IncludeQuantityChangeAmount_Node0 -- Yes --> N_IncludeQuantityChangeAmount_Node0_action N_IncludeQuantityChangeAmount_Node0_action --> E_IncludeQuantityChangeAmount S_IncludeQuantityChangeAmount --> N_IncludeQuantityChangeAmount_Node0 N_IncludeQuantityChangeAmount_Node0 -- No --> E_IncludeQuantityChangeAmount
File: GCX016.cbl
GIVEN:
A quantity action display message is being formatted
WHEN:
The system includes the quantity change details
THEN:
The exact amount being added or subtracted is included in the message
β Consolidated Acceptance Criteria
- The system adds the message to the Merlin buffer → the message is appended to the buffer for subsequent transmission
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AddtoMerlinMessageBuffer(["Start Step"])
E_AddtoMerlinMessageBuffer(["End Step"])
N_AddtoMerlinMessageBuffer_Node0{"The system adds the message to the
Merlin buffer"}:::decision N_AddtoMerlinMessageBuffer_Node0_action["The message is appended to the
buffer for subsequent transmission"]:::main N_AddtoMerlinMessageBuffer_Node0 -- Yes --> N_AddtoMerlinMessageBuffer_Node0_action N_AddtoMerlinMessageBuffer_Node0_action --> E_AddtoMerlinMessageBuffer S_AddtoMerlinMessageBuffer --> N_AddtoMerlinMessageBuffer_Node0 N_AddtoMerlinMessageBuffer_Node0 -- No --> E_AddtoMerlinMessageBuffer
Merlin buffer"}:::decision N_AddtoMerlinMessageBuffer_Node0_action["The message is appended to the
buffer for subsequent transmission"]:::main N_AddtoMerlinMessageBuffer_Node0 -- Yes --> N_AddtoMerlinMessageBuffer_Node0_action N_AddtoMerlinMessageBuffer_Node0_action --> E_AddtoMerlinMessageBuffer S_AddtoMerlinMessageBuffer --> N_AddtoMerlinMessageBuffer_Node0 N_AddtoMerlinMessageBuffer_Node0 -- No --> E_AddtoMerlinMessageBuffer
File: GCX016.cbl
GIVEN:
A complete quantity action message has been formatted
WHEN:
The system adds the message to the Merlin buffer
THEN:
The message is appended to the buffer for subsequent transmission
β Consolidated Acceptance Criteria
- The system continues with message processing → control returns to the main message processing flow for additional processing steps
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ContinueMessageProcessing(["Start Step"])
E_ContinueMessageProcessing(["End Step"])
N_ContinueMessageProcessing_Node0{"The system continues with message
processing"}:::decision N_ContinueMessageProcessing_Node0_action["Control returns to the main message
processing flow for additional
processing steps"]:::main N_ContinueMessageProcessing_Node0 -- Yes --> N_ContinueMessageProcessing_Node0_action N_ContinueMessageProcessing_Node0_action --> E_ContinueMessageProcessing S_ContinueMessageProcessing --> N_ContinueMessageProcessing_Node0 N_ContinueMessageProcessing_Node0 -- No --> E_ContinueMessageProcessing
processing"}:::decision N_ContinueMessageProcessing_Node0_action["Control returns to the main message
processing flow for additional
processing steps"]:::main N_ContinueMessageProcessing_Node0 -- Yes --> N_ContinueMessageProcessing_Node0_action N_ContinueMessageProcessing_Node0_action --> E_ContinueMessageProcessing S_ContinueMessageProcessing --> N_ContinueMessageProcessing_Node0 N_ContinueMessageProcessing_Node0 -- No --> E_ContinueMessageProcessing
File: GCX016.cbl
GIVEN:
Quantity action processing has been completed successfully
WHEN:
The system continues with message processing
THEN:
Control returns to the main message processing flow for additional processing steps
β Consolidated Acceptance Criteria
- The system processes the K1 segment → the K1 comment is stored in the train log for future reference
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_StoreK1CommentinTrainLog(["Start Step"])
E_StoreK1CommentinTrainLog(["End Step"])
N_StoreK1CommentinTrainLog_Node0{"The system processes the K1 segment"}:::decision
N_StoreK1CommentinTrainLog_Node0_action["The K1 comment is stored in the
train log for future reference"]:::main N_StoreK1CommentinTrainLog_Node0 -- Yes --> N_StoreK1CommentinTrainLog_Node0_action N_StoreK1CommentinTrainLog_Node0_action --> E_StoreK1CommentinTrainLog S_StoreK1CommentinTrainLog --> N_StoreK1CommentinTrainLog_Node0 N_StoreK1CommentinTrainLog_Node0 -- No --> E_StoreK1CommentinTrainLog
train log for future reference"]:::main N_StoreK1CommentinTrainLog_Node0 -- Yes --> N_StoreK1CommentinTrainLog_Node0_action N_StoreK1CommentinTrainLog_Node0_action --> E_StoreK1CommentinTrainLog S_StoreK1CommentinTrainLog --> N_StoreK1CommentinTrainLog_Node0 N_StoreK1CommentinTrainLog_Node0 -- No --> E_StoreK1CommentinTrainLog
File: GCX016.cbl
GIVEN:
A K1 comment segment is being processed in train operations context
WHEN:
The system processes the K1 segment
THEN:
The K1 comment is stored in the train log for future reference
β Consolidated Acceptance Criteria
- The system checks the current count of K1 comments already processed → if comment count is less than 4, the comment is added to the array, otherwise additional comments are skipped
- The system checks if the current comment count is less than 4 for the X4 segment → the comment is accepted for storage if count is less than 4, otherwise it is rejected with maximum comments exceeded error
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CommentCount4(["Start Step"])
E_CommentCount4(["End Step"])
N_CommentCount4_Node0{"The system checks the current count
of K1 comments already processed"}:::decision N_CommentCount4_Node0_action["If comment count is less than 4,
the comment is added to the array,
otherwise additional comments are
skipped"]:::main N_CommentCount4_Node0 -- Yes --> N_CommentCount4_Node0_action N_CommentCount4_Node0_action --> E_CommentCount4 S_CommentCount4 --> N_CommentCount4_Node0 N_CommentCount4_Node1{"The system checks if the current
comment count is less than 4 for the
X4 segment"}:::decision N_CommentCount4_Node1_action["The comment is accepted for storage
if count is less than 4, otherwise
it is rejected with maximum comments
exceeded error"]:::exclusion N_CommentCount4_Node1 -- Yes -->|Alternative| N_CommentCount4_Node1_action N_CommentCount4_Node1_action --> E_CommentCount4 N_CommentCount4_Node0 -- No --> N_CommentCount4_Node1 N_CommentCount4_Node1 -- No --> E_CommentCount4
of K1 comments already processed"}:::decision N_CommentCount4_Node0_action["If comment count is less than 4,
the comment is added to the array,
otherwise additional comments are
skipped"]:::main N_CommentCount4_Node0 -- Yes --> N_CommentCount4_Node0_action N_CommentCount4_Node0_action --> E_CommentCount4 S_CommentCount4 --> N_CommentCount4_Node0 N_CommentCount4_Node1{"The system checks if the current
comment count is less than 4 for the
X4 segment"}:::decision N_CommentCount4_Node1_action["The comment is accepted for storage
if count is less than 4, otherwise
it is rejected with maximum comments
exceeded error"]:::exclusion N_CommentCount4_Node1 -- Yes -->|Alternative| N_CommentCount4_Node1_action N_CommentCount4_Node1_action --> E_CommentCount4 N_CommentCount4_Node0 -- No --> N_CommentCount4_Node1 N_CommentCount4_Node1 -- No --> E_CommentCount4
File: GCX016.cbl
GIVEN:
A K1 comment segment is being processed for cargo operations
WHEN:
The system checks the current count of K1 comments already processed
THEN:
If comment count is less than 4, the comment is added to the array, otherwise additional comments are skipped
File: GCX016.cbl
GIVEN:
A free-form comment extracted from a K1 segment for an X4 segment
WHEN:
The system checks if the current comment count is less than 4 for the X4 segment
THEN:
The comment is accepted for storage if count is less than 4, otherwise it is rejected with maximum comments exceeded error
β Consolidated Acceptance Criteria
- If the message type (Release, Hold, Status, or Error) → the system routes K1 comment formatting to the appropriate message type handler
- If the message type → the message is classified as Error, Info, Unrelease, Release, or Export type for appropriate routing
- If the message type and processing requirements → the message is classified as multi-manifest, train operations, or standard processing based on message characteristics
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MessageType(["Start Step"])
E_MessageType(["End Step"])
N_MessageType_Node0{"The system evaluates the message
type Release, Hold, Status, or Error"}:::decision N_MessageType_Node0_action["The system routes K1 comment
formatting to the appropriate
message type handler"]:::exclusion N_MessageType_Node0 -- Yes -->|Alternative| N_MessageType_Node0_action N_MessageType_Node0_action --> E_MessageType S_MessageType --> N_MessageType_Node0 N_MessageType_Node1{"The system evaluates the message
type"}:::decision N_MessageType_Node1_action["The message is classified as Error,
Info, Unrelease, Release, or Export
type for appropriate routing"]:::main N_MessageType_Node1 -- Yes --> N_MessageType_Node1_action N_MessageType_Node1_action --> E_MessageType N_MessageType_Node0 -- No --> N_MessageType_Node1 N_MessageType_Node2{"The system evaluates the message
type and processing requirements"}:::decision N_MessageType_Node2_action["The message is classified as
multi-manifest, train operations, or
standard processing based on message
characteristics"]:::main N_MessageType_Node2 -- Yes --> N_MessageType_Node2_action N_MessageType_Node2_action --> E_MessageType N_MessageType_Node1 -- No --> N_MessageType_Node2 N_MessageType_Node2 -- No --> E_MessageType
type Release, Hold, Status, or Error"}:::decision N_MessageType_Node0_action["The system routes K1 comment
formatting to the appropriate
message type handler"]:::exclusion N_MessageType_Node0 -- Yes -->|Alternative| N_MessageType_Node0_action N_MessageType_Node0_action --> E_MessageType S_MessageType --> N_MessageType_Node0 N_MessageType_Node1{"The system evaluates the message
type"}:::decision N_MessageType_Node1_action["The message is classified as Error,
Info, Unrelease, Release, or Export
type for appropriate routing"]:::main N_MessageType_Node1 -- Yes --> N_MessageType_Node1_action N_MessageType_Node1_action --> E_MessageType N_MessageType_Node0 -- No --> N_MessageType_Node1 N_MessageType_Node2{"The system evaluates the message
type and processing requirements"}:::decision N_MessageType_Node2_action["The message is classified as
multi-manifest, train operations, or
standard processing based on message
characteristics"]:::main N_MessageType_Node2 -- Yes --> N_MessageType_Node2_action N_MessageType_Node2_action --> E_MessageType N_MessageType_Node1 -- No --> N_MessageType_Node2 N_MessageType_Node2 -- No --> E_MessageType
File: GCX016.cbl
GIVEN:
K1 comments are ready for formatting and a message is being prepared
WHEN:
The system evaluates the message type (Release, Hold, Status, or Error)
THEN:
The system routes K1 comment formatting to the appropriate message type handler
File: GCX016.cbl
GIVEN:
A message has been generated for routing
WHEN:
The system evaluates the message type
THEN:
The message is classified as Error, Info, Unrelease, Release, or Export type for appropriate routing
File: GCX016.cbl
GIVEN:
A message is available for processing from the message queue
WHEN:
- The system evaluates the message type
- Processing requirements
THEN:
The message is classified as multi-manifest, train operations, or standard processing based on message characteristics
β Consolidated Acceptance Criteria
- The system formats the K1 comments for message inclusion → the K1 comments are formatted as free-form text appropriate for the specific message type
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_FormatFreeFormText(["Start Step"])
E_FormatFreeFormText(["End Step"])
N_FormatFreeFormText_Node0{"The system formats the K1 comments
for message inclusion"}:::decision N_FormatFreeFormText_Node0_action["The K1 comments are formatted as
free-form text appropriate for the
specific message type"]:::main N_FormatFreeFormText_Node0 -- Yes --> N_FormatFreeFormText_Node0_action N_FormatFreeFormText_Node0_action --> E_FormatFreeFormText S_FormatFreeFormText --> N_FormatFreeFormText_Node0 N_FormatFreeFormText_Node0 -- No --> E_FormatFreeFormText
for message inclusion"}:::decision N_FormatFreeFormText_Node0_action["The K1 comments are formatted as
free-form text appropriate for the
specific message type"]:::main N_FormatFreeFormText_Node0 -- Yes --> N_FormatFreeFormText_Node0_action N_FormatFreeFormText_Node0_action --> E_FormatFreeFormText S_FormatFreeFormText --> N_FormatFreeFormText_Node0 N_FormatFreeFormText_Node0 -- No --> E_FormatFreeFormText
File: GCX016.cbl
GIVEN:
K1 comments are available and message type has been determined
WHEN:
The system formats the K1 comments for message inclusion
THEN:
The K1 comments are formatted as free-form text appropriate for the specific message type
β Consolidated Acceptance Criteria
- The system prepares the final message for transmission → the formatted K1 comments are appended to the message body
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AppendtoMessageBody(["Start Step"])
E_AppendtoMessageBody(["End Step"])
N_AppendtoMessageBody_Node0{"The system prepares the final
message for transmission"}:::decision N_AppendtoMessageBody_Node0_action["The formatted K1 comments are
appended to the message body"]:::main N_AppendtoMessageBody_Node0 -- Yes --> N_AppendtoMessageBody_Node0_action N_AppendtoMessageBody_Node0_action --> E_AppendtoMessageBody S_AppendtoMessageBody --> N_AppendtoMessageBody_Node0 N_AppendtoMessageBody_Node0 -- No --> E_AppendtoMessageBody
message for transmission"}:::decision N_AppendtoMessageBody_Node0_action["The formatted K1 comments are
appended to the message body"]:::main N_AppendtoMessageBody_Node0 -- Yes --> N_AppendtoMessageBody_Node0_action N_AppendtoMessageBody_Node0_action --> E_AppendtoMessageBody S_AppendtoMessageBody --> N_AppendtoMessageBody_Node0 N_AppendtoMessageBody_Node0 -- No --> E_AppendtoMessageBody
File: GCX016.cbl
GIVEN:
K1 comments have been formatted as free-form text
WHEN:
The system prepares the final message for transmission
THEN:
The formatted K1 comments are appended to the message body
β Consolidated Acceptance Criteria
- If the message source entity → the message is classified as either Canadian Pacific entity or standard entity for appropriate processing path
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MessagefromCanadianPacificEntity(["Start Step"])
E_MessagefromCanadianPacificEntity(["End Step"])
N_MessagefromCanadianPacificEntity_Node0{"The system evaluates the message
source entity"}:::decision N_MessagefromCanadianPacificEntity_Node0_action["The message is classified as either
Canadian Pacific entity or standard
entity for appropriate processing
path"]:::main N_MessagefromCanadianPacificEntity_Node0 -- Yes --> N_MessagefromCanadianPacificEntity_Node0_action N_MessagefromCanadianPacificEntity_Node0_action --> E_MessagefromCanadianPacificEntity S_MessagefromCanadianPacificEntity --> N_MessagefromCanadianPacificEntity_Node0 N_MessagefromCanadianPacificEntity_Node0 -- No --> E_MessagefromCanadianPacificEntity
source entity"}:::decision N_MessagefromCanadianPacificEntity_Node0_action["The message is classified as either
Canadian Pacific entity or standard
entity for appropriate processing
path"]:::main N_MessagefromCanadianPacificEntity_Node0 -- Yes --> N_MessagefromCanadianPacificEntity_Node0_action N_MessagefromCanadianPacificEntity_Node0_action --> E_MessagefromCanadianPacificEntity S_MessagefromCanadianPacificEntity --> N_MessagefromCanadianPacificEntity_Node0 N_MessagefromCanadianPacificEntity_Node0 -- No --> E_MessagefromCanadianPacificEntity
File: GCX016.cbl
GIVEN:
A message is received for processing
WHEN:
The system evaluates the message source entity
THEN:
The message is classified as either Canadian Pacific entity or standard entity for appropriate processing path
β Consolidated Acceptance Criteria
- The system analyzes the bond creation source → the bond is identified as broker-created and flagged for special handling
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IdentifyBrokerCreatedBond(["Start Step"])
E_IdentifyBrokerCreatedBond(["End Step"])
N_IdentifyBrokerCreatedBond_Node0{"The system analyzes the bond
creation source"}:::decision N_IdentifyBrokerCreatedBond_Node0_action["The bond is identified as
broker-created and flagged for
special handling"]:::main N_IdentifyBrokerCreatedBond_Node0 -- Yes --> N_IdentifyBrokerCreatedBond_Node0_action N_IdentifyBrokerCreatedBond_Node0_action --> E_IdentifyBrokerCreatedBond S_IdentifyBrokerCreatedBond --> N_IdentifyBrokerCreatedBond_Node0 N_IdentifyBrokerCreatedBond_Node0 -- No --> E_IdentifyBrokerCreatedBond
creation source"}:::decision N_IdentifyBrokerCreatedBond_Node0_action["The bond is identified as
broker-created and flagged for
special handling"]:::main N_IdentifyBrokerCreatedBond_Node0 -- Yes --> N_IdentifyBrokerCreatedBond_Node0_action N_IdentifyBrokerCreatedBond_Node0_action --> E_IdentifyBrokerCreatedBond S_IdentifyBrokerCreatedBond --> N_IdentifyBrokerCreatedBond_Node0 N_IdentifyBrokerCreatedBond_Node0 -- No --> E_IdentifyBrokerCreatedBond
File: GCX016.cbl
GIVEN:
A Canadian Pacific entity message is being processed
WHEN:
The system analyzes the bond creation source
THEN:
- The bond is identified as broker-created
- Flagged for special handling
β Consolidated Acceptance Criteria
- The system processes the bond message content → bond control numbers, broker information, and related bond details are extracted and stored
- The system processes the X4 segment containing bond information → the system extracts entry numbers, bond control numbers, and entry type codes for bond processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExtractBondInformation(["Start Step"])
E_ExtractBondInformation(["End Step"])
N_ExtractBondInformation_Node0{"The system processes the bond
message content"}:::decision N_ExtractBondInformation_Node0_action["Bond control numbers, broker
information, and related bond
details are extracted and stored"]:::main N_ExtractBondInformation_Node0 -- Yes --> N_ExtractBondInformation_Node0_action N_ExtractBondInformation_Node0_action --> E_ExtractBondInformation S_ExtractBondInformation --> N_ExtractBondInformation_Node0 N_ExtractBondInformation_Node1{"The system processes the X4 segment
containing bond information"}:::decision N_ExtractBondInformation_Node1_action["The system extracts entry numbers,
bond control numbers, and entry type
codes for bond processing"]:::main N_ExtractBondInformation_Node1 -- Yes --> N_ExtractBondInformation_Node1_action N_ExtractBondInformation_Node1_action --> E_ExtractBondInformation N_ExtractBondInformation_Node0 -- No --> N_ExtractBondInformation_Node1 N_ExtractBondInformation_Node1 -- No --> E_ExtractBondInformation
message content"}:::decision N_ExtractBondInformation_Node0_action["Bond control numbers, broker
information, and related bond
details are extracted and stored"]:::main N_ExtractBondInformation_Node0 -- Yes --> N_ExtractBondInformation_Node0_action N_ExtractBondInformation_Node0_action --> E_ExtractBondInformation S_ExtractBondInformation --> N_ExtractBondInformation_Node0 N_ExtractBondInformation_Node1{"The system processes the X4 segment
containing bond information"}:::decision N_ExtractBondInformation_Node1_action["The system extracts entry numbers,
bond control numbers, and entry type
codes for bond processing"]:::main N_ExtractBondInformation_Node1 -- Yes --> N_ExtractBondInformation_Node1_action N_ExtractBondInformation_Node1_action --> E_ExtractBondInformation N_ExtractBondInformation_Node0 -- No --> N_ExtractBondInformation_Node1 N_ExtractBondInformation_Node1 -- No --> E_ExtractBondInformation
File: GCX016.cbl
GIVEN:
A broker-created bond has been identified
WHEN:
The system processes the bond message content
THEN:
- Bond control numbers, broker information, and related bond details are extracted
- Stored
File: GCX016.cbl
GIVEN:
A broker-created bond message from Canadian Pacific is identified
WHEN:
The system processes the X4 segment containing bond information
THEN:
The system extracts entry numbers, bond control numbers, and entry type codes for bond processing
β Consolidated Acceptance Criteria
- The system prepares the notification message → the message is formatted with special bond message structure including bond control numbers and broker details
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_FormatSpecialBondMessage(["Start Step"])
E_FormatSpecialBondMessage(["End Step"])
N_FormatSpecialBondMessage_Node0{"The system prepares the
notification message"}:::decision N_FormatSpecialBondMessage_Node0_action["The message is formatted with
special bond message structure
including bond control numbers and
broker details"]:::main N_FormatSpecialBondMessage_Node0 -- Yes --> N_FormatSpecialBondMessage_Node0_action N_FormatSpecialBondMessage_Node0_action --> E_FormatSpecialBondMessage S_FormatSpecialBondMessage --> N_FormatSpecialBondMessage_Node0 N_FormatSpecialBondMessage_Node0 -- No --> E_FormatSpecialBondMessage
notification message"}:::decision N_FormatSpecialBondMessage_Node0_action["The message is formatted with
special bond message structure
including bond control numbers and
broker details"]:::main N_FormatSpecialBondMessage_Node0 -- Yes --> N_FormatSpecialBondMessage_Node0_action N_FormatSpecialBondMessage_Node0_action --> E_FormatSpecialBondMessage S_FormatSpecialBondMessage --> N_FormatSpecialBondMessage_Node0 N_FormatSpecialBondMessage_Node0 -- No --> E_FormatSpecialBondMessage
File: GCX016.cbl
GIVEN:
Bond information has been extracted from a broker-created bond
WHEN:
The system prepares the notification message
THEN:
- The message is formatted with special bond message structure including bond control numbers
- Broker details
β Consolidated Acceptance Criteria
- The message is from Canadian Pacific entity → canadian Pacific specific formatting rules are applied including entity-specific message structure and content requirements
- The system formats the bond message for processing → the system applies CPRS-specific formatting by setting cargo status to 'ERROR' and clearing car ID information for CPRS records
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ApplyCanadianPacificFormattingRules(["Start Step"])
E_ApplyCanadianPacificFormattingRules(["End Step"])
N_ApplyCanadianPacificFormattingRules_Node0{"The message is from Canadian
Pacific entity"}:::decision N_ApplyCanadianPacificFormattingRules_Node0_action["Canadian Pacific specific
formatting rules are applied
including entity-specific message
structure and content requirements"]:::main N_ApplyCanadianPacificFormattingRules_Node0 -- Yes --> N_ApplyCanadianPacificFormattingRules_Node0_action N_ApplyCanadianPacificFormattingRules_Node0_action --> E_ApplyCanadianPacificFormattingRules S_ApplyCanadianPacificFormattingRules --> N_ApplyCanadianPacificFormattingRules_Node0 N_ApplyCanadianPacificFormattingRules_Node1{"The system formats the bond message
for processing"}:::decision N_ApplyCanadianPacificFormattingRules_Node1_action["The system applies CPRS-specific
formatting by setting cargo status
to ERROR and clearing car ID
information for CPRS records"]:::main N_ApplyCanadianPacificFormattingRules_Node1 -- Yes --> N_ApplyCanadianPacificFormattingRules_Node1_action N_ApplyCanadianPacificFormattingRules_Node1_action --> E_ApplyCanadianPacificFormattingRules N_ApplyCanadianPacificFormattingRules_Node0 -- No --> N_ApplyCanadianPacificFormattingRules_Node1 N_ApplyCanadianPacificFormattingRules_Node1 -- No --> E_ApplyCanadianPacificFormattingRules
Pacific entity"}:::decision N_ApplyCanadianPacificFormattingRules_Node0_action["Canadian Pacific specific
formatting rules are applied
including entity-specific message
structure and content requirements"]:::main N_ApplyCanadianPacificFormattingRules_Node0 -- Yes --> N_ApplyCanadianPacificFormattingRules_Node0_action N_ApplyCanadianPacificFormattingRules_Node0_action --> E_ApplyCanadianPacificFormattingRules S_ApplyCanadianPacificFormattingRules --> N_ApplyCanadianPacificFormattingRules_Node0 N_ApplyCanadianPacificFormattingRules_Node1{"The system formats the bond message
for processing"}:::decision N_ApplyCanadianPacificFormattingRules_Node1_action["The system applies CPRS-specific
formatting by setting cargo status
to ERROR and clearing car ID
information for CPRS records"]:::main N_ApplyCanadianPacificFormattingRules_Node1 -- Yes --> N_ApplyCanadianPacificFormattingRules_Node1_action N_ApplyCanadianPacificFormattingRules_Node1_action --> E_ApplyCanadianPacificFormattingRules N_ApplyCanadianPacificFormattingRules_Node0 -- No --> N_ApplyCanadianPacificFormattingRules_Node1 N_ApplyCanadianPacificFormattingRules_Node1 -- No --> E_ApplyCanadianPacificFormattingRules
File: GCX016.cbl
GIVEN:
A special bond message has been formatted
WHEN:
The message is from Canadian Pacific entity
THEN:
- Canadian pacific specific formatting rules are applied including entity-specific message structure
- Content requirements
File: GCX016.cbl
GIVEN:
Bond information has been extracted from a Canadian Pacific message
WHEN:
The system formats the bond message for processing
THEN:
The system applies CPRS-specific formatting by setting cargo status to 'ERROR' and clearing car ID information for CPRS records
β Consolidated Acceptance Criteria
- The system finalizes the notification preparation → the bond notification is prepared with complete formatting, bond details, and ready for routing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_PrepareBondNotification(["Start Step"])
E_PrepareBondNotification(["End Step"])
N_PrepareBondNotification_Node0{"The system finalizes the
notification preparation"}:::decision N_PrepareBondNotification_Node0_action["The bond notification is prepared
with complete formatting, bond
details, and ready for routing"]:::main N_PrepareBondNotification_Node0 -- Yes --> N_PrepareBondNotification_Node0_action N_PrepareBondNotification_Node0_action --> E_PrepareBondNotification S_PrepareBondNotification --> N_PrepareBondNotification_Node0 N_PrepareBondNotification_Node0 -- No --> E_PrepareBondNotification
notification preparation"}:::decision N_PrepareBondNotification_Node0_action["The bond notification is prepared
with complete formatting, bond
details, and ready for routing"]:::main N_PrepareBondNotification_Node0 -- Yes --> N_PrepareBondNotification_Node0_action N_PrepareBondNotification_Node0_action --> E_PrepareBondNotification S_PrepareBondNotification --> N_PrepareBondNotification_Node0 N_PrepareBondNotification_Node0 -- No --> E_PrepareBondNotification
File: GCX016.cbl
GIVEN:
Canadian Pacific formatting rules have been applied to the bond message
WHEN:
The system finalizes the notification preparation
THEN:
The bond notification is prepared with complete formatting, bond details, and ready for routing
β Consolidated Acceptance Criteria
- The system routes the message for delivery → the notification is sent to the Merlin message system for final delivery to appropriate recipients
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RoutetoMerlinMessageSystem(["Start Step"])
E_RoutetoMerlinMessageSystem(["End Step"])
N_RoutetoMerlinMessageSystem_Node0{"The system routes the message for
delivery"}:::decision N_RoutetoMerlinMessageSystem_Node0_action["The notification is sent to the
Merlin message system for final
delivery to appropriate recipients"]:::main N_RoutetoMerlinMessageSystem_Node0 -- Yes --> N_RoutetoMerlinMessageSystem_Node0_action N_RoutetoMerlinMessageSystem_Node0_action --> E_RoutetoMerlinMessageSystem S_RoutetoMerlinMessageSystem --> N_RoutetoMerlinMessageSystem_Node0 N_RoutetoMerlinMessageSystem_Node0 -- No --> E_RoutetoMerlinMessageSystem
delivery"}:::decision N_RoutetoMerlinMessageSystem_Node0_action["The notification is sent to the
Merlin message system for final
delivery to appropriate recipients"]:::main N_RoutetoMerlinMessageSystem_Node0 -- Yes --> N_RoutetoMerlinMessageSystem_Node0_action N_RoutetoMerlinMessageSystem_Node0_action --> E_RoutetoMerlinMessageSystem S_RoutetoMerlinMessageSystem --> N_RoutetoMerlinMessageSystem_Node0 N_RoutetoMerlinMessageSystem_Node0 -- No --> E_RoutetoMerlinMessageSystem
File: GCX016.cbl
GIVEN:
A bond notification has been prepared
WHEN:
The system routes the message for delivery
THEN:
The notification is sent to the Merlin message system for final delivery to appropriate recipients
β Consolidated Acceptance Criteria
- The system determines the processing path → the message is processed through standard message handling procedures without special bond formatting
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_StandardMessageProcessing(["Start Step"])
E_StandardMessageProcessing(["End Step"])
N_StandardMessageProcessing_Node0{"The system determines the
processing path"}:::decision N_StandardMessageProcessing_Node0_action["The message is processed through
standard message handling procedures
without special bond formatting"]:::main N_StandardMessageProcessing_Node0 -- Yes --> N_StandardMessageProcessing_Node0_action N_StandardMessageProcessing_Node0_action --> E_StandardMessageProcessing S_StandardMessageProcessing --> N_StandardMessageProcessing_Node0 N_StandardMessageProcessing_Node0 -- No --> E_StandardMessageProcessing
processing path"}:::decision N_StandardMessageProcessing_Node0_action["The message is processed through
standard message handling procedures
without special bond formatting"]:::main N_StandardMessageProcessing_Node0 -- Yes --> N_StandardMessageProcessing_Node0_action N_StandardMessageProcessing_Node0_action --> E_StandardMessageProcessing S_StandardMessageProcessing --> N_StandardMessageProcessing_Node0 N_StandardMessageProcessing_Node0 -- No --> E_StandardMessageProcessing
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
A message is not from Canadian Pacific entity
WHEN:
The system determines the processing path
THEN:
The message is processed through standard message handling procedures without special bond formatting
β Consolidated Acceptance Criteria
- The system retrieves the equipment type from the cargo record → the system should check if equipment type information is present and proceed to validation if available, or skip to invalid handling if not present
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_EquipmentTypePresent(["Start Step"])
E_EquipmentTypePresent(["End Step"])
N_EquipmentTypePresent_Node0{"The system retrieves the equipment
type from the cargo record"}:::decision N_EquipmentTypePresent_Node0_action["The system should check if
equipment type information is
present and proceed to validation if
available, or skip to invalid
handling if not present"]:::main N_EquipmentTypePresent_Node0 -- Yes --> N_EquipmentTypePresent_Node0_action N_EquipmentTypePresent_Node0_action --> E_EquipmentTypePresent S_EquipmentTypePresent --> N_EquipmentTypePresent_Node0 N_EquipmentTypePresent_Node0 -- No --> E_EquipmentTypePresent
type from the cargo record"}:::decision N_EquipmentTypePresent_Node0_action["The system should check if
equipment type information is
present and proceed to validation if
available, or skip to invalid
handling if not present"]:::main N_EquipmentTypePresent_Node0 -- Yes --> N_EquipmentTypePresent_Node0_action N_EquipmentTypePresent_Node0_action --> E_EquipmentTypePresent S_EquipmentTypePresent --> N_EquipmentTypePresent_Node0 N_EquipmentTypePresent_Node0 -- No --> E_EquipmentTypePresent
File: GCX016.cbl
GIVEN:
A cargo record is being processed for equipment integration
WHEN:
The system retrieves the equipment type from the cargo record
THEN:
- The system should check if equipment type information is present
- Proceed to validation if available, or skip to invalid handling if not present
β Consolidated Acceptance Criteria
- The system checks the equipment type against the list of valid container and equipment types including containers, trailers, and various other equipment types → the system should classify the equipment type as valid if it matches approved container/equipment types, or invalid if it does not match
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IsValidContainerEquipmentType(["Start Step"])
E_IsValidContainerEquipmentType(["End Step"])
N_IsValidContainerEquipmentType_Node0{"The system checks the equipment
type against the list of valid
container and equipment types
including containers, trailers, and
various other equipment types"}:::decision N_IsValidContainerEquipmentType_Node0_action["The system should classify the
equipment type as valid if it
matches approved containerequipment
types, or invalid if it does not
match"]:::main N_IsValidContainerEquipmentType_Node0 -- Yes --> N_IsValidContainerEquipmentType_Node0_action N_IsValidContainerEquipmentType_Node0_action --> E_IsValidContainerEquipmentType S_IsValidContainerEquipmentType --> N_IsValidContainerEquipmentType_Node0 N_IsValidContainerEquipmentType_Node0 -- No --> E_IsValidContainerEquipmentType
type against the list of valid
container and equipment types
including containers, trailers, and
various other equipment types"}:::decision N_IsValidContainerEquipmentType_Node0_action["The system should classify the
equipment type as valid if it
matches approved containerequipment
types, or invalid if it does not
match"]:::main N_IsValidContainerEquipmentType_Node0 -- Yes --> N_IsValidContainerEquipmentType_Node0_action N_IsValidContainerEquipmentType_Node0_action --> E_IsValidContainerEquipmentType S_IsValidContainerEquipmentType --> N_IsValidContainerEquipmentType_Node0 N_IsValidContainerEquipmentType_Node0 -- No --> E_IsValidContainerEquipmentType
File: GCX016.cbl
GIVEN:
An equipment type has been retrieved from the cargo record
WHEN:
- The system checks the equipment type against the list of valid container
- Equipment types including containers, trailers, and various other equipment types
THEN:
The system should classify the equipment type as valid if it matches approved container/equipment types, or invalid if it does not match
β Consolidated Acceptance Criteria
- The validation process determines the equipment type is valid for integration → the system should set the integration call flag to proceed and allow the integration call to be made
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetIntegrationCallFlagtoProceed(["Start Step"])
E_SetIntegrationCallFlagtoProceed(["End Step"])
N_SetIntegrationCallFlagtoProceed_Node0{"The validation process determines
the equipment type is valid for
integration"}:::decision N_SetIntegrationCallFlagtoProceed_Node0_action["The system should set the
integration call flag to proceed and
allow the integration call to be
made"]:::main N_SetIntegrationCallFlagtoProceed_Node0 -- Yes --> N_SetIntegrationCallFlagtoProceed_Node0_action N_SetIntegrationCallFlagtoProceed_Node0_action --> E_SetIntegrationCallFlagtoProceed S_SetIntegrationCallFlagtoProceed --> N_SetIntegrationCallFlagtoProceed_Node0 N_SetIntegrationCallFlagtoProceed_Node0 -- No --> E_SetIntegrationCallFlagtoProceed
the equipment type is valid for
integration"}:::decision N_SetIntegrationCallFlagtoProceed_Node0_action["The system should set the
integration call flag to proceed and
allow the integration call to be
made"]:::main N_SetIntegrationCallFlagtoProceed_Node0 -- Yes --> N_SetIntegrationCallFlagtoProceed_Node0_action N_SetIntegrationCallFlagtoProceed_Node0_action --> E_SetIntegrationCallFlagtoProceed S_SetIntegrationCallFlagtoProceed --> N_SetIntegrationCallFlagtoProceed_Node0 N_SetIntegrationCallFlagtoProceed_Node0 -- No --> E_SetIntegrationCallFlagtoProceed
File: GCX016.cbl
GIVEN:
The equipment type has been validated as a recognized container or equipment type
WHEN:
The validation process determines the equipment type is valid for integration
THEN:
- The system should set the integration call flag to proceed
- Allow the integration call to be made
β Consolidated Acceptance Criteria
- The validation process identifies an invalid or missing equipment type → the system should log the invalid equipment type occurrence and set the integration call flag to skip processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogInvalidEquipmentType(["Start Step"])
E_LogInvalidEquipmentType(["End Step"])
N_LogInvalidEquipmentType_Node0{"The validation process identifies
an invalid or missing equipment type"}:::decision N_LogInvalidEquipmentType_Node0_action["The system should log the invalid
equipment type occurrence and set
the integration call flag to skip
processing"]:::exclusion N_LogInvalidEquipmentType_Node0 -- Yes -->|Alternative| N_LogInvalidEquipmentType_Node0_action N_LogInvalidEquipmentType_Node0_action --> E_LogInvalidEquipmentType S_LogInvalidEquipmentType --> N_LogInvalidEquipmentType_Node0 N_LogInvalidEquipmentType_Node0 -- No --> E_LogInvalidEquipmentType
an invalid or missing equipment type"}:::decision N_LogInvalidEquipmentType_Node0_action["The system should log the invalid
equipment type occurrence and set
the integration call flag to skip
processing"]:::exclusion N_LogInvalidEquipmentType_Node0 -- Yes -->|Alternative| N_LogInvalidEquipmentType_Node0_action N_LogInvalidEquipmentType_Node0_action --> E_LogInvalidEquipmentType S_LogInvalidEquipmentType --> N_LogInvalidEquipmentType_Node0 N_LogInvalidEquipmentType_Node0 -- No --> E_LogInvalidEquipmentType
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
The equipment type is either not present in the cargo record or does not match valid container/equipment types
WHEN:
The validation process identifies an invalid or missing equipment type
THEN:
- The system should log the invalid equipment type occurrence
- Set the integration call flag to skip processing
β Consolidated Acceptance Criteria
- The system needs to determine the next processing step after validation failure → the system should set the integration call flag to skip and prevent any integration calls from being made
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetIntegrationCallFlagtoSkip(["Start Step"])
E_SetIntegrationCallFlagtoSkip(["End Step"])
N_SetIntegrationCallFlagtoSkip_Node0{"The system needs to determine the
next processing step after
validation failure"}:::decision N_SetIntegrationCallFlagtoSkip_Node0_action["The system should set the
integration call flag to skip and
prevent any integration calls from
being made"]:::main N_SetIntegrationCallFlagtoSkip_Node0 -- Yes --> N_SetIntegrationCallFlagtoSkip_Node0_action N_SetIntegrationCallFlagtoSkip_Node0_action --> E_SetIntegrationCallFlagtoSkip S_SetIntegrationCallFlagtoSkip --> N_SetIntegrationCallFlagtoSkip_Node0 N_SetIntegrationCallFlagtoSkip_Node0 -- No --> E_SetIntegrationCallFlagtoSkip
next processing step after
validation failure"}:::decision N_SetIntegrationCallFlagtoSkip_Node0_action["The system should set the
integration call flag to skip and
prevent any integration calls from
being made"]:::main N_SetIntegrationCallFlagtoSkip_Node0 -- Yes --> N_SetIntegrationCallFlagtoSkip_Node0_action N_SetIntegrationCallFlagtoSkip_Node0_action --> E_SetIntegrationCallFlagtoSkip S_SetIntegrationCallFlagtoSkip --> N_SetIntegrationCallFlagtoSkip_Node0 N_SetIntegrationCallFlagtoSkip_Node0 -- No --> E_SetIntegrationCallFlagtoSkip
File: GCX016.cbl
GIVEN:
The equipment type validation has failed due to invalid or missing equipment type
WHEN:
The system needs to determine the next processing step after validation failure
THEN:
- The system should set the integration call flag to skip
- Prevent any integration calls from being made
β Consolidated Acceptance Criteria
- The system processes the cargo status for integration service mapping → the system maps the hold status to appropriate integration service status description based on hold type (border hold, destination hold, or combined hold conditions)
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MapHoldStatus(["Start Step"])
E_MapHoldStatus(["End Step"])
N_MapHoldStatus_Node0{"The system processes the cargo
status for integration service
mapping"}:::decision N_MapHoldStatus_Node0_action["The system maps the hold status to
appropriate integration service
status description based on hold
type border hold, destination hold,
or combined hold conditions"]:::main N_MapHoldStatus_Node0 -- Yes --> N_MapHoldStatus_Node0_action N_MapHoldStatus_Node0_action --> E_MapHoldStatus S_MapHoldStatus --> N_MapHoldStatus_Node0 N_MapHoldStatus_Node0 -- No --> E_MapHoldStatus
status for integration service
mapping"}:::decision N_MapHoldStatus_Node0_action["The system maps the hold status to
appropriate integration service
status description based on hold
type border hold, destination hold,
or combined hold conditions"]:::main N_MapHoldStatus_Node0 -- Yes --> N_MapHoldStatus_Node0_action N_MapHoldStatus_Node0_action --> E_MapHoldStatus S_MapHoldStatus --> N_MapHoldStatus_Node0 N_MapHoldStatus_Node0 -- No --> E_MapHoldStatus
File: GCX016.cbl
GIVEN:
A cargo record has an internal hold status
WHEN:
The system processes the cargo status for integration service mapping
THEN:
The system maps the hold status to appropriate integration service status description based on hold type (border hold, destination hold, or combined hold conditions)
β Consolidated Acceptance Criteria
- The system processes the cargo status for integration service mapping → the system maps the release status to appropriate integration service status description based on release type (full release when released quantity equals total quantity, or partial release when released quantity is less than total quantity)
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MapReleaseStatus(["Start Step"])
E_MapReleaseStatus(["End Step"])
N_MapReleaseStatus_Node0{"The system processes the cargo
status for integration service
mapping"}:::decision N_MapReleaseStatus_Node0_action["The system maps the release status
to appropriate integration service
status description based on release
type full release when released
quantity equals total quantity, or
partial release when released
quantity is less than total quantity"]:::main N_MapReleaseStatus_Node0 -- Yes --> N_MapReleaseStatus_Node0_action N_MapReleaseStatus_Node0_action --> E_MapReleaseStatus S_MapReleaseStatus --> N_MapReleaseStatus_Node0 N_MapReleaseStatus_Node0 -- No --> E_MapReleaseStatus
status for integration service
mapping"}:::decision N_MapReleaseStatus_Node0_action["The system maps the release status
to appropriate integration service
status description based on release
type full release when released
quantity equals total quantity, or
partial release when released
quantity is less than total quantity"]:::main N_MapReleaseStatus_Node0 -- Yes --> N_MapReleaseStatus_Node0_action N_MapReleaseStatus_Node0_action --> E_MapReleaseStatus S_MapReleaseStatus --> N_MapReleaseStatus_Node0 N_MapReleaseStatus_Node0 -- No --> E_MapReleaseStatus
File: GCX016.cbl
GIVEN:
A cargo record has an internal release status
WHEN:
The system processes the cargo status for integration service mapping
THEN:
The system maps the release status to appropriate integration service status description based on release type (full release when released quantity equals total quantity, or partial release when released quantity is less than total quantity)
β Consolidated Acceptance Criteria
- The system processes the cargo status for integration service mapping → the system maps the PTT status to 'Permit to Transfer' integration service status description
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MapPTTStatus(["Start Step"])
E_MapPTTStatus(["End Step"])
N_MapPTTStatus_Node0{"The system processes the cargo
status for integration service
mapping"}:::decision N_MapPTTStatus_Node0_action["The system maps the PTT status to
Permit to Transfer integration
service status description"]:::main N_MapPTTStatus_Node0 -- Yes --> N_MapPTTStatus_Node0_action N_MapPTTStatus_Node0_action --> E_MapPTTStatus S_MapPTTStatus --> N_MapPTTStatus_Node0 N_MapPTTStatus_Node0 -- No --> E_MapPTTStatus
status for integration service
mapping"}:::decision N_MapPTTStatus_Node0_action["The system maps the PTT status to
Permit to Transfer integration
service status description"]:::main N_MapPTTStatus_Node0 -- Yes --> N_MapPTTStatus_Node0_action N_MapPTTStatus_Node0_action --> E_MapPTTStatus S_MapPTTStatus --> N_MapPTTStatus_Node0 N_MapPTTStatus_Node0 -- No --> E_MapPTTStatus
File: GCX016.cbl
GIVEN:
A cargo record has an internal PTT (Permit to Transfer) status
WHEN:
The system processes the cargo status for integration service mapping
THEN:
The system maps the PTT status to 'Permit to Transfer' integration service status description
β Consolidated Acceptance Criteria
- The system processes the cargo status for integration service mapping → the system maps the proceed status to integration service status description that includes the border arrival date information
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MapProceedStatus(["Start Step"])
E_MapProceedStatus(["End Step"])
N_MapProceedStatus_Node0{"The system processes the cargo
status for integration service
mapping"}:::decision N_MapProceedStatus_Node0_action["The system maps the proceed status
to integration service status
description that includes the border
arrival date information"]:::main N_MapProceedStatus_Node0 -- Yes --> N_MapProceedStatus_Node0_action N_MapProceedStatus_Node0_action --> E_MapProceedStatus S_MapProceedStatus --> N_MapProceedStatus_Node0 N_MapProceedStatus_Node0 -- No --> E_MapProceedStatus
status for integration service
mapping"}:::decision N_MapProceedStatus_Node0_action["The system maps the proceed status
to integration service status
description that includes the border
arrival date information"]:::main N_MapProceedStatus_Node0 -- Yes --> N_MapProceedStatus_Node0_action N_MapProceedStatus_Node0_action --> E_MapProceedStatus S_MapProceedStatus --> N_MapProceedStatus_Node0 N_MapProceedStatus_Node0 -- No --> E_MapProceedStatus
File: GCX016.cbl
GIVEN:
A cargo record has an internal proceed status with border arrival date
WHEN:
The system processes the cargo status for integration service mapping
THEN:
The system maps the proceed status to integration service status description that includes the border arrival date information
β Consolidated Acceptance Criteria
- The system processes the cargo status for integration service mapping → the system maps the arrival status to 'Train Arrival' integration service status description
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MapArrivalStatus(["Start Step"])
E_MapArrivalStatus(["End Step"])
N_MapArrivalStatus_Node0{"The system processes the cargo
status for integration service
mapping"}:::decision N_MapArrivalStatus_Node0_action["The system maps the arrival status
to Train Arrival integration service
status description"]:::main N_MapArrivalStatus_Node0 -- Yes --> N_MapArrivalStatus_Node0_action N_MapArrivalStatus_Node0_action --> E_MapArrivalStatus S_MapArrivalStatus --> N_MapArrivalStatus_Node0 N_MapArrivalStatus_Node0 -- No --> E_MapArrivalStatus
status for integration service
mapping"}:::decision N_MapArrivalStatus_Node0_action["The system maps the arrival status
to Train Arrival integration service
status description"]:::main N_MapArrivalStatus_Node0 -- Yes --> N_MapArrivalStatus_Node0_action N_MapArrivalStatus_Node0_action --> E_MapArrivalStatus S_MapArrivalStatus --> N_MapArrivalStatus_Node0 N_MapArrivalStatus_Node0 -- No --> E_MapArrivalStatus
File: GCX016.cbl
GIVEN:
A cargo record has an internal train arrival status
WHEN:
The system processes the cargo status for integration service mapping
THEN:
The system maps the arrival status to 'Train Arrival' integration service status description
β Consolidated Acceptance Criteria
- The system processes the cargo status for integration service mapping → the system maps the export status to 'Export Complete' integration service status description
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MapExportStatus(["Start Step"])
E_MapExportStatus(["End Step"])
N_MapExportStatus_Node0{"The system processes the cargo
status for integration service
mapping"}:::decision N_MapExportStatus_Node0_action["The system maps the export status
to Export Complete integration
service status description"]:::main N_MapExportStatus_Node0 -- Yes --> N_MapExportStatus_Node0_action N_MapExportStatus_Node0_action --> E_MapExportStatus S_MapExportStatus --> N_MapExportStatus_Node0 N_MapExportStatus_Node0 -- No --> E_MapExportStatus
status for integration service
mapping"}:::decision N_MapExportStatus_Node0_action["The system maps the export status
to Export Complete integration
service status description"]:::main N_MapExportStatus_Node0 -- Yes --> N_MapExportStatus_Node0_action N_MapExportStatus_Node0_action --> E_MapExportStatus S_MapExportStatus --> N_MapExportStatus_Node0 N_MapExportStatus_Node0 -- No --> E_MapExportStatus
File: GCX016.cbl
GIVEN:
A cargo record has an internal export completion status
WHEN:
The system processes the cargo status for integration service mapping
THEN:
The system maps the export status to 'Export Complete' integration service status description
β Consolidated Acceptance Criteria
- The system processes the cargo status for integration service mapping → the system maps the seizure status to 'Customs Seizure' integration service status description
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MapSeizureStatus(["Start Step"])
E_MapSeizureStatus(["End Step"])
N_MapSeizureStatus_Node0{"The system processes the cargo
status for integration service
mapping"}:::decision N_MapSeizureStatus_Node0_action["The system maps the seizure status
to Customs Seizure integration
service status description"]:::main N_MapSeizureStatus_Node0 -- Yes --> N_MapSeizureStatus_Node0_action N_MapSeizureStatus_Node0_action --> E_MapSeizureStatus S_MapSeizureStatus --> N_MapSeizureStatus_Node0 N_MapSeizureStatus_Node0 -- No --> E_MapSeizureStatus
status for integration service
mapping"}:::decision N_MapSeizureStatus_Node0_action["The system maps the seizure status
to Customs Seizure integration
service status description"]:::main N_MapSeizureStatus_Node0 -- Yes --> N_MapSeizureStatus_Node0_action N_MapSeizureStatus_Node0_action --> E_MapSeizureStatus S_MapSeizureStatus --> N_MapSeizureStatus_Node0 N_MapSeizureStatus_Node0 -- No --> E_MapSeizureStatus
File: GCX016.cbl
GIVEN:
A cargo record has an internal customs seizure status
WHEN:
The system processes the cargo status for integration service mapping
THEN:
The system maps the seizure status to 'Customs Seizure' integration service status description
β Consolidated Acceptance Criteria
- The system processes the cargo status for integration service mapping → the system maps the FDA hold status to 'FDA Destination Hold' integration service status description
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MapFDAHoldStatus(["Start Step"])
E_MapFDAHoldStatus(["End Step"])
N_MapFDAHoldStatus_Node0{"The system processes the cargo
status for integration service
mapping"}:::decision N_MapFDAHoldStatus_Node0_action["The system maps the FDA hold status
to FDA Destination Hold integration
service status description"]:::main N_MapFDAHoldStatus_Node0 -- Yes --> N_MapFDAHoldStatus_Node0_action N_MapFDAHoldStatus_Node0_action --> E_MapFDAHoldStatus S_MapFDAHoldStatus --> N_MapFDAHoldStatus_Node0 N_MapFDAHoldStatus_Node0 -- No --> E_MapFDAHoldStatus
status for integration service
mapping"}:::decision N_MapFDAHoldStatus_Node0_action["The system maps the FDA hold status
to FDA Destination Hold integration
service status description"]:::main N_MapFDAHoldStatus_Node0 -- Yes --> N_MapFDAHoldStatus_Node0_action N_MapFDAHoldStatus_Node0_action --> E_MapFDAHoldStatus S_MapFDAHoldStatus --> N_MapFDAHoldStatus_Node0 N_MapFDAHoldStatus_Node0 -- No --> E_MapFDAHoldStatus
File: GCX016.cbl
GIVEN:
A cargo record has an internal FDA hold status
WHEN:
The system processes the cargo status for integration service mapping
THEN:
The system maps the FDA hold status to 'FDA Destination Hold' integration service status description
β Consolidated Acceptance Criteria
- The system validates the status description format → the system ensures the status description meets integration service format requirements and standards
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ValidateStatusDescriptionFormat(["Start Step"])
E_ValidateStatusDescriptionFormat(["End Step"])
N_ValidateStatusDescriptionFormat_Node0{"The system validates the status
description format"}:::decision N_ValidateStatusDescriptionFormat_Node0_action["The system ensures the status
description meets integration
service format requirements and
standards"]:::main N_ValidateStatusDescriptionFormat_Node0 -- Yes --> N_ValidateStatusDescriptionFormat_Node0_action N_ValidateStatusDescriptionFormat_Node0_action --> E_ValidateStatusDescriptionFormat S_ValidateStatusDescriptionFormat --> N_ValidateStatusDescriptionFormat_Node0 N_ValidateStatusDescriptionFormat_Node0 -- No --> E_ValidateStatusDescriptionFormat
description format"}:::decision N_ValidateStatusDescriptionFormat_Node0_action["The system ensures the status
description meets integration
service format requirements and
standards"]:::main N_ValidateStatusDescriptionFormat_Node0 -- Yes --> N_ValidateStatusDescriptionFormat_Node0_action N_ValidateStatusDescriptionFormat_Node0_action --> E_ValidateStatusDescriptionFormat S_ValidateStatusDescriptionFormat --> N_ValidateStatusDescriptionFormat_Node0 N_ValidateStatusDescriptionFormat_Node0 -- No --> E_ValidateStatusDescriptionFormat
File: GCX016.cbl
GIVEN:
A status description has been generated for integration service mapping
WHEN:
The system validates the status description format
THEN:
- The system ensures the status description meets integration service format requirements
- Standards
β Consolidated Acceptance Criteria
- The system prepares the status for integration service transmission → the system formats and packages the status description for external integration service call
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_PrepareStatusforIntegrationServiceCall(["Start Step"])
E_PrepareStatusforIntegrationServiceCall(["End Step"])
N_PrepareStatusforIntegrationServiceCall_Node0{"The system prepares the status for
integration service transmission"}:::decision N_PrepareStatusforIntegrationServiceCall_Node0_action["The system formats and packages the
status description for external
integration service call"]:::main N_PrepareStatusforIntegrationServiceCall_Node0 -- Yes --> N_PrepareStatusforIntegrationServiceCall_Node0_action N_PrepareStatusforIntegrationServiceCall_Node0_action --> E_PrepareStatusforIntegrationServiceCall S_PrepareStatusforIntegrationServiceCall --> N_PrepareStatusforIntegrationServiceCall_Node0 N_PrepareStatusforIntegrationServiceCall_Node0 -- No --> E_PrepareStatusforIntegrationServiceCall
integration service transmission"}:::decision N_PrepareStatusforIntegrationServiceCall_Node0_action["The system formats and packages the
status description for external
integration service call"]:::main N_PrepareStatusforIntegrationServiceCall_Node0 -- Yes --> N_PrepareStatusforIntegrationServiceCall_Node0_action N_PrepareStatusforIntegrationServiceCall_Node0_action --> E_PrepareStatusforIntegrationServiceCall S_PrepareStatusforIntegrationServiceCall --> N_PrepareStatusforIntegrationServiceCall_Node0 N_PrepareStatusforIntegrationServiceCall_Node0 -- No --> E_PrepareStatusforIntegrationServiceCall
File: GCX016.cbl
GIVEN:
A validated status description exists for a cargo record
WHEN:
The system prepares the status for integration service transmission
THEN:
- The system formats
- Packages the status description for external integration service call
β Consolidated Acceptance Criteria
- The system checks for broker code availability → the system proceeds to broker table lookup if broker code exists, otherwise returns broker not found error
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_BrokerCodeAvailable(["Start Step"])
E_BrokerCodeAvailable(["End Step"])
N_BrokerCodeAvailable_Node0{"The system checks for broker code
availability"}:::decision N_BrokerCodeAvailable_Node0_action["The system proceeds to broker table
lookup if broker code exists,
otherwise returns broker not found
error"]:::main N_BrokerCodeAvailable_Node0 -- Yes --> N_BrokerCodeAvailable_Node0_action N_BrokerCodeAvailable_Node0_action --> E_BrokerCodeAvailable S_BrokerCodeAvailable --> N_BrokerCodeAvailable_Node0 N_BrokerCodeAvailable_Node0 -- No --> E_BrokerCodeAvailable
availability"}:::decision N_BrokerCodeAvailable_Node0_action["The system proceeds to broker table
lookup if broker code exists,
otherwise returns broker not found
error"]:::main N_BrokerCodeAvailable_Node0 -- Yes --> N_BrokerCodeAvailable_Node0_action N_BrokerCodeAvailable_Node0_action --> E_BrokerCodeAvailable S_BrokerCodeAvailable --> N_BrokerCodeAvailable_Node0 N_BrokerCodeAvailable_Node0 -- No --> E_BrokerCodeAvailable
File: GCX016.cbl
GIVEN:
A broker lookup request is initiated
WHEN:
The system checks for broker code availability
THEN:
The system proceeds to broker table lookup if broker code exists, otherwise returns broker not found error
β Consolidated Acceptance Criteria
- The system performs BK table lookup using the broker code → the system retrieves the corresponding broker master record from BK table
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RetrieveBKTableRecord(["Start Step"])
E_RetrieveBKTableRecord(["End Step"])
N_RetrieveBKTableRecord_Node0{"The system performs BK table lookup
using the broker code"}:::decision N_RetrieveBKTableRecord_Node0_action["The system retrieves the
corresponding broker master record
from BK table"]:::main N_RetrieveBKTableRecord_Node0 -- Yes --> N_RetrieveBKTableRecord_Node0_action N_RetrieveBKTableRecord_Node0_action --> E_RetrieveBKTableRecord S_RetrieveBKTableRecord --> N_RetrieveBKTableRecord_Node0 N_RetrieveBKTableRecord_Node0 -- No --> E_RetrieveBKTableRecord
using the broker code"}:::decision N_RetrieveBKTableRecord_Node0_action["The system retrieves the
corresponding broker master record
from BK table"]:::main N_RetrieveBKTableRecord_Node0 -- Yes --> N_RetrieveBKTableRecord_Node0_action N_RetrieveBKTableRecord_Node0_action --> E_RetrieveBKTableRecord S_RetrieveBKTableRecord --> N_RetrieveBKTableRecord_Node0 N_RetrieveBKTableRecord_Node0 -- No --> E_RetrieveBKTableRecord
File: GCX016.cbl
GIVEN:
A valid broker code is available
WHEN:
The system performs BK table lookup using the broker code
THEN:
The system retrieves the corresponding broker master record from BK table
β Consolidated Acceptance Criteria
- The system checks if a matching BK record was found → the system proceeds to extract broker short name if record found, otherwise returns broker not found error
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_BKRecordFound(["Start Step"])
E_BKRecordFound(["End Step"])
N_BKRecordFound_Node0{"The system checks if a matching BK
record was found"}:::decision N_BKRecordFound_Node0_action["The system proceeds to extract
broker short name if record found,
otherwise returns broker not found
error"]:::main N_BKRecordFound_Node0 -- Yes --> N_BKRecordFound_Node0_action N_BKRecordFound_Node0_action --> E_BKRecordFound S_BKRecordFound --> N_BKRecordFound_Node0 N_BKRecordFound_Node0 -- No --> E_BKRecordFound
record was found"}:::decision N_BKRecordFound_Node0_action["The system proceeds to extract
broker short name if record found,
otherwise returns broker not found
error"]:::main N_BKRecordFound_Node0 -- Yes --> N_BKRecordFound_Node0_action N_BKRecordFound_Node0_action --> E_BKRecordFound S_BKRecordFound --> N_BKRecordFound_Node0 N_BKRecordFound_Node0 -- No --> E_BKRecordFound
File: GCX016.cbl
GIVEN:
BK table lookup has been performed with broker code
WHEN:
The system checks if a matching BK record was found
THEN:
The system proceeds to extract broker short name if record found, otherwise returns broker not found error
β Consolidated Acceptance Criteria
- The system processes the BK record → the system extracts and stores the broker short name from the BK record
- The system processes the broker data → the system should extract the broker short name for KCSM processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExtractBrokerShortName(["Start Step"])
E_ExtractBrokerShortName(["End Step"])
N_ExtractBrokerShortName_Node0{"The system processes the BK record"}:::decision
N_ExtractBrokerShortName_Node0_action["The system extracts and stores the
broker short name from the BK record"]:::main N_ExtractBrokerShortName_Node0 -- Yes --> N_ExtractBrokerShortName_Node0_action N_ExtractBrokerShortName_Node0_action --> E_ExtractBrokerShortName S_ExtractBrokerShortName --> N_ExtractBrokerShortName_Node0 N_ExtractBrokerShortName_Node1{"The system processes the broker
data"}:::decision N_ExtractBrokerShortName_Node1_action["The system should extract the
broker short name for KCSM
processing"]:::main N_ExtractBrokerShortName_Node1 -- Yes --> N_ExtractBrokerShortName_Node1_action N_ExtractBrokerShortName_Node1_action --> E_ExtractBrokerShortName N_ExtractBrokerShortName_Node0 -- No --> N_ExtractBrokerShortName_Node1 N_ExtractBrokerShortName_Node1 -- No --> E_ExtractBrokerShortName
broker short name from the BK record"]:::main N_ExtractBrokerShortName_Node0 -- Yes --> N_ExtractBrokerShortName_Node0_action N_ExtractBrokerShortName_Node0_action --> E_ExtractBrokerShortName S_ExtractBrokerShortName --> N_ExtractBrokerShortName_Node0 N_ExtractBrokerShortName_Node1{"The system processes the broker
data"}:::decision N_ExtractBrokerShortName_Node1_action["The system should extract the
broker short name for KCSM
processing"]:::main N_ExtractBrokerShortName_Node1 -- Yes --> N_ExtractBrokerShortName_Node1_action N_ExtractBrokerShortName_Node1_action --> E_ExtractBrokerShortName N_ExtractBrokerShortName_Node0 -- No --> N_ExtractBrokerShortName_Node1 N_ExtractBrokerShortName_Node1 -- No --> E_ExtractBrokerShortName
File: GCX016.cbl
GIVEN:
A valid BK table record has been found
WHEN:
The system processes the BK record
THEN:
- The system extracts
- Stores the broker short name from the bk record
File: GCX016.cbl
GIVEN:
Broker information has been found in the lookup tables
WHEN:
The system processes the broker data
THEN:
The system should extract the broker short name for KCSM processing
β Consolidated Acceptance Criteria
- The system performs B1 table lookup using the broker code → the system retrieves the corresponding broker detail record from B1 table
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RetrieveB1TableRecord(["Start Step"])
E_RetrieveB1TableRecord(["End Step"])
N_RetrieveB1TableRecord_Node0{"The system performs B1 table lookup
using the broker code"}:::decision N_RetrieveB1TableRecord_Node0_action["The system retrieves the
corresponding broker detail record
from B1 table"]:::main N_RetrieveB1TableRecord_Node0 -- Yes --> N_RetrieveB1TableRecord_Node0_action N_RetrieveB1TableRecord_Node0_action --> E_RetrieveB1TableRecord S_RetrieveB1TableRecord --> N_RetrieveB1TableRecord_Node0 N_RetrieveB1TableRecord_Node0 -- No --> E_RetrieveB1TableRecord
using the broker code"}:::decision N_RetrieveB1TableRecord_Node0_action["The system retrieves the
corresponding broker detail record
from B1 table"]:::main N_RetrieveB1TableRecord_Node0 -- Yes --> N_RetrieveB1TableRecord_Node0_action N_RetrieveB1TableRecord_Node0_action --> E_RetrieveB1TableRecord S_RetrieveB1TableRecord --> N_RetrieveB1TableRecord_Node0 N_RetrieveB1TableRecord_Node0 -- No --> E_RetrieveB1TableRecord
File: GCX016.cbl
GIVEN:
Broker short name has been extracted from BK table
WHEN:
The system performs B1 table lookup using the broker code
THEN:
The system retrieves the corresponding broker detail record from B1 table
β Consolidated Acceptance Criteria
- The system checks if a matching B1 record was found → the system proceeds to extract broker contact details if record found, otherwise sets default broker values
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_B1RecordFound(["Start Step"])
E_B1RecordFound(["End Step"])
N_B1RecordFound_Node0{"The system checks if a matching B1
record was found"}:::decision N_B1RecordFound_Node0_action["The system proceeds to extract
broker contact details if record
found, otherwise sets default broker
values"]:::main N_B1RecordFound_Node0 -- Yes --> N_B1RecordFound_Node0_action N_B1RecordFound_Node0_action --> E_B1RecordFound S_B1RecordFound --> N_B1RecordFound_Node0 N_B1RecordFound_Node0 -- No --> E_B1RecordFound
record was found"}:::decision N_B1RecordFound_Node0_action["The system proceeds to extract
broker contact details if record
found, otherwise sets default broker
values"]:::main N_B1RecordFound_Node0 -- Yes --> N_B1RecordFound_Node0_action N_B1RecordFound_Node0_action --> E_B1RecordFound S_B1RecordFound --> N_B1RecordFound_Node0 N_B1RecordFound_Node0 -- No --> E_B1RecordFound
File: GCX016.cbl
GIVEN:
B1 table lookup has been performed with broker code
WHEN:
The system checks if a matching B1 record was found
THEN:
The system proceeds to extract broker contact details if record found, otherwise sets default broker values
β Consolidated Acceptance Criteria
- The system processes the B1 record → the system extracts and stores broker contact details from the B1 record
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExtractBrokerContactDetails(["Start Step"])
E_ExtractBrokerContactDetails(["End Step"])
N_ExtractBrokerContactDetails_Node0{"The system processes the B1 record"}:::decision
N_ExtractBrokerContactDetails_Node0_action["The system extracts and stores
broker contact details from the B1
record"]:::main N_ExtractBrokerContactDetails_Node0 -- Yes --> N_ExtractBrokerContactDetails_Node0_action N_ExtractBrokerContactDetails_Node0_action --> E_ExtractBrokerContactDetails S_ExtractBrokerContactDetails --> N_ExtractBrokerContactDetails_Node0 N_ExtractBrokerContactDetails_Node0 -- No --> E_ExtractBrokerContactDetails
broker contact details from the B1
record"]:::main N_ExtractBrokerContactDetails_Node0 -- Yes --> N_ExtractBrokerContactDetails_Node0_action N_ExtractBrokerContactDetails_Node0_action --> E_ExtractBrokerContactDetails S_ExtractBrokerContactDetails --> N_ExtractBrokerContactDetails_Node0 N_ExtractBrokerContactDetails_Node0 -- No --> E_ExtractBrokerContactDetails
File: GCX016.cbl
GIVEN:
A valid B1 table record has been found
WHEN:
The system processes the B1 record
THEN:
- The system extracts
- Stores broker contact details from the b1 record
β Consolidated Acceptance Criteria
- The system processes email preference fields → the system extracts and stores broker email preferences for notification purposes
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExtractEmailPreferences(["Start Step"])
E_ExtractEmailPreferences(["End Step"])
N_ExtractEmailPreferences_Node0{"The system processes email
preference fields"}:::decision N_ExtractEmailPreferences_Node0_action["The system extracts and stores
broker email preferences for
notification purposes"]:::main N_ExtractEmailPreferences_Node0 -- Yes --> N_ExtractEmailPreferences_Node0_action N_ExtractEmailPreferences_Node0_action --> E_ExtractEmailPreferences S_ExtractEmailPreferences --> N_ExtractEmailPreferences_Node0 N_ExtractEmailPreferences_Node0 -- No --> E_ExtractEmailPreferences
preference fields"}:::decision N_ExtractEmailPreferences_Node0_action["The system extracts and stores
broker email preferences for
notification purposes"]:::main N_ExtractEmailPreferences_Node0 -- Yes --> N_ExtractEmailPreferences_Node0_action N_ExtractEmailPreferences_Node0_action --> E_ExtractEmailPreferences S_ExtractEmailPreferences --> N_ExtractEmailPreferences_Node0 N_ExtractEmailPreferences_Node0 -- No --> E_ExtractEmailPreferences
File: GCX016.cbl
GIVEN:
Broker contact details have been extracted from B1 record
WHEN:
The system processes email preference fields
THEN:
- The system extracts
- Stores broker email preferences for notification purposes
β Consolidated Acceptance Criteria
- The system processes notification setting fields → the system extracts and stores broker notification settings for message routing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExtractNotificationSettings(["Start Step"])
E_ExtractNotificationSettings(["End Step"])
N_ExtractNotificationSettings_Node0{"The system processes notification
setting fields"}:::decision N_ExtractNotificationSettings_Node0_action["The system extracts and stores
broker notification settings for
message routing"]:::main N_ExtractNotificationSettings_Node0 -- Yes --> N_ExtractNotificationSettings_Node0_action N_ExtractNotificationSettings_Node0_action --> E_ExtractNotificationSettings S_ExtractNotificationSettings --> N_ExtractNotificationSettings_Node0 N_ExtractNotificationSettings_Node0 -- No --> E_ExtractNotificationSettings
setting fields"}:::decision N_ExtractNotificationSettings_Node0_action["The system extracts and stores
broker notification settings for
message routing"]:::main N_ExtractNotificationSettings_Node0 -- Yes --> N_ExtractNotificationSettings_Node0_action N_ExtractNotificationSettings_Node0_action --> E_ExtractNotificationSettings S_ExtractNotificationSettings --> N_ExtractNotificationSettings_Node0 N_ExtractNotificationSettings_Node0 -- No --> E_ExtractNotificationSettings
File: GCX016.cbl
GIVEN:
Email preferences have been extracted from B1 record
WHEN:
The system processes notification setting fields
THEN:
- The system extracts
- Stores broker notification settings for message routing
β Consolidated Acceptance Criteria
- The system checks if this is a payer of freight entity lookup → the system applies PF= prefix lookup if payer of freight entity, otherwise proceeds to validate broker information
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_PayerofFreightEntity(["Start Step"])
E_PayerofFreightEntity(["End Step"])
N_PayerofFreightEntity_Node0{"The system checks if this is a
payer of freight entity lookup"}:::decision N_PayerofFreightEntity_Node0_action["The system applies PF prefix lookup
if payer of freight entity,
otherwise proceeds to validate
broker information"]:::main N_PayerofFreightEntity_Node0 -- Yes --> N_PayerofFreightEntity_Node0_action N_PayerofFreightEntity_Node0_action --> E_PayerofFreightEntity S_PayerofFreightEntity --> N_PayerofFreightEntity_Node0 N_PayerofFreightEntity_Node0 -- No --> E_PayerofFreightEntity
payer of freight entity lookup"}:::decision N_PayerofFreightEntity_Node0_action["The system applies PF prefix lookup
if payer of freight entity,
otherwise proceeds to validate
broker information"]:::main N_PayerofFreightEntity_Node0 -- Yes --> N_PayerofFreightEntity_Node0_action N_PayerofFreightEntity_Node0_action --> E_PayerofFreightEntity S_PayerofFreightEntity --> N_PayerofFreightEntity_Node0 N_PayerofFreightEntity_Node0 -- No --> E_PayerofFreightEntity
File: GCX016.cbl
GIVEN:
Notification settings have been extracted from broker record
WHEN:
The system checks if this is a payer of freight entity lookup
THEN:
The system applies PF= prefix lookup if payer of freight entity, otherwise proceeds to validate broker information
β Consolidated Acceptance Criteria
- The system applies PF= prefix lookup logic → the system performs specialized payer of freight broker name retrieval
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ApplyPFPrefixLookup(["Start Step"])
E_ApplyPFPrefixLookup(["End Step"])
N_ApplyPFPrefixLookup_Node0{"The system applies PF prefix lookup
logic"}:::decision N_ApplyPFPrefixLookup_Node0_action["The system performs specialized
payer of freight broker name
retrieval"]:::main N_ApplyPFPrefixLookup_Node0 -- Yes --> N_ApplyPFPrefixLookup_Node0_action N_ApplyPFPrefixLookup_Node0_action --> E_ApplyPFPrefixLookup S_ApplyPFPrefixLookup --> N_ApplyPFPrefixLookup_Node0 N_ApplyPFPrefixLookup_Node0 -- No --> E_ApplyPFPrefixLookup
logic"}:::decision N_ApplyPFPrefixLookup_Node0_action["The system performs specialized
payer of freight broker name
retrieval"]:::main N_ApplyPFPrefixLookup_Node0 -- Yes --> N_ApplyPFPrefixLookup_Node0_action N_ApplyPFPrefixLookup_Node0_action --> E_ApplyPFPrefixLookup S_ApplyPFPrefixLookup --> N_ApplyPFPrefixLookup_Node0 N_ApplyPFPrefixLookup_Node0 -- No --> E_ApplyPFPrefixLookup
File: GCX016.cbl
GIVEN:
The broker lookup is identified as payer of freight entity
WHEN:
The system applies PF= prefix lookup logic
THEN:
The system performs specialized payer of freight broker name retrieval
β Consolidated Acceptance Criteria
- The system performs special PF broker name lookup → the system retrieves and stores the specialized payer of freight broker name
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GetSpecialPFBrokerName(["Start Step"])
E_GetSpecialPFBrokerName(["End Step"])
N_GetSpecialPFBrokerName_Node0{"The system performs special PF
broker name lookup"}:::decision N_GetSpecialPFBrokerName_Node0_action["The system retrieves and stores the
specialized payer of freight broker
name"]:::main N_GetSpecialPFBrokerName_Node0 -- Yes --> N_GetSpecialPFBrokerName_Node0_action N_GetSpecialPFBrokerName_Node0_action --> E_GetSpecialPFBrokerName S_GetSpecialPFBrokerName --> N_GetSpecialPFBrokerName_Node0 N_GetSpecialPFBrokerName_Node0 -- No --> E_GetSpecialPFBrokerName
broker name lookup"}:::decision N_GetSpecialPFBrokerName_Node0_action["The system retrieves and stores the
specialized payer of freight broker
name"]:::main N_GetSpecialPFBrokerName_Node0 -- Yes --> N_GetSpecialPFBrokerName_Node0_action N_GetSpecialPFBrokerName_Node0_action --> E_GetSpecialPFBrokerName S_GetSpecialPFBrokerName --> N_GetSpecialPFBrokerName_Node0 N_GetSpecialPFBrokerName_Node0 -- No --> E_GetSpecialPFBrokerName
File: GCX016.cbl
GIVEN:
PF= prefix lookup has been applied
WHEN:
The system performs special PF broker name lookup
THEN:
- The system retrieves
- Stores the specialized payer of freight broker name
β Consolidated Acceptance Criteria
- The system validates the completeness of broker information → the system proceeds to store information if complete, otherwise sets default values
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ValidateBrokerInformation(["Start Step"])
E_ValidateBrokerInformation(["End Step"])
N_ValidateBrokerInformation_Node0{"The system validates the
completeness of broker information"}:::decision N_ValidateBrokerInformation_Node0_action["The system proceeds to store
information if complete, otherwise
sets default values"]:::main N_ValidateBrokerInformation_Node0 -- Yes --> N_ValidateBrokerInformation_Node0_action N_ValidateBrokerInformation_Node0_action --> E_ValidateBrokerInformation S_ValidateBrokerInformation --> N_ValidateBrokerInformation_Node0 N_ValidateBrokerInformation_Node0 -- No --> E_ValidateBrokerInformation
completeness of broker information"}:::decision N_ValidateBrokerInformation_Node0_action["The system proceeds to store
information if complete, otherwise
sets default values"]:::main N_ValidateBrokerInformation_Node0 -- Yes --> N_ValidateBrokerInformation_Node0_action N_ValidateBrokerInformation_Node0_action --> E_ValidateBrokerInformation S_ValidateBrokerInformation --> N_ValidateBrokerInformation_Node0 N_ValidateBrokerInformation_Node0 -- No --> E_ValidateBrokerInformation
File: GCX016.cbl
GIVEN:
All broker information has been extracted from tables
WHEN:
The system validates the completeness of broker information
THEN:
The system proceeds to store information if complete, otherwise sets default values
β Consolidated Acceptance Criteria
- The system checks for information completeness → the system stores broker information if complete, otherwise applies default broker values
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_InformationComplete(["Start Step"])
E_InformationComplete(["End Step"])
N_InformationComplete_Node0{"The system checks for information
completeness"}:::decision N_InformationComplete_Node0_action["The system stores broker
information if complete, otherwise
applies default broker values"]:::main N_InformationComplete_Node0 -- Yes --> N_InformationComplete_Node0_action N_InformationComplete_Node0_action --> E_InformationComplete S_InformationComplete --> N_InformationComplete_Node0 N_InformationComplete_Node0 -- No --> E_InformationComplete
completeness"}:::decision N_InformationComplete_Node0_action["The system stores broker
information if complete, otherwise
applies default broker values"]:::main N_InformationComplete_Node0 -- Yes --> N_InformationComplete_Node0_action N_InformationComplete_Node0_action --> E_InformationComplete S_InformationComplete --> N_InformationComplete_Node0 N_InformationComplete_Node0 -- No --> E_InformationComplete
File: GCX016.cbl
GIVEN:
Broker information validation has been performed
WHEN:
The system checks for information completeness
THEN:
The system stores broker information if complete, otherwise applies default broker values
β Consolidated Acceptance Criteria
- The system applies default value assignment logic → the system sets standard default values for missing broker information fields
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetDefaultBrokerValues(["Start Step"])
E_SetDefaultBrokerValues(["End Step"])
N_SetDefaultBrokerValues_Node0{"The system applies default value
assignment logic"}:::decision N_SetDefaultBrokerValues_Node0_action["The system sets standard default
values for missing broker
information fields"]:::main N_SetDefaultBrokerValues_Node0 -- Yes --> N_SetDefaultBrokerValues_Node0_action N_SetDefaultBrokerValues_Node0_action --> E_SetDefaultBrokerValues S_SetDefaultBrokerValues --> N_SetDefaultBrokerValues_Node0 N_SetDefaultBrokerValues_Node0 -- No --> E_SetDefaultBrokerValues
assignment logic"}:::decision N_SetDefaultBrokerValues_Node0_action["The system sets standard default
values for missing broker
information fields"]:::main N_SetDefaultBrokerValues_Node0 -- Yes --> N_SetDefaultBrokerValues_Node0_action N_SetDefaultBrokerValues_Node0_action --> E_SetDefaultBrokerValues S_SetDefaultBrokerValues --> N_SetDefaultBrokerValues_Node0 N_SetDefaultBrokerValues_Node0 -- No --> E_SetDefaultBrokerValues
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
Broker information is incomplete or B1 record was not found
WHEN:
The system applies default value assignment logic
THEN:
The system sets standard default values for missing broker information fields
β Consolidated Acceptance Criteria
- The system stores the broker information → the system saves all broker details for use in notification and processing workflows
- The system needs to preserve broker information → the system should store the broker information for use in KCSM processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_StoreBrokerInformation(["Start Step"])
E_StoreBrokerInformation(["End Step"])
N_StoreBrokerInformation_Node0{"The system stores the broker
information"}:::decision N_StoreBrokerInformation_Node0_action["The system saves all broker details
for use in notification and
processing workflows"]:::main N_StoreBrokerInformation_Node0 -- Yes --> N_StoreBrokerInformation_Node0_action N_StoreBrokerInformation_Node0_action --> E_StoreBrokerInformation S_StoreBrokerInformation --> N_StoreBrokerInformation_Node0 N_StoreBrokerInformation_Node1{"The system needs to preserve broker
information"}:::decision N_StoreBrokerInformation_Node1_action["The system should store the broker
information for use in KCSM
processing"]:::main N_StoreBrokerInformation_Node1 -- Yes --> N_StoreBrokerInformation_Node1_action N_StoreBrokerInformation_Node1_action --> E_StoreBrokerInformation N_StoreBrokerInformation_Node0 -- No --> N_StoreBrokerInformation_Node1 N_StoreBrokerInformation_Node1 -- No --> E_StoreBrokerInformation
information"}:::decision N_StoreBrokerInformation_Node0_action["The system saves all broker details
for use in notification and
processing workflows"]:::main N_StoreBrokerInformation_Node0 -- Yes --> N_StoreBrokerInformation_Node0_action N_StoreBrokerInformation_Node0_action --> E_StoreBrokerInformation S_StoreBrokerInformation --> N_StoreBrokerInformation_Node0 N_StoreBrokerInformation_Node1{"The system needs to preserve broker
information"}:::decision N_StoreBrokerInformation_Node1_action["The system should store the broker
information for use in KCSM
processing"]:::main N_StoreBrokerInformation_Node1 -- Yes --> N_StoreBrokerInformation_Node1_action N_StoreBrokerInformation_Node1_action --> E_StoreBrokerInformation N_StoreBrokerInformation_Node0 -- No --> N_StoreBrokerInformation_Node1 N_StoreBrokerInformation_Node1 -- No --> E_StoreBrokerInformation
File: GCX016.cbl
GIVEN:
Broker information is complete or default values have been applied
WHEN:
The system stores the broker information
THEN:
- The system saves all broker details for use in notification
- Processing workflows
File: GCX016.cbl
GIVEN:
Broker data has been formatted for KCSM
WHEN:
The system needs to preserve broker information
THEN:
The system should store the broker information for use in KCSM processing
β Consolidated Acceptance Criteria
- The system completes the broker lookup process → the system returns success status with complete broker information available for use
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_BrokerLookupComplete(["Start Step"])
E_BrokerLookupComplete(["End Step"])
N_BrokerLookupComplete_Node0{"The system completes the broker
lookup process"}:::decision N_BrokerLookupComplete_Node0_action["The system returns success status
with complete broker information
available for use"]:::main N_BrokerLookupComplete_Node0 -- Yes --> N_BrokerLookupComplete_Node0_action N_BrokerLookupComplete_Node0_action --> E_BrokerLookupComplete S_BrokerLookupComplete --> N_BrokerLookupComplete_Node0 N_BrokerLookupComplete_Node0 -- No --> E_BrokerLookupComplete
lookup process"}:::decision N_BrokerLookupComplete_Node0_action["The system returns success status
with complete broker information
available for use"]:::main N_BrokerLookupComplete_Node0 -- Yes --> N_BrokerLookupComplete_Node0_action N_BrokerLookupComplete_Node0_action --> E_BrokerLookupComplete S_BrokerLookupComplete --> N_BrokerLookupComplete_Node0 N_BrokerLookupComplete_Node0 -- No --> E_BrokerLookupComplete
File: GCX016.cbl
GIVEN:
Broker information has been stored successfully
WHEN:
The system completes the broker lookup process
THEN:
The system returns success status with complete broker information available for use
β Consolidated Acceptance Criteria
- The system encounters broker lookup failure → the system returns broker not found error status and terminates lookup process
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_BrokerNotFoundError(["Start Step"])
E_BrokerNotFoundError(["End Step"])
N_BrokerNotFoundError_Node0{"The system encounters broker lookup
failure"}:::decision N_BrokerNotFoundError_Node0_action["The system returns broker not found
error status and terminates lookup
process"]:::main N_BrokerNotFoundError_Node0 -- Yes --> N_BrokerNotFoundError_Node0_action N_BrokerNotFoundError_Node0_action --> E_BrokerNotFoundError S_BrokerNotFoundError --> N_BrokerNotFoundError_Node0 N_BrokerNotFoundError_Node0 -- No --> E_BrokerNotFoundError
failure"}:::decision N_BrokerNotFoundError_Node0_action["The system returns broker not found
error status and terminates lookup
process"]:::main N_BrokerNotFoundError_Node0 -- Yes --> N_BrokerNotFoundError_Node0_action N_BrokerNotFoundError_Node0_action --> E_BrokerNotFoundError S_BrokerNotFoundError --> N_BrokerNotFoundError_Node0 N_BrokerNotFoundError_Node0 -- No --> E_BrokerNotFoundError
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
Broker code is not available or broker records are not found in BK table
WHEN:
The system encounters broker lookup failure
THEN:
- The system returns broker not found error status
- Terminates lookup process
β Consolidated Acceptance Criteria
- The broker has internet notification preference set to 'Y' or email preference is configured → the system routes the notification to the internet email system
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_EmailPreferenceSet(["Start Step"])
E_EmailPreferenceSet(["End Step"])
N_EmailPreferenceSet_Node0{"The broker has internet
notification preference set to Y or
email preference is configured"}:::decision N_EmailPreferenceSet_Node0_action["The system routes the notification
to the internet email system"]:::main N_EmailPreferenceSet_Node0 -- Yes --> N_EmailPreferenceSet_Node0_action N_EmailPreferenceSet_Node0_action --> E_EmailPreferenceSet S_EmailPreferenceSet --> N_EmailPreferenceSet_Node0 N_EmailPreferenceSet_Node0 -- No --> E_EmailPreferenceSet
notification preference set to Y or
email preference is configured"}:::decision N_EmailPreferenceSet_Node0_action["The system routes the notification
to the internet email system"]:::main N_EmailPreferenceSet_Node0 -- Yes --> N_EmailPreferenceSet_Node0_action N_EmailPreferenceSet_Node0_action --> E_EmailPreferenceSet S_EmailPreferenceSet --> N_EmailPreferenceSet_Node0 N_EmailPreferenceSet_Node0 -- No --> E_EmailPreferenceSet
File: GCX016.cbl
GIVEN:
Broker contact information has been retrieved from broker tables
WHEN:
The broker has internet notification preference set to 'Y' or email preference is configured
THEN:
The system routes the notification to the internet email system
β Consolidated Acceptance Criteria
- The broker does not have internet notification preference set or email preference is not configured → the system routes the notification to the traditional Merlin messaging system
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RoutetoTraditionalMerlinSystem(["Start Step"])
E_RoutetoTraditionalMerlinSystem(["End Step"])
N_RoutetoTraditionalMerlinSystem_Node0{"The broker does not have internet
notification preference set or email
preference is not configured"}:::decision N_RoutetoTraditionalMerlinSystem_Node0_action["The system routes the notification
to the traditional Merlin messaging
system"]:::main N_RoutetoTraditionalMerlinSystem_Node0 -- Yes --> N_RoutetoTraditionalMerlinSystem_Node0_action N_RoutetoTraditionalMerlinSystem_Node0_action --> E_RoutetoTraditionalMerlinSystem S_RoutetoTraditionalMerlinSystem --> N_RoutetoTraditionalMerlinSystem_Node0 N_RoutetoTraditionalMerlinSystem_Node0 -- No --> E_RoutetoTraditionalMerlinSystem
notification preference set or email
preference is not configured"}:::decision N_RoutetoTraditionalMerlinSystem_Node0_action["The system routes the notification
to the traditional Merlin messaging
system"]:::main N_RoutetoTraditionalMerlinSystem_Node0 -- Yes --> N_RoutetoTraditionalMerlinSystem_Node0_action N_RoutetoTraditionalMerlinSystem_Node0_action --> E_RoutetoTraditionalMerlinSystem S_RoutetoTraditionalMerlinSystem --> N_RoutetoTraditionalMerlinSystem_Node0 N_RoutetoTraditionalMerlinSystem_Node0 -- No --> E_RoutetoTraditionalMerlinSystem
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
Broker contact information has been retrieved from broker tables
WHEN:
The broker does not have internet notification preference set or email preference is not configured
THEN:
The system routes the notification to the traditional Merlin messaging system
β Consolidated Acceptance Criteria
- The system prepares the message content → the system formats the message with cargo information, disposition codes, quantities, and broker-specific details for email delivery
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_FormatEmailMessage(["Start Step"])
E_FormatEmailMessage(["End Step"])
N_FormatEmailMessage_Node0{"The system prepares the message
content"}:::decision N_FormatEmailMessage_Node0_action["The system formats the message with
cargo information, disposition
codes, quantities, and
broker-specific details for email
delivery"]:::main N_FormatEmailMessage_Node0 -- Yes --> N_FormatEmailMessage_Node0_action N_FormatEmailMessage_Node0_action --> E_FormatEmailMessage S_FormatEmailMessage --> N_FormatEmailMessage_Node0 N_FormatEmailMessage_Node0 -- No --> E_FormatEmailMessage
content"}:::decision N_FormatEmailMessage_Node0_action["The system formats the message with
cargo information, disposition
codes, quantities, and
broker-specific details for email
delivery"]:::main N_FormatEmailMessage_Node0 -- Yes --> N_FormatEmailMessage_Node0_action N_FormatEmailMessage_Node0_action --> E_FormatEmailMessage S_FormatEmailMessage --> N_FormatEmailMessage_Node0 N_FormatEmailMessage_Node0 -- No --> E_FormatEmailMessage
File: GCX016.cbl
GIVEN:
Notification is being routed via internet email
WHEN:
The system prepares the message content
THEN:
The system formats the message with cargo information, disposition codes, quantities, and broker-specific details for email delivery
β Consolidated Acceptance Criteria
- The system prepares the message content → the system formats the message with cargo information, disposition codes, quantities, and broker-specific details according to Merlin message standards
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_FormatMerlinMessage(["Start Step"])
E_FormatMerlinMessage(["End Step"])
N_FormatMerlinMessage_Node0{"The system prepares the message
content"}:::decision N_FormatMerlinMessage_Node0_action["The system formats the message with
cargo information, disposition
codes, quantities, and
broker-specific details according to
Merlin message standards"]:::main N_FormatMerlinMessage_Node0 -- Yes --> N_FormatMerlinMessage_Node0_action N_FormatMerlinMessage_Node0_action --> E_FormatMerlinMessage S_FormatMerlinMessage --> N_FormatMerlinMessage_Node0 N_FormatMerlinMessage_Node0 -- No --> E_FormatMerlinMessage
content"}:::decision N_FormatMerlinMessage_Node0_action["The system formats the message with
cargo information, disposition
codes, quantities, and
broker-specific details according to
Merlin message standards"]:::main N_FormatMerlinMessage_Node0 -- Yes --> N_FormatMerlinMessage_Node0_action N_FormatMerlinMessage_Node0_action --> E_FormatMerlinMessage S_FormatMerlinMessage --> N_FormatMerlinMessage_Node0 N_FormatMerlinMessage_Node0 -- No --> E_FormatMerlinMessage
File: GCX016.cbl
GIVEN:
Notification is being routed via traditional Merlin system
WHEN:
The system prepares the message content
THEN:
The system formats the message with cargo information, disposition codes, quantities, and broker-specific details according to Merlin message standards
β Consolidated Acceptance Criteria
- The system prepares Merlin routing parameters → the system sets appropriate user codes, destination identifiers, and routing parameters based on broker location and message type
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetMerlinUserCodes(["Start Step"])
E_SetMerlinUserCodes(["End Step"])
N_SetMerlinUserCodes_Node0{"The system prepares Merlin routing
parameters"}:::decision N_SetMerlinUserCodes_Node0_action["The system sets appropriate user
codes, destination identifiers, and
routing parameters based on broker
location and message type"]:::main N_SetMerlinUserCodes_Node0 -- Yes --> N_SetMerlinUserCodes_Node0_action N_SetMerlinUserCodes_Node0_action --> E_SetMerlinUserCodes S_SetMerlinUserCodes --> N_SetMerlinUserCodes_Node0 N_SetMerlinUserCodes_Node0 -- No --> E_SetMerlinUserCodes
parameters"}:::decision N_SetMerlinUserCodes_Node0_action["The system sets appropriate user
codes, destination identifiers, and
routing parameters based on broker
location and message type"]:::main N_SetMerlinUserCodes_Node0 -- Yes --> N_SetMerlinUserCodes_Node0_action N_SetMerlinUserCodes_Node0_action --> E_SetMerlinUserCodes S_SetMerlinUserCodes --> N_SetMerlinUserCodes_Node0 N_SetMerlinUserCodes_Node0 -- No --> E_SetMerlinUserCodes
File: GCX016.cbl
GIVEN:
Merlin message has been formatted for delivery
WHEN:
The system prepares Merlin routing parameters
THEN:
- The system sets appropriate user codes, destination identifiers, and routing parameters based on broker location
- Message type
β Consolidated Acceptance Criteria
- The system initiates email transmission → the system sends the notification through the email gateway to the broker's configured email address
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SendviaEmailGateway(["Start Step"])
E_SendviaEmailGateway(["End Step"])
N_SendviaEmailGateway_Node0{"The system initiates email
transmission"}:::decision N_SendviaEmailGateway_Node0_action["The system sends the notification
through the email gateway to the
broker s configured email address"]:::main N_SendviaEmailGateway_Node0 -- Yes --> N_SendviaEmailGateway_Node0_action N_SendviaEmailGateway_Node0_action --> E_SendviaEmailGateway S_SendviaEmailGateway --> N_SendviaEmailGateway_Node0 N_SendviaEmailGateway_Node0 -- No --> E_SendviaEmailGateway
transmission"}:::decision N_SendviaEmailGateway_Node0_action["The system sends the notification
through the email gateway to the
broker s configured email address"]:::main N_SendviaEmailGateway_Node0 -- Yes --> N_SendviaEmailGateway_Node0_action N_SendviaEmailGateway_Node0_action --> E_SendviaEmailGateway S_SendviaEmailGateway --> N_SendviaEmailGateway_Node0 N_SendviaEmailGateway_Node0 -- No --> E_SendviaEmailGateway
File: GCX016.cbl
GIVEN:
Email message is formatted with proper keywords and categorization
WHEN:
The system initiates email transmission
THEN:
The system sends the notification through the email gateway to the broker's configured email address
β Consolidated Acceptance Criteria
- The system initiates Merlin transmission → the system sends the notification through the Merlin gateway to the broker's configured Merlin user ID
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SendviaMerlinGateway(["Start Step"])
E_SendviaMerlinGateway(["End Step"])
N_SendviaMerlinGateway_Node0{"The system initiates Merlin
transmission"}:::decision N_SendviaMerlinGateway_Node0_action["The system sends the notification
through the Merlin gateway to the
broker s configured Merlin user ID"]:::main N_SendviaMerlinGateway_Node0 -- Yes --> N_SendviaMerlinGateway_Node0_action N_SendviaMerlinGateway_Node0_action --> E_SendviaMerlinGateway S_SendviaMerlinGateway --> N_SendviaMerlinGateway_Node0 N_SendviaMerlinGateway_Node0 -- No --> E_SendviaMerlinGateway
transmission"}:::decision N_SendviaMerlinGateway_Node0_action["The system sends the notification
through the Merlin gateway to the
broker s configured Merlin user ID"]:::main N_SendviaMerlinGateway_Node0 -- Yes --> N_SendviaMerlinGateway_Node0_action N_SendviaMerlinGateway_Node0_action --> E_SendviaMerlinGateway S_SendviaMerlinGateway --> N_SendviaMerlinGateway_Node0 N_SendviaMerlinGateway_Node0 -- No --> E_SendviaMerlinGateway
File: GCX016.cbl
GIVEN:
Merlin message is formatted with proper user codes and routing parameters
WHEN:
The system initiates Merlin transmission
THEN:
The system sends the notification through the Merlin gateway to the broker's configured Merlin user ID
β Consolidated Acceptance Criteria
- The transmission is completed → the system logs the routing method used, broker information, message type, and transmission status for audit trail
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogRoutingDecision(["Start Step"])
E_LogRoutingDecision(["End Step"])
N_LogRoutingDecision_Node0{"The transmission is completed"}:::decision
N_LogRoutingDecision_Node0_action["The system logs the routing method
used, broker information, message
type, and transmission status for
audit trail"]:::main N_LogRoutingDecision_Node0 -- Yes --> N_LogRoutingDecision_Node0_action N_LogRoutingDecision_Node0_action --> E_LogRoutingDecision S_LogRoutingDecision --> N_LogRoutingDecision_Node0 N_LogRoutingDecision_Node0 -- No --> E_LogRoutingDecision
used, broker information, message
type, and transmission status for
audit trail"]:::main N_LogRoutingDecision_Node0 -- Yes --> N_LogRoutingDecision_Node0_action N_LogRoutingDecision_Node0_action --> E_LogRoutingDecision S_LogRoutingDecision --> N_LogRoutingDecision_Node0 N_LogRoutingDecision_Node0 -- No --> E_LogRoutingDecision
File: GCX016.cbl
GIVEN:
Notification has been transmitted via either email or Merlin gateway
WHEN:
The transmission is completed
THEN:
The system logs the routing method used, broker information, message type, and transmission status for audit trail
β Consolidated Acceptance Criteria
- The system checks the broker disposition code configuration in GCSTBRT system tables → the system sets validation flag to TRUE if the disposition code is found in configuration tables, otherwise sets validation flag to FALSE
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IsDispositionCodeConfiguredforBrokerNotifications(["Start Step"])
E_IsDispositionCodeConfiguredforBrokerNotifications(["End Step"])
N_IsDispositionCodeConfiguredforBrokerNotifications_Node0{"The system checks the broker
disposition code configuration in
GCSTBRT system tables"}:::decision N_IsDispositionCodeConfiguredforBrokerNotifications_Node0_action["The system sets validation flag to
TRUE if the disposition code is
found in configuration tables,
otherwise sets validation flag to
FALSE"]:::main N_IsDispositionCodeConfiguredforBrokerNotifications_Node0 -- Yes --> N_IsDispositionCodeConfiguredforBrokerNotifications_Node0_action N_IsDispositionCodeConfiguredforBrokerNotifications_Node0_action --> E_IsDispositionCodeConfiguredforBrokerNotifications S_IsDispositionCodeConfiguredforBrokerNotifications --> N_IsDispositionCodeConfiguredforBrokerNotifications_Node0 N_IsDispositionCodeConfiguredforBrokerNotifications_Node0 -- No --> E_IsDispositionCodeConfiguredforBrokerNotifications
disposition code configuration in
GCSTBRT system tables"}:::decision N_IsDispositionCodeConfiguredforBrokerNotifications_Node0_action["The system sets validation flag to
TRUE if the disposition code is
found in configuration tables,
otherwise sets validation flag to
FALSE"]:::main N_IsDispositionCodeConfiguredforBrokerNotifications_Node0 -- Yes --> N_IsDispositionCodeConfiguredforBrokerNotifications_Node0_action N_IsDispositionCodeConfiguredforBrokerNotifications_Node0_action --> E_IsDispositionCodeConfiguredforBrokerNotifications S_IsDispositionCodeConfiguredforBrokerNotifications --> N_IsDispositionCodeConfiguredforBrokerNotifications_Node0 N_IsDispositionCodeConfiguredforBrokerNotifications_Node0 -- No --> E_IsDispositionCodeConfiguredforBrokerNotifications
File: GCX016.cbl
GIVEN:
A disposition code needs to be validated for broker notification eligibility
WHEN:
The system checks the broker disposition code configuration in GCSTBRT system tables
THEN:
The system sets validation flag to TRUE if the disposition code is found in configuration tables, otherwise sets validation flag to FALSE
β Consolidated Acceptance Criteria
- The validation flag is TRUE indicating the disposition code is configured for notifications → the system continues with the broker notification process
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ContinuewithBrokerNotificationProcess(["Start Step"])
E_ContinuewithBrokerNotificationProcess(["End Step"])
N_ContinuewithBrokerNotificationProcess_Node0{"The validation flag is TRUE
indicating the disposition code is
configured for notifications"}:::decision N_ContinuewithBrokerNotificationProcess_Node0_action["The system continues with the
broker notification process"]:::main N_ContinuewithBrokerNotificationProcess_Node0 -- Yes --> N_ContinuewithBrokerNotificationProcess_Node0_action N_ContinuewithBrokerNotificationProcess_Node0_action --> E_ContinuewithBrokerNotificationProcess S_ContinuewithBrokerNotificationProcess --> N_ContinuewithBrokerNotificationProcess_Node0 N_ContinuewithBrokerNotificationProcess_Node0 -- No --> E_ContinuewithBrokerNotificationProcess
indicating the disposition code is
configured for notifications"}:::decision N_ContinuewithBrokerNotificationProcess_Node0_action["The system continues with the
broker notification process"]:::main N_ContinuewithBrokerNotificationProcess_Node0 -- Yes --> N_ContinuewithBrokerNotificationProcess_Node0_action N_ContinuewithBrokerNotificationProcess_Node0_action --> E_ContinuewithBrokerNotificationProcess S_ContinuewithBrokerNotificationProcess --> N_ContinuewithBrokerNotificationProcess_Node0 N_ContinuewithBrokerNotificationProcess_Node0 -- No --> E_ContinuewithBrokerNotificationProcess
File: GCX016.cbl
GIVEN:
A disposition code validation has been completed with a validation result
WHEN:
The validation flag is TRUE indicating the disposition code is configured for notifications
THEN:
The system continues with the broker notification process
β Consolidated Acceptance Criteria
- The validation flag is FALSE indicating the disposition code is not configured for notifications → the system skips the broker notification process
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SkipBrokerNotificationProcess(["Start Step"])
E_SkipBrokerNotificationProcess(["End Step"])
N_SkipBrokerNotificationProcess_Node0{"The validation flag is FALSE
indicating the disposition code is
not configured for notifications"}:::decision N_SkipBrokerNotificationProcess_Node0_action["The system skips the broker
notification process"]:::main N_SkipBrokerNotificationProcess_Node0 -- Yes --> N_SkipBrokerNotificationProcess_Node0_action N_SkipBrokerNotificationProcess_Node0_action --> E_SkipBrokerNotificationProcess S_SkipBrokerNotificationProcess --> N_SkipBrokerNotificationProcess_Node0 N_SkipBrokerNotificationProcess_Node0 -- No --> E_SkipBrokerNotificationProcess
indicating the disposition code is
not configured for notifications"}:::decision N_SkipBrokerNotificationProcess_Node0_action["The system skips the broker
notification process"]:::main N_SkipBrokerNotificationProcess_Node0 -- Yes --> N_SkipBrokerNotificationProcess_Node0_action N_SkipBrokerNotificationProcess_Node0_action --> E_SkipBrokerNotificationProcess S_SkipBrokerNotificationProcess --> N_SkipBrokerNotificationProcess_Node0 N_SkipBrokerNotificationProcess_Node0 -- No --> E_SkipBrokerNotificationProcess
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
A disposition code validation has been completed with a validation result
WHEN:
The validation flag is FALSE indicating the disposition code is not configured for notifications
THEN:
The system skips the broker notification process
β Consolidated Acceptance Criteria
- The system needs to access secondary cargo information → the system retrieves GCSA2RT segment data from cargo secondary records
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AccessCargoSecondaryRecordsGCSA2RTSegment(["Start Step"])
E_AccessCargoSecondaryRecordsGCSA2RTSegment(["End Step"])
N_AccessCargoSecondaryRecordsGCSA2RTSegment_Node0{"The system needs to access
secondary cargo information"}:::decision N_AccessCargoSecondaryRecordsGCSA2RTSegment_Node0_action["The system retrieves GCSA2RT
segment data from cargo secondary
records"]:::main N_AccessCargoSecondaryRecordsGCSA2RTSegment_Node0 -- Yes --> N_AccessCargoSecondaryRecordsGCSA2RTSegment_Node0_action N_AccessCargoSecondaryRecordsGCSA2RTSegment_Node0_action --> E_AccessCargoSecondaryRecordsGCSA2RTSegment S_AccessCargoSecondaryRecordsGCSA2RTSegment --> N_AccessCargoSecondaryRecordsGCSA2RTSegment_Node0 N_AccessCargoSecondaryRecordsGCSA2RTSegment_Node0 -- No --> E_AccessCargoSecondaryRecordsGCSA2RTSegment
secondary cargo information"}:::decision N_AccessCargoSecondaryRecordsGCSA2RTSegment_Node0_action["The system retrieves GCSA2RT
segment data from cargo secondary
records"]:::main N_AccessCargoSecondaryRecordsGCSA2RTSegment_Node0 -- Yes --> N_AccessCargoSecondaryRecordsGCSA2RTSegment_Node0_action N_AccessCargoSecondaryRecordsGCSA2RTSegment_Node0_action --> E_AccessCargoSecondaryRecordsGCSA2RTSegment S_AccessCargoSecondaryRecordsGCSA2RTSegment --> N_AccessCargoSecondaryRecordsGCSA2RTSegment_Node0 N_AccessCargoSecondaryRecordsGCSA2RTSegment_Node0 -- No --> E_AccessCargoSecondaryRecordsGCSA2RTSegment
File: GCX016.cbl
GIVEN:
A cargo record exists in the system
WHEN:
The system needs to access secondary cargo information
THEN:
The system retrieves GCSA2RT segment data from cargo secondary records
β Consolidated Acceptance Criteria
- The system checks for secondary record availability → the system determines if secondary records are available for processing or if no payer of freight information can be found
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SecondaryRecordsAvailable(["Start Step"])
E_SecondaryRecordsAvailable(["End Step"])
N_SecondaryRecordsAvailable_Node0{"The system checks for secondary
record availability"}:::decision N_SecondaryRecordsAvailable_Node0_action["The system determines if secondary
records are available for processing
or if no payer of freight
information can be found"]:::main N_SecondaryRecordsAvailable_Node0 -- Yes --> N_SecondaryRecordsAvailable_Node0_action N_SecondaryRecordsAvailable_Node0_action --> E_SecondaryRecordsAvailable S_SecondaryRecordsAvailable --> N_SecondaryRecordsAvailable_Node0 N_SecondaryRecordsAvailable_Node0 -- No --> E_SecondaryRecordsAvailable
record availability"}:::decision N_SecondaryRecordsAvailable_Node0_action["The system determines if secondary
records are available for processing
or if no payer of freight
information can be found"]:::main N_SecondaryRecordsAvailable_Node0 -- Yes --> N_SecondaryRecordsAvailable_Node0_action N_SecondaryRecordsAvailable_Node0_action --> E_SecondaryRecordsAvailable S_SecondaryRecordsAvailable --> N_SecondaryRecordsAvailable_Node0 N_SecondaryRecordsAvailable_Node0 -- No --> E_SecondaryRecordsAvailable
File: GCX016.cbl
GIVEN:
The system has accessed cargo secondary records
WHEN:
The system checks for secondary record availability
THEN:
The system determines if secondary records are available for processing or if no payer of freight information can be found
β Consolidated Acceptance Criteria
- The system begins searching for payer of freight information → the system initializes the search process to examine N101 segments
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_InitializeSecondaryRecordSearch(["Start Step"])
E_InitializeSecondaryRecordSearch(["End Step"])
N_InitializeSecondaryRecordSearch_Node0{"The system begins searching for
payer of freight information"}:::decision N_InitializeSecondaryRecordSearch_Node0_action["The system initializes the search
process to examine N101 segments"]:::main N_InitializeSecondaryRecordSearch_Node0 -- Yes --> N_InitializeSecondaryRecordSearch_Node0_action N_InitializeSecondaryRecordSearch_Node0_action --> E_InitializeSecondaryRecordSearch S_InitializeSecondaryRecordSearch --> N_InitializeSecondaryRecordSearch_Node0 N_InitializeSecondaryRecordSearch_Node0 -- No --> E_InitializeSecondaryRecordSearch
payer of freight information"}:::decision N_InitializeSecondaryRecordSearch_Node0_action["The system initializes the search
process to examine N101 segments"]:::main N_InitializeSecondaryRecordSearch_Node0 -- Yes --> N_InitializeSecondaryRecordSearch_Node0_action N_InitializeSecondaryRecordSearch_Node0_action --> E_InitializeSecondaryRecordSearch S_InitializeSecondaryRecordSearch --> N_InitializeSecondaryRecordSearch_Node0 N_InitializeSecondaryRecordSearch_Node0 -- No --> E_InitializeSecondaryRecordSearch
File: GCX016.cbl
GIVEN:
Secondary records are available for the cargo
WHEN:
The system begins searching for payer of freight information
THEN:
The system initializes the search process to examine N101 segments
β Consolidated Acceptance Criteria
- The system reads N101 segments from secondary records → the system retrieves N101 segment data for entity identification processing
- The system reads N101 segments from the secondary records → the system should determine if N101 segments exist and are accessible for processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ReadN101SegmentsfromSecondaryRecords(["Start Step"])
E_ReadN101SegmentsfromSecondaryRecords(["End Step"])
N_ReadN101SegmentsfromSecondaryRecords_Node0{"The system reads N101 segments from
secondary records"}:::decision N_ReadN101SegmentsfromSecondaryRecords_Node0_action["The system retrieves N101 segment
data for entity identification
processing"]:::main N_ReadN101SegmentsfromSecondaryRecords_Node0 -- Yes --> N_ReadN101SegmentsfromSecondaryRecords_Node0_action N_ReadN101SegmentsfromSecondaryRecords_Node0_action --> E_ReadN101SegmentsfromSecondaryRecords S_ReadN101SegmentsfromSecondaryRecords --> N_ReadN101SegmentsfromSecondaryRecords_Node0 N_ReadN101SegmentsfromSecondaryRecords_Node1{"The system reads N101 segments from
the secondary records"}:::decision N_ReadN101SegmentsfromSecondaryRecords_Node1_action["The system should determine if N101
segments exist and are accessible
for processing"]:::main N_ReadN101SegmentsfromSecondaryRecords_Node1 -- Yes --> N_ReadN101SegmentsfromSecondaryRecords_Node1_action N_ReadN101SegmentsfromSecondaryRecords_Node1_action --> E_ReadN101SegmentsfromSecondaryRecords N_ReadN101SegmentsfromSecondaryRecords_Node0 -- No --> N_ReadN101SegmentsfromSecondaryRecords_Node1 N_ReadN101SegmentsfromSecondaryRecords_Node1 -- No --> E_ReadN101SegmentsfromSecondaryRecords
secondary records"}:::decision N_ReadN101SegmentsfromSecondaryRecords_Node0_action["The system retrieves N101 segment
data for entity identification
processing"]:::main N_ReadN101SegmentsfromSecondaryRecords_Node0 -- Yes --> N_ReadN101SegmentsfromSecondaryRecords_Node0_action N_ReadN101SegmentsfromSecondaryRecords_Node0_action --> E_ReadN101SegmentsfromSecondaryRecords S_ReadN101SegmentsfromSecondaryRecords --> N_ReadN101SegmentsfromSecondaryRecords_Node0 N_ReadN101SegmentsfromSecondaryRecords_Node1{"The system reads N101 segments from
the secondary records"}:::decision N_ReadN101SegmentsfromSecondaryRecords_Node1_action["The system should determine if N101
segments exist and are accessible
for processing"]:::main N_ReadN101SegmentsfromSecondaryRecords_Node1 -- Yes --> N_ReadN101SegmentsfromSecondaryRecords_Node1_action N_ReadN101SegmentsfromSecondaryRecords_Node1_action --> E_ReadN101SegmentsfromSecondaryRecords N_ReadN101SegmentsfromSecondaryRecords_Node0 -- No --> N_ReadN101SegmentsfromSecondaryRecords_Node1 N_ReadN101SegmentsfromSecondaryRecords_Node1 -- No --> E_ReadN101SegmentsfromSecondaryRecords
File: GCX016.cbl
GIVEN:
The secondary record search has been initialized
WHEN:
The system reads N101 segments from secondary records
THEN:
The system retrieves N101 segment data for entity identification processing
File: GCX016.cbl
GIVEN:
Secondary cargo records are available for processing
WHEN:
The system reads N101 segments from the secondary records
THEN:
- The system should determine if n101 segments exist
- Are accessible for processing
β Consolidated Acceptance Criteria
- The system checks the N101-01 qualifier field → the system identifies the entity type for further processing based on the qualifier value
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CheckN10101QualifierforPayerofFreight(["Start Step"])
E_CheckN10101QualifierforPayerofFreight(["End Step"])
N_CheckN10101QualifierforPayerofFreight_Node0{"The system checks the N101-01
qualifier field"}:::decision N_CheckN10101QualifierforPayerofFreight_Node0_action["The system identifies the entity
type for further processing based on
the qualifier value"]:::main N_CheckN10101QualifierforPayerofFreight_Node0 -- Yes --> N_CheckN10101QualifierforPayerofFreight_Node0_action N_CheckN10101QualifierforPayerofFreight_Node0_action --> E_CheckN10101QualifierforPayerofFreight S_CheckN10101QualifierforPayerofFreight --> N_CheckN10101QualifierforPayerofFreight_Node0 N_CheckN10101QualifierforPayerofFreight_Node0 -- No --> E_CheckN10101QualifierforPayerofFreight
qualifier field"}:::decision N_CheckN10101QualifierforPayerofFreight_Node0_action["The system identifies the entity
type for further processing based on
the qualifier value"]:::main N_CheckN10101QualifierforPayerofFreight_Node0 -- Yes --> N_CheckN10101QualifierforPayerofFreight_Node0_action N_CheckN10101QualifierforPayerofFreight_Node0_action --> E_CheckN10101QualifierforPayerofFreight S_CheckN10101QualifierforPayerofFreight --> N_CheckN10101QualifierforPayerofFreight_Node0 N_CheckN10101QualifierforPayerofFreight_Node0 -- No --> E_CheckN10101QualifierforPayerofFreight
File: GCX016.cbl
GIVEN:
An N101 segment has been found in secondary records
WHEN:
The system checks the N101-01 qualifier field
THEN:
The system identifies the entity type for further processing based on the qualifier value
β Consolidated Acceptance Criteria
- The qualifier equals 'PF' indicating payer of freight → the system identifies this as payer of freight entity information and proceeds to extract the data
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_QualifierPFPayerofFreight(["Start Step"])
E_QualifierPFPayerofFreight(["End Step"])
N_QualifierPFPayerofFreight_Node0{"The qualifier equals PF indicating
payer of freight"}:::decision N_QualifierPFPayerofFreight_Node0_action["The system identifies this as payer
of freight entity information and
proceeds to extract the data"]:::main N_QualifierPFPayerofFreight_Node0 -- Yes --> N_QualifierPFPayerofFreight_Node0_action N_QualifierPFPayerofFreight_Node0_action --> E_QualifierPFPayerofFreight S_QualifierPFPayerofFreight --> N_QualifierPFPayerofFreight_Node0 N_QualifierPFPayerofFreight_Node0 -- No --> E_QualifierPFPayerofFreight
payer of freight"}:::decision N_QualifierPFPayerofFreight_Node0_action["The system identifies this as payer
of freight entity information and
proceeds to extract the data"]:::main N_QualifierPFPayerofFreight_Node0 -- Yes --> N_QualifierPFPayerofFreight_Node0_action N_QualifierPFPayerofFreight_Node0_action --> E_QualifierPFPayerofFreight S_QualifierPFPayerofFreight --> N_QualifierPFPayerofFreight_Node0 N_QualifierPFPayerofFreight_Node0 -- No --> E_QualifierPFPayerofFreight
File: GCX016.cbl
GIVEN:
The system has checked the N101-01 qualifier field
WHEN:
The qualifier equals 'PF' indicating payer of freight
THEN:
- The system identifies this as payer of freight entity information
- Proceeds to extract the data
β Consolidated Acceptance Criteria
- The system extracts payer of freight entity information → the system retrieves the payer entity identification data from the N101 segment
- The system extracts payer of freight entity information → entity details are available for broker type validation
- The system processes the payer of freight entity information → the system should extract the entity name from N101-02 field and store it in payer fields
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExtractPayerofFreightEntityInformation(["Start Step"])
E_ExtractPayerofFreightEntityInformation(["End Step"])
N_ExtractPayerofFreightEntityInformation_Node0{"The system extracts payer of
freight entity information"}:::decision N_ExtractPayerofFreightEntityInformation_Node0_action["The system retrieves the payer
entity identification data from the
N101 segment"]:::main N_ExtractPayerofFreightEntityInformation_Node0 -- Yes --> N_ExtractPayerofFreightEntityInformation_Node0_action N_ExtractPayerofFreightEntityInformation_Node0_action --> E_ExtractPayerofFreightEntityInformation S_ExtractPayerofFreightEntityInformation --> N_ExtractPayerofFreightEntityInformation_Node0 N_ExtractPayerofFreightEntityInformation_Node1{"The system extracts payer of
freight entity information"}:::decision N_ExtractPayerofFreightEntityInformation_Node1_action["Entity details are available for
broker type validation"]:::main N_ExtractPayerofFreightEntityInformation_Node1 -- Yes --> N_ExtractPayerofFreightEntityInformation_Node1_action N_ExtractPayerofFreightEntityInformation_Node1_action --> E_ExtractPayerofFreightEntityInformation N_ExtractPayerofFreightEntityInformation_Node0 -- No --> N_ExtractPayerofFreightEntityInformation_Node1 N_ExtractPayerofFreightEntityInformation_Node2{"The system processes the payer of
freight entity information"}:::decision N_ExtractPayerofFreightEntityInformation_Node2_action["The system should extract the
entity name from N101-02 field and
store it in payer fields"]:::main N_ExtractPayerofFreightEntityInformation_Node2 -- Yes --> N_ExtractPayerofFreightEntityInformation_Node2_action N_ExtractPayerofFreightEntityInformation_Node2_action --> E_ExtractPayerofFreightEntityInformation N_ExtractPayerofFreightEntityInformation_Node1 -- No --> N_ExtractPayerofFreightEntityInformation_Node2 N_ExtractPayerofFreightEntityInformation_Node2 -- No --> E_ExtractPayerofFreightEntityInformation
freight entity information"}:::decision N_ExtractPayerofFreightEntityInformation_Node0_action["The system retrieves the payer
entity identification data from the
N101 segment"]:::main N_ExtractPayerofFreightEntityInformation_Node0 -- Yes --> N_ExtractPayerofFreightEntityInformation_Node0_action N_ExtractPayerofFreightEntityInformation_Node0_action --> E_ExtractPayerofFreightEntityInformation S_ExtractPayerofFreightEntityInformation --> N_ExtractPayerofFreightEntityInformation_Node0 N_ExtractPayerofFreightEntityInformation_Node1{"The system extracts payer of
freight entity information"}:::decision N_ExtractPayerofFreightEntityInformation_Node1_action["Entity details are available for
broker type validation"]:::main N_ExtractPayerofFreightEntityInformation_Node1 -- Yes --> N_ExtractPayerofFreightEntityInformation_Node1_action N_ExtractPayerofFreightEntityInformation_Node1_action --> E_ExtractPayerofFreightEntityInformation N_ExtractPayerofFreightEntityInformation_Node0 -- No --> N_ExtractPayerofFreightEntityInformation_Node1 N_ExtractPayerofFreightEntityInformation_Node2{"The system processes the payer of
freight entity information"}:::decision N_ExtractPayerofFreightEntityInformation_Node2_action["The system should extract the
entity name from N101-02 field and
store it in payer fields"]:::main N_ExtractPayerofFreightEntityInformation_Node2 -- Yes --> N_ExtractPayerofFreightEntityInformation_Node2_action N_ExtractPayerofFreightEntityInformation_Node2_action --> E_ExtractPayerofFreightEntityInformation N_ExtractPayerofFreightEntityInformation_Node1 -- No --> N_ExtractPayerofFreightEntityInformation_Node2 N_ExtractPayerofFreightEntityInformation_Node2 -- No --> E_ExtractPayerofFreightEntityInformation
File: GCX016.cbl
GIVEN:
The N101 segment has been identified as containing payer of freight information
WHEN:
The system extracts payer of freight entity information
THEN:
The system retrieves the payer entity identification data from the N101 segment
File: GCX016.cbl
GIVEN:
N101 payer of freight record exists
WHEN:
The system extracts payer of freight entity information
THEN:
Entity details are available for broker type validation
File: GCX016.cbl
GIVEN:
An N101 segment has qualifier 'PF' for payer of freight
WHEN:
The system processes the payer of freight entity information
THEN:
- The system should extract the entity name from n101-02 field
- Store it in payer fields
β Consolidated Acceptance Criteria
- The system stores the payer entity ID → the payer entity identification is saved in working storage for broker lookup processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_StorePayerEntityIDinWorkingStorage(["Start Step"])
E_StorePayerEntityIDinWorkingStorage(["End Step"])
N_StorePayerEntityIDinWorkingStorage_Node0{"The system stores the payer entity
ID"}:::decision N_StorePayerEntityIDinWorkingStorage_Node0_action["The payer entity identification is
saved in working storage for broker
lookup processing"]:::main N_StorePayerEntityIDinWorkingStorage_Node0 -- Yes --> N_StorePayerEntityIDinWorkingStorage_Node0_action N_StorePayerEntityIDinWorkingStorage_Node0_action --> E_StorePayerEntityIDinWorkingStorage S_StorePayerEntityIDinWorkingStorage --> N_StorePayerEntityIDinWorkingStorage_Node0 N_StorePayerEntityIDinWorkingStorage_Node0 -- No --> E_StorePayerEntityIDinWorkingStorage
ID"}:::decision N_StorePayerEntityIDinWorkingStorage_Node0_action["The payer entity identification is
saved in working storage for broker
lookup processing"]:::main N_StorePayerEntityIDinWorkingStorage_Node0 -- Yes --> N_StorePayerEntityIDinWorkingStorage_Node0_action N_StorePayerEntityIDinWorkingStorage_Node0_action --> E_StorePayerEntityIDinWorkingStorage S_StorePayerEntityIDinWorkingStorage --> N_StorePayerEntityIDinWorkingStorage_Node0 N_StorePayerEntityIDinWorkingStorage_Node0 -- No --> E_StorePayerEntityIDinWorkingStorage
File: GCX016.cbl
GIVEN:
Payer of freight entity information has been extracted from N101 segment
WHEN:
The system stores the payer entity ID
THEN:
The payer entity identification is saved in working storage for broker lookup processing
β Consolidated Acceptance Criteria
- The system continues searching for additional N101 records → the system examines remaining secondary records for more N101 segments
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ContinueSearchforAdditionalN101Records(["Start Step"])
E_ContinueSearchforAdditionalN101Records(["End Step"])
N_ContinueSearchforAdditionalN101Records_Node0{"The system continues searching for
additional N101 records"}:::decision N_ContinueSearchforAdditionalN101Records_Node0_action["The system examines remaining
secondary records for more N101
segments"]:::main N_ContinueSearchforAdditionalN101Records_Node0 -- Yes --> N_ContinueSearchforAdditionalN101Records_Node0_action N_ContinueSearchforAdditionalN101Records_Node0_action --> E_ContinueSearchforAdditionalN101Records S_ContinueSearchforAdditionalN101Records --> N_ContinueSearchforAdditionalN101Records_Node0 N_ContinueSearchforAdditionalN101Records_Node0 -- No --> E_ContinueSearchforAdditionalN101Records
additional N101 records"}:::decision N_ContinueSearchforAdditionalN101Records_Node0_action["The system examines remaining
secondary records for more N101
segments"]:::main N_ContinueSearchforAdditionalN101Records_Node0 -- Yes --> N_ContinueSearchforAdditionalN101Records_Node0_action N_ContinueSearchforAdditionalN101Records_Node0_action --> E_ContinueSearchforAdditionalN101Records S_ContinueSearchforAdditionalN101Records --> N_ContinueSearchforAdditionalN101Records_Node0 N_ContinueSearchforAdditionalN101Records_Node0 -- No --> E_ContinueSearchforAdditionalN101Records
File: GCX016.cbl
GIVEN:
The system has processed an N101 segment
WHEN:
The system continues searching for additional N101 records
THEN:
The system examines remaining secondary records for more N101 segments
β Consolidated Acceptance Criteria
- The system checks for more N101 records → the system determines if additional N101 records exist for processing or if the search should conclude
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MoreN101Records(["Start Step"])
E_MoreN101Records(["End Step"])
N_MoreN101Records_Node0{"The system checks for more N101
records"}:::decision N_MoreN101Records_Node0_action["The system determines if additional
N101 records exist for processing or
if the search should conclude"]:::main N_MoreN101Records_Node0 -- Yes --> N_MoreN101Records_Node0_action N_MoreN101Records_Node0_action --> E_MoreN101Records S_MoreN101Records --> N_MoreN101Records_Node0 N_MoreN101Records_Node0 -- No --> E_MoreN101Records
records"}:::decision N_MoreN101Records_Node0_action["The system determines if additional
N101 records exist for processing or
if the search should conclude"]:::main N_MoreN101Records_Node0 -- Yes --> N_MoreN101Records_Node0_action N_MoreN101Records_Node0_action --> E_MoreN101Records S_MoreN101Records --> N_MoreN101Records_Node0 N_MoreN101Records_Node0 -- No --> E_MoreN101Records
File: GCX016.cbl
GIVEN:
The system has processed available N101 segments
WHEN:
The system checks for more N101 records
THEN:
The system determines if additional N101 records exist for processing or if the search should conclude
β Consolidated Acceptance Criteria
- The system looks up broker short name using PF= prefix → the system retrieves broker short name information from the broker table using the formatted payer entity ID
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LookupBrokerShortNameUsingPFPrefix(["Start Step"])
E_LookupBrokerShortNameUsingPFPrefix(["End Step"])
N_LookupBrokerShortNameUsingPFPrefix_Node0{"The system looks up broker short
name using PF prefix"}:::decision N_LookupBrokerShortNameUsingPFPrefix_Node0_action["The system retrieves broker short
name information from the broker
table using the formatted payer
entity ID"]:::main N_LookupBrokerShortNameUsingPFPrefix_Node0 -- Yes --> N_LookupBrokerShortNameUsingPFPrefix_Node0_action N_LookupBrokerShortNameUsingPFPrefix_Node0_action --> E_LookupBrokerShortNameUsingPFPrefix S_LookupBrokerShortNameUsingPFPrefix --> N_LookupBrokerShortNameUsingPFPrefix_Node0 N_LookupBrokerShortNameUsingPFPrefix_Node0 -- No --> E_LookupBrokerShortNameUsingPFPrefix
name using PF prefix"}:::decision N_LookupBrokerShortNameUsingPFPrefix_Node0_action["The system retrieves broker short
name information from the broker
table using the formatted payer
entity ID"]:::main N_LookupBrokerShortNameUsingPFPrefix_Node0 -- Yes --> N_LookupBrokerShortNameUsingPFPrefix_Node0_action N_LookupBrokerShortNameUsingPFPrefix_Node0_action --> E_LookupBrokerShortNameUsingPFPrefix S_LookupBrokerShortNameUsingPFPrefix --> N_LookupBrokerShortNameUsingPFPrefix_Node0 N_LookupBrokerShortNameUsingPFPrefix_Node0 -- No --> E_LookupBrokerShortNameUsingPFPrefix
File: GCX016.cbl
GIVEN:
Payer of freight entity ID has been stored and no more N101 records exist
WHEN:
The system looks up broker short name using PF= prefix
THEN:
The system retrieves broker short name information from the broker table using the formatted payer entity ID
β Consolidated Acceptance Criteria
- The system returns payer of freight information to caller → the complete payer of freight information including broker details is provided to the calling process
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ReturnPayerofFreightInformationtoCaller(["Start Step"])
E_ReturnPayerofFreightInformationtoCaller(["End Step"])
N_ReturnPayerofFreightInformationtoCaller_Node0{"The system returns payer of freight
information to caller"}:::decision N_ReturnPayerofFreightInformationtoCaller_Node0_action["The complete payer of freight
information including broker details
is provided to the calling process"]:::main N_ReturnPayerofFreightInformationtoCaller_Node0 -- Yes --> N_ReturnPayerofFreightInformationtoCaller_Node0_action N_ReturnPayerofFreightInformationtoCaller_Node0_action --> E_ReturnPayerofFreightInformationtoCaller S_ReturnPayerofFreightInformationtoCaller --> N_ReturnPayerofFreightInformationtoCaller_Node0 N_ReturnPayerofFreightInformationtoCaller_Node0 -- No --> E_ReturnPayerofFreightInformationtoCaller
information to caller"}:::decision N_ReturnPayerofFreightInformationtoCaller_Node0_action["The complete payer of freight
information including broker details
is provided to the calling process"]:::main N_ReturnPayerofFreightInformationtoCaller_Node0 -- Yes --> N_ReturnPayerofFreightInformationtoCaller_Node0_action N_ReturnPayerofFreightInformationtoCaller_Node0_action --> E_ReturnPayerofFreightInformationtoCaller S_ReturnPayerofFreightInformationtoCaller --> N_ReturnPayerofFreightInformationtoCaller_Node0 N_ReturnPayerofFreightInformationtoCaller_Node0 -- No --> E_ReturnPayerofFreightInformationtoCaller
File: GCX016.cbl
GIVEN:
Broker short name has been successfully looked up
WHEN:
The system returns payer of freight information to caller
THEN:
The complete payer of freight information including broker details is provided to the calling process
β Consolidated Acceptance Criteria
- The system determines no payer of freight information is found → the system indicates that no payer of freight information is available for the cargo
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_NoPayerofFreightInformationFound(["Start Step"])
E_NoPayerofFreightInformationFound(["End Step"])
N_NoPayerofFreightInformationFound_Node0{"The system determines no payer of
freight information is found"}:::decision N_NoPayerofFreightInformationFound_Node0_action["The system indicates that no payer
of freight information is available
for the cargo"]:::main N_NoPayerofFreightInformationFound_Node0 -- Yes --> N_NoPayerofFreightInformationFound_Node0_action N_NoPayerofFreightInformationFound_Node0_action --> E_NoPayerofFreightInformationFound S_NoPayerofFreightInformationFound --> N_NoPayerofFreightInformationFound_Node0 N_NoPayerofFreightInformationFound_Node0 -- No --> E_NoPayerofFreightInformationFound
freight information is found"}:::decision N_NoPayerofFreightInformationFound_Node0_action["The system indicates that no payer
of freight information is available
for the cargo"]:::main N_NoPayerofFreightInformationFound_Node0 -- Yes --> N_NoPayerofFreightInformationFound_Node0_action N_NoPayerofFreightInformationFound_Node0_action --> E_NoPayerofFreightInformationFound S_NoPayerofFreightInformationFound --> N_NoPayerofFreightInformationFound_Node0 N_NoPayerofFreightInformationFound_Node0 -- No --> E_NoPayerofFreightInformationFound
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
Secondary records are not available or contain no payer of freight information
WHEN:
The system determines no payer of freight information is found
THEN:
The system indicates that no payer of freight information is available for the cargo
β Consolidated Acceptance Criteria
- The system checks the debug mode status → if debug mode is active, proceed with debug display initialization, otherwise skip debug processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_DebugModeActive(["Start Step"])
E_DebugModeActive(["End Step"])
N_DebugModeActive_Node0{"The system checks the debug mode
status"}:::decision N_DebugModeActive_Node0_action["If debug mode is active, proceed
with debug display initialization,
otherwise skip debug processing"]:::main N_DebugModeActive_Node0 -- Yes --> N_DebugModeActive_Node0_action N_DebugModeActive_Node0_action --> E_DebugModeActive S_DebugModeActive --> N_DebugModeActive_Node0 N_DebugModeActive_Node0 -- No --> E_DebugModeActive
status"}:::decision N_DebugModeActive_Node0_action["If debug mode is active, proceed
with debug display initialization,
otherwise skip debug processing"]:::main N_DebugModeActive_Node0 -- Yes --> N_DebugModeActive_Node0_action N_DebugModeActive_Node0_action --> E_DebugModeActive S_DebugModeActive --> N_DebugModeActive_Node0 N_DebugModeActive_Node0 -- No --> E_DebugModeActive
File: GCX016.cbl
GIVEN:
A status array debugging request is received
WHEN:
The system checks the debug mode status
THEN:
If debug mode is active, proceed with debug display initialization, otherwise skip debug processing
β Consolidated Acceptance Criteria
- Debug display initialization is triggered → set up debug display headers and prepare for array content display
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_InitializeDebugDisplay(["Start Step"])
E_InitializeDebugDisplay(["End Step"])
N_InitializeDebugDisplay_Node0{"Debug display initialization is
triggered"}:::decision N_InitializeDebugDisplay_Node0_action["Set up debug display headers and
prepare for array content display"]:::main N_InitializeDebugDisplay_Node0 -- Yes --> N_InitializeDebugDisplay_Node0_action N_InitializeDebugDisplay_Node0_action --> E_InitializeDebugDisplay S_InitializeDebugDisplay --> N_InitializeDebugDisplay_Node0 N_InitializeDebugDisplay_Node0 -- No --> E_InitializeDebugDisplay
triggered"}:::decision N_InitializeDebugDisplay_Node0_action["Set up debug display headers and
prepare for array content display"]:::main N_InitializeDebugDisplay_Node0 -- Yes --> N_InitializeDebugDisplay_Node0_action N_InitializeDebugDisplay_Node0_action --> E_InitializeDebugDisplay S_InitializeDebugDisplay --> N_InitializeDebugDisplay_Node0 N_InitializeDebugDisplay_Node0 -- No --> E_InitializeDebugDisplay
File: GCX016.cbl
GIVEN:
Debug mode is active
WHEN:
Debug display initialization is triggered
THEN:
- Set up debug display headers
- Prepare for array content display
β Consolidated Acceptance Criteria
- The system checks for array elements → if array has elements, display array header information, otherwise skip to array summary display
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ArrayHasElements(["Start Step"])
E_ArrayHasElements(["End Step"])
N_ArrayHasElements_Node0{"The system checks for array
elements"}:::decision N_ArrayHasElements_Node0_action["If array has elements, display
array header information, otherwise
skip to array summary display"]:::main N_ArrayHasElements_Node0 -- Yes --> N_ArrayHasElements_Node0_action N_ArrayHasElements_Node0_action --> E_ArrayHasElements S_ArrayHasElements --> N_ArrayHasElements_Node0 N_ArrayHasElements_Node0 -- No --> E_ArrayHasElements
elements"}:::decision N_ArrayHasElements_Node0_action["If array has elements, display
array header information, otherwise
skip to array summary display"]:::main N_ArrayHasElements_Node0 -- Yes --> N_ArrayHasElements_Node0_action N_ArrayHasElements_Node0_action --> E_ArrayHasElements S_ArrayHasElements --> N_ArrayHasElements_Node0 N_ArrayHasElements_Node0 -- No --> E_ArrayHasElements
File: GCX016.cbl
GIVEN:
The S09A status array has been read
WHEN:
The system checks for array elements
THEN:
If array has elements, display array header information, otherwise skip to array summary display
β Consolidated Acceptance Criteria
- Array header display is initiated → display array identification and structural information
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_DisplayArrayHeaderInformation(["Start Step"])
E_DisplayArrayHeaderInformation(["End Step"])
N_DisplayArrayHeaderInformation_Node0{"Array header display is initiated"}:::decision
N_DisplayArrayHeaderInformation_Node0_action["Display array identification and
structural information"]:::main N_DisplayArrayHeaderInformation_Node0 -- Yes --> N_DisplayArrayHeaderInformation_Node0_action N_DisplayArrayHeaderInformation_Node0_action --> E_DisplayArrayHeaderInformation S_DisplayArrayHeaderInformation --> N_DisplayArrayHeaderInformation_Node0 N_DisplayArrayHeaderInformation_Node0 -- No --> E_DisplayArrayHeaderInformation
structural information"]:::main N_DisplayArrayHeaderInformation_Node0 -- Yes --> N_DisplayArrayHeaderInformation_Node0_action N_DisplayArrayHeaderInformation_Node0_action --> E_DisplayArrayHeaderInformation S_DisplayArrayHeaderInformation --> N_DisplayArrayHeaderInformation_Node0 N_DisplayArrayHeaderInformation_Node0 -- No --> E_DisplayArrayHeaderInformation
File: GCX016.cbl
GIVEN:
The status array contains elements
WHEN:
Array header display is initiated
THEN:
- Display array identification
- Structural information
β Consolidated Acceptance Criteria
- Element processing loop is initiated → process each array element sequentially for detailed display
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LoopThroughArrayElements(["Start Step"])
E_LoopThroughArrayElements(["End Step"])
N_LoopThroughArrayElements_Node0{"Element processing loop is
initiated"}:::decision N_LoopThroughArrayElements_Node0_action["Process each array element
sequentially for detailed display"]:::main N_LoopThroughArrayElements_Node0 -- Yes --> N_LoopThroughArrayElements_Node0_action N_LoopThroughArrayElements_Node0_action --> E_LoopThroughArrayElements S_LoopThroughArrayElements --> N_LoopThroughArrayElements_Node0 N_LoopThroughArrayElements_Node0 -- No --> E_LoopThroughArrayElements
initiated"}:::decision N_LoopThroughArrayElements_Node0_action["Process each array element
sequentially for detailed display"]:::main N_LoopThroughArrayElements_Node0 -- Yes --> N_LoopThroughArrayElements_Node0_action N_LoopThroughArrayElements_Node0_action --> E_LoopThroughArrayElements S_LoopThroughArrayElements --> N_LoopThroughArrayElements_Node0 N_LoopThroughArrayElements_Node0 -- No --> E_LoopThroughArrayElements
File: GCX016.cbl
GIVEN:
The status array has elements to display
WHEN:
Element processing loop is initiated
THEN:
Process each array element sequentially for detailed display
β Consolidated Acceptance Criteria
- Element detail display is requested → display disposition code, status information, entry number, quantity information, location details, and released flag
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_DisplayElementDetails(["Start Step"])
E_DisplayElementDetails(["End Step"])
N_DisplayElementDetails_Node0{"Element detail display is requested"}:::decision
N_DisplayElementDetails_Node0_action["Display disposition code, status
information, entry number, quantity
information, location details, and
released flag"]:::main N_DisplayElementDetails_Node0 -- Yes --> N_DisplayElementDetails_Node0_action N_DisplayElementDetails_Node0_action --> E_DisplayElementDetails S_DisplayElementDetails --> N_DisplayElementDetails_Node0 N_DisplayElementDetails_Node0 -- No --> E_DisplayElementDetails
information, entry number, quantity
information, location details, and
released flag"]:::main N_DisplayElementDetails_Node0 -- Yes --> N_DisplayElementDetails_Node0_action N_DisplayElementDetails_Node0_action --> E_DisplayElementDetails S_DisplayElementDetails --> N_DisplayElementDetails_Node0 N_DisplayElementDetails_Node0 -- No --> E_DisplayElementDetails
File: GCX016.cbl
GIVEN:
A status array element is being processed
WHEN:
Element detail display is requested
THEN:
Display disposition code, status information, entry number, quantity information, location details, and released flag
β Consolidated Acceptance Criteria
- Disposition code display is requested → show the disposition code value for the current element
- Disposition code is requested for display → the system displays the disposition code from the cargo status array
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ShowDispositionCode(["Start Step"])
E_ShowDispositionCode(["End Step"])
N_ShowDispositionCode_Node0{"Disposition code display is
requested"}:::decision N_ShowDispositionCode_Node0_action["Show the disposition code value for
the current element"]:::main N_ShowDispositionCode_Node0 -- Yes --> N_ShowDispositionCode_Node0_action N_ShowDispositionCode_Node0_action --> E_ShowDispositionCode S_ShowDispositionCode --> N_ShowDispositionCode_Node0 N_ShowDispositionCode_Node1{"Disposition code is requested for
display"}:::decision N_ShowDispositionCode_Node1_action["The system displays the disposition
code from the cargo status array"]:::main N_ShowDispositionCode_Node1 -- Yes --> N_ShowDispositionCode_Node1_action N_ShowDispositionCode_Node1_action --> E_ShowDispositionCode N_ShowDispositionCode_Node0 -- No --> N_ShowDispositionCode_Node1 N_ShowDispositionCode_Node1 -- No --> E_ShowDispositionCode
requested"}:::decision N_ShowDispositionCode_Node0_action["Show the disposition code value for
the current element"]:::main N_ShowDispositionCode_Node0 -- Yes --> N_ShowDispositionCode_Node0_action N_ShowDispositionCode_Node0_action --> E_ShowDispositionCode S_ShowDispositionCode --> N_ShowDispositionCode_Node0 N_ShowDispositionCode_Node1{"Disposition code is requested for
display"}:::decision N_ShowDispositionCode_Node1_action["The system displays the disposition
code from the cargo status array"]:::main N_ShowDispositionCode_Node1 -- Yes --> N_ShowDispositionCode_Node1_action N_ShowDispositionCode_Node1_action --> E_ShowDispositionCode N_ShowDispositionCode_Node0 -- No --> N_ShowDispositionCode_Node1 N_ShowDispositionCode_Node1 -- No --> E_ShowDispositionCode
File: GCX016.cbl
GIVEN:
A status array element is being displayed
WHEN:
Disposition code display is requested
THEN:
Show the disposition code value for the current element
File: GCX016.cbl
GIVEN:
A cargo record with disposition code information exists
WHEN:
Disposition code is requested for display
THEN:
The system displays the disposition code from the cargo status array
β Consolidated Acceptance Criteria
- Status information display is requested → show all status flags and related information for the current element
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ShowStatusInformation(["Start Step"])
E_ShowStatusInformation(["End Step"])
N_ShowStatusInformation_Node0{"Status information display is
requested"}:::decision N_ShowStatusInformation_Node0_action["Show all status flags and related
information for the current element"]:::main N_ShowStatusInformation_Node0 -- Yes --> N_ShowStatusInformation_Node0_action N_ShowStatusInformation_Node0_action --> E_ShowStatusInformation S_ShowStatusInformation --> N_ShowStatusInformation_Node0 N_ShowStatusInformation_Node0 -- No --> E_ShowStatusInformation
requested"}:::decision N_ShowStatusInformation_Node0_action["Show all status flags and related
information for the current element"]:::main N_ShowStatusInformation_Node0 -- Yes --> N_ShowStatusInformation_Node0_action N_ShowStatusInformation_Node0_action --> E_ShowStatusInformation S_ShowStatusInformation --> N_ShowStatusInformation_Node0 N_ShowStatusInformation_Node0 -- No --> E_ShowStatusInformation
File: GCX016.cbl
GIVEN:
A status array element is being displayed
WHEN:
Status information display is requested
THEN:
- Show all status flags
- Related information for the current element
β Consolidated Acceptance Criteria
- Entry number display is requested → show the entry number value for the current element
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ShowEntryNumber(["Start Step"])
E_ShowEntryNumber(["End Step"])
N_ShowEntryNumber_Node0{"Entry number display is requested"}:::decision
N_ShowEntryNumber_Node0_action["Show the entry number value for the
current element"]:::main N_ShowEntryNumber_Node0 -- Yes --> N_ShowEntryNumber_Node0_action N_ShowEntryNumber_Node0_action --> E_ShowEntryNumber S_ShowEntryNumber --> N_ShowEntryNumber_Node0 N_ShowEntryNumber_Node0 -- No --> E_ShowEntryNumber
current element"]:::main N_ShowEntryNumber_Node0 -- Yes --> N_ShowEntryNumber_Node0_action N_ShowEntryNumber_Node0_action --> E_ShowEntryNumber S_ShowEntryNumber --> N_ShowEntryNumber_Node0 N_ShowEntryNumber_Node0 -- No --> E_ShowEntryNumber
File: GCX016.cbl
GIVEN:
A status array element is being displayed
WHEN:
Entry number display is requested
THEN:
Show the entry number value for the current element
β Consolidated Acceptance Criteria
- Quantity information display is requested → show all quantity values and related information for the current element
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ShowQuantityInformation(["Start Step"])
E_ShowQuantityInformation(["End Step"])
N_ShowQuantityInformation_Node0{"Quantity information display is
requested"}:::decision N_ShowQuantityInformation_Node0_action["Show all quantity values and
related information for the current
element"]:::main N_ShowQuantityInformation_Node0 -- Yes --> N_ShowQuantityInformation_Node0_action N_ShowQuantityInformation_Node0_action --> E_ShowQuantityInformation S_ShowQuantityInformation --> N_ShowQuantityInformation_Node0 N_ShowQuantityInformation_Node0 -- No --> E_ShowQuantityInformation
requested"}:::decision N_ShowQuantityInformation_Node0_action["Show all quantity values and
related information for the current
element"]:::main N_ShowQuantityInformation_Node0 -- Yes --> N_ShowQuantityInformation_Node0_action N_ShowQuantityInformation_Node0_action --> E_ShowQuantityInformation S_ShowQuantityInformation --> N_ShowQuantityInformation_Node0 N_ShowQuantityInformation_Node0 -- No --> E_ShowQuantityInformation
File: GCX016.cbl
GIVEN:
A status array element is being displayed
WHEN:
Quantity information display is requested
THEN:
- Show all quantity values
- Related information for the current element
β Consolidated Acceptance Criteria
- Location details display is requested → show location codes and related geographic information for the current element
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ShowLocationDetails(["Start Step"])
E_ShowLocationDetails(["End Step"])
N_ShowLocationDetails_Node0{"Location details display is
requested"}:::decision N_ShowLocationDetails_Node0_action["Show location codes and related
geographic information for the
current element"]:::main N_ShowLocationDetails_Node0 -- Yes --> N_ShowLocationDetails_Node0_action N_ShowLocationDetails_Node0_action --> E_ShowLocationDetails S_ShowLocationDetails --> N_ShowLocationDetails_Node0 N_ShowLocationDetails_Node0 -- No --> E_ShowLocationDetails
requested"}:::decision N_ShowLocationDetails_Node0_action["Show location codes and related
geographic information for the
current element"]:::main N_ShowLocationDetails_Node0 -- Yes --> N_ShowLocationDetails_Node0_action N_ShowLocationDetails_Node0_action --> E_ShowLocationDetails S_ShowLocationDetails --> N_ShowLocationDetails_Node0 N_ShowLocationDetails_Node0 -- No --> E_ShowLocationDetails
File: GCX016.cbl
GIVEN:
A status array element is being displayed
WHEN:
Location details display is requested
THEN:
- Show location codes
- Related geographic information for the current element
β Consolidated Acceptance Criteria
- Released flag display is requested → show the released status indicator for the current element
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ShowReleasedFlag(["Start Step"])
E_ShowReleasedFlag(["End Step"])
N_ShowReleasedFlag_Node0{"Released flag display is requested"}:::decision
N_ShowReleasedFlag_Node0_action["Show the released status indicator
for the current element"]:::main N_ShowReleasedFlag_Node0 -- Yes --> N_ShowReleasedFlag_Node0_action N_ShowReleasedFlag_Node0_action --> E_ShowReleasedFlag S_ShowReleasedFlag --> N_ShowReleasedFlag_Node0 N_ShowReleasedFlag_Node0 -- No --> E_ShowReleasedFlag
for the current element"]:::main N_ShowReleasedFlag_Node0 -- Yes --> N_ShowReleasedFlag_Node0_action N_ShowReleasedFlag_Node0_action --> E_ShowReleasedFlag S_ShowReleasedFlag --> N_ShowReleasedFlag_Node0 N_ShowReleasedFlag_Node0 -- No --> E_ShowReleasedFlag
File: GCX016.cbl
GIVEN:
A status array element is being displayed
WHEN:
Released flag display is requested
THEN:
Show the released status indicator for the current element
β Consolidated Acceptance Criteria
- The system checks for additional elements → if more elements exist, continue with the next element, otherwise proceed to array summary display
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MoreElements(["Start Step"])
E_MoreElements(["End Step"])
N_MoreElements_Node0{"The system checks for additional
elements"}:::decision N_MoreElements_Node0_action["If more elements exist, continue
with the next element, otherwise
proceed to array summary display"]:::main N_MoreElements_Node0 -- Yes --> N_MoreElements_Node0_action N_MoreElements_Node0_action --> E_MoreElements S_MoreElements --> N_MoreElements_Node0 N_MoreElements_Node0 -- No --> E_MoreElements
elements"}:::decision N_MoreElements_Node0_action["If more elements exist, continue
with the next element, otherwise
proceed to array summary display"]:::main N_MoreElements_Node0 -- Yes --> N_MoreElements_Node0_action N_MoreElements_Node0_action --> E_MoreElements S_MoreElements --> N_MoreElements_Node0 N_MoreElements_Node0 -- No --> E_MoreElements
File: GCX016.cbl
GIVEN:
An array element has been processed and displayed
WHEN:
The system checks for additional elements
THEN:
If more elements exist, continue with the next element, otherwise proceed to array summary display
β Consolidated Acceptance Criteria
- Array summary display is initiated → display total element count and array capacity usage information
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_DisplayArraySummary(["Start Step"])
E_DisplayArraySummary(["End Step"])
N_DisplayArraySummary_Node0{"Array summary display is initiated"}:::decision
N_DisplayArraySummary_Node0_action["Display total element count and
array capacity usage information"]:::main N_DisplayArraySummary_Node0 -- Yes --> N_DisplayArraySummary_Node0_action N_DisplayArraySummary_Node0_action --> E_DisplayArraySummary S_DisplayArraySummary --> N_DisplayArraySummary_Node0 N_DisplayArraySummary_Node0 -- No --> E_DisplayArraySummary
array capacity usage information"]:::main N_DisplayArraySummary_Node0 -- Yes --> N_DisplayArraySummary_Node0_action N_DisplayArraySummary_Node0_action --> E_DisplayArraySummary S_DisplayArraySummary --> N_DisplayArraySummary_Node0 N_DisplayArraySummary_Node0 -- No --> E_DisplayArraySummary
File: GCX016.cbl
GIVEN:
All array elements have been processed or no elements exist
WHEN:
Array summary display is initiated
THEN:
- Display total element count
- Array capacity usage information
β Consolidated Acceptance Criteria
- Total element count display is requested → show the count of elements currently in the status array
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ShowTotalElementCount(["Start Step"])
E_ShowTotalElementCount(["End Step"])
N_ShowTotalElementCount_Node0{"Total element count display is
requested"}:::decision N_ShowTotalElementCount_Node0_action["Show the count of elements
currently in the status array"]:::main N_ShowTotalElementCount_Node0 -- Yes --> N_ShowTotalElementCount_Node0_action N_ShowTotalElementCount_Node0_action --> E_ShowTotalElementCount S_ShowTotalElementCount --> N_ShowTotalElementCount_Node0 N_ShowTotalElementCount_Node0 -- No --> E_ShowTotalElementCount
requested"}:::decision N_ShowTotalElementCount_Node0_action["Show the count of elements
currently in the status array"]:::main N_ShowTotalElementCount_Node0 -- Yes --> N_ShowTotalElementCount_Node0_action N_ShowTotalElementCount_Node0_action --> E_ShowTotalElementCount S_ShowTotalElementCount --> N_ShowTotalElementCount_Node0 N_ShowTotalElementCount_Node0 -- No --> E_ShowTotalElementCount
File: GCX016.cbl
GIVEN:
Array summary display is being shown
WHEN:
Total element count display is requested
THEN:
Show the count of elements currently in the status array
β Consolidated Acceptance Criteria
- Array capacity usage display is requested → show the percentage or ratio of array capacity currently utilized
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ShowArrayCapacityUsage(["Start Step"])
E_ShowArrayCapacityUsage(["End Step"])
N_ShowArrayCapacityUsage_Node0{"Array capacity usage display is
requested"}:::decision N_ShowArrayCapacityUsage_Node0_action["Show the percentage or ratio of
array capacity currently utilized"]:::main N_ShowArrayCapacityUsage_Node0 -- Yes --> N_ShowArrayCapacityUsage_Node0_action N_ShowArrayCapacityUsage_Node0_action --> E_ShowArrayCapacityUsage S_ShowArrayCapacityUsage --> N_ShowArrayCapacityUsage_Node0 N_ShowArrayCapacityUsage_Node0 -- No --> E_ShowArrayCapacityUsage
requested"}:::decision N_ShowArrayCapacityUsage_Node0_action["Show the percentage or ratio of
array capacity currently utilized"]:::main N_ShowArrayCapacityUsage_Node0 -- Yes --> N_ShowArrayCapacityUsage_Node0_action N_ShowArrayCapacityUsage_Node0_action --> E_ShowArrayCapacityUsage S_ShowArrayCapacityUsage --> N_ShowArrayCapacityUsage_Node0 N_ShowArrayCapacityUsage_Node0 -- No --> E_ShowArrayCapacityUsage
File: GCX016.cbl
GIVEN:
Array summary display is being shown
WHEN:
Array capacity usage display is requested
THEN:
Show the percentage or ratio of array capacity currently utilized
β Consolidated Acceptance Criteria
- Debug information logging is initiated → record all displayed debug information in the system log
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogDebugInformation(["Start Step"])
E_LogDebugInformation(["End Step"])
N_LogDebugInformation_Node0{"Debug information logging is
initiated"}:::decision N_LogDebugInformation_Node0_action["Record all displayed debug
information in the system log"]:::main N_LogDebugInformation_Node0 -- Yes --> N_LogDebugInformation_Node0_action N_LogDebugInformation_Node0_action --> E_LogDebugInformation S_LogDebugInformation --> N_LogDebugInformation_Node0 N_LogDebugInformation_Node0 -- No --> E_LogDebugInformation
initiated"}:::decision N_LogDebugInformation_Node0_action["Record all displayed debug
information in the system log"]:::main N_LogDebugInformation_Node0 -- Yes --> N_LogDebugInformation_Node0_action N_LogDebugInformation_Node0_action --> E_LogDebugInformation S_LogDebugInformation --> N_LogDebugInformation_Node0 N_LogDebugInformation_Node0 -- No --> E_LogDebugInformation
File: GCX016.cbl
GIVEN:
Debug display has been completed
WHEN:
Debug information logging is initiated
THEN:
Record all displayed debug information in the system log
β Consolidated Acceptance Criteria
- Debug mode is not active → skip all debug display processing and proceed to completion
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SkipDebugProcessing(["Start Step"])
E_SkipDebugProcessing(["End Step"])
N_SkipDebugProcessing_Node0{"Debug mode is not active"}:::decision
N_SkipDebugProcessing_Node0_action["Skip all debug display processing
and proceed to completion"]:::main N_SkipDebugProcessing_Node0 -- Yes --> N_SkipDebugProcessing_Node0_action N_SkipDebugProcessing_Node0_action --> E_SkipDebugProcessing S_SkipDebugProcessing --> N_SkipDebugProcessing_Node0 N_SkipDebugProcessing_Node0 -- No --> E_SkipDebugProcessing
and proceed to completion"]:::main N_SkipDebugProcessing_Node0 -- Yes --> N_SkipDebugProcessing_Node0_action N_SkipDebugProcessing_Node0_action --> E_SkipDebugProcessing S_SkipDebugProcessing --> N_SkipDebugProcessing_Node0 N_SkipDebugProcessing_Node0 -- No --> E_SkipDebugProcessing
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
A status array debugging request is received
WHEN:
Debug mode is not active
THEN:
- Skip all debug display processing
- Proceed to completion
β Consolidated Acceptance Criteria
- Debug display completion is reached → finalize debug display and return control to the main processing flow
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_DebugDisplayComplete(["Start Step"])
E_DebugDisplayComplete(["End Step"])
N_DebugDisplayComplete_Node0{"Debug display completion is reached"}:::decision
N_DebugDisplayComplete_Node0_action["Finalize debug display and return
control to the main processing flow"]:::main N_DebugDisplayComplete_Node0 -- Yes --> N_DebugDisplayComplete_Node0_action N_DebugDisplayComplete_Node0_action --> E_DebugDisplayComplete S_DebugDisplayComplete --> N_DebugDisplayComplete_Node0 N_DebugDisplayComplete_Node0 -- No --> E_DebugDisplayComplete
control to the main processing flow"]:::main N_DebugDisplayComplete_Node0 -- Yes --> N_DebugDisplayComplete_Node0_action N_DebugDisplayComplete_Node0_action --> E_DebugDisplayComplete S_DebugDisplayComplete --> N_DebugDisplayComplete_Node0 N_DebugDisplayComplete_Node0 -- No --> E_DebugDisplayComplete
File: GCX016.cbl
GIVEN:
Debug processing has been completed or skipped
WHEN:
Debug display completion is reached
THEN:
- Finalize debug display
- Return control to the main processing flow
β Consolidated Acceptance Criteria
- Cargo status monitoring is initiated → the system displays cargo identification including car ID, waybill number, and US-CCN status information
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_DisplayCargoIdentification(["Start Step"])
E_DisplayCargoIdentification(["End Step"])
N_DisplayCargoIdentification_Node0{"Cargo status monitoring is
initiated"}:::decision N_DisplayCargoIdentification_Node0_action["The system displays cargo
identification including car ID,
waybill number, and US-CCN status
information"]:::main N_DisplayCargoIdentification_Node0 -- Yes --> N_DisplayCargoIdentification_Node0_action N_DisplayCargoIdentification_Node0_action --> E_DisplayCargoIdentification S_DisplayCargoIdentification --> N_DisplayCargoIdentification_Node0 N_DisplayCargoIdentification_Node0 -- No --> E_DisplayCargoIdentification
initiated"}:::decision N_DisplayCargoIdentification_Node0_action["The system displays cargo
identification including car ID,
waybill number, and US-CCN status
information"]:::main N_DisplayCargoIdentification_Node0 -- Yes --> N_DisplayCargoIdentification_Node0_action N_DisplayCargoIdentification_Node0_action --> E_DisplayCargoIdentification S_DisplayCargoIdentification --> N_DisplayCargoIdentification_Node0 N_DisplayCargoIdentification_Node0 -- No --> E_DisplayCargoIdentification
File: GCX016.cbl
GIVEN:
A cargo record exists in the system
WHEN:
Cargo status monitoring is initiated
THEN:
The system displays cargo identification including car ID, waybill number, and US-CCN status information
β Consolidated Acceptance Criteria
- Car ID information is requested for display → the system shows the car ID from the cargo record
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ShowCarIDInformation(["Start Step"])
E_ShowCarIDInformation(["End Step"])
N_ShowCarIDInformation_Node0{"Car ID information is requested for
display"}:::decision N_ShowCarIDInformation_Node0_action["The system shows the car ID from
the cargo record"]:::main N_ShowCarIDInformation_Node0 -- Yes --> N_ShowCarIDInformation_Node0_action N_ShowCarIDInformation_Node0_action --> E_ShowCarIDInformation S_ShowCarIDInformation --> N_ShowCarIDInformation_Node0 N_ShowCarIDInformation_Node0 -- No --> E_ShowCarIDInformation
display"}:::decision N_ShowCarIDInformation_Node0_action["The system shows the car ID from
the cargo record"]:::main N_ShowCarIDInformation_Node0 -- Yes --> N_ShowCarIDInformation_Node0_action N_ShowCarIDInformation_Node0_action --> E_ShowCarIDInformation S_ShowCarIDInformation --> N_ShowCarIDInformation_Node0 N_ShowCarIDInformation_Node0 -- No --> E_ShowCarIDInformation
File: GCX016.cbl
GIVEN:
A cargo record with car identification exists
WHEN:
Car ID information is requested for display
THEN:
The system shows the car ID from the cargo record
β Consolidated Acceptance Criteria
- Waybill information is requested for display → the system displays the waybill number from the cargo record
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ShowWaybillNumber(["Start Step"])
E_ShowWaybillNumber(["End Step"])
N_ShowWaybillNumber_Node0{"Waybill information is requested
for display"}:::decision N_ShowWaybillNumber_Node0_action["The system displays the waybill
number from the cargo record"]:::main N_ShowWaybillNumber_Node0 -- Yes --> N_ShowWaybillNumber_Node0_action N_ShowWaybillNumber_Node0_action --> E_ShowWaybillNumber S_ShowWaybillNumber --> N_ShowWaybillNumber_Node0 N_ShowWaybillNumber_Node0 -- No --> E_ShowWaybillNumber
for display"}:::decision N_ShowWaybillNumber_Node0_action["The system displays the waybill
number from the cargo record"]:::main N_ShowWaybillNumber_Node0 -- Yes --> N_ShowWaybillNumber_Node0_action N_ShowWaybillNumber_Node0_action --> E_ShowWaybillNumber S_ShowWaybillNumber --> N_ShowWaybillNumber_Node0 N_ShowWaybillNumber_Node0 -- No --> E_ShowWaybillNumber
File: GCX016.cbl
GIVEN:
A cargo record with waybill information exists
WHEN:
Waybill information is requested for display
THEN:
The system displays the waybill number from the cargo record
β Consolidated Acceptance Criteria
- US-CCN status is requested for display → the system displays the current US-CCN status from the cargo record
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_DisplayUSCCNStatus(["Start Step"])
E_DisplayUSCCNStatus(["End Step"])
N_DisplayUSCCNStatus_Node0{"US-CCN status is requested for
display"}:::decision N_DisplayUSCCNStatus_Node0_action["The system displays the current
US-CCN status from the cargo record"]:::main N_DisplayUSCCNStatus_Node0 -- Yes --> N_DisplayUSCCNStatus_Node0_action N_DisplayUSCCNStatus_Node0_action --> E_DisplayUSCCNStatus S_DisplayUSCCNStatus --> N_DisplayUSCCNStatus_Node0 N_DisplayUSCCNStatus_Node0 -- No --> E_DisplayUSCCNStatus
display"}:::decision N_DisplayUSCCNStatus_Node0_action["The system displays the current
US-CCN status from the cargo record"]:::main N_DisplayUSCCNStatus_Node0 -- Yes --> N_DisplayUSCCNStatus_Node0_action N_DisplayUSCCNStatus_Node0_action --> E_DisplayUSCCNStatus S_DisplayUSCCNStatus --> N_DisplayUSCCNStatus_Node0 N_DisplayUSCCNStatus_Node0 -- No --> E_DisplayUSCCNStatus
File: GCX016.cbl
GIVEN:
A cargo record with US-CCN information exists
WHEN:
US-CCN status is requested for display
THEN:
The system displays the current US-CCN status from the cargo record
β Consolidated Acceptance Criteria
- CPRS status description is requested for display → the system displays the CPRS status description from the cargo record
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ShowCPRSStatusDescription(["Start Step"])
E_ShowCPRSStatusDescription(["End Step"])
N_ShowCPRSStatusDescription_Node0{"CPRS status description is
requested for display"}:::decision N_ShowCPRSStatusDescription_Node0_action["The system displays the CPRS status
description from the cargo record"]:::main N_ShowCPRSStatusDescription_Node0 -- Yes --> N_ShowCPRSStatusDescription_Node0_action N_ShowCPRSStatusDescription_Node0_action --> E_ShowCPRSStatusDescription S_ShowCPRSStatusDescription --> N_ShowCPRSStatusDescription_Node0 N_ShowCPRSStatusDescription_Node0 -- No --> E_ShowCPRSStatusDescription
requested for display"}:::decision N_ShowCPRSStatusDescription_Node0_action["The system displays the CPRS status
description from the cargo record"]:::main N_ShowCPRSStatusDescription_Node0 -- Yes --> N_ShowCPRSStatusDescription_Node0_action N_ShowCPRSStatusDescription_Node0_action --> E_ShowCPRSStatusDescription S_ShowCPRSStatusDescription --> N_ShowCPRSStatusDescription_Node0 N_ShowCPRSStatusDescription_Node0 -- No --> E_ShowCPRSStatusDescription
File: GCX016.cbl
GIVEN:
A cargo record with CPRS status information exists
WHEN:
CPRS status description is requested for display
THEN:
The system displays the CPRS status description from the cargo record
β Consolidated Acceptance Criteria
- USCS status description is requested for display → the system displays the USCS status description from the cargo record
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ShowUSCSStatusDescription(["Start Step"])
E_ShowUSCSStatusDescription(["End Step"])
N_ShowUSCSStatusDescription_Node0{"USCS status description is
requested for display"}:::decision N_ShowUSCSStatusDescription_Node0_action["The system displays the USCS status
description from the cargo record"]:::main N_ShowUSCSStatusDescription_Node0 -- Yes --> N_ShowUSCSStatusDescription_Node0_action N_ShowUSCSStatusDescription_Node0_action --> E_ShowUSCSStatusDescription S_ShowUSCSStatusDescription --> N_ShowUSCSStatusDescription_Node0 N_ShowUSCSStatusDescription_Node0 -- No --> E_ShowUSCSStatusDescription
requested for display"}:::decision N_ShowUSCSStatusDescription_Node0_action["The system displays the USCS status
description from the cargo record"]:::main N_ShowUSCSStatusDescription_Node0 -- Yes --> N_ShowUSCSStatusDescription_Node0_action N_ShowUSCSStatusDescription_Node0_action --> E_ShowUSCSStatusDescription S_ShowUSCSStatusDescription --> N_ShowUSCSStatusDescription_Node0 N_ShowUSCSStatusDescription_Node0 -- No --> E_ShowUSCSStatusDescription
File: GCX016.cbl
GIVEN:
A cargo record with USCS status information exists
WHEN:
USCS status description is requested for display
THEN:
The system displays the USCS status description from the cargo record
β Consolidated Acceptance Criteria
- Total quantity information is requested for display → the system displays the total quantity from the cargo record
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ShowTotalQuantity(["Start Step"])
E_ShowTotalQuantity(["End Step"])
N_ShowTotalQuantity_Node0{"Total quantity information is
requested for display"}:::decision N_ShowTotalQuantity_Node0_action["The system displays the total
quantity from the cargo record"]:::main N_ShowTotalQuantity_Node0 -- Yes --> N_ShowTotalQuantity_Node0_action N_ShowTotalQuantity_Node0_action --> E_ShowTotalQuantity S_ShowTotalQuantity --> N_ShowTotalQuantity_Node0 N_ShowTotalQuantity_Node0 -- No --> E_ShowTotalQuantity
requested for display"}:::decision N_ShowTotalQuantity_Node0_action["The system displays the total
quantity from the cargo record"]:::main N_ShowTotalQuantity_Node0 -- Yes --> N_ShowTotalQuantity_Node0_action N_ShowTotalQuantity_Node0_action --> E_ShowTotalQuantity S_ShowTotalQuantity --> N_ShowTotalQuantity_Node0 N_ShowTotalQuantity_Node0 -- No --> E_ShowTotalQuantity
File: GCX016.cbl
GIVEN:
A cargo record with quantity information exists
WHEN:
Total quantity information is requested for display
THEN:
The system displays the total quantity from the cargo record
β Consolidated Acceptance Criteria
- Released quantity information is requested for display → the system displays the released quantity from the cargo record
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ShowReleasedQuantity(["Start Step"])
E_ShowReleasedQuantity(["End Step"])
N_ShowReleasedQuantity_Node0{"Released quantity information is
requested for display"}:::decision N_ShowReleasedQuantity_Node0_action["The system displays the released
quantity from the cargo record"]:::main N_ShowReleasedQuantity_Node0 -- Yes --> N_ShowReleasedQuantity_Node0_action N_ShowReleasedQuantity_Node0_action --> E_ShowReleasedQuantity S_ShowReleasedQuantity --> N_ShowReleasedQuantity_Node0 N_ShowReleasedQuantity_Node0 -- No --> E_ShowReleasedQuantity
requested for display"}:::decision N_ShowReleasedQuantity_Node0_action["The system displays the released
quantity from the cargo record"]:::main N_ShowReleasedQuantity_Node0 -- Yes --> N_ShowReleasedQuantity_Node0_action N_ShowReleasedQuantity_Node0_action --> E_ShowReleasedQuantity S_ShowReleasedQuantity --> N_ShowReleasedQuantity_Node0 N_ShowReleasedQuantity_Node0 -- No --> E_ShowReleasedQuantity
File: GCX016.cbl
GIVEN:
A cargo record with release quantity information exists
WHEN:
Released quantity information is requested for display
THEN:
The system displays the released quantity from the cargo record
β Consolidated Acceptance Criteria
- Broker entry numbers are requested for display → the system displays the broker entry numbers from the cargo record
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ShowBrokerEntryNumbers(["Start Step"])
E_ShowBrokerEntryNumbers(["End Step"])
N_ShowBrokerEntryNumbers_Node0{"Broker entry numbers are requested
for display"}:::decision N_ShowBrokerEntryNumbers_Node0_action["The system displays the broker
entry numbers from the cargo record"]:::main N_ShowBrokerEntryNumbers_Node0 -- Yes --> N_ShowBrokerEntryNumbers_Node0_action N_ShowBrokerEntryNumbers_Node0_action --> E_ShowBrokerEntryNumbers S_ShowBrokerEntryNumbers --> N_ShowBrokerEntryNumbers_Node0 N_ShowBrokerEntryNumbers_Node0 -- No --> E_ShowBrokerEntryNumbers
for display"}:::decision N_ShowBrokerEntryNumbers_Node0_action["The system displays the broker
entry numbers from the cargo record"]:::main N_ShowBrokerEntryNumbers_Node0 -- Yes --> N_ShowBrokerEntryNumbers_Node0_action N_ShowBrokerEntryNumbers_Node0_action --> E_ShowBrokerEntryNumbers S_ShowBrokerEntryNumbers --> N_ShowBrokerEntryNumbers_Node0 N_ShowBrokerEntryNumbers_Node0 -- No --> E_ShowBrokerEntryNumbers
File: GCX016.cbl
GIVEN:
A cargo record with broker entry number information exists
WHEN:
Broker entry numbers are requested for display
THEN:
The system displays the broker entry numbers from the cargo record
β Consolidated Acceptance Criteria
- Code description is requested for display → the system retrieves and displays the disposition code description from the disposition code table
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ShowCodeDescription(["Start Step"])
E_ShowCodeDescription(["End Step"])
N_ShowCodeDescription_Node0{"Code description is requested for
display"}:::decision N_ShowCodeDescription_Node0_action["The system retrieves and displays
the disposition code description
from the disposition code table"]:::main N_ShowCodeDescription_Node0 -- Yes --> N_ShowCodeDescription_Node0_action N_ShowCodeDescription_Node0_action --> E_ShowCodeDescription S_ShowCodeDescription --> N_ShowCodeDescription_Node0 N_ShowCodeDescription_Node0 -- No --> E_ShowCodeDescription
display"}:::decision N_ShowCodeDescription_Node0_action["The system retrieves and displays
the disposition code description
from the disposition code table"]:::main N_ShowCodeDescription_Node0 -- Yes --> N_ShowCodeDescription_Node0_action N_ShowCodeDescription_Node0_action --> E_ShowCodeDescription S_ShowCodeDescription --> N_ShowCodeDescription_Node0 N_ShowCodeDescription_Node0 -- No --> E_ShowCodeDescription
File: GCX016.cbl
GIVEN:
A disposition code exists in the cargo status array
WHEN:
Code description is requested for display
THEN:
- The system retrieves
- Displays the disposition code description from the disposition code table
β Consolidated Acceptance Criteria
- Processing timestamp is requested for display → the system displays the processing timestamp from the status array entry
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ShowProcessingTimestamp(["Start Step"])
E_ShowProcessingTimestamp(["End Step"])
N_ShowProcessingTimestamp_Node0{"Processing timestamp is requested
for display"}:::decision N_ShowProcessingTimestamp_Node0_action["The system displays the processing
timestamp from the status array
entry"]:::main N_ShowProcessingTimestamp_Node0 -- Yes --> N_ShowProcessingTimestamp_Node0_action N_ShowProcessingTimestamp_Node0_action --> E_ShowProcessingTimestamp S_ShowProcessingTimestamp --> N_ShowProcessingTimestamp_Node0 N_ShowProcessingTimestamp_Node0 -- No --> E_ShowProcessingTimestamp
for display"}:::decision N_ShowProcessingTimestamp_Node0_action["The system displays the processing
timestamp from the status array
entry"]:::main N_ShowProcessingTimestamp_Node0 -- Yes --> N_ShowProcessingTimestamp_Node0_action N_ShowProcessingTimestamp_Node0_action --> E_ShowProcessingTimestamp S_ShowProcessingTimestamp --> N_ShowProcessingTimestamp_Node0 N_ShowProcessingTimestamp_Node0 -- No --> E_ShowProcessingTimestamp
File: GCX016.cbl
GIVEN:
A cargo status entry with timestamp information exists
WHEN:
Processing timestamp is requested for display
THEN:
The system displays the processing timestamp from the status array entry
β Consolidated Acceptance Criteria
- Status array element count is requested for display → the system displays the count of elements in the S09A status array
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ShowArrayElementCount(["Start Step"])
E_ShowArrayElementCount(["End Step"])
N_ShowArrayElementCount_Node0{"Status array element count is
requested for display"}:::decision N_ShowArrayElementCount_Node0_action["The system displays the count of
elements in the S09A status array"]:::main N_ShowArrayElementCount_Node0 -- Yes --> N_ShowArrayElementCount_Node0_action N_ShowArrayElementCount_Node0_action --> E_ShowArrayElementCount S_ShowArrayElementCount --> N_ShowArrayElementCount_Node0 N_ShowArrayElementCount_Node0 -- No --> E_ShowArrayElementCount
requested for display"}:::decision N_ShowArrayElementCount_Node0_action["The system displays the count of
elements in the S09A status array"]:::main N_ShowArrayElementCount_Node0 -- Yes --> N_ShowArrayElementCount_Node0_action N_ShowArrayElementCount_Node0_action --> E_ShowArrayElementCount S_ShowArrayElementCount --> N_ShowArrayElementCount_Node0 N_ShowArrayElementCount_Node0 -- No --> E_ShowArrayElementCount
File: GCX016.cbl
GIVEN:
A cargo record with status array exists
WHEN:
Status array element count is requested for display
THEN:
The system displays the count of elements in the S09A status array
β Consolidated Acceptance Criteria
- Individual status entries are requested for display → the system displays each status entry from the S09A array with its associated details
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ShowIndividualStatusEntries(["Start Step"])
E_ShowIndividualStatusEntries(["End Step"])
N_ShowIndividualStatusEntries_Node0{"Individual status entries are
requested for display"}:::decision N_ShowIndividualStatusEntries_Node0_action["The system displays each status
entry from the S09A array with its
associated details"]:::main N_ShowIndividualStatusEntries_Node0 -- Yes --> N_ShowIndividualStatusEntries_Node0_action N_ShowIndividualStatusEntries_Node0_action --> E_ShowIndividualStatusEntries S_ShowIndividualStatusEntries --> N_ShowIndividualStatusEntries_Node0 N_ShowIndividualStatusEntries_Node0 -- No --> E_ShowIndividualStatusEntries
requested for display"}:::decision N_ShowIndividualStatusEntries_Node0_action["The system displays each status
entry from the S09A array with its
associated details"]:::main N_ShowIndividualStatusEntries_Node0 -- Yes --> N_ShowIndividualStatusEntries_Node0_action N_ShowIndividualStatusEntries_Node0_action --> E_ShowIndividualStatusEntries S_ShowIndividualStatusEntries --> N_ShowIndividualStatusEntries_Node0 N_ShowIndividualStatusEntries_Node0 -- No --> E_ShowIndividualStatusEntries
File: GCX016.cbl
GIVEN:
A cargo status array with multiple entries exists
WHEN:
Individual status entries are requested for display
THEN:
The system displays each status entry from the S09A array with its associated details
β Consolidated Acceptance Criteria
- Hold location information is requested for display → the system displays whether the cargo is held at border location or destination location based on the status array analysis
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ShowHoldLocationBorderDestination(["Start Step"])
E_ShowHoldLocationBorderDestination(["End Step"])
N_ShowHoldLocationBorderDestination_Node0{"Hold location information is
requested for display"}:::decision N_ShowHoldLocationBorderDestination_Node0_action["The system displays whether the
cargo is held at border location or
destination location based on the
status array analysis"]:::main N_ShowHoldLocationBorderDestination_Node0 -- Yes --> N_ShowHoldLocationBorderDestination_Node0_action N_ShowHoldLocationBorderDestination_Node0_action --> E_ShowHoldLocationBorderDestination S_ShowHoldLocationBorderDestination --> N_ShowHoldLocationBorderDestination_Node0 N_ShowHoldLocationBorderDestination_Node0 -- No --> E_ShowHoldLocationBorderDestination
requested for display"}:::decision N_ShowHoldLocationBorderDestination_Node0_action["The system displays whether the
cargo is held at border location or
destination location based on the
status array analysis"]:::main N_ShowHoldLocationBorderDestination_Node0 -- Yes --> N_ShowHoldLocationBorderDestination_Node0_action N_ShowHoldLocationBorderDestination_Node0_action --> E_ShowHoldLocationBorderDestination S_ShowHoldLocationBorderDestination --> N_ShowHoldLocationBorderDestination_Node0 N_ShowHoldLocationBorderDestination_Node0 -- No --> E_ShowHoldLocationBorderDestination
File: GCX016.cbl
GIVEN:
A cargo record with hold status information exists
WHEN:
Hold location information is requested for display
THEN:
The system displays whether the cargo is held at border location or destination location based on the status array analysis
β Consolidated Acceptance Criteria
- Release status information is requested for display → the system displays the release status based on analysis of the status array and release quantities
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ShowReleaseStatus(["Start Step"])
E_ShowReleaseStatus(["End Step"])
N_ShowReleaseStatus_Node0{"Release status information is
requested for display"}:::decision N_ShowReleaseStatus_Node0_action["The system displays the release
status based on analysis of the
status array and release quantities"]:::main N_ShowReleaseStatus_Node0 -- Yes --> N_ShowReleaseStatus_Node0_action N_ShowReleaseStatus_Node0_action --> E_ShowReleaseStatus S_ShowReleaseStatus --> N_ShowReleaseStatus_Node0 N_ShowReleaseStatus_Node0 -- No --> E_ShowReleaseStatus
requested for display"}:::decision N_ShowReleaseStatus_Node0_action["The system displays the release
status based on analysis of the
status array and release quantities"]:::main N_ShowReleaseStatus_Node0 -- Yes --> N_ShowReleaseStatus_Node0_action N_ShowReleaseStatus_Node0_action --> E_ShowReleaseStatus S_ShowReleaseStatus --> N_ShowReleaseStatus_Node0 N_ShowReleaseStatus_Node0 -- No --> E_ShowReleaseStatus
File: GCX016.cbl
GIVEN:
A cargo record with release status information exists
WHEN:
Release status information is requested for display
THEN:
- The system displays the release status based on analysis of the status array
- Release quantities
β Consolidated Acceptance Criteria
- PTT status information is requested for display → the system displays the PTT status based on analysis of the status array and quantity thresholds
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_DisplayPTTStatus(["Start Step"])
E_DisplayPTTStatus(["End Step"])
N_DisplayPTTStatus_Node0{"PTT status information is requested
for display"}:::decision N_DisplayPTTStatus_Node0_action["The system displays the PTT status
based on analysis of the status
array and quantity thresholds"]:::main N_DisplayPTTStatus_Node0 -- Yes --> N_DisplayPTTStatus_Node0_action N_DisplayPTTStatus_Node0_action --> E_DisplayPTTStatus S_DisplayPTTStatus --> N_DisplayPTTStatus_Node0 N_DisplayPTTStatus_Node0 -- No --> E_DisplayPTTStatus
for display"}:::decision N_DisplayPTTStatus_Node0_action["The system displays the PTT status
based on analysis of the status
array and quantity thresholds"]:::main N_DisplayPTTStatus_Node0 -- Yes --> N_DisplayPTTStatus_Node0_action N_DisplayPTTStatus_Node0_action --> E_DisplayPTTStatus S_DisplayPTTStatus --> N_DisplayPTTStatus_Node0 N_DisplayPTTStatus_Node0 -- No --> E_DisplayPTTStatus
File: GCX016.cbl
GIVEN:
A cargo record with PTT status information exists
WHEN:
PTT status information is requested for display
THEN:
- The system displays the ptt status based on analysis of the status array
- Quantity thresholds
β Consolidated Acceptance Criteria
- Proceed status information is requested for display → the system displays the proceed status based on analysis of the status array
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ShowProceedStatus(["Start Step"])
E_ShowProceedStatus(["End Step"])
N_ShowProceedStatus_Node0{"Proceed status information is
requested for display"}:::decision N_ShowProceedStatus_Node0_action["The system displays the proceed
status based on analysis of the
status array"]:::main N_ShowProceedStatus_Node0 -- Yes --> N_ShowProceedStatus_Node0_action N_ShowProceedStatus_Node0_action --> E_ShowProceedStatus S_ShowProceedStatus --> N_ShowProceedStatus_Node0 N_ShowProceedStatus_Node0 -- No --> E_ShowProceedStatus
requested for display"}:::decision N_ShowProceedStatus_Node0_action["The system displays the proceed
status based on analysis of the
status array"]:::main N_ShowProceedStatus_Node0 -- Yes --> N_ShowProceedStatus_Node0_action N_ShowProceedStatus_Node0_action --> E_ShowProceedStatus S_ShowProceedStatus --> N_ShowProceedStatus_Node0 N_ShowProceedStatus_Node0 -- No --> E_ShowProceedStatus
File: GCX016.cbl
GIVEN:
A cargo record with proceed status information exists
WHEN:
Proceed status information is requested for display
THEN:
The system displays the proceed status based on analysis of the status array
β Consolidated Acceptance Criteria
- Arrival/export status information is requested for display → the system displays the arrival or export status based on analysis of the status array
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_DisplayArrivalExportStatus(["Start Step"])
E_DisplayArrivalExportStatus(["End Step"])
N_DisplayArrivalExportStatus_Node0{"Arrivalexport status information is
requested for display"}:::decision N_DisplayArrivalExportStatus_Node0_action["The system displays the arrival or
export status based on analysis of
the status array"]:::main N_DisplayArrivalExportStatus_Node0 -- Yes --> N_DisplayArrivalExportStatus_Node0_action N_DisplayArrivalExportStatus_Node0_action --> E_DisplayArrivalExportStatus S_DisplayArrivalExportStatus --> N_DisplayArrivalExportStatus_Node0 N_DisplayArrivalExportStatus_Node0 -- No --> E_DisplayArrivalExportStatus
requested for display"}:::decision N_DisplayArrivalExportStatus_Node0_action["The system displays the arrival or
export status based on analysis of
the status array"]:::main N_DisplayArrivalExportStatus_Node0 -- Yes --> N_DisplayArrivalExportStatus_Node0_action N_DisplayArrivalExportStatus_Node0_action --> E_DisplayArrivalExportStatus S_DisplayArrivalExportStatus --> N_DisplayArrivalExportStatus_Node0 N_DisplayArrivalExportStatus_Node0 -- No --> E_DisplayArrivalExportStatus
File: GCX016.cbl
GIVEN:
A cargo record with arrival or export status information exists
WHEN:
Arrival/export status information is requested for display
THEN:
The system displays the arrival or export status based on analysis of the status array
β Consolidated Acceptance Criteria
- A complete status report is requested → the system formats all status information including identification, quantities, codes, and status flags into a structured report
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_FormatStatusReport(["Start Step"])
E_FormatStatusReport(["End Step"])
N_FormatStatusReport_Node0{"A complete status report is
requested"}:::decision N_FormatStatusReport_Node0_action["The system formats all status
information including
identification, quantities, codes,
and status flags into a structured
report"]:::main N_FormatStatusReport_Node0 -- Yes --> N_FormatStatusReport_Node0_action N_FormatStatusReport_Node0_action --> E_FormatStatusReport S_FormatStatusReport --> N_FormatStatusReport_Node0 N_FormatStatusReport_Node0 -- No --> E_FormatStatusReport
requested"}:::decision N_FormatStatusReport_Node0_action["The system formats all status
information including
identification, quantities, codes,
and status flags into a structured
report"]:::main N_FormatStatusReport_Node0 -- Yes --> N_FormatStatusReport_Node0_action N_FormatStatusReport_Node0_action --> E_FormatStatusReport S_FormatStatusReport --> N_FormatStatusReport_Node0 N_FormatStatusReport_Node0 -- No --> E_FormatStatusReport
File: GCX016.cbl
GIVEN:
All cargo status information has been retrieved and analyzed
WHEN:
A complete status report is requested
THEN:
The system formats all status information including identification, quantities, codes, and status flags into a structured report
β Consolidated Acceptance Criteria
- The message type is identified as ERROR or ARRCANL (arrival cancellation) → the system should set error message keywords and route the message to both 'IN' and 'USERR' destinations
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ErrorMessageType(["Start Step"])
E_ErrorMessageType(["End Step"])
N_ErrorMessageType_Node0{"The message type is identified as
ERROR or ARRCANL arrival
cancellation"}:::decision N_ErrorMessageType_Node0_action["The system should set error message
keywords and route the message to
both IN and USERR destinations"]:::exclusion N_ErrorMessageType_Node0 -- Yes -->|Alternative| N_ErrorMessageType_Node0_action N_ErrorMessageType_Node0_action --> E_ErrorMessageType S_ErrorMessageType --> N_ErrorMessageType_Node0 N_ErrorMessageType_Node0 -- No --> E_ErrorMessageType
ERROR or ARRCANL arrival
cancellation"}:::decision N_ErrorMessageType_Node0_action["The system should set error message
keywords and route the message to
both IN and USERR destinations"]:::exclusion N_ErrorMessageType_Node0 -- Yes -->|Alternative| N_ErrorMessageType_Node0_action N_ErrorMessageType_Node0_action --> E_ErrorMessageType S_ErrorMessageType --> N_ErrorMessageType_Node0 N_ErrorMessageType_Node0 -- No --> E_ErrorMessageType
File: GCX016.cbl
GIVEN:
A message needs to be processed and routed
WHEN:
The message type is identified as ERROR or ARRCANL (arrival cancellation)
THEN:
- The system should set error message keywords
- Route the message to both 'in' and 'userr' destinations
β Consolidated Acceptance Criteria
- The message type is identified as INFO → the system should set info message keywords and route the message to 'IN' destination and station-specific Merlin IDs
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_InfoMessageType(["Start Step"])
E_InfoMessageType(["End Step"])
N_InfoMessageType_Node0{"The message type is identified as
INFO"}:::decision N_InfoMessageType_Node0_action["The system should set info message
keywords and route the message to IN
destination and station-specific
Merlin IDs"]:::main N_InfoMessageType_Node0 -- Yes --> N_InfoMessageType_Node0_action N_InfoMessageType_Node0_action --> E_InfoMessageType S_InfoMessageType --> N_InfoMessageType_Node0 N_InfoMessageType_Node0 -- No --> E_InfoMessageType
INFO"}:::decision N_InfoMessageType_Node0_action["The system should set info message
keywords and route the message to IN
destination and station-specific
Merlin IDs"]:::main N_InfoMessageType_Node0 -- Yes --> N_InfoMessageType_Node0_action N_InfoMessageType_Node0_action --> E_InfoMessageType S_InfoMessageType --> N_InfoMessageType_Node0 N_InfoMessageType_Node0 -- No --> E_InfoMessageType
File: GCX016.cbl
GIVEN:
A message needs to be processed and routed
WHEN:
The message type is identified as INFO
THEN:
- The system should set info message keywords
- Route the message to 'in' destination
- Station-specific merlin ids
β Consolidated Acceptance Criteria
- The message type is identified as UNRLSE (unrelease) → the system should set unrelease message keywords and route the message to cancel-specific Merlin IDs
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UnreleaseMessageType(["Start Step"])
E_UnreleaseMessageType(["End Step"])
N_UnreleaseMessageType_Node0{"The message type is identified as
UNRLSE unrelease"}:::decision N_UnreleaseMessageType_Node0_action["The system should set unrelease
message keywords and route the
message to cancel-specific Merlin
IDs"]:::main N_UnreleaseMessageType_Node0 -- Yes --> N_UnreleaseMessageType_Node0_action N_UnreleaseMessageType_Node0_action --> E_UnreleaseMessageType S_UnreleaseMessageType --> N_UnreleaseMessageType_Node0 N_UnreleaseMessageType_Node0 -- No --> E_UnreleaseMessageType
UNRLSE unrelease"}:::decision N_UnreleaseMessageType_Node0_action["The system should set unrelease
message keywords and route the
message to cancel-specific Merlin
IDs"]:::main N_UnreleaseMessageType_Node0 -- Yes --> N_UnreleaseMessageType_Node0_action N_UnreleaseMessageType_Node0_action --> E_UnreleaseMessageType S_UnreleaseMessageType --> N_UnreleaseMessageType_Node0 N_UnreleaseMessageType_Node0 -- No --> E_UnreleaseMessageType
File: GCX016.cbl
GIVEN:
A message needs to be processed and routed
WHEN:
The message type is identified as UNRLSE (unrelease)
THEN:
- The system should set unrelease message keywords
- Route the message to cancel-specific merlin ids
β Consolidated Acceptance Criteria
- The message type is identified as RLSE (release) → the system should set release message keywords and route the message to station-specific Merlin IDs only
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ReleaseMessageType(["Start Step"])
E_ReleaseMessageType(["End Step"])
N_ReleaseMessageType_Node0{"The message type is identified as
RLSE release"}:::decision N_ReleaseMessageType_Node0_action["The system should set release
message keywords and route the
message to station-specific Merlin
IDs only"]:::main N_ReleaseMessageType_Node0 -- Yes --> N_ReleaseMessageType_Node0_action N_ReleaseMessageType_Node0_action --> E_ReleaseMessageType S_ReleaseMessageType --> N_ReleaseMessageType_Node0 N_ReleaseMessageType_Node0 -- No --> E_ReleaseMessageType
RLSE release"}:::decision N_ReleaseMessageType_Node0_action["The system should set release
message keywords and route the
message to station-specific Merlin
IDs only"]:::main N_ReleaseMessageType_Node0 -- Yes --> N_ReleaseMessageType_Node0_action N_ReleaseMessageType_Node0_action --> E_ReleaseMessageType S_ReleaseMessageType --> N_ReleaseMessageType_Node0 N_ReleaseMessageType_Node0 -- No --> E_ReleaseMessageType
File: GCX016.cbl
GIVEN:
A message needs to be processed and routed
WHEN:
The message type is identified as RLSE (release)
THEN:
- The system should set release message keywords
- Route the message to station-specific merlin ids only
β Consolidated Acceptance Criteria
- The message type is identified as EXPORT → the system should set export message keywords and proceed to container type validation for appropriate routing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExportMessageType(["Start Step"])
E_ExportMessageType(["End Step"])
N_ExportMessageType_Node0{"The message type is identified as
EXPORT"}:::decision N_ExportMessageType_Node0_action["The system should set export
message keywords and proceed to
container type validation for
appropriate routing"]:::main N_ExportMessageType_Node0 -- Yes --> N_ExportMessageType_Node0_action N_ExportMessageType_Node0_action --> E_ExportMessageType S_ExportMessageType --> N_ExportMessageType_Node0 N_ExportMessageType_Node0 -- No --> E_ExportMessageType
EXPORT"}:::decision N_ExportMessageType_Node0_action["The system should set export
message keywords and proceed to
container type validation for
appropriate routing"]:::main N_ExportMessageType_Node0 -- Yes --> N_ExportMessageType_Node0_action N_ExportMessageType_Node0_action --> E_ExportMessageType S_ExportMessageType --> N_ExportMessageType_Node0 N_ExportMessageType_Node0 -- No --> E_ExportMessageType
File: GCX016.cbl
GIVEN:
A message needs to be processed and routed
WHEN:
The message type is identified as EXPORT
THEN:
- The system should set export message keywords
- Proceed to container type validation for appropriate routing
β Consolidated Acceptance Criteria
- The equipment type is container or trailer → the system should route the message to USEXP baskets for specialized container/trailer processing
- The equipment type is not container or trailer → the system should route the message to standard export users for general export processing
- The message type is EXPORT and container type validation is required → the system checks if the container type is a specific container type or other equipment type to determine routing path
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ContainerTypeCheck(["Start Step"])
E_ContainerTypeCheck(["End Step"])
N_ContainerTypeCheck_Node0{"The equipment type is container or
trailer"}:::decision N_ContainerTypeCheck_Node0_action["The system should route the message
to USEXP baskets for specialized
containertrailer processing"]:::main N_ContainerTypeCheck_Node0 -- Yes --> N_ContainerTypeCheck_Node0_action N_ContainerTypeCheck_Node0_action --> E_ContainerTypeCheck S_ContainerTypeCheck --> N_ContainerTypeCheck_Node0 N_ContainerTypeCheck_Node1{"The equipment type is not container
or trailer"}:::decision N_ContainerTypeCheck_Node1_action["The system should route the message
to standard export users for general
export processing"]:::main N_ContainerTypeCheck_Node1 -- Yes --> N_ContainerTypeCheck_Node1_action N_ContainerTypeCheck_Node1_action --> E_ContainerTypeCheck N_ContainerTypeCheck_Node0 -- No --> N_ContainerTypeCheck_Node1 N_ContainerTypeCheck_Node2{"The message type is EXPORT and
container type validation is
required"}:::decision N_ContainerTypeCheck_Node2_action["The system checks if the container
type is a specific container type or
other equipment type to determine
routing path"]:::main N_ContainerTypeCheck_Node2 -- Yes --> N_ContainerTypeCheck_Node2_action N_ContainerTypeCheck_Node2_action --> E_ContainerTypeCheck N_ContainerTypeCheck_Node1 -- No --> N_ContainerTypeCheck_Node2 N_ContainerTypeCheck_Node2 -- No --> E_ContainerTypeCheck
trailer"}:::decision N_ContainerTypeCheck_Node0_action["The system should route the message
to USEXP baskets for specialized
containertrailer processing"]:::main N_ContainerTypeCheck_Node0 -- Yes --> N_ContainerTypeCheck_Node0_action N_ContainerTypeCheck_Node0_action --> E_ContainerTypeCheck S_ContainerTypeCheck --> N_ContainerTypeCheck_Node0 N_ContainerTypeCheck_Node1{"The equipment type is not container
or trailer"}:::decision N_ContainerTypeCheck_Node1_action["The system should route the message
to standard export users for general
export processing"]:::main N_ContainerTypeCheck_Node1 -- Yes --> N_ContainerTypeCheck_Node1_action N_ContainerTypeCheck_Node1_action --> E_ContainerTypeCheck N_ContainerTypeCheck_Node0 -- No --> N_ContainerTypeCheck_Node1 N_ContainerTypeCheck_Node2{"The message type is EXPORT and
container type validation is
required"}:::decision N_ContainerTypeCheck_Node2_action["The system checks if the container
type is a specific container type or
other equipment type to determine
routing path"]:::main N_ContainerTypeCheck_Node2 -- Yes --> N_ContainerTypeCheck_Node2_action N_ContainerTypeCheck_Node2_action --> E_ContainerTypeCheck N_ContainerTypeCheck_Node1 -- No --> N_ContainerTypeCheck_Node2 N_ContainerTypeCheck_Node2 -- No --> E_ContainerTypeCheck
File: GCX016.cbl
GIVEN:
An export message needs to be routed
WHEN:
The equipment type is container or trailer
THEN:
The system should route the message to USEXP baskets for specialized container/trailer processing
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
An export message needs to be routed
WHEN:
The equipment type is not container or trailer
THEN:
The system should route the message to standard export users for general export processing
File: GCX016.cbl
GIVEN:
A message is ready for routing and has been classified as an export message
WHEN:
- The message type is export
- Container type validation is required
THEN:
The system checks if the container type is a specific container type or other equipment type to determine routing path
β Consolidated Acceptance Criteria
- The destination user is validated as valid → the system should send the message directly to the validated user
- The destination user is validated as invalid → the system should reroute the message to the default destination to ensure delivery
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ValidateDestinationUser(["Start Step"])
E_ValidateDestinationUser(["End Step"])
N_ValidateDestinationUser_Node0{"The destination user is validated
as valid"}:::decision N_ValidateDestinationUser_Node0_action["The system should send the message
directly to the validated user"]:::main N_ValidateDestinationUser_Node0 -- Yes --> N_ValidateDestinationUser_Node0_action N_ValidateDestinationUser_Node0_action --> E_ValidateDestinationUser S_ValidateDestinationUser --> N_ValidateDestinationUser_Node0 N_ValidateDestinationUser_Node1{"The destination user is validated
as invalid"}:::decision N_ValidateDestinationUser_Node1_action["The system should reroute the
message to the default destination
to ensure delivery"]:::exclusion N_ValidateDestinationUser_Node1 -- Yes -->|Alternative| N_ValidateDestinationUser_Node1_action N_ValidateDestinationUser_Node1_action --> E_ValidateDestinationUser N_ValidateDestinationUser_Node0 -- No --> N_ValidateDestinationUser_Node1 N_ValidateDestinationUser_Node1 -- No --> E_ValidateDestinationUser
as valid"}:::decision N_ValidateDestinationUser_Node0_action["The system should send the message
directly to the validated user"]:::main N_ValidateDestinationUser_Node0 -- Yes --> N_ValidateDestinationUser_Node0_action N_ValidateDestinationUser_Node0_action --> E_ValidateDestinationUser S_ValidateDestinationUser --> N_ValidateDestinationUser_Node0 N_ValidateDestinationUser_Node1{"The destination user is validated
as invalid"}:::decision N_ValidateDestinationUser_Node1_action["The system should reroute the
message to the default destination
to ensure delivery"]:::exclusion N_ValidateDestinationUser_Node1 -- Yes -->|Alternative| N_ValidateDestinationUser_Node1_action N_ValidateDestinationUser_Node1_action --> E_ValidateDestinationUser N_ValidateDestinationUser_Node0 -- No --> N_ValidateDestinationUser_Node1 N_ValidateDestinationUser_Node1 -- No --> E_ValidateDestinationUser
File: GCX016.cbl
GIVEN:
A message is ready for delivery to a destination user
WHEN:
The destination user is validated as valid
THEN:
The system should send the message directly to the validated user
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
A message is ready for delivery to a destination user
WHEN:
The destination user is validated as invalid
THEN:
The system should reroute the message to the default destination to ensure delivery
β Consolidated Acceptance Criteria
- The message content and type are determined → the system should format an appropriate subject line that reflects the message content and type
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_FormatSubjectLineBasedonContent(["Start Step"])
E_FormatSubjectLineBasedonContent(["End Step"])
N_FormatSubjectLineBasedonContent_Node0{"The message content and type are
determined"}:::decision N_FormatSubjectLineBasedonContent_Node0_action["The system should format an
appropriate subject line that
reflects the message content and
type"]:::main N_FormatSubjectLineBasedonContent_Node0 -- Yes --> N_FormatSubjectLineBasedonContent_Node0_action N_FormatSubjectLineBasedonContent_Node0_action --> E_FormatSubjectLineBasedonContent S_FormatSubjectLineBasedonContent --> N_FormatSubjectLineBasedonContent_Node0 N_FormatSubjectLineBasedonContent_Node0 -- No --> E_FormatSubjectLineBasedonContent
determined"}:::decision N_FormatSubjectLineBasedonContent_Node0_action["The system should format an
appropriate subject line that
reflects the message content and
type"]:::main N_FormatSubjectLineBasedonContent_Node0 -- Yes --> N_FormatSubjectLineBasedonContent_Node0_action N_FormatSubjectLineBasedonContent_Node0_action --> E_FormatSubjectLineBasedonContent S_FormatSubjectLineBasedonContent --> N_FormatSubjectLineBasedonContent_Node0 N_FormatSubjectLineBasedonContent_Node0 -- No --> E_FormatSubjectLineBasedonContent
File: GCX016.cbl
GIVEN:
A message is prepared for email delivery
WHEN:
- The message content
- Type are determined
THEN:
- The system should format an appropriate subject line that reflects the message content
- Type
β Consolidated Acceptance Criteria
- Message categorization needs to be applied → the system should apply the appropriate message category based on message type and content
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ApplyMessageCategorization(["Start Step"])
E_ApplyMessageCategorization(["End Step"])
N_ApplyMessageCategorization_Node0{"Message categorization needs to be
applied"}:::decision N_ApplyMessageCategorization_Node0_action["The system should apply the
appropriate message category based
on message type and content"]:::main N_ApplyMessageCategorization_Node0 -- Yes --> N_ApplyMessageCategorization_Node0_action N_ApplyMessageCategorization_Node0_action --> E_ApplyMessageCategorization S_ApplyMessageCategorization --> N_ApplyMessageCategorization_Node0 N_ApplyMessageCategorization_Node0 -- No --> E_ApplyMessageCategorization
applied"}:::decision N_ApplyMessageCategorization_Node0_action["The system should apply the
appropriate message category based
on message type and content"]:::main N_ApplyMessageCategorization_Node0 -- Yes --> N_ApplyMessageCategorization_Node0_action N_ApplyMessageCategorization_Node0_action --> E_ApplyMessageCategorization S_ApplyMessageCategorization --> N_ApplyMessageCategorization_Node0 N_ApplyMessageCategorization_Node0 -- No --> E_ApplyMessageCategorization
File: GCX016.cbl
GIVEN:
A message has been formatted with subject line
WHEN:
Message categorization needs to be applied
THEN:
- The system should apply the appropriate message category based on message type
- Content
β Consolidated Acceptance Criteria
- Final email preparation is required → the system should prepare the complete email message with all necessary headers, content, and routing information
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_PrepareFinalEmailMessage(["Start Step"])
E_PrepareFinalEmailMessage(["End Step"])
N_PrepareFinalEmailMessage_Node0{"Final email preparation is required"}:::decision
N_PrepareFinalEmailMessage_Node0_action["The system should prepare the
complete email message with all
necessary headers, content, and
routing information"]:::main N_PrepareFinalEmailMessage_Node0 -- Yes --> N_PrepareFinalEmailMessage_Node0_action N_PrepareFinalEmailMessage_Node0_action --> E_PrepareFinalEmailMessage S_PrepareFinalEmailMessage --> N_PrepareFinalEmailMessage_Node0 N_PrepareFinalEmailMessage_Node0 -- No --> E_PrepareFinalEmailMessage
complete email message with all
necessary headers, content, and
routing information"]:::main N_PrepareFinalEmailMessage_Node0 -- Yes --> N_PrepareFinalEmailMessage_Node0_action N_PrepareFinalEmailMessage_Node0_action --> E_PrepareFinalEmailMessage S_PrepareFinalEmailMessage --> N_PrepareFinalEmailMessage_Node0 N_PrepareFinalEmailMessage_Node0 -- No --> E_PrepareFinalEmailMessage
File: GCX016.cbl
GIVEN:
A message has been categorized and formatted
WHEN:
Final email preparation is required
THEN:
The system should prepare the complete email message with all necessary headers, content, and routing information
β Consolidated Acceptance Criteria
- The system determines the message type and attempts to set the primary destination user → the primary destination user is identified and validated for message routing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetPrimaryDestinationUser(["Start Step"])
E_SetPrimaryDestinationUser(["End Step"])
N_SetPrimaryDestinationUser_Node0{"The system determines the message
type and attempts to set the primary
destination user"}:::decision N_SetPrimaryDestinationUser_Node0_action["The primary destination user is
identified and validated for message
routing"]:::main N_SetPrimaryDestinationUser_Node0 -- Yes --> N_SetPrimaryDestinationUser_Node0_action N_SetPrimaryDestinationUser_Node0_action --> E_SetPrimaryDestinationUser S_SetPrimaryDestinationUser --> N_SetPrimaryDestinationUser_Node0 N_SetPrimaryDestinationUser_Node0 -- No --> E_SetPrimaryDestinationUser
type and attempts to set the primary
destination user"}:::decision N_SetPrimaryDestinationUser_Node0_action["The primary destination user is
identified and validated for message
routing"]:::main N_SetPrimaryDestinationUser_Node0 -- Yes --> N_SetPrimaryDestinationUser_Node0_action N_SetPrimaryDestinationUser_Node0_action --> E_SetPrimaryDestinationUser S_SetPrimaryDestinationUser --> N_SetPrimaryDestinationUser_Node0 N_SetPrimaryDestinationUser_Node0 -- No --> E_SetPrimaryDestinationUser
File: GCX016.cbl
GIVEN:
An error message has been generated and requires routing
WHEN:
- The system determines the message type
- Attempts to set the primary destination user
THEN:
- The primary destination user is identified
- Validated for message routing
β Consolidated Acceptance Criteria
- The system validates the primary user credentials and routing permissions → the system determines if the primary user is valid and can receive the message
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IsPrimaryUserValid(["Start Step"])
E_IsPrimaryUserValid(["End Step"])
N_IsPrimaryUserValid_Node0{"The system validates the primary
user credentials and routing
permissions"}:::decision N_IsPrimaryUserValid_Node0_action["The system determines if the
primary user is valid and can
receive the message"]:::main N_IsPrimaryUserValid_Node0 -- Yes --> N_IsPrimaryUserValid_Node0_action N_IsPrimaryUserValid_Node0_action --> E_IsPrimaryUserValid S_IsPrimaryUserValid --> N_IsPrimaryUserValid_Node0 N_IsPrimaryUserValid_Node0 -- No --> E_IsPrimaryUserValid
user credentials and routing
permissions"}:::decision N_IsPrimaryUserValid_Node0_action["The system determines if the
primary user is valid and can
receive the message"]:::main N_IsPrimaryUserValid_Node0 -- Yes --> N_IsPrimaryUserValid_Node0_action N_IsPrimaryUserValid_Node0_action --> E_IsPrimaryUserValid S_IsPrimaryUserValid --> N_IsPrimaryUserValid_Node0 N_IsPrimaryUserValid_Node0 -- No --> E_IsPrimaryUserValid
File: GCX016.cbl
GIVEN:
A primary destination user has been identified
WHEN:
- The system validates the primary user credentials
- Routing permissions
THEN:
- The system determines if the primary user is valid
- Can receive the message
β Consolidated Acceptance Criteria
- The system processes the routing request → the error message is routed to the primary user destination
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RoutetoPrimaryUser(["Start Step"])
E_RoutetoPrimaryUser(["End Step"])
N_RoutetoPrimaryUser_Node0{"The system processes the routing
request"}:::decision N_RoutetoPrimaryUser_Node0_action["The error message is routed to the
primary user destination"]:::main N_RoutetoPrimaryUser_Node0 -- Yes --> N_RoutetoPrimaryUser_Node0_action N_RoutetoPrimaryUser_Node0_action --> E_RoutetoPrimaryUser S_RoutetoPrimaryUser --> N_RoutetoPrimaryUser_Node0 N_RoutetoPrimaryUser_Node0 -- No --> E_RoutetoPrimaryUser
request"}:::decision N_RoutetoPrimaryUser_Node0_action["The error message is routed to the
primary user destination"]:::main N_RoutetoPrimaryUser_Node0 -- Yes --> N_RoutetoPrimaryUser_Node0_action N_RoutetoPrimaryUser_Node0_action --> E_RoutetoPrimaryUser S_RoutetoPrimaryUser --> N_RoutetoPrimaryUser_Node0 N_RoutetoPrimaryUser_Node0 -- No --> E_RoutetoPrimaryUser
File: GCX016.cbl
GIVEN:
The primary user has been validated as a valid recipient
WHEN:
The system processes the routing request
THEN:
The error message is routed to the primary user destination
β Consolidated Acceptance Criteria
- The system needs to route the error message → the error message is routed to the default error user destination
- The message type is identified as Error → the message is routed to the default error user
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RoutetoDefaultErrorUser(["Start Step"])
E_RoutetoDefaultErrorUser(["End Step"])
N_RoutetoDefaultErrorUser_Node0{"The system needs to route the error
message"}:::decision N_RoutetoDefaultErrorUser_Node0_action["The error message is routed to the
default error user destination"]:::exclusion N_RoutetoDefaultErrorUser_Node0 -- Yes -->|Alternative| N_RoutetoDefaultErrorUser_Node0_action N_RoutetoDefaultErrorUser_Node0_action --> E_RoutetoDefaultErrorUser S_RoutetoDefaultErrorUser --> N_RoutetoDefaultErrorUser_Node0 N_RoutetoDefaultErrorUser_Node1{"The message type is identified as
Error"}:::decision N_RoutetoDefaultErrorUser_Node1_action["The message is routed to the
default error user"]:::exclusion N_RoutetoDefaultErrorUser_Node1 -- Yes -->|Alternative| N_RoutetoDefaultErrorUser_Node1_action N_RoutetoDefaultErrorUser_Node1_action --> E_RoutetoDefaultErrorUser N_RoutetoDefaultErrorUser_Node0 -- No --> N_RoutetoDefaultErrorUser_Node1 N_RoutetoDefaultErrorUser_Node1 -- No --> E_RoutetoDefaultErrorUser
message"}:::decision N_RoutetoDefaultErrorUser_Node0_action["The error message is routed to the
default error user destination"]:::exclusion N_RoutetoDefaultErrorUser_Node0 -- Yes -->|Alternative| N_RoutetoDefaultErrorUser_Node0_action N_RoutetoDefaultErrorUser_Node0_action --> E_RoutetoDefaultErrorUser S_RoutetoDefaultErrorUser --> N_RoutetoDefaultErrorUser_Node0 N_RoutetoDefaultErrorUser_Node1{"The message type is identified as
Error"}:::decision N_RoutetoDefaultErrorUser_Node1_action["The message is routed to the
default error user"]:::exclusion N_RoutetoDefaultErrorUser_Node1 -- Yes -->|Alternative| N_RoutetoDefaultErrorUser_Node1_action N_RoutetoDefaultErrorUser_Node1_action --> E_RoutetoDefaultErrorUser N_RoutetoDefaultErrorUser_Node0 -- No --> N_RoutetoDefaultErrorUser_Node1 N_RoutetoDefaultErrorUser_Node1 -- No --> E_RoutetoDefaultErrorUser
File: GCX016.cbl
GIVEN:
The primary user has been determined to be invalid
WHEN:
The system needs to route the error message
THEN:
The error message is routed to the default error user destination
File: GCX016.cbl
GIVEN:
An error message with an invalid destination user ID
WHEN:
The message type is identified as Error
THEN:
The message is routed to the default error user
β Consolidated Acceptance Criteria
- If the message type and routing requirements → the system determines whether additional recipients are required for this message type
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AdditionalRecipientsRequired(["Start Step"])
E_AdditionalRecipientsRequired(["End Step"])
N_AdditionalRecipientsRequired_Node0{"The system evaluates the message
type and routing requirements"}:::decision N_AdditionalRecipientsRequired_Node0_action["The system determines whether
additional recipients are required
for this message type"]:::main N_AdditionalRecipientsRequired_Node0 -- Yes --> N_AdditionalRecipientsRequired_Node0_action N_AdditionalRecipientsRequired_Node0_action --> E_AdditionalRecipientsRequired S_AdditionalRecipientsRequired --> N_AdditionalRecipientsRequired_Node0 N_AdditionalRecipientsRequired_Node0 -- No --> E_AdditionalRecipientsRequired
type and routing requirements"}:::decision N_AdditionalRecipientsRequired_Node0_action["The system determines whether
additional recipients are required
for this message type"]:::main N_AdditionalRecipientsRequired_Node0 -- Yes --> N_AdditionalRecipientsRequired_Node0_action N_AdditionalRecipientsRequired_Node0_action --> E_AdditionalRecipientsRequired S_AdditionalRecipientsRequired --> N_AdditionalRecipientsRequired_Node0 N_AdditionalRecipientsRequired_Node0 -- No --> E_AdditionalRecipientsRequired
File: GCX016.cbl
GIVEN:
The error message has been routed to either primary or default error user
WHEN:
- The system evaluates the message type
- Routing requirements
THEN:
The system determines whether additional recipients are required for this message type
β Consolidated Acceptance Criteria
- The system processes the secondary recipient identification logic → the system identifies all secondary recipients that should receive the error message
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IdentifySecondaryRecipients(["Start Step"])
E_IdentifySecondaryRecipients(["End Step"])
N_IdentifySecondaryRecipients_Node0{"The system processes the secondary
recipient identification logic"}:::decision N_IdentifySecondaryRecipients_Node0_action["The system identifies all secondary
recipients that should receive the
error message"]:::main N_IdentifySecondaryRecipients_Node0 -- Yes --> N_IdentifySecondaryRecipients_Node0_action N_IdentifySecondaryRecipients_Node0_action --> E_IdentifySecondaryRecipients S_IdentifySecondaryRecipients --> N_IdentifySecondaryRecipients_Node0 N_IdentifySecondaryRecipients_Node0 -- No --> E_IdentifySecondaryRecipients
recipient identification logic"}:::decision N_IdentifySecondaryRecipients_Node0_action["The system identifies all secondary
recipients that should receive the
error message"]:::main N_IdentifySecondaryRecipients_Node0 -- Yes --> N_IdentifySecondaryRecipients_Node0_action N_IdentifySecondaryRecipients_Node0_action --> E_IdentifySecondaryRecipients S_IdentifySecondaryRecipients --> N_IdentifySecondaryRecipients_Node0 N_IdentifySecondaryRecipients_Node0 -- No --> E_IdentifySecondaryRecipients
File: GCX016.cbl
GIVEN:
Additional recipients have been determined to be required
WHEN:
The system processes the secondary recipient identification logic
THEN:
The system identifies all secondary recipients that should receive the error message
β Consolidated Acceptance Criteria
- The system validates each secondary user's credentials and routing permissions → the system determines which secondary users are valid recipients
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CheckSecondaryUserValidity(["Start Step"])
E_CheckSecondaryUserValidity(["End Step"])
N_CheckSecondaryUserValidity_Node0{"The system validates each secondary
user s credentials and routing
permissions"}:::decision N_CheckSecondaryUserValidity_Node0_action["The system determines which
secondary users are valid recipients"]:::main N_CheckSecondaryUserValidity_Node0 -- Yes --> N_CheckSecondaryUserValidity_Node0_action N_CheckSecondaryUserValidity_Node0_action --> E_CheckSecondaryUserValidity S_CheckSecondaryUserValidity --> N_CheckSecondaryUserValidity_Node0 N_CheckSecondaryUserValidity_Node0 -- No --> E_CheckSecondaryUserValidity
user s credentials and routing
permissions"}:::decision N_CheckSecondaryUserValidity_Node0_action["The system determines which
secondary users are valid recipients"]:::main N_CheckSecondaryUserValidity_Node0 -- Yes --> N_CheckSecondaryUserValidity_Node0_action N_CheckSecondaryUserValidity_Node0_action --> E_CheckSecondaryUserValidity S_CheckSecondaryUserValidity --> N_CheckSecondaryUserValidity_Node0 N_CheckSecondaryUserValidity_Node0 -- No --> E_CheckSecondaryUserValidity
File: GCX016.cbl
GIVEN:
Secondary recipients have been identified
WHEN:
- The system validates each secondary user's credentials
- Routing permissions
THEN:
The system determines which secondary users are valid recipients
β Consolidated Acceptance Criteria
- The system processes the routing list update → the valid secondary user is added to the message routing list
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AddValidSecondaryUsertoRouteList(["Start Step"])
E_AddValidSecondaryUsertoRouteList(["End Step"])
N_AddValidSecondaryUsertoRouteList_Node0{"The system processes the routing
list update"}:::decision N_AddValidSecondaryUsertoRouteList_Node0_action["The valid secondary user is added
to the message routing list"]:::main N_AddValidSecondaryUsertoRouteList_Node0 -- Yes --> N_AddValidSecondaryUsertoRouteList_Node0_action N_AddValidSecondaryUsertoRouteList_Node0_action --> E_AddValidSecondaryUsertoRouteList S_AddValidSecondaryUsertoRouteList --> N_AddValidSecondaryUsertoRouteList_Node0 N_AddValidSecondaryUsertoRouteList_Node0 -- No --> E_AddValidSecondaryUsertoRouteList
list update"}:::decision N_AddValidSecondaryUsertoRouteList_Node0_action["The valid secondary user is added
to the message routing list"]:::main N_AddValidSecondaryUsertoRouteList_Node0 -- Yes --> N_AddValidSecondaryUsertoRouteList_Node0_action N_AddValidSecondaryUsertoRouteList_Node0_action --> E_AddValidSecondaryUsertoRouteList S_AddValidSecondaryUsertoRouteList --> N_AddValidSecondaryUsertoRouteList_Node0 N_AddValidSecondaryUsertoRouteList_Node0 -- No --> E_AddValidSecondaryUsertoRouteList
File: GCX016.cbl
GIVEN:
A secondary user has been validated as a valid recipient
WHEN:
The system processes the routing list update
THEN:
The valid secondary user is added to the message routing list
β Consolidated Acceptance Criteria
- The system processes the routing list → the invalid secondary user is skipped and not added to the routing list
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SkipInvalidSecondaryUser(["Start Step"])
E_SkipInvalidSecondaryUser(["End Step"])
N_SkipInvalidSecondaryUser_Node0{"The system processes the routing
list"}:::decision N_SkipInvalidSecondaryUser_Node0_action["The invalid secondary user is
skipped and not added to the routing
list"]:::main N_SkipInvalidSecondaryUser_Node0 -- Yes --> N_SkipInvalidSecondaryUser_Node0_action N_SkipInvalidSecondaryUser_Node0_action --> E_SkipInvalidSecondaryUser S_SkipInvalidSecondaryUser --> N_SkipInvalidSecondaryUser_Node0 N_SkipInvalidSecondaryUser_Node0 -- No --> E_SkipInvalidSecondaryUser
list"}:::decision N_SkipInvalidSecondaryUser_Node0_action["The invalid secondary user is
skipped and not added to the routing
list"]:::main N_SkipInvalidSecondaryUser_Node0 -- Yes --> N_SkipInvalidSecondaryUser_Node0_action N_SkipInvalidSecondaryUser_Node0_action --> E_SkipInvalidSecondaryUser S_SkipInvalidSecondaryUser --> N_SkipInvalidSecondaryUser_Node0 N_SkipInvalidSecondaryUser_Node0 -- No --> E_SkipInvalidSecondaryUser
File: GCX016.cbl
GIVEN:
A secondary user has been determined to be invalid
WHEN:
The system processes the routing list
THEN:
- The invalid secondary user is skipped
- Not added to the routing list
β Consolidated Acceptance Criteria
- If the message content and type → the system determines if this is an export container type message
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExportContainerType(["Start Step"])
E_ExportContainerType(["End Step"])
N_ExportContainerType_Node0{"The system evaluates the message
content and type"}:::decision N_ExportContainerType_Node0_action["The system determines if this is an
export container type message"]:::main N_ExportContainerType_Node0 -- Yes --> N_ExportContainerType_Node0_action N_ExportContainerType_Node0_action --> E_ExportContainerType S_ExportContainerType --> N_ExportContainerType_Node0 N_ExportContainerType_Node0 -- No --> E_ExportContainerType
content and type"}:::decision N_ExportContainerType_Node0_action["The system determines if this is an
export container type message"]:::main N_ExportContainerType_Node0 -- Yes --> N_ExportContainerType_Node0_action N_ExportContainerType_Node0_action --> E_ExportContainerType S_ExportContainerType --> N_ExportContainerType_Node0 N_ExportContainerType_Node0 -- No --> E_ExportContainerType
File: GCX016.cbl
GIVEN:
Message keywords have been set for categorization
WHEN:
- The system evaluates the message content
- Type
THEN:
The system determines if this is an export container type message
β Consolidated Acceptance Criteria
- The system processes the specialized routing requirement → the message is routed to the USEXP basket for export container processing
- The system routes the export message → the message is routed to the USEXP basket for specialized container processing
- The system routes the message for transmission → the system sends the export message to the USEXP basket for delivery to USCS systems
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RoutetoUSEXPBasket(["Start Step"])
E_RoutetoUSEXPBasket(["End Step"])
N_RoutetoUSEXPBasket_Node0{"The system processes the
specialized routing requirement"}:::decision N_RoutetoUSEXPBasket_Node0_action["The message is routed to the USEXP
basket for export container
processing"]:::main N_RoutetoUSEXPBasket_Node0 -- Yes --> N_RoutetoUSEXPBasket_Node0_action N_RoutetoUSEXPBasket_Node0_action --> E_RoutetoUSEXPBasket S_RoutetoUSEXPBasket --> N_RoutetoUSEXPBasket_Node0 N_RoutetoUSEXPBasket_Node1{"The system routes the export
message"}:::decision N_RoutetoUSEXPBasket_Node1_action["The message is routed to the USEXP
basket for specialized container
processing"]:::main N_RoutetoUSEXPBasket_Node1 -- Yes --> N_RoutetoUSEXPBasket_Node1_action N_RoutetoUSEXPBasket_Node1_action --> E_RoutetoUSEXPBasket N_RoutetoUSEXPBasket_Node0 -- No --> N_RoutetoUSEXPBasket_Node1 N_RoutetoUSEXPBasket_Node2{"The system routes the message for
transmission"}:::decision N_RoutetoUSEXPBasket_Node2_action["The system sends the export message
to the USEXP basket for delivery to
USCS systems"]:::main N_RoutetoUSEXPBasket_Node2 -- Yes --> N_RoutetoUSEXPBasket_Node2_action N_RoutetoUSEXPBasket_Node2_action --> E_RoutetoUSEXPBasket N_RoutetoUSEXPBasket_Node1 -- No --> N_RoutetoUSEXPBasket_Node2 N_RoutetoUSEXPBasket_Node2 -- No --> E_RoutetoUSEXPBasket
specialized routing requirement"}:::decision N_RoutetoUSEXPBasket_Node0_action["The message is routed to the USEXP
basket for export container
processing"]:::main N_RoutetoUSEXPBasket_Node0 -- Yes --> N_RoutetoUSEXPBasket_Node0_action N_RoutetoUSEXPBasket_Node0_action --> E_RoutetoUSEXPBasket S_RoutetoUSEXPBasket --> N_RoutetoUSEXPBasket_Node0 N_RoutetoUSEXPBasket_Node1{"The system routes the export
message"}:::decision N_RoutetoUSEXPBasket_Node1_action["The message is routed to the USEXP
basket for specialized container
processing"]:::main N_RoutetoUSEXPBasket_Node1 -- Yes --> N_RoutetoUSEXPBasket_Node1_action N_RoutetoUSEXPBasket_Node1_action --> E_RoutetoUSEXPBasket N_RoutetoUSEXPBasket_Node0 -- No --> N_RoutetoUSEXPBasket_Node1 N_RoutetoUSEXPBasket_Node2{"The system routes the message for
transmission"}:::decision N_RoutetoUSEXPBasket_Node2_action["The system sends the export message
to the USEXP basket for delivery to
USCS systems"]:::main N_RoutetoUSEXPBasket_Node2 -- Yes --> N_RoutetoUSEXPBasket_Node2_action N_RoutetoUSEXPBasket_Node2_action --> E_RoutetoUSEXPBasket N_RoutetoUSEXPBasket_Node1 -- No --> N_RoutetoUSEXPBasket_Node2 N_RoutetoUSEXPBasket_Node2 -- No --> E_RoutetoUSEXPBasket
File: GCX016.cbl
GIVEN:
The message has been determined to be an export container type
WHEN:
The system processes the specialized routing requirement
THEN:
The message is routed to the USEXP basket for export container processing
File: GCX016.cbl
GIVEN:
A message has been determined to be container type specific
WHEN:
The system routes the export message
THEN:
The message is routed to the USEXP basket for specialized container processing
File: GCX016.cbl
GIVEN:
A USCS export message has been formatted
WHEN:
The system routes the message for transmission
THEN:
The system sends the export message to the USEXP basket for delivery to USCS systems
β Consolidated Acceptance Criteria
- The system processes the standard routing requirement → the message is routed to the standard error basket for general error processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RoutetoStandardErrorBasket(["Start Step"])
E_RoutetoStandardErrorBasket(["End Step"])
N_RoutetoStandardErrorBasket_Node0{"The system processes the standard
routing requirement"}:::decision N_RoutetoStandardErrorBasket_Node0_action["The message is routed to the
standard error basket for general
error processing"]:::main N_RoutetoStandardErrorBasket_Node0 -- Yes --> N_RoutetoStandardErrorBasket_Node0_action N_RoutetoStandardErrorBasket_Node0_action --> E_RoutetoStandardErrorBasket S_RoutetoStandardErrorBasket --> N_RoutetoStandardErrorBasket_Node0 N_RoutetoStandardErrorBasket_Node0 -- No --> E_RoutetoStandardErrorBasket
routing requirement"}:::decision N_RoutetoStandardErrorBasket_Node0_action["The message is routed to the
standard error basket for general
error processing"]:::main N_RoutetoStandardErrorBasket_Node0 -- Yes --> N_RoutetoStandardErrorBasket_Node0_action N_RoutetoStandardErrorBasket_Node0_action --> E_RoutetoStandardErrorBasket S_RoutetoStandardErrorBasket --> N_RoutetoStandardErrorBasket_Node0 N_RoutetoStandardErrorBasket_Node0 -- No --> E_RoutetoStandardErrorBasket
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
The message has been determined to not be an export container type
WHEN:
The system processes the standard routing requirement
THEN:
The message is routed to the standard error basket for general error processing
β Consolidated Acceptance Criteria
- The system executes the message delivery process → the error message is successfully sent to all valid destinations in the routing list
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SendMessagetoAllValidDestinations(["Start Step"])
E_SendMessagetoAllValidDestinations(["End Step"])
N_SendMessagetoAllValidDestinations_Node0{"The system executes the message
delivery process"}:::decision N_SendMessagetoAllValidDestinations_Node0_action["The error message is successfully
sent to all valid destinations in
the routing list"]:::main N_SendMessagetoAllValidDestinations_Node0 -- Yes --> N_SendMessagetoAllValidDestinations_Node0_action N_SendMessagetoAllValidDestinations_Node0_action --> E_SendMessagetoAllValidDestinations S_SendMessagetoAllValidDestinations --> N_SendMessagetoAllValidDestinations_Node0 N_SendMessagetoAllValidDestinations_Node0 -- No --> E_SendMessagetoAllValidDestinations
delivery process"}:::decision N_SendMessagetoAllValidDestinations_Node0_action["The error message is successfully
sent to all valid destinations in
the routing list"]:::main N_SendMessagetoAllValidDestinations_Node0 -- Yes --> N_SendMessagetoAllValidDestinations_Node0_action N_SendMessagetoAllValidDestinations_Node0_action --> E_SendMessagetoAllValidDestinations S_SendMessagetoAllValidDestinations --> N_SendMessagetoAllValidDestinations_Node0 N_SendMessagetoAllValidDestinations_Node0 -- No --> E_SendMessagetoAllValidDestinations
File: GCX016.cbl
GIVEN:
All routing destinations have been determined and validated
WHEN:
The system executes the message delivery process
THEN:
The error message is successfully sent to all valid destinations in the routing list
β Consolidated Acceptance Criteria
- The system processes the logging requirements → routing information including destinations and delivery status is logged for audit purposes
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogRoutingInformation(["Start Step"])
E_LogRoutingInformation(["End Step"])
N_LogRoutingInformation_Node0{"The system processes the logging
requirements"}:::decision N_LogRoutingInformation_Node0_action["Routing information including
destinations and delivery status is
logged for audit purposes"]:::main N_LogRoutingInformation_Node0 -- Yes --> N_LogRoutingInformation_Node0_action N_LogRoutingInformation_Node0_action --> E_LogRoutingInformation S_LogRoutingInformation --> N_LogRoutingInformation_Node0 N_LogRoutingInformation_Node0 -- No --> E_LogRoutingInformation
requirements"}:::decision N_LogRoutingInformation_Node0_action["Routing information including
destinations and delivery status is
logged for audit purposes"]:::main N_LogRoutingInformation_Node0 -- Yes --> N_LogRoutingInformation_Node0_action N_LogRoutingInformation_Node0_action --> E_LogRoutingInformation S_LogRoutingInformation --> N_LogRoutingInformation_Node0 N_LogRoutingInformation_Node0 -- No --> E_LogRoutingInformation
File: GCX016.cbl
GIVEN:
The error message has been sent to all valid destinations
WHEN:
The system processes the logging requirements
THEN:
- Routing information including destinations
- Delivery status is logged for audit purposes
β Consolidated Acceptance Criteria
- The system processes error messages for cargo not found or train processing failures → the system sets keywords 'CARGO_ERROR' for cargo-related errors and 'TRAIN_ERROR' for train-related errors to enable proper message routing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetErrorMessageKeywords(["Start Step"])
E_SetErrorMessageKeywords(["End Step"])
N_SetErrorMessageKeywords_Node0{"The system processes error messages
for cargo not found or train
processing failures"}:::decision N_SetErrorMessageKeywords_Node0_action["The system sets keywords CARGOERROR
for cargo-related errors and
TRAINERROR for train-related errors
to enable proper message routing"]:::exclusion N_SetErrorMessageKeywords_Node0 -- Yes -->|Alternative| N_SetErrorMessageKeywords_Node0_action N_SetErrorMessageKeywords_Node0_action --> E_SetErrorMessageKeywords S_SetErrorMessageKeywords --> N_SetErrorMessageKeywords_Node0 N_SetErrorMessageKeywords_Node0 -- No --> E_SetErrorMessageKeywords
for cargo not found or train
processing failures"}:::decision N_SetErrorMessageKeywords_Node0_action["The system sets keywords CARGOERROR
for cargo-related errors and
TRAINERROR for train-related errors
to enable proper message routing"]:::exclusion N_SetErrorMessageKeywords_Node0 -- Yes -->|Alternative| N_SetErrorMessageKeywords_Node0_action N_SetErrorMessageKeywords_Node0_action --> E_SetErrorMessageKeywords S_SetErrorMessageKeywords --> N_SetErrorMessageKeywords_Node0 N_SetErrorMessageKeywords_Node0 -- No --> E_SetErrorMessageKeywords
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
A message type is determined to be an error message
WHEN:
The system processes error messages for cargo not found or train processing failures
THEN:
The system sets keywords 'CARGO_ERROR' for cargo-related errors and 'TRAIN_ERROR' for train-related errors to enable proper message routing
β Consolidated Acceptance Criteria
- The system processes cargo status updates or general information messages → the system sets keywords 'CARGO_INFO' and 'STATUS_UPDATE' to ensure informational messages are routed to appropriate monitoring systems
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetInfoMessageKeywords(["Start Step"])
E_SetInfoMessageKeywords(["End Step"])
N_SetInfoMessageKeywords_Node0{"The system processes cargo status
updates or general information
messages"}:::decision N_SetInfoMessageKeywords_Node0_action["The system sets keywords CARGOINFO
and STATUSUPDATE to ensure
informational messages are routed to
appropriate monitoring systems"]:::main N_SetInfoMessageKeywords_Node0 -- Yes --> N_SetInfoMessageKeywords_Node0_action N_SetInfoMessageKeywords_Node0_action --> E_SetInfoMessageKeywords S_SetInfoMessageKeywords --> N_SetInfoMessageKeywords_Node0 N_SetInfoMessageKeywords_Node0 -- No --> E_SetInfoMessageKeywords
updates or general information
messages"}:::decision N_SetInfoMessageKeywords_Node0_action["The system sets keywords CARGOINFO
and STATUSUPDATE to ensure
informational messages are routed to
appropriate monitoring systems"]:::main N_SetInfoMessageKeywords_Node0 -- Yes --> N_SetInfoMessageKeywords_Node0_action N_SetInfoMessageKeywords_Node0_action --> E_SetInfoMessageKeywords S_SetInfoMessageKeywords --> N_SetInfoMessageKeywords_Node0 N_SetInfoMessageKeywords_Node0 -- No --> E_SetInfoMessageKeywords
File: GCX016.cbl
GIVEN:
A message type is determined to be an informational message
WHEN:
The system processes cargo status updates or general information messages
THEN:
The system sets keywords 'CARGO_INFO' and 'STATUS_UPDATE' to ensure informational messages are routed to appropriate monitoring systems
β Consolidated Acceptance Criteria
- The system processes messages that apply holds to cargo or reverse previous release actions → the system sets keywords 'UNRELEASE' and 'HOLD_APPLIED' to ensure hold notifications are properly categorized and routed
- The system prepares the message for routing → the system sets appropriate unrelease-specific keywords and message identifiers
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetUnreleaseMessageKeywords(["Start Step"])
E_SetUnreleaseMessageKeywords(["End Step"])
N_SetUnreleaseMessageKeywords_Node0{"The system processes messages that
apply holds to cargo or reverse
previous release actions"}:::decision N_SetUnreleaseMessageKeywords_Node0_action["The system sets keywords UNRELEASE
and HOLDAPPLIED to ensure hold
notifications are properly
categorized and routed"]:::main N_SetUnreleaseMessageKeywords_Node0 -- Yes --> N_SetUnreleaseMessageKeywords_Node0_action N_SetUnreleaseMessageKeywords_Node0_action --> E_SetUnreleaseMessageKeywords S_SetUnreleaseMessageKeywords --> N_SetUnreleaseMessageKeywords_Node0 N_SetUnreleaseMessageKeywords_Node1{"The system prepares the message for
routing"}:::decision N_SetUnreleaseMessageKeywords_Node1_action["The system sets appropriate
unrelease-specific keywords and
message identifiers"]:::main N_SetUnreleaseMessageKeywords_Node1 -- Yes --> N_SetUnreleaseMessageKeywords_Node1_action N_SetUnreleaseMessageKeywords_Node1_action --> E_SetUnreleaseMessageKeywords N_SetUnreleaseMessageKeywords_Node0 -- No --> N_SetUnreleaseMessageKeywords_Node1 N_SetUnreleaseMessageKeywords_Node1 -- No --> E_SetUnreleaseMessageKeywords
apply holds to cargo or reverse
previous release actions"}:::decision N_SetUnreleaseMessageKeywords_Node0_action["The system sets keywords UNRELEASE
and HOLDAPPLIED to ensure hold
notifications are properly
categorized and routed"]:::main N_SetUnreleaseMessageKeywords_Node0 -- Yes --> N_SetUnreleaseMessageKeywords_Node0_action N_SetUnreleaseMessageKeywords_Node0_action --> E_SetUnreleaseMessageKeywords S_SetUnreleaseMessageKeywords --> N_SetUnreleaseMessageKeywords_Node0 N_SetUnreleaseMessageKeywords_Node1{"The system prepares the message for
routing"}:::decision N_SetUnreleaseMessageKeywords_Node1_action["The system sets appropriate
unrelease-specific keywords and
message identifiers"]:::main N_SetUnreleaseMessageKeywords_Node1 -- Yes --> N_SetUnreleaseMessageKeywords_Node1_action N_SetUnreleaseMessageKeywords_Node1_action --> E_SetUnreleaseMessageKeywords N_SetUnreleaseMessageKeywords_Node0 -- No --> N_SetUnreleaseMessageKeywords_Node1 N_SetUnreleaseMessageKeywords_Node1 -- No --> E_SetUnreleaseMessageKeywords
File: GCX016.cbl
GIVEN:
A message type is determined to be an unrelease message
WHEN:
The system processes messages that apply holds to cargo or reverse previous release actions
THEN:
- The system sets keywords 'unrelease' and 'hold_applied' to ensure hold notifications are properly categorized
- Routed
File: GCX016.cbl
GIVEN:
An unrelease message type has been detected
WHEN:
The system prepares the message for routing
THEN:
- The system sets appropriate unrelease-specific keywords
- Message identifiers
β Consolidated Acceptance Criteria
- The system processes messages that release cargo for movement or clear cargo holds → the system sets keywords 'RELEASE' and 'CARGO_CLEARED' to ensure release notifications are properly identified and routed
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetReleaseMessageKeywords(["Start Step"])
E_SetReleaseMessageKeywords(["End Step"])
N_SetReleaseMessageKeywords_Node0{"The system processes messages that
release cargo for movement or clear
cargo holds"}:::decision N_SetReleaseMessageKeywords_Node0_action["The system sets keywords RELEASE
and CARGOCLEARED to ensure release
notifications are properly
identified and routed"]:::main N_SetReleaseMessageKeywords_Node0 -- Yes --> N_SetReleaseMessageKeywords_Node0_action N_SetReleaseMessageKeywords_Node0_action --> E_SetReleaseMessageKeywords S_SetReleaseMessageKeywords --> N_SetReleaseMessageKeywords_Node0 N_SetReleaseMessageKeywords_Node0 -- No --> E_SetReleaseMessageKeywords
release cargo for movement or clear
cargo holds"}:::decision N_SetReleaseMessageKeywords_Node0_action["The system sets keywords RELEASE
and CARGOCLEARED to ensure release
notifications are properly
identified and routed"]:::main N_SetReleaseMessageKeywords_Node0 -- Yes --> N_SetReleaseMessageKeywords_Node0_action N_SetReleaseMessageKeywords_Node0_action --> E_SetReleaseMessageKeywords S_SetReleaseMessageKeywords --> N_SetReleaseMessageKeywords_Node0 N_SetReleaseMessageKeywords_Node0 -- No --> E_SetReleaseMessageKeywords
File: GCX016.cbl
GIVEN:
A message type is determined to be a release message
WHEN:
The system processes messages that release cargo for movement or clear cargo holds
THEN:
- The system sets keywords 'release' and 'cargo_cleared' to ensure release notifications are properly identified
- Routed
β Consolidated Acceptance Criteria
- The system processes messages that place cargo on hold for customs examination or inspection → the system sets keywords 'HOLD' and 'EXAMINATION' to ensure hold notifications are properly routed to examination and inspection systems
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetHoldMessageKeywords(["Start Step"])
E_SetHoldMessageKeywords(["End Step"])
N_SetHoldMessageKeywords_Node0{"The system processes messages that
place cargo on hold for customs
examination or inspection"}:::decision N_SetHoldMessageKeywords_Node0_action["The system sets keywords HOLD and
EXAMINATION to ensure hold
notifications are properly routed to
examination and inspection systems"]:::main N_SetHoldMessageKeywords_Node0 -- Yes --> N_SetHoldMessageKeywords_Node0_action N_SetHoldMessageKeywords_Node0_action --> E_SetHoldMessageKeywords S_SetHoldMessageKeywords --> N_SetHoldMessageKeywords_Node0 N_SetHoldMessageKeywords_Node0 -- No --> E_SetHoldMessageKeywords
place cargo on hold for customs
examination or inspection"}:::decision N_SetHoldMessageKeywords_Node0_action["The system sets keywords HOLD and
EXAMINATION to ensure hold
notifications are properly routed to
examination and inspection systems"]:::main N_SetHoldMessageKeywords_Node0 -- Yes --> N_SetHoldMessageKeywords_Node0_action N_SetHoldMessageKeywords_Node0_action --> E_SetHoldMessageKeywords S_SetHoldMessageKeywords --> N_SetHoldMessageKeywords_Node0 N_SetHoldMessageKeywords_Node0 -- No --> E_SetHoldMessageKeywords
File: GCX016.cbl
GIVEN:
A message type is determined to be a hold message
WHEN:
The system processes messages that place cargo on hold for customs examination or inspection
THEN:
- The system sets keywords 'hold' and 'examination' to ensure hold notifications are properly routed to examination
- Inspection systems
β Consolidated Acceptance Criteria
- The system processes messages that notify brokers of quantity mismatches or other cargo-related issues → the system sets keywords 'BROKER' and 'QUANTITY_MISMATCH' to ensure broker notifications are properly categorized and delivered
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetBrokerNotificationKeywords(["Start Step"])
E_SetBrokerNotificationKeywords(["End Step"])
N_SetBrokerNotificationKeywords_Node0{"The system processes messages that
notify brokers of quantity
mismatches or other cargo-related
issues"}:::decision N_SetBrokerNotificationKeywords_Node0_action["The system sets keywords BROKER and
QUANTITYMISMATCH to ensure broker
notifications are properly
categorized and delivered"]:::main N_SetBrokerNotificationKeywords_Node0 -- Yes --> N_SetBrokerNotificationKeywords_Node0_action N_SetBrokerNotificationKeywords_Node0_action --> E_SetBrokerNotificationKeywords S_SetBrokerNotificationKeywords --> N_SetBrokerNotificationKeywords_Node0 N_SetBrokerNotificationKeywords_Node0 -- No --> E_SetBrokerNotificationKeywords
notify brokers of quantity
mismatches or other cargo-related
issues"}:::decision N_SetBrokerNotificationKeywords_Node0_action["The system sets keywords BROKER and
QUANTITYMISMATCH to ensure broker
notifications are properly
categorized and delivered"]:::main N_SetBrokerNotificationKeywords_Node0 -- Yes --> N_SetBrokerNotificationKeywords_Node0_action N_SetBrokerNotificationKeywords_Node0_action --> E_SetBrokerNotificationKeywords S_SetBrokerNotificationKeywords --> N_SetBrokerNotificationKeywords_Node0 N_SetBrokerNotificationKeywords_Node0 -- No --> E_SetBrokerNotificationKeywords
File: GCX016.cbl
GIVEN:
A message type is determined to be a broker notification
WHEN:
The system processes messages that notify brokers of quantity mismatches or other cargo-related issues
THEN:
- The system sets keywords 'broker' and 'quantity_mismatch' to ensure broker notifications are properly categorized
- Delivered
β Consolidated Acceptance Criteria
- The system processes messages related to train arrivals, train holds, or other train operational events → the system sets keywords 'TRAIN_ARRIVAL' and 'TRAIN_HOLD' to ensure train operation messages are properly categorized for train management systems
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetTrainOperationKeywords(["Start Step"])
E_SetTrainOperationKeywords(["End Step"])
N_SetTrainOperationKeywords_Node0{"The system processes messages
related to train arrivals, train
holds, or other train operational
events"}:::decision N_SetTrainOperationKeywords_Node0_action["The system sets keywords
TRAINARRIVAL and TRAINHOLD to ensure
train operation messages are
properly categorized for train
management systems"]:::main N_SetTrainOperationKeywords_Node0 -- Yes --> N_SetTrainOperationKeywords_Node0_action N_SetTrainOperationKeywords_Node0_action --> E_SetTrainOperationKeywords S_SetTrainOperationKeywords --> N_SetTrainOperationKeywords_Node0 N_SetTrainOperationKeywords_Node0 -- No --> E_SetTrainOperationKeywords
related to train arrivals, train
holds, or other train operational
events"}:::decision N_SetTrainOperationKeywords_Node0_action["The system sets keywords
TRAINARRIVAL and TRAINHOLD to ensure
train operation messages are
properly categorized for train
management systems"]:::main N_SetTrainOperationKeywords_Node0 -- Yes --> N_SetTrainOperationKeywords_Node0_action N_SetTrainOperationKeywords_Node0_action --> E_SetTrainOperationKeywords S_SetTrainOperationKeywords --> N_SetTrainOperationKeywords_Node0 N_SetTrainOperationKeywords_Node0 -- No --> E_SetTrainOperationKeywords
File: GCX016.cbl
GIVEN:
A message type is determined to be a train operation message
WHEN:
The system processes messages related to train arrivals, train holds, or other train operational events
THEN:
The system sets keywords 'TRAIN_ARRIVAL' and 'TRAIN_HOLD' to ensure train operation messages are properly categorized for train management systems
β Consolidated Acceptance Criteria
- The system identifies the container or equipment type associated with the cargo → the system applies additional container type keywords to enhance message categorization and routing specificity
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ApplyContainerTypeKeywords(["Start Step"])
E_ApplyContainerTypeKeywords(["End Step"])
N_ApplyContainerTypeKeywords_Node0{"The system identifies the container
or equipment type associated with
the cargo"}:::decision N_ApplyContainerTypeKeywords_Node0_action["The system applies additional
container type keywords to enhance
message categorization and routing
specificity"]:::main N_ApplyContainerTypeKeywords_Node0 -- Yes --> N_ApplyContainerTypeKeywords_Node0_action N_ApplyContainerTypeKeywords_Node0_action --> E_ApplyContainerTypeKeywords S_ApplyContainerTypeKeywords --> N_ApplyContainerTypeKeywords_Node0 N_ApplyContainerTypeKeywords_Node0 -- No --> E_ApplyContainerTypeKeywords
or equipment type associated with
the cargo"}:::decision N_ApplyContainerTypeKeywords_Node0_action["The system applies additional
container type keywords to enhance
message categorization and routing
specificity"]:::main N_ApplyContainerTypeKeywords_Node0 -- Yes --> N_ApplyContainerTypeKeywords_Node0_action N_ApplyContainerTypeKeywords_Node0_action --> E_ApplyContainerTypeKeywords S_ApplyContainerTypeKeywords --> N_ApplyContainerTypeKeywords_Node0 N_ApplyContainerTypeKeywords_Node0 -- No --> E_ApplyContainerTypeKeywords
File: GCX016.cbl
GIVEN:
Message keywords have been initially set based on message type
WHEN:
The system identifies the container or equipment type associated with the cargo
THEN:
- The system applies additional container type keywords to enhance message categorization
- Routing specificity
β Consolidated Acceptance Criteria
- The system identifies the disposition code associated with the cargo processing action → the system applies disposition code keywords to provide additional context for message routing and processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ApplyDispositionCodeKeywords(["Start Step"])
E_ApplyDispositionCodeKeywords(["End Step"])
N_ApplyDispositionCodeKeywords_Node0{"The system identifies the
disposition code associated with the
cargo processing action"}:::decision N_ApplyDispositionCodeKeywords_Node0_action["The system applies disposition code
keywords to provide additional
context for message routing and
processing"]:::main N_ApplyDispositionCodeKeywords_Node0 -- Yes --> N_ApplyDispositionCodeKeywords_Node0_action N_ApplyDispositionCodeKeywords_Node0_action --> E_ApplyDispositionCodeKeywords S_ApplyDispositionCodeKeywords --> N_ApplyDispositionCodeKeywords_Node0 N_ApplyDispositionCodeKeywords_Node0 -- No --> E_ApplyDispositionCodeKeywords
disposition code associated with the
cargo processing action"}:::decision N_ApplyDispositionCodeKeywords_Node0_action["The system applies disposition code
keywords to provide additional
context for message routing and
processing"]:::main N_ApplyDispositionCodeKeywords_Node0 -- Yes --> N_ApplyDispositionCodeKeywords_Node0_action N_ApplyDispositionCodeKeywords_Node0_action --> E_ApplyDispositionCodeKeywords S_ApplyDispositionCodeKeywords --> N_ApplyDispositionCodeKeywords_Node0 N_ApplyDispositionCodeKeywords_Node0 -- No --> E_ApplyDispositionCodeKeywords
File: GCX016.cbl
GIVEN:
Container type keywords have been applied to the message
WHEN:
The system identifies the disposition code associated with the cargo processing action
THEN:
- The system applies disposition code keywords to provide additional context for message routing
- Processing
β Consolidated Acceptance Criteria
- The system determines the current status of the cargo (held, released, in-transit, etc.) → the system applies cargo status keywords to indicate the current state of the cargo for proper message handling
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ApplyCargoStatusKeywords(["Start Step"])
E_ApplyCargoStatusKeywords(["End Step"])
N_ApplyCargoStatusKeywords_Node0{"The system determines the current
status of the cargo held, released,
in-transit, etc."}:::decision N_ApplyCargoStatusKeywords_Node0_action["The system applies cargo status
keywords to indicate the current
state of the cargo for proper
message handling"]:::main N_ApplyCargoStatusKeywords_Node0 -- Yes --> N_ApplyCargoStatusKeywords_Node0_action N_ApplyCargoStatusKeywords_Node0_action --> E_ApplyCargoStatusKeywords S_ApplyCargoStatusKeywords --> N_ApplyCargoStatusKeywords_Node0 N_ApplyCargoStatusKeywords_Node0 -- No --> E_ApplyCargoStatusKeywords
status of the cargo held, released,
in-transit, etc."}:::decision N_ApplyCargoStatusKeywords_Node0_action["The system applies cargo status
keywords to indicate the current
state of the cargo for proper
message handling"]:::main N_ApplyCargoStatusKeywords_Node0 -- Yes --> N_ApplyCargoStatusKeywords_Node0_action N_ApplyCargoStatusKeywords_Node0_action --> E_ApplyCargoStatusKeywords S_ApplyCargoStatusKeywords --> N_ApplyCargoStatusKeywords_Node0 N_ApplyCargoStatusKeywords_Node0 -- No --> E_ApplyCargoStatusKeywords
File: GCX016.cbl
GIVEN:
Disposition code keywords have been applied to the message
WHEN:
The system determines the current status of the cargo (held, released, in-transit, etc.)
THEN:
The system applies cargo status keywords to indicate the current state of the cargo for proper message handling
β Consolidated Acceptance Criteria
- If the urgency and priority level of the message based on cargo status and disposition codes → the system sets routing priority keywords to ensure high-priority messages are processed and delivered with appropriate urgency
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetRoutingPriorityKeywords(["Start Step"])
E_SetRoutingPriorityKeywords(["End Step"])
N_SetRoutingPriorityKeywords_Node0{"The system evaluates the urgency
and priority level of the message
based on cargo status and
disposition codes"}:::decision N_SetRoutingPriorityKeywords_Node0_action["The system sets routing priority
keywords to ensure high-priority
messages are processed and delivered
with appropriate urgency"]:::main N_SetRoutingPriorityKeywords_Node0 -- Yes --> N_SetRoutingPriorityKeywords_Node0_action N_SetRoutingPriorityKeywords_Node0_action --> E_SetRoutingPriorityKeywords S_SetRoutingPriorityKeywords --> N_SetRoutingPriorityKeywords_Node0 N_SetRoutingPriorityKeywords_Node0 -- No --> E_SetRoutingPriorityKeywords
and priority level of the message
based on cargo status and
disposition codes"}:::decision N_SetRoutingPriorityKeywords_Node0_action["The system sets routing priority
keywords to ensure high-priority
messages are processed and delivered
with appropriate urgency"]:::main N_SetRoutingPriorityKeywords_Node0 -- Yes --> N_SetRoutingPriorityKeywords_Node0_action N_SetRoutingPriorityKeywords_Node0_action --> E_SetRoutingPriorityKeywords S_SetRoutingPriorityKeywords --> N_SetRoutingPriorityKeywords_Node0 N_SetRoutingPriorityKeywords_Node0 -- No --> E_SetRoutingPriorityKeywords
File: GCX016.cbl
GIVEN:
Cargo status keywords have been applied to the message
WHEN:
- The system evaluates the urgency
- Priority level of the message based on cargo status
- Disposition codes
THEN:
- The system sets routing priority keywords to ensure high-priority messages are processed
- Delivered with appropriate urgency
β Consolidated Acceptance Criteria
- The system determines the appropriate recipient categories (brokers, customs officers, train operators, etc.) → the system sets user category keywords to ensure messages are delivered to the correct recipient groups
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetUserCategoryKeywords(["Start Step"])
E_SetUserCategoryKeywords(["End Step"])
N_SetUserCategoryKeywords_Node0{"The system determines the
appropriate recipient categories
brokers, customs officers, train
operators, etc."}:::decision N_SetUserCategoryKeywords_Node0_action["The system sets user category
keywords to ensure messages are
delivered to the correct recipient
groups"]:::main N_SetUserCategoryKeywords_Node0 -- Yes --> N_SetUserCategoryKeywords_Node0_action N_SetUserCategoryKeywords_Node0_action --> E_SetUserCategoryKeywords S_SetUserCategoryKeywords --> N_SetUserCategoryKeywords_Node0 N_SetUserCategoryKeywords_Node0 -- No --> E_SetUserCategoryKeywords
appropriate recipient categories
brokers, customs officers, train
operators, etc."}:::decision N_SetUserCategoryKeywords_Node0_action["The system sets user category
keywords to ensure messages are
delivered to the correct recipient
groups"]:::main N_SetUserCategoryKeywords_Node0 -- Yes --> N_SetUserCategoryKeywords_Node0_action N_SetUserCategoryKeywords_Node0_action --> E_SetUserCategoryKeywords S_SetUserCategoryKeywords --> N_SetUserCategoryKeywords_Node0 N_SetUserCategoryKeywords_Node0 -- No --> E_SetUserCategoryKeywords
File: GCX016.cbl
GIVEN:
Routing priority keywords have been set for the message
WHEN:
The system determines the appropriate recipient categories (brokers, customs officers, train operators, etc.)
THEN:
The system sets user category keywords to ensure messages are delivered to the correct recipient groups
β Consolidated Acceptance Criteria
- The system has completed all keyword assignment steps → the system finalizes the complete set of email keywords to prepare the message for routing and delivery
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_FinalizeEmailKeywords(["Start Step"])
E_FinalizeEmailKeywords(["End Step"])
N_FinalizeEmailKeywords_Node0{"The system has completed all
keyword assignment steps"}:::decision N_FinalizeEmailKeywords_Node0_action["The system finalizes the complete
set of email keywords to prepare the
message for routing and delivery"]:::main N_FinalizeEmailKeywords_Node0 -- Yes --> N_FinalizeEmailKeywords_Node0_action N_FinalizeEmailKeywords_Node0_action --> E_FinalizeEmailKeywords S_FinalizeEmailKeywords --> N_FinalizeEmailKeywords_Node0 N_FinalizeEmailKeywords_Node0 -- No --> E_FinalizeEmailKeywords
keyword assignment steps"}:::decision N_FinalizeEmailKeywords_Node0_action["The system finalizes the complete
set of email keywords to prepare the
message for routing and delivery"]:::main N_FinalizeEmailKeywords_Node0 -- Yes --> N_FinalizeEmailKeywords_Node0_action N_FinalizeEmailKeywords_Node0_action --> E_FinalizeEmailKeywords S_FinalizeEmailKeywords --> N_FinalizeEmailKeywords_Node0 N_FinalizeEmailKeywords_Node0 -- No --> E_FinalizeEmailKeywords
File: GCX016.cbl
GIVEN:
User category keywords have been set for the message
WHEN:
The system has completed all keyword assignment steps
THEN:
- The system finalizes the complete set of email keywords to prepare the message for routing
- Delivery
β Consolidated Acceptance Criteria
- If the message content and context → the message type is determined as one of: Error, Info, Release, Hold, Export, or Unrelease
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_DetermineMessageType(["Start Step"])
E_DetermineMessageType(["End Step"])
N_DetermineMessageType_Node0{"The system evaluates the message
content and context"}:::decision N_DetermineMessageType_Node0_action["The message type is determined as
one of: Error, Info, Release, Hold,
Export, or Unrelease"]:::main N_DetermineMessageType_Node0 -- Yes --> N_DetermineMessageType_Node0_action N_DetermineMessageType_Node0_action --> E_DetermineMessageType S_DetermineMessageType --> N_DetermineMessageType_Node0 N_DetermineMessageType_Node0 -- No --> E_DetermineMessageType
content and context"}:::decision N_DetermineMessageType_Node0_action["The message type is determined as
one of: Error, Info, Release, Hold,
Export, or Unrelease"]:::main N_DetermineMessageType_Node0 -- Yes --> N_DetermineMessageType_Node0_action N_DetermineMessageType_Node0_action --> E_DetermineMessageType S_DetermineMessageType --> N_DetermineMessageType_Node0 N_DetermineMessageType_Node0 -- No --> E_DetermineMessageType
File: GCX016.cbl
GIVEN:
An email message needs to be prepared for sending
WHEN:
- The system evaluates the message content
- Context
THEN:
The message type is determined as one of: Error, Info, Release, Hold, Export, or Unrelease
β Consolidated Acceptance Criteria
- The message routing process is executed → the message is sent to both 'IN' and 'USERR' destinations with error-specific subject formatting
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ErrorMessageSubject(["Start Step"])
E_ErrorMessageSubject(["End Step"])
N_ErrorMessageSubject_Node0{"The message routing process is
executed"}:::decision N_ErrorMessageSubject_Node0_action["The message is sent to both IN and
USERR destinations with
error-specific subject formatting"]:::main N_ErrorMessageSubject_Node0 -- Yes --> N_ErrorMessageSubject_Node0_action N_ErrorMessageSubject_Node0_action --> E_ErrorMessageSubject S_ErrorMessageSubject --> N_ErrorMessageSubject_Node0 N_ErrorMessageSubject_Node0 -- No --> E_ErrorMessageSubject
executed"}:::decision N_ErrorMessageSubject_Node0_action["The message is sent to both IN and
USERR destinations with
error-specific subject formatting"]:::main N_ErrorMessageSubject_Node0 -- Yes --> N_ErrorMessageSubject_Node0_action N_ErrorMessageSubject_Node0_action --> E_ErrorMessageSubject S_ErrorMessageSubject --> N_ErrorMessageSubject_Node0 N_ErrorMessageSubject_Node0 -- No --> E_ErrorMessageSubject
File: GCX016.cbl
GIVEN:
A message has been classified as an error or arrival cancellation type
WHEN:
The message routing process is executed
THEN:
The message is sent to both 'IN' and 'USERR' destinations with error-specific subject formatting
β Consolidated Acceptance Criteria
- The message routing process is executed → the message is sent to 'IN' destination and station-specific Merlin IDs with info-specific subject formatting
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_InfoMessageSubject(["Start Step"])
E_InfoMessageSubject(["End Step"])
N_InfoMessageSubject_Node0{"The message routing process is
executed"}:::decision N_InfoMessageSubject_Node0_action["The message is sent to IN
destination and station-specific
Merlin IDs with info-specific
subject formatting"]:::main N_InfoMessageSubject_Node0 -- Yes --> N_InfoMessageSubject_Node0_action N_InfoMessageSubject_Node0_action --> E_InfoMessageSubject S_InfoMessageSubject --> N_InfoMessageSubject_Node0 N_InfoMessageSubject_Node0 -- No --> E_InfoMessageSubject
executed"}:::decision N_InfoMessageSubject_Node0_action["The message is sent to IN
destination and station-specific
Merlin IDs with info-specific
subject formatting"]:::main N_InfoMessageSubject_Node0 -- Yes --> N_InfoMessageSubject_Node0_action N_InfoMessageSubject_Node0_action --> E_InfoMessageSubject S_InfoMessageSubject --> N_InfoMessageSubject_Node0 N_InfoMessageSubject_Node0 -- No --> E_InfoMessageSubject
File: GCX016.cbl
GIVEN:
A message has been classified as an informational type
WHEN:
The message routing process is executed
THEN:
- The message is sent to 'in' destination
- Station-specific merlin ids with info-specific subject formatting
β Consolidated Acceptance Criteria
- The message routing process is executed → the message is sent to station-specific Merlin IDs only with release-specific subject formatting
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ReleaseMessageSubject(["Start Step"])
E_ReleaseMessageSubject(["End Step"])
N_ReleaseMessageSubject_Node0{"The message routing process is
executed"}:::decision N_ReleaseMessageSubject_Node0_action["The message is sent to
station-specific Merlin IDs only
with release-specific subject
formatting"]:::main N_ReleaseMessageSubject_Node0 -- Yes --> N_ReleaseMessageSubject_Node0_action N_ReleaseMessageSubject_Node0_action --> E_ReleaseMessageSubject S_ReleaseMessageSubject --> N_ReleaseMessageSubject_Node0 N_ReleaseMessageSubject_Node0 -- No --> E_ReleaseMessageSubject
executed"}:::decision N_ReleaseMessageSubject_Node0_action["The message is sent to
station-specific Merlin IDs only
with release-specific subject
formatting"]:::main N_ReleaseMessageSubject_Node0 -- Yes --> N_ReleaseMessageSubject_Node0_action N_ReleaseMessageSubject_Node0_action --> E_ReleaseMessageSubject S_ReleaseMessageSubject --> N_ReleaseMessageSubject_Node0 N_ReleaseMessageSubject_Node0 -- No --> E_ReleaseMessageSubject
File: GCX016.cbl
GIVEN:
A message has been classified as a release type
WHEN:
The message routing process is executed
THEN:
The message is sent to station-specific Merlin IDs only with release-specific subject formatting
β Consolidated Acceptance Criteria
- The message routing process is executed → the message is sent to default and cancel-specific Merlin IDs with unrelease-specific subject formatting
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UnreleaseMessageSubject(["Start Step"])
E_UnreleaseMessageSubject(["End Step"])
N_UnreleaseMessageSubject_Node0{"The message routing process is
executed"}:::decision N_UnreleaseMessageSubject_Node0_action["The message is sent to default and
cancel-specific Merlin IDs with
unrelease-specific subject
formatting"]:::main N_UnreleaseMessageSubject_Node0 -- Yes --> N_UnreleaseMessageSubject_Node0_action N_UnreleaseMessageSubject_Node0_action --> E_UnreleaseMessageSubject S_UnreleaseMessageSubject --> N_UnreleaseMessageSubject_Node0 N_UnreleaseMessageSubject_Node0 -- No --> E_UnreleaseMessageSubject
executed"}:::decision N_UnreleaseMessageSubject_Node0_action["The message is sent to default and
cancel-specific Merlin IDs with
unrelease-specific subject
formatting"]:::main N_UnreleaseMessageSubject_Node0 -- Yes --> N_UnreleaseMessageSubject_Node0_action N_UnreleaseMessageSubject_Node0_action --> E_UnreleaseMessageSubject S_UnreleaseMessageSubject --> N_UnreleaseMessageSubject_Node0 N_UnreleaseMessageSubject_Node0 -- No --> E_UnreleaseMessageSubject
File: GCX016.cbl
GIVEN:
A message has been classified as an unrelease type
WHEN:
The message routing process is executed
THEN:
- The message is sent to default
- Cancel-specific merlin ids with unrelease-specific subject formatting
β Consolidated Acceptance Criteria
- The message routing process is executed and equipment type is validated → the message is sent with export-specific subject formatting after equipment type validation
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExportMessageSubject(["Start Step"])
E_ExportMessageSubject(["End Step"])
N_ExportMessageSubject_Node0{"The message routing process is
executed and equipment type is
validated"}:::decision N_ExportMessageSubject_Node0_action["The message is sent with
export-specific subject formatting
after equipment type validation"]:::main N_ExportMessageSubject_Node0 -- Yes --> N_ExportMessageSubject_Node0_action N_ExportMessageSubject_Node0_action --> E_ExportMessageSubject S_ExportMessageSubject --> N_ExportMessageSubject_Node0 N_ExportMessageSubject_Node0 -- No --> E_ExportMessageSubject
executed and equipment type is
validated"}:::decision N_ExportMessageSubject_Node0_action["The message is sent with
export-specific subject formatting
after equipment type validation"]:::main N_ExportMessageSubject_Node0 -- Yes --> N_ExportMessageSubject_Node0_action N_ExportMessageSubject_Node0_action --> E_ExportMessageSubject S_ExportMessageSubject --> N_ExportMessageSubject_Node0 N_ExportMessageSubject_Node0 -- No --> E_ExportMessageSubject
File: GCX016.cbl
GIVEN:
A message has been classified as an export type
WHEN:
- The message routing process is executed
- Equipment type is validated
THEN:
The message is sent with export-specific subject formatting after equipment type validation
β Consolidated Acceptance Criteria
- The system configures routing destinations → the message is set to route to both 'IN' destination and 'USERR' destination
- Error message routing is configured → message is routed to both 'IN' destination and 'USERR' error destination
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetErrorMessageRouting(["Start Step"])
E_SetErrorMessageRouting(["End Step"])
N_SetErrorMessageRouting_Node0{"The system configures routing
destinations"}:::decision N_SetErrorMessageRouting_Node0_action["The message is set to route to both
IN destination and USERR destination"]:::main N_SetErrorMessageRouting_Node0 -- Yes --> N_SetErrorMessageRouting_Node0_action N_SetErrorMessageRouting_Node0_action --> E_SetErrorMessageRouting S_SetErrorMessageRouting --> N_SetErrorMessageRouting_Node0 N_SetErrorMessageRouting_Node1{"Error message routing is configured"}:::decision N_SetErrorMessageRouting_Node1_action["Message is routed to both IN
destination and USERR error
destination"]:::exclusion N_SetErrorMessageRouting_Node1 -- Yes -->|Alternative| N_SetErrorMessageRouting_Node1_action N_SetErrorMessageRouting_Node1_action --> E_SetErrorMessageRouting N_SetErrorMessageRouting_Node0 -- No --> N_SetErrorMessageRouting_Node1 N_SetErrorMessageRouting_Node1 -- No --> E_SetErrorMessageRouting
destinations"}:::decision N_SetErrorMessageRouting_Node0_action["The message is set to route to both
IN destination and USERR destination"]:::main N_SetErrorMessageRouting_Node0 -- Yes --> N_SetErrorMessageRouting_Node0_action N_SetErrorMessageRouting_Node0_action --> E_SetErrorMessageRouting S_SetErrorMessageRouting --> N_SetErrorMessageRouting_Node0 N_SetErrorMessageRouting_Node1{"Error message routing is configured"}:::decision N_SetErrorMessageRouting_Node1_action["Message is routed to both IN
destination and USERR error
destination"]:::exclusion N_SetErrorMessageRouting_Node1 -- Yes -->|Alternative| N_SetErrorMessageRouting_Node1_action N_SetErrorMessageRouting_Node1_action --> E_SetErrorMessageRouting N_SetErrorMessageRouting_Node0 -- No --> N_SetErrorMessageRouting_Node1 N_SetErrorMessageRouting_Node1 -- No --> E_SetErrorMessageRouting
File: GCX016.cbl
GIVEN:
A message has been classified as an error type (ERROR or ARRCANL)
WHEN:
The system configures routing destinations
THEN:
The message is set to route to both 'IN' destination and 'USERR' destination
File: GCX016.cbl
GIVEN:
Message type is identified as error or arrival cancellation
WHEN:
Error message routing is configured
THEN:
Message is routed to both 'IN' destination and 'USERR' error destination
β Consolidated Acceptance Criteria
- The system configures routing destinations → the message is set to route to 'IN' destination and station-specific Merlin IDs
- Information message routing is configured → message is routed to 'IN' destination and station-specific Merlin IDs
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetInfoMessageRouting(["Start Step"])
E_SetInfoMessageRouting(["End Step"])
N_SetInfoMessageRouting_Node0{"The system configures routing
destinations"}:::decision N_SetInfoMessageRouting_Node0_action["The message is set to route to IN
destination and station-specific
Merlin IDs"]:::main N_SetInfoMessageRouting_Node0 -- Yes --> N_SetInfoMessageRouting_Node0_action N_SetInfoMessageRouting_Node0_action --> E_SetInfoMessageRouting S_SetInfoMessageRouting --> N_SetInfoMessageRouting_Node0 N_SetInfoMessageRouting_Node1{"Information message routing is
configured"}:::decision N_SetInfoMessageRouting_Node1_action["Message is routed to IN destination
and station-specific Merlin IDs"]:::main N_SetInfoMessageRouting_Node1 -- Yes --> N_SetInfoMessageRouting_Node1_action N_SetInfoMessageRouting_Node1_action --> E_SetInfoMessageRouting N_SetInfoMessageRouting_Node0 -- No --> N_SetInfoMessageRouting_Node1 N_SetInfoMessageRouting_Node1 -- No --> E_SetInfoMessageRouting
destinations"}:::decision N_SetInfoMessageRouting_Node0_action["The message is set to route to IN
destination and station-specific
Merlin IDs"]:::main N_SetInfoMessageRouting_Node0 -- Yes --> N_SetInfoMessageRouting_Node0_action N_SetInfoMessageRouting_Node0_action --> E_SetInfoMessageRouting S_SetInfoMessageRouting --> N_SetInfoMessageRouting_Node0 N_SetInfoMessageRouting_Node1{"Information message routing is
configured"}:::decision N_SetInfoMessageRouting_Node1_action["Message is routed to IN destination
and station-specific Merlin IDs"]:::main N_SetInfoMessageRouting_Node1 -- Yes --> N_SetInfoMessageRouting_Node1_action N_SetInfoMessageRouting_Node1_action --> E_SetInfoMessageRouting N_SetInfoMessageRouting_Node0 -- No --> N_SetInfoMessageRouting_Node1 N_SetInfoMessageRouting_Node1 -- No --> E_SetInfoMessageRouting
File: GCX016.cbl
GIVEN:
A message has been classified as info type
WHEN:
The system configures routing destinations
THEN:
- The message is set to route to 'in' destination
- Station-specific merlin ids
File: GCX016.cbl
GIVEN:
Message type is identified as informational
WHEN:
Information message routing is configured
THEN:
- Message is routed to 'in' destination
- Station-specific merlin ids
β Consolidated Acceptance Criteria
- The system configures routing destinations → the message is set to route with default Merlin IDs and cancel-specific Merlin IDs
- Unrelease message routing is configured → message is routed to default destinations and cancel-specific Merlin IDs
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetUnreleaseMessageRouting(["Start Step"])
E_SetUnreleaseMessageRouting(["End Step"])
N_SetUnreleaseMessageRouting_Node0{"The system configures routing
destinations"}:::decision N_SetUnreleaseMessageRouting_Node0_action["The message is set to route with
default Merlin IDs and
cancel-specific Merlin IDs"]:::main N_SetUnreleaseMessageRouting_Node0 -- Yes --> N_SetUnreleaseMessageRouting_Node0_action N_SetUnreleaseMessageRouting_Node0_action --> E_SetUnreleaseMessageRouting S_SetUnreleaseMessageRouting --> N_SetUnreleaseMessageRouting_Node0 N_SetUnreleaseMessageRouting_Node1{"Unrelease message routing is
configured"}:::decision N_SetUnreleaseMessageRouting_Node1_action["Message is routed to default
destinations and cancel-specific
Merlin IDs"]:::main N_SetUnreleaseMessageRouting_Node1 -- Yes --> N_SetUnreleaseMessageRouting_Node1_action N_SetUnreleaseMessageRouting_Node1_action --> E_SetUnreleaseMessageRouting N_SetUnreleaseMessageRouting_Node0 -- No --> N_SetUnreleaseMessageRouting_Node1 N_SetUnreleaseMessageRouting_Node1 -- No --> E_SetUnreleaseMessageRouting
destinations"}:::decision N_SetUnreleaseMessageRouting_Node0_action["The message is set to route with
default Merlin IDs and
cancel-specific Merlin IDs"]:::main N_SetUnreleaseMessageRouting_Node0 -- Yes --> N_SetUnreleaseMessageRouting_Node0_action N_SetUnreleaseMessageRouting_Node0_action --> E_SetUnreleaseMessageRouting S_SetUnreleaseMessageRouting --> N_SetUnreleaseMessageRouting_Node0 N_SetUnreleaseMessageRouting_Node1{"Unrelease message routing is
configured"}:::decision N_SetUnreleaseMessageRouting_Node1_action["Message is routed to default
destinations and cancel-specific
Merlin IDs"]:::main N_SetUnreleaseMessageRouting_Node1 -- Yes --> N_SetUnreleaseMessageRouting_Node1_action N_SetUnreleaseMessageRouting_Node1_action --> E_SetUnreleaseMessageRouting N_SetUnreleaseMessageRouting_Node0 -- No --> N_SetUnreleaseMessageRouting_Node1 N_SetUnreleaseMessageRouting_Node1 -- No --> E_SetUnreleaseMessageRouting
File: GCX016.cbl
GIVEN:
A message has been classified as unrelease type
WHEN:
The system configures routing destinations
THEN:
- The message is set to route with default merlin ids
- Cancel-specific merlin ids
File: GCX016.cbl
GIVEN:
Message type is identified as cargo unrelease
WHEN:
Unrelease message routing is configured
THEN:
- Message is routed to default destinations
- Cancel-specific merlin ids
β Consolidated Acceptance Criteria
- The system configures routing destinations → the message is set to route to station-specific Merlin IDs only
- Release message routing is configured → message is routed only to station-specific Merlin IDs
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetReleaseMessageRouting(["Start Step"])
E_SetReleaseMessageRouting(["End Step"])
N_SetReleaseMessageRouting_Node0{"The system configures routing
destinations"}:::decision N_SetReleaseMessageRouting_Node0_action["The message is set to route to
station-specific Merlin IDs only"]:::main N_SetReleaseMessageRouting_Node0 -- Yes --> N_SetReleaseMessageRouting_Node0_action N_SetReleaseMessageRouting_Node0_action --> E_SetReleaseMessageRouting S_SetReleaseMessageRouting --> N_SetReleaseMessageRouting_Node0 N_SetReleaseMessageRouting_Node1{"Release message routing is
configured"}:::decision N_SetReleaseMessageRouting_Node1_action["Message is routed only to
station-specific Merlin IDs"]:::main N_SetReleaseMessageRouting_Node1 -- Yes --> N_SetReleaseMessageRouting_Node1_action N_SetReleaseMessageRouting_Node1_action --> E_SetReleaseMessageRouting N_SetReleaseMessageRouting_Node0 -- No --> N_SetReleaseMessageRouting_Node1 N_SetReleaseMessageRouting_Node1 -- No --> E_SetReleaseMessageRouting
destinations"}:::decision N_SetReleaseMessageRouting_Node0_action["The message is set to route to
station-specific Merlin IDs only"]:::main N_SetReleaseMessageRouting_Node0 -- Yes --> N_SetReleaseMessageRouting_Node0_action N_SetReleaseMessageRouting_Node0_action --> E_SetReleaseMessageRouting S_SetReleaseMessageRouting --> N_SetReleaseMessageRouting_Node0 N_SetReleaseMessageRouting_Node1{"Release message routing is
configured"}:::decision N_SetReleaseMessageRouting_Node1_action["Message is routed only to
station-specific Merlin IDs"]:::main N_SetReleaseMessageRouting_Node1 -- Yes --> N_SetReleaseMessageRouting_Node1_action N_SetReleaseMessageRouting_Node1_action --> E_SetReleaseMessageRouting N_SetReleaseMessageRouting_Node0 -- No --> N_SetReleaseMessageRouting_Node1 N_SetReleaseMessageRouting_Node1 -- No --> E_SetReleaseMessageRouting
File: GCX016.cbl
GIVEN:
A message has been classified as release type
WHEN:
The system configures routing destinations
THEN:
The message is set to route to station-specific Merlin IDs only
File: GCX016.cbl
GIVEN:
Message type is identified as cargo release
WHEN:
Release message routing is configured
THEN:
Message is routed only to station-specific Merlin IDs
β Consolidated Acceptance Criteria
- The system configures routing destinations → equipment type validation is performed before setting routing destinations
- Export message routing is configured → message routing is set with equipment type validation for containers and trailers
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetExportMessageRouting(["Start Step"])
E_SetExportMessageRouting(["End Step"])
N_SetExportMessageRouting_Node0{"The system configures routing
destinations"}:::decision N_SetExportMessageRouting_Node0_action["Equipment type validation is
performed before setting routing
destinations"]:::main N_SetExportMessageRouting_Node0 -- Yes --> N_SetExportMessageRouting_Node0_action N_SetExportMessageRouting_Node0_action --> E_SetExportMessageRouting S_SetExportMessageRouting --> N_SetExportMessageRouting_Node0 N_SetExportMessageRouting_Node1{"Export message routing is
configured"}:::decision N_SetExportMessageRouting_Node1_action["Message routing is set with
equipment type validation for
containers and trailers"]:::main N_SetExportMessageRouting_Node1 -- Yes --> N_SetExportMessageRouting_Node1_action N_SetExportMessageRouting_Node1_action --> E_SetExportMessageRouting N_SetExportMessageRouting_Node0 -- No --> N_SetExportMessageRouting_Node1 N_SetExportMessageRouting_Node1 -- No --> E_SetExportMessageRouting
destinations"}:::decision N_SetExportMessageRouting_Node0_action["Equipment type validation is
performed before setting routing
destinations"]:::main N_SetExportMessageRouting_Node0 -- Yes --> N_SetExportMessageRouting_Node0_action N_SetExportMessageRouting_Node0_action --> E_SetExportMessageRouting S_SetExportMessageRouting --> N_SetExportMessageRouting_Node0 N_SetExportMessageRouting_Node1{"Export message routing is
configured"}:::decision N_SetExportMessageRouting_Node1_action["Message routing is set with
equipment type validation for
containers and trailers"]:::main N_SetExportMessageRouting_Node1 -- Yes --> N_SetExportMessageRouting_Node1_action N_SetExportMessageRouting_Node1_action --> E_SetExportMessageRouting N_SetExportMessageRouting_Node0 -- No --> N_SetExportMessageRouting_Node1 N_SetExportMessageRouting_Node1 -- No --> E_SetExportMessageRouting
File: GCX016.cbl
GIVEN:
A message has been classified as export type
WHEN:
The system configures routing destinations
THEN:
Equipment type validation is performed before setting routing destinations
File: GCX016.cbl
GIVEN:
Message type is identified as export
WHEN:
Export message routing is configured
THEN:
- Message routing is set with equipment type validation for containers
- Trailers
β Consolidated Acceptance Criteria
- The system validates the user codes → valid user codes proceed to primary destination routing and invalid user codes are handled by the invalid user handler
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UserCodeValid(["Start Step"])
E_UserCodeValid(["End Step"])
N_UserCodeValid_Node0{"The system validates the user codes"}:::decision
N_UserCodeValid_Node0_action["Valid user codes proceed to primary
destination routing and invalid user
codes are handled by the invalid
user handler"]:::main N_UserCodeValid_Node0 -- Yes --> N_UserCodeValid_Node0_action N_UserCodeValid_Node0_action --> E_UserCodeValid S_UserCodeValid --> N_UserCodeValid_Node0 N_UserCodeValid_Node0 -- No --> E_UserCodeValid
destination routing and invalid user
codes are handled by the invalid
user handler"]:::main N_UserCodeValid_Node0 -- Yes --> N_UserCodeValid_Node0_action N_UserCodeValid_Node0_action --> E_UserCodeValid S_UserCodeValid --> N_UserCodeValid_Node0 N_UserCodeValid_Node0 -- No --> E_UserCodeValid
File: GCX016.cbl
GIVEN:
Destination user codes have been determined for message routing
WHEN:
The system validates the user codes
THEN:
- Valid user codes proceed to primary destination routing
- Invalid user codes are handled by the invalid user handler
β Consolidated Acceptance Criteria
- The system processes the invalid user code → a default user code is set and the message is routed to multiple destinations
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RoutetoInvalidUserHandler(["Start Step"])
E_RoutetoInvalidUserHandler(["End Step"])
N_RoutetoInvalidUserHandler_Node0{"The system processes the invalid
user code"}:::decision N_RoutetoInvalidUserHandler_Node0_action["A default user code is set and the
message is routed to multiple
destinations"]:::exclusion N_RoutetoInvalidUserHandler_Node0 -- Yes -->|Alternative| N_RoutetoInvalidUserHandler_Node0_action N_RoutetoInvalidUserHandler_Node0_action --> E_RoutetoInvalidUserHandler S_RoutetoInvalidUserHandler --> N_RoutetoInvalidUserHandler_Node0 N_RoutetoInvalidUserHandler_Node0 -- No --> E_RoutetoInvalidUserHandler
user code"}:::decision N_RoutetoInvalidUserHandler_Node0_action["A default user code is set and the
message is routed to multiple
destinations"]:::exclusion N_RoutetoInvalidUserHandler_Node0 -- Yes -->|Alternative| N_RoutetoInvalidUserHandler_Node0_action N_RoutetoInvalidUserHandler_Node0_action --> E_RoutetoInvalidUserHandler S_RoutetoInvalidUserHandler --> N_RoutetoInvalidUserHandler_Node0 N_RoutetoInvalidUserHandler_Node0 -- No --> E_RoutetoInvalidUserHandler
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
A user code has been determined to be invalid
WHEN:
The system processes the invalid user code
THEN:
- A default user code is set
- The message is routed to multiple destinations
β Consolidated Acceptance Criteria
- The system routes the message → the message is routed to multiple destinations using the valid user code
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RoutetoPrimaryDestination(["Start Step"])
E_RoutetoPrimaryDestination(["End Step"])
N_RoutetoPrimaryDestination_Node0{"The system routes the message"}:::decision
N_RoutetoPrimaryDestination_Node0_action["The message is routed to multiple
destinations using the valid user
code"]:::main N_RoutetoPrimaryDestination_Node0 -- Yes --> N_RoutetoPrimaryDestination_Node0_action N_RoutetoPrimaryDestination_Node0_action --> E_RoutetoPrimaryDestination S_RoutetoPrimaryDestination --> N_RoutetoPrimaryDestination_Node0 N_RoutetoPrimaryDestination_Node0 -- No --> E_RoutetoPrimaryDestination
destinations using the valid user
code"]:::main N_RoutetoPrimaryDestination_Node0 -- Yes --> N_RoutetoPrimaryDestination_Node0_action N_RoutetoPrimaryDestination_Node0_action --> E_RoutetoPrimaryDestination S_RoutetoPrimaryDestination --> N_RoutetoPrimaryDestination_Node0 N_RoutetoPrimaryDestination_Node0 -- No --> E_RoutetoPrimaryDestination
File: GCX016.cbl
GIVEN:
A user code has been validated as valid
WHEN:
The system routes the message
THEN:
The message is routed to multiple destinations using the valid user code
β Consolidated Acceptance Criteria
- If if the message is container type specific → container type specific messages are routed to USEXP basket and non-container type messages are routed to standard basket
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ContainerTypeSpecific(["Start Step"])
E_ContainerTypeSpecific(["End Step"])
N_ContainerTypeSpecific_Node0{"The system evaluates if the message
is container type specific"}:::decision N_ContainerTypeSpecific_Node0_action["Container type specific messages
are routed to USEXP basket and
non-container type messages are
routed to standard basket"]:::main N_ContainerTypeSpecific_Node0 -- Yes --> N_ContainerTypeSpecific_Node0_action N_ContainerTypeSpecific_Node0_action --> E_ContainerTypeSpecific S_ContainerTypeSpecific --> N_ContainerTypeSpecific_Node0 N_ContainerTypeSpecific_Node0 -- No --> E_ContainerTypeSpecific
is container type specific"}:::decision N_ContainerTypeSpecific_Node0_action["Container type specific messages
are routed to USEXP basket and
non-container type messages are
routed to standard basket"]:::main N_ContainerTypeSpecific_Node0 -- Yes --> N_ContainerTypeSpecific_Node0_action N_ContainerTypeSpecific_Node0_action --> E_ContainerTypeSpecific S_ContainerTypeSpecific --> N_ContainerTypeSpecific_Node0 N_ContainerTypeSpecific_Node0 -- No --> E_ContainerTypeSpecific
File: GCX016.cbl
GIVEN:
A message is being routed to multiple destinations
WHEN:
The system evaluates if the message is container type specific
THEN:
- Container type specific messages are routed to usexp basket
- Non-container type messages are routed to standard basket
β Consolidated Acceptance Criteria
- The system routes the message → the message is routed to the standard basket for general processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RoutetoStandardBasket(["Start Step"])
E_RoutetoStandardBasket(["End Step"])
N_RoutetoStandardBasket_Node0{"The system routes the message"}:::decision
N_RoutetoStandardBasket_Node0_action["The message is routed to the
standard basket for general
processing"]:::main N_RoutetoStandardBasket_Node0 -- Yes --> N_RoutetoStandardBasket_Node0_action N_RoutetoStandardBasket_Node0_action --> E_RoutetoStandardBasket S_RoutetoStandardBasket --> N_RoutetoStandardBasket_Node0 N_RoutetoStandardBasket_Node0 -- No --> E_RoutetoStandardBasket
standard basket for general
processing"]:::main N_RoutetoStandardBasket_Node0 -- Yes --> N_RoutetoStandardBasket_Node0_action N_RoutetoStandardBasket_Node0_action --> E_RoutetoStandardBasket S_RoutetoStandardBasket --> N_RoutetoStandardBasket_Node0 N_RoutetoStandardBasket_Node0 -- No --> E_RoutetoStandardBasket
File: GCX016.cbl
GIVEN:
A message has been determined to be non-container type specific
WHEN:
The system routes the message
THEN:
The message is routed to the standard basket for general processing
β Consolidated Acceptance Criteria
- The system processes the message for final formatting → appropriate keywords are assigned to the message for categorization
- The system processes message content for keyword assignment → relevant keywords are assigned based on message type, cargo details, and disposition codes
- The message is ready for final formatting and delivery → the system sets appropriate message keywords based on message type and content for proper categorization
- Message keyword assignment is performed → appropriate keywords are assigned based on message type and content
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetMessageKeywords(["Start Step"])
E_SetMessageKeywords(["End Step"])
N_SetMessageKeywords_Node0{"The system processes the message
for final formatting"}:::decision N_SetMessageKeywords_Node0_action["Appropriate keywords are assigned
to the message for categorization"]:::main N_SetMessageKeywords_Node0 -- Yes --> N_SetMessageKeywords_Node0_action N_SetMessageKeywords_Node0_action --> E_SetMessageKeywords S_SetMessageKeywords --> N_SetMessageKeywords_Node0 N_SetMessageKeywords_Node1{"The system processes message
content for keyword assignment"}:::decision N_SetMessageKeywords_Node1_action["Relevant keywords are assigned
based on message type, cargo
details, and disposition codes"]:::main N_SetMessageKeywords_Node1 -- Yes --> N_SetMessageKeywords_Node1_action N_SetMessageKeywords_Node1_action --> E_SetMessageKeywords N_SetMessageKeywords_Node0 -- No --> N_SetMessageKeywords_Node1 N_SetMessageKeywords_Node2{"The message is ready for final
formatting and delivery"}:::decision N_SetMessageKeywords_Node2_action["The system sets appropriate message
keywords based on message type and
content for proper categorization"]:::main N_SetMessageKeywords_Node2 -- Yes --> N_SetMessageKeywords_Node2_action N_SetMessageKeywords_Node2_action --> E_SetMessageKeywords N_SetMessageKeywords_Node1 -- No --> N_SetMessageKeywords_Node2 N_SetMessageKeywords_Node3{"Message keyword assignment is
performed"}:::decision N_SetMessageKeywords_Node3_action["Appropriate keywords are assigned
based on message type and content"]:::main N_SetMessageKeywords_Node3 -- Yes --> N_SetMessageKeywords_Node3_action N_SetMessageKeywords_Node3_action --> E_SetMessageKeywords N_SetMessageKeywords_Node2 -- No --> N_SetMessageKeywords_Node3 N_SetMessageKeywords_Node3 -- No --> E_SetMessageKeywords
for final formatting"}:::decision N_SetMessageKeywords_Node0_action["Appropriate keywords are assigned
to the message for categorization"]:::main N_SetMessageKeywords_Node0 -- Yes --> N_SetMessageKeywords_Node0_action N_SetMessageKeywords_Node0_action --> E_SetMessageKeywords S_SetMessageKeywords --> N_SetMessageKeywords_Node0 N_SetMessageKeywords_Node1{"The system processes message
content for keyword assignment"}:::decision N_SetMessageKeywords_Node1_action["Relevant keywords are assigned
based on message type, cargo
details, and disposition codes"]:::main N_SetMessageKeywords_Node1 -- Yes --> N_SetMessageKeywords_Node1_action N_SetMessageKeywords_Node1_action --> E_SetMessageKeywords N_SetMessageKeywords_Node0 -- No --> N_SetMessageKeywords_Node1 N_SetMessageKeywords_Node2{"The message is ready for final
formatting and delivery"}:::decision N_SetMessageKeywords_Node2_action["The system sets appropriate message
keywords based on message type and
content for proper categorization"]:::main N_SetMessageKeywords_Node2 -- Yes --> N_SetMessageKeywords_Node2_action N_SetMessageKeywords_Node2_action --> E_SetMessageKeywords N_SetMessageKeywords_Node1 -- No --> N_SetMessageKeywords_Node2 N_SetMessageKeywords_Node3{"Message keyword assignment is
performed"}:::decision N_SetMessageKeywords_Node3_action["Appropriate keywords are assigned
based on message type and content"]:::main N_SetMessageKeywords_Node3 -- Yes --> N_SetMessageKeywords_Node3_action N_SetMessageKeywords_Node3_action --> E_SetMessageKeywords N_SetMessageKeywords_Node2 -- No --> N_SetMessageKeywords_Node3 N_SetMessageKeywords_Node3 -- No --> E_SetMessageKeywords
File: GCX016.cbl
GIVEN:
A message has been routed to its destination basket
WHEN:
The system processes the message for final formatting
THEN:
Appropriate keywords are assigned to the message for categorization
File: GCX016.cbl
GIVEN:
Message delivery method has been determined and basic message structure prepared
WHEN:
The system processes message content for keyword assignment
THEN:
Relevant keywords are assigned based on message type, cargo details, and disposition codes
File: GCX016.cbl
GIVEN:
A message has been validated and destination has been confirmed
WHEN:
- The message is ready for final formatting
- Delivery
THEN:
- The system sets appropriate message keywords based on message type
- Content for proper categorization
File: GCX016.cbl
GIVEN:
User code validation is complete
WHEN:
Message keyword assignment is performed
THEN:
- Appropriate keywords are assigned based on message type
- Content
β Consolidated Acceptance Criteria
- The system formats the message for delivery → the subject line is formatted according to the message type and content requirements
- The system formats the message subject line → subject line includes cargo identifier, disposition code, and action type for easy identification
- The system prepares the final message format → the system formats the subject line with relevant business information including message type and key identifiers
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_FormatSubjectLine(["Start Step"])
E_FormatSubjectLine(["End Step"])
N_FormatSubjectLine_Node0{"The system formats the message for
delivery"}:::decision N_FormatSubjectLine_Node0_action["The subject line is formatted
according to the message type and
content requirements"]:::main N_FormatSubjectLine_Node0 -- Yes --> N_FormatSubjectLine_Node0_action N_FormatSubjectLine_Node0_action --> E_FormatSubjectLine S_FormatSubjectLine --> N_FormatSubjectLine_Node0 N_FormatSubjectLine_Node1{"The system formats the message
subject line"}:::decision N_FormatSubjectLine_Node1_action["Subject line includes cargo
identifier, disposition code, and
action type for easy identification"]:::main N_FormatSubjectLine_Node1 -- Yes --> N_FormatSubjectLine_Node1_action N_FormatSubjectLine_Node1_action --> E_FormatSubjectLine N_FormatSubjectLine_Node0 -- No --> N_FormatSubjectLine_Node1 N_FormatSubjectLine_Node2{"The system prepares the final
message format"}:::decision N_FormatSubjectLine_Node2_action["The system formats the subject line
with relevant business information
including message type and key
identifiers"]:::main N_FormatSubjectLine_Node2 -- Yes --> N_FormatSubjectLine_Node2_action N_FormatSubjectLine_Node2_action --> E_FormatSubjectLine N_FormatSubjectLine_Node1 -- No --> N_FormatSubjectLine_Node2 N_FormatSubjectLine_Node2 -- No --> E_FormatSubjectLine
delivery"}:::decision N_FormatSubjectLine_Node0_action["The subject line is formatted
according to the message type and
content requirements"]:::main N_FormatSubjectLine_Node0 -- Yes --> N_FormatSubjectLine_Node0_action N_FormatSubjectLine_Node0_action --> E_FormatSubjectLine S_FormatSubjectLine --> N_FormatSubjectLine_Node0 N_FormatSubjectLine_Node1{"The system formats the message
subject line"}:::decision N_FormatSubjectLine_Node1_action["Subject line includes cargo
identifier, disposition code, and
action type for easy identification"]:::main N_FormatSubjectLine_Node1 -- Yes --> N_FormatSubjectLine_Node1_action N_FormatSubjectLine_Node1_action --> E_FormatSubjectLine N_FormatSubjectLine_Node0 -- No --> N_FormatSubjectLine_Node1 N_FormatSubjectLine_Node2{"The system prepares the final
message format"}:::decision N_FormatSubjectLine_Node2_action["The system formats the subject line
with relevant business information
including message type and key
identifiers"]:::main N_FormatSubjectLine_Node2 -- Yes --> N_FormatSubjectLine_Node2_action N_FormatSubjectLine_Node2_action --> E_FormatSubjectLine N_FormatSubjectLine_Node1 -- No --> N_FormatSubjectLine_Node2 N_FormatSubjectLine_Node2 -- No --> E_FormatSubjectLine
File: GCX016.cbl
GIVEN:
Message keywords have been set
WHEN:
The system formats the message for delivery
THEN:
- The subject line is formatted according to the message type
- Content requirements
File: GCX016.cbl
GIVEN:
Message keywords have been set and cargo information is available
WHEN:
The system formats the message subject line
THEN:
Subject line includes cargo identifier, disposition code, and action type for easy identification
File: GCX016.cbl
GIVEN:
A message has keywords set and is ready for delivery formatting
WHEN:
The system prepares the final message format
THEN:
- The system formats the subject line with relevant business information including message type
- Key identifiers
β Consolidated Acceptance Criteria
- The system checks the message type → if message type equals INFO, proceed with info message distribution, otherwise skip info message processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MessageTypeINFO(["Start Step"])
E_MessageTypeINFO(["End Step"])
N_MessageTypeINFO_Node0{"The system checks the message type"}:::decision
N_MessageTypeINFO_Node0_action["If message type equals INFO,
proceed with info message
distribution, otherwise skip info
message processing"]:::main N_MessageTypeINFO_Node0 -- Yes --> N_MessageTypeINFO_Node0_action N_MessageTypeINFO_Node0_action --> E_MessageTypeINFO S_MessageTypeINFO --> N_MessageTypeINFO_Node0 N_MessageTypeINFO_Node0 -- No --> E_MessageTypeINFO
proceed with info message
distribution, otherwise skip info
message processing"]:::main N_MessageTypeINFO_Node0 -- Yes --> N_MessageTypeINFO_Node0_action N_MessageTypeINFO_Node0_action --> E_MessageTypeINFO S_MessageTypeINFO --> N_MessageTypeINFO_Node0 N_MessageTypeINFO_Node0 -- No --> E_MessageTypeINFO
File: GCX016.cbl
GIVEN:
A message is ready for distribution
WHEN:
The system checks the message type
THEN:
If message type equals INFO, proceed with info message distribution, otherwise skip info message processing
β Consolidated Acceptance Criteria
- The system needs to identify message recipients → retrieve configured user list from GCSTBRT user configuration table for info message distribution
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RetrieveConfiguredUserList(["Start Step"])
E_RetrieveConfiguredUserList(["End Step"])
N_RetrieveConfiguredUserList_Node0{"The system needs to identify
message recipients"}:::decision N_RetrieveConfiguredUserList_Node0_action["Retrieve configured user list from
GCSTBRT user configuration table for
info message distribution"]:::main N_RetrieveConfiguredUserList_Node0 -- Yes --> N_RetrieveConfiguredUserList_Node0_action N_RetrieveConfiguredUserList_Node0_action --> E_RetrieveConfiguredUserList S_RetrieveConfiguredUserList --> N_RetrieveConfiguredUserList_Node0 N_RetrieveConfiguredUserList_Node0 -- No --> E_RetrieveConfiguredUserList
message recipients"}:::decision N_RetrieveConfiguredUserList_Node0_action["Retrieve configured user list from
GCSTBRT user configuration table for
info message distribution"]:::main N_RetrieveConfiguredUserList_Node0 -- Yes --> N_RetrieveConfiguredUserList_Node0_action N_RetrieveConfiguredUserList_Node0_action --> E_RetrieveConfiguredUserList S_RetrieveConfiguredUserList --> N_RetrieveConfiguredUserList_Node0 N_RetrieveConfiguredUserList_Node0 -- No --> E_RetrieveConfiguredUserList
File: GCX016.cbl
GIVEN:
Message type is confirmed as INFO
WHEN:
The system needs to identify message recipients
THEN:
Retrieve configured user list from GCSTBRT user configuration table for info message distribution
β Consolidated Acceptance Criteria
- The system prepares the message subject line → format subject line for info message according to business message formatting standards
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_FormatSubjectLineforInfoMessage(["Start Step"])
E_FormatSubjectLineforInfoMessage(["End Step"])
N_FormatSubjectLineforInfoMessage_Node0{"The system prepares the message
subject line"}:::decision N_FormatSubjectLineforInfoMessage_Node0_action["Format subject line for info
message according to business
message formatting standards"]:::main N_FormatSubjectLineforInfoMessage_Node0 -- Yes --> N_FormatSubjectLineforInfoMessage_Node0_action N_FormatSubjectLineforInfoMessage_Node0_action --> E_FormatSubjectLineforInfoMessage S_FormatSubjectLineforInfoMessage --> N_FormatSubjectLineforInfoMessage_Node0 N_FormatSubjectLineforInfoMessage_Node0 -- No --> E_FormatSubjectLineforInfoMessage
subject line"}:::decision N_FormatSubjectLineforInfoMessage_Node0_action["Format subject line for info
message according to business
message formatting standards"]:::main N_FormatSubjectLineforInfoMessage_Node0 -- Yes --> N_FormatSubjectLineforInfoMessage_Node0_action N_FormatSubjectLineforInfoMessage_Node0_action --> E_FormatSubjectLineforInfoMessage S_FormatSubjectLineforInfoMessage --> N_FormatSubjectLineforInfoMessage_Node0 N_FormatSubjectLineforInfoMessage_Node0 -- No --> E_FormatSubjectLineforInfoMessage
File: GCX016.cbl
GIVEN:
Message keywords have been set for categorization
WHEN:
The system prepares the message subject line
THEN:
Format subject line for info message according to business message formatting standards
β Consolidated Acceptance Criteria
- The system processes each user in the configured user list → if user is valid and active, proceed to send message to user, otherwise route to default user with notification
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UserValid(["Start Step"])
E_UserValid(["End Step"])
N_UserValid_Node0{"The system processes each user in
the configured user list"}:::decision N_UserValid_Node0_action["If user is valid and active,
proceed to send message to user,
otherwise route to default user with
notification"]:::main N_UserValid_Node0 -- Yes --> N_UserValid_Node0_action N_UserValid_Node0_action --> E_UserValid S_UserValid --> N_UserValid_Node0 N_UserValid_Node0 -- No --> E_UserValid
the configured user list"}:::decision N_UserValid_Node0_action["If user is valid and active,
proceed to send message to user,
otherwise route to default user with
notification"]:::main N_UserValid_Node0 -- Yes --> N_UserValid_Node0_action N_UserValid_Node0_action --> E_UserValid S_UserValid --> N_UserValid_Node0 N_UserValid_Node0 -- No --> E_UserValid
File: GCX016.cbl
GIVEN:
Subject line has been formatted for the info message
WHEN:
The system processes each user in the configured user list
THEN:
- If user is valid
- Active, proceed to send message to user, otherwise route to default user with notification
β Consolidated Acceptance Criteria
- The system delivers the informational message → send message to the configured valid user
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SendMessagetoConfiguredUser(["Start Step"])
E_SendMessagetoConfiguredUser(["End Step"])
N_SendMessagetoConfiguredUser_Node0{"The system delivers the
informational message"}:::decision N_SendMessagetoConfiguredUser_Node0_action["Send message to the configured
valid user"]:::main N_SendMessagetoConfiguredUser_Node0 -- Yes --> N_SendMessagetoConfiguredUser_Node0_action N_SendMessagetoConfiguredUser_Node0_action --> E_SendMessagetoConfiguredUser S_SendMessagetoConfiguredUser --> N_SendMessagetoConfiguredUser_Node0 N_SendMessagetoConfiguredUser_Node0 -- No --> E_SendMessagetoConfiguredUser
informational message"}:::decision N_SendMessagetoConfiguredUser_Node0_action["Send message to the configured
valid user"]:::main N_SendMessagetoConfiguredUser_Node0 -- Yes --> N_SendMessagetoConfiguredUser_Node0_action N_SendMessagetoConfiguredUser_Node0_action --> E_SendMessagetoConfiguredUser S_SendMessagetoConfiguredUser --> N_SendMessagetoConfiguredUser_Node0 N_SendMessagetoConfiguredUser_Node0 -- No --> E_SendMessagetoConfiguredUser
File: GCX016.cbl
GIVEN:
User has been validated as valid and active
WHEN:
The system delivers the informational message
THEN:
Send message to the configured valid user
β Consolidated Acceptance Criteria
- The system needs to deliver the informational message → route message to default user and include notification about invalid user configuration
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RoutetoDefaultUserwithNotification(["Start Step"])
E_RoutetoDefaultUserwithNotification(["End Step"])
N_RoutetoDefaultUserwithNotification_Node0{"The system needs to deliver the
informational message"}:::decision N_RoutetoDefaultUserwithNotification_Node0_action["Route message to default user and
include notification about invalid
user configuration"]:::main N_RoutetoDefaultUserwithNotification_Node0 -- Yes --> N_RoutetoDefaultUserwithNotification_Node0_action N_RoutetoDefaultUserwithNotification_Node0_action --> E_RoutetoDefaultUserwithNotification S_RoutetoDefaultUserwithNotification --> N_RoutetoDefaultUserwithNotification_Node0 N_RoutetoDefaultUserwithNotification_Node0 -- No --> E_RoutetoDefaultUserwithNotification
informational message"}:::decision N_RoutetoDefaultUserwithNotification_Node0_action["Route message to default user and
include notification about invalid
user configuration"]:::main N_RoutetoDefaultUserwithNotification_Node0 -- Yes --> N_RoutetoDefaultUserwithNotification_Node0_action N_RoutetoDefaultUserwithNotification_Node0_action --> E_RoutetoDefaultUserwithNotification S_RoutetoDefaultUserwithNotification --> N_RoutetoDefaultUserwithNotification_Node0 N_RoutetoDefaultUserwithNotification_Node0 -- No --> E_RoutetoDefaultUserwithNotification
File: GCX016.cbl
GIVEN:
User has been validated as invalid or inactive
WHEN:
The system needs to deliver the informational message
THEN:
- Route message to default user
- Include notification about invalid user configuration
β Consolidated Acceptance Criteria
- The system checks for remaining users in the list → if more users exist in configured list, continue processing next user, otherwise proceed to message distribution logging
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MoreUserstoProcess(["Start Step"])
E_MoreUserstoProcess(["End Step"])
N_MoreUserstoProcess_Node0{"The system checks for remaining
users in the list"}:::decision N_MoreUserstoProcess_Node0_action["If more users exist in configured
list, continue processing next user,
otherwise proceed to message
distribution logging"]:::main N_MoreUserstoProcess_Node0 -- Yes --> N_MoreUserstoProcess_Node0_action N_MoreUserstoProcess_Node0_action --> E_MoreUserstoProcess S_MoreUserstoProcess --> N_MoreUserstoProcess_Node0 N_MoreUserstoProcess_Node0 -- No --> E_MoreUserstoProcess
users in the list"}:::decision N_MoreUserstoProcess_Node0_action["If more users exist in configured
list, continue processing next user,
otherwise proceed to message
distribution logging"]:::main N_MoreUserstoProcess_Node0 -- Yes --> N_MoreUserstoProcess_Node0_action N_MoreUserstoProcess_Node0_action --> E_MoreUserstoProcess S_MoreUserstoProcess --> N_MoreUserstoProcess_Node0 N_MoreUserstoProcess_Node0 -- No --> E_MoreUserstoProcess
File: GCX016.cbl
GIVEN:
Message has been sent to current user or routed to default user
WHEN:
The system checks for remaining users in the list
THEN:
If more users exist in configured list, continue processing next user, otherwise proceed to message distribution logging
β Consolidated Acceptance Criteria
- The system completes info message distribution → log message distribution details including recipients and delivery status
- The system processes logging requirements for the distribution activity → distribution details including recipients, delivery methods, and timestamps are logged for audit purposes
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogMessageDistribution(["Start Step"])
E_LogMessageDistribution(["End Step"])
N_LogMessageDistribution_Node0{"The system completes info message
distribution"}:::decision N_LogMessageDistribution_Node0_action["Log message distribution details
including recipients and delivery
status"]:::main N_LogMessageDistribution_Node0 -- Yes --> N_LogMessageDistribution_Node0_action N_LogMessageDistribution_Node0_action --> E_LogMessageDistribution S_LogMessageDistribution --> N_LogMessageDistribution_Node0 N_LogMessageDistribution_Node1{"The system processes logging
requirements for the distribution
activity"}:::decision N_LogMessageDistribution_Node1_action["Distribution details including
recipients, delivery methods, and
timestamps are logged for audit
purposes"]:::main N_LogMessageDistribution_Node1 -- Yes --> N_LogMessageDistribution_Node1_action N_LogMessageDistribution_Node1_action --> E_LogMessageDistribution N_LogMessageDistribution_Node0 -- No --> N_LogMessageDistribution_Node1 N_LogMessageDistribution_Node1 -- No --> E_LogMessageDistribution
distribution"}:::decision N_LogMessageDistribution_Node0_action["Log message distribution details
including recipients and delivery
status"]:::main N_LogMessageDistribution_Node0 -- Yes --> N_LogMessageDistribution_Node0_action N_LogMessageDistribution_Node0_action --> E_LogMessageDistribution S_LogMessageDistribution --> N_LogMessageDistribution_Node0 N_LogMessageDistribution_Node1{"The system processes logging
requirements for the distribution
activity"}:::decision N_LogMessageDistribution_Node1_action["Distribution details including
recipients, delivery methods, and
timestamps are logged for audit
purposes"]:::main N_LogMessageDistribution_Node1 -- Yes --> N_LogMessageDistribution_Node1_action N_LogMessageDistribution_Node1_action --> E_LogMessageDistribution N_LogMessageDistribution_Node0 -- No --> N_LogMessageDistribution_Node1 N_LogMessageDistribution_Node1 -- No --> E_LogMessageDistribution
File: GCX016.cbl
GIVEN:
All configured users have been processed for message delivery
WHEN:
The system completes info message distribution
THEN:
- Log message distribution details including recipients
- Delivery status
File: GCX016.cbl
GIVEN:
All release message distributions have been completed
WHEN:
The system processes logging requirements for the distribution activity
THEN:
Distribution details including recipients, delivery methods, and timestamps are logged for audit purposes
β Consolidated Acceptance Criteria
- If the message type → the system identifies whether the message is an unrelease type and routes accordingly or completes processing for non-unrelease messages
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MessageTypeUnrelease(["Start Step"])
E_MessageTypeUnrelease(["End Step"])
N_MessageTypeUnrelease_Node0{"The system evaluates the message
type"}:::decision N_MessageTypeUnrelease_Node0_action["The system identifies whether the
message is an unrelease type and
routes accordingly or completes
processing for non-unrelease
messages"]:::main N_MessageTypeUnrelease_Node0 -- Yes --> N_MessageTypeUnrelease_Node0_action N_MessageTypeUnrelease_Node0_action --> E_MessageTypeUnrelease S_MessageTypeUnrelease --> N_MessageTypeUnrelease_Node0 N_MessageTypeUnrelease_Node0 -- No --> E_MessageTypeUnrelease
type"}:::decision N_MessageTypeUnrelease_Node0_action["The system identifies whether the
message is an unrelease type and
routes accordingly or completes
processing for non-unrelease
messages"]:::main N_MessageTypeUnrelease_Node0 -- Yes --> N_MessageTypeUnrelease_Node0_action N_MessageTypeUnrelease_Node0_action --> E_MessageTypeUnrelease S_MessageTypeUnrelease --> N_MessageTypeUnrelease_Node0 N_MessageTypeUnrelease_Node0 -- No --> E_MessageTypeUnrelease
File: GCX016.cbl
GIVEN:
A message has been received for processing
WHEN:
The system evaluates the message type
THEN:
- The system identifies whether the message is an unrelease type
- Routes accordingly or completes processing for non-unrelease messages
β Consolidated Acceptance Criteria
- If routing requirements → the system determines the appropriate target baskets for message delivery
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_DetermineTargetBaskets(["Start Step"])
E_DetermineTargetBaskets(["End Step"])
N_DetermineTargetBaskets_Node0{"The system evaluates routing
requirements"}:::decision N_DetermineTargetBaskets_Node0_action["The system determines the
appropriate target baskets for
message delivery"]:::main N_DetermineTargetBaskets_Node0 -- Yes --> N_DetermineTargetBaskets_Node0_action N_DetermineTargetBaskets_Node0_action --> E_DetermineTargetBaskets S_DetermineTargetBaskets --> N_DetermineTargetBaskets_Node0 N_DetermineTargetBaskets_Node0 -- No --> E_DetermineTargetBaskets
requirements"}:::decision N_DetermineTargetBaskets_Node0_action["The system determines the
appropriate target baskets for
message delivery"]:::main N_DetermineTargetBaskets_Node0 -- Yes --> N_DetermineTargetBaskets_Node0_action N_DetermineTargetBaskets_Node0_action --> E_DetermineTargetBaskets S_DetermineTargetBaskets --> N_DetermineTargetBaskets_Node0 N_DetermineTargetBaskets_Node0 -- No --> E_DetermineTargetBaskets
File: GCX016.cbl
GIVEN:
Unrelease message keywords have been set
WHEN:
The system evaluates routing requirements
THEN:
The system determines the appropriate target baskets for message delivery
β Consolidated Acceptance Criteria
- If the number of required destinations → the system routes to either a single primary basket or multiple baskets based on the destination count
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MultipleDestinations(["Start Step"])
E_MultipleDestinations(["End Step"])
N_MultipleDestinations_Node0{"The system evaluates the number of
required destinations"}:::decision N_MultipleDestinations_Node0_action["The system routes to either a
single primary basket or multiple
baskets based on the destination
count"]:::main N_MultipleDestinations_Node0 -- Yes --> N_MultipleDestinations_Node0_action N_MultipleDestinations_Node0_action --> E_MultipleDestinations S_MultipleDestinations --> N_MultipleDestinations_Node0 N_MultipleDestinations_Node0 -- No --> E_MultipleDestinations
required destinations"}:::decision N_MultipleDestinations_Node0_action["The system routes to either a
single primary basket or multiple
baskets based on the destination
count"]:::main N_MultipleDestinations_Node0 -- Yes --> N_MultipleDestinations_Node0_action N_MultipleDestinations_Node0_action --> E_MultipleDestinations S_MultipleDestinations --> N_MultipleDestinations_Node0 N_MultipleDestinations_Node0 -- No --> E_MultipleDestinations
File: GCX016.cbl
GIVEN:
Target baskets have been determined for the unrelease message
WHEN:
The system evaluates the number of required destinations
THEN:
The system routes to either a single primary basket or multiple baskets based on the destination count
β Consolidated Acceptance Criteria
- The primary basket has been identified → the system routes the unrelease message to the primary basket only
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RoutetoPrimaryBasket(["Start Step"])
E_RoutetoPrimaryBasket(["End Step"])
N_RoutetoPrimaryBasket_Node0{"The primary basket has been
identified"}:::decision N_RoutetoPrimaryBasket_Node0_action["The system routes the unrelease
message to the primary basket only"]:::main N_RoutetoPrimaryBasket_Node0 -- Yes --> N_RoutetoPrimaryBasket_Node0_action N_RoutetoPrimaryBasket_Node0_action --> E_RoutetoPrimaryBasket S_RoutetoPrimaryBasket --> N_RoutetoPrimaryBasket_Node0 N_RoutetoPrimaryBasket_Node0 -- No --> E_RoutetoPrimaryBasket
identified"}:::decision N_RoutetoPrimaryBasket_Node0_action["The system routes the unrelease
message to the primary basket only"]:::main N_RoutetoPrimaryBasket_Node0 -- Yes --> N_RoutetoPrimaryBasket_Node0_action N_RoutetoPrimaryBasket_Node0_action --> E_RoutetoPrimaryBasket S_RoutetoPrimaryBasket --> N_RoutetoPrimaryBasket_Node0 N_RoutetoPrimaryBasket_Node0 -- No --> E_RoutetoPrimaryBasket
File: GCX016.cbl
GIVEN:
The system has determined single destination routing is required
WHEN:
The primary basket has been identified
THEN:
The system routes the unrelease message to the primary basket only
β Consolidated Acceptance Criteria
- Multiple target baskets have been identified → the system routes the unrelease message to all designated baskets
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RoutetoMultipleBaskets(["Start Step"])
E_RoutetoMultipleBaskets(["End Step"])
N_RoutetoMultipleBaskets_Node0{"Multiple target baskets have been
identified"}:::decision N_RoutetoMultipleBaskets_Node0_action["The system routes the unrelease
message to all designated baskets"]:::main N_RoutetoMultipleBaskets_Node0 -- Yes --> N_RoutetoMultipleBaskets_Node0_action N_RoutetoMultipleBaskets_Node0_action --> E_RoutetoMultipleBaskets S_RoutetoMultipleBaskets --> N_RoutetoMultipleBaskets_Node0 N_RoutetoMultipleBaskets_Node0 -- No --> E_RoutetoMultipleBaskets
identified"}:::decision N_RoutetoMultipleBaskets_Node0_action["The system routes the unrelease
message to all designated baskets"]:::main N_RoutetoMultipleBaskets_Node0 -- Yes --> N_RoutetoMultipleBaskets_Node0_action N_RoutetoMultipleBaskets_Node0_action --> E_RoutetoMultipleBaskets S_RoutetoMultipleBaskets --> N_RoutetoMultipleBaskets_Node0 N_RoutetoMultipleBaskets_Node0 -- No --> E_RoutetoMultipleBaskets
File: GCX016.cbl
GIVEN:
The system has determined multiple destination routing is required
WHEN:
Multiple target baskets have been identified
THEN:
The system routes the unrelease message to all designated baskets
β Consolidated Acceptance Criteria
- If the user ID for routing → the system routes to the specified user if valid or to the default user if invalid
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UserIDValid(["Start Step"])
E_UserIDValid(["End Step"])
N_UserIDValid_Node0{"The system evaluates the user ID
for routing"}:::decision N_UserIDValid_Node0_action["The system routes to the specified
user if valid or to the default user
if invalid"]:::main N_UserIDValid_Node0 -- Yes --> N_UserIDValid_Node0_action N_UserIDValid_Node0_action --> E_UserIDValid S_UserIDValid --> N_UserIDValid_Node0 N_UserIDValid_Node0 -- No --> E_UserIDValid
for routing"}:::decision N_UserIDValid_Node0_action["The system routes to the specified
user if valid or to the default user
if invalid"]:::main N_UserIDValid_Node0 -- Yes --> N_UserIDValid_Node0_action N_UserIDValid_Node0_action --> E_UserIDValid S_UserIDValid --> N_UserIDValid_Node0 N_UserIDValid_Node0 -- No --> E_UserIDValid
File: GCX016.cbl
GIVEN:
Basket routing has been determined for the unrelease message
WHEN:
The system evaluates the user ID for routing
THEN:
The system routes to the specified user if valid or to the default user if invalid
β Consolidated Acceptance Criteria
- The system processes user-specific routing → the system routes the unrelease message to the specified user
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RoutetoSpecifiedUser(["Start Step"])
E_RoutetoSpecifiedUser(["End Step"])
N_RoutetoSpecifiedUser_Node0{"The system processes user-specific
routing"}:::decision N_RoutetoSpecifiedUser_Node0_action["The system routes the unrelease
message to the specified user"]:::main N_RoutetoSpecifiedUser_Node0 -- Yes --> N_RoutetoSpecifiedUser_Node0_action N_RoutetoSpecifiedUser_Node0_action --> E_RoutetoSpecifiedUser S_RoutetoSpecifiedUser --> N_RoutetoSpecifiedUser_Node0 N_RoutetoSpecifiedUser_Node0 -- No --> E_RoutetoSpecifiedUser
routing"}:::decision N_RoutetoSpecifiedUser_Node0_action["The system routes the unrelease
message to the specified user"]:::main N_RoutetoSpecifiedUser_Node0 -- Yes --> N_RoutetoSpecifiedUser_Node0_action N_RoutetoSpecifiedUser_Node0_action --> E_RoutetoSpecifiedUser S_RoutetoSpecifiedUser --> N_RoutetoSpecifiedUser_Node0 N_RoutetoSpecifiedUser_Node0 -- No --> E_RoutetoSpecifiedUser
File: GCX016.cbl
GIVEN:
The user ID has been validated as valid
WHEN:
The system processes user-specific routing
THEN:
The system routes the unrelease message to the specified user
β Consolidated Acceptance Criteria
- The system processes default routing → the system routes the unrelease message to the default user
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RoutetoDefaultUser(["Start Step"])
E_RoutetoDefaultUser(["End Step"])
N_RoutetoDefaultUser_Node0{"The system processes default
routing"}:::decision N_RoutetoDefaultUser_Node0_action["The system routes the unrelease
message to the default user"]:::main N_RoutetoDefaultUser_Node0 -- Yes --> N_RoutetoDefaultUser_Node0_action N_RoutetoDefaultUser_Node0_action --> E_RoutetoDefaultUser S_RoutetoDefaultUser --> N_RoutetoDefaultUser_Node0 N_RoutetoDefaultUser_Node0 -- No --> E_RoutetoDefaultUser
routing"}:::decision N_RoutetoDefaultUser_Node0_action["The system routes the unrelease
message to the default user"]:::main N_RoutetoDefaultUser_Node0 -- Yes --> N_RoutetoDefaultUser_Node0_action N_RoutetoDefaultUser_Node0_action --> E_RoutetoDefaultUser S_RoutetoDefaultUser --> N_RoutetoDefaultUser_Node0 N_RoutetoDefaultUser_Node0 -- No --> E_RoutetoDefaultUser
File: GCX016.cbl
GIVEN:
The user ID has been validated as invalid
WHEN:
The system processes default routing
THEN:
The system routes the unrelease message to the default user
β Consolidated Acceptance Criteria
- The system prepares routing information → the system adds the appropriate user code to the message routing configuration
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AddUserCodetoRouting(["Start Step"])
E_AddUserCodetoRouting(["End Step"])
N_AddUserCodetoRouting_Node0{"The system prepares routing
information"}:::decision N_AddUserCodetoRouting_Node0_action["The system adds the appropriate
user code to the message routing
configuration"]:::main N_AddUserCodetoRouting_Node0 -- Yes --> N_AddUserCodetoRouting_Node0_action N_AddUserCodetoRouting_Node0_action --> E_AddUserCodetoRouting S_AddUserCodetoRouting --> N_AddUserCodetoRouting_Node0 N_AddUserCodetoRouting_Node0 -- No --> E_AddUserCodetoRouting
information"}:::decision N_AddUserCodetoRouting_Node0_action["The system adds the appropriate
user code to the message routing
configuration"]:::main N_AddUserCodetoRouting_Node0 -- Yes --> N_AddUserCodetoRouting_Node0_action N_AddUserCodetoRouting_Node0_action --> E_AddUserCodetoRouting S_AddUserCodetoRouting --> N_AddUserCodetoRouting_Node0 N_AddUserCodetoRouting_Node0 -- No --> E_AddUserCodetoRouting
File: GCX016.cbl
GIVEN:
User routing has been determined (either specified or default user)
WHEN:
The system prepares routing information
THEN:
The system adds the appropriate user code to the message routing configuration
β Consolidated Acceptance Criteria
- If additional user requirements → the system either adds secondary users or proceeds to set message priority based on requirements
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AdditionalUsersRequired(["Start Step"])
E_AdditionalUsersRequired(["End Step"])
N_AdditionalUsersRequired_Node0{"The system evaluates additional
user requirements"}:::decision N_AdditionalUsersRequired_Node0_action["The system either adds secondary
users or proceeds to set message
priority based on requirements"]:::main N_AdditionalUsersRequired_Node0 -- Yes --> N_AdditionalUsersRequired_Node0_action N_AdditionalUsersRequired_Node0_action --> E_AdditionalUsersRequired S_AdditionalUsersRequired --> N_AdditionalUsersRequired_Node0 N_AdditionalUsersRequired_Node0 -- No --> E_AdditionalUsersRequired
user requirements"}:::decision N_AdditionalUsersRequired_Node0_action["The system either adds secondary
users or proceeds to set message
priority based on requirements"]:::main N_AdditionalUsersRequired_Node0 -- Yes --> N_AdditionalUsersRequired_Node0_action N_AdditionalUsersRequired_Node0_action --> E_AdditionalUsersRequired S_AdditionalUsersRequired --> N_AdditionalUsersRequired_Node0 N_AdditionalUsersRequired_Node0 -- No --> E_AdditionalUsersRequired
File: GCX016.cbl
GIVEN:
Primary user code has been added to routing
WHEN:
The system evaluates additional user requirements
THEN:
The system either adds secondary users or proceeds to set message priority based on requirements
β Consolidated Acceptance Criteria
- Secondary users are identified → the system adds all required secondary users to the message routing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AddSecondaryUsers(["Start Step"])
E_AddSecondaryUsers(["End Step"])
N_AddSecondaryUsers_Node0{"Secondary users are identified"}:::decision
N_AddSecondaryUsers_Node0_action["The system adds all required
secondary users to the message
routing"]:::main N_AddSecondaryUsers_Node0 -- Yes --> N_AddSecondaryUsers_Node0_action N_AddSecondaryUsers_Node0_action --> E_AddSecondaryUsers S_AddSecondaryUsers --> N_AddSecondaryUsers_Node0 N_AddSecondaryUsers_Node0 -- No --> E_AddSecondaryUsers
secondary users to the message
routing"]:::main N_AddSecondaryUsers_Node0 -- Yes --> N_AddSecondaryUsers_Node0_action N_AddSecondaryUsers_Node0_action --> E_AddSecondaryUsers S_AddSecondaryUsers --> N_AddSecondaryUsers_Node0 N_AddSecondaryUsers_Node0 -- No --> E_AddSecondaryUsers
File: GCX016.cbl
GIVEN:
The system has determined additional users are required
WHEN:
Secondary users are identified
THEN:
The system adds all required secondary users to the message routing
β Consolidated Acceptance Criteria
- The system configures message properties → the system sets the appropriate priority level for the unrelease message
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetMessagePriority(["Start Step"])
E_SetMessagePriority(["End Step"])
N_SetMessagePriority_Node0{"The system configures message
properties"}:::decision N_SetMessagePriority_Node0_action["The system sets the appropriate
priority level for the unrelease
message"]:::main N_SetMessagePriority_Node0 -- Yes --> N_SetMessagePriority_Node0_action N_SetMessagePriority_Node0_action --> E_SetMessagePriority S_SetMessagePriority --> N_SetMessagePriority_Node0 N_SetMessagePriority_Node0 -- No --> E_SetMessagePriority
properties"}:::decision N_SetMessagePriority_Node0_action["The system sets the appropriate
priority level for the unrelease
message"]:::main N_SetMessagePriority_Node0 -- Yes --> N_SetMessagePriority_Node0_action N_SetMessagePriority_Node0_action --> E_SetMessagePriority S_SetMessagePriority --> N_SetMessagePriority_Node0 N_SetMessagePriority_Node0 -- No --> E_SetMessagePriority
File: GCX016.cbl
GIVEN:
All required users have been added to routing
WHEN:
The system configures message properties
THEN:
The system sets the appropriate priority level for the unrelease message
β Consolidated Acceptance Criteria
- The system prepares the message for delivery → the system formats the subject line with unrelease-specific information and identifiers
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_FormatSubjectLineforUnrelease(["Start Step"])
E_FormatSubjectLineforUnrelease(["End Step"])
N_FormatSubjectLineforUnrelease_Node0{"The system prepares the message for
delivery"}:::decision N_FormatSubjectLineforUnrelease_Node0_action["The system formats the subject line
with unrelease-specific information
and identifiers"]:::main N_FormatSubjectLineforUnrelease_Node0 -- Yes --> N_FormatSubjectLineforUnrelease_Node0_action N_FormatSubjectLineforUnrelease_Node0_action --> E_FormatSubjectLineforUnrelease S_FormatSubjectLineforUnrelease --> N_FormatSubjectLineforUnrelease_Node0 N_FormatSubjectLineforUnrelease_Node0 -- No --> E_FormatSubjectLineforUnrelease
delivery"}:::decision N_FormatSubjectLineforUnrelease_Node0_action["The system formats the subject line
with unrelease-specific information
and identifiers"]:::main N_FormatSubjectLineforUnrelease_Node0 -- Yes --> N_FormatSubjectLineforUnrelease_Node0_action N_FormatSubjectLineforUnrelease_Node0_action --> E_FormatSubjectLineforUnrelease S_FormatSubjectLineforUnrelease --> N_FormatSubjectLineforUnrelease_Node0 N_FormatSubjectLineforUnrelease_Node0 -- No --> E_FormatSubjectLineforUnrelease
File: GCX016.cbl
GIVEN:
Message priority has been set for the unrelease message
WHEN:
The system prepares the message for delivery
THEN:
- The system formats the subject line with unrelease-specific information
- Identifiers
β Consolidated Acceptance Criteria
- The system executes message delivery → the system sends the message to all designated baskets and users
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SendMessagetoBasket(["Start Step"])
E_SendMessagetoBasket(["End Step"])
N_SendMessagetoBasket_Node0{"The system executes message
delivery"}:::decision N_SendMessagetoBasket_Node0_action["The system sends the message to all
designated baskets and users"]:::main N_SendMessagetoBasket_Node0 -- Yes --> N_SendMessagetoBasket_Node0_action N_SendMessagetoBasket_Node0_action --> E_SendMessagetoBasket S_SendMessagetoBasket --> N_SendMessagetoBasket_Node0 N_SendMessagetoBasket_Node0 -- No --> E_SendMessagetoBasket
delivery"}:::decision N_SendMessagetoBasket_Node0_action["The system sends the message to all
designated baskets and users"]:::main N_SendMessagetoBasket_Node0 -- Yes --> N_SendMessagetoBasket_Node0_action N_SendMessagetoBasket_Node0_action --> E_SendMessagetoBasket S_SendMessagetoBasket --> N_SendMessagetoBasket_Node0 N_SendMessagetoBasket_Node0 -- No --> E_SendMessagetoBasket
File: GCX016.cbl
GIVEN:
The unrelease message has been fully formatted with subject line
WHEN:
The system executes message delivery
THEN:
- The system sends the message to all designated baskets
- Users
β Consolidated Acceptance Criteria
- The system completes message delivery → the system logs the routing activity including destinations, users, and delivery status
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogMessageRouting(["Start Step"])
E_LogMessageRouting(["End Step"])
N_LogMessageRouting_Node0{"The system completes message
delivery"}:::decision N_LogMessageRouting_Node0_action["The system logs the routing
activity including destinations,
users, and delivery status"]:::main N_LogMessageRouting_Node0 -- Yes --> N_LogMessageRouting_Node0_action N_LogMessageRouting_Node0_action --> E_LogMessageRouting S_LogMessageRouting --> N_LogMessageRouting_Node0 N_LogMessageRouting_Node0 -- No --> E_LogMessageRouting
delivery"}:::decision N_LogMessageRouting_Node0_action["The system logs the routing
activity including destinations,
users, and delivery status"]:::main N_LogMessageRouting_Node0 -- Yes --> N_LogMessageRouting_Node0_action N_LogMessageRouting_Node0_action --> E_LogMessageRouting S_LogMessageRouting --> N_LogMessageRouting_Node0 N_LogMessageRouting_Node0 -- No --> E_LogMessageRouting
File: GCX016.cbl
GIVEN:
The unrelease message has been sent to designated baskets
WHEN:
The system completes message delivery
THEN:
The system logs the routing activity including destinations, users, and delivery status
β Consolidated Acceptance Criteria
- All routing activities are complete → the system marks the unrelease message routing as complete and returns control to the calling process
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MessageRoutingComplete(["Start Step"])
E_MessageRoutingComplete(["End Step"])
N_MessageRoutingComplete_Node0{"All routing activities are complete"}:::decision
N_MessageRoutingComplete_Node0_action["The system marks the unrelease
message routing as complete and
returns control to the calling
process"]:::main N_MessageRoutingComplete_Node0 -- Yes --> N_MessageRoutingComplete_Node0_action N_MessageRoutingComplete_Node0_action --> E_MessageRoutingComplete S_MessageRoutingComplete --> N_MessageRoutingComplete_Node0 N_MessageRoutingComplete_Node0 -- No --> E_MessageRoutingComplete
message routing as complete and
returns control to the calling
process"]:::main N_MessageRoutingComplete_Node0 -- Yes --> N_MessageRoutingComplete_Node0_action N_MessageRoutingComplete_Node0_action --> E_MessageRoutingComplete S_MessageRoutingComplete --> N_MessageRoutingComplete_Node0 N_MessageRoutingComplete_Node0 -- No --> E_MessageRoutingComplete
File: GCX016.cbl
GIVEN:
Message routing has been logged successfully
WHEN:
All routing activities are complete
THEN:
- The system marks the unrelease message routing as complete
- Returns control to the calling process
β Consolidated Acceptance Criteria
- If the message content and cargo status → the message is classified as either release, export, arrival, or cancellation type for proper routing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MessageTypeCheck(["Start Step"])
E_MessageTypeCheck(["End Step"])
N_MessageTypeCheck_Node0{"The system evaluates the message
content and cargo status"}:::decision N_MessageTypeCheck_Node0_action["The message is classified as either
release, export, arrival, or
cancellation type for proper routing"]:::main N_MessageTypeCheck_Node0 -- Yes --> N_MessageTypeCheck_Node0_action N_MessageTypeCheck_Node0_action --> E_MessageTypeCheck S_MessageTypeCheck --> N_MessageTypeCheck_Node0 N_MessageTypeCheck_Node0 -- No --> E_MessageTypeCheck
content and cargo status"}:::decision N_MessageTypeCheck_Node0_action["The message is classified as either
release, export, arrival, or
cancellation type for proper routing"]:::main N_MessageTypeCheck_Node0 -- Yes --> N_MessageTypeCheck_Node0_action N_MessageTypeCheck_Node0_action --> E_MessageTypeCheck S_MessageTypeCheck --> N_MessageTypeCheck_Node0 N_MessageTypeCheck_Node0 -- No --> E_MessageTypeCheck
File: GCX016.cbl
GIVEN:
A release message has been generated for cargo processing
WHEN:
- The system evaluates the message content
- Cargo status
THEN:
The message is classified as either release, export, arrival, or cancellation type for proper routing
β Consolidated Acceptance Criteria
- The system processes the release action (release, export, arrival, or cancellation) → the appropriate message type flag is set to control downstream message formatting and routing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetReleaseMessageType(["Start Step"])
E_SetReleaseMessageType(["End Step"])
N_SetReleaseMessageType_Node0{"The system processes the release
action release, export, arrival, or
cancellation"}:::decision N_SetReleaseMessageType_Node0_action["The appropriate message type flag
is set to control downstream message
formatting and routing"]:::main N_SetReleaseMessageType_Node0 -- Yes --> N_SetReleaseMessageType_Node0_action N_SetReleaseMessageType_Node0_action --> E_SetReleaseMessageType S_SetReleaseMessageType --> N_SetReleaseMessageType_Node0 N_SetReleaseMessageType_Node0 -- No --> E_SetReleaseMessageType
action release, export, arrival, or
cancellation"}:::decision N_SetReleaseMessageType_Node0_action["The appropriate message type flag
is set to control downstream message
formatting and routing"]:::main N_SetReleaseMessageType_Node0 -- Yes --> N_SetReleaseMessageType_Node0_action N_SetReleaseMessageType_Node0_action --> E_SetReleaseMessageType S_SetReleaseMessageType --> N_SetReleaseMessageType_Node0 N_SetReleaseMessageType_Node0 -- No --> E_SetReleaseMessageType
File: GCX016.cbl
GIVEN:
The message type has been determined from cargo status evaluation
WHEN:
The system processes the release action (release, export, arrival, or cancellation)
THEN:
- The appropriate message type flag is set to control downstream message formatting
- Routing
β Consolidated Acceptance Criteria
- If broker configuration and payer of freight details → target users are identified including cargo broker, payer of freight broker, and configured notification recipients
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_DetermineTargetUsers(["Start Step"])
E_DetermineTargetUsers(["End Step"])
N_DetermineTargetUsers_Node0{"The system evaluates broker
configuration and payer of freight
details"}:::decision N_DetermineTargetUsers_Node0_action["Target users are identified
including cargo broker, payer of
freight broker, and configured
notification recipients"]:::main N_DetermineTargetUsers_Node0 -- Yes --> N_DetermineTargetUsers_Node0_action N_DetermineTargetUsers_Node0_action --> E_DetermineTargetUsers S_DetermineTargetUsers --> N_DetermineTargetUsers_Node0 N_DetermineTargetUsers_Node0 -- No --> E_DetermineTargetUsers
configuration and payer of freight
details"}:::decision N_DetermineTargetUsers_Node0_action["Target users are identified
including cargo broker, payer of
freight broker, and configured
notification recipients"]:::main N_DetermineTargetUsers_Node0 -- Yes --> N_DetermineTargetUsers_Node0_action N_DetermineTargetUsers_Node0_action --> E_DetermineTargetUsers S_DetermineTargetUsers --> N_DetermineTargetUsers_Node0 N_DetermineTargetUsers_Node0 -- No --> E_DetermineTargetUsers
File: GCX016.cbl
GIVEN:
A release message type has been set and cargo broker information is available
WHEN:
- The system evaluates broker configuration
- Payer of freight details
THEN:
Target users are identified including cargo broker, payer of freight broker, and configured notification recipients
β Consolidated Acceptance Criteria
- The system checks user notification preferences and contact information → users with valid configurations are approved for notification while invalid configurations trigger default routing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UserConfigurationValid(["Start Step"])
E_UserConfigurationValid(["End Step"])
N_UserConfigurationValid_Node0{"The system checks user notification
preferences and contact information"}:::decision N_UserConfigurationValid_Node0_action["Users with valid configurations are
approved for notification while
invalid configurations trigger
default routing"]:::main N_UserConfigurationValid_Node0 -- Yes --> N_UserConfigurationValid_Node0_action N_UserConfigurationValid_Node0_action --> E_UserConfigurationValid S_UserConfigurationValid --> N_UserConfigurationValid_Node0 N_UserConfigurationValid_Node0 -- No --> E_UserConfigurationValid
preferences and contact information"}:::decision N_UserConfigurationValid_Node0_action["Users with valid configurations are
approved for notification while
invalid configurations trigger
default routing"]:::main N_UserConfigurationValid_Node0 -- Yes --> N_UserConfigurationValid_Node0_action N_UserConfigurationValid_Node0_action --> E_UserConfigurationValid S_UserConfigurationValid --> N_UserConfigurationValid_Node0 N_UserConfigurationValid_Node0 -- No --> E_UserConfigurationValid
File: GCX016.cbl
GIVEN:
Target users have been identified for release notification
WHEN:
- The system checks user notification preferences
- Contact information
THEN:
Users with valid configurations are approved for notification while invalid configurations trigger default routing
β Consolidated Acceptance Criteria
- The system processes the release message for delivery → messages are routed to configured users based on their notification preferences
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RoutetoConfiguredUsers(["Start Step"])
E_RoutetoConfiguredUsers(["End Step"])
N_RoutetoConfiguredUsers_Node0{"The system processes the release
message for delivery"}:::decision N_RoutetoConfiguredUsers_Node0_action["Messages are routed to configured
users based on their notification
preferences"]:::main N_RoutetoConfiguredUsers_Node0 -- Yes --> N_RoutetoConfiguredUsers_Node0_action N_RoutetoConfiguredUsers_Node0_action --> E_RoutetoConfiguredUsers S_RoutetoConfiguredUsers --> N_RoutetoConfiguredUsers_Node0 N_RoutetoConfiguredUsers_Node0 -- No --> E_RoutetoConfiguredUsers
message for delivery"}:::decision N_RoutetoConfiguredUsers_Node0_action["Messages are routed to configured
users based on their notification
preferences"]:::main N_RoutetoConfiguredUsers_Node0 -- Yes --> N_RoutetoConfiguredUsers_Node0_action N_RoutetoConfiguredUsers_Node0_action --> E_RoutetoConfiguredUsers S_RoutetoConfiguredUsers --> N_RoutetoConfiguredUsers_Node0 N_RoutetoConfiguredUsers_Node0 -- No --> E_RoutetoConfiguredUsers
File: GCX016.cbl
GIVEN:
Target users have been validated and have proper notification configurations
WHEN:
The system processes the release message for delivery
THEN:
Messages are routed to configured users based on their notification preferences
β Consolidated Acceptance Criteria
- The system attempts to deliver release notifications → messages are routed to default notification recipients to ensure delivery
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RoutetoDefaultUsers(["Start Step"])
E_RoutetoDefaultUsers(["End Step"])
N_RoutetoDefaultUsers_Node0{"The system attempts to deliver
release notifications"}:::decision N_RoutetoDefaultUsers_Node0_action["Messages are routed to default
notification recipients to ensure
delivery"]:::main N_RoutetoDefaultUsers_Node0 -- Yes --> N_RoutetoDefaultUsers_Node0_action N_RoutetoDefaultUsers_Node0_action --> E_RoutetoDefaultUsers S_RoutetoDefaultUsers --> N_RoutetoDefaultUsers_Node0 N_RoutetoDefaultUsers_Node0 -- No --> E_RoutetoDefaultUsers
release notifications"}:::decision N_RoutetoDefaultUsers_Node0_action["Messages are routed to default
notification recipients to ensure
delivery"]:::main N_RoutetoDefaultUsers_Node0 -- Yes --> N_RoutetoDefaultUsers_Node0_action N_RoutetoDefaultUsers_Node0_action --> E_RoutetoDefaultUsers S_RoutetoDefaultUsers --> N_RoutetoDefaultUsers_Node0 N_RoutetoDefaultUsers_Node0 -- No --> E_RoutetoDefaultUsers
File: GCX016.cbl
GIVEN:
Target users have been identified but lack valid notification configurations
WHEN:
The system attempts to deliver release notifications
THEN:
Messages are routed to default notification recipients to ensure delivery
β Consolidated Acceptance Criteria
- If user notification preferences and message characteristics → the appropriate delivery method (email or Merlin) is selected for each recipient
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_EmailorMerlin(["Start Step"])
E_EmailorMerlin(["End Step"])
N_EmailorMerlin_Node0{"The system evaluates user
notification preferences and message
characteristics"}:::decision N_EmailorMerlin_Node0_action["The appropriate delivery method
email or Merlin is selected for each
recipient"]:::main N_EmailorMerlin_Node0 -- Yes --> N_EmailorMerlin_Node0_action N_EmailorMerlin_Node0_action --> E_EmailorMerlin S_EmailorMerlin --> N_EmailorMerlin_Node0 N_EmailorMerlin_Node0 -- No --> E_EmailorMerlin
notification preferences and message
characteristics"}:::decision N_EmailorMerlin_Node0_action["The appropriate delivery method
email or Merlin is selected for each
recipient"]:::main N_EmailorMerlin_Node0 -- Yes --> N_EmailorMerlin_Node0_action N_EmailorMerlin_Node0_action --> E_EmailorMerlin S_EmailorMerlin --> N_EmailorMerlin_Node0 N_EmailorMerlin_Node0 -- No --> E_EmailorMerlin
File: GCX016.cbl
GIVEN:
Target users have been determined and routing decisions made
WHEN:
- The system evaluates user notification preferences
- Message characteristics
THEN:
The appropriate delivery method (email or Merlin) is selected for each recipient
β Consolidated Acceptance Criteria
- The system prepares the message for email transmission → email headers, subject line, and message body are formatted according to email standards
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_PrepareEmailMessage(["Start Step"])
E_PrepareEmailMessage(["End Step"])
N_PrepareEmailMessage_Node0{"The system prepares the message for
email transmission"}:::decision N_PrepareEmailMessage_Node0_action["Email headers, subject line, and
message body are formatted according
to email standards"]:::main N_PrepareEmailMessage_Node0 -- Yes --> N_PrepareEmailMessage_Node0_action N_PrepareEmailMessage_Node0_action --> E_PrepareEmailMessage S_PrepareEmailMessage --> N_PrepareEmailMessage_Node0 N_PrepareEmailMessage_Node0 -- No --> E_PrepareEmailMessage
email transmission"}:::decision N_PrepareEmailMessage_Node0_action["Email headers, subject line, and
message body are formatted according
to email standards"]:::main N_PrepareEmailMessage_Node0 -- Yes --> N_PrepareEmailMessage_Node0_action N_PrepareEmailMessage_Node0_action --> E_PrepareEmailMessage S_PrepareEmailMessage --> N_PrepareEmailMessage_Node0 N_PrepareEmailMessage_Node0 -- No --> E_PrepareEmailMessage
File: GCX016.cbl
GIVEN:
Email delivery method has been selected for release notification
WHEN:
The system prepares the message for email transmission
THEN:
Email headers, subject line, and message body are formatted according to email standards
β Consolidated Acceptance Criteria
- The system prepares the message for Merlin transmission → merlin message format, routing codes, and destination identifiers are properly configured
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_PrepareMerlinMessage(["Start Step"])
E_PrepareMerlinMessage(["End Step"])
N_PrepareMerlinMessage_Node0{"The system prepares the message for
Merlin transmission"}:::decision N_PrepareMerlinMessage_Node0_action["Merlin message format, routing
codes, and destination identifiers
are properly configured"]:::main N_PrepareMerlinMessage_Node0 -- Yes --> N_PrepareMerlinMessage_Node0_action N_PrepareMerlinMessage_Node0_action --> E_PrepareMerlinMessage S_PrepareMerlinMessage --> N_PrepareMerlinMessage_Node0 N_PrepareMerlinMessage_Node0 -- No --> E_PrepareMerlinMessage
Merlin transmission"}:::decision N_PrepareMerlinMessage_Node0_action["Merlin message format, routing
codes, and destination identifiers
are properly configured"]:::main N_PrepareMerlinMessage_Node0 -- Yes --> N_PrepareMerlinMessage_Node0_action N_PrepareMerlinMessage_Node0_action --> E_PrepareMerlinMessage S_PrepareMerlinMessage --> N_PrepareMerlinMessage_Node0 N_PrepareMerlinMessage_Node0 -- No --> E_PrepareMerlinMessage
File: GCX016.cbl
GIVEN:
Merlin delivery method has been selected for release notification
WHEN:
The system prepares the message for Merlin transmission
THEN:
Merlin message format, routing codes, and destination identifiers are properly configured
β Consolidated Acceptance Criteria
- The system adds cargo details to the message body → cargo details including CCN, car ID, waybill number, and shipment information are included in the message
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AddCargoDetails(["Start Step"])
E_AddCargoDetails(["End Step"])
N_AddCargoDetails_Node0{"The system adds cargo details to
the message body"}:::decision N_AddCargoDetails_Node0_action["Cargo details including CCN, car
ID, waybill number, and shipment
information are included in the
message"]:::main N_AddCargoDetails_Node0 -- Yes --> N_AddCargoDetails_Node0_action N_AddCargoDetails_Node0_action --> E_AddCargoDetails S_AddCargoDetails --> N_AddCargoDetails_Node0 N_AddCargoDetails_Node0 -- No --> E_AddCargoDetails
the message body"}:::decision N_AddCargoDetails_Node0_action["Cargo details including CCN, car
ID, waybill number, and shipment
information are included in the
message"]:::main N_AddCargoDetails_Node0 -- Yes --> N_AddCargoDetails_Node0_action N_AddCargoDetails_Node0_action --> E_AddCargoDetails S_AddCargoDetails --> N_AddCargoDetails_Node0 N_AddCargoDetails_Node0 -- No --> E_AddCargoDetails
File: GCX016.cbl
GIVEN:
Message subject line has been formatted and cargo data is accessible
WHEN:
The system adds cargo details to the message body
THEN:
Cargo details including CCN, car ID, waybill number, and shipment information are included in the message
β Consolidated Acceptance Criteria
- The system processes disposition code information for inclusion → disposition codes and their business descriptions are added to provide context for the release action
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AddDispositionCodes(["Start Step"])
E_AddDispositionCodes(["End Step"])
N_AddDispositionCodes_Node0{"The system processes disposition
code information for inclusion"}:::decision N_AddDispositionCodes_Node0_action["Disposition codes and their
business descriptions are added to
provide context for the release
action"]:::main N_AddDispositionCodes_Node0 -- Yes --> N_AddDispositionCodes_Node0_action N_AddDispositionCodes_Node0_action --> E_AddDispositionCodes S_AddDispositionCodes --> N_AddDispositionCodes_Node0 N_AddDispositionCodes_Node0 -- No --> E_AddDispositionCodes
code information for inclusion"}:::decision N_AddDispositionCodes_Node0_action["Disposition codes and their
business descriptions are added to
provide context for the release
action"]:::main N_AddDispositionCodes_Node0 -- Yes --> N_AddDispositionCodes_Node0_action N_AddDispositionCodes_Node0_action --> E_AddDispositionCodes S_AddDispositionCodes --> N_AddDispositionCodes_Node0 N_AddDispositionCodes_Node0 -- No --> E_AddDispositionCodes
File: GCX016.cbl
GIVEN:
Cargo details have been added to the message and disposition codes are available
WHEN:
The system processes disposition code information for inclusion
THEN:
- Disposition codes
- Their business descriptions are added to provide context for the release action
β Consolidated Acceptance Criteria
- The system processes K1 comments for message inclusion → k1 remarks and special comments are added to provide additional context and instructions
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AddK1Comments(["Start Step"])
E_AddK1Comments(["End Step"])
N_AddK1Comments_Node0{"The system processes K1 comments
for message inclusion"}:::decision N_AddK1Comments_Node0_action["K1 remarks and special comments are
added to provide additional context
and instructions"]:::main N_AddK1Comments_Node0 -- Yes --> N_AddK1Comments_Node0_action N_AddK1Comments_Node0_action --> E_AddK1Comments S_AddK1Comments --> N_AddK1Comments_Node0 N_AddK1Comments_Node0 -- No --> E_AddK1Comments
for message inclusion"}:::decision N_AddK1Comments_Node0_action["K1 remarks and special comments are
added to provide additional context
and instructions"]:::main N_AddK1Comments_Node0 -- Yes --> N_AddK1Comments_Node0_action N_AddK1Comments_Node0_action --> E_AddK1Comments S_AddK1Comments --> N_AddK1Comments_Node0 N_AddK1Comments_Node0 -- No --> E_AddK1Comments
File: GCX016.cbl
GIVEN:
Quantity information has been added and K1 segment data is available
WHEN:
The system processes K1 comments for message inclusion
THEN:
- K1 remarks
- Special comments are added to provide additional context
- Instructions
β Consolidated Acceptance Criteria
- The system processes the message for release basket distribution → message is sent to the release basket for general access and record keeping
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SendtoReleaseBasket(["Start Step"])
E_SendtoReleaseBasket(["End Step"])
N_SendtoReleaseBasket_Node0{"The system processes the message
for release basket distribution"}:::decision N_SendtoReleaseBasket_Node0_action["Message is sent to the release
basket for general access and record
keeping"]:::main N_SendtoReleaseBasket_Node0 -- Yes --> N_SendtoReleaseBasket_Node0_action N_SendtoReleaseBasket_Node0_action --> E_SendtoReleaseBasket S_SendtoReleaseBasket --> N_SendtoReleaseBasket_Node0 N_SendtoReleaseBasket_Node0 -- No --> E_SendtoReleaseBasket
for release basket distribution"}:::decision N_SendtoReleaseBasket_Node0_action["Message is sent to the release
basket for general access and record
keeping"]:::main N_SendtoReleaseBasket_Node0 -- Yes --> N_SendtoReleaseBasket_Node0_action N_SendtoReleaseBasket_Node0_action --> E_SendtoReleaseBasket S_SendtoReleaseBasket --> N_SendtoReleaseBasket_Node0 N_SendtoReleaseBasket_Node0 -- No --> E_SendtoReleaseBasket
File: GCX016.cbl
GIVEN:
Release message has been fully formatted with all required information
WHEN:
The system processes the message for release basket distribution
THEN:
- Message is sent to the release basket for general access
- Record keeping
β Consolidated Acceptance Criteria
- The system processes broker notification requirements → release message is sent directly to the cargo broker using their configured notification method
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SendtoBroker(["Start Step"])
E_SendtoBroker(["End Step"])
N_SendtoBroker_Node0{"The system processes broker
notification requirements"}:::decision N_SendtoBroker_Node0_action["Release message is sent directly to
the cargo broker using their
configured notification method"]:::main N_SendtoBroker_Node0 -- Yes --> N_SendtoBroker_Node0_action N_SendtoBroker_Node0_action --> E_SendtoBroker S_SendtoBroker --> N_SendtoBroker_Node0 N_SendtoBroker_Node0 -- No --> E_SendtoBroker
notification requirements"}:::decision N_SendtoBroker_Node0_action["Release message is sent directly to
the cargo broker using their
configured notification method"]:::main N_SendtoBroker_Node0 -- Yes --> N_SendtoBroker_Node0_action N_SendtoBroker_Node0_action --> E_SendtoBroker S_SendtoBroker --> N_SendtoBroker_Node0 N_SendtoBroker_Node0 -- No --> E_SendtoBroker
File: GCX016.cbl
GIVEN:
Message has been sent to release basket and broker information is available
WHEN:
The system processes broker notification requirements
THEN:
Release message is sent directly to the cargo broker using their configured notification method
β Consolidated Acceptance Criteria
- The system finalizes the distribution process → distribution process is marked as complete and control returns to the calling process
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MessageDistributionComplete(["Start Step"])
E_MessageDistributionComplete(["End Step"])
N_MessageDistributionComplete_Node0{"The system finalizes the
distribution process"}:::decision N_MessageDistributionComplete_Node0_action["Distribution process is marked as
complete and control returns to the
calling process"]:::main N_MessageDistributionComplete_Node0 -- Yes --> N_MessageDistributionComplete_Node0_action N_MessageDistributionComplete_Node0_action --> E_MessageDistributionComplete S_MessageDistributionComplete --> N_MessageDistributionComplete_Node0 N_MessageDistributionComplete_Node0 -- No --> E_MessageDistributionComplete
distribution process"}:::decision N_MessageDistributionComplete_Node0_action["Distribution process is marked as
complete and control returns to the
calling process"]:::main N_MessageDistributionComplete_Node0 -- Yes --> N_MessageDistributionComplete_Node0_action N_MessageDistributionComplete_Node0_action --> E_MessageDistributionComplete S_MessageDistributionComplete --> N_MessageDistributionComplete_Node0 N_MessageDistributionComplete_Node0 -- No --> E_MessageDistributionComplete
File: GCX016.cbl
GIVEN:
All message distributions have been completed and logged
WHEN:
The system finalizes the distribution process
THEN:
- Distribution process is marked as complete
- Control returns to the calling process
β Consolidated Acceptance Criteria
- If the container type from the cargo record → the container type is identified and categorized for routing decisions
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CheckContainerType(["Start Step"])
E_CheckContainerType(["End Step"])
N_CheckContainerType_Node0{"The system evaluates the container
type from the cargo record"}:::decision N_CheckContainerType_Node0_action["The container type is identified
and categorized for routing
decisions"]:::main N_CheckContainerType_Node0 -- Yes --> N_CheckContainerType_Node0_action N_CheckContainerType_Node0_action --> E_CheckContainerType S_CheckContainerType --> N_CheckContainerType_Node0 N_CheckContainerType_Node0 -- No --> E_CheckContainerType
type from the cargo record"}:::decision N_CheckContainerType_Node0_action["The container type is identified
and categorized for routing
decisions"]:::main N_CheckContainerType_Node0 -- Yes --> N_CheckContainerType_Node0_action N_CheckContainerType_Node0_action --> E_CheckContainerType S_CheckContainerType --> N_CheckContainerType_Node0 N_CheckContainerType_Node0 -- No --> E_CheckContainerType
File: GCX016.cbl
GIVEN:
An export message is generated for cargo processing
WHEN:
The system evaluates the container type from the cargo record
THEN:
- The container type is identified
- Categorized for routing decisions
β Consolidated Acceptance Criteria
- The container type is evaluated against USEXP routing criteria for export containers, special equipment, or regulated cargo → the system routes to USEXP basket if criteria match, otherwise routes to standard export processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ContainerTypeMatchesUSEXPCriteria(["Start Step"])
E_ContainerTypeMatchesUSEXPCriteria(["End Step"])
N_ContainerTypeMatchesUSEXPCriteria_Node0{"The container type is evaluated
against USEXP routing criteria for
export containers, special
equipment, or regulated cargo"}:::decision N_ContainerTypeMatchesUSEXPCriteria_Node0_action["The system routes to USEXP basket
if criteria match, otherwise routes
to standard export processing"]:::main N_ContainerTypeMatchesUSEXPCriteria_Node0 -- Yes --> N_ContainerTypeMatchesUSEXPCriteria_Node0_action N_ContainerTypeMatchesUSEXPCriteria_Node0_action --> E_ContainerTypeMatchesUSEXPCriteria S_ContainerTypeMatchesUSEXPCriteria --> N_ContainerTypeMatchesUSEXPCriteria_Node0 N_ContainerTypeMatchesUSEXPCriteria_Node0 -- No --> E_ContainerTypeMatchesUSEXPCriteria
against USEXP routing criteria for
export containers, special
equipment, or regulated cargo"}:::decision N_ContainerTypeMatchesUSEXPCriteria_Node0_action["The system routes to USEXP basket
if criteria match, otherwise routes
to standard export processing"]:::main N_ContainerTypeMatchesUSEXPCriteria_Node0 -- Yes --> N_ContainerTypeMatchesUSEXPCriteria_Node0_action N_ContainerTypeMatchesUSEXPCriteria_Node0_action --> E_ContainerTypeMatchesUSEXPCriteria S_ContainerTypeMatchesUSEXPCriteria --> N_ContainerTypeMatchesUSEXPCriteria_Node0 N_ContainerTypeMatchesUSEXPCriteria_Node0 -- No --> E_ContainerTypeMatchesUSEXPCriteria
File: GCX016.cbl
GIVEN:
A container type has been identified from the cargo record
WHEN:
The container type is evaluated against USEXP routing criteria for export containers, special equipment, or regulated cargo
THEN:
The system routes to USEXP basket if criteria match, otherwise routes to standard export processing
β Consolidated Acceptance Criteria
- The system formats the message content with cargo details, container information, and export requirements → the export message is properly formatted with all required fields for USEXP basket processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_FormatExportMessageContent(["Start Step"])
E_FormatExportMessageContent(["End Step"])
N_FormatExportMessageContent_Node0{"The system formats the message
content with cargo details,
container information, and export
requirements"}:::decision N_FormatExportMessageContent_Node0_action["The export message is properly
formatted with all required fields
for USEXP basket processing"]:::main N_FormatExportMessageContent_Node0 -- Yes --> N_FormatExportMessageContent_Node0_action N_FormatExportMessageContent_Node0_action --> E_FormatExportMessageContent S_FormatExportMessageContent --> N_FormatExportMessageContent_Node0 N_FormatExportMessageContent_Node0 -- No --> E_FormatExportMessageContent
content with cargo details,
container information, and export
requirements"}:::decision N_FormatExportMessageContent_Node0_action["The export message is properly
formatted with all required fields
for USEXP basket processing"]:::main N_FormatExportMessageContent_Node0 -- Yes --> N_FormatExportMessageContent_Node0_action N_FormatExportMessageContent_Node0_action --> E_FormatExportMessageContent S_FormatExportMessageContent --> N_FormatExportMessageContent_Node0 N_FormatExportMessageContent_Node0 -- No --> E_FormatExportMessageContent
File: GCX016.cbl
GIVEN:
Export message keywords have been set for USEXP processing
WHEN:
The system formats the message content with cargo details, container information, and export requirements
THEN:
The export message is properly formatted with all required fields for USEXP basket processing
β Consolidated Acceptance Criteria
- If export processing type, customs clearance requirements, and documentation needs → the appropriate USEXP basket is selected from export processing, customs clearance, or documentation baskets
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_DetermineDestinationBasket(["Start Step"])
E_DetermineDestinationBasket(["End Step"])
N_DetermineDestinationBasket_Node0{"The system evaluates export
processing type, customs clearance
requirements, and documentation
needs"}:::decision N_DetermineDestinationBasket_Node0_action["The appropriate USEXP basket is
selected from export processing,
customs clearance, or documentation
baskets"]:::main N_DetermineDestinationBasket_Node0 -- Yes --> N_DetermineDestinationBasket_Node0_action N_DetermineDestinationBasket_Node0_action --> E_DetermineDestinationBasket S_DetermineDestinationBasket --> N_DetermineDestinationBasket_Node0 N_DetermineDestinationBasket_Node0 -- No --> E_DetermineDestinationBasket
processing type, customs clearance
requirements, and documentation
needs"}:::decision N_DetermineDestinationBasket_Node0_action["The appropriate USEXP basket is
selected from export processing,
customs clearance, or documentation
baskets"]:::main N_DetermineDestinationBasket_Node0 -- Yes --> N_DetermineDestinationBasket_Node0_action N_DetermineDestinationBasket_Node0_action --> E_DetermineDestinationBasket S_DetermineDestinationBasket --> N_DetermineDestinationBasket_Node0 N_DetermineDestinationBasket_Node0 -- No --> E_DetermineDestinationBasket
File: GCX016.cbl
GIVEN:
Export message content has been formatted for USEXP processing
WHEN:
The system evaluates export processing type, customs clearance requirements, and documentation needs
THEN:
The appropriate USEXP basket is selected from export processing, customs clearance, or documentation baskets
β Consolidated Acceptance Criteria
- The system transmits the export message to the selected USEXP basket → the export message is successfully sent to USEXP processing for customs clearance and documentation
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SendtoUSEXPProcessing(["Start Step"])
E_SendtoUSEXPProcessing(["End Step"])
N_SendtoUSEXPProcessing_Node0{"The system transmits the export
message to the selected USEXP basket"}:::decision N_SendtoUSEXPProcessing_Node0_action["The export message is successfully
sent to USEXP processing for customs
clearance and documentation"]:::main N_SendtoUSEXPProcessing_Node0 -- Yes --> N_SendtoUSEXPProcessing_Node0_action N_SendtoUSEXPProcessing_Node0_action --> E_SendtoUSEXPProcessing S_SendtoUSEXPProcessing --> N_SendtoUSEXPProcessing_Node0 N_SendtoUSEXPProcessing_Node0 -- No --> E_SendtoUSEXPProcessing
message to the selected USEXP basket"}:::decision N_SendtoUSEXPProcessing_Node0_action["The export message is successfully
sent to USEXP processing for customs
clearance and documentation"]:::main N_SendtoUSEXPProcessing_Node0 -- Yes --> N_SendtoUSEXPProcessing_Node0_action N_SendtoUSEXPProcessing_Node0_action --> E_SendtoUSEXPProcessing S_SendtoUSEXPProcessing --> N_SendtoUSEXPProcessing_Node0 N_SendtoUSEXPProcessing_Node0 -- No --> E_SendtoUSEXPProcessing
File: GCX016.cbl
GIVEN:
The destination USEXP basket has been determined and message is formatted
WHEN:
The system transmits the export message to the selected USEXP basket
THEN:
- The export message is successfully sent to usexp processing for customs clearance
- Documentation
β Consolidated Acceptance Criteria
- The system processes the export message for non-USEXP qualified containers → the export message is routed to standard export processing workflows
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RoutetoStandardExportProcessing(["Start Step"])
E_RoutetoStandardExportProcessing(["End Step"])
N_RoutetoStandardExportProcessing_Node0{"The system processes the export
message for non-USEXP qualified
containers"}:::decision N_RoutetoStandardExportProcessing_Node0_action["The export message is routed to
standard export processing workflows"]:::main N_RoutetoStandardExportProcessing_Node0 -- Yes --> N_RoutetoStandardExportProcessing_Node0_action N_RoutetoStandardExportProcessing_Node0_action --> E_RoutetoStandardExportProcessing S_RoutetoStandardExportProcessing --> N_RoutetoStandardExportProcessing_Node0 N_RoutetoStandardExportProcessing_Node0 -- No --> E_RoutetoStandardExportProcessing
message for non-USEXP qualified
containers"}:::decision N_RoutetoStandardExportProcessing_Node0_action["The export message is routed to
standard export processing workflows"]:::main N_RoutetoStandardExportProcessing_Node0 -- Yes --> N_RoutetoStandardExportProcessing_Node0_action N_RoutetoStandardExportProcessing_Node0_action --> E_RoutetoStandardExportProcessing S_RoutetoStandardExportProcessing --> N_RoutetoStandardExportProcessing_Node0 N_RoutetoStandardExportProcessing_Node0 -- No --> E_RoutetoStandardExportProcessing
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
A container type does not match USEXP routing criteria
WHEN:
The system processes the export message for non-USEXP qualified containers
THEN:
The export message is routed to standard export processing workflows
β Consolidated Acceptance Criteria
- The routing decision is completed → the system logs the routing decision, destination, container type, and processing path for audit purposes
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogExportMessageRouting(["Start Step"])
E_LogExportMessageRouting(["End Step"])
N_LogExportMessageRouting_Node0{"The routing decision is completed"}:::decision
N_LogExportMessageRouting_Node0_action["The system logs the routing
decision, destination, container
type, and processing path for audit
purposes"]:::main N_LogExportMessageRouting_Node0 -- Yes --> N_LogExportMessageRouting_Node0_action N_LogExportMessageRouting_Node0_action --> E_LogExportMessageRouting S_LogExportMessageRouting --> N_LogExportMessageRouting_Node0 N_LogExportMessageRouting_Node0 -- No --> E_LogExportMessageRouting
decision, destination, container
type, and processing path for audit
purposes"]:::main N_LogExportMessageRouting_Node0 -- Yes --> N_LogExportMessageRouting_Node0_action N_LogExportMessageRouting_Node0_action --> E_LogExportMessageRouting S_LogExportMessageRouting --> N_LogExportMessageRouting_Node0 N_LogExportMessageRouting_Node0 -- No --> E_LogExportMessageRouting
File: GCX016.cbl
GIVEN:
An export message has been routed to either USEXP or standard processing
WHEN:
The routing decision is completed
THEN:
The system logs the routing decision, destination, container type, and processing path for audit purposes
β Consolidated Acceptance Criteria
- The system checks if the destination user ID is valid → the system determines whether the user exists in the system or not
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CheckDestinationUserValid(["Start Step"])
E_CheckDestinationUserValid(["End Step"])
N_CheckDestinationUserValid_Node0{"The system checks if the
destination user ID is valid"}:::decision N_CheckDestinationUserValid_Node0_action["The system determines whether the
user exists in the system or not"]:::main N_CheckDestinationUserValid_Node0 -- Yes --> N_CheckDestinationUserValid_Node0_action N_CheckDestinationUserValid_Node0_action --> E_CheckDestinationUserValid S_CheckDestinationUserValid --> N_CheckDestinationUserValid_Node0 N_CheckDestinationUserValid_Node0 -- No --> E_CheckDestinationUserValid
destination user ID is valid"}:::decision N_CheckDestinationUserValid_Node0_action["The system determines whether the
user exists in the system or not"]:::main N_CheckDestinationUserValid_Node0 -- Yes --> N_CheckDestinationUserValid_Node0_action N_CheckDestinationUserValid_Node0_action --> E_CheckDestinationUserValid S_CheckDestinationUserValid --> N_CheckDestinationUserValid_Node0 N_CheckDestinationUserValid_Node0 -- No --> E_CheckDestinationUserValid
File: GCX016.cbl
GIVEN:
A message is ready for routing with a destination user ID
WHEN:
The system checks if the destination user ID is valid
THEN:
The system determines whether the user exists in the system or not
β Consolidated Acceptance Criteria
- The user validation check passes → the message is routed to the original intended user
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RouteMessagetoOriginalUser(["Start Step"])
E_RouteMessagetoOriginalUser(["End Step"])
N_RouteMessagetoOriginalUser_Node0{"The user validation check passes"}:::decision
N_RouteMessagetoOriginalUser_Node0_action["The message is routed to the
original intended user"]:::main N_RouteMessagetoOriginalUser_Node0 -- Yes --> N_RouteMessagetoOriginalUser_Node0_action N_RouteMessagetoOriginalUser_Node0_action --> E_RouteMessagetoOriginalUser S_RouteMessagetoOriginalUser --> N_RouteMessagetoOriginalUser_Node0 N_RouteMessagetoOriginalUser_Node0 -- No --> E_RouteMessagetoOriginalUser
original intended user"]:::main N_RouteMessagetoOriginalUser_Node0 -- Yes --> N_RouteMessagetoOriginalUser_Node0_action N_RouteMessagetoOriginalUser_Node0_action --> E_RouteMessagetoOriginalUser S_RouteMessagetoOriginalUser --> N_RouteMessagetoOriginalUser_Node0 N_RouteMessagetoOriginalUser_Node0 -- No --> E_RouteMessagetoOriginalUser
File: GCX016.cbl
GIVEN:
A message needs to be routed and the destination user ID exists in the system
WHEN:
The user validation check passes
THEN:
The message is routed to the original intended user
β Consolidated Acceptance Criteria
- The user validation check fails → the system identifies the message type for appropriate rerouting
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IdentifyMessageType(["Start Step"])
E_IdentifyMessageType(["End Step"])
N_IdentifyMessageType_Node0{"The user validation check fails"}:::decision
N_IdentifyMessageType_Node0_action["The system identifies the message
type for appropriate rerouting"]:::main N_IdentifyMessageType_Node0 -- Yes --> N_IdentifyMessageType_Node0_action N_IdentifyMessageType_Node0_action --> E_IdentifyMessageType S_IdentifyMessageType --> N_IdentifyMessageType_Node0 N_IdentifyMessageType_Node0 -- No --> E_IdentifyMessageType
type for appropriate rerouting"]:::main N_IdentifyMessageType_Node0 -- Yes --> N_IdentifyMessageType_Node0_action N_IdentifyMessageType_Node0_action --> E_IdentifyMessageType S_IdentifyMessageType --> N_IdentifyMessageType_Node0 N_IdentifyMessageType_Node0 -- No --> E_IdentifyMessageType
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
A message needs to be routed but the destination user ID does not exist in the system
WHEN:
The user validation check fails
THEN:
The system identifies the message type for appropriate rerouting
β Consolidated Acceptance Criteria
- The message type is determined to be an error message → the message is routed to the default error users
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RoutetoDefaultErrorUsers(["Start Step"])
E_RoutetoDefaultErrorUsers(["End Step"])
N_RoutetoDefaultErrorUsers_Node0{"The message type is determined to
be an error message"}:::decision N_RoutetoDefaultErrorUsers_Node0_action["The message is routed to the
default error users"]:::exclusion N_RoutetoDefaultErrorUsers_Node0 -- Yes -->|Alternative| N_RoutetoDefaultErrorUsers_Node0_action N_RoutetoDefaultErrorUsers_Node0_action --> E_RoutetoDefaultErrorUsers S_RoutetoDefaultErrorUsers --> N_RoutetoDefaultErrorUsers_Node0 N_RoutetoDefaultErrorUsers_Node0 -- No --> E_RoutetoDefaultErrorUsers
be an error message"}:::decision N_RoutetoDefaultErrorUsers_Node0_action["The message is routed to the
default error users"]:::exclusion N_RoutetoDefaultErrorUsers_Node0 -- Yes -->|Alternative| N_RoutetoDefaultErrorUsers_Node0_action N_RoutetoDefaultErrorUsers_Node0_action --> E_RoutetoDefaultErrorUsers S_RoutetoDefaultErrorUsers --> N_RoutetoDefaultErrorUsers_Node0 N_RoutetoDefaultErrorUsers_Node0 -- No --> E_RoutetoDefaultErrorUsers
File: GCX016.cbl
GIVEN:
A message is identified as an error message and the original destination user is invalid
WHEN:
The message type is determined to be an error message
THEN:
The message is routed to the default error users
β Consolidated Acceptance Criteria
- The message type is determined to be an informational message → the message is routed to the default info users
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RoutetoDefaultInfoUsers(["Start Step"])
E_RoutetoDefaultInfoUsers(["End Step"])
N_RoutetoDefaultInfoUsers_Node0{"The message type is determined to
be an informational message"}:::decision N_RoutetoDefaultInfoUsers_Node0_action["The message is routed to the
default info users"]:::main N_RoutetoDefaultInfoUsers_Node0 -- Yes --> N_RoutetoDefaultInfoUsers_Node0_action N_RoutetoDefaultInfoUsers_Node0_action --> E_RoutetoDefaultInfoUsers S_RoutetoDefaultInfoUsers --> N_RoutetoDefaultInfoUsers_Node0 N_RoutetoDefaultInfoUsers_Node0 -- No --> E_RoutetoDefaultInfoUsers
be an informational message"}:::decision N_RoutetoDefaultInfoUsers_Node0_action["The message is routed to the
default info users"]:::main N_RoutetoDefaultInfoUsers_Node0 -- Yes --> N_RoutetoDefaultInfoUsers_Node0_action N_RoutetoDefaultInfoUsers_Node0_action --> E_RoutetoDefaultInfoUsers S_RoutetoDefaultInfoUsers --> N_RoutetoDefaultInfoUsers_Node0 N_RoutetoDefaultInfoUsers_Node0 -- No --> E_RoutetoDefaultInfoUsers
File: GCX016.cbl
GIVEN:
A message is identified as an info message and the original destination user is invalid
WHEN:
The message type is determined to be an informational message
THEN:
The message is routed to the default info users
β Consolidated Acceptance Criteria
- The message type is determined to be a release message → the message is routed to the default release users
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RoutetoDefaultReleaseUsers(["Start Step"])
E_RoutetoDefaultReleaseUsers(["End Step"])
N_RoutetoDefaultReleaseUsers_Node0{"The message type is determined to
be a release message"}:::decision N_RoutetoDefaultReleaseUsers_Node0_action["The message is routed to the
default release users"]:::main N_RoutetoDefaultReleaseUsers_Node0 -- Yes --> N_RoutetoDefaultReleaseUsers_Node0_action N_RoutetoDefaultReleaseUsers_Node0_action --> E_RoutetoDefaultReleaseUsers S_RoutetoDefaultReleaseUsers --> N_RoutetoDefaultReleaseUsers_Node0 N_RoutetoDefaultReleaseUsers_Node0 -- No --> E_RoutetoDefaultReleaseUsers
be a release message"}:::decision N_RoutetoDefaultReleaseUsers_Node0_action["The message is routed to the
default release users"]:::main N_RoutetoDefaultReleaseUsers_Node0 -- Yes --> N_RoutetoDefaultReleaseUsers_Node0_action N_RoutetoDefaultReleaseUsers_Node0_action --> E_RoutetoDefaultReleaseUsers S_RoutetoDefaultReleaseUsers --> N_RoutetoDefaultReleaseUsers_Node0 N_RoutetoDefaultReleaseUsers_Node0 -- No --> E_RoutetoDefaultReleaseUsers
File: GCX016.cbl
GIVEN:
A message is identified as a release message and the original destination user is invalid
WHEN:
The message type is determined to be a release message
THEN:
The message is routed to the default release users
β Consolidated Acceptance Criteria
- The message type is determined to be an export message → the message is routed to the default export users
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RoutetoDefaultExportUsers(["Start Step"])
E_RoutetoDefaultExportUsers(["End Step"])
N_RoutetoDefaultExportUsers_Node0{"The message type is determined to
be an export message"}:::decision N_RoutetoDefaultExportUsers_Node0_action["The message is routed to the
default export users"]:::main N_RoutetoDefaultExportUsers_Node0 -- Yes --> N_RoutetoDefaultExportUsers_Node0_action N_RoutetoDefaultExportUsers_Node0_action --> E_RoutetoDefaultExportUsers S_RoutetoDefaultExportUsers --> N_RoutetoDefaultExportUsers_Node0 N_RoutetoDefaultExportUsers_Node0 -- No --> E_RoutetoDefaultExportUsers
be an export message"}:::decision N_RoutetoDefaultExportUsers_Node0_action["The message is routed to the
default export users"]:::main N_RoutetoDefaultExportUsers_Node0 -- Yes --> N_RoutetoDefaultExportUsers_Node0_action N_RoutetoDefaultExportUsers_Node0_action --> E_RoutetoDefaultExportUsers S_RoutetoDefaultExportUsers --> N_RoutetoDefaultExportUsers_Node0 N_RoutetoDefaultExportUsers_Node0 -- No --> E_RoutetoDefaultExportUsers
File: GCX016.cbl
GIVEN:
A message is identified as an export message and the original destination user is invalid
WHEN:
The message type is determined to be an export message
THEN:
The message is routed to the default export users
β Consolidated Acceptance Criteria
- The message rerouting is completed → the system logs an invalid user notification for audit purposes
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogInvalidUserNotification(["Start Step"])
E_LogInvalidUserNotification(["End Step"])
N_LogInvalidUserNotification_Node0{"The message rerouting is completed"}:::decision
N_LogInvalidUserNotification_Node0_action["The system logs an invalid user
notification for audit purposes"]:::main N_LogInvalidUserNotification_Node0 -- Yes --> N_LogInvalidUserNotification_Node0_action N_LogInvalidUserNotification_Node0_action --> E_LogInvalidUserNotification S_LogInvalidUserNotification --> N_LogInvalidUserNotification_Node0 N_LogInvalidUserNotification_Node0 -- No --> E_LogInvalidUserNotification
notification for audit purposes"]:::main N_LogInvalidUserNotification_Node0 -- Yes --> N_LogInvalidUserNotification_Node0_action N_LogInvalidUserNotification_Node0_action --> E_LogInvalidUserNotification S_LogInvalidUserNotification --> N_LogInvalidUserNotification_Node0 N_LogInvalidUserNotification_Node0 -- No --> E_LogInvalidUserNotification
File: GCX016.cbl
GIVEN:
A message has been rerouted due to invalid destination user
WHEN:
The message rerouting is completed
THEN:
The system logs an invalid user notification for audit purposes
β Consolidated Acceptance Criteria
- The logging process is completed → the system updates the message routing history with the rerouting details
- The system updates the message routing history → the routing history is updated with the rerouting event details including original destination, new destination, and reason for rerouting
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UpdateMessageRoutingHistory(["Start Step"])
E_UpdateMessageRoutingHistory(["End Step"])
N_UpdateMessageRoutingHistory_Node0{"The logging process is completed"}:::decision
N_UpdateMessageRoutingHistory_Node0_action["The system updates the message
routing history with the rerouting
details"]:::main N_UpdateMessageRoutingHistory_Node0 -- Yes --> N_UpdateMessageRoutingHistory_Node0_action N_UpdateMessageRoutingHistory_Node0_action --> E_UpdateMessageRoutingHistory S_UpdateMessageRoutingHistory --> N_UpdateMessageRoutingHistory_Node0 N_UpdateMessageRoutingHistory_Node1{"The system updates the message
routing history"}:::decision N_UpdateMessageRoutingHistory_Node1_action["The routing history is updated with
the rerouting event details
including original destination, new
destination, and reason for
rerouting"]:::main N_UpdateMessageRoutingHistory_Node1 -- Yes --> N_UpdateMessageRoutingHistory_Node1_action N_UpdateMessageRoutingHistory_Node1_action --> E_UpdateMessageRoutingHistory N_UpdateMessageRoutingHistory_Node0 -- No --> N_UpdateMessageRoutingHistory_Node1 N_UpdateMessageRoutingHistory_Node1 -- No --> E_UpdateMessageRoutingHistory
routing history with the rerouting
details"]:::main N_UpdateMessageRoutingHistory_Node0 -- Yes --> N_UpdateMessageRoutingHistory_Node0_action N_UpdateMessageRoutingHistory_Node0_action --> E_UpdateMessageRoutingHistory S_UpdateMessageRoutingHistory --> N_UpdateMessageRoutingHistory_Node0 N_UpdateMessageRoutingHistory_Node1{"The system updates the message
routing history"}:::decision N_UpdateMessageRoutingHistory_Node1_action["The routing history is updated with
the rerouting event details
including original destination, new
destination, and reason for
rerouting"]:::main N_UpdateMessageRoutingHistory_Node1 -- Yes --> N_UpdateMessageRoutingHistory_Node1_action N_UpdateMessageRoutingHistory_Node1_action --> E_UpdateMessageRoutingHistory N_UpdateMessageRoutingHistory_Node0 -- No --> N_UpdateMessageRoutingHistory_Node1 N_UpdateMessageRoutingHistory_Node1 -- No --> E_UpdateMessageRoutingHistory
File: GCX016.cbl
GIVEN:
An invalid user notification has been logged
WHEN:
The logging process is completed
THEN:
The system updates the message routing history with the rerouting details
File: GCX016.cbl
GIVEN:
A rerouting action has been logged
WHEN:
The system updates the message routing history
THEN:
The routing history is updated with the rerouting event details including original destination, new destination, and reason for rerouting
β Consolidated Acceptance Criteria
- The routing history update is completed → a notification is sent to the system administrator about the invalid user incident
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SendNotificationtoSystemAdmin(["Start Step"])
E_SendNotificationtoSystemAdmin(["End Step"])
N_SendNotificationtoSystemAdmin_Node0{"The routing history update is
completed"}:::decision N_SendNotificationtoSystemAdmin_Node0_action["A notification is sent to the
system administrator about the
invalid user incident"]:::main N_SendNotificationtoSystemAdmin_Node0 -- Yes --> N_SendNotificationtoSystemAdmin_Node0_action N_SendNotificationtoSystemAdmin_Node0_action --> E_SendNotificationtoSystemAdmin S_SendNotificationtoSystemAdmin --> N_SendNotificationtoSystemAdmin_Node0 N_SendNotificationtoSystemAdmin_Node0 -- No --> E_SendNotificationtoSystemAdmin
completed"}:::decision N_SendNotificationtoSystemAdmin_Node0_action["A notification is sent to the
system administrator about the
invalid user incident"]:::main N_SendNotificationtoSystemAdmin_Node0 -- Yes --> N_SendNotificationtoSystemAdmin_Node0_action N_SendNotificationtoSystemAdmin_Node0_action --> E_SendNotificationtoSystemAdmin S_SendNotificationtoSystemAdmin --> N_SendNotificationtoSystemAdmin_Node0 N_SendNotificationtoSystemAdmin_Node0 -- No --> E_SendNotificationtoSystemAdmin
File: GCX016.cbl
GIVEN:
The message routing history has been updated for an invalid user rerouting
WHEN:
The routing history update is completed
THEN:
A notification is sent to the system administrator about the invalid user incident
β Consolidated Acceptance Criteria
- The system needs to create an audit log entry → the system prepares a detailed log message containing cargo identification, processing context, and transaction details
- The system needs to log cargo information for audit purposes → the system shall prepare a log message containing cargo ID, current status, processing context, and transaction details
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_PrepareLogMessagewithCargoDetails(["Start Step"])
E_PrepareLogMessagewithCargoDetails(["End Step"])
N_PrepareLogMessagewithCargoDetails_Node0{"The system needs to create an audit
log entry"}:::decision N_PrepareLogMessagewithCargoDetails_Node0_action["The system prepares a detailed log
message containing cargo
identification, processing context,
and transaction details"]:::main N_PrepareLogMessagewithCargoDetails_Node0 -- Yes --> N_PrepareLogMessagewithCargoDetails_Node0_action N_PrepareLogMessagewithCargoDetails_Node0_action --> E_PrepareLogMessagewithCargoDetails S_PrepareLogMessagewithCargoDetails --> N_PrepareLogMessagewithCargoDetails_Node0 N_PrepareLogMessagewithCargoDetails_Node1{"The system needs to log cargo
information for audit purposes"}:::decision N_PrepareLogMessagewithCargoDetails_Node1_action["The system shall prepare a log
message containing cargo ID, current
status, processing context, and
transaction details"]:::main N_PrepareLogMessagewithCargoDetails_Node1 -- Yes --> N_PrepareLogMessagewithCargoDetails_Node1_action N_PrepareLogMessagewithCargoDetails_Node1_action --> E_PrepareLogMessagewithCargoDetails N_PrepareLogMessagewithCargoDetails_Node0 -- No --> N_PrepareLogMessagewithCargoDetails_Node1 N_PrepareLogMessagewithCargoDetails_Node1 -- No --> E_PrepareLogMessagewithCargoDetails
log entry"}:::decision N_PrepareLogMessagewithCargoDetails_Node0_action["The system prepares a detailed log
message containing cargo
identification, processing context,
and transaction details"]:::main N_PrepareLogMessagewithCargoDetails_Node0 -- Yes --> N_PrepareLogMessagewithCargoDetails_Node0_action N_PrepareLogMessagewithCargoDetails_Node0_action --> E_PrepareLogMessagewithCargoDetails S_PrepareLogMessagewithCargoDetails --> N_PrepareLogMessagewithCargoDetails_Node0 N_PrepareLogMessagewithCargoDetails_Node1{"The system needs to log cargo
information for audit purposes"}:::decision N_PrepareLogMessagewithCargoDetails_Node1_action["The system shall prepare a log
message containing cargo ID, current
status, processing context, and
transaction details"]:::main N_PrepareLogMessagewithCargoDetails_Node1 -- Yes --> N_PrepareLogMessagewithCargoDetails_Node1_action N_PrepareLogMessagewithCargoDetails_Node1_action --> E_PrepareLogMessagewithCargoDetails N_PrepareLogMessagewithCargoDetails_Node0 -- No --> N_PrepareLogMessagewithCargoDetails_Node1 N_PrepareLogMessagewithCargoDetails_Node1 -- No --> E_PrepareLogMessagewithCargoDetails
File: GCX016.cbl
GIVEN:
A cargo processing transaction is being executed
WHEN:
The system needs to create an audit log entry
THEN:
The system prepares a detailed log message containing cargo identification, processing context, and transaction details
File: GCX016.cbl
GIVEN:
A cargo processing transaction is being executed
WHEN:
The system needs to log cargo information for audit purposes
THEN:
The system shall prepare a log message containing cargo ID, current status, processing context, and transaction details
β Consolidated Acceptance Criteria
- Security information needs to be captured for audit purposes → the system includes current user security context, authentication details, and access permissions in the log entry
- The system is creating audit log entries → the system shall include user identification, security context, and authorization level information in the log message
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IncludeSecurityInformation(["Start Step"])
E_IncludeSecurityInformation(["End Step"])
N_IncludeSecurityInformation_Node0{"Security information needs to be
captured for audit purposes"}:::decision N_IncludeSecurityInformation_Node0_action["The system includes current user
security context, authentication
details, and access permissions in
the log entry"]:::main N_IncludeSecurityInformation_Node0 -- Yes --> N_IncludeSecurityInformation_Node0_action N_IncludeSecurityInformation_Node0_action --> E_IncludeSecurityInformation S_IncludeSecurityInformation --> N_IncludeSecurityInformation_Node0 N_IncludeSecurityInformation_Node1{"The system is creating audit log
entries"}:::decision N_IncludeSecurityInformation_Node1_action["The system shall include user
identification, security context,
and authorization level information
in the log message"]:::main N_IncludeSecurityInformation_Node1 -- Yes --> N_IncludeSecurityInformation_Node1_action N_IncludeSecurityInformation_Node1_action --> E_IncludeSecurityInformation N_IncludeSecurityInformation_Node0 -- No --> N_IncludeSecurityInformation_Node1 N_IncludeSecurityInformation_Node1 -- No --> E_IncludeSecurityInformation
captured for audit purposes"}:::decision N_IncludeSecurityInformation_Node0_action["The system includes current user
security context, authentication
details, and access permissions in
the log entry"]:::main N_IncludeSecurityInformation_Node0 -- Yes --> N_IncludeSecurityInformation_Node0_action N_IncludeSecurityInformation_Node0_action --> E_IncludeSecurityInformation S_IncludeSecurityInformation --> N_IncludeSecurityInformation_Node0 N_IncludeSecurityInformation_Node1{"The system is creating audit log
entries"}:::decision N_IncludeSecurityInformation_Node1_action["The system shall include user
identification, security context,
and authorization level information
in the log message"]:::main N_IncludeSecurityInformation_Node1 -- Yes --> N_IncludeSecurityInformation_Node1_action N_IncludeSecurityInformation_Node1_action --> E_IncludeSecurityInformation N_IncludeSecurityInformation_Node0 -- No --> N_IncludeSecurityInformation_Node1 N_IncludeSecurityInformation_Node1 -- No --> E_IncludeSecurityInformation
File: GCX016.cbl
GIVEN:
A log message is being prepared for cargo processing
WHEN:
Security information needs to be captured for audit purposes
THEN:
The system includes current user security context, authentication details, and access permissions in the log entry
File: GCX016.cbl
GIVEN:
A user is performing cargo processing operations
WHEN:
The system is creating audit log entries
THEN:
The system shall include user identification, security context, and authorization level information in the log message
β Consolidated Acceptance Criteria
- Transaction details need to be logged for audit purposes → the system adds transaction type, processing timestamps, transaction ID, and related context information to the log entry
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AddTransactionInformation(["Start Step"])
E_AddTransactionInformation(["End Step"])
N_AddTransactionInformation_Node0{"Transaction details need to be
logged for audit purposes"}:::decision N_AddTransactionInformation_Node0_action["The system adds transaction type,
processing timestamps, transaction
ID, and related context information
to the log entry"]:::main N_AddTransactionInformation_Node0 -- Yes --> N_AddTransactionInformation_Node0_action N_AddTransactionInformation_Node0_action --> E_AddTransactionInformation S_AddTransactionInformation --> N_AddTransactionInformation_Node0 N_AddTransactionInformation_Node0 -- No --> E_AddTransactionInformation
logged for audit purposes"}:::decision N_AddTransactionInformation_Node0_action["The system adds transaction type,
processing timestamps, transaction
ID, and related context information
to the log entry"]:::main N_AddTransactionInformation_Node0 -- Yes --> N_AddTransactionInformation_Node0_action N_AddTransactionInformation_Node0_action --> E_AddTransactionInformation S_AddTransactionInformation --> N_AddTransactionInformation_Node0 N_AddTransactionInformation_Node0 -- No --> E_AddTransactionInformation
File: GCX016.cbl
GIVEN:
A cargo processing transaction is in progress
WHEN:
Transaction details need to be logged for audit purposes
THEN:
The system adds transaction type, processing timestamps, transaction ID, and related context information to the log entry
β Consolidated Acceptance Criteria
- The system formats the cargo information for audit trail → the system structures cargo ID, waybill information, car details, manifest data, and processing status in a standardized log format
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_FormatCargoProcessingDetails(["Start Step"])
E_FormatCargoProcessingDetails(["End Step"])
N_FormatCargoProcessingDetails_Node0{"The system formats the cargo
information for audit trail"}:::decision N_FormatCargoProcessingDetails_Node0_action["The system structures cargo ID,
waybill information, car details,
manifest data, and processing status
in a standardized log format"]:::main N_FormatCargoProcessingDetails_Node0 -- Yes --> N_FormatCargoProcessingDetails_Node0_action N_FormatCargoProcessingDetails_Node0_action --> E_FormatCargoProcessingDetails S_FormatCargoProcessingDetails --> N_FormatCargoProcessingDetails_Node0 N_FormatCargoProcessingDetails_Node0 -- No --> E_FormatCargoProcessingDetails
information for audit trail"}:::decision N_FormatCargoProcessingDetails_Node0_action["The system structures cargo ID,
waybill information, car details,
manifest data, and processing status
in a standardized log format"]:::main N_FormatCargoProcessingDetails_Node0 -- Yes --> N_FormatCargoProcessingDetails_Node0_action N_FormatCargoProcessingDetails_Node0_action --> E_FormatCargoProcessingDetails S_FormatCargoProcessingDetails --> N_FormatCargoProcessingDetails_Node0 N_FormatCargoProcessingDetails_Node0 -- No --> E_FormatCargoProcessingDetails
File: GCX016.cbl
GIVEN:
Cargo processing details need to be logged
WHEN:
The system formats the cargo information for audit trail
THEN:
The system structures cargo ID, waybill information, car details, manifest data, and processing status in a standardized log format
β Consolidated Acceptance Criteria
- The processing details need to be logged for audit trail → the system includes disposition code value, description, processing action taken, and regulatory impact in the log entry
- The system is preparing audit log information → the system shall include the disposition code, its description, and the associated processing action in the log message
- Disposition code information needs to be logged → disposition code, description, and related processing details are included in the log message
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IncludeDispositionCodeInformation(["Start Step"])
E_IncludeDispositionCodeInformation(["End Step"])
N_IncludeDispositionCodeInformation_Node0{"The processing details need to be
logged for audit trail"}:::decision N_IncludeDispositionCodeInformation_Node0_action["The system includes disposition
code value, description, processing
action taken, and regulatory impact
in the log entry"]:::main N_IncludeDispositionCodeInformation_Node0 -- Yes --> N_IncludeDispositionCodeInformation_Node0_action N_IncludeDispositionCodeInformation_Node0_action --> E_IncludeDispositionCodeInformation S_IncludeDispositionCodeInformation --> N_IncludeDispositionCodeInformation_Node0 N_IncludeDispositionCodeInformation_Node1{"The system is preparing audit log
information"}:::decision N_IncludeDispositionCodeInformation_Node1_action["The system shall include the
disposition code, its description,
and the associated processing action
in the log message"]:::main N_IncludeDispositionCodeInformation_Node1 -- Yes --> N_IncludeDispositionCodeInformation_Node1_action N_IncludeDispositionCodeInformation_Node1_action --> E_IncludeDispositionCodeInformation N_IncludeDispositionCodeInformation_Node0 -- No --> N_IncludeDispositionCodeInformation_Node1 N_IncludeDispositionCodeInformation_Node2{"Disposition code information needs
to be logged"}:::decision N_IncludeDispositionCodeInformation_Node2_action["Disposition code, description, and
related processing details are
included in the log message"]:::main N_IncludeDispositionCodeInformation_Node2 -- Yes --> N_IncludeDispositionCodeInformation_Node2_action N_IncludeDispositionCodeInformation_Node2_action --> E_IncludeDispositionCodeInformation N_IncludeDispositionCodeInformation_Node1 -- No --> N_IncludeDispositionCodeInformation_Node2 N_IncludeDispositionCodeInformation_Node2 -- No --> E_IncludeDispositionCodeInformation
logged for audit trail"}:::decision N_IncludeDispositionCodeInformation_Node0_action["The system includes disposition
code value, description, processing
action taken, and regulatory impact
in the log entry"]:::main N_IncludeDispositionCodeInformation_Node0 -- Yes --> N_IncludeDispositionCodeInformation_Node0_action N_IncludeDispositionCodeInformation_Node0_action --> E_IncludeDispositionCodeInformation S_IncludeDispositionCodeInformation --> N_IncludeDispositionCodeInformation_Node0 N_IncludeDispositionCodeInformation_Node1{"The system is preparing audit log
information"}:::decision N_IncludeDispositionCodeInformation_Node1_action["The system shall include the
disposition code, its description,
and the associated processing action
in the log message"]:::main N_IncludeDispositionCodeInformation_Node1 -- Yes --> N_IncludeDispositionCodeInformation_Node1_action N_IncludeDispositionCodeInformation_Node1_action --> E_IncludeDispositionCodeInformation N_IncludeDispositionCodeInformation_Node0 -- No --> N_IncludeDispositionCodeInformation_Node1 N_IncludeDispositionCodeInformation_Node2{"Disposition code information needs
to be logged"}:::decision N_IncludeDispositionCodeInformation_Node2_action["Disposition code, description, and
related processing details are
included in the log message"]:::main N_IncludeDispositionCodeInformation_Node2 -- Yes --> N_IncludeDispositionCodeInformation_Node2_action N_IncludeDispositionCodeInformation_Node2_action --> E_IncludeDispositionCodeInformation N_IncludeDispositionCodeInformation_Node1 -- No --> N_IncludeDispositionCodeInformation_Node2 N_IncludeDispositionCodeInformation_Node2 -- No --> E_IncludeDispositionCodeInformation
File: GCX016.cbl
GIVEN:
A disposition code is being processed for cargo
WHEN:
The processing details need to be logged for audit trail
THEN:
The system includes disposition code value, description, processing action taken, and regulatory impact in the log entry
File: GCX016.cbl
GIVEN:
A cargo processing transaction involves disposition code changes
WHEN:
The system is preparing audit log information
THEN:
The system shall include the disposition code, its description, and the associated processing action in the log message
File: GCX016.cbl
GIVEN:
Cargo processing involves disposition codes
WHEN:
Disposition code information needs to be logged
THEN:
Disposition code, description, and related processing details are included in the log message
β Consolidated Acceptance Criteria
- Status changes need to be logged for audit trail → the system documents previous status, new status, reason for change, and timestamp of status transition in the log entry
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IncludeStatusChanges(["Start Step"])
E_IncludeStatusChanges(["End Step"])
N_IncludeStatusChanges_Node0{"Status changes need to be logged
for audit trail"}:::decision N_IncludeStatusChanges_Node0_action["The system documents previous
status, new status, reason for
change, and timestamp of status
transition in the log entry"]:::main N_IncludeStatusChanges_Node0 -- Yes --> N_IncludeStatusChanges_Node0_action N_IncludeStatusChanges_Node0_action --> E_IncludeStatusChanges S_IncludeStatusChanges --> N_IncludeStatusChanges_Node0 N_IncludeStatusChanges_Node0 -- No --> E_IncludeStatusChanges
for audit trail"}:::decision N_IncludeStatusChanges_Node0_action["The system documents previous
status, new status, reason for
change, and timestamp of status
transition in the log entry"]:::main N_IncludeStatusChanges_Node0 -- Yes --> N_IncludeStatusChanges_Node0_action N_IncludeStatusChanges_Node0_action --> E_IncludeStatusChanges S_IncludeStatusChanges --> N_IncludeStatusChanges_Node0 N_IncludeStatusChanges_Node0 -- No --> E_IncludeStatusChanges
File: GCX016.cbl
GIVEN:
Cargo status is being updated during processing
WHEN:
Status changes need to be logged for audit trail
THEN:
The system documents previous status, new status, reason for change, and timestamp of status transition in the log entry
β Consolidated Acceptance Criteria
- Audit trail parameters need to be configured → the system sets log classification, retention period, access controls, and regulatory compliance flags for the audit entry
- The system sets audit trail parameters for retention and compliance → audit trail parameters are properly configured for regulatory compliance
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetAuditTrailParameters(["Start Step"])
E_SetAuditTrailParameters(["End Step"])
N_SetAuditTrailParameters_Node0{"Audit trail parameters need to be
configured"}:::decision N_SetAuditTrailParameters_Node0_action["The system sets log classification,
retention period, access controls,
and regulatory compliance flags for
the audit entry"]:::main N_SetAuditTrailParameters_Node0 -- Yes --> N_SetAuditTrailParameters_Node0_action N_SetAuditTrailParameters_Node0_action --> E_SetAuditTrailParameters S_SetAuditTrailParameters --> N_SetAuditTrailParameters_Node0 N_SetAuditTrailParameters_Node1{"The system sets audit trail
parameters for retention and
compliance"}:::decision N_SetAuditTrailParameters_Node1_action["Audit trail parameters are properly
configured for regulatory compliance"]:::main N_SetAuditTrailParameters_Node1 -- Yes --> N_SetAuditTrailParameters_Node1_action N_SetAuditTrailParameters_Node1_action --> E_SetAuditTrailParameters N_SetAuditTrailParameters_Node0 -- No --> N_SetAuditTrailParameters_Node1 N_SetAuditTrailParameters_Node1 -- No --> E_SetAuditTrailParameters
configured"}:::decision N_SetAuditTrailParameters_Node0_action["The system sets log classification,
retention period, access controls,
and regulatory compliance flags for
the audit entry"]:::main N_SetAuditTrailParameters_Node0 -- Yes --> N_SetAuditTrailParameters_Node0_action N_SetAuditTrailParameters_Node0_action --> E_SetAuditTrailParameters S_SetAuditTrailParameters --> N_SetAuditTrailParameters_Node0 N_SetAuditTrailParameters_Node1{"The system sets audit trail
parameters for retention and
compliance"}:::decision N_SetAuditTrailParameters_Node1_action["Audit trail parameters are properly
configured for regulatory compliance"]:::main N_SetAuditTrailParameters_Node1 -- Yes --> N_SetAuditTrailParameters_Node1_action N_SetAuditTrailParameters_Node1_action --> E_SetAuditTrailParameters N_SetAuditTrailParameters_Node0 -- No --> N_SetAuditTrailParameters_Node1 N_SetAuditTrailParameters_Node1 -- No --> E_SetAuditTrailParameters
File: GCX016.cbl
GIVEN:
An audit log entry is being prepared
WHEN:
Audit trail parameters need to be configured
THEN:
The system sets log classification, retention period, access controls, and regulatory compliance flags for the audit entry
File: GCX016.cbl
GIVEN:
Processing timestamps have been added to the audit record
WHEN:
- The system sets audit trail parameters for retention
- Compliance
THEN:
Audit trail parameters are properly configured for regulatory compliance
β Consolidated Acceptance Criteria
- The log entry needs to be persisted to the audit system → the system spawns GCT1051E logging transaction with the prepared audit data and monitors execution status
- The system needs to record the audit log entry → the system shall spawn GCT1051E logging transaction excluding disposition codes 54 and 55 from logging
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SpawnGCT1051ELoggingTransaction(["Start Step"])
E_SpawnGCT1051ELoggingTransaction(["End Step"])
N_SpawnGCT1051ELoggingTransaction_Node0{"The log entry needs to be persisted
to the audit system"}:::decision N_SpawnGCT1051ELoggingTransaction_Node0_action["The system spawns GCT1051E logging
transaction with the prepared audit
data and monitors execution status"]:::main N_SpawnGCT1051ELoggingTransaction_Node0 -- Yes --> N_SpawnGCT1051ELoggingTransaction_Node0_action N_SpawnGCT1051ELoggingTransaction_Node0_action --> E_SpawnGCT1051ELoggingTransaction S_SpawnGCT1051ELoggingTransaction --> N_SpawnGCT1051ELoggingTransaction_Node0 N_SpawnGCT1051ELoggingTransaction_Node1{"The system needs to record the
audit log entry"}:::decision N_SpawnGCT1051ELoggingTransaction_Node1_action["The system shall spawn GCT1051E
logging transaction excluding
disposition codes 54 and 55 from
logging"]:::main N_SpawnGCT1051ELoggingTransaction_Node1 -- Yes --> N_SpawnGCT1051ELoggingTransaction_Node1_action N_SpawnGCT1051ELoggingTransaction_Node1_action --> E_SpawnGCT1051ELoggingTransaction N_SpawnGCT1051ELoggingTransaction_Node0 -- No --> N_SpawnGCT1051ELoggingTransaction_Node1 N_SpawnGCT1051ELoggingTransaction_Node1 -- No --> E_SpawnGCT1051ELoggingTransaction
to the audit system"}:::decision N_SpawnGCT1051ELoggingTransaction_Node0_action["The system spawns GCT1051E logging
transaction with the prepared audit
data and monitors execution status"]:::main N_SpawnGCT1051ELoggingTransaction_Node0 -- Yes --> N_SpawnGCT1051ELoggingTransaction_Node0_action N_SpawnGCT1051ELoggingTransaction_Node0_action --> E_SpawnGCT1051ELoggingTransaction S_SpawnGCT1051ELoggingTransaction --> N_SpawnGCT1051ELoggingTransaction_Node0 N_SpawnGCT1051ELoggingTransaction_Node1{"The system needs to record the
audit log entry"}:::decision N_SpawnGCT1051ELoggingTransaction_Node1_action["The system shall spawn GCT1051E
logging transaction excluding
disposition codes 54 and 55 from
logging"]:::main N_SpawnGCT1051ELoggingTransaction_Node1 -- Yes --> N_SpawnGCT1051ELoggingTransaction_Node1_action N_SpawnGCT1051ELoggingTransaction_Node1_action --> E_SpawnGCT1051ELoggingTransaction N_SpawnGCT1051ELoggingTransaction_Node0 -- No --> N_SpawnGCT1051ELoggingTransaction_Node1 N_SpawnGCT1051ELoggingTransaction_Node1 -- No --> E_SpawnGCT1051ELoggingTransaction
File: GCX016.cbl
GIVEN:
A complete audit log entry has been prepared
WHEN:
The log entry needs to be persisted to the audit system
THEN:
- The system spawns gct1051e logging transaction with the prepared audit data
- Monitors execution status
File: GCX016.cbl
GIVEN:
A log message is prepared with all required parameters and cargo processing information
WHEN:
The system needs to record the audit log entry
THEN:
- The system shall spawn gct1051e logging transaction excluding disposition codes 54
- 55 from logging
β Consolidated Acceptance Criteria
- The system needs to verify logging completion status → the system checks transaction completion status and determines whether logging was successful or encountered errors
- The logging transaction completes execution → the system shall verify if logging was successful and branch to appropriate processing path based on the result
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LoggingSuccessful(["Start Step"])
E_LoggingSuccessful(["End Step"])
N_LoggingSuccessful_Node0{"The system needs to verify logging
completion status"}:::decision N_LoggingSuccessful_Node0_action["The system checks transaction
completion status and determines
whether logging was successful or
encountered errors"]:::main N_LoggingSuccessful_Node0 -- Yes --> N_LoggingSuccessful_Node0_action N_LoggingSuccessful_Node0_action --> E_LoggingSuccessful S_LoggingSuccessful --> N_LoggingSuccessful_Node0 N_LoggingSuccessful_Node1{"The logging transaction completes
execution"}:::decision N_LoggingSuccessful_Node1_action["The system shall verify if logging
was successful and branch to
appropriate processing path based on
the result"]:::main N_LoggingSuccessful_Node1 -- Yes --> N_LoggingSuccessful_Node1_action N_LoggingSuccessful_Node1_action --> E_LoggingSuccessful N_LoggingSuccessful_Node0 -- No --> N_LoggingSuccessful_Node1 N_LoggingSuccessful_Node1 -- No --> E_LoggingSuccessful
completion status"}:::decision N_LoggingSuccessful_Node0_action["The system checks transaction
completion status and determines
whether logging was successful or
encountered errors"]:::main N_LoggingSuccessful_Node0 -- Yes --> N_LoggingSuccessful_Node0_action N_LoggingSuccessful_Node0_action --> E_LoggingSuccessful S_LoggingSuccessful --> N_LoggingSuccessful_Node0 N_LoggingSuccessful_Node1{"The logging transaction completes
execution"}:::decision N_LoggingSuccessful_Node1_action["The system shall verify if logging
was successful and branch to
appropriate processing path based on
the result"]:::main N_LoggingSuccessful_Node1 -- Yes --> N_LoggingSuccessful_Node1_action N_LoggingSuccessful_Node1_action --> E_LoggingSuccessful N_LoggingSuccessful_Node0 -- No --> N_LoggingSuccessful_Node1 N_LoggingSuccessful_Node1 -- No --> E_LoggingSuccessful
File: GCX016.cbl
GIVEN:
A logging transaction has been executed
WHEN:
The system needs to verify logging completion status
THEN:
- The system checks transaction completion status
- Determines whether logging was successful or encountered errors
File: GCX016.cbl
GIVEN:
The GCT1051E logging transaction has been invoked
WHEN:
The logging transaction completes execution
THEN:
- The system shall verify if logging was successful
- Branch to appropriate processing path based on the result
β Consolidated Acceptance Criteria
- Confirmation of successful log creation is needed → the system confirms audit log entry was created successfully and updates processing status to reflect successful logging
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogEntryCreatedSuccessfully(["Start Step"])
E_LogEntryCreatedSuccessfully(["End Step"])
N_LogEntryCreatedSuccessfully_Node0{"Confirmation of successful log
creation is needed"}:::decision N_LogEntryCreatedSuccessfully_Node0_action["The system confirms audit log entry
was created successfully and updates
processing status to reflect
successful logging"]:::main N_LogEntryCreatedSuccessfully_Node0 -- Yes --> N_LogEntryCreatedSuccessfully_Node0_action N_LogEntryCreatedSuccessfully_Node0_action --> E_LogEntryCreatedSuccessfully S_LogEntryCreatedSuccessfully --> N_LogEntryCreatedSuccessfully_Node0 N_LogEntryCreatedSuccessfully_Node0 -- No --> E_LogEntryCreatedSuccessfully
creation is needed"}:::decision N_LogEntryCreatedSuccessfully_Node0_action["The system confirms audit log entry
was created successfully and updates
processing status to reflect
successful logging"]:::main N_LogEntryCreatedSuccessfully_Node0 -- Yes --> N_LogEntryCreatedSuccessfully_Node0_action N_LogEntryCreatedSuccessfully_Node0_action --> E_LogEntryCreatedSuccessfully S_LogEntryCreatedSuccessfully --> N_LogEntryCreatedSuccessfully_Node0 N_LogEntryCreatedSuccessfully_Node0 -- No --> E_LogEntryCreatedSuccessfully
File: GCX016.cbl
GIVEN:
The logging transaction completed successfully
WHEN:
Confirmation of successful log creation is needed
THEN:
- The system confirms audit log entry was created successfully
- Updates processing status to reflect successful logging
β Consolidated Acceptance Criteria
- Logging failure needs to be handled → the system captures error details, implements fallback logging mechanisms if available, and ensures main processing can continue despite logging failure
- Error handling is required → appropriate error handling procedures are executed and error status is recorded
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_HandleLoggingError(["Start Step"])
E_HandleLoggingError(["End Step"])
N_HandleLoggingError_Node0{"Logging failure needs to be handled"}:::decision
N_HandleLoggingError_Node0_action["The system captures error details,
implements fallback logging
mechanisms if available, and ensures
main processing can continue despite
logging failure"]:::main N_HandleLoggingError_Node0 -- Yes --> N_HandleLoggingError_Node0_action N_HandleLoggingError_Node0_action --> E_HandleLoggingError S_HandleLoggingError --> N_HandleLoggingError_Node0 N_HandleLoggingError_Node1{"Error handling is required"}:::decision N_HandleLoggingError_Node1_action["Appropriate error handling
procedures are executed and error
status is recorded"]:::exclusion N_HandleLoggingError_Node1 -- Yes -->|Alternative| N_HandleLoggingError_Node1_action N_HandleLoggingError_Node1_action --> E_HandleLoggingError N_HandleLoggingError_Node0 -- No --> N_HandleLoggingError_Node1 N_HandleLoggingError_Node1 -- No --> E_HandleLoggingError
implements fallback logging
mechanisms if available, and ensures
main processing can continue despite
logging failure"]:::main N_HandleLoggingError_Node0 -- Yes --> N_HandleLoggingError_Node0_action N_HandleLoggingError_Node0_action --> E_HandleLoggingError S_HandleLoggingError --> N_HandleLoggingError_Node0 N_HandleLoggingError_Node1{"Error handling is required"}:::decision N_HandleLoggingError_Node1_action["Appropriate error handling
procedures are executed and error
status is recorded"]:::exclusion N_HandleLoggingError_Node1 -- Yes -->|Alternative| N_HandleLoggingError_Node1_action N_HandleLoggingError_Node1_action --> E_HandleLoggingError N_HandleLoggingError_Node0 -- No --> N_HandleLoggingError_Node1 N_HandleLoggingError_Node1 -- No --> E_HandleLoggingError
File: GCX016.cbl
GIVEN:
The logging transaction encountered an error
WHEN:
Logging failure needs to be handled
THEN:
The system captures error details, implements fallback logging mechanisms if available, and ensures main processing can continue despite logging failure
File: GCX016.cbl
GIVEN:
An error occurred during cargo logging transaction
WHEN:
Error handling is required
THEN:
- Appropriate error handling procedures are executed
- Error status is recorded
β Consolidated Acceptance Criteria
- Security information needs to be gathered for audit purposes → the system collects user ID, terminal ID, and security level and includes them in the log message structure
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GatherSecurityInformation(["Start Step"])
E_GatherSecurityInformation(["End Step"])
N_GatherSecurityInformation_Node0{"Security information needs to be
gathered for audit purposes"}:::decision N_GatherSecurityInformation_Node0_action["The system collects user ID,
terminal ID, and security level and
includes them in the log message
structure"]:::main N_GatherSecurityInformation_Node0 -- Yes --> N_GatherSecurityInformation_Node0_action N_GatherSecurityInformation_Node0_action --> E_GatherSecurityInformation S_GatherSecurityInformation --> N_GatherSecurityInformation_Node0 N_GatherSecurityInformation_Node0 -- No --> E_GatherSecurityInformation
gathered for audit purposes"}:::decision N_GatherSecurityInformation_Node0_action["The system collects user ID,
terminal ID, and security level and
includes them in the log message
structure"]:::main N_GatherSecurityInformation_Node0 -- Yes --> N_GatherSecurityInformation_Node0_action N_GatherSecurityInformation_Node0_action --> E_GatherSecurityInformation S_GatherSecurityInformation --> N_GatherSecurityInformation_Node0 N_GatherSecurityInformation_Node0 -- No --> E_GatherSecurityInformation
File: GCX016.cbl
GIVEN:
A log message preparation process is initiated
WHEN:
Security information needs to be gathered for audit purposes
THEN:
- The system collects user id, terminal id, and security level
- Includes them in the log message structure
β Consolidated Acceptance Criteria
- Transaction details need to be collected for the log message → the system captures transaction type, processing mode, and message source and formats them for inclusion in the log
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CollectTransactionDetails(["Start Step"])
E_CollectTransactionDetails(["End Step"])
N_CollectTransactionDetails_Node0{"Transaction details need to be
collected for the log message"}:::decision N_CollectTransactionDetails_Node0_action["The system captures transaction
type, processing mode, and message
source and formats them for
inclusion in the log"]:::main N_CollectTransactionDetails_Node0 -- Yes --> N_CollectTransactionDetails_Node0_action N_CollectTransactionDetails_Node0_action --> E_CollectTransactionDetails S_CollectTransactionDetails --> N_CollectTransactionDetails_Node0 N_CollectTransactionDetails_Node0 -- No --> E_CollectTransactionDetails
collected for the log message"}:::decision N_CollectTransactionDetails_Node0_action["The system captures transaction
type, processing mode, and message
source and formats them for
inclusion in the log"]:::main N_CollectTransactionDetails_Node0 -- Yes --> N_CollectTransactionDetails_Node0_action N_CollectTransactionDetails_Node0_action --> E_CollectTransactionDetails S_CollectTransactionDetails --> N_CollectTransactionDetails_Node0 N_CollectTransactionDetails_Node0 -- No --> E_CollectTransactionDetails
File: GCX016.cbl
GIVEN:
A transaction is being processed that requires logging
WHEN:
Transaction details need to be collected for the log message
THEN:
- The system captures transaction type, processing mode, and message source
- Formats them for inclusion in the log
β Consolidated Acceptance Criteria
- Cargo information needs to be formatted for the log message → the system formats cargo ID information, status changes, and quantity details into the appropriate log message structure
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_FormatCargoProcessingInformation(["Start Step"])
E_FormatCargoProcessingInformation(["End Step"])
N_FormatCargoProcessingInformation_Node0{"Cargo information needs to be
formatted for the log message"}:::decision N_FormatCargoProcessingInformation_Node0_action["The system formats cargo ID
information, status changes, and
quantity details into the
appropriate log message structure"]:::main N_FormatCargoProcessingInformation_Node0 -- Yes --> N_FormatCargoProcessingInformation_Node0_action N_FormatCargoProcessingInformation_Node0_action --> E_FormatCargoProcessingInformation S_FormatCargoProcessingInformation --> N_FormatCargoProcessingInformation_Node0 N_FormatCargoProcessingInformation_Node0 -- No --> E_FormatCargoProcessingInformation
formatted for the log message"}:::decision N_FormatCargoProcessingInformation_Node0_action["The system formats cargo ID
information, status changes, and
quantity details into the
appropriate log message structure"]:::main N_FormatCargoProcessingInformation_Node0 -- Yes --> N_FormatCargoProcessingInformation_Node0_action N_FormatCargoProcessingInformation_Node0_action --> E_FormatCargoProcessingInformation S_FormatCargoProcessingInformation --> N_FormatCargoProcessingInformation_Node0 N_FormatCargoProcessingInformation_Node0 -- No --> E_FormatCargoProcessingInformation
File: GCX016.cbl
GIVEN:
Cargo processing activities have occurred that need to be logged
WHEN:
Cargo information needs to be formatted for the log message
THEN:
The system formats cargo ID information, status changes, and quantity details into the appropriate log message structure
β Consolidated Acceptance Criteria
- Disposition code details need to be included in the log message → the system includes the disposition code, its description, and the processing action taken in the log message
- The system includes disposition code details and associated processing actions → complete disposition code information is included in the audit trail record
- The system adds disposition code details to the message → disposition code and its description are included in the hold message
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IncludeDispositionCodeDetails(["Start Step"])
E_IncludeDispositionCodeDetails(["End Step"])
N_IncludeDispositionCodeDetails_Node0{"Disposition code details need to be
included in the log message"}:::decision N_IncludeDispositionCodeDetails_Node0_action["The system includes the disposition
code, its description, and the
processing action taken in the log
message"]:::main N_IncludeDispositionCodeDetails_Node0 -- Yes --> N_IncludeDispositionCodeDetails_Node0_action N_IncludeDispositionCodeDetails_Node0_action --> E_IncludeDispositionCodeDetails S_IncludeDispositionCodeDetails --> N_IncludeDispositionCodeDetails_Node0 N_IncludeDispositionCodeDetails_Node1{"The system includes disposition
code details and associated
processing actions"}:::decision N_IncludeDispositionCodeDetails_Node1_action["Complete disposition code
information is included in the audit
trail record"]:::main N_IncludeDispositionCodeDetails_Node1 -- Yes --> N_IncludeDispositionCodeDetails_Node1_action N_IncludeDispositionCodeDetails_Node1_action --> E_IncludeDispositionCodeDetails N_IncludeDispositionCodeDetails_Node0 -- No --> N_IncludeDispositionCodeDetails_Node1 N_IncludeDispositionCodeDetails_Node2{"The system adds disposition code
details to the message"}:::decision N_IncludeDispositionCodeDetails_Node2_action["Disposition code and its
description are included in the hold
message"]:::main N_IncludeDispositionCodeDetails_Node2 -- Yes --> N_IncludeDispositionCodeDetails_Node2_action N_IncludeDispositionCodeDetails_Node2_action --> E_IncludeDispositionCodeDetails N_IncludeDispositionCodeDetails_Node1 -- No --> N_IncludeDispositionCodeDetails_Node2 N_IncludeDispositionCodeDetails_Node2 -- No --> E_IncludeDispositionCodeDetails
included in the log message"}:::decision N_IncludeDispositionCodeDetails_Node0_action["The system includes the disposition
code, its description, and the
processing action taken in the log
message"]:::main N_IncludeDispositionCodeDetails_Node0 -- Yes --> N_IncludeDispositionCodeDetails_Node0_action N_IncludeDispositionCodeDetails_Node0_action --> E_IncludeDispositionCodeDetails S_IncludeDispositionCodeDetails --> N_IncludeDispositionCodeDetails_Node0 N_IncludeDispositionCodeDetails_Node1{"The system includes disposition
code details and associated
processing actions"}:::decision N_IncludeDispositionCodeDetails_Node1_action["Complete disposition code
information is included in the audit
trail record"]:::main N_IncludeDispositionCodeDetails_Node1 -- Yes --> N_IncludeDispositionCodeDetails_Node1_action N_IncludeDispositionCodeDetails_Node1_action --> E_IncludeDispositionCodeDetails N_IncludeDispositionCodeDetails_Node0 -- No --> N_IncludeDispositionCodeDetails_Node1 N_IncludeDispositionCodeDetails_Node2{"The system adds disposition code
details to the message"}:::decision N_IncludeDispositionCodeDetails_Node2_action["Disposition code and its
description are included in the hold
message"]:::main N_IncludeDispositionCodeDetails_Node2 -- Yes --> N_IncludeDispositionCodeDetails_Node2_action N_IncludeDispositionCodeDetails_Node2_action --> E_IncludeDispositionCodeDetails N_IncludeDispositionCodeDetails_Node1 -- No --> N_IncludeDispositionCodeDetails_Node2 N_IncludeDispositionCodeDetails_Node2 -- No --> E_IncludeDispositionCodeDetails
File: GCX016.cbl
GIVEN:
A disposition code has been processed for cargo
WHEN:
Disposition code details need to be included in the log message
THEN:
The system includes the disposition code, its description, and the processing action taken in the log message
File: GCX016.cbl
GIVEN:
Cargo information has been formatted for the audit record
WHEN:
- The system includes disposition code details
- Associated processing actions
THEN:
Complete disposition code information is included in the audit trail record
File: GCX016.cbl
GIVEN:
Hold message formatting is in progress
WHEN:
The system adds disposition code details to the message
THEN:
- Disposition code
- Its description are included in the hold message
β Consolidated Acceptance Criteria
- Timestamp information needs to be added to the log → the system adds processing date, processing time, and system timestamp to provide complete temporal context
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AddTimestampInformation(["Start Step"])
E_AddTimestampInformation(["End Step"])
N_AddTimestampInformation_Node0{"Timestamp information needs to be
added to the log"}:::decision N_AddTimestampInformation_Node0_action["The system adds processing date,
processing time, and system
timestamp to provide complete
temporal context"]:::main N_AddTimestampInformation_Node0 -- Yes --> N_AddTimestampInformation_Node0_action N_AddTimestampInformation_Node0_action --> E_AddTimestampInformation S_AddTimestampInformation --> N_AddTimestampInformation_Node0 N_AddTimestampInformation_Node0 -- No --> E_AddTimestampInformation
added to the log"}:::decision N_AddTimestampInformation_Node0_action["The system adds processing date,
processing time, and system
timestamp to provide complete
temporal context"]:::main N_AddTimestampInformation_Node0 -- Yes --> N_AddTimestampInformation_Node0_action N_AddTimestampInformation_Node0_action --> E_AddTimestampInformation S_AddTimestampInformation --> N_AddTimestampInformation_Node0 N_AddTimestampInformation_Node0 -- No --> E_AddTimestampInformation
File: GCX016.cbl
GIVEN:
A log message is being prepared
WHEN:
Timestamp information needs to be added to the log
THEN:
The system adds processing date, processing time, and system timestamp to provide complete temporal context
β Consolidated Acceptance Criteria
- User and terminal context needs to be established → the system sets the user context and terminal context information in the log message structure
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetUserandTerminalContext(["Start Step"])
E_SetUserandTerminalContext(["End Step"])
N_SetUserandTerminalContext_Node0{"User and terminal context needs to
be established"}:::decision N_SetUserandTerminalContext_Node0_action["The system sets the user context
and terminal context information in
the log message structure"]:::main N_SetUserandTerminalContext_Node0 -- Yes --> N_SetUserandTerminalContext_Node0_action N_SetUserandTerminalContext_Node0_action --> E_SetUserandTerminalContext S_SetUserandTerminalContext --> N_SetUserandTerminalContext_Node0 N_SetUserandTerminalContext_Node0 -- No --> E_SetUserandTerminalContext
be established"}:::decision N_SetUserandTerminalContext_Node0_action["The system sets the user context
and terminal context information in
the log message structure"]:::main N_SetUserandTerminalContext_Node0 -- Yes --> N_SetUserandTerminalContext_Node0_action N_SetUserandTerminalContext_Node0_action --> E_SetUserandTerminalContext S_SetUserandTerminalContext --> N_SetUserandTerminalContext_Node0 N_SetUserandTerminalContext_Node0 -- No --> E_SetUserandTerminalContext
File: GCX016.cbl
GIVEN:
A transaction is being logged
WHEN:
- User
- Terminal context needs to be established
THEN:
- The system sets the user context
- Terminal context information in the log message structure
β Consolidated Acceptance Criteria
- Audit trail data needs to be prepared for the log → the system captures the before status, after status, and change reason to create a complete audit trail record
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_PrepareAuditTrailData(["Start Step"])
E_PrepareAuditTrailData(["End Step"])
N_PrepareAuditTrailData_Node0{"Audit trail data needs to be
prepared for the log"}:::decision N_PrepareAuditTrailData_Node0_action["The system captures the before
status, after status, and change
reason to create a complete audit
trail record"]:::main N_PrepareAuditTrailData_Node0 -- Yes --> N_PrepareAuditTrailData_Node0_action N_PrepareAuditTrailData_Node0_action --> E_PrepareAuditTrailData S_PrepareAuditTrailData --> N_PrepareAuditTrailData_Node0 N_PrepareAuditTrailData_Node0 -- No --> E_PrepareAuditTrailData
prepared for the log"}:::decision N_PrepareAuditTrailData_Node0_action["The system captures the before
status, after status, and change
reason to create a complete audit
trail record"]:::main N_PrepareAuditTrailData_Node0 -- Yes --> N_PrepareAuditTrailData_Node0_action N_PrepareAuditTrailData_Node0_action --> E_PrepareAuditTrailData S_PrepareAuditTrailData --> N_PrepareAuditTrailData_Node0 N_PrepareAuditTrailData_Node0 -- No --> E_PrepareAuditTrailData
File: GCX016.cbl
GIVEN:
A status change or transaction has occurred that requires audit tracking
WHEN:
Audit trail data needs to be prepared for the log
THEN:
The system captures the before status, after status, and change reason to create a complete audit trail record
β Consolidated Acceptance Criteria
- The log message structure needs to be formatted → the system formats all components into a standardized log message structure ready for transmission
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_FormatLogMessageStructure(["Start Step"])
E_FormatLogMessageStructure(["End Step"])
N_FormatLogMessageStructure_Node0{"The log message structure needs to
be formatted"}:::decision N_FormatLogMessageStructure_Node0_action["The system formats all components
into a standardized log message
structure ready for transmission"]:::main N_FormatLogMessageStructure_Node0 -- Yes --> N_FormatLogMessageStructure_Node0_action N_FormatLogMessageStructure_Node0_action --> E_FormatLogMessageStructure S_FormatLogMessageStructure --> N_FormatLogMessageStructure_Node0 N_FormatLogMessageStructure_Node0 -- No --> E_FormatLogMessageStructure
be formatted"}:::decision N_FormatLogMessageStructure_Node0_action["The system formats all components
into a standardized log message
structure ready for transmission"]:::main N_FormatLogMessageStructure_Node0 -- Yes --> N_FormatLogMessageStructure_Node0_action N_FormatLogMessageStructure_Node0_action --> E_FormatLogMessageStructure S_FormatLogMessageStructure --> N_FormatLogMessageStructure_Node0 N_FormatLogMessageStructure_Node0 -- No --> E_FormatLogMessageStructure
File: GCX016.cbl
GIVEN:
All log message components have been collected
WHEN:
The log message structure needs to be formatted
THEN:
The system formats all components into a standardized log message structure ready for transmission
β Consolidated Acceptance Criteria
- Message completeness needs to be validated → the system validates that all required fields are populated and the message structure is complete before proceeding
- System validates message completeness and format → message completeness and integrity are verified
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ValidateMessageCompleteness(["Start Step"])
E_ValidateMessageCompleteness(["End Step"])
N_ValidateMessageCompleteness_Node0{"Message completeness needs to be
validated"}:::decision N_ValidateMessageCompleteness_Node0_action["The system validates that all
required fields are populated and
the message structure is complete
before proceeding"]:::main N_ValidateMessageCompleteness_Node0 -- Yes --> N_ValidateMessageCompleteness_Node0_action N_ValidateMessageCompleteness_Node0_action --> E_ValidateMessageCompleteness S_ValidateMessageCompleteness --> N_ValidateMessageCompleteness_Node0 N_ValidateMessageCompleteness_Node1{"system validates message
completeness and format"}:::decision N_ValidateMessageCompleteness_Node1_action["message completeness and integrity
are verified"]:::main N_ValidateMessageCompleteness_Node1 -- Yes --> N_ValidateMessageCompleteness_Node1_action N_ValidateMessageCompleteness_Node1_action --> E_ValidateMessageCompleteness N_ValidateMessageCompleteness_Node0 -- No --> N_ValidateMessageCompleteness_Node1 N_ValidateMessageCompleteness_Node1 -- No --> E_ValidateMessageCompleteness
validated"}:::decision N_ValidateMessageCompleteness_Node0_action["The system validates that all
required fields are populated and
the message structure is complete
before proceeding"]:::main N_ValidateMessageCompleteness_Node0 -- Yes --> N_ValidateMessageCompleteness_Node0_action N_ValidateMessageCompleteness_Node0_action --> E_ValidateMessageCompleteness S_ValidateMessageCompleteness --> N_ValidateMessageCompleteness_Node0 N_ValidateMessageCompleteness_Node1{"system validates message
completeness and format"}:::decision N_ValidateMessageCompleteness_Node1_action["message completeness and integrity
are verified"]:::main N_ValidateMessageCompleteness_Node1 -- Yes --> N_ValidateMessageCompleteness_Node1_action N_ValidateMessageCompleteness_Node1_action --> E_ValidateMessageCompleteness N_ValidateMessageCompleteness_Node0 -- No --> N_ValidateMessageCompleteness_Node1 N_ValidateMessageCompleteness_Node1 -- No --> E_ValidateMessageCompleteness
File: GCX016.cbl
GIVEN:
A log message has been formatted
WHEN:
Message completeness needs to be validated
THEN:
- The system validates that all required fields are populated
- The message structure is complete before proceeding
File: GCX016.cbl
GIVEN:
message array is processed
WHEN:
- System validates message completeness
- Format
THEN:
- Message completeness
- Integrity are verified
β Consolidated Acceptance Criteria
- Message priority and type need to be assigned → the system sets the appropriate priority level and message type based on the transaction characteristics and business rules
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetMessagePriorityandType(["Start Step"])
E_SetMessagePriorityandType(["End Step"])
N_SetMessagePriorityandType_Node0{"Message priority and type need to
be assigned"}:::decision N_SetMessagePriorityandType_Node0_action["The system sets the appropriate
priority level and message type
based on the transaction
characteristics and business rules"]:::main N_SetMessagePriorityandType_Node0 -- Yes --> N_SetMessagePriorityandType_Node0_action N_SetMessagePriorityandType_Node0_action --> E_SetMessagePriorityandType S_SetMessagePriorityandType --> N_SetMessagePriorityandType_Node0 N_SetMessagePriorityandType_Node0 -- No --> E_SetMessagePriorityandType
be assigned"}:::decision N_SetMessagePriorityandType_Node0_action["The system sets the appropriate
priority level and message type
based on the transaction
characteristics and business rules"]:::main N_SetMessagePriorityandType_Node0 -- Yes --> N_SetMessagePriorityandType_Node0_action N_SetMessagePriorityandType_Node0_action --> E_SetMessagePriorityandType S_SetMessagePriorityandType --> N_SetMessagePriorityandType_Node0 N_SetMessagePriorityandType_Node0 -- No --> E_SetMessagePriorityandType
File: GCX016.cbl
GIVEN:
A log message has been validated for completeness
WHEN:
- Message priority
- Type need to be assigned
THEN:
- The system sets the appropriate priority level
- Message type based on the transaction characteristics
- Business rules
β Consolidated Acceptance Criteria
- The message needs to be prepared for GCT1051E spawn → the system prepares the message for GCT1051E transmission, excluding disposition codes 54 and 55 from the logging process
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_PrepareforGCT1051ESpawn(["Start Step"])
E_PrepareforGCT1051ESpawn(["End Step"])
N_PrepareforGCT1051ESpawn_Node0{"The message needs to be prepared
for GCT1051E spawn"}:::decision N_PrepareforGCT1051ESpawn_Node0_action["The system prepares the message for
GCT1051E transmission, excluding
disposition codes 54 and 55 from the
logging process"]:::main N_PrepareforGCT1051ESpawn_Node0 -- Yes --> N_PrepareforGCT1051ESpawn_Node0_action N_PrepareforGCT1051ESpawn_Node0_action --> E_PrepareforGCT1051ESpawn S_PrepareforGCT1051ESpawn --> N_PrepareforGCT1051ESpawn_Node0 N_PrepareforGCT1051ESpawn_Node0 -- No --> E_PrepareforGCT1051ESpawn
for GCT1051E spawn"}:::decision N_PrepareforGCT1051ESpawn_Node0_action["The system prepares the message for
GCT1051E transmission, excluding
disposition codes 54 and 55 from the
logging process"]:::main N_PrepareforGCT1051ESpawn_Node0 -- Yes --> N_PrepareforGCT1051ESpawn_Node0_action N_PrepareforGCT1051ESpawn_Node0_action --> E_PrepareforGCT1051ESpawn S_PrepareforGCT1051ESpawn --> N_PrepareforGCT1051ESpawn_Node0 N_PrepareforGCT1051ESpawn_Node0 -- No --> E_PrepareforGCT1051ESpawn
File: GCX016.cbl
GIVEN:
A complete log message is ready for transmission
WHEN:
The message needs to be prepared for GCT1051E spawn
THEN:
- The system prepares the message for gct1051e transmission, excluding disposition codes 54
- 55 from the logging process
β Consolidated Acceptance Criteria
- The message readiness needs to be confirmed → the system confirms the log message is complete, properly formatted, and ready for transmission to the logging system
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogMessageReadyforTransmission(["Start Step"])
E_LogMessageReadyforTransmission(["End Step"])
N_LogMessageReadyforTransmission_Node0{"The message readiness needs to be
confirmed"}:::decision N_LogMessageReadyforTransmission_Node0_action["The system confirms the log message
is complete, properly formatted, and
ready for transmission to the
logging system"]:::main N_LogMessageReadyforTransmission_Node0 -- Yes --> N_LogMessageReadyforTransmission_Node0_action N_LogMessageReadyforTransmission_Node0_action --> E_LogMessageReadyforTransmission S_LogMessageReadyforTransmission --> N_LogMessageReadyforTransmission_Node0 N_LogMessageReadyforTransmission_Node0 -- No --> E_LogMessageReadyforTransmission
confirmed"}:::decision N_LogMessageReadyforTransmission_Node0_action["The system confirms the log message
is complete, properly formatted, and
ready for transmission to the
logging system"]:::main N_LogMessageReadyforTransmission_Node0 -- Yes --> N_LogMessageReadyforTransmission_Node0_action N_LogMessageReadyforTransmission_Node0_action --> E_LogMessageReadyforTransmission S_LogMessageReadyforTransmission --> N_LogMessageReadyforTransmission_Node0 N_LogMessageReadyforTransmission_Node0 -- No --> E_LogMessageReadyforTransmission
File: GCX016.cbl
GIVEN:
All log message preparation steps have been completed
WHEN:
The message readiness needs to be confirmed
THEN:
The system confirms the log message is complete, properly formatted, and ready for transmission to the logging system
β Consolidated Acceptance Criteria
- The system checks if logging is required AND the disposition code is not '54' or '55' → the system proceeds with audit trail logging preparation
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LoggingRequired(["Start Step"])
E_LoggingRequired(["End Step"])
N_LoggingRequired_Node0{"The system checks if logging is
required AND the disposition code is
not 54 or 55"}:::decision N_LoggingRequired_Node0_action["The system proceeds with audit
trail logging preparation"]:::main N_LoggingRequired_Node0 -- Yes --> N_LoggingRequired_Node0_action N_LoggingRequired_Node0_action --> E_LoggingRequired S_LoggingRequired --> N_LoggingRequired_Node0 N_LoggingRequired_Node0 -- No --> E_LoggingRequired
required AND the disposition code is
not 54 or 55"}:::decision N_LoggingRequired_Node0_action["The system proceeds with audit
trail logging preparation"]:::main N_LoggingRequired_Node0 -- Yes --> N_LoggingRequired_Node0_action N_LoggingRequired_Node0_action --> E_LoggingRequired S_LoggingRequired --> N_LoggingRequired_Node0 N_LoggingRequired_Node0 -- No --> E_LoggingRequired
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
A cargo processing event occurs with a specific disposition code
WHEN:
- The system checks if logging is required
- The disposition code is not '54' or '55'
THEN:
The system proceeds with audit trail logging preparation
β Consolidated Acceptance Criteria
- The system prepares the log message with cargo information, disposition codes, and processing context → a complete audit log message is formatted with all required business information
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_PrepareLogMessage(["Start Step"])
E_PrepareLogMessage(["End Step"])
N_PrepareLogMessage_Node0{"The system prepares the log message
with cargo information, disposition
codes, and processing context"}:::decision N_PrepareLogMessage_Node0_action["A complete audit log message is
formatted with all required business
information"]:::main N_PrepareLogMessage_Node0 -- Yes --> N_PrepareLogMessage_Node0_action N_PrepareLogMessage_Node0_action --> E_PrepareLogMessage S_PrepareLogMessage --> N_PrepareLogMessage_Node0 N_PrepareLogMessage_Node0 -- No --> E_PrepareLogMessage
with cargo information, disposition
codes, and processing context"}:::decision N_PrepareLogMessage_Node0_action["A complete audit log message is
formatted with all required business
information"]:::main N_PrepareLogMessage_Node0 -- Yes --> N_PrepareLogMessage_Node0_action N_PrepareLogMessage_Node0_action --> E_PrepareLogMessage S_PrepareLogMessage --> N_PrepareLogMessage_Node0 N_PrepareLogMessage_Node0 -- No --> E_PrepareLogMessage
File: GCX016.cbl
GIVEN:
Audit trail logging is required for a cargo processing event
WHEN:
The system prepares the log message with cargo information, disposition codes, and processing context
THEN:
A complete audit log message is formatted with all required business information
β Consolidated Acceptance Criteria
- The system sets security information including user context and access credentials → security information is properly assigned to the audit trail record
- Security information needs to be recorded → current user ID and security context are captured and added to the log message
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetSecurityInformation(["Start Step"])
E_SetSecurityInformation(["End Step"])
N_SetSecurityInformation_Node0{"The system sets security
information including user context
and access credentials"}:::decision N_SetSecurityInformation_Node0_action["Security information is properly
assigned to the audit trail record"]:::main N_SetSecurityInformation_Node0 -- Yes --> N_SetSecurityInformation_Node0_action N_SetSecurityInformation_Node0_action --> E_SetSecurityInformation S_SetSecurityInformation --> N_SetSecurityInformation_Node0 N_SetSecurityInformation_Node1{"Security information needs to be
recorded"}:::decision N_SetSecurityInformation_Node1_action["Current user ID and security
context are captured and added to
the log message"]:::main N_SetSecurityInformation_Node1 -- Yes --> N_SetSecurityInformation_Node1_action N_SetSecurityInformation_Node1_action --> E_SetSecurityInformation N_SetSecurityInformation_Node0 -- No --> N_SetSecurityInformation_Node1 N_SetSecurityInformation_Node1 -- No --> E_SetSecurityInformation
information including user context
and access credentials"}:::decision N_SetSecurityInformation_Node0_action["Security information is properly
assigned to the audit trail record"]:::main N_SetSecurityInformation_Node0 -- Yes --> N_SetSecurityInformation_Node0_action N_SetSecurityInformation_Node0_action --> E_SetSecurityInformation S_SetSecurityInformation --> N_SetSecurityInformation_Node0 N_SetSecurityInformation_Node1{"Security information needs to be
recorded"}:::decision N_SetSecurityInformation_Node1_action["Current user ID and security
context are captured and added to
the log message"]:::main N_SetSecurityInformation_Node1 -- Yes --> N_SetSecurityInformation_Node1_action N_SetSecurityInformation_Node1_action --> E_SetSecurityInformation N_SetSecurityInformation_Node0 -- No --> N_SetSecurityInformation_Node1 N_SetSecurityInformation_Node1 -- No --> E_SetSecurityInformation
File: GCX016.cbl
GIVEN:
An audit log message is being prepared
WHEN:
- The system sets security information including user context
- Access credentials
THEN:
Security information is properly assigned to the audit trail record
File: GCX016.cbl
GIVEN:
A cargo logging message is being prepared
WHEN:
Security information needs to be recorded
THEN:
- Current user id
- Security context are captured
- Added to the log message
β Consolidated Acceptance Criteria
- The system configures transaction details with processing type and business context → transaction details are properly configured in the audit trail record
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetTransactionDetails(["Start Step"])
E_SetTransactionDetails(["End Step"])
N_SetTransactionDetails_Node0{"The system configures transaction
details with processing type and
business context"}:::decision N_SetTransactionDetails_Node0_action["Transaction details are properly
configured in the audit trail record"]:::main N_SetTransactionDetails_Node0 -- Yes --> N_SetTransactionDetails_Node0_action N_SetTransactionDetails_Node0_action --> E_SetTransactionDetails S_SetTransactionDetails --> N_SetTransactionDetails_Node0 N_SetTransactionDetails_Node0 -- No --> E_SetTransactionDetails
details with processing type and
business context"}:::decision N_SetTransactionDetails_Node0_action["Transaction details are properly
configured in the audit trail record"]:::main N_SetTransactionDetails_Node0 -- Yes --> N_SetTransactionDetails_Node0_action N_SetTransactionDetails_Node0_action --> E_SetTransactionDetails S_SetTransactionDetails --> N_SetTransactionDetails_Node0 N_SetTransactionDetails_Node0 -- No --> E_SetTransactionDetails
File: GCX016.cbl
GIVEN:
Security information has been set for the audit record
WHEN:
- The system configures transaction details with processing type
- Business context
THEN:
Transaction details are properly configured in the audit trail record
β Consolidated Acceptance Criteria
- The system formats cargo information including shipment identifiers, quantities, and cargo status → cargo information is properly formatted and included in the audit trail record
- Standard cargo details need to be included in the message → format message with car initial, car number, waybill number, and US-CCN (customs control number)
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_FormatCargoInformation(["Start Step"])
E_FormatCargoInformation(["End Step"])
N_FormatCargoInformation_Node0{"The system formats cargo
information including shipment
identifiers, quantities, and cargo
status"}:::decision N_FormatCargoInformation_Node0_action["Cargo information is properly
formatted and included in the audit
trail record"]:::main N_FormatCargoInformation_Node0 -- Yes --> N_FormatCargoInformation_Node0_action N_FormatCargoInformation_Node0_action --> E_FormatCargoInformation S_FormatCargoInformation --> N_FormatCargoInformation_Node0 N_FormatCargoInformation_Node1{"Standard cargo details need to be
included in the message"}:::decision N_FormatCargoInformation_Node1_action["Format message with car initial,
car number, waybill number, and
US-CCN customs control number"]:::main N_FormatCargoInformation_Node1 -- Yes --> N_FormatCargoInformation_Node1_action N_FormatCargoInformation_Node1_action --> E_FormatCargoInformation N_FormatCargoInformation_Node0 -- No --> N_FormatCargoInformation_Node1 N_FormatCargoInformation_Node1 -- No --> E_FormatCargoInformation
information including shipment
identifiers, quantities, and cargo
status"}:::decision N_FormatCargoInformation_Node0_action["Cargo information is properly
formatted and included in the audit
trail record"]:::main N_FormatCargoInformation_Node0 -- Yes --> N_FormatCargoInformation_Node0_action N_FormatCargoInformation_Node0_action --> E_FormatCargoInformation S_FormatCargoInformation --> N_FormatCargoInformation_Node0 N_FormatCargoInformation_Node1{"Standard cargo details need to be
included in the message"}:::decision N_FormatCargoInformation_Node1_action["Format message with car initial,
car number, waybill number, and
US-CCN customs control number"]:::main N_FormatCargoInformation_Node1 -- Yes --> N_FormatCargoInformation_Node1_action N_FormatCargoInformation_Node1_action --> E_FormatCargoInformation N_FormatCargoInformation_Node0 -- No --> N_FormatCargoInformation_Node1 N_FormatCargoInformation_Node1 -- No --> E_FormatCargoInformation
File: GCX016.cbl
GIVEN:
Transaction details have been configured for the audit record
WHEN:
The system formats cargo information including shipment identifiers, quantities, and cargo status
THEN:
- Cargo information is properly formatted
- Included in the audit trail record
File: GCX016.cbl
GIVEN:
A Merlin message requires cargo information formatting
WHEN:
Standard cargo details need to be included in the message
THEN:
Format message with car initial, car number, waybill number, and US-CCN (customs control number)
β Consolidated Acceptance Criteria
- The system adds processing timestamps including event time and processing duration → accurate timestamps are assigned to the audit trail record
- Timestamp information is required → current date and time are captured and added to the log message
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AddProcessingTimestamps(["Start Step"])
E_AddProcessingTimestamps(["End Step"])
N_AddProcessingTimestamps_Node0{"The system adds processing
timestamps including event time and
processing duration"}:::decision N_AddProcessingTimestamps_Node0_action["Accurate timestamps are assigned to
the audit trail record"]:::main N_AddProcessingTimestamps_Node0 -- Yes --> N_AddProcessingTimestamps_Node0_action N_AddProcessingTimestamps_Node0_action --> E_AddProcessingTimestamps S_AddProcessingTimestamps --> N_AddProcessingTimestamps_Node0 N_AddProcessingTimestamps_Node1{"Timestamp information is required"}:::decision N_AddProcessingTimestamps_Node1_action["Current date and time are captured
and added to the log message"]:::main N_AddProcessingTimestamps_Node1 -- Yes --> N_AddProcessingTimestamps_Node1_action N_AddProcessingTimestamps_Node1_action --> E_AddProcessingTimestamps N_AddProcessingTimestamps_Node0 -- No --> N_AddProcessingTimestamps_Node1 N_AddProcessingTimestamps_Node1 -- No --> E_AddProcessingTimestamps
timestamps including event time and
processing duration"}:::decision N_AddProcessingTimestamps_Node0_action["Accurate timestamps are assigned to
the audit trail record"]:::main N_AddProcessingTimestamps_Node0 -- Yes --> N_AddProcessingTimestamps_Node0_action N_AddProcessingTimestamps_Node0_action --> E_AddProcessingTimestamps S_AddProcessingTimestamps --> N_AddProcessingTimestamps_Node0 N_AddProcessingTimestamps_Node1{"Timestamp information is required"}:::decision N_AddProcessingTimestamps_Node1_action["Current date and time are captured
and added to the log message"]:::main N_AddProcessingTimestamps_Node1 -- Yes --> N_AddProcessingTimestamps_Node1_action N_AddProcessingTimestamps_Node1_action --> E_AddProcessingTimestamps N_AddProcessingTimestamps_Node0 -- No --> N_AddProcessingTimestamps_Node1 N_AddProcessingTimestamps_Node1 -- No --> E_AddProcessingTimestamps
File: GCX016.cbl
GIVEN:
Disposition code details have been included in the audit record
WHEN:
- The system adds processing timestamps including event time
- Processing duration
THEN:
Accurate timestamps are assigned to the audit trail record
File: GCX016.cbl
GIVEN:
A cargo processing event is being logged
WHEN:
Timestamp information is required
THEN:
- Current date
- Time are captured
- Added to the log message
β Consolidated Acceptance Criteria
- The system spawns the GCT1051E transaction with complete audit information → the logging transaction is initiated to create the audit trail record
- The disposition code is 54 or 55 → the logging transaction is not spawned and no log entry is created
- The logging transaction is initiated → gCT1051E transaction is spawned with the prepared log message
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SpawnGCT1051ETransaction(["Start Step"])
E_SpawnGCT1051ETransaction(["End Step"])
N_SpawnGCT1051ETransaction_Node0{"The system spawns the GCT1051E
transaction with complete audit
information"}:::decision N_SpawnGCT1051ETransaction_Node0_action["The logging transaction is
initiated to create the audit trail
record"]:::main N_SpawnGCT1051ETransaction_Node0 -- Yes --> N_SpawnGCT1051ETransaction_Node0_action N_SpawnGCT1051ETransaction_Node0_action --> E_SpawnGCT1051ETransaction S_SpawnGCT1051ETransaction --> N_SpawnGCT1051ETransaction_Node0 N_SpawnGCT1051ETransaction_Node1{"The disposition code is 54 or 55"}:::decision N_SpawnGCT1051ETransaction_Node1_action["The logging transaction is not
spawned and no log entry is created"]:::main N_SpawnGCT1051ETransaction_Node1 -- Yes --> N_SpawnGCT1051ETransaction_Node1_action N_SpawnGCT1051ETransaction_Node1_action --> E_SpawnGCT1051ETransaction N_SpawnGCT1051ETransaction_Node0 -- No --> N_SpawnGCT1051ETransaction_Node1 N_SpawnGCT1051ETransaction_Node2{"The logging transaction is
initiated"}:::decision N_SpawnGCT1051ETransaction_Node2_action["GCT1051E transaction is spawned
with the prepared log message"]:::main N_SpawnGCT1051ETransaction_Node2 -- Yes --> N_SpawnGCT1051ETransaction_Node2_action N_SpawnGCT1051ETransaction_Node2_action --> E_SpawnGCT1051ETransaction N_SpawnGCT1051ETransaction_Node1 -- No --> N_SpawnGCT1051ETransaction_Node2 N_SpawnGCT1051ETransaction_Node2 -- No --> E_SpawnGCT1051ETransaction
transaction with complete audit
information"}:::decision N_SpawnGCT1051ETransaction_Node0_action["The logging transaction is
initiated to create the audit trail
record"]:::main N_SpawnGCT1051ETransaction_Node0 -- Yes --> N_SpawnGCT1051ETransaction_Node0_action N_SpawnGCT1051ETransaction_Node0_action --> E_SpawnGCT1051ETransaction S_SpawnGCT1051ETransaction --> N_SpawnGCT1051ETransaction_Node0 N_SpawnGCT1051ETransaction_Node1{"The disposition code is 54 or 55"}:::decision N_SpawnGCT1051ETransaction_Node1_action["The logging transaction is not
spawned and no log entry is created"]:::main N_SpawnGCT1051ETransaction_Node1 -- Yes --> N_SpawnGCT1051ETransaction_Node1_action N_SpawnGCT1051ETransaction_Node1_action --> E_SpawnGCT1051ETransaction N_SpawnGCT1051ETransaction_Node0 -- No --> N_SpawnGCT1051ETransaction_Node1 N_SpawnGCT1051ETransaction_Node2{"The logging transaction is
initiated"}:::decision N_SpawnGCT1051ETransaction_Node2_action["GCT1051E transaction is spawned
with the prepared log message"]:::main N_SpawnGCT1051ETransaction_Node2 -- Yes --> N_SpawnGCT1051ETransaction_Node2_action N_SpawnGCT1051ETransaction_Node2_action --> E_SpawnGCT1051ETransaction N_SpawnGCT1051ETransaction_Node1 -- No --> N_SpawnGCT1051ETransaction_Node2 N_SpawnGCT1051ETransaction_Node2 -- No --> E_SpawnGCT1051ETransaction
File: GCX016.cbl
GIVEN:
Audit trail parameters have been configured
WHEN:
The system spawns the GCT1051E transaction with complete audit information
THEN:
The logging transaction is initiated to create the audit trail record
File: GCX016.cbl
GIVEN:
A cargo processing operation with disposition code is ready for logging
WHEN:
The disposition code is 54 or 55
THEN:
- The logging transaction is not spawned
- No log entry is created
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
A cargo processing operation needs to be logged and disposition code is not 54 or 55
WHEN:
The logging transaction is initiated
THEN:
GCT1051E transaction is spawned with the prepared log message
β Consolidated Acceptance Criteria
- The system checks if the spawn operation completed successfully → the system determines whether to proceed with normal processing or handle spawn errors
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SpawnSuccessful(["Start Step"])
E_SpawnSuccessful(["End Step"])
N_SpawnSuccessful_Node0{"The system checks if the spawn
operation completed successfully"}:::decision N_SpawnSuccessful_Node0_action["The system determines whether to
proceed with normal processing or
handle spawn errors"]:::main N_SpawnSuccessful_Node0 -- Yes --> N_SpawnSuccessful_Node0_action N_SpawnSuccessful_Node0_action --> E_SpawnSuccessful S_SpawnSuccessful --> N_SpawnSuccessful_Node0 N_SpawnSuccessful_Node0 -- No --> E_SpawnSuccessful
operation completed successfully"}:::decision N_SpawnSuccessful_Node0_action["The system determines whether to
proceed with normal processing or
handle spawn errors"]:::main N_SpawnSuccessful_Node0 -- Yes --> N_SpawnSuccessful_Node0_action N_SpawnSuccessful_Node0_action --> E_SpawnSuccessful S_SpawnSuccessful --> N_SpawnSuccessful_Node0 N_SpawnSuccessful_Node0 -- No --> E_SpawnSuccessful
File: GCX016.cbl
GIVEN:
The GCT1051E transaction has been spawned
WHEN:
The system checks if the spawn operation completed successfully
THEN:
The system determines whether to proceed with normal processing or handle spawn errors
β Consolidated Acceptance Criteria
- The system confirms the log transaction has been created → the audit trail record is confirmed as created and processing continues normally
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogTransactionCreated(["Start Step"])
E_LogTransactionCreated(["End Step"])
N_LogTransactionCreated_Node0{"The system confirms the log
transaction has been created"}:::decision N_LogTransactionCreated_Node0_action["The audit trail record is confirmed
as created and processing continues
normally"]:::main N_LogTransactionCreated_Node0 -- Yes --> N_LogTransactionCreated_Node0_action N_LogTransactionCreated_Node0_action --> E_LogTransactionCreated S_LogTransactionCreated --> N_LogTransactionCreated_Node0 N_LogTransactionCreated_Node0 -- No --> E_LogTransactionCreated
transaction has been created"}:::decision N_LogTransactionCreated_Node0_action["The audit trail record is confirmed
as created and processing continues
normally"]:::main N_LogTransactionCreated_Node0 -- Yes --> N_LogTransactionCreated_Node0_action N_LogTransactionCreated_Node0_action --> E_LogTransactionCreated S_LogTransactionCreated --> N_LogTransactionCreated_Node0 N_LogTransactionCreated_Node0 -- No --> E_LogTransactionCreated
File: GCX016.cbl
GIVEN:
The GCT1051E transaction spawn was successful
WHEN:
The system confirms the log transaction has been created
THEN:
- The audit trail record is confirmed as created
- Processing continues normally
β Consolidated Acceptance Criteria
- The system handles the spawn error condition → error recovery procedures are initiated to address the logging failure
- The system encounters a spawn error condition → the system should initiate error handling procedures to manage the failed spawn operation
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_HandleSpawnError(["Start Step"])
E_HandleSpawnError(["End Step"])
N_HandleSpawnError_Node0{"The system handles the spawn error
condition"}:::decision N_HandleSpawnError_Node0_action["Error recovery procedures are
initiated to address the logging
failure"]:::exclusion N_HandleSpawnError_Node0 -- Yes -->|Alternative| N_HandleSpawnError_Node0_action N_HandleSpawnError_Node0_action --> E_HandleSpawnError S_HandleSpawnError --> N_HandleSpawnError_Node0 N_HandleSpawnError_Node1{"The system encounters a spawn error
condition"}:::decision N_HandleSpawnError_Node1_action["The system should initiate error
handling procedures to manage the
failed spawn operation"]:::exclusion N_HandleSpawnError_Node1 -- Yes -->|Alternative| N_HandleSpawnError_Node1_action N_HandleSpawnError_Node1_action --> E_HandleSpawnError N_HandleSpawnError_Node0 -- No --> N_HandleSpawnError_Node1 N_HandleSpawnError_Node1 -- No --> E_HandleSpawnError
condition"}:::decision N_HandleSpawnError_Node0_action["Error recovery procedures are
initiated to address the logging
failure"]:::exclusion N_HandleSpawnError_Node0 -- Yes -->|Alternative| N_HandleSpawnError_Node0_action N_HandleSpawnError_Node0_action --> E_HandleSpawnError S_HandleSpawnError --> N_HandleSpawnError_Node0 N_HandleSpawnError_Node1{"The system encounters a spawn error
condition"}:::decision N_HandleSpawnError_Node1_action["The system should initiate error
handling procedures to manage the
failed spawn operation"]:::exclusion N_HandleSpawnError_Node1 -- Yes -->|Alternative| N_HandleSpawnError_Node1_action N_HandleSpawnError_Node1_action --> E_HandleSpawnError N_HandleSpawnError_Node0 -- No --> N_HandleSpawnError_Node1 N_HandleSpawnError_Node1 -- No --> E_HandleSpawnError
File: GCX016.cbl
GIVEN:
The GCT1051E transaction spawn failed
WHEN:
The system handles the spawn error condition
THEN:
Error recovery procedures are initiated to address the logging failure
File: GCX016.cbl
GIVEN:
GCT1091E transaction spawn has failed
WHEN:
The system encounters a spawn error condition
THEN:
The system should initiate error handling procedures to manage the failed spawn operation
β Consolidated Acceptance Criteria
- The system records error information including failure details and context → complete error information is recorded for compliance and troubleshooting purposes
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RecordErrorInformation(["Start Step"])
E_RecordErrorInformation(["End Step"])
N_RecordErrorInformation_Node0{"The system records error
information including failure
details and context"}:::decision N_RecordErrorInformation_Node0_action["Complete error information is
recorded for compliance and
troubleshooting purposes"]:::exclusion N_RecordErrorInformation_Node0 -- Yes -->|Alternative| N_RecordErrorInformation_Node0_action N_RecordErrorInformation_Node0_action --> E_RecordErrorInformation S_RecordErrorInformation --> N_RecordErrorInformation_Node0 N_RecordErrorInformation_Node0 -- No --> E_RecordErrorInformation
information including failure
details and context"}:::decision N_RecordErrorInformation_Node0_action["Complete error information is
recorded for compliance and
troubleshooting purposes"]:::exclusion N_RecordErrorInformation_Node0 -- Yes -->|Alternative| N_RecordErrorInformation_Node0_action N_RecordErrorInformation_Node0_action --> E_RecordErrorInformation S_RecordErrorInformation --> N_RecordErrorInformation_Node0 N_RecordErrorInformation_Node0 -- No --> E_RecordErrorInformation
File: GCX016.cbl
GIVEN:
A spawn error has been handled
WHEN:
- The system records error information including failure details
- Context
THEN:
- Complete error information is recorded for compliance
- Troubleshooting purposes
β Consolidated Acceptance Criteria
- The system checks for car ID presence in the cargo record → the system determines if car ID exists and routes to appropriate processing path
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CarIDPresent(["Start Step"])
E_CarIDPresent(["End Step"])
N_CarIDPresent_Node0{"The system checks for car ID
presence in the cargo record"}:::decision N_CarIDPresent_Node0_action["The system determines if car ID
exists and routes to appropriate
processing path"]:::main N_CarIDPresent_Node0 -- Yes --> N_CarIDPresent_Node0_action N_CarIDPresent_Node0_action --> E_CarIDPresent S_CarIDPresent --> N_CarIDPresent_Node0 N_CarIDPresent_Node0 -- No --> E_CarIDPresent
presence in the cargo record"}:::decision N_CarIDPresent_Node0_action["The system determines if car ID
exists and routes to appropriate
processing path"]:::main N_CarIDPresent_Node0 -- Yes --> N_CarIDPresent_Node0_action N_CarIDPresent_Node0_action --> E_CarIDPresent S_CarIDPresent --> N_CarIDPresent_Node0 N_CarIDPresent_Node0 -- No --> E_CarIDPresent
File: GCX016.cbl
GIVEN:
A cargo record is being processed for car information display
WHEN:
The system checks for car ID presence in the cargo record
THEN:
- The system determines if car id exists
- Routes to appropriate processing path
β Consolidated Acceptance Criteria
- The system validates the formatted car ID against format requirements → the system determines if the format is valid and proceeds with display or error handling
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_FormatValid(["Start Step"])
E_FormatValid(["End Step"])
N_FormatValid_Node0{"The system validates the formatted
car ID against format requirements"}:::decision N_FormatValid_Node0_action["The system determines if the format
is valid and proceeds with display
or error handling"]:::main N_FormatValid_Node0 -- Yes --> N_FormatValid_Node0_action N_FormatValid_Node0_action --> E_FormatValid S_FormatValid --> N_FormatValid_Node0 N_FormatValid_Node0 -- No --> E_FormatValid
car ID against format requirements"}:::decision N_FormatValid_Node0_action["The system determines if the format
is valid and proceeds with display
or error handling"]:::main N_FormatValid_Node0 -- Yes --> N_FormatValid_Node0_action N_FormatValid_Node0_action --> E_FormatValid S_FormatValid --> N_FormatValid_Node0 N_FormatValid_Node0 -- No --> E_FormatValid
File: GCX016.cbl
GIVEN:
A car ID has been retrieved and formatted according to standard rules
WHEN:
The system validates the formatted car ID against format requirements
THEN:
- The system determines if the format is valid
- Proceeds with display or error handling
β Consolidated Acceptance Criteria
- The system formats the car ID for display purposes → the car ID is formatted according to standard display rules and prepared for report output
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_FormatCarIDforDisplay(["Start Step"])
E_FormatCarIDforDisplay(["End Step"])
N_FormatCarIDforDisplay_Node0{"The system formats the car ID for
display purposes"}:::decision N_FormatCarIDforDisplay_Node0_action["The car ID is formatted according
to standard display rules and
prepared for report output"]:::main N_FormatCarIDforDisplay_Node0 -- Yes --> N_FormatCarIDforDisplay_Node0_action N_FormatCarIDforDisplay_Node0_action --> E_FormatCarIDforDisplay S_FormatCarIDforDisplay --> N_FormatCarIDforDisplay_Node0 N_FormatCarIDforDisplay_Node0 -- No --> E_FormatCarIDforDisplay
display purposes"}:::decision N_FormatCarIDforDisplay_Node0_action["The car ID is formatted according
to standard display rules and
prepared for report output"]:::main N_FormatCarIDforDisplay_Node0 -- Yes --> N_FormatCarIDforDisplay_Node0_action N_FormatCarIDforDisplay_Node0_action --> E_FormatCarIDforDisplay S_FormatCarIDforDisplay --> N_FormatCarIDforDisplay_Node0 N_FormatCarIDforDisplay_Node0 -- No --> E_FormatCarIDforDisplay
File: GCX016.cbl
GIVEN:
A valid car ID exists in the cargo record
WHEN:
The system formats the car ID for display purposes
THEN:
- The car id is formatted according to standard display rules
- Prepared for report output
β Consolidated Acceptance Criteria
- The system processes the record for car information display → the system sets a default display value for the missing car ID information
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_HandleMissingCarID(["Start Step"])
E_HandleMissingCarID(["End Step"])
N_HandleMissingCarID_Node0{"The system processes the record for
car information display"}:::decision N_HandleMissingCarID_Node0_action["The system sets a default display
value for the missing car ID
information"]:::main N_HandleMissingCarID_Node0 -- Yes --> N_HandleMissingCarID_Node0_action N_HandleMissingCarID_Node0_action --> E_HandleMissingCarID S_HandleMissingCarID --> N_HandleMissingCarID_Node0 N_HandleMissingCarID_Node0 -- No --> E_HandleMissingCarID
car information display"}:::decision N_HandleMissingCarID_Node0_action["The system sets a default display
value for the missing car ID
information"]:::main N_HandleMissingCarID_Node0 -- Yes --> N_HandleMissingCarID_Node0_action N_HandleMissingCarID_Node0_action --> E_HandleMissingCarID S_HandleMissingCarID --> N_HandleMissingCarID_Node0 N_HandleMissingCarID_Node0 -- No --> E_HandleMissingCarID
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
A cargo record does not contain car ID information
WHEN:
The system processes the record for car information display
THEN:
The system sets a default display value for the missing car ID information
β Consolidated Acceptance Criteria
- The system encounters a car ID formatting issue → the system logs the formatting issue and proceeds with default value handling
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogCarIDFormattingIssue(["Start Step"])
E_LogCarIDFormattingIssue(["End Step"])
N_LogCarIDFormattingIssue_Node0{"The system encounters a car ID
formatting issue"}:::decision N_LogCarIDFormattingIssue_Node0_action["The system logs the formatting
issue and proceeds with default
value handling"]:::main N_LogCarIDFormattingIssue_Node0 -- Yes --> N_LogCarIDFormattingIssue_Node0_action N_LogCarIDFormattingIssue_Node0_action --> E_LogCarIDFormattingIssue S_LogCarIDFormattingIssue --> N_LogCarIDFormattingIssue_Node0 N_LogCarIDFormattingIssue_Node0 -- No --> E_LogCarIDFormattingIssue
formatting issue"}:::decision N_LogCarIDFormattingIssue_Node0_action["The system logs the formatting
issue and proceeds with default
value handling"]:::main N_LogCarIDFormattingIssue_Node0 -- Yes --> N_LogCarIDFormattingIssue_Node0_action N_LogCarIDFormattingIssue_Node0_action --> E_LogCarIDFormattingIssue S_LogCarIDFormattingIssue --> N_LogCarIDFormattingIssue_Node0 N_LogCarIDFormattingIssue_Node0 -- No --> E_LogCarIDFormattingIssue
File: GCX016.cbl
GIVEN:
A car ID exists but fails format validation
WHEN:
The system encounters a car ID formatting issue
THEN:
- The system logs the formatting issue
- Proceeds with default value handling
β Consolidated Acceptance Criteria
- If the waybill number field → the system determines if waybill number is present or absent
- The system checks if waybill number is present → the system proceeds to car ID length validation if present, or logs missing waybill error if absent
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_WaybillNumberPresent(["Start Step"])
E_WaybillNumberPresent(["End Step"])
N_WaybillNumberPresent_Node0{"The system evaluates the waybill
number field"}:::decision N_WaybillNumberPresent_Node0_action["The system determines if waybill
number is present or absent"]:::main N_WaybillNumberPresent_Node0 -- Yes --> N_WaybillNumberPresent_Node0_action N_WaybillNumberPresent_Node0_action --> E_WaybillNumberPresent S_WaybillNumberPresent --> N_WaybillNumberPresent_Node0 N_WaybillNumberPresent_Node1{"The system checks if waybill number
is present"}:::decision N_WaybillNumberPresent_Node1_action["The system proceeds to car ID
length validation if present, or
logs missing waybill error if absent"]:::main N_WaybillNumberPresent_Node1 -- Yes --> N_WaybillNumberPresent_Node1_action N_WaybillNumberPresent_Node1_action --> E_WaybillNumberPresent N_WaybillNumberPresent_Node0 -- No --> N_WaybillNumberPresent_Node1 N_WaybillNumberPresent_Node1 -- No --> E_WaybillNumberPresent
number field"}:::decision N_WaybillNumberPresent_Node0_action["The system determines if waybill
number is present or absent"]:::main N_WaybillNumberPresent_Node0 -- Yes --> N_WaybillNumberPresent_Node0_action N_WaybillNumberPresent_Node0_action --> E_WaybillNumberPresent S_WaybillNumberPresent --> N_WaybillNumberPresent_Node0 N_WaybillNumberPresent_Node1{"The system checks if waybill number
is present"}:::decision N_WaybillNumberPresent_Node1_action["The system proceeds to car ID
length validation if present, or
logs missing waybill error if absent"]:::main N_WaybillNumberPresent_Node1 -- Yes --> N_WaybillNumberPresent_Node1_action N_WaybillNumberPresent_Node1_action --> E_WaybillNumberPresent N_WaybillNumberPresent_Node0 -- No --> N_WaybillNumberPresent_Node1 N_WaybillNumberPresent_Node1 -- No --> E_WaybillNumberPresent
File: GCX016.cbl
GIVEN:
A cargo record is retrieved from GCCC-CARGO-ROOT
WHEN:
The system evaluates the waybill number field
THEN:
The system determines if waybill number is present or absent
File: GCX016.cbl
GIVEN:
Waybill number has been extracted from entry
WHEN:
The system checks if waybill number is present
THEN:
The system proceeds to car ID length validation if present, or logs missing waybill error if absent
β Consolidated Acceptance Criteria
- The system processes the waybill for display → the waybill number is formatted according to display standards
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_FormatWaybillNumberforDisplay(["Start Step"])
E_FormatWaybillNumberforDisplay(["End Step"])
N_FormatWaybillNumberforDisplay_Node0{"The system processes the waybill
for display"}:::decision N_FormatWaybillNumberforDisplay_Node0_action["The waybill number is formatted
according to display standards"]:::main N_FormatWaybillNumberforDisplay_Node0 -- Yes --> N_FormatWaybillNumberforDisplay_Node0_action N_FormatWaybillNumberforDisplay_Node0_action --> E_FormatWaybillNumberforDisplay S_FormatWaybillNumberforDisplay --> N_FormatWaybillNumberforDisplay_Node0 N_FormatWaybillNumberforDisplay_Node0 -- No --> E_FormatWaybillNumberforDisplay
for display"}:::decision N_FormatWaybillNumberforDisplay_Node0_action["The waybill number is formatted
according to display standards"]:::main N_FormatWaybillNumberforDisplay_Node0 -- Yes --> N_FormatWaybillNumberforDisplay_Node0_action N_FormatWaybillNumberforDisplay_Node0_action --> E_FormatWaybillNumberforDisplay S_FormatWaybillNumberforDisplay --> N_FormatWaybillNumberforDisplay_Node0 N_FormatWaybillNumberforDisplay_Node0 -- No --> E_FormatWaybillNumberforDisplay
File: GCX016.cbl
GIVEN:
A waybill number is present in the cargo record
WHEN:
The system processes the waybill for display
THEN:
The waybill number is formatted according to display standards
β Consolidated Acceptance Criteria
- The system prepares the display field → the formatted waybill number is assigned to the waybill display field
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetWaybillDisplayField(["Start Step"])
E_SetWaybillDisplayField(["End Step"])
N_SetWaybillDisplayField_Node0{"The system prepares the display
field"}:::decision N_SetWaybillDisplayField_Node0_action["The formatted waybill number is
assigned to the waybill display
field"]:::main N_SetWaybillDisplayField_Node0 -- Yes --> N_SetWaybillDisplayField_Node0_action N_SetWaybillDisplayField_Node0_action --> E_SetWaybillDisplayField S_SetWaybillDisplayField --> N_SetWaybillDisplayField_Node0 N_SetWaybillDisplayField_Node0 -- No --> E_SetWaybillDisplayField
field"}:::decision N_SetWaybillDisplayField_Node0_action["The formatted waybill number is
assigned to the waybill display
field"]:::main N_SetWaybillDisplayField_Node0 -- Yes --> N_SetWaybillDisplayField_Node0_action N_SetWaybillDisplayField_Node0_action --> E_SetWaybillDisplayField S_SetWaybillDisplayField --> N_SetWaybillDisplayField_Node0 N_SetWaybillDisplayField_Node0 -- No --> E_SetWaybillDisplayField
File: GCX016.cbl
GIVEN:
A waybill number has been formatted for display
WHEN:
The system prepares the display field
THEN:
The formatted waybill number is assigned to the waybill display field
β Consolidated Acceptance Criteria
- The system processes the waybill display requirement → the system displays 'No Waybill' message in the waybill field
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_DisplayNoWaybillMessage(["Start Step"])
E_DisplayNoWaybillMessage(["End Step"])
N_DisplayNoWaybillMessage_Node0{"The system processes the waybill
display requirement"}:::decision N_DisplayNoWaybillMessage_Node0_action["The system displays No Waybill
message in the waybill field"]:::main N_DisplayNoWaybillMessage_Node0 -- Yes --> N_DisplayNoWaybillMessage_Node0_action N_DisplayNoWaybillMessage_Node0_action --> E_DisplayNoWaybillMessage S_DisplayNoWaybillMessage --> N_DisplayNoWaybillMessage_Node0 N_DisplayNoWaybillMessage_Node0 -- No --> E_DisplayNoWaybillMessage
display requirement"}:::decision N_DisplayNoWaybillMessage_Node0_action["The system displays No Waybill
message in the waybill field"]:::main N_DisplayNoWaybillMessage_Node0 -- Yes --> N_DisplayNoWaybillMessage_Node0_action N_DisplayNoWaybillMessage_Node0_action --> E_DisplayNoWaybillMessage S_DisplayNoWaybillMessage --> N_DisplayNoWaybillMessage_Node0 N_DisplayNoWaybillMessage_Node0 -- No --> E_DisplayNoWaybillMessage
File: GCX016.cbl
GIVEN:
A cargo record has no waybill number present
WHEN:
The system processes the waybill display requirement
THEN:
The system displays 'No Waybill' message in the waybill field
β Consolidated Acceptance Criteria
- The system generates the report output → the waybill information is included in the report
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IncludeinReportOutput(["Start Step"])
E_IncludeinReportOutput(["End Step"])
N_IncludeinReportOutput_Node0{"The system generates the report
output"}:::decision N_IncludeinReportOutput_Node0_action["The waybill information is included
in the report"]:::main N_IncludeinReportOutput_Node0 -- Yes --> N_IncludeinReportOutput_Node0_action N_IncludeinReportOutput_Node0_action --> E_IncludeinReportOutput S_IncludeinReportOutput --> N_IncludeinReportOutput_Node0 N_IncludeinReportOutput_Node0 -- No --> E_IncludeinReportOutput
output"}:::decision N_IncludeinReportOutput_Node0_action["The waybill information is included
in the report"]:::main N_IncludeinReportOutput_Node0 -- Yes --> N_IncludeinReportOutput_Node0_action N_IncludeinReportOutput_Node0_action --> E_IncludeinReportOutput S_IncludeinReportOutput --> N_IncludeinReportOutput_Node0 N_IncludeinReportOutput_Node0 -- No --> E_IncludeinReportOutput
File: GCX016.cbl
GIVEN:
Waybill display field has been set with either waybill number or no waybill message
WHEN:
The system generates the report output
THEN:
The waybill information is included in the report
β Consolidated Acceptance Criteria
- The system needs to display cargo status information → the system formats and displays the US-CCN number combined with both CPRS and USCS status descriptions in a readable format
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_DisplayFormattedUSCCNStatus(["Start Step"])
E_DisplayFormattedUSCCNStatus(["End Step"])
N_DisplayFormattedUSCCNStatus_Node0{"The system needs to display cargo
status information"}:::decision N_DisplayFormattedUSCCNStatus_Node0_action["The system formats and displays the
US-CCN number combined with both
CPRS and USCS status descriptions in
a readable format"]:::main N_DisplayFormattedUSCCNStatus_Node0 -- Yes --> N_DisplayFormattedUSCCNStatus_Node0_action N_DisplayFormattedUSCCNStatus_Node0_action --> E_DisplayFormattedUSCCNStatus S_DisplayFormattedUSCCNStatus --> N_DisplayFormattedUSCCNStatus_Node0 N_DisplayFormattedUSCCNStatus_Node0 -- No --> E_DisplayFormattedUSCCNStatus
status information"}:::decision N_DisplayFormattedUSCCNStatus_Node0_action["The system formats and displays the
US-CCN number combined with both
CPRS and USCS status descriptions in
a readable format"]:::main N_DisplayFormattedUSCCNStatus_Node0 -- Yes --> N_DisplayFormattedUSCCNStatus_Node0_action N_DisplayFormattedUSCCNStatus_Node0_action --> E_DisplayFormattedUSCCNStatus S_DisplayFormattedUSCCNStatus --> N_DisplayFormattedUSCCNStatus_Node0 N_DisplayFormattedUSCCNStatus_Node0 -- No --> E_DisplayFormattedUSCCNStatus
File: GCX016.cbl
GIVEN:
A cargo record exists with US-CCN number, CPRS status code, and USCS status code
WHEN:
The system needs to display cargo status information
THEN:
- The system formats
- Displays the us-ccn number combined with both cprs
- Uscs status descriptions in a readable format
β Consolidated Acceptance Criteria
- The system needs to display CPRS status information → the system looks up and retrieves the corresponding CPRS status description from the status description tables
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LookupCPRSStatusDescription(["Start Step"])
E_LookupCPRSStatusDescription(["End Step"])
N_LookupCPRSStatusDescription_Node0{"The system needs to display CPRS
status information"}:::decision N_LookupCPRSStatusDescription_Node0_action["The system looks up and retrieves
the corresponding CPRS status
description from the status
description tables"]:::main N_LookupCPRSStatusDescription_Node0 -- Yes --> N_LookupCPRSStatusDescription_Node0_action N_LookupCPRSStatusDescription_Node0_action --> E_LookupCPRSStatusDescription S_LookupCPRSStatusDescription --> N_LookupCPRSStatusDescription_Node0 N_LookupCPRSStatusDescription_Node0 -- No --> E_LookupCPRSStatusDescription
status information"}:::decision N_LookupCPRSStatusDescription_Node0_action["The system looks up and retrieves
the corresponding CPRS status
description from the status
description tables"]:::main N_LookupCPRSStatusDescription_Node0 -- Yes --> N_LookupCPRSStatusDescription_Node0_action N_LookupCPRSStatusDescription_Node0_action --> E_LookupCPRSStatusDescription S_LookupCPRSStatusDescription --> N_LookupCPRSStatusDescription_Node0 N_LookupCPRSStatusDescription_Node0 -- No --> E_LookupCPRSStatusDescription
File: GCX016.cbl
GIVEN:
A CPRS status code exists in the cargo record
WHEN:
The system needs to display CPRS status information
THEN:
- The system looks up
- Retrieves the corresponding cprs status description from the status description tables
β Consolidated Acceptance Criteria
- The system needs to display USCS status information → the system looks up and retrieves the corresponding USCS status description from the status description tables
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LookupUSCSStatusDescription(["Start Step"])
E_LookupUSCSStatusDescription(["End Step"])
N_LookupUSCSStatusDescription_Node0{"The system needs to display USCS
status information"}:::decision N_LookupUSCSStatusDescription_Node0_action["The system looks up and retrieves
the corresponding USCS status
description from the status
description tables"]:::main N_LookupUSCSStatusDescription_Node0 -- Yes --> N_LookupUSCSStatusDescription_Node0_action N_LookupUSCSStatusDescription_Node0_action --> E_LookupUSCSStatusDescription S_LookupUSCSStatusDescription --> N_LookupUSCSStatusDescription_Node0 N_LookupUSCSStatusDescription_Node0 -- No --> E_LookupUSCSStatusDescription
status information"}:::decision N_LookupUSCSStatusDescription_Node0_action["The system looks up and retrieves
the corresponding USCS status
description from the status
description tables"]:::main N_LookupUSCSStatusDescription_Node0 -- Yes --> N_LookupUSCSStatusDescription_Node0_action N_LookupUSCSStatusDescription_Node0_action --> E_LookupUSCSStatusDescription S_LookupUSCSStatusDescription --> N_LookupUSCSStatusDescription_Node0 N_LookupUSCSStatusDescription_Node0 -- No --> E_LookupUSCSStatusDescription
File: GCX016.cbl
GIVEN:
A USCS status code exists in the cargo record
WHEN:
The system needs to display USCS status information
THEN:
- The system looks up
- Retrieves the corresponding uscs status description from the status description tables
β Consolidated Acceptance Criteria
- The system processes cargo status display → the system extracts the US-CCN number from the cargo record
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExtractUSCCNNumber(["Start Step"])
E_ExtractUSCCNNumber(["End Step"])
N_ExtractUSCCNNumber_Node0{"The system processes cargo status
display"}:::decision N_ExtractUSCCNNumber_Node0_action["The system extracts the US-CCN
number from the cargo record"]:::main N_ExtractUSCCNNumber_Node0 -- Yes --> N_ExtractUSCCNNumber_Node0_action N_ExtractUSCCNNumber_Node0_action --> E_ExtractUSCCNNumber S_ExtractUSCCNNumber --> N_ExtractUSCCNNumber_Node0 N_ExtractUSCCNNumber_Node0 -- No --> E_ExtractUSCCNNumber
display"}:::decision N_ExtractUSCCNNumber_Node0_action["The system extracts the US-CCN
number from the cargo record"]:::main N_ExtractUSCCNNumber_Node0 -- Yes --> N_ExtractUSCCNNumber_Node0_action N_ExtractUSCCNNumber_Node0_action --> E_ExtractUSCCNNumber S_ExtractUSCCNNumber --> N_ExtractUSCCNNumber_Node0 N_ExtractUSCCNNumber_Node0 -- No --> E_ExtractUSCCNNumber
File: GCX016.cbl
GIVEN:
A cargo record contains US-CCN information
WHEN:
The system processes cargo status display
THEN:
The system extracts the US-CCN number from the cargo record
β Consolidated Acceptance Criteria
- The system processes status display requirements → the system retrieves the CPRS status code from the cargo record
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GetCPRSStatusCode(["Start Step"])
E_GetCPRSStatusCode(["End Step"])
N_GetCPRSStatusCode_Node0{"The system processes status display
requirements"}:::decision N_GetCPRSStatusCode_Node0_action["The system retrieves the CPRS
status code from the cargo record"]:::main N_GetCPRSStatusCode_Node0 -- Yes --> N_GetCPRSStatusCode_Node0_action N_GetCPRSStatusCode_Node0_action --> E_GetCPRSStatusCode S_GetCPRSStatusCode --> N_GetCPRSStatusCode_Node0 N_GetCPRSStatusCode_Node0 -- No --> E_GetCPRSStatusCode
requirements"}:::decision N_GetCPRSStatusCode_Node0_action["The system retrieves the CPRS
status code from the cargo record"]:::main N_GetCPRSStatusCode_Node0 -- Yes --> N_GetCPRSStatusCode_Node0_action N_GetCPRSStatusCode_Node0_action --> E_GetCPRSStatusCode S_GetCPRSStatusCode --> N_GetCPRSStatusCode_Node0 N_GetCPRSStatusCode_Node0 -- No --> E_GetCPRSStatusCode
File: GCX016.cbl
GIVEN:
A cargo record exists with CPRS status information
WHEN:
The system processes status display requirements
THEN:
The system retrieves the CPRS status code from the cargo record
β Consolidated Acceptance Criteria
- The system processes status display requirements → the system retrieves the USCS status code from the cargo record
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GetUSCSStatusCode(["Start Step"])
E_GetUSCSStatusCode(["End Step"])
N_GetUSCSStatusCode_Node0{"The system processes status display
requirements"}:::decision N_GetUSCSStatusCode_Node0_action["The system retrieves the USCS
status code from the cargo record"]:::main N_GetUSCSStatusCode_Node0 -- Yes --> N_GetUSCSStatusCode_Node0_action N_GetUSCSStatusCode_Node0_action --> E_GetUSCSStatusCode S_GetUSCSStatusCode --> N_GetUSCSStatusCode_Node0 N_GetUSCSStatusCode_Node0 -- No --> E_GetUSCSStatusCode
requirements"}:::decision N_GetUSCSStatusCode_Node0_action["The system retrieves the USCS
status code from the cargo record"]:::main N_GetUSCSStatusCode_Node0 -- Yes --> N_GetUSCSStatusCode_Node0_action N_GetUSCSStatusCode_Node0_action --> E_GetUSCSStatusCode S_GetUSCSStatusCode --> N_GetUSCSStatusCode_Node0 N_GetUSCSStatusCode_Node0 -- No --> E_GetUSCSStatusCode
File: GCX016.cbl
GIVEN:
A cargo record exists with USCS status information
WHEN:
The system processes status display requirements
THEN:
The system retrieves the USCS status code from the cargo record
β Consolidated Acceptance Criteria
- The system needs to display disposition code information → the disposition code value is extracted from the status array entry
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RetrieveDispositionCodefromStatusArray(["Start Step"])
E_RetrieveDispositionCodefromStatusArray(["End Step"])
N_RetrieveDispositionCodefromStatusArray_Node0{"The system needs to display
disposition code information"}:::decision N_RetrieveDispositionCodefromStatusArray_Node0_action["The disposition code value is
extracted from the status array
entry"]:::main N_RetrieveDispositionCodefromStatusArray_Node0 -- Yes --> N_RetrieveDispositionCodefromStatusArray_Node0_action N_RetrieveDispositionCodefromStatusArray_Node0_action --> E_RetrieveDispositionCodefromStatusArray S_RetrieveDispositionCodefromStatusArray --> N_RetrieveDispositionCodefromStatusArray_Node0 N_RetrieveDispositionCodefromStatusArray_Node0 -- No --> E_RetrieveDispositionCodefromStatusArray
disposition code information"}:::decision N_RetrieveDispositionCodefromStatusArray_Node0_action["The disposition code value is
extracted from the status array
entry"]:::main N_RetrieveDispositionCodefromStatusArray_Node0 -- Yes --> N_RetrieveDispositionCodefromStatusArray_Node0_action N_RetrieveDispositionCodefromStatusArray_Node0_action --> E_RetrieveDispositionCodefromStatusArray S_RetrieveDispositionCodefromStatusArray --> N_RetrieveDispositionCodefromStatusArray_Node0 N_RetrieveDispositionCodefromStatusArray_Node0 -- No --> E_RetrieveDispositionCodefromStatusArray
File: GCX016.cbl
GIVEN:
A status array entry exists in S09A
WHEN:
The system needs to display disposition code information
THEN:
The disposition code value is extracted from the status array entry
β Consolidated Acceptance Criteria
- The system needs code description information → the DC table is accessed using the disposition code as lookup key
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AccessDCTableforCodeDetails(["Start Step"])
E_AccessDCTableforCodeDetails(["End Step"])
N_AccessDCTableforCodeDetails_Node0{"The system needs code description
information"}:::decision N_AccessDCTableforCodeDetails_Node0_action["The DC table is accessed using the
disposition code as lookup key"]:::main N_AccessDCTableforCodeDetails_Node0 -- Yes --> N_AccessDCTableforCodeDetails_Node0_action N_AccessDCTableforCodeDetails_Node0_action --> E_AccessDCTableforCodeDetails S_AccessDCTableforCodeDetails --> N_AccessDCTableforCodeDetails_Node0 N_AccessDCTableforCodeDetails_Node0 -- No --> E_AccessDCTableforCodeDetails
information"}:::decision N_AccessDCTableforCodeDetails_Node0_action["The DC table is accessed using the
disposition code as lookup key"]:::main N_AccessDCTableforCodeDetails_Node0 -- Yes --> N_AccessDCTableforCodeDetails_Node0_action N_AccessDCTableforCodeDetails_Node0_action --> E_AccessDCTableforCodeDetails S_AccessDCTableforCodeDetails --> N_AccessDCTableforCodeDetails_Node0 N_AccessDCTableforCodeDetails_Node0 -- No --> E_AccessDCTableforCodeDetails
File: GCX016.cbl
GIVEN:
A disposition code value has been retrieved from status array
WHEN:
The system needs code description information
THEN:
The DC table is accessed using the disposition code as lookup key
β Consolidated Acceptance Criteria
- The system checks if the code exists in the table → a found or not found status is determined based on table lookup results
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CodeFoundinTable(["Start Step"])
E_CodeFoundinTable(["End Step"])
N_CodeFoundinTable_Node0{"The system checks if the code
exists in the table"}:::decision N_CodeFoundinTable_Node0_action["A found or not found status is
determined based on table lookup
results"]:::main N_CodeFoundinTable_Node0 -- Yes --> N_CodeFoundinTable_Node0_action N_CodeFoundinTable_Node0_action --> E_CodeFoundinTable S_CodeFoundinTable --> N_CodeFoundinTable_Node0 N_CodeFoundinTable_Node0 -- No --> E_CodeFoundinTable
exists in the table"}:::decision N_CodeFoundinTable_Node0_action["A found or not found status is
determined based on table lookup
results"]:::main N_CodeFoundinTable_Node0 -- Yes --> N_CodeFoundinTable_Node0_action N_CodeFoundinTable_Node0_action --> E_CodeFoundinTable S_CodeFoundinTable --> N_CodeFoundinTable_Node0 N_CodeFoundinTable_Node0 -- No --> E_CodeFoundinTable
File: GCX016.cbl
GIVEN:
A disposition code lookup has been performed against DC table
WHEN:
The system checks if the code exists in the table
THEN:
A found or not found status is determined based on table lookup results
β Consolidated Acceptance Criteria
- The system needs to display code information → a default description is used instead of table description
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UseDefaultDescription(["Start Step"])
E_UseDefaultDescription(["End Step"])
N_UseDefaultDescription_Node0{"The system needs to display code
information"}:::decision N_UseDefaultDescription_Node0_action["A default description is used
instead of table description"]:::main N_UseDefaultDescription_Node0 -- Yes --> N_UseDefaultDescription_Node0_action N_UseDefaultDescription_Node0_action --> E_UseDefaultDescription S_UseDefaultDescription --> N_UseDefaultDescription_Node0 N_UseDefaultDescription_Node0 -- No --> E_UseDefaultDescription
information"}:::decision N_UseDefaultDescription_Node0_action["A default description is used
instead of table description"]:::main N_UseDefaultDescription_Node0 -- Yes --> N_UseDefaultDescription_Node0_action N_UseDefaultDescription_Node0_action --> E_UseDefaultDescription S_UseDefaultDescription --> N_UseDefaultDescription_Node0 N_UseDefaultDescription_Node0 -- No --> E_UseDefaultDescription
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
A disposition code is not found in the DC table
WHEN:
The system needs to display code information
THEN:
A default description is used instead of table description
β Consolidated Acceptance Criteria
- The code is not found in the reference data → a warning message is logged indicating the missing code
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogCodeNotFoundWarning(["Start Step"])
E_LogCodeNotFoundWarning(["End Step"])
N_LogCodeNotFoundWarning_Node0{"The code is not found in the
reference data"}:::decision N_LogCodeNotFoundWarning_Node0_action["A warning message is logged
indicating the missing code"]:::main N_LogCodeNotFoundWarning_Node0 -- Yes --> N_LogCodeNotFoundWarning_Node0_action N_LogCodeNotFoundWarning_Node0_action --> E_LogCodeNotFoundWarning S_LogCodeNotFoundWarning --> N_LogCodeNotFoundWarning_Node0 N_LogCodeNotFoundWarning_Node0 -- No --> E_LogCodeNotFoundWarning
reference data"}:::decision N_LogCodeNotFoundWarning_Node0_action["A warning message is logged
indicating the missing code"]:::main N_LogCodeNotFoundWarning_Node0 -- Yes --> N_LogCodeNotFoundWarning_Node0_action N_LogCodeNotFoundWarning_Node0_action --> E_LogCodeNotFoundWarning S_LogCodeNotFoundWarning --> N_LogCodeNotFoundWarning_Node0 N_LogCodeNotFoundWarning_Node0 -- No --> E_LogCodeNotFoundWarning
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
A disposition code lookup fails in the DC table
WHEN:
The code is not found in the reference data
THEN:
A warning message is logged indicating the missing code
β Consolidated Acceptance Criteria
- The system prepares the code for display → the code number is formatted according to display standards
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_FormatCodeNumber(["Start Step"])
E_FormatCodeNumber(["End Step"])
N_FormatCodeNumber_Node0{"The system prepares the code for
display"}:::decision N_FormatCodeNumber_Node0_action["The code number is formatted
according to display standards"]:::main N_FormatCodeNumber_Node0 -- Yes --> N_FormatCodeNumber_Node0_action N_FormatCodeNumber_Node0_action --> E_FormatCodeNumber S_FormatCodeNumber --> N_FormatCodeNumber_Node0 N_FormatCodeNumber_Node0 -- No --> E_FormatCodeNumber
display"}:::decision N_FormatCodeNumber_Node0_action["The code number is formatted
according to display standards"]:::main N_FormatCodeNumber_Node0 -- Yes --> N_FormatCodeNumber_Node0_action N_FormatCodeNumber_Node0_action --> E_FormatCodeNumber S_FormatCodeNumber --> N_FormatCodeNumber_Node0 N_FormatCodeNumber_Node0 -- No --> E_FormatCodeNumber
File: GCX016.cbl
GIVEN:
A disposition code value is available
WHEN:
The system prepares the code for display
THEN:
The code number is formatted according to display standards
β Consolidated Acceptance Criteria
- The system prepares the description for display → the description text is formatted according to display standards
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_FormatCodeDescriptionText(["Start Step"])
E_FormatCodeDescriptionText(["End Step"])
N_FormatCodeDescriptionText_Node0{"The system prepares the description
for display"}:::decision N_FormatCodeDescriptionText_Node0_action["The description text is formatted
according to display standards"]:::main N_FormatCodeDescriptionText_Node0 -- Yes --> N_FormatCodeDescriptionText_Node0_action N_FormatCodeDescriptionText_Node0_action --> E_FormatCodeDescriptionText S_FormatCodeDescriptionText --> N_FormatCodeDescriptionText_Node0 N_FormatCodeDescriptionText_Node0 -- No --> E_FormatCodeDescriptionText
for display"}:::decision N_FormatCodeDescriptionText_Node0_action["The description text is formatted
according to display standards"]:::main N_FormatCodeDescriptionText_Node0 -- Yes --> N_FormatCodeDescriptionText_Node0_action N_FormatCodeDescriptionText_Node0_action --> E_FormatCodeDescriptionText S_FormatCodeDescriptionText --> N_FormatCodeDescriptionText_Node0 N_FormatCodeDescriptionText_Node0 -- No --> E_FormatCodeDescriptionText
File: GCX016.cbl
GIVEN:
A disposition code description is available from DC table or default
WHEN:
The system prepares the description for display
THEN:
The description text is formatted according to display standards
β Consolidated Acceptance Criteria
- The system creates the final display string → the code and description are combined into a single formatted string
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CombineCodeandDescription(["Start Step"])
E_CombineCodeandDescription(["End Step"])
N_CombineCodeandDescription_Node0{"The system creates the final
display string"}:::decision N_CombineCodeandDescription_Node0_action["The code and description are
combined into a single formatted
string"]:::main N_CombineCodeandDescription_Node0 -- Yes --> N_CombineCodeandDescription_Node0_action N_CombineCodeandDescription_Node0_action --> E_CombineCodeandDescription S_CombineCodeandDescription --> N_CombineCodeandDescription_Node0 N_CombineCodeandDescription_Node0 -- No --> E_CombineCodeandDescription
display string"}:::decision N_CombineCodeandDescription_Node0_action["The code and description are
combined into a single formatted
string"]:::main N_CombineCodeandDescription_Node0 -- Yes --> N_CombineCodeandDescription_Node0_action N_CombineCodeandDescription_Node0_action --> E_CombineCodeandDescription S_CombineCodeandDescription --> N_CombineCodeandDescription_Node0 N_CombineCodeandDescription_Node0 -- No --> E_CombineCodeandDescription
File: GCX016.cbl
GIVEN:
Both formatted code number and description text are available
WHEN:
The system creates the final display string
THEN:
- The code
- Description are combined into a single formatted string
β Consolidated Acceptance Criteria
- The system finalizes the display format → standard display formatting rules are applied to ensure consistent presentation
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetDisplayFormat(["Start Step"])
E_SetDisplayFormat(["End Step"])
N_SetDisplayFormat_Node0{"The system finalizes the display
format"}:::decision N_SetDisplayFormat_Node0_action["Standard display formatting rules
are applied to ensure consistent
presentation"]:::main N_SetDisplayFormat_Node0 -- Yes --> N_SetDisplayFormat_Node0_action N_SetDisplayFormat_Node0_action --> E_SetDisplayFormat S_SetDisplayFormat --> N_SetDisplayFormat_Node0 N_SetDisplayFormat_Node0 -- No --> E_SetDisplayFormat
format"}:::decision N_SetDisplayFormat_Node0_action["Standard display formatting rules
are applied to ensure consistent
presentation"]:::main N_SetDisplayFormat_Node0 -- Yes --> N_SetDisplayFormat_Node0_action N_SetDisplayFormat_Node0_action --> E_SetDisplayFormat S_SetDisplayFormat --> N_SetDisplayFormat_Node0 N_SetDisplayFormat_Node0 -- No --> E_SetDisplayFormat
File: GCX016.cbl
GIVEN:
A combined code and description string exists
WHEN:
The system finalizes the display format
THEN:
Standard display formatting rules are applied to ensure consistent presentation
β Consolidated Acceptance Criteria
- The formatting process is complete → the formatted display string is returned to the requesting process
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ReturnFormattedDisplayString(["Start Step"])
E_ReturnFormattedDisplayString(["End Step"])
N_ReturnFormattedDisplayString_Node0{"The formatting process is complete"}:::decision
N_ReturnFormattedDisplayString_Node0_action["The formatted display string is
returned to the requesting process"]:::main N_ReturnFormattedDisplayString_Node0 -- Yes --> N_ReturnFormattedDisplayString_Node0_action N_ReturnFormattedDisplayString_Node0_action --> E_ReturnFormattedDisplayString S_ReturnFormattedDisplayString --> N_ReturnFormattedDisplayString_Node0 N_ReturnFormattedDisplayString_Node0 -- No --> E_ReturnFormattedDisplayString
returned to the requesting process"]:::main N_ReturnFormattedDisplayString_Node0 -- Yes --> N_ReturnFormattedDisplayString_Node0_action N_ReturnFormattedDisplayString_Node0_action --> E_ReturnFormattedDisplayString S_ReturnFormattedDisplayString --> N_ReturnFormattedDisplayString_Node0 N_ReturnFormattedDisplayString_Node0 -- No --> E_ReturnFormattedDisplayString
File: GCX016.cbl
GIVEN:
A fully formatted disposition code display string is ready
WHEN:
The formatting process is complete
THEN:
The formatted display string is returned to the requesting process
β Consolidated Acceptance Criteria
- The system begins processing any segment or transaction → the current system date is captured and stored for timestamping purposes
- The system needs to capture the current date → the system date is retrieved and stored for transaction processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CaptureCurrentSystemDate(["Start Step"])
E_CaptureCurrentSystemDate(["End Step"])
N_CaptureCurrentSystemDate_Node0{"The system begins processing any
segment or transaction"}:::decision N_CaptureCurrentSystemDate_Node0_action["The current system date is captured
and stored for timestamping purposes"]:::main N_CaptureCurrentSystemDate_Node0 -- Yes --> N_CaptureCurrentSystemDate_Node0_action N_CaptureCurrentSystemDate_Node0_action --> E_CaptureCurrentSystemDate S_CaptureCurrentSystemDate --> N_CaptureCurrentSystemDate_Node0 N_CaptureCurrentSystemDate_Node1{"The system needs to capture the
current date"}:::decision N_CaptureCurrentSystemDate_Node1_action["The system date is retrieved and
stored for transaction processing"]:::main N_CaptureCurrentSystemDate_Node1 -- Yes --> N_CaptureCurrentSystemDate_Node1_action N_CaptureCurrentSystemDate_Node1_action --> E_CaptureCurrentSystemDate N_CaptureCurrentSystemDate_Node0 -- No --> N_CaptureCurrentSystemDate_Node1 N_CaptureCurrentSystemDate_Node1 -- No --> E_CaptureCurrentSystemDate
segment or transaction"}:::decision N_CaptureCurrentSystemDate_Node0_action["The current system date is captured
and stored for timestamping purposes"]:::main N_CaptureCurrentSystemDate_Node0 -- Yes --> N_CaptureCurrentSystemDate_Node0_action N_CaptureCurrentSystemDate_Node0_action --> E_CaptureCurrentSystemDate S_CaptureCurrentSystemDate --> N_CaptureCurrentSystemDate_Node0 N_CaptureCurrentSystemDate_Node1{"The system needs to capture the
current date"}:::decision N_CaptureCurrentSystemDate_Node1_action["The system date is retrieved and
stored for transaction processing"]:::main N_CaptureCurrentSystemDate_Node1 -- Yes --> N_CaptureCurrentSystemDate_Node1_action N_CaptureCurrentSystemDate_Node1_action --> E_CaptureCurrentSystemDate N_CaptureCurrentSystemDate_Node0 -- No --> N_CaptureCurrentSystemDate_Node1 N_CaptureCurrentSystemDate_Node1 -- No --> E_CaptureCurrentSystemDate
File: GCX016.cbl
GIVEN:
A cargo processing transaction is initiated
WHEN:
The system begins processing any segment or transaction
THEN:
- The current system date is captured
- Stored for timestamping purposes
File: GCX016.cbl
GIVEN:
A business transaction requires timestamping
WHEN:
The system needs to capture the current date
THEN:
- The system date is retrieved
- Stored for transaction processing
β Consolidated Acceptance Criteria
- The system begins processing any segment or transaction → the current system time is captured and stored for timestamping purposes
- The system needs to capture the current time → the system time is retrieved and stored for transaction processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CaptureCurrentSystemTime(["Start Step"])
E_CaptureCurrentSystemTime(["End Step"])
N_CaptureCurrentSystemTime_Node0{"The system begins processing any
segment or transaction"}:::decision N_CaptureCurrentSystemTime_Node0_action["The current system time is captured
and stored for timestamping purposes"]:::main N_CaptureCurrentSystemTime_Node0 -- Yes --> N_CaptureCurrentSystemTime_Node0_action N_CaptureCurrentSystemTime_Node0_action --> E_CaptureCurrentSystemTime S_CaptureCurrentSystemTime --> N_CaptureCurrentSystemTime_Node0 N_CaptureCurrentSystemTime_Node1{"The system needs to capture the
current time"}:::decision N_CaptureCurrentSystemTime_Node1_action["The system time is retrieved and
stored for transaction processing"]:::main N_CaptureCurrentSystemTime_Node1 -- Yes --> N_CaptureCurrentSystemTime_Node1_action N_CaptureCurrentSystemTime_Node1_action --> E_CaptureCurrentSystemTime N_CaptureCurrentSystemTime_Node0 -- No --> N_CaptureCurrentSystemTime_Node1 N_CaptureCurrentSystemTime_Node1 -- No --> E_CaptureCurrentSystemTime
segment or transaction"}:::decision N_CaptureCurrentSystemTime_Node0_action["The current system time is captured
and stored for timestamping purposes"]:::main N_CaptureCurrentSystemTime_Node0 -- Yes --> N_CaptureCurrentSystemTime_Node0_action N_CaptureCurrentSystemTime_Node0_action --> E_CaptureCurrentSystemTime S_CaptureCurrentSystemTime --> N_CaptureCurrentSystemTime_Node0 N_CaptureCurrentSystemTime_Node1{"The system needs to capture the
current time"}:::decision N_CaptureCurrentSystemTime_Node1_action["The system time is retrieved and
stored for transaction processing"]:::main N_CaptureCurrentSystemTime_Node1 -- Yes --> N_CaptureCurrentSystemTime_Node1_action N_CaptureCurrentSystemTime_Node1_action --> E_CaptureCurrentSystemTime N_CaptureCurrentSystemTime_Node0 -- No --> N_CaptureCurrentSystemTime_Node1 N_CaptureCurrentSystemTime_Node1 -- No --> E_CaptureCurrentSystemTime
File: GCX016.cbl
GIVEN:
A cargo processing transaction is initiated
WHEN:
The system begins processing any segment or transaction
THEN:
- The current system time is captured
- Stored for timestamping purposes
File: GCX016.cbl
GIVEN:
A business transaction requires precise timing
WHEN:
The system needs to capture the current time
THEN:
- The system time is retrieved
- Stored for transaction processing
β Consolidated Acceptance Criteria
- The date needs to be displayed in reports or user interfaces → the date is formatted according to standard display requirements
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_FormatDateforDisplay(["Start Step"])
E_FormatDateforDisplay(["End Step"])
N_FormatDateforDisplay_Node0{"The date needs to be displayed in
reports or user interfaces"}:::decision N_FormatDateforDisplay_Node0_action["The date is formatted according to
standard display requirements"]:::main N_FormatDateforDisplay_Node0 -- Yes --> N_FormatDateforDisplay_Node0_action N_FormatDateforDisplay_Node0_action --> E_FormatDateforDisplay S_FormatDateforDisplay --> N_FormatDateforDisplay_Node0 N_FormatDateforDisplay_Node0 -- No --> E_FormatDateforDisplay
reports or user interfaces"}:::decision N_FormatDateforDisplay_Node0_action["The date is formatted according to
standard display requirements"]:::main N_FormatDateforDisplay_Node0 -- Yes --> N_FormatDateforDisplay_Node0_action N_FormatDateforDisplay_Node0_action --> E_FormatDateforDisplay S_FormatDateforDisplay --> N_FormatDateforDisplay_Node0 N_FormatDateforDisplay_Node0 -- No --> E_FormatDateforDisplay
File: GCX016.cbl
GIVEN:
A system date has been captured
WHEN:
The date needs to be displayed in reports or user interfaces
THEN:
The date is formatted according to standard display requirements
β Consolidated Acceptance Criteria
- The time needs to be displayed in reports or user interfaces → the time is formatted according to standard display requirements
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_FormatTimeforDisplay(["Start Step"])
E_FormatTimeforDisplay(["End Step"])
N_FormatTimeforDisplay_Node0{"The time needs to be displayed in
reports or user interfaces"}:::decision N_FormatTimeforDisplay_Node0_action["The time is formatted according to
standard display requirements"]:::main N_FormatTimeforDisplay_Node0 -- Yes --> N_FormatTimeforDisplay_Node0_action N_FormatTimeforDisplay_Node0_action --> E_FormatTimeforDisplay S_FormatTimeforDisplay --> N_FormatTimeforDisplay_Node0 N_FormatTimeforDisplay_Node0 -- No --> E_FormatTimeforDisplay
reports or user interfaces"}:::decision N_FormatTimeforDisplay_Node0_action["The time is formatted according to
standard display requirements"]:::main N_FormatTimeforDisplay_Node0 -- Yes --> N_FormatTimeforDisplay_Node0_action N_FormatTimeforDisplay_Node0_action --> E_FormatTimeforDisplay S_FormatTimeforDisplay --> N_FormatTimeforDisplay_Node0 N_FormatTimeforDisplay_Node0 -- No --> E_FormatTimeforDisplay
File: GCX016.cbl
GIVEN:
A system time has been captured
WHEN:
The time needs to be displayed in reports or user interfaces
THEN:
The time is formatted according to standard display requirements
β Consolidated Acceptance Criteria
- A complete timestamp is required for processing records → the formatted date and time are combined into a single timestamp
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CombineDateandTimeStamp(["Start Step"])
E_CombineDateandTimeStamp(["End Step"])
N_CombineDateandTimeStamp_Node0{"A complete timestamp is required
for processing records"}:::decision N_CombineDateandTimeStamp_Node0_action["The formatted date and time are
combined into a single timestamp"]:::main N_CombineDateandTimeStamp_Node0 -- Yes --> N_CombineDateandTimeStamp_Node0_action N_CombineDateandTimeStamp_Node0_action --> E_CombineDateandTimeStamp S_CombineDateandTimeStamp --> N_CombineDateandTimeStamp_Node0 N_CombineDateandTimeStamp_Node0 -- No --> E_CombineDateandTimeStamp
for processing records"}:::decision N_CombineDateandTimeStamp_Node0_action["The formatted date and time are
combined into a single timestamp"]:::main N_CombineDateandTimeStamp_Node0 -- Yes --> N_CombineDateandTimeStamp_Node0_action N_CombineDateandTimeStamp_Node0_action --> E_CombineDateandTimeStamp S_CombineDateandTimeStamp --> N_CombineDateandTimeStamp_Node0 N_CombineDateandTimeStamp_Node0 -- No --> E_CombineDateandTimeStamp
File: GCX016.cbl
GIVEN:
Both system date and time have been captured and formatted
WHEN:
A complete timestamp is required for processing records
THEN:
- The formatted date
- Time are combined into a single timestamp
β Consolidated Acceptance Criteria
- The segment processing begins → the timestamp is added to the segment header for audit purposes
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AddTimestamptoSegmentHeader(["Start Step"])
E_AddTimestamptoSegmentHeader(["End Step"])
N_AddTimestamptoSegmentHeader_Node0{"The segment processing begins"}:::decision
N_AddTimestamptoSegmentHeader_Node0_action["The timestamp is added to the
segment header for audit purposes"]:::main N_AddTimestamptoSegmentHeader_Node0 -- Yes --> N_AddTimestamptoSegmentHeader_Node0_action N_AddTimestamptoSegmentHeader_Node0_action --> E_AddTimestamptoSegmentHeader S_AddTimestamptoSegmentHeader --> N_AddTimestamptoSegmentHeader_Node0 N_AddTimestamptoSegmentHeader_Node0 -- No --> E_AddTimestamptoSegmentHeader
segment header for audit purposes"]:::main N_AddTimestamptoSegmentHeader_Node0 -- Yes --> N_AddTimestamptoSegmentHeader_Node0_action N_AddTimestamptoSegmentHeader_Node0_action --> E_AddTimestamptoSegmentHeader S_AddTimestamptoSegmentHeader --> N_AddTimestamptoSegmentHeader_Node0 N_AddTimestamptoSegmentHeader_Node0 -- No --> E_AddTimestamptoSegmentHeader
File: GCX016.cbl
GIVEN:
A cargo segment is being processed AND a combined timestamp has been created
WHEN:
The segment processing begins
THEN:
The timestamp is added to the segment header for audit purposes
β Consolidated Acceptance Criteria
- Processing events need to be logged → timestamps are added to the processing log entries
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AddTimestamptoProcessingLog(["Start Step"])
E_AddTimestamptoProcessingLog(["End Step"])
N_AddTimestamptoProcessingLog_Node0{"Processing events need to be logged"}:::decision
N_AddTimestamptoProcessingLog_Node0_action["Timestamps are added to the
processing log entries"]:::main N_AddTimestamptoProcessingLog_Node0 -- Yes --> N_AddTimestamptoProcessingLog_Node0_action N_AddTimestamptoProcessingLog_Node0_action --> E_AddTimestamptoProcessingLog S_AddTimestamptoProcessingLog --> N_AddTimestamptoProcessingLog_Node0 N_AddTimestamptoProcessingLog_Node0 -- No --> E_AddTimestamptoProcessingLog
processing log entries"]:::main N_AddTimestamptoProcessingLog_Node0 -- Yes --> N_AddTimestamptoProcessingLog_Node0_action N_AddTimestamptoProcessingLog_Node0_action --> E_AddTimestamptoProcessingLog S_AddTimestamptoProcessingLog --> N_AddTimestamptoProcessingLog_Node0 N_AddTimestamptoProcessingLog_Node0 -- No --> E_AddTimestamptoProcessingLog
File: GCX016.cbl
GIVEN:
Cargo processing activities are occurring
WHEN:
Processing events need to be logged
THEN:
Timestamps are added to the processing log entries
β Consolidated Acceptance Criteria
- The event qualifies as a system processing event → the timestamp is added to the transaction log
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AddTimestamptoTransactionLog(["Start Step"])
E_AddTimestamptoTransactionLog(["End Step"])
N_AddTimestamptoTransactionLog_Node0{"The event qualifies as a system
processing event"}:::decision N_AddTimestamptoTransactionLog_Node0_action["The timestamp is added to the
transaction log"]:::main N_AddTimestamptoTransactionLog_Node0 -- Yes --> N_AddTimestamptoTransactionLog_Node0_action N_AddTimestamptoTransactionLog_Node0_action --> E_AddTimestamptoTransactionLog S_AddTimestamptoTransactionLog --> N_AddTimestamptoTransactionLog_Node0 N_AddTimestamptoTransactionLog_Node0 -- No --> E_AddTimestamptoTransactionLog
processing event"}:::decision N_AddTimestamptoTransactionLog_Node0_action["The timestamp is added to the
transaction log"]:::main N_AddTimestamptoTransactionLog_Node0 -- Yes --> N_AddTimestamptoTransactionLog_Node0_action N_AddTimestamptoTransactionLog_Node0_action --> E_AddTimestamptoTransactionLog S_AddTimestamptoTransactionLog --> N_AddTimestamptoTransactionLog_Node0 N_AddTimestamptoTransactionLog_Node0 -- No --> E_AddTimestamptoTransactionLog
File: GCX016.cbl
GIVEN:
A system processing event is occurring AND timestamps have been created
WHEN:
The event qualifies as a system processing event
THEN:
The timestamp is added to the transaction log
β Consolidated Acceptance Criteria
- Audit trail records are being created → timestamps are added to the audit trail entries
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AddTimestamptoAuditTrail(["Start Step"])
E_AddTimestamptoAuditTrail(["End Step"])
N_AddTimestamptoAuditTrail_Node0{"Audit trail records are being
created"}:::decision N_AddTimestamptoAuditTrail_Node0_action["Timestamps are added to the audit
trail entries"]:::main N_AddTimestamptoAuditTrail_Node0 -- Yes --> N_AddTimestamptoAuditTrail_Node0_action N_AddTimestamptoAuditTrail_Node0_action --> E_AddTimestamptoAuditTrail S_AddTimestamptoAuditTrail --> N_AddTimestamptoAuditTrail_Node0 N_AddTimestamptoAuditTrail_Node0 -- No --> E_AddTimestamptoAuditTrail
created"}:::decision N_AddTimestamptoAuditTrail_Node0_action["Timestamps are added to the audit
trail entries"]:::main N_AddTimestamptoAuditTrail_Node0 -- Yes --> N_AddTimestamptoAuditTrail_Node0_action N_AddTimestamptoAuditTrail_Node0_action --> E_AddTimestamptoAuditTrail S_AddTimestamptoAuditTrail --> N_AddTimestamptoAuditTrail_Node0 N_AddTimestamptoAuditTrail_Node0 -- No --> E_AddTimestamptoAuditTrail
File: GCX016.cbl
GIVEN:
System processing events are being logged in transaction logs
WHEN:
Audit trail records are being created
THEN:
Timestamps are added to the audit trail entries
β Consolidated Acceptance Criteria
- Reports are generated for users → formatted timestamps are displayed in the reports
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_DisplayFormattedTimestampinReports(["Start Step"])
E_DisplayFormattedTimestampinReports(["End Step"])
N_DisplayFormattedTimestampinReports_Node0{"Reports are generated for users"}:::decision
N_DisplayFormattedTimestampinReports_Node0_action["Formatted timestamps are displayed
in the reports"]:::main N_DisplayFormattedTimestampinReports_Node0 -- Yes --> N_DisplayFormattedTimestampinReports_Node0_action N_DisplayFormattedTimestampinReports_Node0_action --> E_DisplayFormattedTimestampinReports S_DisplayFormattedTimestampinReports --> N_DisplayFormattedTimestampinReports_Node0 N_DisplayFormattedTimestampinReports_Node0 -- No --> E_DisplayFormattedTimestampinReports
in the reports"]:::main N_DisplayFormattedTimestampinReports_Node0 -- Yes --> N_DisplayFormattedTimestampinReports_Node0_action N_DisplayFormattedTimestampinReports_Node0_action --> E_DisplayFormattedTimestampinReports S_DisplayFormattedTimestampinReports --> N_DisplayFormattedTimestampinReports_Node0 N_DisplayFormattedTimestampinReports_Node0 -- No --> E_DisplayFormattedTimestampinReports
File: GCX016.cbl
GIVEN:
Timestamps have been captured and formatted
WHEN:
Reports are generated for users
THEN:
Formatted timestamps are displayed in the reports
β Consolidated Acceptance Criteria
- Message processing requires timestamp information → timestamps are stored in the designated message fields
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_StoreTimestampinMessageFields(["Start Step"])
E_StoreTimestampinMessageFields(["End Step"])
N_StoreTimestampinMessageFields_Node0{"Message processing requires
timestamp information"}:::decision N_StoreTimestampinMessageFields_Node0_action["Timestamps are stored in the
designated message fields"]:::main N_StoreTimestampinMessageFields_Node0 -- Yes --> N_StoreTimestampinMessageFields_Node0_action N_StoreTimestampinMessageFields_Node0_action --> E_StoreTimestampinMessageFields S_StoreTimestampinMessageFields --> N_StoreTimestampinMessageFields_Node0 N_StoreTimestampinMessageFields_Node0 -- No --> E_StoreTimestampinMessageFields
timestamp information"}:::decision N_StoreTimestampinMessageFields_Node0_action["Timestamps are stored in the
designated message fields"]:::main N_StoreTimestampinMessageFields_Node0 -- Yes --> N_StoreTimestampinMessageFields_Node0_action N_StoreTimestampinMessageFields_Node0_action --> E_StoreTimestampinMessageFields S_StoreTimestampinMessageFields --> N_StoreTimestampinMessageFields_Node0 N_StoreTimestampinMessageFields_Node0 -- No --> E_StoreTimestampinMessageFields
File: GCX016.cbl
GIVEN:
Formatted timestamps are available for display
WHEN:
Message processing requires timestamp information
THEN:
Timestamps are stored in the designated message fields
β Consolidated Acceptance Criteria
- The system needs to display quantity information for broker notification → the broker entry number is retrieved from the X4-04 field of the segment
- The system needs to retrieve broker entry number for quantity comparison → the broker entry number is extracted from the X4 segment and made available for display formatting
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RetrieveBrokerEntryNumberfromX4Segment(["Start Step"])
E_RetrieveBrokerEntryNumberfromX4Segment(["End Step"])
N_RetrieveBrokerEntryNumberfromX4Segment_Node0{"The system needs to display
quantity information for broker
notification"}:::decision N_RetrieveBrokerEntryNumberfromX4Segment_Node0_action["The broker entry number is
retrieved from the X4-04 field of
the segment"]:::main N_RetrieveBrokerEntryNumberfromX4Segment_Node0 -- Yes --> N_RetrieveBrokerEntryNumberfromX4Segment_Node0_action N_RetrieveBrokerEntryNumberfromX4Segment_Node0_action --> E_RetrieveBrokerEntryNumberfromX4Segment S_RetrieveBrokerEntryNumberfromX4Segment --> N_RetrieveBrokerEntryNumberfromX4Segment_Node0 N_RetrieveBrokerEntryNumberfromX4Segment_Node1{"The system needs to retrieve broker
entry number for quantity comparison"}:::decision N_RetrieveBrokerEntryNumberfromX4Segment_Node1_action["The broker entry number is
extracted from the X4 segment and
made available for display
formatting"]:::main N_RetrieveBrokerEntryNumberfromX4Segment_Node1 -- Yes --> N_RetrieveBrokerEntryNumberfromX4Segment_Node1_action N_RetrieveBrokerEntryNumberfromX4Segment_Node1_action --> E_RetrieveBrokerEntryNumberfromX4Segment N_RetrieveBrokerEntryNumberfromX4Segment_Node0 -- No --> N_RetrieveBrokerEntryNumberfromX4Segment_Node1 N_RetrieveBrokerEntryNumberfromX4Segment_Node1 -- No --> E_RetrieveBrokerEntryNumberfromX4Segment
quantity information for broker
notification"}:::decision N_RetrieveBrokerEntryNumberfromX4Segment_Node0_action["The broker entry number is
retrieved from the X4-04 field of
the segment"]:::main N_RetrieveBrokerEntryNumberfromX4Segment_Node0 -- Yes --> N_RetrieveBrokerEntryNumberfromX4Segment_Node0_action N_RetrieveBrokerEntryNumberfromX4Segment_Node0_action --> E_RetrieveBrokerEntryNumberfromX4Segment S_RetrieveBrokerEntryNumberfromX4Segment --> N_RetrieveBrokerEntryNumberfromX4Segment_Node0 N_RetrieveBrokerEntryNumberfromX4Segment_Node1{"The system needs to retrieve broker
entry number for quantity comparison"}:::decision N_RetrieveBrokerEntryNumberfromX4Segment_Node1_action["The broker entry number is
extracted from the X4 segment and
made available for display
formatting"]:::main N_RetrieveBrokerEntryNumberfromX4Segment_Node1 -- Yes --> N_RetrieveBrokerEntryNumberfromX4Segment_Node1_action N_RetrieveBrokerEntryNumberfromX4Segment_Node1_action --> E_RetrieveBrokerEntryNumberfromX4Segment N_RetrieveBrokerEntryNumberfromX4Segment_Node0 -- No --> N_RetrieveBrokerEntryNumberfromX4Segment_Node1 N_RetrieveBrokerEntryNumberfromX4Segment_Node1 -- No --> E_RetrieveBrokerEntryNumberfromX4Segment
File: GCX016.cbl
GIVEN:
An X4 customs release segment is available for processing
WHEN:
The system needs to display quantity information for broker notification
THEN:
The broker entry number is retrieved from the X4-04 field of the segment
File: GCX016.cbl
GIVEN:
An X4 customs release segment is available for processing
WHEN:
The system needs to retrieve broker entry number for quantity comparison
THEN:
- The broker entry number is extracted from the x4 segment
- Made available for display formatting
β Consolidated Acceptance Criteria
- Quantity mismatch detection is being performed → the total manifest quantity is retrieved from the cargo record
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GetCargoQuantityfromManifest(["Start Step"])
E_GetCargoQuantityfromManifest(["End Step"])
N_GetCargoQuantityfromManifest_Node0{"Quantity mismatch detection is
being performed"}:::decision N_GetCargoQuantityfromManifest_Node0_action["The total manifest quantity is
retrieved from the cargo record"]:::main N_GetCargoQuantityfromManifest_Node0 -- Yes --> N_GetCargoQuantityfromManifest_Node0_action N_GetCargoQuantityfromManifest_Node0_action --> E_GetCargoQuantityfromManifest S_GetCargoQuantityfromManifest --> N_GetCargoQuantityfromManifest_Node0 N_GetCargoQuantityfromManifest_Node0 -- No --> E_GetCargoQuantityfromManifest
being performed"}:::decision N_GetCargoQuantityfromManifest_Node0_action["The total manifest quantity is
retrieved from the cargo record"]:::main N_GetCargoQuantityfromManifest_Node0 -- Yes --> N_GetCargoQuantityfromManifest_Node0_action N_GetCargoQuantityfromManifest_Node0_action --> E_GetCargoQuantityfromManifest S_GetCargoQuantityfromManifest --> N_GetCargoQuantityfromManifest_Node0 N_GetCargoQuantityfromManifest_Node0 -- No --> E_GetCargoQuantityfromManifest
File: GCX016.cbl
GIVEN:
A cargo manifest record exists in the system
WHEN:
Quantity mismatch detection is being performed
THEN:
The total manifest quantity is retrieved from the cargo record
β Consolidated Acceptance Criteria
- Quantity verification is required for broker notification → the released quantity is retrieved from the status array
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GetReleasedQuantityfromStatusArray(["Start Step"])
E_GetReleasedQuantityfromStatusArray(["End Step"])
N_GetReleasedQuantityfromStatusArray_Node0{"Quantity verification is required
for broker notification"}:::decision N_GetReleasedQuantityfromStatusArray_Node0_action["The released quantity is retrieved
from the status array"]:::main N_GetReleasedQuantityfromStatusArray_Node0 -- Yes --> N_GetReleasedQuantityfromStatusArray_Node0_action N_GetReleasedQuantityfromStatusArray_Node0_action --> E_GetReleasedQuantityfromStatusArray S_GetReleasedQuantityfromStatusArray --> N_GetReleasedQuantityfromStatusArray_Node0 N_GetReleasedQuantityfromStatusArray_Node0 -- No --> E_GetReleasedQuantityfromStatusArray
for broker notification"}:::decision N_GetReleasedQuantityfromStatusArray_Node0_action["The released quantity is retrieved
from the status array"]:::main N_GetReleasedQuantityfromStatusArray_Node0 -- Yes --> N_GetReleasedQuantityfromStatusArray_Node0_action N_GetReleasedQuantityfromStatusArray_Node0_action --> E_GetReleasedQuantityfromStatusArray S_GetReleasedQuantityfromStatusArray --> N_GetReleasedQuantityfromStatusArray_Node0 N_GetReleasedQuantityfromStatusArray_Node0 -- No --> E_GetReleasedQuantityfromStatusArray
File: GCX016.cbl
GIVEN:
A cargo status array contains release information
WHEN:
Quantity verification is required for broker notification
THEN:
The released quantity is retrieved from the status array
β Consolidated Acceptance Criteria
- Quantity mismatch analysis is performed → the quantity difference is calculated as manifest quantity minus released quantity
- The system calculates the difference between these quantities → the quantity difference is computed as the absolute difference between manifest quantity and broker entry quantity
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CalculateQuantityDifference(["Start Step"])
E_CalculateQuantityDifference(["End Step"])
N_CalculateQuantityDifference_Node0{"Quantity mismatch analysis is
performed"}:::decision N_CalculateQuantityDifference_Node0_action["The quantity difference is
calculated as manifest quantity
minus released quantity"]:::main N_CalculateQuantityDifference_Node0 -- Yes --> N_CalculateQuantityDifference_Node0_action N_CalculateQuantityDifference_Node0_action --> E_CalculateQuantityDifference S_CalculateQuantityDifference --> N_CalculateQuantityDifference_Node0 N_CalculateQuantityDifference_Node1{"The system calculates the
difference between these quantities"}:::decision N_CalculateQuantityDifference_Node1_action["The quantity difference is computed
as the absolute difference between
manifest quantity and broker entry
quantity"]:::main N_CalculateQuantityDifference_Node1 -- Yes --> N_CalculateQuantityDifference_Node1_action N_CalculateQuantityDifference_Node1_action --> E_CalculateQuantityDifference N_CalculateQuantityDifference_Node0 -- No --> N_CalculateQuantityDifference_Node1 N_CalculateQuantityDifference_Node1 -- No --> E_CalculateQuantityDifference
performed"}:::decision N_CalculateQuantityDifference_Node0_action["The quantity difference is
calculated as manifest quantity
minus released quantity"]:::main N_CalculateQuantityDifference_Node0 -- Yes --> N_CalculateQuantityDifference_Node0_action N_CalculateQuantityDifference_Node0_action --> E_CalculateQuantityDifference S_CalculateQuantityDifference --> N_CalculateQuantityDifference_Node0 N_CalculateQuantityDifference_Node1{"The system calculates the
difference between these quantities"}:::decision N_CalculateQuantityDifference_Node1_action["The quantity difference is computed
as the absolute difference between
manifest quantity and broker entry
quantity"]:::main N_CalculateQuantityDifference_Node1 -- Yes --> N_CalculateQuantityDifference_Node1_action N_CalculateQuantityDifference_Node1_action --> E_CalculateQuantityDifference N_CalculateQuantityDifference_Node0 -- No --> N_CalculateQuantityDifference_Node1 N_CalculateQuantityDifference_Node1 -- No --> E_CalculateQuantityDifference
File: GCX016.cbl
GIVEN:
Manifest quantity and released quantity are available
WHEN:
Quantity mismatch analysis is performed
THEN:
The quantity difference is calculated as manifest quantity minus released quantity
File: GCX016.cbl
GIVEN:
Manifest quantity and broker entry quantity are available
WHEN:
The system calculates the difference between these quantities
THEN:
- The quantity difference is computed as the absolute difference between manifest quantity
- Broker entry quantity
β Consolidated Acceptance Criteria
- If quantity consistency → a mismatch is detected if the manifest quantity does not equal the released quantity
- If if the quantities match → if the manifest quantity does not equal the broker entry quantity, a mismatch is detected and formatting is required, otherwise no formatting is needed
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_QuantityMismatchDetected(["Start Step"])
E_QuantityMismatchDetected(["End Step"])
N_QuantityMismatchDetected_Node0{"The system evaluates quantity
consistency"}:::decision N_QuantityMismatchDetected_Node0_action["A mismatch is detected if the
manifest quantity does not equal the
released quantity"]:::main N_QuantityMismatchDetected_Node0 -- Yes --> N_QuantityMismatchDetected_Node0_action N_QuantityMismatchDetected_Node0_action --> E_QuantityMismatchDetected S_QuantityMismatchDetected --> N_QuantityMismatchDetected_Node0 N_QuantityMismatchDetected_Node1{"The system evaluates if the
quantities match"}:::decision N_QuantityMismatchDetected_Node1_action["If the manifest quantity does not
equal the broker entry quantity, a
mismatch is detected and formatting
is required, otherwise no formatting
is needed"]:::main N_QuantityMismatchDetected_Node1 -- Yes --> N_QuantityMismatchDetected_Node1_action N_QuantityMismatchDetected_Node1_action --> E_QuantityMismatchDetected N_QuantityMismatchDetected_Node0 -- No --> N_QuantityMismatchDetected_Node1 N_QuantityMismatchDetected_Node1 -- No --> E_QuantityMismatchDetected
consistency"}:::decision N_QuantityMismatchDetected_Node0_action["A mismatch is detected if the
manifest quantity does not equal the
released quantity"]:::main N_QuantityMismatchDetected_Node0 -- Yes --> N_QuantityMismatchDetected_Node0_action N_QuantityMismatchDetected_Node0_action --> E_QuantityMismatchDetected S_QuantityMismatchDetected --> N_QuantityMismatchDetected_Node0 N_QuantityMismatchDetected_Node1{"The system evaluates if the
quantities match"}:::decision N_QuantityMismatchDetected_Node1_action["If the manifest quantity does not
equal the broker entry quantity, a
mismatch is detected and formatting
is required, otherwise no formatting
is needed"]:::main N_QuantityMismatchDetected_Node1 -- Yes --> N_QuantityMismatchDetected_Node1_action N_QuantityMismatchDetected_Node1_action --> E_QuantityMismatchDetected N_QuantityMismatchDetected_Node0 -- No --> N_QuantityMismatchDetected_Node1 N_QuantityMismatchDetected_Node1 -- No --> E_QuantityMismatchDetected
File: GCX016.cbl
GIVEN:
Manifest quantity and released quantity have been retrieved and compared
WHEN:
The system evaluates quantity consistency
THEN:
A mismatch is detected if the manifest quantity does not equal the released quantity
File: GCX016.cbl
GIVEN:
Manifest quantity and broker entry quantity have been retrieved and compared
WHEN:
The system evaluates if the quantities match
THEN:
- If the manifest quantity does not equal the broker entry quantity, a mismatch is detected
- Formatting is required, otherwise no formatting is needed
β Consolidated Acceptance Criteria
- The mismatch report is being prepared → the broker entry number is formatted according to display standards
- The system formats the broker entry number for display → the broker entry number is formatted according to report display standards and prepared for inclusion in the mismatch report
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_FormatBrokerEntryNumberforDisplay(["Start Step"])
E_FormatBrokerEntryNumberforDisplay(["End Step"])
N_FormatBrokerEntryNumberforDisplay_Node0{"The mismatch report is being
prepared"}:::decision N_FormatBrokerEntryNumberforDisplay_Node0_action["The broker entry number is
formatted according to display
standards"]:::main N_FormatBrokerEntryNumberforDisplay_Node0 -- Yes --> N_FormatBrokerEntryNumberforDisplay_Node0_action N_FormatBrokerEntryNumberforDisplay_Node0_action --> E_FormatBrokerEntryNumberforDisplay S_FormatBrokerEntryNumberforDisplay --> N_FormatBrokerEntryNumberforDisplay_Node0 N_FormatBrokerEntryNumberforDisplay_Node1{"The system formats the broker entry
number for display"}:::decision N_FormatBrokerEntryNumberforDisplay_Node1_action["The broker entry number is
formatted according to report
display standards and prepared for
inclusion in the mismatch report"]:::main N_FormatBrokerEntryNumberforDisplay_Node1 -- Yes --> N_FormatBrokerEntryNumberforDisplay_Node1_action N_FormatBrokerEntryNumberforDisplay_Node1_action --> E_FormatBrokerEntryNumberforDisplay N_FormatBrokerEntryNumberforDisplay_Node0 -- No --> N_FormatBrokerEntryNumberforDisplay_Node1 N_FormatBrokerEntryNumberforDisplay_Node1 -- No --> E_FormatBrokerEntryNumberforDisplay
prepared"}:::decision N_FormatBrokerEntryNumberforDisplay_Node0_action["The broker entry number is
formatted according to display
standards"]:::main N_FormatBrokerEntryNumberforDisplay_Node0 -- Yes --> N_FormatBrokerEntryNumberforDisplay_Node0_action N_FormatBrokerEntryNumberforDisplay_Node0_action --> E_FormatBrokerEntryNumberforDisplay S_FormatBrokerEntryNumberforDisplay --> N_FormatBrokerEntryNumberforDisplay_Node0 N_FormatBrokerEntryNumberforDisplay_Node1{"The system formats the broker entry
number for display"}:::decision N_FormatBrokerEntryNumberforDisplay_Node1_action["The broker entry number is
formatted according to report
display standards and prepared for
inclusion in the mismatch report"]:::main N_FormatBrokerEntryNumberforDisplay_Node1 -- Yes --> N_FormatBrokerEntryNumberforDisplay_Node1_action N_FormatBrokerEntryNumberforDisplay_Node1_action --> E_FormatBrokerEntryNumberforDisplay N_FormatBrokerEntryNumberforDisplay_Node0 -- No --> N_FormatBrokerEntryNumberforDisplay_Node1 N_FormatBrokerEntryNumberforDisplay_Node1 -- No --> E_FormatBrokerEntryNumberforDisplay
File: GCX016.cbl
GIVEN:
A broker entry number exists and a quantity mismatch has been detected
WHEN:
The mismatch report is being prepared
THEN:
The broker entry number is formatted according to display standards
File: GCX016.cbl
GIVEN:
A quantity mismatch has been detected and broker entry number is available
WHEN:
The system formats the broker entry number for display
THEN:
- The broker entry number is formatted according to report display standards
- Prepared for inclusion in the mismatch report
β Consolidated Acceptance Criteria
- Quantity information is being prepared for display → the manifest quantity is formatted with appropriate decimal places and units
- The system formats the manifest quantity for display → the manifest quantity is formatted according to report display standards and prepared for inclusion in the mismatch report
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_FormatManifestQuantityforDisplay(["Start Step"])
E_FormatManifestQuantityforDisplay(["End Step"])
N_FormatManifestQuantityforDisplay_Node0{"Quantity information is being
prepared for display"}:::decision N_FormatManifestQuantityforDisplay_Node0_action["The manifest quantity is formatted
with appropriate decimal places and
units"]:::main N_FormatManifestQuantityforDisplay_Node0 -- Yes --> N_FormatManifestQuantityforDisplay_Node0_action N_FormatManifestQuantityforDisplay_Node0_action --> E_FormatManifestQuantityforDisplay S_FormatManifestQuantityforDisplay --> N_FormatManifestQuantityforDisplay_Node0 N_FormatManifestQuantityforDisplay_Node1{"The system formats the manifest
quantity for display"}:::decision N_FormatManifestQuantityforDisplay_Node1_action["The manifest quantity is formatted
according to report display
standards and prepared for inclusion
in the mismatch report"]:::main N_FormatManifestQuantityforDisplay_Node1 -- Yes --> N_FormatManifestQuantityforDisplay_Node1_action N_FormatManifestQuantityforDisplay_Node1_action --> E_FormatManifestQuantityforDisplay N_FormatManifestQuantityforDisplay_Node0 -- No --> N_FormatManifestQuantityforDisplay_Node1 N_FormatManifestQuantityforDisplay_Node1 -- No --> E_FormatManifestQuantityforDisplay
prepared for display"}:::decision N_FormatManifestQuantityforDisplay_Node0_action["The manifest quantity is formatted
with appropriate decimal places and
units"]:::main N_FormatManifestQuantityforDisplay_Node0 -- Yes --> N_FormatManifestQuantityforDisplay_Node0_action N_FormatManifestQuantityforDisplay_Node0_action --> E_FormatManifestQuantityforDisplay S_FormatManifestQuantityforDisplay --> N_FormatManifestQuantityforDisplay_Node0 N_FormatManifestQuantityforDisplay_Node1{"The system formats the manifest
quantity for display"}:::decision N_FormatManifestQuantityforDisplay_Node1_action["The manifest quantity is formatted
according to report display
standards and prepared for inclusion
in the mismatch report"]:::main N_FormatManifestQuantityforDisplay_Node1 -- Yes --> N_FormatManifestQuantityforDisplay_Node1_action N_FormatManifestQuantityforDisplay_Node1_action --> E_FormatManifestQuantityforDisplay N_FormatManifestQuantityforDisplay_Node0 -- No --> N_FormatManifestQuantityforDisplay_Node1 N_FormatManifestQuantityforDisplay_Node1 -- No --> E_FormatManifestQuantityforDisplay
File: GCX016.cbl
GIVEN:
A manifest quantity value exists and formatting is required
WHEN:
Quantity information is being prepared for display
THEN:
- The manifest quantity is formatted with appropriate decimal places
- Units
File: GCX016.cbl
GIVEN:
A quantity mismatch has been detected and manifest quantity is available
WHEN:
The system formats the manifest quantity for display
THEN:
- The manifest quantity is formatted according to report display standards
- Prepared for inclusion in the mismatch report
β Consolidated Acceptance Criteria
- Quantity information is being prepared for broker notification → the released quantity is formatted with appropriate decimal places and units
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_FormatReleasedQuantityforDisplay(["Start Step"])
E_FormatReleasedQuantityforDisplay(["End Step"])
N_FormatReleasedQuantityforDisplay_Node0{"Quantity information is being
prepared for broker notification"}:::decision N_FormatReleasedQuantityforDisplay_Node0_action["The released quantity is formatted
with appropriate decimal places and
units"]:::main N_FormatReleasedQuantityforDisplay_Node0 -- Yes --> N_FormatReleasedQuantityforDisplay_Node0_action N_FormatReleasedQuantityforDisplay_Node0_action --> E_FormatReleasedQuantityforDisplay S_FormatReleasedQuantityforDisplay --> N_FormatReleasedQuantityforDisplay_Node0 N_FormatReleasedQuantityforDisplay_Node0 -- No --> E_FormatReleasedQuantityforDisplay
prepared for broker notification"}:::decision N_FormatReleasedQuantityforDisplay_Node0_action["The released quantity is formatted
with appropriate decimal places and
units"]:::main N_FormatReleasedQuantityforDisplay_Node0 -- Yes --> N_FormatReleasedQuantityforDisplay_Node0_action N_FormatReleasedQuantityforDisplay_Node0_action --> E_FormatReleasedQuantityforDisplay S_FormatReleasedQuantityforDisplay --> N_FormatReleasedQuantityforDisplay_Node0 N_FormatReleasedQuantityforDisplay_Node0 -- No --> E_FormatReleasedQuantityforDisplay
File: GCX016.cbl
GIVEN:
A released quantity value exists and formatting is required
WHEN:
Quantity information is being prepared for broker notification
THEN:
- The released quantity is formatted with appropriate decimal places
- Units
β Consolidated Acceptance Criteria
- Mismatch information is being prepared for display → the quantity difference is formatted with appropriate sign indication and decimal places
- The system formats the quantity difference for display → the quantity difference is formatted according to report display standards and prepared for inclusion in the mismatch report
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_FormatQuantityDifferenceforDisplay(["Start Step"])
E_FormatQuantityDifferenceforDisplay(["End Step"])
N_FormatQuantityDifferenceforDisplay_Node0{"Mismatch information is being
prepared for display"}:::decision N_FormatQuantityDifferenceforDisplay_Node0_action["The quantity difference is
formatted with appropriate sign
indication and decimal places"]:::main N_FormatQuantityDifferenceforDisplay_Node0 -- Yes --> N_FormatQuantityDifferenceforDisplay_Node0_action N_FormatQuantityDifferenceforDisplay_Node0_action --> E_FormatQuantityDifferenceforDisplay S_FormatQuantityDifferenceforDisplay --> N_FormatQuantityDifferenceforDisplay_Node0 N_FormatQuantityDifferenceforDisplay_Node1{"The system formats the quantity
difference for display"}:::decision N_FormatQuantityDifferenceforDisplay_Node1_action["The quantity difference is
formatted according to report
display standards and prepared for
inclusion in the mismatch report"]:::main N_FormatQuantityDifferenceforDisplay_Node1 -- Yes --> N_FormatQuantityDifferenceforDisplay_Node1_action N_FormatQuantityDifferenceforDisplay_Node1_action --> E_FormatQuantityDifferenceforDisplay N_FormatQuantityDifferenceforDisplay_Node0 -- No --> N_FormatQuantityDifferenceforDisplay_Node1 N_FormatQuantityDifferenceforDisplay_Node1 -- No --> E_FormatQuantityDifferenceforDisplay
prepared for display"}:::decision N_FormatQuantityDifferenceforDisplay_Node0_action["The quantity difference is
formatted with appropriate sign
indication and decimal places"]:::main N_FormatQuantityDifferenceforDisplay_Node0 -- Yes --> N_FormatQuantityDifferenceforDisplay_Node0_action N_FormatQuantityDifferenceforDisplay_Node0_action --> E_FormatQuantityDifferenceforDisplay S_FormatQuantityDifferenceforDisplay --> N_FormatQuantityDifferenceforDisplay_Node0 N_FormatQuantityDifferenceforDisplay_Node1{"The system formats the quantity
difference for display"}:::decision N_FormatQuantityDifferenceforDisplay_Node1_action["The quantity difference is
formatted according to report
display standards and prepared for
inclusion in the mismatch report"]:::main N_FormatQuantityDifferenceforDisplay_Node1 -- Yes --> N_FormatQuantityDifferenceforDisplay_Node1_action N_FormatQuantityDifferenceforDisplay_Node1_action --> E_FormatQuantityDifferenceforDisplay N_FormatQuantityDifferenceforDisplay_Node0 -- No --> N_FormatQuantityDifferenceforDisplay_Node1 N_FormatQuantityDifferenceforDisplay_Node1 -- No --> E_FormatQuantityDifferenceforDisplay
File: GCX016.cbl
GIVEN:
A quantity difference has been calculated and formatting is required
WHEN:
Mismatch information is being prepared for display
THEN:
- The quantity difference is formatted with appropriate sign indication
- Decimal places
File: GCX016.cbl
GIVEN:
A quantity mismatch has been detected and quantity difference has been calculated
WHEN:
The system formats the quantity difference for display
THEN:
- The quantity difference is formatted according to report display standards
- Prepared for inclusion in the mismatch report
β Consolidated Acceptance Criteria
- The mismatch report structure is being assembled → all formatted fields are organized into the appropriate report structure with proper field assignments
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_PrepareMismatchReportFields(["Start Step"])
E_PrepareMismatchReportFields(["End Step"])
N_PrepareMismatchReportFields_Node0{"The mismatch report structure is
being assembled"}:::decision N_PrepareMismatchReportFields_Node0_action["All formatted fields are organized
into the appropriate report
structure with proper field
assignments"]:::main N_PrepareMismatchReportFields_Node0 -- Yes --> N_PrepareMismatchReportFields_Node0_action N_PrepareMismatchReportFields_Node0_action --> E_PrepareMismatchReportFields S_PrepareMismatchReportFields --> N_PrepareMismatchReportFields_Node0 N_PrepareMismatchReportFields_Node0 -- No --> E_PrepareMismatchReportFields
being assembled"}:::decision N_PrepareMismatchReportFields_Node0_action["All formatted fields are organized
into the appropriate report
structure with proper field
assignments"]:::main N_PrepareMismatchReportFields_Node0 -- Yes --> N_PrepareMismatchReportFields_Node0_action N_PrepareMismatchReportFields_Node0_action --> E_PrepareMismatchReportFields S_PrepareMismatchReportFields --> N_PrepareMismatchReportFields_Node0 N_PrepareMismatchReportFields_Node0 -- No --> E_PrepareMismatchReportFields
File: GCX016.cbl
GIVEN:
All quantity values have been formatted for display
WHEN:
The mismatch report structure is being assembled
THEN:
All formatted fields are organized into the appropriate report structure with proper field assignments
β Consolidated Acceptance Criteria
- The report layout needs to be established → the display format is configured with proper headers, alignment, and spacing for broker readability
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetReportDisplayFormat(["Start Step"])
E_SetReportDisplayFormat(["End Step"])
N_SetReportDisplayFormat_Node0{"The report layout needs to be
established"}:::decision N_SetReportDisplayFormat_Node0_action["The display format is configured
with proper headers, alignment, and
spacing for broker readability"]:::main N_SetReportDisplayFormat_Node0 -- Yes --> N_SetReportDisplayFormat_Node0_action N_SetReportDisplayFormat_Node0_action --> E_SetReportDisplayFormat S_SetReportDisplayFormat --> N_SetReportDisplayFormat_Node0 N_SetReportDisplayFormat_Node0 -- No --> E_SetReportDisplayFormat
established"}:::decision N_SetReportDisplayFormat_Node0_action["The display format is configured
with proper headers, alignment, and
spacing for broker readability"]:::main N_SetReportDisplayFormat_Node0 -- Yes --> N_SetReportDisplayFormat_Node0_action N_SetReportDisplayFormat_Node0_action --> E_SetReportDisplayFormat S_SetReportDisplayFormat --> N_SetReportDisplayFormat_Node0 N_SetReportDisplayFormat_Node0 -- No --> E_SetReportDisplayFormat
File: GCX016.cbl
GIVEN:
Mismatch report fields have been prepared
WHEN:
The report layout needs to be established
THEN:
The display format is configured with proper headers, alignment, and spacing for broker readability
β Consolidated Acceptance Criteria
- The final notification message needs to be generated → a complete mismatch message is generated containing entry number, manifest quantity, released quantity, and difference information
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GenerateQuantityMismatchMessage(["Start Step"])
E_GenerateQuantityMismatchMessage(["End Step"])
N_GenerateQuantityMismatchMessage_Node0{"The final notification message
needs to be generated"}:::decision N_GenerateQuantityMismatchMessage_Node0_action["A complete mismatch message is
generated containing entry number,
manifest quantity, released
quantity, and difference information"]:::main N_GenerateQuantityMismatchMessage_Node0 -- Yes --> N_GenerateQuantityMismatchMessage_Node0_action N_GenerateQuantityMismatchMessage_Node0_action --> E_GenerateQuantityMismatchMessage S_GenerateQuantityMismatchMessage --> N_GenerateQuantityMismatchMessage_Node0 N_GenerateQuantityMismatchMessage_Node0 -- No --> E_GenerateQuantityMismatchMessage
needs to be generated"}:::decision N_GenerateQuantityMismatchMessage_Node0_action["A complete mismatch message is
generated containing entry number,
manifest quantity, released
quantity, and difference information"]:::main N_GenerateQuantityMismatchMessage_Node0 -- Yes --> N_GenerateQuantityMismatchMessage_Node0_action N_GenerateQuantityMismatchMessage_Node0_action --> E_GenerateQuantityMismatchMessage S_GenerateQuantityMismatchMessage --> N_GenerateQuantityMismatchMessage_Node0 N_GenerateQuantityMismatchMessage_Node0 -- No --> E_GenerateQuantityMismatchMessage
File: GCX016.cbl
GIVEN:
Report display format has been set and all fields are prepared
WHEN:
The final notification message needs to be generated
THEN:
A complete mismatch message is generated containing entry number, manifest quantity, released quantity, and difference information
β Consolidated Acceptance Criteria
- The message needs to be delivered to the broker → the message is routed to the broker notification system for delivery via the appropriate communication channel
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RouteMessagetoBrokerNotification(["Start Step"])
E_RouteMessagetoBrokerNotification(["End Step"])
N_RouteMessagetoBrokerNotification_Node0{"The message needs to be delivered
to the broker"}:::decision N_RouteMessagetoBrokerNotification_Node0_action["The message is routed to the broker
notification system for delivery via
the appropriate communication
channel"]:::main N_RouteMessagetoBrokerNotification_Node0 -- Yes --> N_RouteMessagetoBrokerNotification_Node0_action N_RouteMessagetoBrokerNotification_Node0_action --> E_RouteMessagetoBrokerNotification S_RouteMessagetoBrokerNotification --> N_RouteMessagetoBrokerNotification_Node0 N_RouteMessagetoBrokerNotification_Node0 -- No --> E_RouteMessagetoBrokerNotification
to the broker"}:::decision N_RouteMessagetoBrokerNotification_Node0_action["The message is routed to the broker
notification system for delivery via
the appropriate communication
channel"]:::main N_RouteMessagetoBrokerNotification_Node0 -- Yes --> N_RouteMessagetoBrokerNotification_Node0_action N_RouteMessagetoBrokerNotification_Node0_action --> E_RouteMessagetoBrokerNotification S_RouteMessagetoBrokerNotification --> N_RouteMessagetoBrokerNotification_Node0 N_RouteMessagetoBrokerNotification_Node0 -- No --> E_RouteMessagetoBrokerNotification
File: GCX016.cbl
GIVEN:
A quantity mismatch message has been generated
WHEN:
The message needs to be delivered to the broker
THEN:
The message is routed to the broker notification system for delivery via the appropriate communication channel
β Consolidated Acceptance Criteria
- The system looks up the disposition code in the DC table → the system should retrieve the quantity action type and processing parameters for the disposition code
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GetDispositionCodeDetailsfromDCTable(["Start Step"])
E_GetDispositionCodeDetailsfromDCTable(["End Step"])
N_GetDispositionCodeDetailsfromDCTable_Node0{"The system looks up the disposition
code in the DC table"}:::decision N_GetDispositionCodeDetailsfromDCTable_Node0_action["The system should retrieve the
quantity action type and processing
parameters for the disposition code"]:::main N_GetDispositionCodeDetailsfromDCTable_Node0 -- Yes --> N_GetDispositionCodeDetailsfromDCTable_Node0_action N_GetDispositionCodeDetailsfromDCTable_Node0_action --> E_GetDispositionCodeDetailsfromDCTable S_GetDispositionCodeDetailsfromDCTable --> N_GetDispositionCodeDetailsfromDCTable_Node0 N_GetDispositionCodeDetailsfromDCTable_Node0 -- No --> E_GetDispositionCodeDetailsfromDCTable
code in the DC table"}:::decision N_GetDispositionCodeDetailsfromDCTable_Node0_action["The system should retrieve the
quantity action type and processing
parameters for the disposition code"]:::main N_GetDispositionCodeDetailsfromDCTable_Node0 -- Yes --> N_GetDispositionCodeDetailsfromDCTable_Node0_action N_GetDispositionCodeDetailsfromDCTable_Node0_action --> E_GetDispositionCodeDetailsfromDCTable S_GetDispositionCodeDetailsfromDCTable --> N_GetDispositionCodeDetailsfromDCTable_Node0 N_GetDispositionCodeDetailsfromDCTable_Node0 -- No --> E_GetDispositionCodeDetailsfromDCTable
File: GCX016.cbl
GIVEN:
A disposition code requires quantity processing
WHEN:
The system looks up the disposition code in the DC table
THEN:
- The system should retrieve the quantity action type
- Processing parameters for the disposition code
β Consolidated Acceptance Criteria
- The system processes the quantity increase → the system should add the specified quantity to the current release quantity
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AddOperationIncreaseReleaseQuantity(["Start Step"])
E_AddOperationIncreaseReleaseQuantity(["End Step"])
N_AddOperationIncreaseReleaseQuantity_Node0{"The system processes the quantity
increase"}:::decision N_AddOperationIncreaseReleaseQuantity_Node0_action["The system should add the specified
quantity to the current release
quantity"]:::main N_AddOperationIncreaseReleaseQuantity_Node0 -- Yes --> N_AddOperationIncreaseReleaseQuantity_Node0_action N_AddOperationIncreaseReleaseQuantity_Node0_action --> E_AddOperationIncreaseReleaseQuantity S_AddOperationIncreaseReleaseQuantity --> N_AddOperationIncreaseReleaseQuantity_Node0 N_AddOperationIncreaseReleaseQuantity_Node0 -- No --> E_AddOperationIncreaseReleaseQuantity
increase"}:::decision N_AddOperationIncreaseReleaseQuantity_Node0_action["The system should add the specified
quantity to the current release
quantity"]:::main N_AddOperationIncreaseReleaseQuantity_Node0 -- Yes --> N_AddOperationIncreaseReleaseQuantity_Node0_action N_AddOperationIncreaseReleaseQuantity_Node0_action --> E_AddOperationIncreaseReleaseQuantity S_AddOperationIncreaseReleaseQuantity --> N_AddOperationIncreaseReleaseQuantity_Node0 N_AddOperationIncreaseReleaseQuantity_Node0 -- No --> E_AddOperationIncreaseReleaseQuantity
File: GCX016.cbl
GIVEN:
A disposition code specifies an add quantity action
WHEN:
The system processes the quantity increase
THEN:
The system should add the specified quantity to the current release quantity
β Consolidated Acceptance Criteria
- The system processes the quantity decrease → the system should subtract the specified quantity from the current release quantity
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SubtractOperationDecreaseReleaseQuantity(["Start Step"])
E_SubtractOperationDecreaseReleaseQuantity(["End Step"])
N_SubtractOperationDecreaseReleaseQuantity_Node0{"The system processes the quantity
decrease"}:::decision N_SubtractOperationDecreaseReleaseQuantity_Node0_action["The system should subtract the
specified quantity from the current
release quantity"]:::main N_SubtractOperationDecreaseReleaseQuantity_Node0 -- Yes --> N_SubtractOperationDecreaseReleaseQuantity_Node0_action N_SubtractOperationDecreaseReleaseQuantity_Node0_action --> E_SubtractOperationDecreaseReleaseQuantity S_SubtractOperationDecreaseReleaseQuantity --> N_SubtractOperationDecreaseReleaseQuantity_Node0 N_SubtractOperationDecreaseReleaseQuantity_Node0 -- No --> E_SubtractOperationDecreaseReleaseQuantity
decrease"}:::decision N_SubtractOperationDecreaseReleaseQuantity_Node0_action["The system should subtract the
specified quantity from the current
release quantity"]:::main N_SubtractOperationDecreaseReleaseQuantity_Node0 -- Yes --> N_SubtractOperationDecreaseReleaseQuantity_Node0_action N_SubtractOperationDecreaseReleaseQuantity_Node0_action --> E_SubtractOperationDecreaseReleaseQuantity S_SubtractOperationDecreaseReleaseQuantity --> N_SubtractOperationDecreaseReleaseQuantity_Node0 N_SubtractOperationDecreaseReleaseQuantity_Node0 -- No --> E_SubtractOperationDecreaseReleaseQuantity
File: GCX016.cbl
GIVEN:
A disposition code specifies a subtract quantity action
WHEN:
The system processes the quantity decrease
THEN:
The system should subtract the specified quantity from the current release quantity
β Consolidated Acceptance Criteria
- The calculated result would be less than zero → the system should prevent negative quantities and set release quantity to zero instead
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_WouldResultinNegativeQuantity(["Start Step"])
E_WouldResultinNegativeQuantity(["End Step"])
N_WouldResultinNegativeQuantity_Node0{"The calculated result would be less
than zero"}:::decision N_WouldResultinNegativeQuantity_Node0_action["The system should prevent negative
quantities and set release quantity
to zero instead"]:::main N_WouldResultinNegativeQuantity_Node0 -- Yes --> N_WouldResultinNegativeQuantity_Node0_action N_WouldResultinNegativeQuantity_Node0_action --> E_WouldResultinNegativeQuantity S_WouldResultinNegativeQuantity --> N_WouldResultinNegativeQuantity_Node0 N_WouldResultinNegativeQuantity_Node0 -- No --> E_WouldResultinNegativeQuantity
than zero"}:::decision N_WouldResultinNegativeQuantity_Node0_action["The system should prevent negative
quantities and set release quantity
to zero instead"]:::main N_WouldResultinNegativeQuantity_Node0 -- Yes --> N_WouldResultinNegativeQuantity_Node0_action N_WouldResultinNegativeQuantity_Node0_action --> E_WouldResultinNegativeQuantity S_WouldResultinNegativeQuantity --> N_WouldResultinNegativeQuantity_Node0 N_WouldResultinNegativeQuantity_Node0 -- No --> E_WouldResultinNegativeQuantity
File: GCX016.cbl
GIVEN:
A subtract operation is being performed on release quantity
WHEN:
The calculated result would be less than zero
THEN:
- The system should prevent negative quantities
- Set release quantity to zero instead
β Consolidated Acceptance Criteria
- The system applies the zero quantity rule → the system should set the release quantity to zero to maintain data integrity
- The system detects the negative result condition → the system sets the release quantity to zero to prevent negative values
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetReleaseQuantitytoZero(["Start Step"])
E_SetReleaseQuantitytoZero(["End Step"])
N_SetReleaseQuantitytoZero_Node0{"The system applies the zero
quantity rule"}:::decision N_SetReleaseQuantitytoZero_Node0_action["The system should set the release
quantity to zero to maintain data
integrity"]:::main N_SetReleaseQuantitytoZero_Node0 -- Yes --> N_SetReleaseQuantitytoZero_Node0_action N_SetReleaseQuantitytoZero_Node0_action --> E_SetReleaseQuantitytoZero S_SetReleaseQuantitytoZero --> N_SetReleaseQuantitytoZero_Node0 N_SetReleaseQuantitytoZero_Node1{"The system detects the negative
result condition"}:::decision N_SetReleaseQuantitytoZero_Node1_action["The system sets the release
quantity to zero to prevent negative
values"]:::main N_SetReleaseQuantitytoZero_Node1 -- Yes --> N_SetReleaseQuantitytoZero_Node1_action N_SetReleaseQuantitytoZero_Node1_action --> E_SetReleaseQuantitytoZero N_SetReleaseQuantitytoZero_Node0 -- No --> N_SetReleaseQuantitytoZero_Node1 N_SetReleaseQuantitytoZero_Node1 -- No --> E_SetReleaseQuantitytoZero
quantity rule"}:::decision N_SetReleaseQuantitytoZero_Node0_action["The system should set the release
quantity to zero to maintain data
integrity"]:::main N_SetReleaseQuantitytoZero_Node0 -- Yes --> N_SetReleaseQuantitytoZero_Node0_action N_SetReleaseQuantitytoZero_Node0_action --> E_SetReleaseQuantitytoZero S_SetReleaseQuantitytoZero --> N_SetReleaseQuantitytoZero_Node0 N_SetReleaseQuantitytoZero_Node1{"The system detects the negative
result condition"}:::decision N_SetReleaseQuantitytoZero_Node1_action["The system sets the release
quantity to zero to prevent negative
values"]:::main N_SetReleaseQuantitytoZero_Node1 -- Yes --> N_SetReleaseQuantitytoZero_Node1_action N_SetReleaseQuantitytoZero_Node1_action --> E_SetReleaseQuantitytoZero N_SetReleaseQuantitytoZero_Node0 -- No --> N_SetReleaseQuantitytoZero_Node1 N_SetReleaseQuantitytoZero_Node1 -- No --> E_SetReleaseQuantitytoZero
File: GCX016.cbl
GIVEN:
A quantity subtraction would result in a negative value
WHEN:
The system applies the zero quantity rule
THEN:
The system should set the release quantity to zero to maintain data integrity
File: GCX016.cbl
GIVEN:
A quantity calculation that would result in a negative release quantity
WHEN:
The system detects the negative result condition
THEN:
The system sets the release quantity to zero to prevent negative values
β Consolidated Acceptance Criteria
- The result is within acceptable business ranges → the system should apply the calculated quantity to the cargo release quantity
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ApplyCalculatedQuantity(["Start Step"])
E_ApplyCalculatedQuantity(["End Step"])
N_ApplyCalculatedQuantity_Node0{"The result is within acceptable
business ranges"}:::decision N_ApplyCalculatedQuantity_Node0_action["The system should apply the
calculated quantity to the cargo
release quantity"]:::main N_ApplyCalculatedQuantity_Node0 -- Yes --> N_ApplyCalculatedQuantity_Node0_action N_ApplyCalculatedQuantity_Node0_action --> E_ApplyCalculatedQuantity S_ApplyCalculatedQuantity --> N_ApplyCalculatedQuantity_Node0 N_ApplyCalculatedQuantity_Node0 -- No --> E_ApplyCalculatedQuantity
business ranges"}:::decision N_ApplyCalculatedQuantity_Node0_action["The system should apply the
calculated quantity to the cargo
release quantity"]:::main N_ApplyCalculatedQuantity_Node0 -- Yes --> N_ApplyCalculatedQuantity_Node0_action N_ApplyCalculatedQuantity_Node0_action --> E_ApplyCalculatedQuantity S_ApplyCalculatedQuantity --> N_ApplyCalculatedQuantity_Node0 N_ApplyCalculatedQuantity_Node0 -- No --> E_ApplyCalculatedQuantity
File: GCX016.cbl
GIVEN:
A quantity calculation has been performed and validated
WHEN:
The result is within acceptable business ranges
THEN:
The system should apply the calculated quantity to the cargo release quantity
β Consolidated Acceptance Criteria
- The system compares release quantity to total cargo quantity → the system should determine full release if quantities match or partial release if they differ
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ReleaseQuantityMatchesTotalQuantity(["Start Step"])
E_ReleaseQuantityMatchesTotalQuantity(["End Step"])
N_ReleaseQuantityMatchesTotalQuantity_Node0{"The system compares release
quantity to total cargo quantity"}:::decision N_ReleaseQuantityMatchesTotalQuantity_Node0_action["The system should determine full
release if quantities match or
partial release if they differ"]:::main N_ReleaseQuantityMatchesTotalQuantity_Node0 -- Yes --> N_ReleaseQuantityMatchesTotalQuantity_Node0_action N_ReleaseQuantityMatchesTotalQuantity_Node0_action --> E_ReleaseQuantityMatchesTotalQuantity S_ReleaseQuantityMatchesTotalQuantity --> N_ReleaseQuantityMatchesTotalQuantity_Node0 N_ReleaseQuantityMatchesTotalQuantity_Node0 -- No --> E_ReleaseQuantityMatchesTotalQuantity
quantity to total cargo quantity"}:::decision N_ReleaseQuantityMatchesTotalQuantity_Node0_action["The system should determine full
release if quantities match or
partial release if they differ"]:::main N_ReleaseQuantityMatchesTotalQuantity_Node0 -- Yes --> N_ReleaseQuantityMatchesTotalQuantity_Node0_action N_ReleaseQuantityMatchesTotalQuantity_Node0_action --> E_ReleaseQuantityMatchesTotalQuantity S_ReleaseQuantityMatchesTotalQuantity --> N_ReleaseQuantityMatchesTotalQuantity_Node0 N_ReleaseQuantityMatchesTotalQuantity_Node0 -- No --> E_ReleaseQuantityMatchesTotalQuantity
File: GCX016.cbl
GIVEN:
Release quantity has been updated for a cargo item
WHEN:
The system compares release quantity to total cargo quantity
THEN:
The system should determine full release if quantities match or partial release if they differ
β Consolidated Acceptance Criteria
- The system assigns release status → the system should mark the cargo as fully released
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MarkasFullRelease(["Start Step"])
E_MarkasFullRelease(["End Step"])
N_MarkasFullRelease_Node0{"The system assigns release status"}:::decision
N_MarkasFullRelease_Node0_action["The system should mark the cargo as
fully released"]:::main N_MarkasFullRelease_Node0 -- Yes --> N_MarkasFullRelease_Node0_action N_MarkasFullRelease_Node0_action --> E_MarkasFullRelease S_MarkasFullRelease --> N_MarkasFullRelease_Node0 N_MarkasFullRelease_Node0 -- No --> E_MarkasFullRelease
fully released"]:::main N_MarkasFullRelease_Node0 -- Yes --> N_MarkasFullRelease_Node0_action N_MarkasFullRelease_Node0_action --> E_MarkasFullRelease S_MarkasFullRelease --> N_MarkasFullRelease_Node0 N_MarkasFullRelease_Node0 -- No --> E_MarkasFullRelease
File: GCX016.cbl
GIVEN:
Release quantity equals or exceeds the total cargo quantity
WHEN:
The system assigns release status
THEN:
The system should mark the cargo as fully released
β Consolidated Acceptance Criteria
- The system checks the date format validity → the system either proceeds with conversion for valid dates or returns error status for invalid dates
- The system checks the date format validity → the system should validate the date format and either proceed with conversion or return an error for invalid dates
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ValidDateFormat(["Start Step"])
E_ValidDateFormat(["End Step"])
N_ValidDateFormat_Node0{"The system checks the date format
validity"}:::decision N_ValidDateFormat_Node0_action["The system either proceeds with
conversion for valid dates or
returns error status for invalid
dates"]:::main N_ValidDateFormat_Node0 -- Yes --> N_ValidDateFormat_Node0_action N_ValidDateFormat_Node0_action --> E_ValidDateFormat S_ValidDateFormat --> N_ValidDateFormat_Node0 N_ValidDateFormat_Node1{"The system checks the date format
validity"}:::decision N_ValidDateFormat_Node1_action["The system should validate the date
format and either proceed with
conversion or return an error for
invalid dates"]:::main N_ValidDateFormat_Node1 -- Yes --> N_ValidDateFormat_Node1_action N_ValidDateFormat_Node1_action --> E_ValidDateFormat N_ValidDateFormat_Node0 -- No --> N_ValidDateFormat_Node1 N_ValidDateFormat_Node1 -- No --> E_ValidDateFormat
validity"}:::decision N_ValidDateFormat_Node0_action["The system either proceeds with
conversion for valid dates or
returns error status for invalid
dates"]:::main N_ValidDateFormat_Node0 -- Yes --> N_ValidDateFormat_Node0_action N_ValidDateFormat_Node0_action --> E_ValidDateFormat S_ValidDateFormat --> N_ValidDateFormat_Node0 N_ValidDateFormat_Node1{"The system checks the date format
validity"}:::decision N_ValidDateFormat_Node1_action["The system should validate the date
format and either proceed with
conversion or return an error for
invalid dates"]:::main N_ValidDateFormat_Node1 -- Yes --> N_ValidDateFormat_Node1_action N_ValidDateFormat_Node1_action --> E_ValidDateFormat N_ValidDateFormat_Node0 -- No --> N_ValidDateFormat_Node1 N_ValidDateFormat_Node1 -- No --> E_ValidDateFormat
File: GCX016.cbl
GIVEN:
A Gregorian date is provided for Julian conversion
WHEN:
The system checks the date format validity
THEN:
The system either proceeds with conversion for valid dates or returns error status for invalid dates
File: GCX016.cbl
GIVEN:
A Gregorian date is provided for Julian conversion
WHEN:
The system checks the date format validity
THEN:
- The system should validate the date format
- Either proceed with conversion or return an error for invalid dates
β Consolidated Acceptance Criteria
- The system processes the date for Julian conversion → the year component is extracted and prepared for Julian calculation
- The system processes the date for Julian conversion → the system should extract the year component from the input date
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExtractYearComponent(["Start Step"])
E_ExtractYearComponent(["End Step"])
N_ExtractYearComponent_Node0{"The system processes the date for
Julian conversion"}:::decision N_ExtractYearComponent_Node0_action["The year component is extracted and
prepared for Julian calculation"]:::main N_ExtractYearComponent_Node0 -- Yes --> N_ExtractYearComponent_Node0_action N_ExtractYearComponent_Node0_action --> E_ExtractYearComponent S_ExtractYearComponent --> N_ExtractYearComponent_Node0 N_ExtractYearComponent_Node1{"The system processes the date for
Julian conversion"}:::decision N_ExtractYearComponent_Node1_action["The system should extract the year
component from the input date"]:::main N_ExtractYearComponent_Node1 -- Yes --> N_ExtractYearComponent_Node1_action N_ExtractYearComponent_Node1_action --> E_ExtractYearComponent N_ExtractYearComponent_Node0 -- No --> N_ExtractYearComponent_Node1 N_ExtractYearComponent_Node1 -- No --> E_ExtractYearComponent
Julian conversion"}:::decision N_ExtractYearComponent_Node0_action["The year component is extracted and
prepared for Julian calculation"]:::main N_ExtractYearComponent_Node0 -- Yes --> N_ExtractYearComponent_Node0_action N_ExtractYearComponent_Node0_action --> E_ExtractYearComponent S_ExtractYearComponent --> N_ExtractYearComponent_Node0 N_ExtractYearComponent_Node1{"The system processes the date for
Julian conversion"}:::decision N_ExtractYearComponent_Node1_action["The system should extract the year
component from the input date"]:::main N_ExtractYearComponent_Node1 -- Yes --> N_ExtractYearComponent_Node1_action N_ExtractYearComponent_Node1_action --> E_ExtractYearComponent N_ExtractYearComponent_Node0 -- No --> N_ExtractYearComponent_Node1 N_ExtractYearComponent_Node1 -- No --> E_ExtractYearComponent
File: GCX016.cbl
GIVEN:
A valid Gregorian date format has been confirmed
WHEN:
The system processes the date for Julian conversion
THEN:
- The year component is extracted
- Prepared for julian calculation
File: GCX016.cbl
GIVEN:
A valid Gregorian date format has been confirmed
WHEN:
The system processes the date for Julian conversion
THEN:
The system should extract the year component from the input date
β Consolidated Acceptance Criteria
- The system continues processing the Gregorian date → the month component is extracted and prepared for day calculation
- The system continues processing the date components → the system should extract the month component from the input date
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExtractMonthComponent(["Start Step"])
E_ExtractMonthComponent(["End Step"])
N_ExtractMonthComponent_Node0{"The system continues processing the
Gregorian date"}:::decision N_ExtractMonthComponent_Node0_action["The month component is extracted
and prepared for day calculation"]:::main N_ExtractMonthComponent_Node0 -- Yes --> N_ExtractMonthComponent_Node0_action N_ExtractMonthComponent_Node0_action --> E_ExtractMonthComponent S_ExtractMonthComponent --> N_ExtractMonthComponent_Node0 N_ExtractMonthComponent_Node1{"The system continues processing the
date components"}:::decision N_ExtractMonthComponent_Node1_action["The system should extract the month
component from the input date"]:::main N_ExtractMonthComponent_Node1 -- Yes --> N_ExtractMonthComponent_Node1_action N_ExtractMonthComponent_Node1_action --> E_ExtractMonthComponent N_ExtractMonthComponent_Node0 -- No --> N_ExtractMonthComponent_Node1 N_ExtractMonthComponent_Node1 -- No --> E_ExtractMonthComponent
Gregorian date"}:::decision N_ExtractMonthComponent_Node0_action["The month component is extracted
and prepared for day calculation"]:::main N_ExtractMonthComponent_Node0 -- Yes --> N_ExtractMonthComponent_Node0_action N_ExtractMonthComponent_Node0_action --> E_ExtractMonthComponent S_ExtractMonthComponent --> N_ExtractMonthComponent_Node0 N_ExtractMonthComponent_Node1{"The system continues processing the
date components"}:::decision N_ExtractMonthComponent_Node1_action["The system should extract the month
component from the input date"]:::main N_ExtractMonthComponent_Node1 -- Yes --> N_ExtractMonthComponent_Node1_action N_ExtractMonthComponent_Node1_action --> E_ExtractMonthComponent N_ExtractMonthComponent_Node0 -- No --> N_ExtractMonthComponent_Node1 N_ExtractMonthComponent_Node1 -- No --> E_ExtractMonthComponent
File: GCX016.cbl
GIVEN:
The year component has been successfully extracted
WHEN:
The system continues processing the Gregorian date
THEN:
- The month component is extracted
- Prepared for day calculation
File: GCX016.cbl
GIVEN:
The year component has been successfully extracted from the date
WHEN:
The system continues processing the date components
THEN:
The system should extract the month component from the input date
β Consolidated Acceptance Criteria
- The system continues processing the Gregorian date → the day component is extracted and prepared for final Julian calculation
- The system continues processing the date components → the system should extract the day component from the input date
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExtractDayComponent(["Start Step"])
E_ExtractDayComponent(["End Step"])
N_ExtractDayComponent_Node0{"The system continues processing the
Gregorian date"}:::decision N_ExtractDayComponent_Node0_action["The day component is extracted and
prepared for final Julian
calculation"]:::main N_ExtractDayComponent_Node0 -- Yes --> N_ExtractDayComponent_Node0_action N_ExtractDayComponent_Node0_action --> E_ExtractDayComponent S_ExtractDayComponent --> N_ExtractDayComponent_Node0 N_ExtractDayComponent_Node1{"The system continues processing the
date components"}:::decision N_ExtractDayComponent_Node1_action["The system should extract the day
component from the input date"]:::main N_ExtractDayComponent_Node1 -- Yes --> N_ExtractDayComponent_Node1_action N_ExtractDayComponent_Node1_action --> E_ExtractDayComponent N_ExtractDayComponent_Node0 -- No --> N_ExtractDayComponent_Node1 N_ExtractDayComponent_Node1 -- No --> E_ExtractDayComponent
Gregorian date"}:::decision N_ExtractDayComponent_Node0_action["The day component is extracted and
prepared for final Julian
calculation"]:::main N_ExtractDayComponent_Node0 -- Yes --> N_ExtractDayComponent_Node0_action N_ExtractDayComponent_Node0_action --> E_ExtractDayComponent S_ExtractDayComponent --> N_ExtractDayComponent_Node0 N_ExtractDayComponent_Node1{"The system continues processing the
date components"}:::decision N_ExtractDayComponent_Node1_action["The system should extract the day
component from the input date"]:::main N_ExtractDayComponent_Node1 -- Yes --> N_ExtractDayComponent_Node1_action N_ExtractDayComponent_Node1_action --> E_ExtractDayComponent N_ExtractDayComponent_Node0 -- No --> N_ExtractDayComponent_Node1 N_ExtractDayComponent_Node1 -- No --> E_ExtractDayComponent
File: GCX016.cbl
GIVEN:
The year and month components have been successfully extracted
WHEN:
The system continues processing the Gregorian date
THEN:
- The day component is extracted
- Prepared for final julian calculation
File: GCX016.cbl
GIVEN:
The year and month components have been successfully extracted
WHEN:
The system continues processing the date components
THEN:
The system should extract the day component from the input date
β Consolidated Acceptance Criteria
- The system performs Julian date calculation → the total days from January 1st to the current date is calculated
- The system begins Julian date calculation → the system should calculate the total days elapsed from January 1st to the beginning of the specified month
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CalculateDaysfromYearStart(["Start Step"])
E_CalculateDaysfromYearStart(["End Step"])
N_CalculateDaysfromYearStart_Node0{"The system performs Julian date
calculation"}:::decision N_CalculateDaysfromYearStart_Node0_action["The total days from January 1st to
the current date is calculated"]:::main N_CalculateDaysfromYearStart_Node0 -- Yes --> N_CalculateDaysfromYearStart_Node0_action N_CalculateDaysfromYearStart_Node0_action --> E_CalculateDaysfromYearStart S_CalculateDaysfromYearStart --> N_CalculateDaysfromYearStart_Node0 N_CalculateDaysfromYearStart_Node1{"The system begins Julian date
calculation"}:::decision N_CalculateDaysfromYearStart_Node1_action["The system should calculate the
total days elapsed from January 1st
to the beginning of the specified
month"]:::main N_CalculateDaysfromYearStart_Node1 -- Yes --> N_CalculateDaysfromYearStart_Node1_action N_CalculateDaysfromYearStart_Node1_action --> E_CalculateDaysfromYearStart N_CalculateDaysfromYearStart_Node0 -- No --> N_CalculateDaysfromYearStart_Node1 N_CalculateDaysfromYearStart_Node1 -- No --> E_CalculateDaysfromYearStart
calculation"}:::decision N_CalculateDaysfromYearStart_Node0_action["The total days from January 1st to
the current date is calculated"]:::main N_CalculateDaysfromYearStart_Node0 -- Yes --> N_CalculateDaysfromYearStart_Node0_action N_CalculateDaysfromYearStart_Node0_action --> E_CalculateDaysfromYearStart S_CalculateDaysfromYearStart --> N_CalculateDaysfromYearStart_Node0 N_CalculateDaysfromYearStart_Node1{"The system begins Julian date
calculation"}:::decision N_CalculateDaysfromYearStart_Node1_action["The system should calculate the
total days elapsed from January 1st
to the beginning of the specified
month"]:::main N_CalculateDaysfromYearStart_Node1 -- Yes --> N_CalculateDaysfromYearStart_Node1_action N_CalculateDaysfromYearStart_Node1_action --> E_CalculateDaysfromYearStart N_CalculateDaysfromYearStart_Node0 -- No --> N_CalculateDaysfromYearStart_Node1 N_CalculateDaysfromYearStart_Node1 -- No --> E_CalculateDaysfromYearStart
File: GCX016.cbl
GIVEN:
Year, month, and day components have been extracted from the Gregorian date
WHEN:
The system performs Julian date calculation
THEN:
The total days from January 1st to the current date is calculated
File: GCX016.cbl
GIVEN:
Year, month, and day components have been extracted from the input date
WHEN:
The system begins Julian date calculation
THEN:
The system should calculate the total days elapsed from January 1st to the beginning of the specified month
β Consolidated Acceptance Criteria
- The system processes the month component → days from complete months are added to the cumulative day total
- The system continues the Julian date calculation process → the system should add the calculated month days to the running total
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AddMonthDaystoTotal(["Start Step"])
E_AddMonthDaystoTotal(["End Step"])
N_AddMonthDaystoTotal_Node0{"The system processes the month
component"}:::decision N_AddMonthDaystoTotal_Node0_action["Days from complete months are added
to the cumulative day total"]:::main N_AddMonthDaystoTotal_Node0 -- Yes --> N_AddMonthDaystoTotal_Node0_action N_AddMonthDaystoTotal_Node0_action --> E_AddMonthDaystoTotal S_AddMonthDaystoTotal --> N_AddMonthDaystoTotal_Node0 N_AddMonthDaystoTotal_Node1{"The system continues the Julian
date calculation process"}:::decision N_AddMonthDaystoTotal_Node1_action["The system should add the
calculated month days to the running
total"]:::main N_AddMonthDaystoTotal_Node1 -- Yes --> N_AddMonthDaystoTotal_Node1_action N_AddMonthDaystoTotal_Node1_action --> E_AddMonthDaystoTotal N_AddMonthDaystoTotal_Node0 -- No --> N_AddMonthDaystoTotal_Node1 N_AddMonthDaystoTotal_Node1 -- No --> E_AddMonthDaystoTotal
component"}:::decision N_AddMonthDaystoTotal_Node0_action["Days from complete months are added
to the cumulative day total"]:::main N_AddMonthDaystoTotal_Node0 -- Yes --> N_AddMonthDaystoTotal_Node0_action N_AddMonthDaystoTotal_Node0_action --> E_AddMonthDaystoTotal S_AddMonthDaystoTotal --> N_AddMonthDaystoTotal_Node0 N_AddMonthDaystoTotal_Node1{"The system continues the Julian
date calculation process"}:::decision N_AddMonthDaystoTotal_Node1_action["The system should add the
calculated month days to the running
total"]:::main N_AddMonthDaystoTotal_Node1 -- Yes --> N_AddMonthDaystoTotal_Node1_action N_AddMonthDaystoTotal_Node1_action --> E_AddMonthDaystoTotal N_AddMonthDaystoTotal_Node0 -- No --> N_AddMonthDaystoTotal_Node1 N_AddMonthDaystoTotal_Node1 -- No --> E_AddMonthDaystoTotal
File: GCX016.cbl
GIVEN:
The base days from year start have been calculated
WHEN:
The system processes the month component
THEN:
Days from complete months are added to the cumulative day total
File: GCX016.cbl
GIVEN:
The days from year start have been calculated
WHEN:
The system continues the Julian date calculation process
THEN:
The system should add the calculated month days to the running total
β Consolidated Acceptance Criteria
- The system processes the day component → the day value is added to complete the total days calculation for Julian format
- The system finalizes the Julian date calculation → the system should add the day component to complete the total days calculation
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AddDayComponent(["Start Step"])
E_AddDayComponent(["End Step"])
N_AddDayComponent_Node0{"The system processes the day
component"}:::decision N_AddDayComponent_Node0_action["The day value is added to complete
the total days calculation for
Julian format"]:::main N_AddDayComponent_Node0 -- Yes --> N_AddDayComponent_Node0_action N_AddDayComponent_Node0_action --> E_AddDayComponent S_AddDayComponent --> N_AddDayComponent_Node0 N_AddDayComponent_Node1{"The system finalizes the Julian
date calculation"}:::decision N_AddDayComponent_Node1_action["The system should add the day
component to complete the total days
calculation"]:::main N_AddDayComponent_Node1 -- Yes --> N_AddDayComponent_Node1_action N_AddDayComponent_Node1_action --> E_AddDayComponent N_AddDayComponent_Node0 -- No --> N_AddDayComponent_Node1 N_AddDayComponent_Node1 -- No --> E_AddDayComponent
component"}:::decision N_AddDayComponent_Node0_action["The day value is added to complete
the total days calculation for
Julian format"]:::main N_AddDayComponent_Node0 -- Yes --> N_AddDayComponent_Node0_action N_AddDayComponent_Node0_action --> E_AddDayComponent S_AddDayComponent --> N_AddDayComponent_Node0 N_AddDayComponent_Node1{"The system finalizes the Julian
date calculation"}:::decision N_AddDayComponent_Node1_action["The system should add the day
component to complete the total days
calculation"]:::main N_AddDayComponent_Node1 -- Yes --> N_AddDayComponent_Node1_action N_AddDayComponent_Node1_action --> E_AddDayComponent N_AddDayComponent_Node0 -- No --> N_AddDayComponent_Node1 N_AddDayComponent_Node1 -- No --> E_AddDayComponent
File: GCX016.cbl
GIVEN:
Year start days and month days have been calculated and added
WHEN:
The system processes the day component
THEN:
The day value is added to complete the total days calculation for Julian format
File: GCX016.cbl
GIVEN:
The month days have been added to the running total
WHEN:
The system finalizes the Julian date calculation
THEN:
The system should add the day component to complete the total days calculation
β Consolidated Acceptance Criteria
- The system completes the Julian conversion process → the result is formatted as a proper Julian date (YYDDD format)
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_FormatasJulianDate(["Start Step"])
E_FormatasJulianDate(["End Step"])
N_FormatasJulianDate_Node0{"The system completes the Julian
conversion process"}:::decision N_FormatasJulianDate_Node0_action["The result is formatted as a proper
Julian date YYDDD format"]:::main N_FormatasJulianDate_Node0 -- Yes --> N_FormatasJulianDate_Node0_action N_FormatasJulianDate_Node0_action --> E_FormatasJulianDate S_FormatasJulianDate --> N_FormatasJulianDate_Node0 N_FormatasJulianDate_Node0 -- No --> E_FormatasJulianDate
conversion process"}:::decision N_FormatasJulianDate_Node0_action["The result is formatted as a proper
Julian date YYDDD format"]:::main N_FormatasJulianDate_Node0 -- Yes --> N_FormatasJulianDate_Node0_action N_FormatasJulianDate_Node0_action --> E_FormatasJulianDate S_FormatasJulianDate --> N_FormatasJulianDate_Node0 N_FormatasJulianDate_Node0 -- No --> E_FormatasJulianDate
File: GCX016.cbl
GIVEN:
The total days from year start have been calculated
WHEN:
The system completes the Julian conversion process
THEN:
The result is formatted as a proper Julian date (YYDDD format)
β Consolidated Acceptance Criteria
- The conversion process finishes → the formatted Julian date is returned to the requesting business process
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ReturnJulianDateResult(["Start Step"])
E_ReturnJulianDateResult(["End Step"])
N_ReturnJulianDateResult_Node0{"The conversion process finishes"}:::decision
N_ReturnJulianDateResult_Node0_action["The formatted Julian date is
returned to the requesting business
process"]:::main N_ReturnJulianDateResult_Node0 -- Yes --> N_ReturnJulianDateResult_Node0_action N_ReturnJulianDateResult_Node0_action --> E_ReturnJulianDateResult S_ReturnJulianDateResult --> N_ReturnJulianDateResult_Node0 N_ReturnJulianDateResult_Node0 -- No --> E_ReturnJulianDateResult
returned to the requesting business
process"]:::main N_ReturnJulianDateResult_Node0 -- Yes --> N_ReturnJulianDateResult_Node0_action N_ReturnJulianDateResult_Node0_action --> E_ReturnJulianDateResult S_ReturnJulianDateResult --> N_ReturnJulianDateResult_Node0 N_ReturnJulianDateResult_Node0 -- No --> E_ReturnJulianDateResult
File: GCX016.cbl
GIVEN:
Julian date formatting has been completed successfully
WHEN:
The conversion process finishes
THEN:
The formatted Julian date is returned to the requesting business process
β Consolidated Acceptance Criteria
- The system needs to establish the current processing date → the system retrieves the current machine date from the operating system
- The age calculation process is initiated → the current system date is retrieved and stored for comparison with bond start date
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GetCurrentSystemDate(["Start Step"])
E_GetCurrentSystemDate(["End Step"])
N_GetCurrentSystemDate_Node0{"The system needs to establish the
current processing date"}:::decision N_GetCurrentSystemDate_Node0_action["The system retrieves the current
machine date from the operating
system"]:::main N_GetCurrentSystemDate_Node0 -- Yes --> N_GetCurrentSystemDate_Node0_action N_GetCurrentSystemDate_Node0_action --> E_GetCurrentSystemDate S_GetCurrentSystemDate --> N_GetCurrentSystemDate_Node0 N_GetCurrentSystemDate_Node1{"The age calculation process is
initiated"}:::decision N_GetCurrentSystemDate_Node1_action["The current system date is
retrieved and stored for comparison
with bond start date"]:::main N_GetCurrentSystemDate_Node1 -- Yes --> N_GetCurrentSystemDate_Node1_action N_GetCurrentSystemDate_Node1_action --> E_GetCurrentSystemDate N_GetCurrentSystemDate_Node0 -- No --> N_GetCurrentSystemDate_Node1 N_GetCurrentSystemDate_Node1 -- No --> E_GetCurrentSystemDate
current processing date"}:::decision N_GetCurrentSystemDate_Node0_action["The system retrieves the current
machine date from the operating
system"]:::main N_GetCurrentSystemDate_Node0 -- Yes --> N_GetCurrentSystemDate_Node0_action N_GetCurrentSystemDate_Node0_action --> E_GetCurrentSystemDate S_GetCurrentSystemDate --> N_GetCurrentSystemDate_Node0 N_GetCurrentSystemDate_Node1{"The age calculation process is
initiated"}:::decision N_GetCurrentSystemDate_Node1_action["The current system date is
retrieved and stored for comparison
with bond start date"]:::main N_GetCurrentSystemDate_Node1 -- Yes --> N_GetCurrentSystemDate_Node1_action N_GetCurrentSystemDate_Node1_action --> E_GetCurrentSystemDate N_GetCurrentSystemDate_Node0 -- No --> N_GetCurrentSystemDate_Node1 N_GetCurrentSystemDate_Node1 -- No --> E_GetCurrentSystemDate
File: GCX016.cbl
GIVEN:
A transaction processing session is initiated
WHEN:
The system needs to establish the current processing date
THEN:
The system retrieves the current machine date from the operating system
File: GCX016.cbl
GIVEN:
The system is processing cargo age calculation
WHEN:
The age calculation process is initiated
THEN:
- The current system date is retrieved
- Stored for comparison with bond start date
β Consolidated Acceptance Criteria
- The date format needs to be validated for business processing → the system checks if the date format matches the required business date structure
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ValidateDateFormat(["Start Step"])
E_ValidateDateFormat(["End Step"])
N_ValidateDateFormat_Node0{"The date format needs to be
validated for business processing"}:::decision N_ValidateDateFormat_Node0_action["The system checks if the date
format matches the required business
date structure"]:::main N_ValidateDateFormat_Node0 -- Yes --> N_ValidateDateFormat_Node0_action N_ValidateDateFormat_Node0_action --> E_ValidateDateFormat S_ValidateDateFormat --> N_ValidateDateFormat_Node0 N_ValidateDateFormat_Node0 -- No --> E_ValidateDateFormat
validated for business processing"}:::decision N_ValidateDateFormat_Node0_action["The system checks if the date
format matches the required business
date structure"]:::main N_ValidateDateFormat_Node0 -- Yes --> N_ValidateDateFormat_Node0_action N_ValidateDateFormat_Node0_action --> E_ValidateDateFormat S_ValidateDateFormat --> N_ValidateDateFormat_Node0 N_ValidateDateFormat_Node0 -- No --> E_ValidateDateFormat
File: GCX016.cbl
GIVEN:
A system date has been retrieved from the machine
WHEN:
The date format needs to be validated for business processing
THEN:
The system checks if the date format matches the required business date structure
β Consolidated Acceptance Criteria
- If the date validity → if the date is valid, proceed with normal processing, otherwise initiate error handling procedures
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_DateValid(["Start Step"])
E_DateValid(["End Step"])
N_DateValid_Node0{"The system evaluates the date
validity"}:::decision N_DateValid_Node0_action["If the date is valid, proceed with
normal processing, otherwise
initiate error handling procedures"]:::main N_DateValid_Node0 -- Yes --> N_DateValid_Node0_action N_DateValid_Node0_action --> E_DateValid S_DateValid --> N_DateValid_Node0 N_DateValid_Node0 -- No --> E_DateValid
validity"}:::decision N_DateValid_Node0_action["If the date is valid, proceed with
normal processing, otherwise
initiate error handling procedures"]:::main N_DateValid_Node0 -- Yes --> N_DateValid_Node0_action N_DateValid_Node0_action --> E_DateValid S_DateValid --> N_DateValid_Node0 N_DateValid_Node0 -- No --> E_DateValid
File: GCX016.cbl
GIVEN:
A system date has been retrieved and format validated
WHEN:
The system evaluates the date validity
THEN:
If the date is valid, proceed with normal processing, otherwise initiate error handling procedures
β Consolidated Acceptance Criteria
- The date needs to be used for internal business processing → the system converts the date to the required internal format for business operations
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ConverttoInternalFormat(["Start Step"])
E_ConverttoInternalFormat(["End Step"])
N_ConverttoInternalFormat_Node0{"The date needs to be used for
internal business processing"}:::decision N_ConverttoInternalFormat_Node0_action["The system converts the date to the
required internal format for
business operations"]:::main N_ConverttoInternalFormat_Node0 -- Yes --> N_ConverttoInternalFormat_Node0_action N_ConverttoInternalFormat_Node0_action --> E_ConverttoInternalFormat S_ConverttoInternalFormat --> N_ConverttoInternalFormat_Node0 N_ConverttoInternalFormat_Node0 -- No --> E_ConverttoInternalFormat
internal business processing"}:::decision N_ConverttoInternalFormat_Node0_action["The system converts the date to the
required internal format for
business operations"]:::main N_ConverttoInternalFormat_Node0 -- Yes --> N_ConverttoInternalFormat_Node0_action N_ConverttoInternalFormat_Node0_action --> E_ConverttoInternalFormat S_ConverttoInternalFormat --> N_ConverttoInternalFormat_Node0 N_ConverttoInternalFormat_Node0 -- No --> E_ConverttoInternalFormat
File: GCX016.cbl
GIVEN:
A valid system date in external format
WHEN:
The date needs to be used for internal business processing
THEN:
The system converts the date to the required internal format for business operations
β Consolidated Acceptance Criteria
- Business processing requires date context → the system assigns the converted date to appropriate business date fields
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetMachineDateFields(["Start Step"])
E_SetMachineDateFields(["End Step"])
N_SetMachineDateFields_Node0{"Business processing requires date
context"}:::decision N_SetMachineDateFields_Node0_action["The system assigns the converted
date to appropriate business date
fields"]:::main N_SetMachineDateFields_Node0 -- Yes --> N_SetMachineDateFields_Node0_action N_SetMachineDateFields_Node0_action --> E_SetMachineDateFields S_SetMachineDateFields --> N_SetMachineDateFields_Node0 N_SetMachineDateFields_Node0 -- No --> E_SetMachineDateFields
context"}:::decision N_SetMachineDateFields_Node0_action["The system assigns the converted
date to appropriate business date
fields"]:::main N_SetMachineDateFields_Node0 -- Yes --> N_SetMachineDateFields_Node0_action N_SetMachineDateFields_Node0_action --> E_SetMachineDateFields S_SetMachineDateFields --> N_SetMachineDateFields_Node0 N_SetMachineDateFields_Node0 -- No --> E_SetMachineDateFields
File: GCX016.cbl
GIVEN:
A machine date has been converted to internal format
WHEN:
Business processing requires date context
THEN:
The system assigns the converted date to appropriate business date fields
β Consolidated Acceptance Criteria
- A transaction requires timestamp recording → the system updates the transaction timestamp with the current processing date and time
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UpdateTransactionTimestamp(["Start Step"])
E_UpdateTransactionTimestamp(["End Step"])
N_UpdateTransactionTimestamp_Node0{"A transaction requires timestamp
recording"}:::decision N_UpdateTransactionTimestamp_Node0_action["The system updates the transaction
timestamp with the current
processing date and time"]:::main N_UpdateTransactionTimestamp_Node0 -- Yes --> N_UpdateTransactionTimestamp_Node0_action N_UpdateTransactionTimestamp_Node0_action --> E_UpdateTransactionTimestamp S_UpdateTransactionTimestamp --> N_UpdateTransactionTimestamp_Node0 N_UpdateTransactionTimestamp_Node0 -- No --> E_UpdateTransactionTimestamp
recording"}:::decision N_UpdateTransactionTimestamp_Node0_action["The system updates the transaction
timestamp with the current
processing date and time"]:::main N_UpdateTransactionTimestamp_Node0 -- Yes --> N_UpdateTransactionTimestamp_Node0_action N_UpdateTransactionTimestamp_Node0_action --> E_UpdateTransactionTimestamp S_UpdateTransactionTimestamp --> N_UpdateTransactionTimestamp_Node0 N_UpdateTransactionTimestamp_Node0 -- No --> E_UpdateTransactionTimestamp
File: GCX016.cbl
GIVEN:
Machine date fields have been set for business processing
WHEN:
A transaction requires timestamp recording
THEN:
- The system updates the transaction timestamp with the current processing date
- Time
β Consolidated Acceptance Criteria
- Normal date processing cannot proceed → the system initiates error handling procedures to manage the date processing failure
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_HandleDateError(["Start Step"])
E_HandleDateError(["End Step"])
N_HandleDateError_Node0{"Normal date processing cannot
proceed"}:::decision N_HandleDateError_Node0_action["The system initiates error handling
procedures to manage the date
processing failure"]:::main N_HandleDateError_Node0 -- Yes --> N_HandleDateError_Node0_action N_HandleDateError_Node0_action --> E_HandleDateError S_HandleDateError --> N_HandleDateError_Node0 N_HandleDateError_Node0 -- No --> E_HandleDateError
proceed"}:::decision N_HandleDateError_Node0_action["The system initiates error handling
procedures to manage the date
processing failure"]:::main N_HandleDateError_Node0 -- Yes --> N_HandleDateError_Node0_action N_HandleDateError_Node0_action --> E_HandleDateError S_HandleDateError --> N_HandleDateError_Node0 N_HandleDateError_Node0 -- No --> E_HandleDateError
File: GCX016.cbl
GIVEN:
An invalid or corrupted system date has been detected
WHEN:
Normal date processing cannot proceed
THEN:
The system initiates error handling procedures to manage the date processing failure
β Consolidated Acceptance Criteria
- Business processing requires a date value to continue → the system assigns a predetermined default date to ensure processing continuity
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetDefaultDate(["Start Step"])
E_SetDefaultDate(["End Step"])
N_SetDefaultDate_Node0{"Business processing requires a date
value to continue"}:::decision N_SetDefaultDate_Node0_action["The system assigns a predetermined
default date to ensure processing
continuity"]:::main N_SetDefaultDate_Node0 -- Yes --> N_SetDefaultDate_Node0_action N_SetDefaultDate_Node0_action --> E_SetDefaultDate S_SetDefaultDate --> N_SetDefaultDate_Node0 N_SetDefaultDate_Node0 -- No --> E_SetDefaultDate
value to continue"}:::decision N_SetDefaultDate_Node0_action["The system assigns a predetermined
default date to ensure processing
continuity"]:::main N_SetDefaultDate_Node0 -- Yes --> N_SetDefaultDate_Node0_action N_SetDefaultDate_Node0_action --> E_SetDefaultDate S_SetDefaultDate --> N_SetDefaultDate_Node0 N_SetDefaultDate_Node0 -- No --> E_SetDefaultDate
File: GCX016.cbl
GIVEN:
The machine date is invalid or unavailable
WHEN:
Business processing requires a date value to continue
THEN:
The system assigns a predetermined default date to ensure processing continuity
β Consolidated Acceptance Criteria
- Queue reading process is initiated → mQ connection parameters are initialized with proper values for queue access
- MQ connection process is initiated → connection parameters are initialized with default values
- System initializes connection parameters → all MQ connection parameters are set to default values and connection variables are cleared
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_InitializeMQConnectionParameters(["Start Step"])
E_InitializeMQConnectionParameters(["End Step"])
N_InitializeMQConnectionParameters_Node0{"Queue reading process is initiated"}:::decision
N_InitializeMQConnectionParameters_Node0_action["MQ connection parameters are
initialized with proper values for
queue access"]:::main N_InitializeMQConnectionParameters_Node0 -- Yes --> N_InitializeMQConnectionParameters_Node0_action N_InitializeMQConnectionParameters_Node0_action --> E_InitializeMQConnectionParameters S_InitializeMQConnectionParameters --> N_InitializeMQConnectionParameters_Node0 N_InitializeMQConnectionParameters_Node1{"MQ connection process is initiated"}:::decision N_InitializeMQConnectionParameters_Node1_action["Connection parameters are
initialized with default values"]:::main N_InitializeMQConnectionParameters_Node1 -- Yes --> N_InitializeMQConnectionParameters_Node1_action N_InitializeMQConnectionParameters_Node1_action --> E_InitializeMQConnectionParameters N_InitializeMQConnectionParameters_Node0 -- No --> N_InitializeMQConnectionParameters_Node1 N_InitializeMQConnectionParameters_Node2{"system initializes connection
parameters"}:::decision N_InitializeMQConnectionParameters_Node2_action["all MQ connection parameters are
set to default values and connection
variables are cleared"]:::main N_InitializeMQConnectionParameters_Node2 -- Yes --> N_InitializeMQConnectionParameters_Node2_action N_InitializeMQConnectionParameters_Node2_action --> E_InitializeMQConnectionParameters N_InitializeMQConnectionParameters_Node1 -- No --> N_InitializeMQConnectionParameters_Node2 N_InitializeMQConnectionParameters_Node2 -- No --> E_InitializeMQConnectionParameters
initialized with proper values for
queue access"]:::main N_InitializeMQConnectionParameters_Node0 -- Yes --> N_InitializeMQConnectionParameters_Node0_action N_InitializeMQConnectionParameters_Node0_action --> E_InitializeMQConnectionParameters S_InitializeMQConnectionParameters --> N_InitializeMQConnectionParameters_Node0 N_InitializeMQConnectionParameters_Node1{"MQ connection process is initiated"}:::decision N_InitializeMQConnectionParameters_Node1_action["Connection parameters are
initialized with default values"]:::main N_InitializeMQConnectionParameters_Node1 -- Yes --> N_InitializeMQConnectionParameters_Node1_action N_InitializeMQConnectionParameters_Node1_action --> E_InitializeMQConnectionParameters N_InitializeMQConnectionParameters_Node0 -- No --> N_InitializeMQConnectionParameters_Node1 N_InitializeMQConnectionParameters_Node2{"system initializes connection
parameters"}:::decision N_InitializeMQConnectionParameters_Node2_action["all MQ connection parameters are
set to default values and connection
variables are cleared"]:::main N_InitializeMQConnectionParameters_Node2 -- Yes --> N_InitializeMQConnectionParameters_Node2_action N_InitializeMQConnectionParameters_Node2_action --> E_InitializeMQConnectionParameters N_InitializeMQConnectionParameters_Node1 -- No --> N_InitializeMQConnectionParameters_Node2 N_InitializeMQConnectionParameters_Node2 -- No --> E_InitializeMQConnectionParameters
File: GCX016.cbl
GIVEN:
The system needs to read messages from IMS queues
WHEN:
Queue reading process is initiated
THEN:
MQ connection parameters are initialized with proper values for queue access
File: GCX016.cbl
GIVEN:
System needs to establish MQ connection
WHEN:
MQ connection process is initiated
THEN:
Connection parameters are initialized with default values
File: GCX016.cbl
GIVEN:
MQ connection management process is starting
WHEN:
system initializes connection parameters
THEN:
- All mq connection parameters are set to default values
- Connection variables are cleared
β Consolidated Acceptance Criteria
- Queue configuration is required → queue name and processing options are set according to business requirements
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetQueueNameandOptions(["Start Step"])
E_SetQueueNameandOptions(["End Step"])
N_SetQueueNameandOptions_Node0{"Queue configuration is required"}:::decision
N_SetQueueNameandOptions_Node0_action["Queue name and processing options
are set according to business
requirements"]:::main N_SetQueueNameandOptions_Node0 -- Yes --> N_SetQueueNameandOptions_Node0_action N_SetQueueNameandOptions_Node0_action --> E_SetQueueNameandOptions S_SetQueueNameandOptions --> N_SetQueueNameandOptions_Node0 N_SetQueueNameandOptions_Node0 -- No --> E_SetQueueNameandOptions
are set according to business
requirements"]:::main N_SetQueueNameandOptions_Node0 -- Yes --> N_SetQueueNameandOptions_Node0_action N_SetQueueNameandOptions_Node0_action --> E_SetQueueNameandOptions S_SetQueueNameandOptions --> N_SetQueueNameandOptions_Node0 N_SetQueueNameandOptions_Node0 -- No --> E_SetQueueNameandOptions
File: GCX016.cbl
GIVEN:
MQ connection parameters are initialized
WHEN:
Queue configuration is required
THEN:
- Queue name
- Processing options are set according to business requirements
β Consolidated Acceptance Criteria
- Queue opening is attempted → mQ queue is opened for reading with appropriate access permissions
- System attempts to open queue for reading → queue open operation is performed
- Queue open operation is initiated → queue is opened for reading messages
- System attempts to open MQ queue for reading → mQ queue connection is established for message retrieval operations
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_OpenMQQueueforReading(["Start Step"])
E_OpenMQQueueforReading(["End Step"])
N_OpenMQQueueforReading_Node0{"Queue opening is attempted"}:::decision
N_OpenMQQueueforReading_Node0_action["MQ queue is opened for reading with
appropriate access permissions"]:::main N_OpenMQQueueforReading_Node0 -- Yes --> N_OpenMQQueueforReading_Node0_action N_OpenMQQueueforReading_Node0_action --> E_OpenMQQueueforReading S_OpenMQQueueforReading --> N_OpenMQQueueforReading_Node0 N_OpenMQQueueforReading_Node1{"System attempts to open queue for
reading"}:::decision N_OpenMQQueueforReading_Node1_action["Queue open operation is performed"]:::main N_OpenMQQueueforReading_Node1 -- Yes --> N_OpenMQQueueforReading_Node1_action N_OpenMQQueueforReading_Node1_action --> E_OpenMQQueueforReading N_OpenMQQueueforReading_Node0 -- No --> N_OpenMQQueueforReading_Node1 N_OpenMQQueueforReading_Node2{"Queue open operation is initiated"}:::decision N_OpenMQQueueforReading_Node2_action["Queue is opened for reading
messages"]:::main N_OpenMQQueueforReading_Node2 -- Yes --> N_OpenMQQueueforReading_Node2_action N_OpenMQQueueforReading_Node2_action --> E_OpenMQQueueforReading N_OpenMQQueueforReading_Node1 -- No --> N_OpenMQQueueforReading_Node2 N_OpenMQQueueforReading_Node3{"system attempts to open MQ queue
for reading"}:::decision N_OpenMQQueueforReading_Node3_action["MQ queue connection is established
for message retrieval operations"]:::main N_OpenMQQueueforReading_Node3 -- Yes --> N_OpenMQQueueforReading_Node3_action N_OpenMQQueueforReading_Node3_action --> E_OpenMQQueueforReading N_OpenMQQueueforReading_Node2 -- No --> N_OpenMQQueueforReading_Node3 N_OpenMQQueueforReading_Node3 -- No --> E_OpenMQQueueforReading
appropriate access permissions"]:::main N_OpenMQQueueforReading_Node0 -- Yes --> N_OpenMQQueueforReading_Node0_action N_OpenMQQueueforReading_Node0_action --> E_OpenMQQueueforReading S_OpenMQQueueforReading --> N_OpenMQQueueforReading_Node0 N_OpenMQQueueforReading_Node1{"System attempts to open queue for
reading"}:::decision N_OpenMQQueueforReading_Node1_action["Queue open operation is performed"]:::main N_OpenMQQueueforReading_Node1 -- Yes --> N_OpenMQQueueforReading_Node1_action N_OpenMQQueueforReading_Node1_action --> E_OpenMQQueueforReading N_OpenMQQueueforReading_Node0 -- No --> N_OpenMQQueueforReading_Node1 N_OpenMQQueueforReading_Node2{"Queue open operation is initiated"}:::decision N_OpenMQQueueforReading_Node2_action["Queue is opened for reading
messages"]:::main N_OpenMQQueueforReading_Node2 -- Yes --> N_OpenMQQueueforReading_Node2_action N_OpenMQQueueforReading_Node2_action --> E_OpenMQQueueforReading N_OpenMQQueueforReading_Node1 -- No --> N_OpenMQQueueforReading_Node2 N_OpenMQQueueforReading_Node3{"system attempts to open MQ queue
for reading"}:::decision N_OpenMQQueueforReading_Node3_action["MQ queue connection is established
for message retrieval operations"]:::main N_OpenMQQueueforReading_Node3 -- Yes --> N_OpenMQQueueforReading_Node3_action N_OpenMQQueueforReading_Node3_action --> E_OpenMQQueueforReading N_OpenMQQueueforReading_Node2 -- No --> N_OpenMQQueueforReading_Node3 N_OpenMQQueueforReading_Node3 -- No --> E_OpenMQQueueforReading
File: GCX016.cbl
GIVEN:
Queue name and options are properly configured
WHEN:
Queue opening is attempted
THEN:
MQ queue is opened for reading with appropriate access permissions
File: GCX016.cbl
GIVEN:
MQ connection is successful
WHEN:
System attempts to open queue for reading
THEN:
Queue open operation is performed
File: GCX016.cbl
GIVEN:
MQ connection is established successfully
WHEN:
Queue open operation is initiated
THEN:
Queue is opened for reading messages
File: GCX016.cbl
GIVEN:
message arrays are initialized
WHEN:
system attempts to open MQ queue for reading
THEN:
MQ queue connection is established for message retrieval operations
β Consolidated Acceptance Criteria
- Queue open status is evaluated → if queue opened successfully, proceed to message reading; otherwise handle queue open error
- Queue open completion code is evaluated → if completion code equals MQCC-OK then queue open is successful, otherwise queue open failed
- Queue open status is evaluated → if queue opened successfully, proceed to get messages; if queue open failed, handle queue open error
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_QueueOpenSuccessful(["Start Step"])
E_QueueOpenSuccessful(["End Step"])
N_QueueOpenSuccessful_Node0{"Queue open status is evaluated"}:::decision
N_QueueOpenSuccessful_Node0_action["If queue opened successfully,
proceed to message reading otherwise
handle queue open error"]:::main N_QueueOpenSuccessful_Node0 -- Yes --> N_QueueOpenSuccessful_Node0_action N_QueueOpenSuccessful_Node0_action --> E_QueueOpenSuccessful S_QueueOpenSuccessful --> N_QueueOpenSuccessful_Node0 N_QueueOpenSuccessful_Node1{"Queue open completion code is
evaluated"}:::decision N_QueueOpenSuccessful_Node1_action["If completion code equals MQCC-OK
then queue open is successful,
otherwise queue open failed"]:::main N_QueueOpenSuccessful_Node1 -- Yes --> N_QueueOpenSuccessful_Node1_action N_QueueOpenSuccessful_Node1_action --> E_QueueOpenSuccessful N_QueueOpenSuccessful_Node0 -- No --> N_QueueOpenSuccessful_Node1 N_QueueOpenSuccessful_Node2{"Queue open status is evaluated"}:::decision N_QueueOpenSuccessful_Node2_action["If queue opened successfully,
proceed to get messages if queue
open failed, handle queue open error"]:::main N_QueueOpenSuccessful_Node2 -- Yes --> N_QueueOpenSuccessful_Node2_action N_QueueOpenSuccessful_Node2_action --> E_QueueOpenSuccessful N_QueueOpenSuccessful_Node1 -- No --> N_QueueOpenSuccessful_Node2 N_QueueOpenSuccessful_Node2 -- No --> E_QueueOpenSuccessful
proceed to message reading otherwise
handle queue open error"]:::main N_QueueOpenSuccessful_Node0 -- Yes --> N_QueueOpenSuccessful_Node0_action N_QueueOpenSuccessful_Node0_action --> E_QueueOpenSuccessful S_QueueOpenSuccessful --> N_QueueOpenSuccessful_Node0 N_QueueOpenSuccessful_Node1{"Queue open completion code is
evaluated"}:::decision N_QueueOpenSuccessful_Node1_action["If completion code equals MQCC-OK
then queue open is successful,
otherwise queue open failed"]:::main N_QueueOpenSuccessful_Node1 -- Yes --> N_QueueOpenSuccessful_Node1_action N_QueueOpenSuccessful_Node1_action --> E_QueueOpenSuccessful N_QueueOpenSuccessful_Node0 -- No --> N_QueueOpenSuccessful_Node1 N_QueueOpenSuccessful_Node2{"Queue open status is evaluated"}:::decision N_QueueOpenSuccessful_Node2_action["If queue opened successfully,
proceed to get messages if queue
open failed, handle queue open error"]:::main N_QueueOpenSuccessful_Node2 -- Yes --> N_QueueOpenSuccessful_Node2_action N_QueueOpenSuccessful_Node2_action --> E_QueueOpenSuccessful N_QueueOpenSuccessful_Node1 -- No --> N_QueueOpenSuccessful_Node2 N_QueueOpenSuccessful_Node2 -- No --> E_QueueOpenSuccessful
File: GCX016.cbl
GIVEN:
Queue opening operation has been attempted
WHEN:
Queue open status is evaluated
THEN:
If queue opened successfully, proceed to message reading; otherwise handle queue open error
File: GCX016.cbl
GIVEN:
Queue open attempt has been made
WHEN:
Queue open completion code is evaluated
THEN:
If completion code equals MQCC-OK then queue open is successful, otherwise queue open failed
File: GCX016.cbl
GIVEN:
Queue open operation has been attempted
WHEN:
Queue open status is evaluated
THEN:
If queue opened successfully, proceed to get messages; if queue open failed, handle queue open error
β Consolidated Acceptance Criteria
- Message retrieval is requested → system attempts to get the next message from the queue
- Message retrieval is initiated → message is retrieved from queue for processing
- System attempts to get next message from queue → message is retrieved from queue and made available for processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GetMessagefromQueue(["Start Step"])
E_GetMessagefromQueue(["End Step"])
N_GetMessagefromQueue_Node0{"Message retrieval is requested"}:::decision
N_GetMessagefromQueue_Node0_action["System attempts to get the next
message from the queue"]:::main N_GetMessagefromQueue_Node0 -- Yes --> N_GetMessagefromQueue_Node0_action N_GetMessagefromQueue_Node0_action --> E_GetMessagefromQueue S_GetMessagefromQueue --> N_GetMessagefromQueue_Node0 N_GetMessagefromQueue_Node1{"Message retrieval is initiated"}:::decision N_GetMessagefromQueue_Node1_action["Message is retrieved from queue for
processing"]:::main N_GetMessagefromQueue_Node1 -- Yes --> N_GetMessagefromQueue_Node1_action N_GetMessagefromQueue_Node1_action --> E_GetMessagefromQueue N_GetMessagefromQueue_Node0 -- No --> N_GetMessagefromQueue_Node1 N_GetMessagefromQueue_Node2{"system attempts to get next message
from queue"}:::decision N_GetMessagefromQueue_Node2_action["message is retrieved from queue and
made available for processing"]:::main N_GetMessagefromQueue_Node2 -- Yes --> N_GetMessagefromQueue_Node2_action N_GetMessagefromQueue_Node2_action --> E_GetMessagefromQueue N_GetMessagefromQueue_Node1 -- No --> N_GetMessagefromQueue_Node2 N_GetMessagefromQueue_Node2 -- No --> E_GetMessagefromQueue
message from the queue"]:::main N_GetMessagefromQueue_Node0 -- Yes --> N_GetMessagefromQueue_Node0_action N_GetMessagefromQueue_Node0_action --> E_GetMessagefromQueue S_GetMessagefromQueue --> N_GetMessagefromQueue_Node0 N_GetMessagefromQueue_Node1{"Message retrieval is initiated"}:::decision N_GetMessagefromQueue_Node1_action["Message is retrieved from queue for
processing"]:::main N_GetMessagefromQueue_Node1 -- Yes --> N_GetMessagefromQueue_Node1_action N_GetMessagefromQueue_Node1_action --> E_GetMessagefromQueue N_GetMessagefromQueue_Node0 -- No --> N_GetMessagefromQueue_Node1 N_GetMessagefromQueue_Node2{"system attempts to get next message
from queue"}:::decision N_GetMessagefromQueue_Node2_action["message is retrieved from queue and
made available for processing"]:::main N_GetMessagefromQueue_Node2 -- Yes --> N_GetMessagefromQueue_Node2_action N_GetMessagefromQueue_Node2_action --> E_GetMessagefromQueue N_GetMessagefromQueue_Node1 -- No --> N_GetMessagefromQueue_Node2 N_GetMessagefromQueue_Node2 -- No --> E_GetMessagefromQueue
File: GCX016.cbl
GIVEN:
MQ queue is successfully opened for reading
WHEN:
Message retrieval is requested
THEN:
System attempts to get the next message from the queue
File: GCX016.cbl
GIVEN:
Message queue is successfully opened
WHEN:
Message retrieval is initiated
THEN:
Message is retrieved from queue for processing
File: GCX016.cbl
GIVEN:
MQ queue is available and connected
WHEN:
system attempts to get next message from queue
THEN:
- Message is retrieved from queue
- Made available for processing
β Consolidated Acceptance Criteria
- Message availability is checked → if message is available, proceed to process message; if no message available, close queue and complete processing
- Message availability is checked → if message is available, calculate message length; if no message available, check for more messages
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MessageAvailable(["Start Step"])
E_MessageAvailable(["End Step"])
N_MessageAvailable_Node0{"Message availability is checked"}:::decision
N_MessageAvailable_Node0_action["If message is available, proceed to
process message if no message
available, close queue and complete
processing"]:::main N_MessageAvailable_Node0 -- Yes --> N_MessageAvailable_Node0_action N_MessageAvailable_Node0_action --> E_MessageAvailable S_MessageAvailable --> N_MessageAvailable_Node0 N_MessageAvailable_Node1{"Message availability is checked"}:::decision N_MessageAvailable_Node1_action["If message is available, calculate
message length if no message
available, check for more messages"]:::main N_MessageAvailable_Node1 -- Yes --> N_MessageAvailable_Node1_action N_MessageAvailable_Node1_action --> E_MessageAvailable N_MessageAvailable_Node0 -- No --> N_MessageAvailable_Node1 N_MessageAvailable_Node1 -- No --> E_MessageAvailable
process message if no message
available, close queue and complete
processing"]:::main N_MessageAvailable_Node0 -- Yes --> N_MessageAvailable_Node0_action N_MessageAvailable_Node0_action --> E_MessageAvailable S_MessageAvailable --> N_MessageAvailable_Node0 N_MessageAvailable_Node1{"Message availability is checked"}:::decision N_MessageAvailable_Node1_action["If message is available, calculate
message length if no message
available, check for more messages"]:::main N_MessageAvailable_Node1 -- Yes --> N_MessageAvailable_Node1_action N_MessageAvailable_Node1_action --> E_MessageAvailable N_MessageAvailable_Node0 -- No --> N_MessageAvailable_Node1 N_MessageAvailable_Node1 -- No --> E_MessageAvailable
File: GCX016.cbl
GIVEN:
Message retrieval has been attempted from the queue
WHEN:
Message availability is checked
THEN:
- If message is available, proceed to process message; if no message available, close queue
- Complete processing
File: GCX016.cbl
GIVEN:
Message retrieval attempt has been made
WHEN:
Message availability is checked
THEN:
If message is available, calculate message length; if no message available, check for more messages
β Consolidated Acceptance Criteria
- Message length calculation is performed → message length is calculated and stored for subsequent processing steps
- The system needs to determine message structure for array initialization → the message length is calculated by subtracting 4 from the total message buffer length
- Message length calculation is performed → message length is determined for proper processing
- The system needs to determine message boundaries → message length is calculated and validated for further processing
- System processes the variable-length message → message length is calculated and stored for entry count determination
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CalculateMessageLength(["Start Step"])
E_CalculateMessageLength(["End Step"])
N_CalculateMessageLength_Node0{"Message length calculation is
performed"}:::decision N_CalculateMessageLength_Node0_action["Message length is calculated and
stored for subsequent processing
steps"]:::main N_CalculateMessageLength_Node0 -- Yes --> N_CalculateMessageLength_Node0_action N_CalculateMessageLength_Node0_action --> E_CalculateMessageLength S_CalculateMessageLength --> N_CalculateMessageLength_Node0 N_CalculateMessageLength_Node1{"The system needs to determine
message structure for array
initialization"}:::decision N_CalculateMessageLength_Node1_action["The message length is calculated by
subtracting 4 from the total message
buffer length"]:::main N_CalculateMessageLength_Node1 -- Yes --> N_CalculateMessageLength_Node1_action N_CalculateMessageLength_Node1_action --> E_CalculateMessageLength N_CalculateMessageLength_Node0 -- No --> N_CalculateMessageLength_Node1 N_CalculateMessageLength_Node2{"Message length calculation is
performed"}:::decision N_CalculateMessageLength_Node2_action["Message length is determined for
proper processing"]:::main N_CalculateMessageLength_Node2 -- Yes --> N_CalculateMessageLength_Node2_action N_CalculateMessageLength_Node2_action --> E_CalculateMessageLength N_CalculateMessageLength_Node1 -- No --> N_CalculateMessageLength_Node2 N_CalculateMessageLength_Node3{"The system needs to determine
message boundaries"}:::decision N_CalculateMessageLength_Node3_action["Message length is calculated and
validated for further processing"]:::main N_CalculateMessageLength_Node3 -- Yes --> N_CalculateMessageLength_Node3_action N_CalculateMessageLength_Node3_action --> E_CalculateMessageLength N_CalculateMessageLength_Node2 -- No --> N_CalculateMessageLength_Node3 N_CalculateMessageLength_Node4{"system processes the
variable-length message"}:::decision N_CalculateMessageLength_Node4_action["message length is calculated and
stored for entry count determination"]:::main N_CalculateMessageLength_Node4 -- Yes --> N_CalculateMessageLength_Node4_action N_CalculateMessageLength_Node4_action --> E_CalculateMessageLength N_CalculateMessageLength_Node3 -- No --> N_CalculateMessageLength_Node4 N_CalculateMessageLength_Node4 -- No --> E_CalculateMessageLength
performed"}:::decision N_CalculateMessageLength_Node0_action["Message length is calculated and
stored for subsequent processing
steps"]:::main N_CalculateMessageLength_Node0 -- Yes --> N_CalculateMessageLength_Node0_action N_CalculateMessageLength_Node0_action --> E_CalculateMessageLength S_CalculateMessageLength --> N_CalculateMessageLength_Node0 N_CalculateMessageLength_Node1{"The system needs to determine
message structure for array
initialization"}:::decision N_CalculateMessageLength_Node1_action["The message length is calculated by
subtracting 4 from the total message
buffer length"]:::main N_CalculateMessageLength_Node1 -- Yes --> N_CalculateMessageLength_Node1_action N_CalculateMessageLength_Node1_action --> E_CalculateMessageLength N_CalculateMessageLength_Node0 -- No --> N_CalculateMessageLength_Node1 N_CalculateMessageLength_Node2{"Message length calculation is
performed"}:::decision N_CalculateMessageLength_Node2_action["Message length is determined for
proper processing"]:::main N_CalculateMessageLength_Node2 -- Yes --> N_CalculateMessageLength_Node2_action N_CalculateMessageLength_Node2_action --> E_CalculateMessageLength N_CalculateMessageLength_Node1 -- No --> N_CalculateMessageLength_Node2 N_CalculateMessageLength_Node3{"The system needs to determine
message boundaries"}:::decision N_CalculateMessageLength_Node3_action["Message length is calculated and
validated for further processing"]:::main N_CalculateMessageLength_Node3 -- Yes --> N_CalculateMessageLength_Node3_action N_CalculateMessageLength_Node3_action --> E_CalculateMessageLength N_CalculateMessageLength_Node2 -- No --> N_CalculateMessageLength_Node3 N_CalculateMessageLength_Node4{"system processes the
variable-length message"}:::decision N_CalculateMessageLength_Node4_action["message length is calculated and
stored for entry count determination"]:::main N_CalculateMessageLength_Node4 -- Yes --> N_CalculateMessageLength_Node4_action N_CalculateMessageLength_Node4_action --> E_CalculateMessageLength N_CalculateMessageLength_Node3 -- No --> N_CalculateMessageLength_Node4 N_CalculateMessageLength_Node4 -- No --> E_CalculateMessageLength
File: GCX016.cbl
GIVEN:
A message is available and retrieved from the queue
WHEN:
Message length calculation is performed
THEN:
- Message length is calculated
- Stored for subsequent processing steps
File: GCX016.cbl
GIVEN:
An EDI message has been read from MQ queue
WHEN:
The system needs to determine message structure for array initialization
THEN:
The message length is calculated by subtracting 4 from the total message buffer length
File: GCX016.cbl
GIVEN:
Message is available in queue
WHEN:
Message length calculation is performed
THEN:
Message length is determined for proper processing
File: GCX016.cbl
GIVEN:
A message is received for processing
WHEN:
The system needs to determine message boundaries
THEN:
- Message length is calculated
- Validated for further processing
File: GCX016.cbl
GIVEN:
message is successfully retrieved from MQ queue
WHEN:
system processes the variable-length message
THEN:
- Message length is calculated
- Stored for entry count determination
β Consolidated Acceptance Criteria
- Entry count determination is required → number of entries in the message is calculated based on message structure and length
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_DetermineEntryCount(["Start Step"])
E_DetermineEntryCount(["End Step"])
N_DetermineEntryCount_Node0{"Entry count determination is
required"}:::decision N_DetermineEntryCount_Node0_action["Number of entries in the message is
calculated based on message
structure and length"]:::main N_DetermineEntryCount_Node0 -- Yes --> N_DetermineEntryCount_Node0_action N_DetermineEntryCount_Node0_action --> E_DetermineEntryCount S_DetermineEntryCount --> N_DetermineEntryCount_Node0 N_DetermineEntryCount_Node0 -- No --> E_DetermineEntryCount
required"}:::decision N_DetermineEntryCount_Node0_action["Number of entries in the message is
calculated based on message
structure and length"]:::main N_DetermineEntryCount_Node0 -- Yes --> N_DetermineEntryCount_Node0_action N_DetermineEntryCount_Node0_action --> E_DetermineEntryCount S_DetermineEntryCount --> N_DetermineEntryCount_Node0 N_DetermineEntryCount_Node0 -- No --> E_DetermineEntryCount
File: GCX016.cbl
GIVEN:
Message length has been calculated
WHEN:
Entry count determination is required
THEN:
- Number of entries in the message is calculated based on message structure
- Length
β Consolidated Acceptance Criteria
- Message structure validation is performed → message structure is validated against expected format requirements
- The system validates the train message structure → the system checks for required segments, proper formatting, and data completeness in the train message
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ValidateMessageStructure(["Start Step"])
E_ValidateMessageStructure(["End Step"])
N_ValidateMessageStructure_Node0{"Message structure validation is
performed"}:::decision N_ValidateMessageStructure_Node0_action["Message structure is validated
against expected format requirements"]:::main N_ValidateMessageStructure_Node0 -- Yes --> N_ValidateMessageStructure_Node0_action N_ValidateMessageStructure_Node0_action --> E_ValidateMessageStructure S_ValidateMessageStructure --> N_ValidateMessageStructure_Node0 N_ValidateMessageStructure_Node1{"The system validates the train
message structure"}:::decision N_ValidateMessageStructure_Node1_action["The system checks for required
segments, proper formatting, and
data completeness in the train
message"]:::main N_ValidateMessageStructure_Node1 -- Yes --> N_ValidateMessageStructure_Node1_action N_ValidateMessageStructure_Node1_action --> E_ValidateMessageStructure N_ValidateMessageStructure_Node0 -- No --> N_ValidateMessageStructure_Node1 N_ValidateMessageStructure_Node1 -- No --> E_ValidateMessageStructure
performed"}:::decision N_ValidateMessageStructure_Node0_action["Message structure is validated
against expected format requirements"]:::main N_ValidateMessageStructure_Node0 -- Yes --> N_ValidateMessageStructure_Node0_action N_ValidateMessageStructure_Node0_action --> E_ValidateMessageStructure S_ValidateMessageStructure --> N_ValidateMessageStructure_Node0 N_ValidateMessageStructure_Node1{"The system validates the train
message structure"}:::decision N_ValidateMessageStructure_Node1_action["The system checks for required
segments, proper formatting, and
data completeness in the train
message"]:::main N_ValidateMessageStructure_Node1 -- Yes --> N_ValidateMessageStructure_Node1_action N_ValidateMessageStructure_Node1_action --> E_ValidateMessageStructure N_ValidateMessageStructure_Node0 -- No --> N_ValidateMessageStructure_Node1 N_ValidateMessageStructure_Node1 -- No --> E_ValidateMessageStructure
File: GCX016.cbl
GIVEN:
Message length and entry count have been determined
WHEN:
Message structure validation is performed
THEN:
Message structure is validated against expected format requirements
File: GCX016.cbl
GIVEN:
Train arrays are initialized for the appropriate processing mode
WHEN:
The system validates the train message structure
THEN:
The system checks for required segments, proper formatting, and data completeness in the train message
β Consolidated Acceptance Criteria
- Message validity is evaluated → if message is valid, store in array and update counter; if invalid, handle message error and continue to next message
- If validation results → the system determines whether the message structure is valid and contains all required data elements
- System evaluates overall message validity → if message is valid, store in processing array, otherwise handle processing error
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MessageValid(["Start Step"])
E_MessageValid(["End Step"])
N_MessageValid_Node0{"Message validity is evaluated"}:::decision
N_MessageValid_Node0_action["If message is valid, store in array
and update counter if invalid,
handle message error and continue to
next message"]:::main N_MessageValid_Node0 -- Yes --> N_MessageValid_Node0_action N_MessageValid_Node0_action --> E_MessageValid S_MessageValid --> N_MessageValid_Node0 N_MessageValid_Node1{"The system evaluates validation
results"}:::decision N_MessageValid_Node1_action["The system determines whether the
message structure is valid and
contains all required data elements"]:::main N_MessageValid_Node1 -- Yes --> N_MessageValid_Node1_action N_MessageValid_Node1_action --> E_MessageValid N_MessageValid_Node0 -- No --> N_MessageValid_Node1 N_MessageValid_Node2{"system evaluates overall message
validity"}:::decision N_MessageValid_Node2_action["if message is valid, store in
processing array, otherwise handle
processing error"]:::main N_MessageValid_Node2 -- Yes --> N_MessageValid_Node2_action N_MessageValid_Node2_action --> E_MessageValid N_MessageValid_Node1 -- No --> N_MessageValid_Node2 N_MessageValid_Node2 -- No --> E_MessageValid
and update counter if invalid,
handle message error and continue to
next message"]:::main N_MessageValid_Node0 -- Yes --> N_MessageValid_Node0_action N_MessageValid_Node0_action --> E_MessageValid S_MessageValid --> N_MessageValid_Node0 N_MessageValid_Node1{"The system evaluates validation
results"}:::decision N_MessageValid_Node1_action["The system determines whether the
message structure is valid and
contains all required data elements"]:::main N_MessageValid_Node1 -- Yes --> N_MessageValid_Node1_action N_MessageValid_Node1_action --> E_MessageValid N_MessageValid_Node0 -- No --> N_MessageValid_Node1 N_MessageValid_Node2{"system evaluates overall message
validity"}:::decision N_MessageValid_Node2_action["if message is valid, store in
processing array, otherwise handle
processing error"]:::main N_MessageValid_Node2 -- Yes --> N_MessageValid_Node2_action N_MessageValid_Node2_action --> E_MessageValid N_MessageValid_Node1 -- No --> N_MessageValid_Node2 N_MessageValid_Node2 -- No --> E_MessageValid
File: GCX016.cbl
GIVEN:
Message structure validation has been completed
WHEN:
Message validity is evaluated
THEN:
- If message is valid, store in array
- Update counter; if invalid, handle message error
- Continue to next message
File: GCX016.cbl
GIVEN:
Train message structure validation is completed
WHEN:
The system evaluates validation results
THEN:
- The system determines whether the message structure is valid
- Contains all required data elements
File: GCX016.cbl
GIVEN:
message completeness validation is performed
WHEN:
system evaluates overall message validity
THEN:
if message is valid, store in processing array, otherwise handle processing error
β Consolidated Acceptance Criteria
- Message storage is required → valid message is stored in the message processing array
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_StoreMessageinArray(["Start Step"])
E_StoreMessageinArray(["End Step"])
N_StoreMessageinArray_Node0{"Message storage is required"}:::decision
N_StoreMessageinArray_Node0_action["Valid message is stored in the
message processing array"]:::main N_StoreMessageinArray_Node0 -- Yes --> N_StoreMessageinArray_Node0_action N_StoreMessageinArray_Node0_action --> E_StoreMessageinArray S_StoreMessageinArray --> N_StoreMessageinArray_Node0 N_StoreMessageinArray_Node0 -- No --> E_StoreMessageinArray
message processing array"]:::main N_StoreMessageinArray_Node0 -- Yes --> N_StoreMessageinArray_Node0_action N_StoreMessageinArray_Node0_action --> E_StoreMessageinArray S_StoreMessageinArray --> N_StoreMessageinArray_Node0 N_StoreMessageinArray_Node0 -- No --> E_StoreMessageinArray
File: GCX016.cbl
GIVEN:
Message has passed all validation checks
WHEN:
Message storage is required
THEN:
Valid message is stored in the message processing array
β Consolidated Acceptance Criteria
- Message counter update is required → message processing counter is incremented to reflect successful message storage
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UpdateMessageCounter(["Start Step"])
E_UpdateMessageCounter(["End Step"])
N_UpdateMessageCounter_Node0{"Message counter update is required"}:::decision
N_UpdateMessageCounter_Node0_action["Message processing counter is
incremented to reflect successful
message storage"]:::main N_UpdateMessageCounter_Node0 -- Yes --> N_UpdateMessageCounter_Node0_action N_UpdateMessageCounter_Node0_action --> E_UpdateMessageCounter S_UpdateMessageCounter --> N_UpdateMessageCounter_Node0 N_UpdateMessageCounter_Node0 -- No --> E_UpdateMessageCounter
incremented to reflect successful
message storage"]:::main N_UpdateMessageCounter_Node0 -- Yes --> N_UpdateMessageCounter_Node0_action N_UpdateMessageCounter_Node0_action --> E_UpdateMessageCounter S_UpdateMessageCounter --> N_UpdateMessageCounter_Node0 N_UpdateMessageCounter_Node0 -- No --> E_UpdateMessageCounter
File: GCX016.cbl
GIVEN:
Valid message has been stored in processing array
WHEN:
Message counter update is required
THEN:
Message processing counter is incremented to reflect successful message storage
β Consolidated Acceptance Criteria
- Additional message check is performed → if more messages exist, continue reading from queue; if no more messages, proceed to close queue
- Additional message availability is checked → if more messages exist, continue message retrieval; if no more messages, close queue
- System checks for additional messages in queue → if more messages available, continue retrieval, otherwise close queue and return results
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MoreMessages(["Start Step"])
E_MoreMessages(["End Step"])
N_MoreMessages_Node0{"Additional message check is
performed"}:::decision N_MoreMessages_Node0_action["If more messages exist, continue
reading from queue if no more
messages, proceed to close queue"]:::main N_MoreMessages_Node0 -- Yes --> N_MoreMessages_Node0_action N_MoreMessages_Node0_action --> E_MoreMessages S_MoreMessages --> N_MoreMessages_Node0 N_MoreMessages_Node1{"Additional message availability is
checked"}:::decision N_MoreMessages_Node1_action["If more messages exist, continue
message retrieval if no more
messages, close queue"]:::main N_MoreMessages_Node1 -- Yes --> N_MoreMessages_Node1_action N_MoreMessages_Node1_action --> E_MoreMessages N_MoreMessages_Node0 -- No --> N_MoreMessages_Node1 N_MoreMessages_Node2{"system checks for additional
messages in queue"}:::decision N_MoreMessages_Node2_action["if more messages available,
continue retrieval, otherwise close
queue and return results"]:::main N_MoreMessages_Node2 -- Yes --> N_MoreMessages_Node2_action N_MoreMessages_Node2_action --> E_MoreMessages N_MoreMessages_Node1 -- No --> N_MoreMessages_Node2 N_MoreMessages_Node2 -- No --> E_MoreMessages
performed"}:::decision N_MoreMessages_Node0_action["If more messages exist, continue
reading from queue if no more
messages, proceed to close queue"]:::main N_MoreMessages_Node0 -- Yes --> N_MoreMessages_Node0_action N_MoreMessages_Node0_action --> E_MoreMessages S_MoreMessages --> N_MoreMessages_Node0 N_MoreMessages_Node1{"Additional message availability is
checked"}:::decision N_MoreMessages_Node1_action["If more messages exist, continue
message retrieval if no more
messages, close queue"]:::main N_MoreMessages_Node1 -- Yes --> N_MoreMessages_Node1_action N_MoreMessages_Node1_action --> E_MoreMessages N_MoreMessages_Node0 -- No --> N_MoreMessages_Node1 N_MoreMessages_Node2{"system checks for additional
messages in queue"}:::decision N_MoreMessages_Node2_action["if more messages available,
continue retrieval, otherwise close
queue and return results"]:::main N_MoreMessages_Node2 -- Yes --> N_MoreMessages_Node2_action N_MoreMessages_Node2_action --> E_MoreMessages N_MoreMessages_Node1 -- No --> N_MoreMessages_Node2 N_MoreMessages_Node2 -- No --> E_MoreMessages
File: GCX016.cbl
GIVEN:
Current message has been processed (stored or error handled)
WHEN:
Additional message check is performed
THEN:
If more messages exist, continue reading from queue; if no more messages, proceed to close queue
File: GCX016.cbl
GIVEN:
Current message has been processed
WHEN:
Additional message availability is checked
THEN:
If more messages exist, continue message retrieval; if no more messages, close queue
File: GCX016.cbl
GIVEN:
current message processing is complete
WHEN:
system checks for additional messages in queue
THEN:
- If more messages available, continue retrieval, otherwise close queue
- Return results
β Consolidated Acceptance Criteria
- Queue closure is required → mQ queue is properly closed to release system resources
- Queue closure is initiated → message queue is properly closed
- System completes message retrieval operations → mQ queue connection is properly closed
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CloseMQQueue(["Start Step"])
E_CloseMQQueue(["End Step"])
N_CloseMQQueue_Node0{"Queue closure is required"}:::decision
N_CloseMQQueue_Node0_action["MQ queue is properly closed to
release system resources"]:::main N_CloseMQQueue_Node0 -- Yes --> N_CloseMQQueue_Node0_action N_CloseMQQueue_Node0_action --> E_CloseMQQueue S_CloseMQQueue --> N_CloseMQQueue_Node0 N_CloseMQQueue_Node1{"Queue closure is initiated"}:::decision N_CloseMQQueue_Node1_action["Message queue is properly closed"]:::main N_CloseMQQueue_Node1 -- Yes --> N_CloseMQQueue_Node1_action N_CloseMQQueue_Node1_action --> E_CloseMQQueue N_CloseMQQueue_Node0 -- No --> N_CloseMQQueue_Node1 N_CloseMQQueue_Node2{"system completes message retrieval
operations"}:::decision N_CloseMQQueue_Node2_action["MQ queue connection is properly
closed"]:::main N_CloseMQQueue_Node2 -- Yes --> N_CloseMQQueue_Node2_action N_CloseMQQueue_Node2_action --> E_CloseMQQueue N_CloseMQQueue_Node1 -- No --> N_CloseMQQueue_Node2 N_CloseMQQueue_Node2 -- No --> E_CloseMQQueue
release system resources"]:::main N_CloseMQQueue_Node0 -- Yes --> N_CloseMQQueue_Node0_action N_CloseMQQueue_Node0_action --> E_CloseMQQueue S_CloseMQQueue --> N_CloseMQQueue_Node0 N_CloseMQQueue_Node1{"Queue closure is initiated"}:::decision N_CloseMQQueue_Node1_action["Message queue is properly closed"]:::main N_CloseMQQueue_Node1 -- Yes --> N_CloseMQQueue_Node1_action N_CloseMQQueue_Node1_action --> E_CloseMQQueue N_CloseMQQueue_Node0 -- No --> N_CloseMQQueue_Node1 N_CloseMQQueue_Node2{"system completes message retrieval
operations"}:::decision N_CloseMQQueue_Node2_action["MQ queue connection is properly
closed"]:::main N_CloseMQQueue_Node2 -- Yes --> N_CloseMQQueue_Node2_action N_CloseMQQueue_Node2_action --> E_CloseMQQueue N_CloseMQQueue_Node1 -- No --> N_CloseMQQueue_Node2 N_CloseMQQueue_Node2 -- No --> E_CloseMQQueue
File: GCX016.cbl
GIVEN:
All available messages have been processed or no messages are available
WHEN:
Queue closure is required
THEN:
MQ queue is properly closed to release system resources
File: GCX016.cbl
GIVEN:
Message processing is complete or error has occurred
WHEN:
Queue closure is initiated
THEN:
Message queue is properly closed
File: GCX016.cbl
GIVEN:
no more messages are available in queue
WHEN:
system completes message retrieval operations
THEN:
MQ queue connection is properly closed
β Consolidated Acceptance Criteria
- Processing completion status is required → processing complete flag is set to indicate successful completion of queue reading
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetProcessingCompleteFlag(["Start Step"])
E_SetProcessingCompleteFlag(["End Step"])
N_SetProcessingCompleteFlag_Node0{"Processing completion status is
required"}:::decision N_SetProcessingCompleteFlag_Node0_action["Processing complete flag is set to
indicate successful completion of
queue reading"]:::main N_SetProcessingCompleteFlag_Node0 -- Yes --> N_SetProcessingCompleteFlag_Node0_action N_SetProcessingCompleteFlag_Node0_action --> E_SetProcessingCompleteFlag S_SetProcessingCompleteFlag --> N_SetProcessingCompleteFlag_Node0 N_SetProcessingCompleteFlag_Node0 -- No --> E_SetProcessingCompleteFlag
required"}:::decision N_SetProcessingCompleteFlag_Node0_action["Processing complete flag is set to
indicate successful completion of
queue reading"]:::main N_SetProcessingCompleteFlag_Node0 -- Yes --> N_SetProcessingCompleteFlag_Node0_action N_SetProcessingCompleteFlag_Node0_action --> E_SetProcessingCompleteFlag S_SetProcessingCompleteFlag --> N_SetProcessingCompleteFlag_Node0 N_SetProcessingCompleteFlag_Node0 -- No --> E_SetProcessingCompleteFlag
File: GCX016.cbl
GIVEN:
MQ queue has been closed after message processing
WHEN:
Processing completion status is required
THEN:
Processing complete flag is set to indicate successful completion of queue reading
β Consolidated Acceptance Criteria
- Queue open error handling is required → queue open error is handled and appropriate error logging is initiated
- Queue open error handling is invoked → queue open error is processed and operations are terminated
- Queue open operation fails → queue access failure is logged and error status is set
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_HandleQueueOpenError(["Start Step"])
E_HandleQueueOpenError(["End Step"])
N_HandleQueueOpenError_Node0{"Queue open error handling is
required"}:::decision N_HandleQueueOpenError_Node0_action["Queue open error is handled and
appropriate error logging is
initiated"]:::exclusion N_HandleQueueOpenError_Node0 -- Yes -->|Alternative| N_HandleQueueOpenError_Node0_action N_HandleQueueOpenError_Node0_action --> E_HandleQueueOpenError S_HandleQueueOpenError --> N_HandleQueueOpenError_Node0 N_HandleQueueOpenError_Node1{"Queue open error handling is
invoked"}:::decision N_HandleQueueOpenError_Node1_action["Queue open error is processed and
operations are terminated"]:::exclusion N_HandleQueueOpenError_Node1 -- Yes -->|Alternative| N_HandleQueueOpenError_Node1_action N_HandleQueueOpenError_Node1_action --> E_HandleQueueOpenError N_HandleQueueOpenError_Node0 -- No --> N_HandleQueueOpenError_Node1 N_HandleQueueOpenError_Node2{"Queue open operation fails"}:::decision N_HandleQueueOpenError_Node2_action["Queue access failure is logged and
error status is set"]:::main N_HandleQueueOpenError_Node2 -- Yes --> N_HandleQueueOpenError_Node2_action N_HandleQueueOpenError_Node2_action --> E_HandleQueueOpenError N_HandleQueueOpenError_Node1 -- No --> N_HandleQueueOpenError_Node2 N_HandleQueueOpenError_Node2 -- No --> E_HandleQueueOpenError
required"}:::decision N_HandleQueueOpenError_Node0_action["Queue open error is handled and
appropriate error logging is
initiated"]:::exclusion N_HandleQueueOpenError_Node0 -- Yes -->|Alternative| N_HandleQueueOpenError_Node0_action N_HandleQueueOpenError_Node0_action --> E_HandleQueueOpenError S_HandleQueueOpenError --> N_HandleQueueOpenError_Node0 N_HandleQueueOpenError_Node1{"Queue open error handling is
invoked"}:::decision N_HandleQueueOpenError_Node1_action["Queue open error is processed and
operations are terminated"]:::exclusion N_HandleQueueOpenError_Node1 -- Yes -->|Alternative| N_HandleQueueOpenError_Node1_action N_HandleQueueOpenError_Node1_action --> E_HandleQueueOpenError N_HandleQueueOpenError_Node0 -- No --> N_HandleQueueOpenError_Node1 N_HandleQueueOpenError_Node2{"Queue open operation fails"}:::decision N_HandleQueueOpenError_Node2_action["Queue access failure is logged and
error status is set"]:::main N_HandleQueueOpenError_Node2 -- Yes --> N_HandleQueueOpenError_Node2_action N_HandleQueueOpenError_Node2_action --> E_HandleQueueOpenError N_HandleQueueOpenError_Node1 -- No --> N_HandleQueueOpenError_Node2 N_HandleQueueOpenError_Node2 -- No --> E_HandleQueueOpenError
File: GCX016.cbl
GIVEN:
Queue opening operation has failed
WHEN:
Queue open error handling is required
THEN:
- Queue open error is handled
- Appropriate error logging is initiated
File: GCX016.cbl
GIVEN:
Queue open operation has failed
WHEN:
Queue open error handling is invoked
THEN:
- Queue open error is processed
- Operations are terminated
File: GCX016.cbl
GIVEN:
Queue open attempt is made
WHEN:
Queue open operation fails
THEN:
- Queue access failure is logged
- Error status is set
β Consolidated Acceptance Criteria
- Error logging is required → queue error details are logged and processing is terminated
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogQueueError(["Start Step"])
E_LogQueueError(["End Step"])
N_LogQueueError_Node0{"Error logging is required"}:::decision
N_LogQueueError_Node0_action["Queue error details are logged and
processing is terminated"]:::exclusion N_LogQueueError_Node0 -- Yes -->|Alternative| N_LogQueueError_Node0_action N_LogQueueError_Node0_action --> E_LogQueueError S_LogQueueError --> N_LogQueueError_Node0 N_LogQueueError_Node0 -- No --> E_LogQueueError
processing is terminated"]:::exclusion N_LogQueueError_Node0 -- Yes -->|Alternative| N_LogQueueError_Node0_action N_LogQueueError_Node0_action --> E_LogQueueError S_LogQueueError --> N_LogQueueError_Node0 N_LogQueueError_Node0 -- No --> E_LogQueueError
File: GCX016.cbl
GIVEN:
Queue open error has been detected
WHEN:
Error logging is required
THEN:
- Queue error details are logged
- Processing is terminated
β Consolidated Acceptance Criteria
- Message error handling is required → message error is handled and processing continues with next available message
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_HandleMessageError(["Start Step"])
E_HandleMessageError(["End Step"])
N_HandleMessageError_Node0{"Message error handling is required"}:::decision
N_HandleMessageError_Node0_action["Message error is handled and
processing continues with next
available message"]:::exclusion N_HandleMessageError_Node0 -- Yes -->|Alternative| N_HandleMessageError_Node0_action N_HandleMessageError_Node0_action --> E_HandleMessageError S_HandleMessageError --> N_HandleMessageError_Node0 N_HandleMessageError_Node0 -- No --> E_HandleMessageError
processing continues with next
available message"]:::exclusion N_HandleMessageError_Node0 -- Yes -->|Alternative| N_HandleMessageError_Node0_action N_HandleMessageError_Node0_action --> E_HandleMessageError S_HandleMessageError --> N_HandleMessageError_Node0 N_HandleMessageError_Node0 -- No --> E_HandleMessageError
File: GCX016.cbl
GIVEN:
Message has failed validation checks
WHEN:
Message error handling is required
THEN:
- Message error is handled
- Processing continues with next available message
β Consolidated Acceptance Criteria
- Error logging is required → message error details are logged and processing continues to check for more messages
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogMessageError(["Start Step"])
E_LogMessageError(["End Step"])
N_LogMessageError_Node0{"Error logging is required"}:::decision
N_LogMessageError_Node0_action["Message error details are logged
and processing continues to check
for more messages"]:::exclusion N_LogMessageError_Node0 -- Yes -->|Alternative| N_LogMessageError_Node0_action N_LogMessageError_Node0_action --> E_LogMessageError S_LogMessageError --> N_LogMessageError_Node0 N_LogMessageError_Node0 -- No --> E_LogMessageError
and processing continues to check
for more messages"]:::exclusion N_LogMessageError_Node0 -- Yes -->|Alternative| N_LogMessageError_Node0_action N_LogMessageError_Node0_action --> E_LogMessageError S_LogMessageError --> N_LogMessageError_Node0 N_LogMessageError_Node0 -- No --> E_LogMessageError
File: GCX016.cbl
GIVEN:
Message error handling has been initiated
WHEN:
Error logging is required
THEN:
- Message error details are logged
- Processing continues to check for more messages
β Consolidated Acceptance Criteria
- The system needs to initialize the message array structure → the number of EDI segment entries is calculated by dividing message length by 80
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CalculateNumberofEDISegmentEntries(["Start Step"])
E_CalculateNumberofEDISegmentEntries(["End Step"])
N_CalculateNumberofEDISegmentEntries_Node0{"The system needs to initialize the
message array structure"}:::decision N_CalculateNumberofEDISegmentEntries_Node0_action["The number of EDI segment entries
is calculated by dividing message
length by 80"]:::main N_CalculateNumberofEDISegmentEntries_Node0 -- Yes --> N_CalculateNumberofEDISegmentEntries_Node0_action N_CalculateNumberofEDISegmentEntries_Node0_action --> E_CalculateNumberofEDISegmentEntries S_CalculateNumberofEDISegmentEntries --> N_CalculateNumberofEDISegmentEntries_Node0 N_CalculateNumberofEDISegmentEntries_Node0 -- No --> E_CalculateNumberofEDISegmentEntries
message array structure"}:::decision N_CalculateNumberofEDISegmentEntries_Node0_action["The number of EDI segment entries
is calculated by dividing message
length by 80"]:::main N_CalculateNumberofEDISegmentEntries_Node0 -- Yes --> N_CalculateNumberofEDISegmentEntries_Node0_action N_CalculateNumberofEDISegmentEntries_Node0_action --> E_CalculateNumberofEDISegmentEntries S_CalculateNumberofEDISegmentEntries --> N_CalculateNumberofEDISegmentEntries_Node0 N_CalculateNumberofEDISegmentEntries_Node0 -- No --> E_CalculateNumberofEDISegmentEntries
File: GCX016.cbl
GIVEN:
The EDI message length has been calculated
WHEN:
The system needs to initialize the message array structure
THEN:
The number of EDI segment entries is calculated by dividing message length by 80
β Consolidated Acceptance Criteria
- The message array structure needs to be configured → the array entry count is set to the calculated number of EDI segment entries
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetArrayEntryCount(["Start Step"])
E_SetArrayEntryCount(["End Step"])
N_SetArrayEntryCount_Node0{"The message array structure needs
to be configured"}:::decision N_SetArrayEntryCount_Node0_action["The array entry count is set to the
calculated number of EDI segment
entries"]:::main N_SetArrayEntryCount_Node0 -- Yes --> N_SetArrayEntryCount_Node0_action N_SetArrayEntryCount_Node0_action --> E_SetArrayEntryCount S_SetArrayEntryCount --> N_SetArrayEntryCount_Node0 N_SetArrayEntryCount_Node0 -- No --> E_SetArrayEntryCount
to be configured"}:::decision N_SetArrayEntryCount_Node0_action["The array entry count is set to the
calculated number of EDI segment
entries"]:::main N_SetArrayEntryCount_Node0 -- Yes --> N_SetArrayEntryCount_Node0_action N_SetArrayEntryCount_Node0_action --> E_SetArrayEntryCount S_SetArrayEntryCount --> N_SetArrayEntryCount_Node0 N_SetArrayEntryCount_Node0 -- No --> E_SetArrayEntryCount
File: GCX016.cbl
GIVEN:
The number of EDI segment entries has been calculated
WHEN:
The message array structure needs to be configured
THEN:
The array entry count is set to the calculated number of EDI segment entries
β Consolidated Acceptance Criteria
- The system needs to verify successful initialization → the array initialization is validated to ensure it is ready for EDI segment processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ValidateArrayInitialization(["Start Step"])
E_ValidateArrayInitialization(["End Step"])
N_ValidateArrayInitialization_Node0{"The system needs to verify
successful initialization"}:::decision N_ValidateArrayInitialization_Node0_action["The array initialization is
validated to ensure it is ready for
EDI segment processing"]:::main N_ValidateArrayInitialization_Node0 -- Yes --> N_ValidateArrayInitialization_Node0_action N_ValidateArrayInitialization_Node0_action --> E_ValidateArrayInitialization S_ValidateArrayInitialization --> N_ValidateArrayInitialization_Node0 N_ValidateArrayInitialization_Node0 -- No --> E_ValidateArrayInitialization
successful initialization"}:::decision N_ValidateArrayInitialization_Node0_action["The array initialization is
validated to ensure it is ready for
EDI segment processing"]:::main N_ValidateArrayInitialization_Node0 -- Yes --> N_ValidateArrayInitialization_Node0_action N_ValidateArrayInitialization_Node0_action --> E_ValidateArrayInitialization S_ValidateArrayInitialization --> N_ValidateArrayInitialization_Node0 N_ValidateArrayInitialization_Node0 -- No --> E_ValidateArrayInitialization
File: GCX016.cbl
GIVEN:
The message array structure has been configured with entry count
WHEN:
The system needs to verify successful initialization
THEN:
The array initialization is validated to ensure it is ready for EDI segment processing
β Consolidated Acceptance Criteria
- If the message source type → the system identifies whether the message comes from MQ Queue or Direct Input source
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MessageSource(["Start Step"])
E_MessageSource(["End Step"])
N_MessageSource_Node0{"The system evaluates the message
source type"}:::decision N_MessageSource_Node0_action["The system identifies whether the
message comes from MQ Queue or
Direct Input source"]:::main N_MessageSource_Node0 -- Yes --> N_MessageSource_Node0_action N_MessageSource_Node0_action --> E_MessageSource S_MessageSource --> N_MessageSource_Node0 N_MessageSource_Node0 -- No --> E_MessageSource
source type"}:::decision N_MessageSource_Node0_action["The system identifies whether the
message comes from MQ Queue or
Direct Input source"]:::main N_MessageSource_Node0 -- Yes --> N_MessageSource_Node0_action N_MessageSource_Node0_action --> E_MessageSource S_MessageSource --> N_MessageSource_Node0 N_MessageSource_Node0 -- No --> E_MessageSource
File: GCX016.cbl
GIVEN:
A train message is received for processing
WHEN:
The system evaluates the message source type
THEN:
The system identifies whether the message comes from MQ Queue or Direct Input source
β Consolidated Acceptance Criteria
- The system prepares for train operations → the system sets appropriate train operation flags for the current processing session
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetTrainOperationFlags(["Start Step"])
E_SetTrainOperationFlags(["End Step"])
N_SetTrainOperationFlags_Node0{"The system prepares for train
operations"}:::decision N_SetTrainOperationFlags_Node0_action["The system sets appropriate train
operation flags for the current
processing session"]:::main N_SetTrainOperationFlags_Node0 -- Yes --> N_SetTrainOperationFlags_Node0_action N_SetTrainOperationFlags_Node0_action --> E_SetTrainOperationFlags S_SetTrainOperationFlags --> N_SetTrainOperationFlags_Node0 N_SetTrainOperationFlags_Node0 -- No --> E_SetTrainOperationFlags
operations"}:::decision N_SetTrainOperationFlags_Node0_action["The system sets appropriate train
operation flags for the current
processing session"]:::main N_SetTrainOperationFlags_Node0 -- Yes --> N_SetTrainOperationFlags_Node0_action N_SetTrainOperationFlags_Node0_action --> E_SetTrainOperationFlags S_SetTrainOperationFlags --> N_SetTrainOperationFlags_Node0 N_SetTrainOperationFlags_Node0 -- No --> E_SetTrainOperationFlags
File: GCX016.cbl
GIVEN:
A train message requires processing
WHEN:
The system prepares for train operations
THEN:
The system sets appropriate train operation flags for the current processing session
β Consolidated Acceptance Criteria
- The system processes train manifest data → the system loads M10 segment with train identification and manifest details
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LoadM10ManifestSegment(["Start Step"])
E_LoadM10ManifestSegment(["End Step"])
N_LoadM10ManifestSegment_Node0{"The system processes train manifest
data"}:::decision N_LoadM10ManifestSegment_Node0_action["The system loads M10 segment with
train identification and manifest
details"]:::main N_LoadM10ManifestSegment_Node0 -- Yes --> N_LoadM10ManifestSegment_Node0_action N_LoadM10ManifestSegment_Node0_action --> E_LoadM10ManifestSegment S_LoadM10ManifestSegment --> N_LoadM10ManifestSegment_Node0 N_LoadM10ManifestSegment_Node0 -- No --> E_LoadM10ManifestSegment
data"}:::decision N_LoadM10ManifestSegment_Node0_action["The system loads M10 segment with
train identification and manifest
details"]:::main N_LoadM10ManifestSegment_Node0 -- Yes --> N_LoadM10ManifestSegment_Node0_action N_LoadM10ManifestSegment_Node0_action --> E_LoadM10ManifestSegment S_LoadM10ManifestSegment --> N_LoadM10ManifestSegment_Node0 N_LoadM10ManifestSegment_Node0 -- No --> E_LoadM10ManifestSegment
File: GCX016.cbl
GIVEN:
Train operation flags are configured
WHEN:
The system processes train manifest data
THEN:
- The system loads m10 segment with train identification
- Manifest details
β Consolidated Acceptance Criteria
- The system processes train event data → the system loads V9 segment with event details and status change information
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LoadV9EventDetailSegment(["Start Step"])
E_LoadV9EventDetailSegment(["End Step"])
N_LoadV9EventDetailSegment_Node0{"The system processes train event
data"}:::decision N_LoadV9EventDetailSegment_Node0_action["The system loads V9 segment with
event details and status change
information"]:::main N_LoadV9EventDetailSegment_Node0 -- Yes --> N_LoadV9EventDetailSegment_Node0_action N_LoadV9EventDetailSegment_Node0_action --> E_LoadV9EventDetailSegment S_LoadV9EventDetailSegment --> N_LoadV9EventDetailSegment_Node0 N_LoadV9EventDetailSegment_Node0 -- No --> E_LoadV9EventDetailSegment
data"}:::decision N_LoadV9EventDetailSegment_Node0_action["The system loads V9 segment with
event details and status change
information"]:::main N_LoadV9EventDetailSegment_Node0 -- Yes --> N_LoadV9EventDetailSegment_Node0_action N_LoadV9EventDetailSegment_Node0_action --> E_LoadV9EventDetailSegment S_LoadV9EventDetailSegment --> N_LoadV9EventDetailSegment_Node0 N_LoadV9EventDetailSegment_Node0 -- No --> E_LoadV9EventDetailSegment
File: GCX016.cbl
GIVEN:
M10 manifest segment is loaded
WHEN:
The system processes train event data
THEN:
- The system loads v9 segment with event details
- Status change information
β Consolidated Acceptance Criteria
- If the event type in the V9 segment → the system identifies whether the message indicates a train arrival event (POD or AAD codes)
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_TrainArrivalMessage(["Start Step"])
E_TrainArrivalMessage(["End Step"])
N_TrainArrivalMessage_Node0{"The system evaluates the event type
in the V9 segment"}:::decision N_TrainArrivalMessage_Node0_action["The system identifies whether the
message indicates a train arrival
event POD or AAD codes"]:::main N_TrainArrivalMessage_Node0 -- Yes --> N_TrainArrivalMessage_Node0_action N_TrainArrivalMessage_Node0_action --> E_TrainArrivalMessage S_TrainArrivalMessage --> N_TrainArrivalMessage_Node0 N_TrainArrivalMessage_Node0 -- No --> E_TrainArrivalMessage
in the V9 segment"}:::decision N_TrainArrivalMessage_Node0_action["The system identifies whether the
message indicates a train arrival
event POD or AAD codes"]:::main N_TrainArrivalMessage_Node0 -- Yes --> N_TrainArrivalMessage_Node0_action N_TrainArrivalMessage_Node0_action --> E_TrainArrivalMessage S_TrainArrivalMessage --> N_TrainArrivalMessage_Node0 N_TrainArrivalMessage_Node0 -- No --> E_TrainArrivalMessage
File: GCX016.cbl
GIVEN:
V9 event detail segment is loaded with event codes
WHEN:
The system evaluates the event type in the V9 segment
THEN:
The system identifies whether the message indicates a train arrival event (POD or AAD codes)
β Consolidated Acceptance Criteria
- The system prepares for arrival processing → the system sets arrival processing mode flags and configures arrival-specific processing parameters
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetArrivalProcessingMode(["Start Step"])
E_SetArrivalProcessingMode(["End Step"])
N_SetArrivalProcessingMode_Node0{"The system prepares for arrival
processing"}:::decision N_SetArrivalProcessingMode_Node0_action["The system sets arrival processing
mode flags and configures
arrival-specific processing
parameters"]:::main N_SetArrivalProcessingMode_Node0 -- Yes --> N_SetArrivalProcessingMode_Node0_action N_SetArrivalProcessingMode_Node0_action --> E_SetArrivalProcessingMode S_SetArrivalProcessingMode --> N_SetArrivalProcessingMode_Node0 N_SetArrivalProcessingMode_Node0 -- No --> E_SetArrivalProcessingMode
processing"}:::decision N_SetArrivalProcessingMode_Node0_action["The system sets arrival processing
mode flags and configures
arrival-specific processing
parameters"]:::main N_SetArrivalProcessingMode_Node0 -- Yes --> N_SetArrivalProcessingMode_Node0_action N_SetArrivalProcessingMode_Node0_action --> E_SetArrivalProcessingMode S_SetArrivalProcessingMode --> N_SetArrivalProcessingMode_Node0 N_SetArrivalProcessingMode_Node0 -- No --> E_SetArrivalProcessingMode
File: GCX016.cbl
GIVEN:
A train arrival message is detected
WHEN:
The system prepares for arrival processing
THEN:
- The system sets arrival processing mode flags
- Configures arrival-specific processing parameters
β Consolidated Acceptance Criteria
- The system prepares arrival data structures → the system initializes train arrival arrays for processing arrival-related cargo and equipment data
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_InitializeTrainArrivalArrays(["Start Step"])
E_InitializeTrainArrivalArrays(["End Step"])
N_InitializeTrainArrivalArrays_Node0{"The system prepares arrival data
structures"}:::decision N_InitializeTrainArrivalArrays_Node0_action["The system initializes train
arrival arrays for processing
arrival-related cargo and equipment
data"]:::main N_InitializeTrainArrivalArrays_Node0 -- Yes --> N_InitializeTrainArrivalArrays_Node0_action N_InitializeTrainArrivalArrays_Node0_action --> E_InitializeTrainArrivalArrays S_InitializeTrainArrivalArrays --> N_InitializeTrainArrivalArrays_Node0 N_InitializeTrainArrivalArrays_Node0 -- No --> E_InitializeTrainArrivalArrays
structures"}:::decision N_InitializeTrainArrivalArrays_Node0_action["The system initializes train
arrival arrays for processing
arrival-related cargo and equipment
data"]:::main N_InitializeTrainArrivalArrays_Node0 -- Yes --> N_InitializeTrainArrivalArrays_Node0_action N_InitializeTrainArrivalArrays_Node0_action --> E_InitializeTrainArrivalArrays S_InitializeTrainArrivalArrays --> N_InitializeTrainArrivalArrays_Node0 N_InitializeTrainArrivalArrays_Node0 -- No --> E_InitializeTrainArrivalArrays
File: GCX016.cbl
GIVEN:
Arrival processing mode is activated
WHEN:
The system prepares arrival data structures
THEN:
- The system initializes train arrival arrays for processing arrival-related cargo
- Equipment data
β Consolidated Acceptance Criteria
- If the event type for cancellation indicators → the system identifies whether the message indicates a train cancellation event (COC code)
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_TrainCancellationMessage(["Start Step"])
E_TrainCancellationMessage(["End Step"])
N_TrainCancellationMessage_Node0{"The system evaluates the event type
for cancellation indicators"}:::decision N_TrainCancellationMessage_Node0_action["The system identifies whether the
message indicates a train
cancellation event COC code"]:::main N_TrainCancellationMessage_Node0 -- Yes --> N_TrainCancellationMessage_Node0_action N_TrainCancellationMessage_Node0_action --> E_TrainCancellationMessage S_TrainCancellationMessage --> N_TrainCancellationMessage_Node0 N_TrainCancellationMessage_Node0 -- No --> E_TrainCancellationMessage
for cancellation indicators"}:::decision N_TrainCancellationMessage_Node0_action["The system identifies whether the
message indicates a train
cancellation event COC code"]:::main N_TrainCancellationMessage_Node0 -- Yes --> N_TrainCancellationMessage_Node0_action N_TrainCancellationMessage_Node0_action --> E_TrainCancellationMessage S_TrainCancellationMessage --> N_TrainCancellationMessage_Node0 N_TrainCancellationMessage_Node0 -- No --> E_TrainCancellationMessage
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
The message is not a train arrival message and V9 event detail segment contains event codes
WHEN:
The system evaluates the event type for cancellation indicators
THEN:
The system identifies whether the message indicates a train cancellation event (COC code)
β Consolidated Acceptance Criteria
- The system prepares for cancellation processing → the system sets cancellation processing mode flags and configures cancellation-specific processing parameters
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetCancellationProcessingMode(["Start Step"])
E_SetCancellationProcessingMode(["End Step"])
N_SetCancellationProcessingMode_Node0{"The system prepares for
cancellation processing"}:::decision N_SetCancellationProcessingMode_Node0_action["The system sets cancellation
processing mode flags and configures
cancellation-specific processing
parameters"]:::main N_SetCancellationProcessingMode_Node0 -- Yes --> N_SetCancellationProcessingMode_Node0_action N_SetCancellationProcessingMode_Node0_action --> E_SetCancellationProcessingMode S_SetCancellationProcessingMode --> N_SetCancellationProcessingMode_Node0 N_SetCancellationProcessingMode_Node0 -- No --> E_SetCancellationProcessingMode
cancellation processing"}:::decision N_SetCancellationProcessingMode_Node0_action["The system sets cancellation
processing mode flags and configures
cancellation-specific processing
parameters"]:::main N_SetCancellationProcessingMode_Node0 -- Yes --> N_SetCancellationProcessingMode_Node0_action N_SetCancellationProcessingMode_Node0_action --> E_SetCancellationProcessingMode S_SetCancellationProcessingMode --> N_SetCancellationProcessingMode_Node0 N_SetCancellationProcessingMode_Node0 -- No --> E_SetCancellationProcessingMode
File: GCX016.cbl
GIVEN:
A train cancellation message is detected
WHEN:
The system prepares for cancellation processing
THEN:
- The system sets cancellation processing mode flags
- Configures cancellation-specific processing parameters
β Consolidated Acceptance Criteria
- The system prepares cancellation data structures → the system initializes cancellation arrays for processing cancellation-related cargo and equipment data
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_InitializeCancellationArrays(["Start Step"])
E_InitializeCancellationArrays(["End Step"])
N_InitializeCancellationArrays_Node0{"The system prepares cancellation
data structures"}:::decision N_InitializeCancellationArrays_Node0_action["The system initializes cancellation
arrays for processing
cancellation-related cargo and
equipment data"]:::main N_InitializeCancellationArrays_Node0 -- Yes --> N_InitializeCancellationArrays_Node0_action N_InitializeCancellationArrays_Node0_action --> E_InitializeCancellationArrays S_InitializeCancellationArrays --> N_InitializeCancellationArrays_Node0 N_InitializeCancellationArrays_Node0 -- No --> E_InitializeCancellationArrays
data structures"}:::decision N_InitializeCancellationArrays_Node0_action["The system initializes cancellation
arrays for processing
cancellation-related cargo and
equipment data"]:::main N_InitializeCancellationArrays_Node0 -- Yes --> N_InitializeCancellationArrays_Node0_action N_InitializeCancellationArrays_Node0_action --> E_InitializeCancellationArrays S_InitializeCancellationArrays --> N_InitializeCancellationArrays_Node0 N_InitializeCancellationArrays_Node0 -- No --> E_InitializeCancellationArrays
File: GCX016.cbl
GIVEN:
Cancellation processing mode is activated
WHEN:
The system prepares cancellation data structures
THEN:
- The system initializes cancellation arrays for processing cancellation-related cargo
- Equipment data
β Consolidated Acceptance Criteria
- The system prepares for standard train processing → the system sets default train processing mode for standard train operations
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetDefaultTrainProcessingMode(["Start Step"])
E_SetDefaultTrainProcessingMode(["End Step"])
N_SetDefaultTrainProcessingMode_Node0{"The system prepares for standard
train processing"}:::decision N_SetDefaultTrainProcessingMode_Node0_action["The system sets default train
processing mode for standard train
operations"]:::main N_SetDefaultTrainProcessingMode_Node0 -- Yes --> N_SetDefaultTrainProcessingMode_Node0_action N_SetDefaultTrainProcessingMode_Node0_action --> E_SetDefaultTrainProcessingMode S_SetDefaultTrainProcessingMode --> N_SetDefaultTrainProcessingMode_Node0 N_SetDefaultTrainProcessingMode_Node0 -- No --> E_SetDefaultTrainProcessingMode
train processing"}:::decision N_SetDefaultTrainProcessingMode_Node0_action["The system sets default train
processing mode for standard train
operations"]:::main N_SetDefaultTrainProcessingMode_Node0 -- Yes --> N_SetDefaultTrainProcessingMode_Node0_action N_SetDefaultTrainProcessingMode_Node0_action --> E_SetDefaultTrainProcessingMode S_SetDefaultTrainProcessingMode --> N_SetDefaultTrainProcessingMode_Node0 N_SetDefaultTrainProcessingMode_Node0 -- No --> E_SetDefaultTrainProcessingMode
File: GCX016.cbl
GIVEN:
The message is neither a train arrival nor cancellation message
WHEN:
The system prepares for standard train processing
THEN:
The system sets default train processing mode for standard train operations
β Consolidated Acceptance Criteria
- The system prepares standard train data structures → the system initializes standard train arrays for processing general train operations and cargo data
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_InitializeStandardTrainArrays(["Start Step"])
E_InitializeStandardTrainArrays(["End Step"])
N_InitializeStandardTrainArrays_Node0{"The system prepares standard train
data structures"}:::decision N_InitializeStandardTrainArrays_Node0_action["The system initializes standard
train arrays for processing general
train operations and cargo data"]:::main N_InitializeStandardTrainArrays_Node0 -- Yes --> N_InitializeStandardTrainArrays_Node0_action N_InitializeStandardTrainArrays_Node0_action --> E_InitializeStandardTrainArrays S_InitializeStandardTrainArrays --> N_InitializeStandardTrainArrays_Node0 N_InitializeStandardTrainArrays_Node0 -- No --> E_InitializeStandardTrainArrays
data structures"}:::decision N_InitializeStandardTrainArrays_Node0_action["The system initializes standard
train arrays for processing general
train operations and cargo data"]:::main N_InitializeStandardTrainArrays_Node0 -- Yes --> N_InitializeStandardTrainArrays_Node0_action N_InitializeStandardTrainArrays_Node0_action --> E_InitializeStandardTrainArrays S_InitializeStandardTrainArrays --> N_InitializeStandardTrainArrays_Node0 N_InitializeStandardTrainArrays_Node0 -- No --> E_InitializeStandardTrainArrays
File: GCX016.cbl
GIVEN:
Default train processing mode is configured
WHEN:
The system prepares standard train data structures
THEN:
- The system initializes standard train arrays for processing general train operations
- Cargo data
β Consolidated Acceptance Criteria
- The system confirms message validity → the system sets message ready flag to indicate the train message is prepared for business processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetMessageReadyFlag(["Start Step"])
E_SetMessageReadyFlag(["End Step"])
N_SetMessageReadyFlag_Node0{"The system confirms message
validity"}:::decision N_SetMessageReadyFlag_Node0_action["The system sets message ready flag
to indicate the train message is
prepared for business processing"]:::main N_SetMessageReadyFlag_Node0 -- Yes --> N_SetMessageReadyFlag_Node0_action N_SetMessageReadyFlag_Node0_action --> E_SetMessageReadyFlag S_SetMessageReadyFlag --> N_SetMessageReadyFlag_Node0 N_SetMessageReadyFlag_Node0 -- No --> E_SetMessageReadyFlag
validity"}:::decision N_SetMessageReadyFlag_Node0_action["The system sets message ready flag
to indicate the train message is
prepared for business processing"]:::main N_SetMessageReadyFlag_Node0 -- Yes --> N_SetMessageReadyFlag_Node0_action N_SetMessageReadyFlag_Node0_action --> E_SetMessageReadyFlag S_SetMessageReadyFlag --> N_SetMessageReadyFlag_Node0 N_SetMessageReadyFlag_Node0 -- No --> E_SetMessageReadyFlag
File: GCX016.cbl
GIVEN:
Train message structure validation is successful
WHEN:
The system confirms message validity
THEN:
The system sets message ready flag to indicate the train message is prepared for business processing
β Consolidated Acceptance Criteria
- The system completes train message initialization → the system logs the successful initialization with message details and processing mode information
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogTrainMessageInitialization(["Start Step"])
E_LogTrainMessageInitialization(["End Step"])
N_LogTrainMessageInitialization_Node0{"The system completes train message
initialization"}:::decision N_LogTrainMessageInitialization_Node0_action["The system logs the successful
initialization with message details
and processing mode information"]:::main N_LogTrainMessageInitialization_Node0 -- Yes --> N_LogTrainMessageInitialization_Node0_action N_LogTrainMessageInitialization_Node0_action --> E_LogTrainMessageInitialization S_LogTrainMessageInitialization --> N_LogTrainMessageInitialization_Node0 N_LogTrainMessageInitialization_Node0 -- No --> E_LogTrainMessageInitialization
initialization"}:::decision N_LogTrainMessageInitialization_Node0_action["The system logs the successful
initialization with message details
and processing mode information"]:::main N_LogTrainMessageInitialization_Node0 -- Yes --> N_LogTrainMessageInitialization_Node0_action N_LogTrainMessageInitialization_Node0_action --> E_LogTrainMessageInitialization S_LogTrainMessageInitialization --> N_LogTrainMessageInitialization_Node0 N_LogTrainMessageInitialization_Node0 -- No --> E_LogTrainMessageInitialization
File: GCX016.cbl
GIVEN:
Message ready flag is set for a valid train message
WHEN:
The system completes train message initialization
THEN:
- The system logs the successful initialization with message details
- Processing mode information
β Consolidated Acceptance Criteria
- The system handles validation failure → the system sets error flag to prevent further business processing of the invalid train message
- Entry count validation fails → an error flag is set to indicate processing failure
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetErrorFlag(["Start Step"])
E_SetErrorFlag(["End Step"])
N_SetErrorFlag_Node0{"The system handles validation
failure"}:::decision N_SetErrorFlag_Node0_action["The system sets error flag to
prevent further business processing
of the invalid train message"]:::main N_SetErrorFlag_Node0 -- Yes --> N_SetErrorFlag_Node0_action N_SetErrorFlag_Node0_action --> E_SetErrorFlag S_SetErrorFlag --> N_SetErrorFlag_Node0 N_SetErrorFlag_Node1{"Entry count validation fails"}:::decision N_SetErrorFlag_Node1_action["An error flag is set to indicate
processing failure"]:::main N_SetErrorFlag_Node1 -- Yes --> N_SetErrorFlag_Node1_action N_SetErrorFlag_Node1_action --> E_SetErrorFlag N_SetErrorFlag_Node0 -- No --> N_SetErrorFlag_Node1 N_SetErrorFlag_Node1 -- No --> E_SetErrorFlag
failure"}:::decision N_SetErrorFlag_Node0_action["The system sets error flag to
prevent further business processing
of the invalid train message"]:::main N_SetErrorFlag_Node0 -- Yes --> N_SetErrorFlag_Node0_action N_SetErrorFlag_Node0_action --> E_SetErrorFlag S_SetErrorFlag --> N_SetErrorFlag_Node0 N_SetErrorFlag_Node1{"Entry count validation fails"}:::decision N_SetErrorFlag_Node1_action["An error flag is set to indicate
processing failure"]:::main N_SetErrorFlag_Node1 -- Yes --> N_SetErrorFlag_Node1_action N_SetErrorFlag_Node1_action --> E_SetErrorFlag N_SetErrorFlag_Node0 -- No --> N_SetErrorFlag_Node1 N_SetErrorFlag_Node1 -- No --> E_SetErrorFlag
File: GCX016.cbl
GIVEN:
Error message is generated for invalid train message
WHEN:
The system handles validation failure
THEN:
The system sets error flag to prevent further business processing of the invalid train message
File: GCX016.cbl
GIVEN:
An entry count error has been logged
WHEN:
Entry count validation fails
THEN:
An error flag is set to indicate processing failure
β Consolidated Acceptance Criteria
- System attempts to connect to MQ manager → connection attempt is made and result is evaluated
- System attempts MQ connection → connection attempt is made using MQ connect operation
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AttemptMQConnection(["Start Step"])
E_AttemptMQConnection(["End Step"])
N_AttemptMQConnection_Node0{"System attempts to connect to MQ
manager"}:::decision N_AttemptMQConnection_Node0_action["Connection attempt is made and
result is evaluated"]:::main N_AttemptMQConnection_Node0 -- Yes --> N_AttemptMQConnection_Node0_action N_AttemptMQConnection_Node0_action --> E_AttemptMQConnection S_AttemptMQConnection --> N_AttemptMQConnection_Node0 N_AttemptMQConnection_Node1{"system attempts MQ connection"}:::decision N_AttemptMQConnection_Node1_action["connection attempt is made using MQ
connect operation"]:::main N_AttemptMQConnection_Node1 -- Yes --> N_AttemptMQConnection_Node1_action N_AttemptMQConnection_Node1_action --> E_AttemptMQConnection N_AttemptMQConnection_Node0 -- No --> N_AttemptMQConnection_Node1 N_AttemptMQConnection_Node1 -- No --> E_AttemptMQConnection
manager"}:::decision N_AttemptMQConnection_Node0_action["Connection attempt is made and
result is evaluated"]:::main N_AttemptMQConnection_Node0 -- Yes --> N_AttemptMQConnection_Node0_action N_AttemptMQConnection_Node0_action --> E_AttemptMQConnection S_AttemptMQConnection --> N_AttemptMQConnection_Node0 N_AttemptMQConnection_Node1{"system attempts MQ connection"}:::decision N_AttemptMQConnection_Node1_action["connection attempt is made using MQ
connect operation"]:::main N_AttemptMQConnection_Node1 -- Yes --> N_AttemptMQConnection_Node1_action N_AttemptMQConnection_Node1_action --> E_AttemptMQConnection N_AttemptMQConnection_Node0 -- No --> N_AttemptMQConnection_Node1 N_AttemptMQConnection_Node1 -- No --> E_AttemptMQConnection
File: GCX016.cbl
GIVEN:
MQ connection parameters are initialized
WHEN:
System attempts to connect to MQ manager
THEN:
- Connection attempt is made
- Result is evaluated
File: GCX016.cbl
GIVEN:
all connection parameters and options are configured
WHEN:
system attempts MQ connection
THEN:
connection attempt is made using MQ connect operation
β Consolidated Acceptance Criteria
- Connection completion code is evaluated → if completion code equals MQCC-OK then connection is successful, otherwise connection failed
- Connection status is evaluated → if connection successful, proceed to open queue; if connection failed, handle connection error
- Connection result is evaluated → system determines if connection was successful based on completion code
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ConnectionSuccessful(["Start Step"])
E_ConnectionSuccessful(["End Step"])
N_ConnectionSuccessful_Node0{"Connection completion code is
evaluated"}:::decision N_ConnectionSuccessful_Node0_action["If completion code equals MQCC-OK
then connection is successful,
otherwise connection failed"]:::main N_ConnectionSuccessful_Node0 -- Yes --> N_ConnectionSuccessful_Node0_action N_ConnectionSuccessful_Node0_action --> E_ConnectionSuccessful S_ConnectionSuccessful --> N_ConnectionSuccessful_Node0 N_ConnectionSuccessful_Node1{"Connection status is evaluated"}:::decision N_ConnectionSuccessful_Node1_action["If connection successful, proceed
to open queue if connection failed,
handle connection error"]:::main N_ConnectionSuccessful_Node1 -- Yes --> N_ConnectionSuccessful_Node1_action N_ConnectionSuccessful_Node1_action --> E_ConnectionSuccessful N_ConnectionSuccessful_Node0 -- No --> N_ConnectionSuccessful_Node1 N_ConnectionSuccessful_Node2{"connection result is evaluated"}:::decision N_ConnectionSuccessful_Node2_action["system determines if connection was
successful based on completion code"]:::main N_ConnectionSuccessful_Node2 -- Yes --> N_ConnectionSuccessful_Node2_action N_ConnectionSuccessful_Node2_action --> E_ConnectionSuccessful N_ConnectionSuccessful_Node1 -- No --> N_ConnectionSuccessful_Node2 N_ConnectionSuccessful_Node2 -- No --> E_ConnectionSuccessful
evaluated"}:::decision N_ConnectionSuccessful_Node0_action["If completion code equals MQCC-OK
then connection is successful,
otherwise connection failed"]:::main N_ConnectionSuccessful_Node0 -- Yes --> N_ConnectionSuccessful_Node0_action N_ConnectionSuccessful_Node0_action --> E_ConnectionSuccessful S_ConnectionSuccessful --> N_ConnectionSuccessful_Node0 N_ConnectionSuccessful_Node1{"Connection status is evaluated"}:::decision N_ConnectionSuccessful_Node1_action["If connection successful, proceed
to open queue if connection failed,
handle connection error"]:::main N_ConnectionSuccessful_Node1 -- Yes --> N_ConnectionSuccessful_Node1_action N_ConnectionSuccessful_Node1_action --> E_ConnectionSuccessful N_ConnectionSuccessful_Node0 -- No --> N_ConnectionSuccessful_Node1 N_ConnectionSuccessful_Node2{"connection result is evaluated"}:::decision N_ConnectionSuccessful_Node2_action["system determines if connection was
successful based on completion code"]:::main N_ConnectionSuccessful_Node2 -- Yes --> N_ConnectionSuccessful_Node2_action N_ConnectionSuccessful_Node2_action --> E_ConnectionSuccessful N_ConnectionSuccessful_Node1 -- No --> N_ConnectionSuccessful_Node2 N_ConnectionSuccessful_Node2 -- No --> E_ConnectionSuccessful
File: GCX016.cbl
GIVEN:
MQ connection attempt has been made
WHEN:
Connection completion code is evaluated
THEN:
If completion code equals MQCC-OK then connection is successful, otherwise connection failed
File: GCX016.cbl
GIVEN:
MQ connection attempt has been made
WHEN:
Connection status is evaluated
THEN:
If connection successful, proceed to open queue; if connection failed, handle connection error
File: GCX016.cbl
GIVEN:
MQ connection attempt has been made
WHEN:
connection result is evaluated
THEN:
system determines if connection was successful based on completion code
β Consolidated Acceptance Criteria
- Connection completion code is not MQCC-OK → connection error is logged with error details
- Logging connection error → error details are recorded in system log
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogConnectionError(["Start Step"])
E_LogConnectionError(["End Step"])
N_LogConnectionError_Node0{"Connection completion code is not
MQCC-OK"}:::decision N_LogConnectionError_Node0_action["Connection error is logged with
error details"]:::main N_LogConnectionError_Node0 -- Yes --> N_LogConnectionError_Node0_action N_LogConnectionError_Node0_action --> E_LogConnectionError S_LogConnectionError --> N_LogConnectionError_Node0 N_LogConnectionError_Node1{"logging connection error"}:::decision N_LogConnectionError_Node1_action["error details are recorded in
system log"]:::exclusion N_LogConnectionError_Node1 -- Yes -->|Alternative| N_LogConnectionError_Node1_action N_LogConnectionError_Node1_action --> E_LogConnectionError N_LogConnectionError_Node0 -- No --> N_LogConnectionError_Node1 N_LogConnectionError_Node1 -- No --> E_LogConnectionError
MQCC-OK"}:::decision N_LogConnectionError_Node0_action["Connection error is logged with
error details"]:::main N_LogConnectionError_Node0 -- Yes --> N_LogConnectionError_Node0_action N_LogConnectionError_Node0_action --> E_LogConnectionError S_LogConnectionError --> N_LogConnectionError_Node0 N_LogConnectionError_Node1{"logging connection error"}:::decision N_LogConnectionError_Node1_action["error details are recorded in
system log"]:::exclusion N_LogConnectionError_Node1 -- Yes -->|Alternative| N_LogConnectionError_Node1_action N_LogConnectionError_Node1_action --> E_LogConnectionError N_LogConnectionError_Node0 -- No --> N_LogConnectionError_Node1 N_LogConnectionError_Node1 -- No --> E_LogConnectionError
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
MQ connection attempt failed
WHEN:
Connection completion code is not MQCC-OK
THEN:
Connection error is logged with error details
File: GCX016.cbl
GIVEN:
MQ connection attempt failed
WHEN:
logging connection error
THEN:
error details are recorded in system log
β Consolidated Acceptance Criteria
- Queue open completion code is not MQCC-OK → queue open error is logged with error details
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogQueueOpenError(["Start Step"])
E_LogQueueOpenError(["End Step"])
N_LogQueueOpenError_Node0{"Queue open completion code is not
MQCC-OK"}:::decision N_LogQueueOpenError_Node0_action["Queue open error is logged with
error details"]:::main N_LogQueueOpenError_Node0 -- Yes --> N_LogQueueOpenError_Node0_action N_LogQueueOpenError_Node0_action --> E_LogQueueOpenError S_LogQueueOpenError --> N_LogQueueOpenError_Node0 N_LogQueueOpenError_Node0 -- No --> E_LogQueueOpenError
MQCC-OK"}:::decision N_LogQueueOpenError_Node0_action["Queue open error is logged with
error details"]:::main N_LogQueueOpenError_Node0 -- Yes --> N_LogQueueOpenError_Node0_action N_LogQueueOpenError_Node0_action --> E_LogQueueOpenError S_LogQueueOpenError --> N_LogQueueOpenError_Node0 N_LogQueueOpenError_Node0 -- No --> E_LogQueueOpenError
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
MQ queue open attempt failed
WHEN:
Queue open completion code is not MQCC-OK
THEN:
Queue open error is logged with error details
β Consolidated Acceptance Criteria
- Queue open error is logged → queue error status flag is set to indicate queue open failure
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetQueueErrorStatus(["Start Step"])
E_SetQueueErrorStatus(["End Step"])
N_SetQueueErrorStatus_Node0{"Queue open error is logged"}:::decision
N_SetQueueErrorStatus_Node0_action["Queue error status flag is set to
indicate queue open failure"]:::exclusion N_SetQueueErrorStatus_Node0 -- Yes -->|Alternative| N_SetQueueErrorStatus_Node0_action N_SetQueueErrorStatus_Node0_action --> E_SetQueueErrorStatus S_SetQueueErrorStatus --> N_SetQueueErrorStatus_Node0 N_SetQueueErrorStatus_Node0 -- No --> E_SetQueueErrorStatus
indicate queue open failure"]:::exclusion N_SetQueueErrorStatus_Node0 -- Yes -->|Alternative| N_SetQueueErrorStatus_Node0_action N_SetQueueErrorStatus_Node0_action --> E_SetQueueErrorStatus S_SetQueueErrorStatus --> N_SetQueueErrorStatus_Node0 N_SetQueueErrorStatus_Node0 -- No --> E_SetQueueErrorStatus
File: GCX016.cbl
GIVEN:
MQ queue opening has failed
WHEN:
Queue open error is logged
THEN:
Queue error status flag is set to indicate queue open failure
β Consolidated Acceptance Criteria
- System checks queue availability for processing → queue availability status is determined
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ValidateQueueAvailability(["Start Step"])
E_ValidateQueueAvailability(["End Step"])
N_ValidateQueueAvailability_Node0{"System checks queue availability
for processing"}:::decision N_ValidateQueueAvailability_Node0_action["Queue availability status is
determined"]:::main N_ValidateQueueAvailability_Node0 -- Yes --> N_ValidateQueueAvailability_Node0_action N_ValidateQueueAvailability_Node0_action --> E_ValidateQueueAvailability S_ValidateQueueAvailability --> N_ValidateQueueAvailability_Node0 N_ValidateQueueAvailability_Node0 -- No --> E_ValidateQueueAvailability
for processing"}:::decision N_ValidateQueueAvailability_Node0_action["Queue availability status is
determined"]:::main N_ValidateQueueAvailability_Node0 -- Yes --> N_ValidateQueueAvailability_Node0_action N_ValidateQueueAvailability_Node0_action --> E_ValidateQueueAvailability S_ValidateQueueAvailability --> N_ValidateQueueAvailability_Node0 N_ValidateQueueAvailability_Node0 -- No --> E_ValidateQueueAvailability
File: GCX016.cbl
GIVEN:
MQ queue is successfully opened
WHEN:
System checks queue availability for processing
THEN:
Queue availability status is determined
β Consolidated Acceptance Criteria
- System evaluates queue processing readiness → if queue is available then processing can proceed, otherwise handle unavailability
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_QueueAvailableforProcessing(["Start Step"])
E_QueueAvailableforProcessing(["End Step"])
N_QueueAvailableforProcessing_Node0{"System evaluates queue processing
readiness"}:::decision N_QueueAvailableforProcessing_Node0_action["If queue is available then
processing can proceed, otherwise
handle unavailability"]:::main N_QueueAvailableforProcessing_Node0 -- Yes --> N_QueueAvailableforProcessing_Node0_action N_QueueAvailableforProcessing_Node0_action --> E_QueueAvailableforProcessing S_QueueAvailableforProcessing --> N_QueueAvailableforProcessing_Node0 N_QueueAvailableforProcessing_Node0 -- No --> E_QueueAvailableforProcessing
readiness"}:::decision N_QueueAvailableforProcessing_Node0_action["If queue is available then
processing can proceed, otherwise
handle unavailability"]:::main N_QueueAvailableforProcessing_Node0 -- Yes --> N_QueueAvailableforProcessing_Node0_action N_QueueAvailableforProcessing_Node0_action --> E_QueueAvailableforProcessing S_QueueAvailableforProcessing --> N_QueueAvailableforProcessing_Node0 N_QueueAvailableforProcessing_Node0 -- No --> E_QueueAvailableforProcessing
File: GCX016.cbl
GIVEN:
Queue availability has been validated
WHEN:
System evaluates queue processing readiness
THEN:
If queue is available then processing can proceed, otherwise handle unavailability
β Consolidated Acceptance Criteria
- All MQ setup operations are successful → connection ready status is set to indicate MQ is operational
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetConnectionReadyStatus(["Start Step"])
E_SetConnectionReadyStatus(["End Step"])
N_SetConnectionReadyStatus_Node0{"All MQ setup operations are
successful"}:::decision N_SetConnectionReadyStatus_Node0_action["Connection ready status is set to
indicate MQ is operational"]:::main N_SetConnectionReadyStatus_Node0 -- Yes --> N_SetConnectionReadyStatus_Node0_action N_SetConnectionReadyStatus_Node0_action --> E_SetConnectionReadyStatus S_SetConnectionReadyStatus --> N_SetConnectionReadyStatus_Node0 N_SetConnectionReadyStatus_Node0 -- No --> E_SetConnectionReadyStatus
successful"}:::decision N_SetConnectionReadyStatus_Node0_action["Connection ready status is set to
indicate MQ is operational"]:::main N_SetConnectionReadyStatus_Node0 -- Yes --> N_SetConnectionReadyStatus_Node0_action N_SetConnectionReadyStatus_Node0_action --> E_SetConnectionReadyStatus S_SetConnectionReadyStatus --> N_SetConnectionReadyStatus_Node0 N_SetConnectionReadyStatus_Node0 -- No --> E_SetConnectionReadyStatus
File: GCX016.cbl
GIVEN:
MQ queue is available for processing
WHEN:
All MQ setup operations are successful
THEN:
Connection ready status is set to indicate MQ is operational
β Consolidated Acceptance Criteria
- Connection ready status is set → successful connection is logged
- Logging connection success → success message is recorded in system log
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogConnectionSuccess(["Start Step"])
E_LogConnectionSuccess(["End Step"])
N_LogConnectionSuccess_Node0{"Connection ready status is set"}:::decision
N_LogConnectionSuccess_Node0_action["Successful connection is logged"]:::main
N_LogConnectionSuccess_Node0 -- Yes --> N_LogConnectionSuccess_Node0_action
N_LogConnectionSuccess_Node0_action --> E_LogConnectionSuccess
S_LogConnectionSuccess --> N_LogConnectionSuccess_Node0
N_LogConnectionSuccess_Node1{"logging connection success"}:::decision
N_LogConnectionSuccess_Node1_action["success message is recorded in
system log"]:::main N_LogConnectionSuccess_Node1 -- Yes --> N_LogConnectionSuccess_Node1_action N_LogConnectionSuccess_Node1_action --> E_LogConnectionSuccess N_LogConnectionSuccess_Node0 -- No --> N_LogConnectionSuccess_Node1 N_LogConnectionSuccess_Node1 -- No --> E_LogConnectionSuccess
system log"]:::main N_LogConnectionSuccess_Node1 -- Yes --> N_LogConnectionSuccess_Node1_action N_LogConnectionSuccess_Node1_action --> E_LogConnectionSuccess N_LogConnectionSuccess_Node0 -- No --> N_LogConnectionSuccess_Node1 N_LogConnectionSuccess_Node1 -- No --> E_LogConnectionSuccess
File: GCX016.cbl
GIVEN:
MQ connection is ready for processing
WHEN:
Connection ready status is set
THEN:
Successful connection is logged
File: GCX016.cbl
GIVEN:
MQ connection was successful
WHEN:
logging connection success
THEN:
success message is recorded in system log
β Consolidated Acceptance Criteria
- Connection failure is handled → retry logic is initiated to attempt reconnection
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RetryConnectionLogic(["Start Step"])
E_RetryConnectionLogic(["End Step"])
N_RetryConnectionLogic_Node0{"Connection failure is handled"}:::decision
N_RetryConnectionLogic_Node0_action["Retry logic is initiated to attempt
reconnection"]:::main N_RetryConnectionLogic_Node0 -- Yes --> N_RetryConnectionLogic_Node0_action N_RetryConnectionLogic_Node0_action --> E_RetryConnectionLogic S_RetryConnectionLogic --> N_RetryConnectionLogic_Node0 N_RetryConnectionLogic_Node0 -- No --> E_RetryConnectionLogic
reconnection"]:::main N_RetryConnectionLogic_Node0 -- Yes --> N_RetryConnectionLogic_Node0_action N_RetryConnectionLogic_Node0_action --> E_RetryConnectionLogic S_RetryConnectionLogic --> N_RetryConnectionLogic_Node0 N_RetryConnectionLogic_Node0 -- No --> E_RetryConnectionLogic
File: GCX016.cbl
GIVEN:
MQ connection or queue operation has failed
WHEN:
Connection failure is handled
THEN:
Retry logic is initiated to attempt reconnection
β Consolidated Acceptance Criteria
- System checks remaining retry attempts → if retry attempts remain then retry connection, otherwise proceed to final failure
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RetryAttemptsRemaining(["Start Step"])
E_RetryAttemptsRemaining(["End Step"])
N_RetryAttemptsRemaining_Node0{"System checks remaining retry
attempts"}:::decision N_RetryAttemptsRemaining_Node0_action["If retry attempts remain then retry
connection, otherwise proceed to
final failure"]:::main N_RetryAttemptsRemaining_Node0 -- Yes --> N_RetryAttemptsRemaining_Node0_action N_RetryAttemptsRemaining_Node0_action --> E_RetryAttemptsRemaining S_RetryAttemptsRemaining --> N_RetryAttemptsRemaining_Node0 N_RetryAttemptsRemaining_Node0 -- No --> E_RetryAttemptsRemaining
attempts"}:::decision N_RetryAttemptsRemaining_Node0_action["If retry attempts remain then retry
connection, otherwise proceed to
final failure"]:::main N_RetryAttemptsRemaining_Node0 -- Yes --> N_RetryAttemptsRemaining_Node0_action N_RetryAttemptsRemaining_Node0_action --> E_RetryAttemptsRemaining S_RetryAttemptsRemaining --> N_RetryAttemptsRemaining_Node0 N_RetryAttemptsRemaining_Node0 -- No --> E_RetryAttemptsRemaining
File: GCX016.cbl
GIVEN:
Retry logic is active
WHEN:
System checks remaining retry attempts
THEN:
If retry attempts remain then retry connection, otherwise proceed to final failure
β Consolidated Acceptance Criteria
- No more retry attempts remain → final connection failure status is set
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_FinalConnectionFailure(["Start Step"])
E_FinalConnectionFailure(["End Step"])
N_FinalConnectionFailure_Node0{"No more retry attempts remain"}:::decision
N_FinalConnectionFailure_Node0_action["Final connection failure status is
set"]:::main N_FinalConnectionFailure_Node0 -- Yes --> N_FinalConnectionFailure_Node0_action N_FinalConnectionFailure_Node0_action --> E_FinalConnectionFailure S_FinalConnectionFailure --> N_FinalConnectionFailure_Node0 N_FinalConnectionFailure_Node0 -- No --> E_FinalConnectionFailure
set"]:::main N_FinalConnectionFailure_Node0 -- Yes --> N_FinalConnectionFailure_Node0_action N_FinalConnectionFailure_Node0_action --> E_FinalConnectionFailure S_FinalConnectionFailure --> N_FinalConnectionFailure_Node0 N_FinalConnectionFailure_Node0 -- No --> E_FinalConnectionFailure
File: GCX016.cbl
GIVEN:
All retry attempts have been exhausted
WHEN:
No more retry attempts remain
THEN:
Final connection failure status is set
β Consolidated Acceptance Criteria
- MQ connection is permanently unavailable → processing is terminated due to MQ unavailability
- Terminating processing → system stops processing and exits with appropriate status
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_TerminateProcessing(["Start Step"])
E_TerminateProcessing(["End Step"])
N_TerminateProcessing_Node0{"MQ connection is permanently
unavailable"}:::decision N_TerminateProcessing_Node0_action["Processing is terminated due to MQ
unavailability"]:::main N_TerminateProcessing_Node0 -- Yes --> N_TerminateProcessing_Node0_action N_TerminateProcessing_Node0_action --> E_TerminateProcessing S_TerminateProcessing --> N_TerminateProcessing_Node0 N_TerminateProcessing_Node1{"terminating processing"}:::decision N_TerminateProcessing_Node1_action["system stops processing and exits
with appropriate status"]:::main N_TerminateProcessing_Node1 -- Yes --> N_TerminateProcessing_Node1_action N_TerminateProcessing_Node1_action --> E_TerminateProcessing N_TerminateProcessing_Node0 -- No --> N_TerminateProcessing_Node1 N_TerminateProcessing_Node1 -- No --> E_TerminateProcessing
unavailable"}:::decision N_TerminateProcessing_Node0_action["Processing is terminated due to MQ
unavailability"]:::main N_TerminateProcessing_Node0 -- Yes --> N_TerminateProcessing_Node0_action N_TerminateProcessing_Node0_action --> E_TerminateProcessing S_TerminateProcessing --> N_TerminateProcessing_Node0 N_TerminateProcessing_Node1{"terminating processing"}:::decision N_TerminateProcessing_Node1_action["system stops processing and exits
with appropriate status"]:::main N_TerminateProcessing_Node1 -- Yes --> N_TerminateProcessing_Node1_action N_TerminateProcessing_Node1_action --> E_TerminateProcessing N_TerminateProcessing_Node0 -- No --> N_TerminateProcessing_Node1 N_TerminateProcessing_Node1 -- No --> E_TerminateProcessing
File: GCX016.cbl
GIVEN:
Final MQ connection failure has occurred
WHEN:
MQ connection is permanently unavailable
THEN:
Processing is terminated due to MQ unavailability
File: GCX016.cbl
GIVEN:
administrator has been notified of connection failure
WHEN:
terminating processing
THEN:
- System stops processing
- Exits with appropriate status
β Consolidated Acceptance Criteria
- MQ connection is initiated → connection is established and ready for queue operations
- System attempts to establish MQ connection → connection is established successfully or connection failure is handled
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_EstablishMQConnection(["Start Step"])
E_EstablishMQConnection(["End Step"])
N_EstablishMQConnection_Node0{"MQ connection is initiated"}:::decision
N_EstablishMQConnection_Node0_action["Connection is established and ready
for queue operations"]:::main N_EstablishMQConnection_Node0 -- Yes --> N_EstablishMQConnection_Node0_action N_EstablishMQConnection_Node0_action --> E_EstablishMQConnection S_EstablishMQConnection --> N_EstablishMQConnection_Node0 N_EstablishMQConnection_Node1{"System attempts to establish MQ
connection"}:::decision N_EstablishMQConnection_Node1_action["Connection is established
successfully or connection failure
is handled"]:::main N_EstablishMQConnection_Node1 -- Yes --> N_EstablishMQConnection_Node1_action N_EstablishMQConnection_Node1_action --> E_EstablishMQConnection N_EstablishMQConnection_Node0 -- No --> N_EstablishMQConnection_Node1 N_EstablishMQConnection_Node1 -- No --> E_EstablishMQConnection
for queue operations"]:::main N_EstablishMQConnection_Node0 -- Yes --> N_EstablishMQConnection_Node0_action N_EstablishMQConnection_Node0_action --> E_EstablishMQConnection S_EstablishMQConnection --> N_EstablishMQConnection_Node0 N_EstablishMQConnection_Node1{"System attempts to establish MQ
connection"}:::decision N_EstablishMQConnection_Node1_action["Connection is established
successfully or connection failure
is handled"]:::main N_EstablishMQConnection_Node1 -- Yes --> N_EstablishMQConnection_Node1_action N_EstablishMQConnection_Node1_action --> E_EstablishMQConnection N_EstablishMQConnection_Node0 -- No --> N_EstablishMQConnection_Node1 N_EstablishMQConnection_Node1 -- No --> E_EstablishMQConnection
File: GCX016.cbl
GIVEN:
System needs to process messages from message queue
WHEN:
MQ connection is initiated
THEN:
- Connection is established
- Ready for queue operations
File: GCX016.cbl
GIVEN:
MQ connection parameters are initialized
WHEN:
System attempts to establish MQ connection
THEN:
Connection is established successfully or connection failure is handled
β Consolidated Acceptance Criteria
- Entry count calculation is performed → number of message entries is determined for array initialization
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CalculateEntryCount(["Start Step"])
E_CalculateEntryCount(["End Step"])
N_CalculateEntryCount_Node0{"Entry count calculation is
performed"}:::decision N_CalculateEntryCount_Node0_action["Number of message entries is
determined for array initialization"]:::main N_CalculateEntryCount_Node0 -- Yes --> N_CalculateEntryCount_Node0_action N_CalculateEntryCount_Node0_action --> E_CalculateEntryCount S_CalculateEntryCount --> N_CalculateEntryCount_Node0 N_CalculateEntryCount_Node0 -- No --> E_CalculateEntryCount
performed"}:::decision N_CalculateEntryCount_Node0_action["Number of message entries is
determined for array initialization"]:::main N_CalculateEntryCount_Node0 -- Yes --> N_CalculateEntryCount_Node0_action N_CalculateEntryCount_Node0_action --> E_CalculateEntryCount S_CalculateEntryCount --> N_CalculateEntryCount_Node0 N_CalculateEntryCount_Node0 -- No --> E_CalculateEntryCount
File: GCX016.cbl
GIVEN:
Message length has been calculated
WHEN:
Entry count calculation is performed
THEN:
Number of message entries is determined for array initialization
β Consolidated Acceptance Criteria
- Message array initialization is performed → message array is prepared to store message entries
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_InitializeMessageArray(["Start Step"])
E_InitializeMessageArray(["End Step"])
N_InitializeMessageArray_Node0{"Message array initialization is
performed"}:::decision N_InitializeMessageArray_Node0_action["Message array is prepared to store
message entries"]:::main N_InitializeMessageArray_Node0 -- Yes --> N_InitializeMessageArray_Node0_action N_InitializeMessageArray_Node0_action --> E_InitializeMessageArray S_InitializeMessageArray --> N_InitializeMessageArray_Node0 N_InitializeMessageArray_Node0 -- No --> E_InitializeMessageArray
performed"}:::decision N_InitializeMessageArray_Node0_action["Message array is prepared to store
message entries"]:::main N_InitializeMessageArray_Node0 -- Yes --> N_InitializeMessageArray_Node0_action N_InitializeMessageArray_Node0_action --> E_InitializeMessageArray S_InitializeMessageArray --> N_InitializeMessageArray_Node0 N_InitializeMessageArray_Node0 -- No --> E_InitializeMessageArray
File: GCX016.cbl
GIVEN:
Entry count has been calculated
WHEN:
Message array initialization is performed
THEN:
Message array is prepared to store message entries
β Consolidated Acceptance Criteria
- Variable-length message processing is performed → message content is parsed and stored in message array
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ProcessVariableLengthMessage(["Start Step"])
E_ProcessVariableLengthMessage(["End Step"])
N_ProcessVariableLengthMessage_Node0{"Variable-length message processing
is performed"}:::decision N_ProcessVariableLengthMessage_Node0_action["Message content is parsed and
stored in message array"]:::main N_ProcessVariableLengthMessage_Node0 -- Yes --> N_ProcessVariableLengthMessage_Node0_action N_ProcessVariableLengthMessage_Node0_action --> E_ProcessVariableLengthMessage S_ProcessVariableLengthMessage --> N_ProcessVariableLengthMessage_Node0 N_ProcessVariableLengthMessage_Node0 -- No --> E_ProcessVariableLengthMessage
is performed"}:::decision N_ProcessVariableLengthMessage_Node0_action["Message content is parsed and
stored in message array"]:::main N_ProcessVariableLengthMessage_Node0 -- Yes --> N_ProcessVariableLengthMessage_Node0_action N_ProcessVariableLengthMessage_Node0_action --> E_ProcessVariableLengthMessage S_ProcessVariableLengthMessage --> N_ProcessVariableLengthMessage_Node0 N_ProcessVariableLengthMessage_Node0 -- No --> E_ProcessVariableLengthMessage
File: GCX016.cbl
GIVEN:
Message array is initialized
WHEN:
Variable-length message processing is performed
THEN:
- Message content is parsed
- Stored in message array
β Consolidated Acceptance Criteria
- Connection error handling is invoked → connection error is processed and operations are terminated
- MQ connection fails → connection failure is logged and error status is set
- System encounters MQ connection error → error is logged and processing continues with error handling
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_HandleMQConnectionError(["Start Step"])
E_HandleMQConnectionError(["End Step"])
N_HandleMQConnectionError_Node0{"Connection error handling is
invoked"}:::decision N_HandleMQConnectionError_Node0_action["Connection error is processed and
operations are terminated"]:::exclusion N_HandleMQConnectionError_Node0 -- Yes -->|Alternative| N_HandleMQConnectionError_Node0_action N_HandleMQConnectionError_Node0_action --> E_HandleMQConnectionError S_HandleMQConnectionError --> N_HandleMQConnectionError_Node0 N_HandleMQConnectionError_Node1{"MQ connection fails"}:::decision N_HandleMQConnectionError_Node1_action["Connection failure is logged and
error status is set"]:::main N_HandleMQConnectionError_Node1 -- Yes --> N_HandleMQConnectionError_Node1_action N_HandleMQConnectionError_Node1_action --> E_HandleMQConnectionError N_HandleMQConnectionError_Node0 -- No --> N_HandleMQConnectionError_Node1 N_HandleMQConnectionError_Node2{"system encounters MQ connection
error"}:::decision N_HandleMQConnectionError_Node2_action["error is logged and processing
continues with error handling"]:::exclusion N_HandleMQConnectionError_Node2 -- Yes -->|Alternative| N_HandleMQConnectionError_Node2_action N_HandleMQConnectionError_Node2_action --> E_HandleMQConnectionError N_HandleMQConnectionError_Node1 -- No --> N_HandleMQConnectionError_Node2 N_HandleMQConnectionError_Node2 -- No --> E_HandleMQConnectionError
invoked"}:::decision N_HandleMQConnectionError_Node0_action["Connection error is processed and
operations are terminated"]:::exclusion N_HandleMQConnectionError_Node0 -- Yes -->|Alternative| N_HandleMQConnectionError_Node0_action N_HandleMQConnectionError_Node0_action --> E_HandleMQConnectionError S_HandleMQConnectionError --> N_HandleMQConnectionError_Node0 N_HandleMQConnectionError_Node1{"MQ connection fails"}:::decision N_HandleMQConnectionError_Node1_action["Connection failure is logged and
error status is set"]:::main N_HandleMQConnectionError_Node1 -- Yes --> N_HandleMQConnectionError_Node1_action N_HandleMQConnectionError_Node1_action --> E_HandleMQConnectionError N_HandleMQConnectionError_Node0 -- No --> N_HandleMQConnectionError_Node1 N_HandleMQConnectionError_Node2{"system encounters MQ connection
error"}:::decision N_HandleMQConnectionError_Node2_action["error is logged and processing
continues with error handling"]:::exclusion N_HandleMQConnectionError_Node2 -- Yes -->|Alternative| N_HandleMQConnectionError_Node2_action N_HandleMQConnectionError_Node2_action --> E_HandleMQConnectionError N_HandleMQConnectionError_Node1 -- No --> N_HandleMQConnectionError_Node2 N_HandleMQConnectionError_Node2 -- No --> E_HandleMQConnectionError
File: GCX016.cbl
GIVEN:
MQ connection attempt has failed
WHEN:
Connection error handling is invoked
THEN:
- Connection error is processed
- Operations are terminated
File: GCX016.cbl
GIVEN:
MQ connection attempt is made
WHEN:
MQ connection fails
THEN:
- Connection failure is logged
- Error status is set
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
MQ queue is not available or connection fails
WHEN:
system encounters MQ connection error
THEN:
- Error is logged
- Processing continues with error handling
β Consolidated Acceptance Criteria
- Message retrieval error handling is invoked → message retrieval error is processed and operations are terminated
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_HandleMessageRetrievalError(["Start Step"])
E_HandleMessageRetrievalError(["End Step"])
N_HandleMessageRetrievalError_Node0{"Message retrieval error handling is
invoked"}:::decision N_HandleMessageRetrievalError_Node0_action["Message retrieval error is
processed and operations are
terminated"]:::exclusion N_HandleMessageRetrievalError_Node0 -- Yes -->|Alternative| N_HandleMessageRetrievalError_Node0_action N_HandleMessageRetrievalError_Node0_action --> E_HandleMessageRetrievalError S_HandleMessageRetrievalError --> N_HandleMessageRetrievalError_Node0 N_HandleMessageRetrievalError_Node0 -- No --> E_HandleMessageRetrievalError
invoked"}:::decision N_HandleMessageRetrievalError_Node0_action["Message retrieval error is
processed and operations are
terminated"]:::exclusion N_HandleMessageRetrievalError_Node0 -- Yes -->|Alternative| N_HandleMessageRetrievalError_Node0_action N_HandleMessageRetrievalError_Node0_action --> E_HandleMessageRetrievalError S_HandleMessageRetrievalError --> N_HandleMessageRetrievalError_Node0 N_HandleMessageRetrievalError_Node0 -- No --> E_HandleMessageRetrievalError
File: GCX016.cbl
GIVEN:
Message retrieval operation has failed
WHEN:
Message retrieval error handling is invoked
THEN:
- Message retrieval error is processed
- Operations are terminated
β Consolidated Acceptance Criteria
- The system begins message array initialization → message arrays are initialized with EDI 350 parameters and processing structure is established
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_InitializeMessageArraysforEDI350(["Start Step"])
E_InitializeMessageArraysforEDI350(["End Step"])
N_InitializeMessageArraysforEDI350_Node0{"The system begins message array
initialization"}:::decision N_InitializeMessageArraysforEDI350_Node0_action["Message arrays are initialized with
EDI 350 parameters and processing
structure is established"]:::main N_InitializeMessageArraysforEDI350_Node0 -- Yes --> N_InitializeMessageArraysforEDI350_Node0_action N_InitializeMessageArraysforEDI350_Node0_action --> E_InitializeMessageArraysforEDI350 S_InitializeMessageArraysforEDI350 --> N_InitializeMessageArraysforEDI350_Node0 N_InitializeMessageArraysforEDI350_Node0 -- No --> E_InitializeMessageArraysforEDI350
initialization"}:::decision N_InitializeMessageArraysforEDI350_Node0_action["Message arrays are initialized with
EDI 350 parameters and processing
structure is established"]:::main N_InitializeMessageArraysforEDI350_Node0 -- Yes --> N_InitializeMessageArraysforEDI350_Node0_action N_InitializeMessageArraysforEDI350_Node0_action --> E_InitializeMessageArraysforEDI350 S_InitializeMessageArraysforEDI350 --> N_InitializeMessageArraysforEDI350_Node0 N_InitializeMessageArraysforEDI350_Node0 -- No --> E_InitializeMessageArraysforEDI350
File: GCX016.cbl
GIVEN:
A message needs to be processed for EDI 350 format
WHEN:
The system begins message array initialization
THEN:
- Message arrays are initialized with edi 350 parameters
- Processing structure is established
β Consolidated Acceptance Criteria
- The system processes the message content → the number of EDI segment entries is determined based on message structure and length
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_DetermineNumberofEDISegmentEntries(["Start Step"])
E_DetermineNumberofEDISegmentEntries(["End Step"])
N_DetermineNumberofEDISegmentEntries_Node0{"The system processes the message
content"}:::decision N_DetermineNumberofEDISegmentEntries_Node0_action["The number of EDI segment entries
is determined based on message
structure and length"]:::main N_DetermineNumberofEDISegmentEntries_Node0 -- Yes --> N_DetermineNumberofEDISegmentEntries_Node0_action N_DetermineNumberofEDISegmentEntries_Node0_action --> E_DetermineNumberofEDISegmentEntries S_DetermineNumberofEDISegmentEntries --> N_DetermineNumberofEDISegmentEntries_Node0 N_DetermineNumberofEDISegmentEntries_Node0 -- No --> E_DetermineNumberofEDISegmentEntries
content"}:::decision N_DetermineNumberofEDISegmentEntries_Node0_action["The number of EDI segment entries
is determined based on message
structure and length"]:::main N_DetermineNumberofEDISegmentEntries_Node0 -- Yes --> N_DetermineNumberofEDISegmentEntries_Node0_action N_DetermineNumberofEDISegmentEntries_Node0_action --> E_DetermineNumberofEDISegmentEntries S_DetermineNumberofEDISegmentEntries --> N_DetermineNumberofEDISegmentEntries_Node0 N_DetermineNumberofEDISegmentEntries_Node0 -- No --> E_DetermineNumberofEDISegmentEntries
File: GCX016.cbl
GIVEN:
A message with known length and structure
WHEN:
The system processes the message content
THEN:
- The number of edi segment entries is determined based on message structure
- Length
β Consolidated Acceptance Criteria
- The system validates message length requirements → processing continues if length is valid, otherwise error handling is triggered
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MessageLengthValid(["Start Step"])
E_MessageLengthValid(["End Step"])
N_MessageLengthValid_Node0{"The system validates message length
requirements"}:::decision N_MessageLengthValid_Node0_action["Processing continues if length is
valid, otherwise error handling is
triggered"]:::main N_MessageLengthValid_Node0 -- Yes --> N_MessageLengthValid_Node0_action N_MessageLengthValid_Node0_action --> E_MessageLengthValid S_MessageLengthValid --> N_MessageLengthValid_Node0 N_MessageLengthValid_Node0 -- No --> E_MessageLengthValid
requirements"}:::decision N_MessageLengthValid_Node0_action["Processing continues if length is
valid, otherwise error handling is
triggered"]:::main N_MessageLengthValid_Node0 -- Yes --> N_MessageLengthValid_Node0_action N_MessageLengthValid_Node0_action --> E_MessageLengthValid S_MessageLengthValid --> N_MessageLengthValid_Node0 N_MessageLengthValid_Node0 -- No --> E_MessageLengthValid
File: GCX016.cbl
GIVEN:
A message with calculated length
WHEN:
The system validates message length requirements
THEN:
Processing continues if length is valid, otherwise error handling is triggered
β Consolidated Acceptance Criteria
- The system analyzes message content for entry counting → entry count is calculated based on message structure parameters and segment boundaries
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CalculateEntryCountBasedonStructure(["Start Step"])
E_CalculateEntryCountBasedonStructure(["End Step"])
N_CalculateEntryCountBasedonStructure_Node0{"The system analyzes message content
for entry counting"}:::decision N_CalculateEntryCountBasedonStructure_Node0_action["Entry count is calculated based on
message structure parameters and
segment boundaries"]:::main N_CalculateEntryCountBasedonStructure_Node0 -- Yes --> N_CalculateEntryCountBasedonStructure_Node0_action N_CalculateEntryCountBasedonStructure_Node0_action --> E_CalculateEntryCountBasedonStructure S_CalculateEntryCountBasedonStructure --> N_CalculateEntryCountBasedonStructure_Node0 N_CalculateEntryCountBasedonStructure_Node0 -- No --> E_CalculateEntryCountBasedonStructure
for entry counting"}:::decision N_CalculateEntryCountBasedonStructure_Node0_action["Entry count is calculated based on
message structure parameters and
segment boundaries"]:::main N_CalculateEntryCountBasedonStructure_Node0 -- Yes --> N_CalculateEntryCountBasedonStructure_Node0_action N_CalculateEntryCountBasedonStructure_Node0_action --> E_CalculateEntryCountBasedonStructure S_CalculateEntryCountBasedonStructure --> N_CalculateEntryCountBasedonStructure_Node0 N_CalculateEntryCountBasedonStructure_Node0 -- No --> E_CalculateEntryCountBasedonStructure
File: GCX016.cbl
GIVEN:
A valid message with confirmed structure
WHEN:
The system analyzes message content for entry counting
THEN:
- Entry count is calculated based on message structure parameters
- Segment boundaries
β Consolidated Acceptance Criteria
- The system processes the message content → variable-length content is processed appropriately regardless of actual message size
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ProcessVariableLengthMessageContent(["Start Step"])
E_ProcessVariableLengthMessageContent(["End Step"])
N_ProcessVariableLengthMessageContent_Node0{"The system processes the message
content"}:::decision N_ProcessVariableLengthMessageContent_Node0_action["Variable-length content is
processed appropriately regardless
of actual message size"]:::main N_ProcessVariableLengthMessageContent_Node0 -- Yes --> N_ProcessVariableLengthMessageContent_Node0_action N_ProcessVariableLengthMessageContent_Node0_action --> E_ProcessVariableLengthMessageContent S_ProcessVariableLengthMessageContent --> N_ProcessVariableLengthMessageContent_Node0 N_ProcessVariableLengthMessageContent_Node0 -- No --> E_ProcessVariableLengthMessageContent
content"}:::decision N_ProcessVariableLengthMessageContent_Node0_action["Variable-length content is
processed appropriately regardless
of actual message size"]:::main N_ProcessVariableLengthMessageContent_Node0 -- Yes --> N_ProcessVariableLengthMessageContent_Node0_action N_ProcessVariableLengthMessageContent_Node0_action --> E_ProcessVariableLengthMessageContent S_ProcessVariableLengthMessageContent --> N_ProcessVariableLengthMessageContent_Node0 N_ProcessVariableLengthMessageContent_Node0 -- No --> E_ProcessVariableLengthMessageContent
File: GCX016.cbl
GIVEN:
A message with variable-length content structure
WHEN:
The system processes the message content
THEN:
Variable-length content is processed appropriately regardless of actual message size
β Consolidated Acceptance Criteria
- If message type indicators → train-specific processing is initiated if message is train-related, otherwise standard processing applies
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_TrainMessageType(["Start Step"])
E_TrainMessageType(["End Step"])
N_TrainMessageType_Node0{"The system evaluates message type
indicators"}:::decision N_TrainMessageType_Node0_action["Train-specific processing is
initiated if message is
train-related, otherwise standard
processing applies"]:::main N_TrainMessageType_Node0 -- Yes --> N_TrainMessageType_Node0_action N_TrainMessageType_Node0_action --> E_TrainMessageType S_TrainMessageType --> N_TrainMessageType_Node0 N_TrainMessageType_Node0 -- No --> E_TrainMessageType
indicators"}:::decision N_TrainMessageType_Node0_action["Train-specific processing is
initiated if message is
train-related, otherwise standard
processing applies"]:::main N_TrainMessageType_Node0 -- Yes --> N_TrainMessageType_Node0_action N_TrainMessageType_Node0_action --> E_TrainMessageType S_TrainMessageType --> N_TrainMessageType_Node0 N_TrainMessageType_Node0 -- No --> E_TrainMessageType
File: GCX016.cbl
GIVEN:
A message ready for type classification
WHEN:
The system evaluates message type indicators
THEN:
Train-specific processing is initiated if message is train-related, otherwise standard processing applies
β Consolidated Acceptance Criteria
- The system initializes processing arrays → arrays are configured with train-specific parameters and processing capabilities
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_InitializeArraysforTrainOperations(["Start Step"])
E_InitializeArraysforTrainOperations(["End Step"])
N_InitializeArraysforTrainOperations_Node0{"The system initializes processing
arrays"}:::decision N_InitializeArraysforTrainOperations_Node0_action["Arrays are configured with
train-specific parameters and
processing capabilities"]:::main N_InitializeArraysforTrainOperations_Node0 -- Yes --> N_InitializeArraysforTrainOperations_Node0_action N_InitializeArraysforTrainOperations_Node0_action --> E_InitializeArraysforTrainOperations S_InitializeArraysforTrainOperations --> N_InitializeArraysforTrainOperations_Node0 N_InitializeArraysforTrainOperations_Node0 -- No --> E_InitializeArraysforTrainOperations
arrays"}:::decision N_InitializeArraysforTrainOperations_Node0_action["Arrays are configured with
train-specific parameters and
processing capabilities"]:::main N_InitializeArraysforTrainOperations_Node0 -- Yes --> N_InitializeArraysforTrainOperations_Node0_action N_InitializeArraysforTrainOperations_Node0_action --> E_InitializeArraysforTrainOperations S_InitializeArraysforTrainOperations --> N_InitializeArraysforTrainOperations_Node0 N_InitializeArraysforTrainOperations_Node0 -- No --> E_InitializeArraysforTrainOperations
File: GCX016.cbl
GIVEN:
A message identified as train-related
WHEN:
The system initializes processing arrays
THEN:
- Arrays are configured with train-specific parameters
- Processing capabilities
β Consolidated Acceptance Criteria
- The system sets up segment-specific parameters → m10 manifest segment and V9 event segment parameters are properly configured for train operations
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetM10andV9SegmentParameters(["Start Step"])
E_SetM10andV9SegmentParameters(["End Step"])
N_SetM10andV9SegmentParameters_Node0{"The system sets up segment-specific
parameters"}:::decision N_SetM10andV9SegmentParameters_Node0_action["M10 manifest segment and V9 event
segment parameters are properly
configured for train operations"]:::main N_SetM10andV9SegmentParameters_Node0 -- Yes --> N_SetM10andV9SegmentParameters_Node0_action N_SetM10andV9SegmentParameters_Node0_action --> E_SetM10andV9SegmentParameters S_SetM10andV9SegmentParameters --> N_SetM10andV9SegmentParameters_Node0 N_SetM10andV9SegmentParameters_Node0 -- No --> E_SetM10andV9SegmentParameters
parameters"}:::decision N_SetM10andV9SegmentParameters_Node0_action["M10 manifest segment and V9 event
segment parameters are properly
configured for train operations"]:::main N_SetM10andV9SegmentParameters_Node0 -- Yes --> N_SetM10andV9SegmentParameters_Node0_action N_SetM10andV9SegmentParameters_Node0_action --> E_SetM10andV9SegmentParameters S_SetM10andV9SegmentParameters --> N_SetM10andV9SegmentParameters_Node0 N_SetM10andV9SegmentParameters_Node0 -- No --> E_SetM10andV9SegmentParameters
File: GCX016.cbl
GIVEN:
Train message arrays are being initialized
WHEN:
The system sets up segment-specific parameters
THEN:
- M10 manifest segment
- V9 event segment parameters are properly configured for train operations
β Consolidated Acceptance Criteria
- The system initializes processing arrays → arrays are configured with standard parameters for general message processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_InitializeArraysforStandardProcessing(["Start Step"])
E_InitializeArraysforStandardProcessing(["End Step"])
N_InitializeArraysforStandardProcessing_Node0{"The system initializes processing
arrays"}:::decision N_InitializeArraysforStandardProcessing_Node0_action["Arrays are configured with standard
parameters for general message
processing"]:::main N_InitializeArraysforStandardProcessing_Node0 -- Yes --> N_InitializeArraysforStandardProcessing_Node0_action N_InitializeArraysforStandardProcessing_Node0_action --> E_InitializeArraysforStandardProcessing S_InitializeArraysforStandardProcessing --> N_InitializeArraysforStandardProcessing_Node0 N_InitializeArraysforStandardProcessing_Node0 -- No --> E_InitializeArraysforStandardProcessing
arrays"}:::decision N_InitializeArraysforStandardProcessing_Node0_action["Arrays are configured with standard
parameters for general message
processing"]:::main N_InitializeArraysforStandardProcessing_Node0 -- Yes --> N_InitializeArraysforStandardProcessing_Node0_action N_InitializeArraysforStandardProcessing_Node0_action --> E_InitializeArraysforStandardProcessing S_InitializeArraysforStandardProcessing --> N_InitializeArraysforStandardProcessing_Node0 N_InitializeArraysforStandardProcessing_Node0 -- No --> E_InitializeArraysforStandardProcessing
File: GCX016.cbl
GIVEN:
A message identified as non-train related
WHEN:
The system initializes processing arrays
THEN:
Arrays are configured with standard parameters for general message processing
β Consolidated Acceptance Criteria
- The system checks for remaining entries → processing continues if more entries exist, otherwise array processing is completed
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MoreEntriestoProcess(["Start Step"])
E_MoreEntriestoProcess(["End Step"])
N_MoreEntriestoProcess_Node0{"The system checks for remaining
entries"}:::decision N_MoreEntriestoProcess_Node0_action["Processing continues if more
entries exist, otherwise array
processing is completed"]:::main N_MoreEntriestoProcess_Node0 -- Yes --> N_MoreEntriestoProcess_Node0_action N_MoreEntriestoProcess_Node0_action --> E_MoreEntriestoProcess S_MoreEntriestoProcess --> N_MoreEntriestoProcess_Node0 N_MoreEntriestoProcess_Node0 -- No --> E_MoreEntriestoProcess
entries"}:::decision N_MoreEntriestoProcess_Node0_action["Processing continues if more
entries exist, otherwise array
processing is completed"]:::main N_MoreEntriestoProcess_Node0 -- Yes --> N_MoreEntriestoProcess_Node0_action N_MoreEntriestoProcess_Node0_action --> E_MoreEntriestoProcess S_MoreEntriestoProcess --> N_MoreEntriestoProcess_Node0 N_MoreEntriestoProcess_Node0 -- No --> E_MoreEntriestoProcess
File: GCX016.cbl
GIVEN:
Message array processing is in progress
WHEN:
The system checks for remaining entries
THEN:
Processing continues if more entries exist, otherwise array processing is completed
β Consolidated Acceptance Criteria
- The system extracts the next segment → the next EDI segment is retrieved and prepared for validation and processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExtractNextEDISegment(["Start Step"])
E_ExtractNextEDISegment(["End Step"])
N_ExtractNextEDISegment_Node0{"The system extracts the next
segment"}:::decision N_ExtractNextEDISegment_Node0_action["The next EDI segment is retrieved
and prepared for validation and
processing"]:::main N_ExtractNextEDISegment_Node0 -- Yes --> N_ExtractNextEDISegment_Node0_action N_ExtractNextEDISegment_Node0_action --> E_ExtractNextEDISegment S_ExtractNextEDISegment --> N_ExtractNextEDISegment_Node0 N_ExtractNextEDISegment_Node0 -- No --> E_ExtractNextEDISegment
segment"}:::decision N_ExtractNextEDISegment_Node0_action["The next EDI segment is retrieved
and prepared for validation and
processing"]:::main N_ExtractNextEDISegment_Node0 -- Yes --> N_ExtractNextEDISegment_Node0_action N_ExtractNextEDISegment_Node0_action --> E_ExtractNextEDISegment S_ExtractNextEDISegment --> N_ExtractNextEDISegment_Node0 N_ExtractNextEDISegment_Node0 -- No --> E_ExtractNextEDISegment
File: GCX016.cbl
GIVEN:
More entries are available for processing
WHEN:
The system extracts the next segment
THEN:
- The next edi segment is retrieved
- Prepared for validation
- Processing
β Consolidated Acceptance Criteria
- The system validates segment structure → segment is confirmed as valid for processing or marked as invalid for error handling
- Segment structure validation is performed → the system must verify that all required fields are populated, segment length is valid, and structure conforms to EDI standards
- Segment structure validation is performed → root segment structure is validated for data integrity and completeness
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ValidateSegmentStructure(["Start Step"])
E_ValidateSegmentStructure(["End Step"])
N_ValidateSegmentStructure_Node0{"The system validates segment
structure"}:::decision N_ValidateSegmentStructure_Node0_action["Segment is confirmed as valid for
processing or marked as invalid for
error handling"]:::main N_ValidateSegmentStructure_Node0 -- Yes --> N_ValidateSegmentStructure_Node0_action N_ValidateSegmentStructure_Node0_action --> E_ValidateSegmentStructure S_ValidateSegmentStructure --> N_ValidateSegmentStructure_Node0 N_ValidateSegmentStructure_Node1{"Segment structure validation is
performed"}:::decision N_ValidateSegmentStructure_Node1_action["The system must verify that all
required fields are populated,
segment length is valid, and
structure conforms to EDI standards"]:::main N_ValidateSegmentStructure_Node1 -- Yes --> N_ValidateSegmentStructure_Node1_action N_ValidateSegmentStructure_Node1_action --> E_ValidateSegmentStructure N_ValidateSegmentStructure_Node0 -- No --> N_ValidateSegmentStructure_Node1 N_ValidateSegmentStructure_Node2{"segment structure validation is
performed"}:::decision N_ValidateSegmentStructure_Node2_action["root segment structure is validated
for data integrity and completeness"]:::main N_ValidateSegmentStructure_Node2 -- Yes --> N_ValidateSegmentStructure_Node2_action N_ValidateSegmentStructure_Node2_action --> E_ValidateSegmentStructure N_ValidateSegmentStructure_Node1 -- No --> N_ValidateSegmentStructure_Node2 N_ValidateSegmentStructure_Node2 -- No --> E_ValidateSegmentStructure
structure"}:::decision N_ValidateSegmentStructure_Node0_action["Segment is confirmed as valid for
processing or marked as invalid for
error handling"]:::main N_ValidateSegmentStructure_Node0 -- Yes --> N_ValidateSegmentStructure_Node0_action N_ValidateSegmentStructure_Node0_action --> E_ValidateSegmentStructure S_ValidateSegmentStructure --> N_ValidateSegmentStructure_Node0 N_ValidateSegmentStructure_Node1{"Segment structure validation is
performed"}:::decision N_ValidateSegmentStructure_Node1_action["The system must verify that all
required fields are populated,
segment length is valid, and
structure conforms to EDI standards"]:::main N_ValidateSegmentStructure_Node1 -- Yes --> N_ValidateSegmentStructure_Node1_action N_ValidateSegmentStructure_Node1_action --> E_ValidateSegmentStructure N_ValidateSegmentStructure_Node0 -- No --> N_ValidateSegmentStructure_Node1 N_ValidateSegmentStructure_Node2{"segment structure validation is
performed"}:::decision N_ValidateSegmentStructure_Node2_action["root segment structure is validated
for data integrity and completeness"]:::main N_ValidateSegmentStructure_Node2 -- Yes --> N_ValidateSegmentStructure_Node2_action N_ValidateSegmentStructure_Node2_action --> E_ValidateSegmentStructure N_ValidateSegmentStructure_Node1 -- No --> N_ValidateSegmentStructure_Node2 N_ValidateSegmentStructure_Node2 -- No --> E_ValidateSegmentStructure
File: GCX016.cbl
GIVEN:
An EDI segment has been extracted
WHEN:
The system validates segment structure
THEN:
Segment is confirmed as valid for processing or marked as invalid for error handling
File: GCX016.cbl
GIVEN:
Segment length information is set
WHEN:
Segment structure validation is performed
THEN:
The system must verify that all required fields are populated, segment length is valid, and structure conforms to EDI standards
File: GCX016.cbl
GIVEN:
tracking information is set
WHEN:
segment structure validation is performed
THEN:
- Root segment structure is validated for data integrity
- Completeness
β Consolidated Acceptance Criteria
- If segment validity → valid segments are queued for processing while invalid segments trigger error logging
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SegmentValid(["Start Step"])
E_SegmentValid(["End Step"])
N_SegmentValid_Node0{"The system evaluates segment
validity"}:::decision N_SegmentValid_Node0_action["Valid segments are queued for
processing while invalid segments
trigger error logging"]:::main N_SegmentValid_Node0 -- Yes --> N_SegmentValid_Node0_action N_SegmentValid_Node0_action --> E_SegmentValid S_SegmentValid --> N_SegmentValid_Node0 N_SegmentValid_Node0 -- No --> E_SegmentValid
validity"}:::decision N_SegmentValid_Node0_action["Valid segments are queued for
processing while invalid segments
trigger error logging"]:::main N_SegmentValid_Node0 -- Yes --> N_SegmentValid_Node0_action N_SegmentValid_Node0_action --> E_SegmentValid S_SegmentValid --> N_SegmentValid_Node0 N_SegmentValid_Node0 -- No --> E_SegmentValid
File: GCX016.cbl
GIVEN:
A segment has undergone structure validation
WHEN:
The system evaluates segment validity
THEN:
Valid segments are queued for processing while invalid segments trigger error logging
β Consolidated Acceptance Criteria
- The system adds the segment to processing queue → segment is queued for business processing and made available for subsequent operations
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AddSegmenttoProcessingQueue(["Start Step"])
E_AddSegmenttoProcessingQueue(["End Step"])
N_AddSegmenttoProcessingQueue_Node0{"The system adds the segment to
processing queue"}:::decision N_AddSegmenttoProcessingQueue_Node0_action["Segment is queued for business
processing and made available for
subsequent operations"]:::main N_AddSegmenttoProcessingQueue_Node0 -- Yes --> N_AddSegmenttoProcessingQueue_Node0_action N_AddSegmenttoProcessingQueue_Node0_action --> E_AddSegmenttoProcessingQueue S_AddSegmenttoProcessingQueue --> N_AddSegmenttoProcessingQueue_Node0 N_AddSegmenttoProcessingQueue_Node0 -- No --> E_AddSegmenttoProcessingQueue
processing queue"}:::decision N_AddSegmenttoProcessingQueue_Node0_action["Segment is queued for business
processing and made available for
subsequent operations"]:::main N_AddSegmenttoProcessingQueue_Node0 -- Yes --> N_AddSegmenttoProcessingQueue_Node0_action N_AddSegmenttoProcessingQueue_Node0_action --> E_AddSegmenttoProcessingQueue S_AddSegmenttoProcessingQueue --> N_AddSegmenttoProcessingQueue_Node0 N_AddSegmenttoProcessingQueue_Node0 -- No --> E_AddSegmenttoProcessingQueue
File: GCX016.cbl
GIVEN:
A segment has been validated as structurally correct
WHEN:
The system adds the segment to processing queue
THEN:
- Segment is queued for business processing
- Made available for subsequent operations
β Consolidated Acceptance Criteria
- The system processes the invalid segment → error information is logged with segment details and processing continues with next entry
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogInvalidSegmentError(["Start Step"])
E_LogInvalidSegmentError(["End Step"])
N_LogInvalidSegmentError_Node0{"The system processes the invalid
segment"}:::decision N_LogInvalidSegmentError_Node0_action["Error information is logged with
segment details and processing
continues with next entry"]:::exclusion N_LogInvalidSegmentError_Node0 -- Yes -->|Alternative| N_LogInvalidSegmentError_Node0_action N_LogInvalidSegmentError_Node0_action --> E_LogInvalidSegmentError S_LogInvalidSegmentError --> N_LogInvalidSegmentError_Node0 N_LogInvalidSegmentError_Node0 -- No --> E_LogInvalidSegmentError
segment"}:::decision N_LogInvalidSegmentError_Node0_action["Error information is logged with
segment details and processing
continues with next entry"]:::exclusion N_LogInvalidSegmentError_Node0 -- Yes -->|Alternative| N_LogInvalidSegmentError_Node0_action N_LogInvalidSegmentError_Node0_action --> E_LogInvalidSegmentError S_LogInvalidSegmentError --> N_LogInvalidSegmentError_Node0 N_LogInvalidSegmentError_Node0 -- No --> E_LogInvalidSegmentError
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
A segment has failed validation checks
WHEN:
The system processes the invalid segment
THEN:
- Error information is logged with segment details
- Processing continues with next entry
β Consolidated Acceptance Criteria
- The system completes array processing → processing results are consolidated and prepared for return to calling process
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CompleteArrayProcessing(["Start Step"])
E_CompleteArrayProcessing(["End Step"])
N_CompleteArrayProcessing_Node0{"The system completes array
processing"}:::decision N_CompleteArrayProcessing_Node0_action["Processing results are consolidated
and prepared for return to calling
process"]:::main N_CompleteArrayProcessing_Node0 -- Yes --> N_CompleteArrayProcessing_Node0_action N_CompleteArrayProcessing_Node0_action --> E_CompleteArrayProcessing S_CompleteArrayProcessing --> N_CompleteArrayProcessing_Node0 N_CompleteArrayProcessing_Node0 -- No --> E_CompleteArrayProcessing
processing"}:::decision N_CompleteArrayProcessing_Node0_action["Processing results are consolidated
and prepared for return to calling
process"]:::main N_CompleteArrayProcessing_Node0 -- Yes --> N_CompleteArrayProcessing_Node0_action N_CompleteArrayProcessing_Node0_action --> E_CompleteArrayProcessing S_CompleteArrayProcessing --> N_CompleteArrayProcessing_Node0 N_CompleteArrayProcessing_Node0 -- No --> E_CompleteArrayProcessing
File: GCX016.cbl
GIVEN:
All message entries have been processed
WHEN:
The system completes array processing
THEN:
- Processing results are consolidated
- Prepared for return to calling process
β Consolidated Acceptance Criteria
- The system returns processing results → processed message data and status information are returned to the calling process
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ReturnProcessedMessageData(["Start Step"])
E_ReturnProcessedMessageData(["End Step"])
N_ReturnProcessedMessageData_Node0{"The system returns processing
results"}:::decision N_ReturnProcessedMessageData_Node0_action["Processed message data and status
information are returned to the
calling process"]:::main N_ReturnProcessedMessageData_Node0 -- Yes --> N_ReturnProcessedMessageData_Node0_action N_ReturnProcessedMessageData_Node0_action --> E_ReturnProcessedMessageData S_ReturnProcessedMessageData --> N_ReturnProcessedMessageData_Node0 N_ReturnProcessedMessageData_Node0 -- No --> E_ReturnProcessedMessageData
results"}:::decision N_ReturnProcessedMessageData_Node0_action["Processed message data and status
information are returned to the
calling process"]:::main N_ReturnProcessedMessageData_Node0 -- Yes --> N_ReturnProcessedMessageData_Node0_action N_ReturnProcessedMessageData_Node0_action --> E_ReturnProcessedMessageData S_ReturnProcessedMessageData --> N_ReturnProcessedMessageData_Node0 N_ReturnProcessedMessageData_Node0 -- No --> E_ReturnProcessedMessageData
File: GCX016.cbl
GIVEN:
Message array processing has been completed
WHEN:
The system returns processing results
THEN:
- Processed message data
- Status information are returned to the calling process
β Consolidated Acceptance Criteria
- The system handles the error condition → error information is captured and appropriate error response is returned to calling process
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_HandleArrayProcessingError(["Start Step"])
E_HandleArrayProcessingError(["End Step"])
N_HandleArrayProcessingError_Node0{"The system handles the error
condition"}:::decision N_HandleArrayProcessingError_Node0_action["Error information is captured and
appropriate error response is
returned to calling process"]:::exclusion N_HandleArrayProcessingError_Node0 -- Yes -->|Alternative| N_HandleArrayProcessingError_Node0_action N_HandleArrayProcessingError_Node0_action --> E_HandleArrayProcessingError S_HandleArrayProcessingError --> N_HandleArrayProcessingError_Node0 N_HandleArrayProcessingError_Node0 -- No --> E_HandleArrayProcessingError
condition"}:::decision N_HandleArrayProcessingError_Node0_action["Error information is captured and
appropriate error response is
returned to calling process"]:::exclusion N_HandleArrayProcessingError_Node0 -- Yes -->|Alternative| N_HandleArrayProcessingError_Node0_action N_HandleArrayProcessingError_Node0_action --> E_HandleArrayProcessingError S_HandleArrayProcessingError --> N_HandleArrayProcessingError_Node0 N_HandleArrayProcessingError_Node0 -- No --> E_HandleArrayProcessingError
File: GCX016.cbl
GIVEN:
An error condition has occurred during array processing
WHEN:
The system handles the error condition
THEN:
- Error information is captured
- Appropriate error response is returned to calling process
β Consolidated Acceptance Criteria
- The message contains lead manifest information with associated follower manifests → the system initiates multi-manifest processing workflow
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MultimanifestProcessingRequired(["Start Step"])
E_MultimanifestProcessingRequired(["End Step"])
N_MultimanifestProcessingRequired_Node0{"The message contains lead manifest
information with associated follower
manifests"}:::decision N_MultimanifestProcessingRequired_Node0_action["The system initiates multi-manifest
processing workflow"]:::main N_MultimanifestProcessingRequired_Node0 -- Yes --> N_MultimanifestProcessingRequired_Node0_action N_MultimanifestProcessingRequired_Node0_action --> E_MultimanifestProcessingRequired S_MultimanifestProcessingRequired --> N_MultimanifestProcessingRequired_Node0 N_MultimanifestProcessingRequired_Node0 -- No --> E_MultimanifestProcessingRequired
information with associated follower
manifests"}:::decision N_MultimanifestProcessingRequired_Node0_action["The system initiates multi-manifest
processing workflow"]:::main N_MultimanifestProcessingRequired_Node0 -- Yes --> N_MultimanifestProcessingRequired_Node0_action N_MultimanifestProcessingRequired_Node0_action --> E_MultimanifestProcessingRequired S_MultimanifestProcessingRequired --> N_MultimanifestProcessingRequired_Node0 N_MultimanifestProcessingRequired_Node0 -- No --> E_MultimanifestProcessingRequired
File: GCX016.cbl
GIVEN:
A message has been classified for processing
WHEN:
The message contains lead manifest information with associated follower manifests
THEN:
The system initiates multi-manifest processing workflow
β Consolidated Acceptance Criteria
- The message contains train arrival, cancellation, or status change information → the system routes the message to train-specific processing workflow
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_TrainMessageProcessingRequired(["Start Step"])
E_TrainMessageProcessingRequired(["End Step"])
N_TrainMessageProcessingRequired_Node0{"The message contains train arrival,
cancellation, or status change
information"}:::decision N_TrainMessageProcessingRequired_Node0_action["The system routes the message to
train-specific processing workflow"]:::main N_TrainMessageProcessingRequired_Node0 -- Yes --> N_TrainMessageProcessingRequired_Node0_action N_TrainMessageProcessingRequired_Node0_action --> E_TrainMessageProcessingRequired S_TrainMessageProcessingRequired --> N_TrainMessageProcessingRequired_Node0 N_TrainMessageProcessingRequired_Node0 -- No --> E_TrainMessageProcessingRequired
cancellation, or status change
information"}:::decision N_TrainMessageProcessingRequired_Node0_action["The system routes the message to
train-specific processing workflow"]:::main N_TrainMessageProcessingRequired_Node0 -- Yes --> N_TrainMessageProcessingRequired_Node0_action N_TrainMessageProcessingRequired_Node0_action --> E_TrainMessageProcessingRequired S_TrainMessageProcessingRequired --> N_TrainMessageProcessingRequired_Node0 N_TrainMessageProcessingRequired_Node0 -- No --> E_TrainMessageProcessingRequired
File: GCX016.cbl
GIVEN:
A message has been classified as train operations
WHEN:
The message contains train arrival, cancellation, or status change information
THEN:
The system routes the message to train-specific processing workflow
β Consolidated Acceptance Criteria
- The message is neither multi-manifest nor train operations type → the system routes the message to standard processing workflow
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_StandardMessageProcessingRequired(["Start Step"])
E_StandardMessageProcessingRequired(["End Step"])
N_StandardMessageProcessingRequired_Node0{"The message is neither
multi-manifest nor train operations
type"}:::decision N_StandardMessageProcessingRequired_Node0_action["The system routes the message to
standard processing workflow"]:::main N_StandardMessageProcessingRequired_Node0 -- Yes --> N_StandardMessageProcessingRequired_Node0_action N_StandardMessageProcessingRequired_Node0_action --> E_StandardMessageProcessingRequired S_StandardMessageProcessingRequired --> N_StandardMessageProcessingRequired_Node0 N_StandardMessageProcessingRequired_Node0 -- No --> E_StandardMessageProcessingRequired
multi-manifest nor train operations
type"}:::decision N_StandardMessageProcessingRequired_Node0_action["The system routes the message to
standard processing workflow"]:::main N_StandardMessageProcessingRequired_Node0 -- Yes --> N_StandardMessageProcessingRequired_Node0_action N_StandardMessageProcessingRequired_Node0_action --> E_StandardMessageProcessingRequired S_StandardMessageProcessingRequired --> N_StandardMessageProcessingRequired_Node0 N_StandardMessageProcessingRequired_Node0 -- No --> E_StandardMessageProcessingRequired
File: GCX016.cbl
GIVEN:
A message has been classified for processing
WHEN:
The message is neither multi-manifest nor train operations type
THEN:
The system routes the message to standard processing workflow
β Consolidated Acceptance Criteria
- The system searches for related follower manifests using the lead manifest CCN key → all associated follower manifests are identified and queued for processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IdentifyFollowerManifests(["Start Step"])
E_IdentifyFollowerManifests(["End Step"])
N_IdentifyFollowerManifests_Node0{"The system searches for related
follower manifests using the lead
manifest CCN key"}:::decision N_IdentifyFollowerManifests_Node0_action["All associated follower manifests
are identified and queued for
processing"]:::main N_IdentifyFollowerManifests_Node0 -- Yes --> N_IdentifyFollowerManifests_Node0_action N_IdentifyFollowerManifests_Node0_action --> E_IdentifyFollowerManifests S_IdentifyFollowerManifests --> N_IdentifyFollowerManifests_Node0 N_IdentifyFollowerManifests_Node0 -- No --> E_IdentifyFollowerManifests
follower manifests using the lead
manifest CCN key"}:::decision N_IdentifyFollowerManifests_Node0_action["All associated follower manifests
are identified and queued for
processing"]:::main N_IdentifyFollowerManifests_Node0 -- Yes --> N_IdentifyFollowerManifests_Node0_action N_IdentifyFollowerManifests_Node0_action --> E_IdentifyFollowerManifests S_IdentifyFollowerManifests --> N_IdentifyFollowerManifests_Node0 N_IdentifyFollowerManifests_Node0 -- No --> E_IdentifyFollowerManifests
File: GCX016.cbl
GIVEN:
A lead manifest requires multi-manifest processing
WHEN:
The system searches for related follower manifests using the lead manifest CCN key
THEN:
- All associated follower manifests are identified
- Queued for processing
β Consolidated Acceptance Criteria
- The system prepares transaction messages for each follower → each follower manifest gets an EDI 350 message with action code '350', disposition code, quantity, and entry number from the X4 segment
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_FormatEDI350MessageforEachFollower(["Start Step"])
E_FormatEDI350MessageforEachFollower(["End Step"])
N_FormatEDI350MessageforEachFollower_Node0{"The system prepares transaction
messages for each follower"}:::decision N_FormatEDI350MessageforEachFollower_Node0_action["Each follower manifest gets an EDI
350 message with action code 350 ,
disposition code, quantity, and
entry number from the X4 segment"]:::main N_FormatEDI350MessageforEachFollower_Node0 -- Yes --> N_FormatEDI350MessageforEachFollower_Node0_action N_FormatEDI350MessageforEachFollower_Node0_action --> E_FormatEDI350MessageforEachFollower S_FormatEDI350MessageforEachFollower --> N_FormatEDI350MessageforEachFollower_Node0 N_FormatEDI350MessageforEachFollower_Node0 -- No --> E_FormatEDI350MessageforEachFollower
messages for each follower"}:::decision N_FormatEDI350MessageforEachFollower_Node0_action["Each follower manifest gets an EDI
350 message with action code 350 ,
disposition code, quantity, and
entry number from the X4 segment"]:::main N_FormatEDI350MessageforEachFollower_Node0 -- Yes --> N_FormatEDI350MessageforEachFollower_Node0_action N_FormatEDI350MessageforEachFollower_Node0_action --> E_FormatEDI350MessageforEachFollower S_FormatEDI350MessageforEachFollower --> N_FormatEDI350MessageforEachFollower_Node0 N_FormatEDI350MessageforEachFollower_Node0 -- No --> E_FormatEDI350MessageforEachFollower
File: GCX016.cbl
GIVEN:
Follower manifests have been identified for processing
WHEN:
The system prepares transaction messages for each follower
THEN:
Each follower manifest gets an EDI 350 message with action code '350', disposition code, quantity, and entry number from the X4 segment
β Consolidated Acceptance Criteria
- The system prepares train arrival or cancellation parameters → train message parameters are formatted with vessel name, event codes, and timing information
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_PrepareTrainArrivalCancellationMessage(["Start Step"])
E_PrepareTrainArrivalCancellationMessage(["End Step"])
N_PrepareTrainArrivalCancellationMessage_Node0{"The system prepares train arrival
or cancellation parameters"}:::decision N_PrepareTrainArrivalCancellationMessage_Node0_action["Train message parameters are
formatted with vessel name, event
codes, and timing information"]:::main N_PrepareTrainArrivalCancellationMessage_Node0 -- Yes --> N_PrepareTrainArrivalCancellationMessage_Node0_action N_PrepareTrainArrivalCancellationMessage_Node0_action --> E_PrepareTrainArrivalCancellationMessage S_PrepareTrainArrivalCancellationMessage --> N_PrepareTrainArrivalCancellationMessage_Node0 N_PrepareTrainArrivalCancellationMessage_Node0 -- No --> E_PrepareTrainArrivalCancellationMessage
or cancellation parameters"}:::decision N_PrepareTrainArrivalCancellationMessage_Node0_action["Train message parameters are
formatted with vessel name, event
codes, and timing information"]:::main N_PrepareTrainArrivalCancellationMessage_Node0 -- Yes --> N_PrepareTrainArrivalCancellationMessage_Node0_action N_PrepareTrainArrivalCancellationMessage_Node0_action --> E_PrepareTrainArrivalCancellationMessage S_PrepareTrainArrivalCancellationMessage --> N_PrepareTrainArrivalCancellationMessage_Node0 N_PrepareTrainArrivalCancellationMessage_Node0 -- No --> E_PrepareTrainArrivalCancellationMessage
File: GCX016.cbl
GIVEN:
A train operations message requires processing
WHEN:
The system prepares train arrival or cancellation parameters
THEN:
Train message parameters are formatted with vessel name, event codes, and timing information
β Consolidated Acceptance Criteria
- The system initializes message array parameters → message array is populated with message segments, processing flags, and transaction identifiers
- System initializes message array parameters → message arrays are configured with proper parameters for EDI message storage
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_InitializeMessageArrayParameters(["Start Step"])
E_InitializeMessageArrayParameters(["End Step"])
N_InitializeMessageArrayParameters_Node0{"The system initializes message
array parameters"}:::decision N_InitializeMessageArrayParameters_Node0_action["Message array is populated with
message segments, processing flags,
and transaction identifiers"]:::main N_InitializeMessageArrayParameters_Node0 -- Yes --> N_InitializeMessageArrayParameters_Node0_action N_InitializeMessageArrayParameters_Node0_action --> E_InitializeMessageArrayParameters S_InitializeMessageArrayParameters --> N_InitializeMessageArrayParameters_Node0 N_InitializeMessageArrayParameters_Node1{"System initializes message array
parameters"}:::decision N_InitializeMessageArrayParameters_Node1_action["Message arrays are configured with
proper parameters for EDI message
storage"]:::main N_InitializeMessageArrayParameters_Node1 -- Yes --> N_InitializeMessageArrayParameters_Node1_action N_InitializeMessageArrayParameters_Node1_action --> E_InitializeMessageArrayParameters N_InitializeMessageArrayParameters_Node0 -- No --> N_InitializeMessageArrayParameters_Node1 N_InitializeMessageArrayParameters_Node1 -- No --> E_InitializeMessageArrayParameters
array parameters"}:::decision N_InitializeMessageArrayParameters_Node0_action["Message array is populated with
message segments, processing flags,
and transaction identifiers"]:::main N_InitializeMessageArrayParameters_Node0 -- Yes --> N_InitializeMessageArrayParameters_Node0_action N_InitializeMessageArrayParameters_Node0_action --> E_InitializeMessageArrayParameters S_InitializeMessageArrayParameters --> N_InitializeMessageArrayParameters_Node0 N_InitializeMessageArrayParameters_Node1{"System initializes message array
parameters"}:::decision N_InitializeMessageArrayParameters_Node1_action["Message arrays are configured with
proper parameters for EDI message
storage"]:::main N_InitializeMessageArrayParameters_Node1 -- Yes --> N_InitializeMessageArrayParameters_Node1_action N_InitializeMessageArrayParameters_Node1_action --> E_InitializeMessageArrayParameters N_InitializeMessageArrayParameters_Node0 -- No --> N_InitializeMessageArrayParameters_Node1 N_InitializeMessageArrayParameters_Node1 -- No --> E_InitializeMessageArrayParameters
File: GCX016.cbl
GIVEN:
A message requires transaction spawning
WHEN:
The system initializes message array parameters
THEN:
Message array is populated with message segments, processing flags, and transaction identifiers
File: GCX016.cbl
GIVEN:
Queue is ready for message processing
WHEN:
System initializes message array parameters
THEN:
Message arrays are configured with proper parameters for EDI message storage
β Consolidated Acceptance Criteria
- The system sets transaction parameters for GCT0161E spawning → transaction parameters are configured with message type, processing mode, and target transaction identifier
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetTransactionParameters(["Start Step"])
E_SetTransactionParameters(["End Step"])
N_SetTransactionParameters_Node0{"The system sets transaction
parameters for GCT0161E spawning"}:::decision N_SetTransactionParameters_Node0_action["Transaction parameters are
configured with message type,
processing mode, and target
transaction identifier"]:::main N_SetTransactionParameters_Node0 -- Yes --> N_SetTransactionParameters_Node0_action N_SetTransactionParameters_Node0_action --> E_SetTransactionParameters S_SetTransactionParameters --> N_SetTransactionParameters_Node0 N_SetTransactionParameters_Node0 -- No --> E_SetTransactionParameters
parameters for GCT0161E spawning"}:::decision N_SetTransactionParameters_Node0_action["Transaction parameters are
configured with message type,
processing mode, and target
transaction identifier"]:::main N_SetTransactionParameters_Node0 -- Yes --> N_SetTransactionParameters_Node0_action N_SetTransactionParameters_Node0_action --> E_SetTransactionParameters S_SetTransactionParameters --> N_SetTransactionParameters_Node0 N_SetTransactionParameters_Node0 -- No --> E_SetTransactionParameters
File: GCX016.cbl
GIVEN:
Message processing parameters have been prepared
WHEN:
The system sets transaction parameters for GCT0161E spawning
THEN:
Transaction parameters are configured with message type, processing mode, and target transaction identifier
β Consolidated Acceptance Criteria
- The system attempts to spawn GCT0161E transaction → gCT0161E transaction is spawned with the prepared message parameters and processing begins
- The system spawns the GCT0161E transaction → the follower manifest is submitted for independent cargo processing with the prepared message data
- The system is ready to process the follower manifest → the system spawns a GCT0161E transaction with the prepared message array and parameters
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SpawnGCT0161ETransaction(["Start Step"])
E_SpawnGCT0161ETransaction(["End Step"])
N_SpawnGCT0161ETransaction_Node0{"The system attempts to spawn
GCT0161E transaction"}:::decision N_SpawnGCT0161ETransaction_Node0_action["GCT0161E transaction is spawned
with the prepared message parameters
and processing begins"]:::main N_SpawnGCT0161ETransaction_Node0 -- Yes --> N_SpawnGCT0161ETransaction_Node0_action N_SpawnGCT0161ETransaction_Node0_action --> E_SpawnGCT0161ETransaction S_SpawnGCT0161ETransaction --> N_SpawnGCT0161ETransaction_Node0 N_SpawnGCT0161ETransaction_Node1{"The system spawns the GCT0161E
transaction"}:::decision N_SpawnGCT0161ETransaction_Node1_action["The follower manifest is submitted
for independent cargo processing
with the prepared message data"]:::main N_SpawnGCT0161ETransaction_Node1 -- Yes --> N_SpawnGCT0161ETransaction_Node1_action N_SpawnGCT0161ETransaction_Node1_action --> E_SpawnGCT0161ETransaction N_SpawnGCT0161ETransaction_Node0 -- No --> N_SpawnGCT0161ETransaction_Node1 N_SpawnGCT0161ETransaction_Node2{"The system is ready to process the
follower manifest"}:::decision N_SpawnGCT0161ETransaction_Node2_action["The system spawns a GCT0161E
transaction with the prepared
message array and parameters"]:::main N_SpawnGCT0161ETransaction_Node2 -- Yes --> N_SpawnGCT0161ETransaction_Node2_action N_SpawnGCT0161ETransaction_Node2_action --> E_SpawnGCT0161ETransaction N_SpawnGCT0161ETransaction_Node1 -- No --> N_SpawnGCT0161ETransaction_Node2 N_SpawnGCT0161ETransaction_Node2 -- No --> E_SpawnGCT0161ETransaction
GCT0161E transaction"}:::decision N_SpawnGCT0161ETransaction_Node0_action["GCT0161E transaction is spawned
with the prepared message parameters
and processing begins"]:::main N_SpawnGCT0161ETransaction_Node0 -- Yes --> N_SpawnGCT0161ETransaction_Node0_action N_SpawnGCT0161ETransaction_Node0_action --> E_SpawnGCT0161ETransaction S_SpawnGCT0161ETransaction --> N_SpawnGCT0161ETransaction_Node0 N_SpawnGCT0161ETransaction_Node1{"The system spawns the GCT0161E
transaction"}:::decision N_SpawnGCT0161ETransaction_Node1_action["The follower manifest is submitted
for independent cargo processing
with the prepared message data"]:::main N_SpawnGCT0161ETransaction_Node1 -- Yes --> N_SpawnGCT0161ETransaction_Node1_action N_SpawnGCT0161ETransaction_Node1_action --> E_SpawnGCT0161ETransaction N_SpawnGCT0161ETransaction_Node0 -- No --> N_SpawnGCT0161ETransaction_Node1 N_SpawnGCT0161ETransaction_Node2{"The system is ready to process the
follower manifest"}:::decision N_SpawnGCT0161ETransaction_Node2_action["The system spawns a GCT0161E
transaction with the prepared
message array and parameters"]:::main N_SpawnGCT0161ETransaction_Node2 -- Yes --> N_SpawnGCT0161ETransaction_Node2_action N_SpawnGCT0161ETransaction_Node2_action --> E_SpawnGCT0161ETransaction N_SpawnGCT0161ETransaction_Node1 -- No --> N_SpawnGCT0161ETransaction_Node2 N_SpawnGCT0161ETransaction_Node2 -- No --> E_SpawnGCT0161ETransaction
File: GCX016.cbl
GIVEN:
Transaction parameters have been configured
WHEN:
The system attempts to spawn GCT0161E transaction
THEN:
- Gct0161e transaction is spawned with the prepared message parameters
- Processing begins
File: GCX016.cbl
GIVEN:
EDI 350 message is prepared for a follower manifest
WHEN:
The system spawns the GCT0161E transaction
THEN:
The follower manifest is submitted for independent cargo processing with the prepared message data
File: GCX016.cbl
GIVEN:
Follower manifest parameters have been configured
WHEN:
The system is ready to process the follower manifest
THEN:
- The system spawns a gct0161e transaction with the prepared message array
- Parameters
β Consolidated Acceptance Criteria
- The transaction spawning completes successfully → the system confirms successful spawning and continues with next processing step
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_TransactionSuccessfullySpawned(["Start Step"])
E_TransactionSuccessfullySpawned(["End Step"])
N_TransactionSuccessfullySpawned_Node0{"The transaction spawning completes
successfully"}:::decision N_TransactionSuccessfullySpawned_Node0_action["The system confirms successful
spawning and continues with next
processing step"]:::main N_TransactionSuccessfullySpawned_Node0 -- Yes --> N_TransactionSuccessfullySpawned_Node0_action N_TransactionSuccessfullySpawned_Node0_action --> E_TransactionSuccessfullySpawned S_TransactionSuccessfullySpawned --> N_TransactionSuccessfullySpawned_Node0 N_TransactionSuccessfullySpawned_Node0 -- No --> E_TransactionSuccessfullySpawned
successfully"}:::decision N_TransactionSuccessfullySpawned_Node0_action["The system confirms successful
spawning and continues with next
processing step"]:::main N_TransactionSuccessfullySpawned_Node0 -- Yes --> N_TransactionSuccessfullySpawned_Node0_action N_TransactionSuccessfullySpawned_Node0_action --> E_TransactionSuccessfullySpawned S_TransactionSuccessfullySpawned --> N_TransactionSuccessfullySpawned_Node0 N_TransactionSuccessfullySpawned_Node0 -- No --> E_TransactionSuccessfullySpawned
File: GCX016.cbl
GIVEN:
GCT0161E transaction spawning has been attempted
WHEN:
The transaction spawning completes successfully
THEN:
- The system confirms successful spawning
- Continues with next processing step
β Consolidated Acceptance Criteria
- The system checks for additional unprocessed follower manifests → if more manifests exist, processing continues; otherwise, multi-manifest processing completes
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MoreManifeststoProcess(["Start Step"])
E_MoreManifeststoProcess(["End Step"])
N_MoreManifeststoProcess_Node0{"The system checks for additional
unprocessed follower manifests"}:::decision N_MoreManifeststoProcess_Node0_action["If more manifests exist, processing
continues otherwise, multi-manifest
processing completes"]:::main N_MoreManifeststoProcess_Node0 -- Yes --> N_MoreManifeststoProcess_Node0_action N_MoreManifeststoProcess_Node0_action --> E_MoreManifeststoProcess S_MoreManifeststoProcess --> N_MoreManifeststoProcess_Node0 N_MoreManifeststoProcess_Node0 -- No --> E_MoreManifeststoProcess
unprocessed follower manifests"}:::decision N_MoreManifeststoProcess_Node0_action["If more manifests exist, processing
continues otherwise, multi-manifest
processing completes"]:::main N_MoreManifeststoProcess_Node0 -- Yes --> N_MoreManifeststoProcess_Node0_action N_MoreManifeststoProcess_Node0_action --> E_MoreManifeststoProcess S_MoreManifeststoProcess --> N_MoreManifeststoProcess_Node0 N_MoreManifeststoProcess_Node0 -- No --> E_MoreManifeststoProcess
File: GCX016.cbl
GIVEN:
A manifest has been successfully processed in multi-manifest mode
WHEN:
The system checks for additional unprocessed follower manifests
THEN:
If more manifests exist, processing continues; otherwise, multi-manifest processing completes
β Consolidated Acceptance Criteria
- The transaction spawning fails due to system or resource constraints → the system captures the error condition and routes to error handling process
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ErrorinTransactionSpawning(["Start Step"])
E_ErrorinTransactionSpawning(["End Step"])
N_ErrorinTransactionSpawning_Node0{"The transaction spawning fails due
to system or resource constraints"}:::decision N_ErrorinTransactionSpawning_Node0_action["The system captures the error
condition and routes to error
handling process"]:::main N_ErrorinTransactionSpawning_Node0 -- Yes --> N_ErrorinTransactionSpawning_Node0_action N_ErrorinTransactionSpawning_Node0_action --> E_ErrorinTransactionSpawning S_ErrorinTransactionSpawning --> N_ErrorinTransactionSpawning_Node0 N_ErrorinTransactionSpawning_Node0 -- No --> E_ErrorinTransactionSpawning
to system or resource constraints"}:::decision N_ErrorinTransactionSpawning_Node0_action["The system captures the error
condition and routes to error
handling process"]:::main N_ErrorinTransactionSpawning_Node0 -- Yes --> N_ErrorinTransactionSpawning_Node0_action N_ErrorinTransactionSpawning_Node0_action --> E_ErrorinTransactionSpawning S_ErrorinTransactionSpawning --> N_ErrorinTransactionSpawning_Node0 N_ErrorinTransactionSpawning_Node0 -- No --> E_ErrorinTransactionSpawning
File: GCX016.cbl
GIVEN:
GCT0161E transaction spawning has been attempted
WHEN:
The transaction spawning fails due to system or resource constraints
THEN:
- The system captures the error condition
- Routes to error handling process
β Consolidated Acceptance Criteria
- The system processes the error condition → the error is logged with appropriate details and processing continues with the next message
- System handles the error condition → error is logged and system continues to check for more messages
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogErrorandContinue(["Start Step"])
E_LogErrorandContinue(["End Step"])
N_LogErrorandContinue_Node0{"The system processes the error
condition"}:::decision N_LogErrorandContinue_Node0_action["The error is logged with
appropriate details and processing
continues with the next message"]:::exclusion N_LogErrorandContinue_Node0 -- Yes -->|Alternative| N_LogErrorandContinue_Node0_action N_LogErrorandContinue_Node0_action --> E_LogErrorandContinue S_LogErrorandContinue --> N_LogErrorandContinue_Node0 N_LogErrorandContinue_Node1{"system handles the error condition"}:::decision N_LogErrorandContinue_Node1_action["error is logged and system
continues to check for more messages"]:::exclusion N_LogErrorandContinue_Node1 -- Yes -->|Alternative| N_LogErrorandContinue_Node1_action N_LogErrorandContinue_Node1_action --> E_LogErrorandContinue N_LogErrorandContinue_Node0 -- No --> N_LogErrorandContinue_Node1 N_LogErrorandContinue_Node1 -- No --> E_LogErrorandContinue
condition"}:::decision N_LogErrorandContinue_Node0_action["The error is logged with
appropriate details and processing
continues with the next message"]:::exclusion N_LogErrorandContinue_Node0 -- Yes -->|Alternative| N_LogErrorandContinue_Node0_action N_LogErrorandContinue_Node0_action --> E_LogErrorandContinue S_LogErrorandContinue --> N_LogErrorandContinue_Node0 N_LogErrorandContinue_Node1{"system handles the error condition"}:::decision N_LogErrorandContinue_Node1_action["error is logged and system
continues to check for more messages"]:::exclusion N_LogErrorandContinue_Node1 -- Yes -->|Alternative| N_LogErrorandContinue_Node1_action N_LogErrorandContinue_Node1_action --> E_LogErrorandContinue N_LogErrorandContinue_Node0 -- No --> N_LogErrorandContinue_Node1 N_LogErrorandContinue_Node1 -- No --> E_LogErrorandContinue
File: GCX016.cbl
GIVEN:
A transaction spawning error has occurred
WHEN:
The system processes the error condition
THEN:
- The error is logged with appropriate details
- Processing continues with the next message
File: GCX016.cbl
GIVEN:
MQ connection error or message processing error occurs
WHEN:
system handles the error condition
THEN:
- Error is logged
- System continues to check for more messages
β Consolidated Acceptance Criteria
- The system is ready to process the next message → processing continues with the next available message from the queue
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ContinuewithNextMessage(["Start Step"])
E_ContinuewithNextMessage(["End Step"])
N_ContinuewithNextMessage_Node0{"The system is ready to process the
next message"}:::decision N_ContinuewithNextMessage_Node0_action["Processing continues with the next
available message from the queue"]:::main N_ContinuewithNextMessage_Node0 -- Yes --> N_ContinuewithNextMessage_Node0_action N_ContinuewithNextMessage_Node0_action --> E_ContinuewithNextMessage S_ContinuewithNextMessage --> N_ContinuewithNextMessage_Node0 N_ContinuewithNextMessage_Node0 -- No --> E_ContinuewithNextMessage
next message"}:::decision N_ContinuewithNextMessage_Node0_action["Processing continues with the next
available message from the queue"]:::main N_ContinuewithNextMessage_Node0 -- Yes --> N_ContinuewithNextMessage_Node0_action N_ContinuewithNextMessage_Node0_action --> E_ContinuewithNextMessage S_ContinuewithNextMessage --> N_ContinuewithNextMessage_Node0 N_ContinuewithNextMessage_Node0 -- No --> E_ContinuewithNextMessage
File: GCX016.cbl
GIVEN:
Current message processing has completed successfully or error has been handled
WHEN:
The system is ready to process the next message
THEN:
Processing continues with the next available message from the queue
β Consolidated Acceptance Criteria
- The system processes the message queue → the EDI shipment request is received and made available for processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ReceiveEDIShipmentRequest(["Start Step"])
E_ReceiveEDIShipmentRequest(["End Step"])
N_ReceiveEDIShipmentRequest_Node0{"The system processes the message
queue"}:::decision N_ReceiveEDIShipmentRequest_Node0_action["The EDI shipment request is
received and made available for
processing"]:::main N_ReceiveEDIShipmentRequest_Node0 -- Yes --> N_ReceiveEDIShipmentRequest_Node0_action N_ReceiveEDIShipmentRequest_Node0_action --> E_ReceiveEDIShipmentRequest S_ReceiveEDIShipmentRequest --> N_ReceiveEDIShipmentRequest_Node0 N_ReceiveEDIShipmentRequest_Node0 -- No --> E_ReceiveEDIShipmentRequest
queue"}:::decision N_ReceiveEDIShipmentRequest_Node0_action["The EDI shipment request is
received and made available for
processing"]:::main N_ReceiveEDIShipmentRequest_Node0 -- Yes --> N_ReceiveEDIShipmentRequest_Node0_action N_ReceiveEDIShipmentRequest_Node0_action --> E_ReceiveEDIShipmentRequest S_ReceiveEDIShipmentRequest --> N_ReceiveEDIShipmentRequest_Node0 N_ReceiveEDIShipmentRequest_Node0 -- No --> E_ReceiveEDIShipmentRequest
File: GCX016.cbl
GIVEN:
An EDI message is available in the message queue
WHEN:
The system processes the message queue
THEN:
- The edi shipment request is received
- Made available for processing
β Consolidated Acceptance Criteria
- The system processes the EDI message content → the shipment root ID is extracted from the message and made available for database lookup
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExtractShipmentRootIDfromEDIMessage(["Start Step"])
E_ExtractShipmentRootIDfromEDIMessage(["End Step"])
N_ExtractShipmentRootIDfromEDIMessage_Node0{"The system processes the EDI
message content"}:::decision N_ExtractShipmentRootIDfromEDIMessage_Node0_action["The shipment root ID is extracted
from the message and made available
for database lookup"]:::main N_ExtractShipmentRootIDfromEDIMessage_Node0 -- Yes --> N_ExtractShipmentRootIDfromEDIMessage_Node0_action N_ExtractShipmentRootIDfromEDIMessage_Node0_action --> E_ExtractShipmentRootIDfromEDIMessage S_ExtractShipmentRootIDfromEDIMessage --> N_ExtractShipmentRootIDfromEDIMessage_Node0 N_ExtractShipmentRootIDfromEDIMessage_Node0 -- No --> E_ExtractShipmentRootIDfromEDIMessage
message content"}:::decision N_ExtractShipmentRootIDfromEDIMessage_Node0_action["The shipment root ID is extracted
from the message and made available
for database lookup"]:::main N_ExtractShipmentRootIDfromEDIMessage_Node0 -- Yes --> N_ExtractShipmentRootIDfromEDIMessage_Node0_action N_ExtractShipmentRootIDfromEDIMessage_Node0_action --> E_ExtractShipmentRootIDfromEDIMessage S_ExtractShipmentRootIDfromEDIMessage --> N_ExtractShipmentRootIDfromEDIMessage_Node0 N_ExtractShipmentRootIDfromEDIMessage_Node0 -- No --> E_ExtractShipmentRootIDfromEDIMessage
File: GCX016.cbl
GIVEN:
An EDI shipment request has been received
WHEN:
The system processes the EDI message content
THEN:
- The shipment root id is extracted from the message
- Made available for database lookup
β Consolidated Acceptance Criteria
- The system performs a database lookup → the system searches for the corresponding shipment root record in the database
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_QueryShipmentDatabase(["Start Step"])
E_QueryShipmentDatabase(["End Step"])
N_QueryShipmentDatabase_Node0{"The system performs a database
lookup"}:::decision N_QueryShipmentDatabase_Node0_action["The system searches for the
corresponding shipment root record
in the database"]:::main N_QueryShipmentDatabase_Node0 -- Yes --> N_QueryShipmentDatabase_Node0_action N_QueryShipmentDatabase_Node0_action --> E_QueryShipmentDatabase S_QueryShipmentDatabase --> N_QueryShipmentDatabase_Node0 N_QueryShipmentDatabase_Node0 -- No --> E_QueryShipmentDatabase
lookup"}:::decision N_QueryShipmentDatabase_Node0_action["The system searches for the
corresponding shipment root record
in the database"]:::main N_QueryShipmentDatabase_Node0 -- Yes --> N_QueryShipmentDatabase_Node0_action N_QueryShipmentDatabase_Node0_action --> E_QueryShipmentDatabase S_QueryShipmentDatabase --> N_QueryShipmentDatabase_Node0 N_QueryShipmentDatabase_Node0 -- No --> E_QueryShipmentDatabase
File: GCX016.cbl
GIVEN:
A shipment root ID has been extracted from the EDI message
WHEN:
The system performs a database lookup
THEN:
The system searches for the corresponding shipment root record in the database
β Consolidated Acceptance Criteria
- If the query results → the system determines if a valid shipment root record exists and proceeds with appropriate validation or rejection flow
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ShiprootRecordExists(["Start Step"])
E_ShiprootRecordExists(["End Step"])
N_ShiprootRecordExists_Node0{"The system evaluates the query
results"}:::decision N_ShiprootRecordExists_Node0_action["The system determines if a valid
shipment root record exists and
proceeds with appropriate validation
or rejection flow"]:::main N_ShiprootRecordExists_Node0 -- Yes --> N_ShiprootRecordExists_Node0_action N_ShiprootRecordExists_Node0_action --> E_ShiprootRecordExists S_ShiprootRecordExists --> N_ShiprootRecordExists_Node0 N_ShiprootRecordExists_Node0 -- No --> E_ShiprootRecordExists
results"}:::decision N_ShiprootRecordExists_Node0_action["The system determines if a valid
shipment root record exists and
proceeds with appropriate validation
or rejection flow"]:::main N_ShiprootRecordExists_Node0 -- Yes --> N_ShiprootRecordExists_Node0_action N_ShiprootRecordExists_Node0_action --> E_ShiprootRecordExists S_ShiprootRecordExists --> N_ShiprootRecordExists_Node0 N_ShiprootRecordExists_Node0 -- No --> E_ShiprootRecordExists
File: GCX016.cbl
GIVEN:
A database query has been performed for the shipment root ID
WHEN:
The system evaluates the query results
THEN:
- The system determines if a valid shipment root record exists
- Proceeds with appropriate validation or rejection flow
β Consolidated Acceptance Criteria
- The system checks the shipment root status → the system validates that the shiproot is active and eligible for EDI processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ValidateShiprootStatus(["Start Step"])
E_ValidateShiprootStatus(["End Step"])
N_ValidateShiprootStatus_Node0{"The system checks the shipment root
status"}:::decision N_ValidateShiprootStatus_Node0_action["The system validates that the
shiproot is active and eligible for
EDI processing"]:::main N_ValidateShiprootStatus_Node0 -- Yes --> N_ValidateShiprootStatus_Node0_action N_ValidateShiprootStatus_Node0_action --> E_ValidateShiprootStatus S_ValidateShiprootStatus --> N_ValidateShiprootStatus_Node0 N_ValidateShiprootStatus_Node0 -- No --> E_ValidateShiprootStatus
status"}:::decision N_ValidateShiprootStatus_Node0_action["The system validates that the
shiproot is active and eligible for
EDI processing"]:::main N_ValidateShiprootStatus_Node0 -- Yes --> N_ValidateShiprootStatus_Node0_action N_ValidateShiprootStatus_Node0_action --> E_ValidateShiprootStatus S_ValidateShiprootStatus --> N_ValidateShiprootStatus_Node0 N_ValidateShiprootStatus_Node0 -- No --> E_ValidateShiprootStatus
File: GCX016.cbl
GIVEN:
A shipment root record exists in the database
WHEN:
The system checks the shipment root status
THEN:
- The system validates that the shiproot is active
- Eligible for edi processing
β Consolidated Acceptance Criteria
- If the status and validation criteria → the system determines if the shiproot is active and valid, allowing EDI processing to continue or triggering rejection
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ShiprootActiveandValid(["Start Step"])
E_ShiprootActiveandValid(["End Step"])
N_ShiprootActiveandValid_Node0{"The system evaluates the status and
validation criteria"}:::decision N_ShiprootActiveandValid_Node0_action["The system determines if the
shiproot is active and valid,
allowing EDI processing to continue
or triggering rejection"]:::main N_ShiprootActiveandValid_Node0 -- Yes --> N_ShiprootActiveandValid_Node0_action N_ShiprootActiveandValid_Node0_action --> E_ShiprootActiveandValid S_ShiprootActiveandValid --> N_ShiprootActiveandValid_Node0 N_ShiprootActiveandValid_Node0 -- No --> E_ShiprootActiveandValid
validation criteria"}:::decision N_ShiprootActiveandValid_Node0_action["The system determines if the
shiproot is active and valid,
allowing EDI processing to continue
or triggering rejection"]:::main N_ShiprootActiveandValid_Node0 -- Yes --> N_ShiprootActiveandValid_Node0_action N_ShiprootActiveandValid_Node0_action --> E_ShiprootActiveandValid S_ShiprootActiveandValid --> N_ShiprootActiveandValid_Node0 N_ShiprootActiveandValid_Node0 -- No --> E_ShiprootActiveandValid
File: GCX016.cbl
GIVEN:
The shipment root status has been retrieved from the database
WHEN:
- The system evaluates the status
- Validation criteria
THEN:
- The system determines if the shiproot is active
- Valid, allowing edi processing to continue or triggering rejection
β Consolidated Acceptance Criteria
- All validation checks pass successfully → the system allows EDI processing to continue with the validated shipment root
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AllowEDIProcessingtoContinue(["Start Step"])
E_AllowEDIProcessingtoContinue(["End Step"])
N_AllowEDIProcessingtoContinue_Node0{"All validation checks pass
successfully"}:::decision N_AllowEDIProcessingtoContinue_Node0_action["The system allows EDI processing to
continue with the validated shipment
root"]:::main N_AllowEDIProcessingtoContinue_Node0 -- Yes --> N_AllowEDIProcessingtoContinue_Node0_action N_AllowEDIProcessingtoContinue_Node0_action --> E_AllowEDIProcessingtoContinue S_AllowEDIProcessingtoContinue --> N_AllowEDIProcessingtoContinue_Node0 N_AllowEDIProcessingtoContinue_Node0 -- No --> E_AllowEDIProcessingtoContinue
successfully"}:::decision N_AllowEDIProcessingtoContinue_Node0_action["The system allows EDI processing to
continue with the validated shipment
root"]:::main N_AllowEDIProcessingtoContinue_Node0 -- Yes --> N_AllowEDIProcessingtoContinue_Node0_action N_AllowEDIProcessingtoContinue_Node0_action --> E_AllowEDIProcessingtoContinue S_AllowEDIProcessingtoContinue --> N_AllowEDIProcessingtoContinue_Node0 N_AllowEDIProcessingtoContinue_Node0 -- No --> E_AllowEDIProcessingtoContinue
File: GCX016.cbl
GIVEN:
The shipment root record exists and has active, valid status
WHEN:
All validation checks pass successfully
THEN:
The system allows EDI processing to continue with the validated shipment root
β Consolidated Acceptance Criteria
- The system processes the validated shipment root → a U1 segment is created with appropriate in-bond information for the shipment
- Processing new cargo with in-bond requirements → create master in-bond record with appropriate entry type classification and bond number validation
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CreateU1SegmentwithInBondInformation(["Start Step"])
E_CreateU1SegmentwithInBondInformation(["End Step"])
N_CreateU1SegmentwithInBondInformation_Node0{"The system processes the validated
shipment root"}:::decision N_CreateU1SegmentwithInBondInformation_Node0_action["A U1 segment is created with
appropriate in-bond information for
the shipment"]:::main N_CreateU1SegmentwithInBondInformation_Node0 -- Yes --> N_CreateU1SegmentwithInBondInformation_Node0_action N_CreateU1SegmentwithInBondInformation_Node0_action --> E_CreateU1SegmentwithInBondInformation S_CreateU1SegmentwithInBondInformation --> N_CreateU1SegmentwithInBondInformation_Node0 N_CreateU1SegmentwithInBondInformation_Node1{"processing new cargo with in-bond
requirements"}:::decision N_CreateU1SegmentwithInBondInformation_Node1_action["create master in-bond record with
appropriate entry type
classification and bond number
validation"]:::main N_CreateU1SegmentwithInBondInformation_Node1 -- Yes --> N_CreateU1SegmentwithInBondInformation_Node1_action N_CreateU1SegmentwithInBondInformation_Node1_action --> E_CreateU1SegmentwithInBondInformation N_CreateU1SegmentwithInBondInformation_Node0 -- No --> N_CreateU1SegmentwithInBondInformation_Node1 N_CreateU1SegmentwithInBondInformation_Node1 -- No --> E_CreateU1SegmentwithInBondInformation
shipment root"}:::decision N_CreateU1SegmentwithInBondInformation_Node0_action["A U1 segment is created with
appropriate in-bond information for
the shipment"]:::main N_CreateU1SegmentwithInBondInformation_Node0 -- Yes --> N_CreateU1SegmentwithInBondInformation_Node0_action N_CreateU1SegmentwithInBondInformation_Node0_action --> E_CreateU1SegmentwithInBondInformation S_CreateU1SegmentwithInBondInformation --> N_CreateU1SegmentwithInBondInformation_Node0 N_CreateU1SegmentwithInBondInformation_Node1{"processing new cargo with in-bond
requirements"}:::decision N_CreateU1SegmentwithInBondInformation_Node1_action["create master in-bond record with
appropriate entry type
classification and bond number
validation"]:::main N_CreateU1SegmentwithInBondInformation_Node1 -- Yes --> N_CreateU1SegmentwithInBondInformation_Node1_action N_CreateU1SegmentwithInBondInformation_Node1_action --> E_CreateU1SegmentwithInBondInformation N_CreateU1SegmentwithInBondInformation_Node0 -- No --> N_CreateU1SegmentwithInBondInformation_Node1 N_CreateU1SegmentwithInBondInformation_Node1 -- No --> E_CreateU1SegmentwithInBondInformation
File: GCX016.cbl
GIVEN:
EDI processing has been authorized to continue
WHEN:
The system processes the validated shipment root
THEN:
A U1 segment is created with appropriate in-bond information for the shipment
File: GCX016.cbl
GIVEN:
disposition code is 95 (proceed) and entry type is in (61, 62, 63, 69)
WHEN:
processing new cargo with in-bond requirements
THEN:
- Create master in-bond record with appropriate entry type classification
- Bond number validation
β Consolidated Acceptance Criteria
- The U1 segment has been created → the system logs the successful validation event with appropriate details
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogShiprootValidationSuccess(["Start Step"])
E_LogShiprootValidationSuccess(["End Step"])
N_LogShiprootValidationSuccess_Node0{"The U1 segment has been created"}:::decision
N_LogShiprootValidationSuccess_Node0_action["The system logs the successful
validation event with appropriate
details"]:::main N_LogShiprootValidationSuccess_Node0 -- Yes --> N_LogShiprootValidationSuccess_Node0_action N_LogShiprootValidationSuccess_Node0_action --> E_LogShiprootValidationSuccess S_LogShiprootValidationSuccess --> N_LogShiprootValidationSuccess_Node0 N_LogShiprootValidationSuccess_Node0 -- No --> E_LogShiprootValidationSuccess
validation event with appropriate
details"]:::main N_LogShiprootValidationSuccess_Node0 -- Yes --> N_LogShiprootValidationSuccess_Node0_action N_LogShiprootValidationSuccess_Node0_action --> E_LogShiprootValidationSuccess S_LogShiprootValidationSuccess --> N_LogShiprootValidationSuccess_Node0 N_LogShiprootValidationSuccess_Node0 -- No --> E_LogShiprootValidationSuccess
File: GCX016.cbl
GIVEN:
Shipment root validation has completed successfully
WHEN:
The U1 segment has been created
THEN:
The system logs the successful validation event with appropriate details
β Consolidated Acceptance Criteria
- The system determines the shipment cannot be processed → the EDI processing request is rejected and error handling is initiated
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RejectEDIProcessingRequest(["Start Step"])
E_RejectEDIProcessingRequest(["End Step"])
N_RejectEDIProcessingRequest_Node0{"The system determines the shipment
cannot be processed"}:::decision N_RejectEDIProcessingRequest_Node0_action["The EDI processing request is
rejected and error handling is
initiated"]:::exclusion N_RejectEDIProcessingRequest_Node0 -- Yes -->|Alternative| N_RejectEDIProcessingRequest_Node0_action N_RejectEDIProcessingRequest_Node0_action --> E_RejectEDIProcessingRequest S_RejectEDIProcessingRequest --> N_RejectEDIProcessingRequest_Node0 N_RejectEDIProcessingRequest_Node0 -- No --> E_RejectEDIProcessingRequest
cannot be processed"}:::decision N_RejectEDIProcessingRequest_Node0_action["The EDI processing request is
rejected and error handling is
initiated"]:::exclusion N_RejectEDIProcessingRequest_Node0 -- Yes -->|Alternative| N_RejectEDIProcessingRequest_Node0_action N_RejectEDIProcessingRequest_Node0_action --> E_RejectEDIProcessingRequest S_RejectEDIProcessingRequest --> N_RejectEDIProcessingRequest_Node0 N_RejectEDIProcessingRequest_Node0 -- No --> E_RejectEDIProcessingRequest
File: GCX016.cbl
GIVEN:
Shipment root validation has failed due to non-existent record or invalid status
WHEN:
The system determines the shipment cannot be processed
THEN:
- The edi processing request is rejected
- Error handling is initiated
β Consolidated Acceptance Criteria
- The shipment root record does not exist or has invalid status → the system generates a shiproot not found error message with relevant details
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GenerateShiprootNotFoundError(["Start Step"])
E_GenerateShiprootNotFoundError(["End Step"])
N_GenerateShiprootNotFoundError_Node0{"The shipment root record does not
exist or has invalid status"}:::decision N_GenerateShiprootNotFoundError_Node0_action["The system generates a shiproot not
found error message with relevant
details"]:::exclusion N_GenerateShiprootNotFoundError_Node0 -- Yes -->|Alternative| N_GenerateShiprootNotFoundError_Node0_action N_GenerateShiprootNotFoundError_Node0_action --> E_GenerateShiprootNotFoundError S_GenerateShiprootNotFoundError --> N_GenerateShiprootNotFoundError_Node0 N_GenerateShiprootNotFoundError_Node0 -- No --> E_GenerateShiprootNotFoundError
exist or has invalid status"}:::decision N_GenerateShiprootNotFoundError_Node0_action["The system generates a shiproot not
found error message with relevant
details"]:::exclusion N_GenerateShiprootNotFoundError_Node0 -- Yes -->|Alternative| N_GenerateShiprootNotFoundError_Node0_action N_GenerateShiprootNotFoundError_Node0_action --> E_GenerateShiprootNotFoundError S_GenerateShiprootNotFoundError --> N_GenerateShiprootNotFoundError_Node0 N_GenerateShiprootNotFoundError_Node0 -- No --> E_GenerateShiprootNotFoundError
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
EDI processing has been rejected due to validation failure
WHEN:
The shipment root record does not exist or has invalid status
THEN:
The system generates a shiproot not found error message with relevant details
β Consolidated Acceptance Criteria
- The system processes the validation failure → the validation failure is logged with error details and shipment information
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogValidationFailure(["Start Step"])
E_LogValidationFailure(["End Step"])
N_LogValidationFailure_Node0{"The system processes the validation
failure"}:::decision N_LogValidationFailure_Node0_action["The validation failure is logged
with error details and shipment
information"]:::main N_LogValidationFailure_Node0 -- Yes --> N_LogValidationFailure_Node0_action N_LogValidationFailure_Node0_action --> E_LogValidationFailure S_LogValidationFailure --> N_LogValidationFailure_Node0 N_LogValidationFailure_Node0 -- No --> E_LogValidationFailure
failure"}:::decision N_LogValidationFailure_Node0_action["The validation failure is logged
with error details and shipment
information"]:::main N_LogValidationFailure_Node0 -- Yes --> N_LogValidationFailure_Node0_action N_LogValidationFailure_Node0_action --> E_LogValidationFailure S_LogValidationFailure --> N_LogValidationFailure_Node0 N_LogValidationFailure_Node0 -- No --> E_LogValidationFailure
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
A shiproot not found error has been generated
WHEN:
The system processes the validation failure
THEN:
- The validation failure is logged with error details
- Shipment information
β Consolidated Acceptance Criteria
- The system completes error processing → an error notification is sent to the appropriate recipients with failure details
- Error notifications are sent → the system sends error messages to relevant stakeholders with details about the failed train lookup
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SendErrorNotification(["Start Step"])
E_SendErrorNotification(["End Step"])
N_SendErrorNotification_Node0{"The system completes error
processing"}:::decision N_SendErrorNotification_Node0_action["An error notification is sent to
the appropriate recipients with
failure details"]:::exclusion N_SendErrorNotification_Node0 -- Yes -->|Alternative| N_SendErrorNotification_Node0_action N_SendErrorNotification_Node0_action --> E_SendErrorNotification S_SendErrorNotification --> N_SendErrorNotification_Node0 N_SendErrorNotification_Node1{"Error notifications are sent"}:::decision N_SendErrorNotification_Node1_action["The system sends error messages to
relevant stakeholders with details
about the failed train lookup"]:::exclusion N_SendErrorNotification_Node1 -- Yes -->|Alternative| N_SendErrorNotification_Node1_action N_SendErrorNotification_Node1_action --> E_SendErrorNotification N_SendErrorNotification_Node0 -- No --> N_SendErrorNotification_Node1 N_SendErrorNotification_Node1 -- No --> E_SendErrorNotification
processing"}:::decision N_SendErrorNotification_Node0_action["An error notification is sent to
the appropriate recipients with
failure details"]:::exclusion N_SendErrorNotification_Node0 -- Yes -->|Alternative| N_SendErrorNotification_Node0_action N_SendErrorNotification_Node0_action --> E_SendErrorNotification S_SendErrorNotification --> N_SendErrorNotification_Node0 N_SendErrorNotification_Node1{"Error notifications are sent"}:::decision N_SendErrorNotification_Node1_action["The system sends error messages to
relevant stakeholders with details
about the failed train lookup"]:::exclusion N_SendErrorNotification_Node1 -- Yes -->|Alternative| N_SendErrorNotification_Node1_action N_SendErrorNotification_Node1_action --> E_SendErrorNotification N_SendErrorNotification_Node0 -- No --> N_SendErrorNotification_Node1 N_SendErrorNotification_Node1 -- No --> E_SendErrorNotification
File: GCX016.cbl
GIVEN:
Validation failure has been logged
WHEN:
The system completes error processing
THEN:
An error notification is sent to the appropriate recipients with failure details
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
A train not found error has been generated
WHEN:
Error notifications are sent
THEN:
The system sends error messages to relevant stakeholders with details about the failed train lookup
β Consolidated Acceptance Criteria
- The system attempts to verify shiproot existence → the system should validate shiproot record exists and is accessible for processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_VerifyShiprootExistence(["Start Step"])
E_VerifyShiprootExistence(["End Step"])
N_VerifyShiprootExistence_Node0{"The system attempts to verify
shiproot existence"}:::decision N_VerifyShiprootExistence_Node0_action["The system should validate shiproot
record exists and is accessible for
processing"]:::main N_VerifyShiprootExistence_Node0 -- Yes --> N_VerifyShiprootExistence_Node0_action N_VerifyShiprootExistence_Node0_action --> E_VerifyShiprootExistence S_VerifyShiprootExistence --> N_VerifyShiprootExistence_Node0 N_VerifyShiprootExistence_Node0 -- No --> E_VerifyShiprootExistence
shiproot existence"}:::decision N_VerifyShiprootExistence_Node0_action["The system should validate shiproot
record exists and is accessible for
processing"]:::main N_VerifyShiprootExistence_Node0 -- Yes --> N_VerifyShiprootExistence_Node0_action N_VerifyShiprootExistence_Node0_action --> E_VerifyShiprootExistence S_VerifyShiprootExistence --> N_VerifyShiprootExistence_Node0 N_VerifyShiprootExistence_Node0 -- No --> E_VerifyShiprootExistence
File: GCX016.cbl
GIVEN:
A SHIPMINU segment requires processing
WHEN:
The system attempts to verify shiproot existence
THEN:
- The system should validate shiproot record exists
- Is accessible for processing
β Consolidated Acceptance Criteria
- If shiproot validity → if shiproot is valid, proceed to retrieve in-bond information, otherwise handle shiproot error
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ShiprootValid(["Start Step"])
E_ShiprootValid(["End Step"])
N_ShiprootValid_Node0{"The system evaluates shiproot
validity"}:::decision N_ShiprootValid_Node0_action["If shiproot is valid, proceed to
retrieve in-bond information,
otherwise handle shiproot error"]:::main N_ShiprootValid_Node0 -- Yes --> N_ShiprootValid_Node0_action N_ShiprootValid_Node0_action --> E_ShiprootValid S_ShiprootValid --> N_ShiprootValid_Node0 N_ShiprootValid_Node0 -- No --> E_ShiprootValid
validity"}:::decision N_ShiprootValid_Node0_action["If shiproot is valid, proceed to
retrieve in-bond information,
otherwise handle shiproot error"]:::main N_ShiprootValid_Node0 -- Yes --> N_ShiprootValid_Node0_action N_ShiprootValid_Node0_action --> E_ShiprootValid S_ShiprootValid --> N_ShiprootValid_Node0 N_ShiprootValid_Node0 -- No --> E_ShiprootValid
File: GCX016.cbl
GIVEN:
A shiproot record has been retrieved for validation
WHEN:
The system evaluates shiproot validity
THEN:
If shiproot is valid, proceed to retrieve in-bond information, otherwise handle shiproot error
β Consolidated Acceptance Criteria
- The system needs to create U1 segment with in-bond information → the system should retrieve all required in-bond transportation details from the shipment record
- The system processes U1 segment creation → the system should retrieve all relevant in-bond information from the shipment record for U1 population
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RetrieveInBondInformation(["Start Step"])
E_RetrieveInBondInformation(["End Step"])
N_RetrieveInBondInformation_Node0{"The system needs to create U1
segment with in-bond information"}:::decision N_RetrieveInBondInformation_Node0_action["The system should retrieve all
required in-bond transportation
details from the shipment record"]:::main N_RetrieveInBondInformation_Node0 -- Yes --> N_RetrieveInBondInformation_Node0_action N_RetrieveInBondInformation_Node0_action --> E_RetrieveInBondInformation S_RetrieveInBondInformation --> N_RetrieveInBondInformation_Node0 N_RetrieveInBondInformation_Node1{"The system processes U1 segment
creation"}:::decision N_RetrieveInBondInformation_Node1_action["The system should retrieve all
relevant in-bond information from
the shipment record for U1
population"]:::main N_RetrieveInBondInformation_Node1 -- Yes --> N_RetrieveInBondInformation_Node1_action N_RetrieveInBondInformation_Node1_action --> E_RetrieveInBondInformation N_RetrieveInBondInformation_Node0 -- No --> N_RetrieveInBondInformation_Node1 N_RetrieveInBondInformation_Node1 -- No --> E_RetrieveInBondInformation
segment with in-bond information"}:::decision N_RetrieveInBondInformation_Node0_action["The system should retrieve all
required in-bond transportation
details from the shipment record"]:::main N_RetrieveInBondInformation_Node0 -- Yes --> N_RetrieveInBondInformation_Node0_action N_RetrieveInBondInformation_Node0_action --> E_RetrieveInBondInformation S_RetrieveInBondInformation --> N_RetrieveInBondInformation_Node0 N_RetrieveInBondInformation_Node1{"The system processes U1 segment
creation"}:::decision N_RetrieveInBondInformation_Node1_action["The system should retrieve all
relevant in-bond information from
the shipment record for U1
population"]:::main N_RetrieveInBondInformation_Node1 -- Yes --> N_RetrieveInBondInformation_Node1_action N_RetrieveInBondInformation_Node1_action --> E_RetrieveInBondInformation N_RetrieveInBondInformation_Node0 -- No --> N_RetrieveInBondInformation_Node1 N_RetrieveInBondInformation_Node1 -- No --> E_RetrieveInBondInformation
File: GCX016.cbl
GIVEN:
A valid shiproot record exists
WHEN:
The system needs to create U1 segment with in-bond information
THEN:
The system should retrieve all required in-bond transportation details from the shipment record
File: GCX016.cbl
GIVEN:
A valid shipment root record exists
WHEN:
The system processes U1 segment creation
THEN:
The system should retrieve all relevant in-bond information from the shipment record for U1 population
β Consolidated Acceptance Criteria
- The system processes type codes for U1 segment creation → the system should map each CPRAIL type code to its corresponding EDI 309 standard value using the type code translation table
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MapCPRAILTypeCodestoEDI309Values(["Start Step"])
E_MapCPRAILTypeCodestoEDI309Values(["End Step"])
N_MapCPRAILTypeCodestoEDI309Values_Node0{"The system processes type codes for
U1 segment creation"}:::decision N_MapCPRAILTypeCodestoEDI309Values_Node0_action["The system should map each CPRAIL
type code to its corresponding EDI
309 standard value using the type
code translation table"]:::main N_MapCPRAILTypeCodestoEDI309Values_Node0 -- Yes --> N_MapCPRAILTypeCodestoEDI309Values_Node0_action N_MapCPRAILTypeCodestoEDI309Values_Node0_action --> E_MapCPRAILTypeCodestoEDI309Values S_MapCPRAILTypeCodestoEDI309Values --> N_MapCPRAILTypeCodestoEDI309Values_Node0 N_MapCPRAILTypeCodestoEDI309Values_Node0 -- No --> E_MapCPRAILTypeCodestoEDI309Values
U1 segment creation"}:::decision N_MapCPRAILTypeCodestoEDI309Values_Node0_action["The system should map each CPRAIL
type code to its corresponding EDI
309 standard value using the type
code translation table"]:::main N_MapCPRAILTypeCodestoEDI309Values_Node0 -- Yes --> N_MapCPRAILTypeCodestoEDI309Values_Node0_action N_MapCPRAILTypeCodestoEDI309Values_Node0_action --> E_MapCPRAILTypeCodestoEDI309Values S_MapCPRAILTypeCodestoEDI309Values --> N_MapCPRAILTypeCodestoEDI309Values_Node0 N_MapCPRAILTypeCodestoEDI309Values_Node0 -- No --> E_MapCPRAILTypeCodestoEDI309Values
File: GCX016.cbl
GIVEN:
In-bond information contains CPRAIL type codes
WHEN:
The system processes type codes for U1 segment creation
THEN:
The system should map each CPRAIL type code to its corresponding EDI 309 standard value using the type code translation table
β Consolidated Acceptance Criteria
- The system creates U1 segment structure → the system should initialize U1 segment with proper field structure and data formatting requirements
- The system processes U1 segment creation → the system should create a properly formatted U1 segment structure with all required fields initialized
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CreateU1SegmentStructure(["Start Step"])
E_CreateU1SegmentStructure(["End Step"])
N_CreateU1SegmentStructure_Node0{"The system creates U1 segment
structure"}:::decision N_CreateU1SegmentStructure_Node0_action["The system should initialize U1
segment with proper field structure
and data formatting requirements"]:::main N_CreateU1SegmentStructure_Node0 -- Yes --> N_CreateU1SegmentStructure_Node0_action N_CreateU1SegmentStructure_Node0_action --> E_CreateU1SegmentStructure S_CreateU1SegmentStructure --> N_CreateU1SegmentStructure_Node0 N_CreateU1SegmentStructure_Node1{"The system processes U1 segment
creation"}:::decision N_CreateU1SegmentStructure_Node1_action["The system should create a properly
formatted U1 segment structure with
all required fields initialized"]:::main N_CreateU1SegmentStructure_Node1 -- Yes --> N_CreateU1SegmentStructure_Node1_action N_CreateU1SegmentStructure_Node1_action --> E_CreateU1SegmentStructure N_CreateU1SegmentStructure_Node0 -- No --> N_CreateU1SegmentStructure_Node1 N_CreateU1SegmentStructure_Node1 -- No --> E_CreateU1SegmentStructure
structure"}:::decision N_CreateU1SegmentStructure_Node0_action["The system should initialize U1
segment with proper field structure
and data formatting requirements"]:::main N_CreateU1SegmentStructure_Node0 -- Yes --> N_CreateU1SegmentStructure_Node0_action N_CreateU1SegmentStructure_Node0_action --> E_CreateU1SegmentStructure S_CreateU1SegmentStructure --> N_CreateU1SegmentStructure_Node0 N_CreateU1SegmentStructure_Node1{"The system processes U1 segment
creation"}:::decision N_CreateU1SegmentStructure_Node1_action["The system should create a properly
formatted U1 segment structure with
all required fields initialized"]:::main N_CreateU1SegmentStructure_Node1 -- Yes --> N_CreateU1SegmentStructure_Node1_action N_CreateU1SegmentStructure_Node1_action --> E_CreateU1SegmentStructure N_CreateU1SegmentStructure_Node0 -- No --> N_CreateU1SegmentStructure_Node1 N_CreateU1SegmentStructure_Node1 -- No --> E_CreateU1SegmentStructure
File: GCX016.cbl
GIVEN:
Mapped EDI 309 values are available
WHEN:
The system creates U1 segment structure
THEN:
- The system should initialize u1 segment with proper field structure
- Data formatting requirements
File: GCX016.cbl
GIVEN:
In-bond information has been retrieved and type codes converted
WHEN:
The system processes U1 segment creation
THEN:
The system should create a properly formatted U1 segment structure with all required fields initialized
β Consolidated Acceptance Criteria
- The system populates in-bond details into U1 segment → the system should populate all required in-bond fields including mapped type codes, transportation details, and reference information
- The system populates in-bond details → the system should populate all in-bond fields including bond numbers, entry types, broker information, and customs data into the U1 segment
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_PopulateInBondDetails(["Start Step"])
E_PopulateInBondDetails(["End Step"])
N_PopulateInBondDetails_Node0{"The system populates in-bond
details into U1 segment"}:::decision N_PopulateInBondDetails_Node0_action["The system should populate all
required in-bond fields including
mapped type codes, transportation
details, and reference information"]:::main N_PopulateInBondDetails_Node0 -- Yes --> N_PopulateInBondDetails_Node0_action N_PopulateInBondDetails_Node0_action --> E_PopulateInBondDetails S_PopulateInBondDetails --> N_PopulateInBondDetails_Node0 N_PopulateInBondDetails_Node1{"The system populates in-bond
details"}:::decision N_PopulateInBondDetails_Node1_action["The system should populate all
in-bond fields including bond
numbers, entry types, broker
information, and customs data into
the U1 segment"]:::main N_PopulateInBondDetails_Node1 -- Yes --> N_PopulateInBondDetails_Node1_action N_PopulateInBondDetails_Node1_action --> E_PopulateInBondDetails N_PopulateInBondDetails_Node0 -- No --> N_PopulateInBondDetails_Node1 N_PopulateInBondDetails_Node1 -- No --> E_PopulateInBondDetails
details into U1 segment"}:::decision N_PopulateInBondDetails_Node0_action["The system should populate all
required in-bond fields including
mapped type codes, transportation
details, and reference information"]:::main N_PopulateInBondDetails_Node0 -- Yes --> N_PopulateInBondDetails_Node0_action N_PopulateInBondDetails_Node0_action --> E_PopulateInBondDetails S_PopulateInBondDetails --> N_PopulateInBondDetails_Node0 N_PopulateInBondDetails_Node1{"The system populates in-bond
details"}:::decision N_PopulateInBondDetails_Node1_action["The system should populate all
in-bond fields including bond
numbers, entry types, broker
information, and customs data into
the U1 segment"]:::main N_PopulateInBondDetails_Node1 -- Yes --> N_PopulateInBondDetails_Node1_action N_PopulateInBondDetails_Node1_action --> E_PopulateInBondDetails N_PopulateInBondDetails_Node0 -- No --> N_PopulateInBondDetails_Node1 N_PopulateInBondDetails_Node1 -- No --> E_PopulateInBondDetails
File: GCX016.cbl
GIVEN:
U1 segment structure is created and in-bond information is available
WHEN:
The system populates in-bond details into U1 segment
THEN:
The system should populate all required in-bond fields including mapped type codes, transportation details, and reference information
File: GCX016.cbl
GIVEN:
A U1 segment structure has been created
WHEN:
The system populates in-bond details
THEN:
The system should populate all in-bond fields including bond numbers, entry types, broker information, and customs data into the U1 segment
β Consolidated Acceptance Criteria
- The system stores U1 segment in database → the system should insert new U1 segment if none exists or replace existing U1 segment with updated information
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_InsertReplaceU1SegmentinDatabase(["Start Step"])
E_InsertReplaceU1SegmentinDatabase(["End Step"])
N_InsertReplaceU1SegmentinDatabase_Node0{"The system stores U1 segment in
database"}:::decision N_InsertReplaceU1SegmentinDatabase_Node0_action["The system should insert new U1
segment if none exists or replace
existing U1 segment with updated
information"]:::main N_InsertReplaceU1SegmentinDatabase_Node0 -- Yes --> N_InsertReplaceU1SegmentinDatabase_Node0_action N_InsertReplaceU1SegmentinDatabase_Node0_action --> E_InsertReplaceU1SegmentinDatabase S_InsertReplaceU1SegmentinDatabase --> N_InsertReplaceU1SegmentinDatabase_Node0 N_InsertReplaceU1SegmentinDatabase_Node0 -- No --> E_InsertReplaceU1SegmentinDatabase
database"}:::decision N_InsertReplaceU1SegmentinDatabase_Node0_action["The system should insert new U1
segment if none exists or replace
existing U1 segment with updated
information"]:::main N_InsertReplaceU1SegmentinDatabase_Node0 -- Yes --> N_InsertReplaceU1SegmentinDatabase_Node0_action N_InsertReplaceU1SegmentinDatabase_Node0_action --> E_InsertReplaceU1SegmentinDatabase S_InsertReplaceU1SegmentinDatabase --> N_InsertReplaceU1SegmentinDatabase_Node0 N_InsertReplaceU1SegmentinDatabase_Node0 -- No --> E_InsertReplaceU1SegmentinDatabase
File: GCX016.cbl
GIVEN:
U1 segment is populated with in-bond details
WHEN:
The system stores U1 segment in database
THEN:
The system should insert new U1 segment if none exists or replace existing U1 segment with updated information
β Consolidated Acceptance Criteria
- The system updates the shipment record → the system should update shipment record status to indicate U1 segment processing completion
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UpdateShipmentRecord(["Start Step"])
E_UpdateShipmentRecord(["End Step"])
N_UpdateShipmentRecord_Node0{"The system updates the shipment
record"}:::decision N_UpdateShipmentRecord_Node0_action["The system should update shipment
record status to indicate U1 segment
processing completion"]:::main N_UpdateShipmentRecord_Node0 -- Yes --> N_UpdateShipmentRecord_Node0_action N_UpdateShipmentRecord_Node0_action --> E_UpdateShipmentRecord S_UpdateShipmentRecord --> N_UpdateShipmentRecord_Node0 N_UpdateShipmentRecord_Node0 -- No --> E_UpdateShipmentRecord
record"}:::decision N_UpdateShipmentRecord_Node0_action["The system should update shipment
record status to indicate U1 segment
processing completion"]:::main N_UpdateShipmentRecord_Node0 -- Yes --> N_UpdateShipmentRecord_Node0_action N_UpdateShipmentRecord_Node0_action --> E_UpdateShipmentRecord S_UpdateShipmentRecord --> N_UpdateShipmentRecord_Node0 N_UpdateShipmentRecord_Node0 -- No --> E_UpdateShipmentRecord
File: GCX016.cbl
GIVEN:
U1 segment has been successfully stored in database
WHEN:
The system updates the shipment record
THEN:
The system should update shipment record status to indicate U1 segment processing completion
β Consolidated Acceptance Criteria
- The system logs segment processing → the system should create audit log entry documenting successful SHIPMINU segment processing with relevant details
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogSegmentProcessing(["Start Step"])
E_LogSegmentProcessing(["End Step"])
N_LogSegmentProcessing_Node0{"The system logs segment processing"}:::decision
N_LogSegmentProcessing_Node0_action["The system should create audit log
entry documenting successful
SHIPMINU segment processing with
relevant details"]:::main N_LogSegmentProcessing_Node0 -- Yes --> N_LogSegmentProcessing_Node0_action N_LogSegmentProcessing_Node0_action --> E_LogSegmentProcessing S_LogSegmentProcessing --> N_LogSegmentProcessing_Node0 N_LogSegmentProcessing_Node0 -- No --> E_LogSegmentProcessing
entry documenting successful
SHIPMINU segment processing with
relevant details"]:::main N_LogSegmentProcessing_Node0 -- Yes --> N_LogSegmentProcessing_Node0_action N_LogSegmentProcessing_Node0_action --> E_LogSegmentProcessing S_LogSegmentProcessing --> N_LogSegmentProcessing_Node0 N_LogSegmentProcessing_Node0 -- No --> E_LogSegmentProcessing
File: GCX016.cbl
GIVEN:
U1 segment processing and shipment record update are complete
WHEN:
The system logs segment processing
THEN:
The system should create audit log entry documenting successful SHIPMINU segment processing with relevant details
β Consolidated Acceptance Criteria
- The system handles shiproot error → the system should log error condition, set appropriate error status, and terminate SHIPMINU processing gracefully
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_HandleShiprootError(["Start Step"])
E_HandleShiprootError(["End Step"])
N_HandleShiprootError_Node0{"The system handles shiproot error"}:::decision
N_HandleShiprootError_Node0_action["The system should log error
condition, set appropriate error
status, and terminate SHIPMINU
processing gracefully"]:::exclusion N_HandleShiprootError_Node0 -- Yes -->|Alternative| N_HandleShiprootError_Node0_action N_HandleShiprootError_Node0_action --> E_HandleShiprootError S_HandleShiprootError --> N_HandleShiprootError_Node0 N_HandleShiprootError_Node0 -- No --> E_HandleShiprootError
condition, set appropriate error
status, and terminate SHIPMINU
processing gracefully"]:::exclusion N_HandleShiprootError_Node0 -- Yes -->|Alternative| N_HandleShiprootError_Node0_action N_HandleShiprootError_Node0_action --> E_HandleShiprootError S_HandleShiprootError --> N_HandleShiprootError_Node0 N_HandleShiprootError_Node0 -- No --> E_HandleShiprootError
File: GCX016.cbl
GIVEN:
Shiproot validation has failed
WHEN:
The system handles shiproot error
THEN:
The system should log error condition, set appropriate error status, and terminate SHIPMINU processing gracefully
β Consolidated Acceptance Criteria
- The system validates the code format → the code is accepted if it meets format requirements, otherwise an invalid code error is triggered
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ValidateInbondTypeCodeFormat(["Start Step"])
E_ValidateInbondTypeCodeFormat(["End Step"])
N_ValidateInbondTypeCodeFormat_Node0{"The system validates the code
format"}:::decision N_ValidateInbondTypeCodeFormat_Node0_action["The code is accepted if it meets
format requirements, otherwise an
invalid code error is triggered"]:::main N_ValidateInbondTypeCodeFormat_Node0 -- Yes --> N_ValidateInbondTypeCodeFormat_Node0_action N_ValidateInbondTypeCodeFormat_Node0_action --> E_ValidateInbondTypeCodeFormat S_ValidateInbondTypeCodeFormat --> N_ValidateInbondTypeCodeFormat_Node0 N_ValidateInbondTypeCodeFormat_Node0 -- No --> E_ValidateInbondTypeCodeFormat
format"}:::decision N_ValidateInbondTypeCodeFormat_Node0_action["The code is accepted if it meets
format requirements, otherwise an
invalid code error is triggered"]:::main N_ValidateInbondTypeCodeFormat_Node0 -- Yes --> N_ValidateInbondTypeCodeFormat_Node0_action N_ValidateInbondTypeCodeFormat_Node0_action --> E_ValidateInbondTypeCodeFormat S_ValidateInbondTypeCodeFormat --> N_ValidateInbondTypeCodeFormat_Node0 N_ValidateInbondTypeCodeFormat_Node0 -- No --> E_ValidateInbondTypeCodeFormat
File: GCX016.cbl
GIVEN:
An in-bond type code is received from CPRAIL system
WHEN:
The system validates the code format
THEN:
The code is accepted if it meets format requirements, otherwise an invalid code error is triggered
β Consolidated Acceptance Criteria
- The system searches the EDI 309 mapping table → if mapping is found, the EDI 309 value is retrieved, otherwise a default value is used
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LookupEDI309MappingTable(["Start Step"])
E_LookupEDI309MappingTable(["End Step"])
N_LookupEDI309MappingTable_Node0{"The system searches the EDI 309
mapping table"}:::decision N_LookupEDI309MappingTable_Node0_action["If mapping is found, the EDI 309
value is retrieved, otherwise a
default value is used"]:::main N_LookupEDI309MappingTable_Node0 -- Yes --> N_LookupEDI309MappingTable_Node0_action N_LookupEDI309MappingTable_Node0_action --> E_LookupEDI309MappingTable S_LookupEDI309MappingTable --> N_LookupEDI309MappingTable_Node0 N_LookupEDI309MappingTable_Node0 -- No --> E_LookupEDI309MappingTable
mapping table"}:::decision N_LookupEDI309MappingTable_Node0_action["If mapping is found, the EDI 309
value is retrieved, otherwise a
default value is used"]:::main N_LookupEDI309MappingTable_Node0 -- Yes --> N_LookupEDI309MappingTable_Node0_action N_LookupEDI309MappingTable_Node0_action --> E_LookupEDI309MappingTable S_LookupEDI309MappingTable --> N_LookupEDI309MappingTable_Node0 N_LookupEDI309MappingTable_Node0 -- No --> E_LookupEDI309MappingTable
File: GCX016.cbl
GIVEN:
A valid CPRAIL in-bond type code is provided
WHEN:
The system searches the EDI 309 mapping table
THEN:
If mapping is found, the EDI 309 value is retrieved, otherwise a default value is used
β Consolidated Acceptance Criteria
- The conversion process is executed → the CPRAIL code is converted to the corresponding EDI 309 value
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ConvertCPRAILCodetoEDI309Value(["Start Step"])
E_ConvertCPRAILCodetoEDI309Value(["End Step"])
N_ConvertCPRAILCodetoEDI309Value_Node0{"The conversion process is executed"}:::decision
N_ConvertCPRAILCodetoEDI309Value_Node0_action["The CPRAIL code is converted to the
corresponding EDI 309 value"]:::main N_ConvertCPRAILCodetoEDI309Value_Node0 -- Yes --> N_ConvertCPRAILCodetoEDI309Value_Node0_action N_ConvertCPRAILCodetoEDI309Value_Node0_action --> E_ConvertCPRAILCodetoEDI309Value S_ConvertCPRAILCodetoEDI309Value --> N_ConvertCPRAILCodetoEDI309Value_Node0 N_ConvertCPRAILCodetoEDI309Value_Node0 -- No --> E_ConvertCPRAILCodetoEDI309Value
corresponding EDI 309 value"]:::main N_ConvertCPRAILCodetoEDI309Value_Node0 -- Yes --> N_ConvertCPRAILCodetoEDI309Value_Node0_action N_ConvertCPRAILCodetoEDI309Value_Node0_action --> E_ConvertCPRAILCodetoEDI309Value S_ConvertCPRAILCodetoEDI309Value --> N_ConvertCPRAILCodetoEDI309Value_Node0 N_ConvertCPRAILCodetoEDI309Value_Node0 -- No --> E_ConvertCPRAILCodetoEDI309Value
File: GCX016.cbl
GIVEN:
A mapping exists between CPRAIL code and EDI 309 value
WHEN:
The conversion process is executed
THEN:
The CPRAIL code is converted to the corresponding EDI 309 value
β Consolidated Acceptance Criteria
- The U1 segment update is performed → the U1 segment contains the EDI 309 in-bond type code for further processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UpdateU1SegmentwithEDI309Code(["Start Step"])
E_UpdateU1SegmentwithEDI309Code(["End Step"])
N_UpdateU1SegmentwithEDI309Code_Node0{"The U1 segment update is performed"}:::decision
N_UpdateU1SegmentwithEDI309Code_Node0_action["The U1 segment contains the EDI 309
in-bond type code for further
processing"]:::main N_UpdateU1SegmentwithEDI309Code_Node0 -- Yes --> N_UpdateU1SegmentwithEDI309Code_Node0_action N_UpdateU1SegmentwithEDI309Code_Node0_action --> E_UpdateU1SegmentwithEDI309Code S_UpdateU1SegmentwithEDI309Code --> N_UpdateU1SegmentwithEDI309Code_Node0 N_UpdateU1SegmentwithEDI309Code_Node0 -- No --> E_UpdateU1SegmentwithEDI309Code
in-bond type code for further
processing"]:::main N_UpdateU1SegmentwithEDI309Code_Node0 -- Yes --> N_UpdateU1SegmentwithEDI309Code_Node0_action N_UpdateU1SegmentwithEDI309Code_Node0_action --> E_UpdateU1SegmentwithEDI309Code S_UpdateU1SegmentwithEDI309Code --> N_UpdateU1SegmentwithEDI309Code_Node0 N_UpdateU1SegmentwithEDI309Code_Node0 -- No --> E_UpdateU1SegmentwithEDI309Code
File: GCX016.cbl
GIVEN:
An EDI 309 code has been successfully converted from CPRAIL format
WHEN:
The U1 segment update is performed
THEN:
The U1 segment contains the EDI 309 in-bond type code for further processing
β Consolidated Acceptance Criteria
- The mapping lookup fails → a default EDI 309 value is assigned and a mapping error is logged
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetDefaultEDI309Value(["Start Step"])
E_SetDefaultEDI309Value(["End Step"])
N_SetDefaultEDI309Value_Node0{"The mapping lookup fails"}:::decision
N_SetDefaultEDI309Value_Node0_action["A default EDI 309 value is assigned
and a mapping error is logged"]:::main N_SetDefaultEDI309Value_Node0 -- Yes --> N_SetDefaultEDI309Value_Node0_action N_SetDefaultEDI309Value_Node0_action --> E_SetDefaultEDI309Value S_SetDefaultEDI309Value --> N_SetDefaultEDI309Value_Node0 N_SetDefaultEDI309Value_Node0 -- No --> E_SetDefaultEDI309Value
and a mapping error is logged"]:::main N_SetDefaultEDI309Value_Node0 -- Yes --> N_SetDefaultEDI309Value_Node0_action N_SetDefaultEDI309Value_Node0_action --> E_SetDefaultEDI309Value S_SetDefaultEDI309Value --> N_SetDefaultEDI309Value_Node0 N_SetDefaultEDI309Value_Node0 -- No --> E_SetDefaultEDI309Value
File: GCX016.cbl
GIVEN:
No mapping exists for the provided CPRAIL in-bond type code
WHEN:
The mapping lookup fails
THEN:
- A default edi 309 value is assigned
- A mapping error is logged
β Consolidated Acceptance Criteria
- The conversion process completes successfully → a success log entry is created documenting the conversion
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogSuccessfulConversion(["Start Step"])
E_LogSuccessfulConversion(["End Step"])
N_LogSuccessfulConversion_Node0{"The conversion process completes
successfully"}:::decision N_LogSuccessfulConversion_Node0_action["A success log entry is created
documenting the conversion"]:::main N_LogSuccessfulConversion_Node0 -- Yes --> N_LogSuccessfulConversion_Node0_action N_LogSuccessfulConversion_Node0_action --> E_LogSuccessfulConversion S_LogSuccessfulConversion --> N_LogSuccessfulConversion_Node0 N_LogSuccessfulConversion_Node0 -- No --> E_LogSuccessfulConversion
successfully"}:::decision N_LogSuccessfulConversion_Node0_action["A success log entry is created
documenting the conversion"]:::main N_LogSuccessfulConversion_Node0 -- Yes --> N_LogSuccessfulConversion_Node0_action N_LogSuccessfulConversion_Node0_action --> E_LogSuccessfulConversion S_LogSuccessfulConversion --> N_LogSuccessfulConversion_Node0 N_LogSuccessfulConversion_Node0 -- No --> E_LogSuccessfulConversion
File: GCX016.cbl
GIVEN:
CPRAIL code has been successfully converted to EDI 309 format
WHEN:
The conversion process completes successfully
THEN:
A success log entry is created documenting the conversion
β Consolidated Acceptance Criteria
- A default value is assigned due to mapping failure → an error log entry is created documenting the mapping failure
- The system uses a default Canadian port name → the system logs a port mapping error for audit and troubleshooting purposes
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogMappingError(["Start Step"])
E_LogMappingError(["End Step"])
N_LogMappingError_Node0{"A default value is assigned due to
mapping failure"}:::decision N_LogMappingError_Node0_action["An error log entry is created
documenting the mapping failure"]:::main N_LogMappingError_Node0 -- Yes --> N_LogMappingError_Node0_action N_LogMappingError_Node0_action --> E_LogMappingError S_LogMappingError --> N_LogMappingError_Node0 N_LogMappingError_Node1{"The system uses a default Canadian
port name"}:::decision N_LogMappingError_Node1_action["The system logs a port mapping
error for audit and troubleshooting
purposes"]:::main N_LogMappingError_Node1 -- Yes --> N_LogMappingError_Node1_action N_LogMappingError_Node1_action --> E_LogMappingError N_LogMappingError_Node0 -- No --> N_LogMappingError_Node1 N_LogMappingError_Node1 -- No --> E_LogMappingError
mapping failure"}:::decision N_LogMappingError_Node0_action["An error log entry is created
documenting the mapping failure"]:::main N_LogMappingError_Node0 -- Yes --> N_LogMappingError_Node0_action N_LogMappingError_Node0_action --> E_LogMappingError S_LogMappingError --> N_LogMappingError_Node0 N_LogMappingError_Node1{"The system uses a default Canadian
port name"}:::decision N_LogMappingError_Node1_action["The system logs a port mapping
error for audit and troubleshooting
purposes"]:::main N_LogMappingError_Node1 -- Yes --> N_LogMappingError_Node1_action N_LogMappingError_Node1_action --> E_LogMappingError N_LogMappingError_Node0 -- No --> N_LogMappingError_Node1 N_LogMappingError_Node1 -- No --> E_LogMappingError
File: GCX016.cbl
GIVEN:
No mapping exists for the CPRAIL in-bond type code
WHEN:
A default value is assigned due to mapping failure
THEN:
An error log entry is created documenting the mapping failure
File: GCX016.cbl
GIVEN:
No Canadian port mapping was found for the US port code
WHEN:
The system uses a default Canadian port name
THEN:
- The system logs a port mapping error for audit
- Troubleshooting purposes
β Consolidated Acceptance Criteria
- The system searches the DS table using the location ID → retrieve station record from GCSTBRT DS table for further processing
- The system continues the hierarchical lookup process → the system searches the DS table in GCSTBRT database for matching station records
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LookupDSTable(["Start Step"])
E_LookupDSTable(["End Step"])
N_LookupDSTable_Node0{"The system searches the DS table
using the location ID"}:::decision N_LookupDSTable_Node0_action["Retrieve station record from
GCSTBRT DS table for further
processing"]:::main N_LookupDSTable_Node0 -- Yes --> N_LookupDSTable_Node0_action N_LookupDSTable_Node0_action --> E_LookupDSTable S_LookupDSTable --> N_LookupDSTable_Node0 N_LookupDSTable_Node1{"The system continues the
hierarchical lookup process"}:::decision N_LookupDSTable_Node1_action["The system searches the DS table in
GCSTBRT database for matching
station records"]:::main N_LookupDSTable_Node1 -- Yes --> N_LookupDSTable_Node1_action N_LookupDSTable_Node1_action --> E_LookupDSTable N_LookupDSTable_Node0 -- No --> N_LookupDSTable_Node1 N_LookupDSTable_Node1 -- No --> E_LookupDSTable
using the location ID"}:::decision N_LookupDSTable_Node0_action["Retrieve station record from
GCSTBRT DS table for further
processing"]:::main N_LookupDSTable_Node0 -- Yes --> N_LookupDSTable_Node0_action N_LookupDSTable_Node0_action --> E_LookupDSTable S_LookupDSTable --> N_LookupDSTable_Node0 N_LookupDSTable_Node1{"The system continues the
hierarchical lookup process"}:::decision N_LookupDSTable_Node1_action["The system searches the DS table in
GCSTBRT database for matching
station records"]:::main N_LookupDSTable_Node1 -- Yes --> N_LookupDSTable_Node1_action N_LookupDSTable_Node1_action --> E_LookupDSTable N_LookupDSTable_Node0 -- No --> N_LookupDSTable_Node1 N_LookupDSTable_Node1 -- No --> E_LookupDSTable
File: GCX016.cbl
GIVEN:
A valid location ID is available
WHEN:
The system searches the DS table using the location ID
THEN:
Retrieve station record from GCSTBRT DS table for further processing
File: GCX016.cbl
GIVEN:
No matching record was found in the SD table
WHEN:
The system continues the hierarchical lookup process
THEN:
The system searches the DS table in GCSTBRT database for matching station records
β Consolidated Acceptance Criteria
- The system checks the lookup result → if DS record is found, extract station name, otherwise attempt KS table lookup
- A matching DS record is found → the system extracts station name and description from the DS record and completes the lookup process
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_DSRecordFound(["Start Step"])
E_DSRecordFound(["End Step"])
N_DSRecordFound_Node0{"The system checks the lookup result"}:::decision
N_DSRecordFound_Node0_action["If DS record is found, extract
station name, otherwise attempt KS
table lookup"]:::main N_DSRecordFound_Node0 -- Yes --> N_DSRecordFound_Node0_action N_DSRecordFound_Node0_action --> E_DSRecordFound S_DSRecordFound --> N_DSRecordFound_Node0 N_DSRecordFound_Node1{"A matching DS record is found"}:::decision N_DSRecordFound_Node1_action["The system extracts station name
and description from the DS record
and completes the lookup process"]:::main N_DSRecordFound_Node1 -- Yes --> N_DSRecordFound_Node1_action N_DSRecordFound_Node1_action --> E_DSRecordFound N_DSRecordFound_Node0 -- No --> N_DSRecordFound_Node1 N_DSRecordFound_Node1 -- No --> E_DSRecordFound
station name, otherwise attempt KS
table lookup"]:::main N_DSRecordFound_Node0 -- Yes --> N_DSRecordFound_Node0_action N_DSRecordFound_Node0_action --> E_DSRecordFound S_DSRecordFound --> N_DSRecordFound_Node0 N_DSRecordFound_Node1{"A matching DS record is found"}:::decision N_DSRecordFound_Node1_action["The system extracts station name
and description from the DS record
and completes the lookup process"]:::main N_DSRecordFound_Node1 -- Yes --> N_DSRecordFound_Node1_action N_DSRecordFound_Node1_action --> E_DSRecordFound N_DSRecordFound_Node0 -- No --> N_DSRecordFound_Node1 N_DSRecordFound_Node1 -- No --> E_DSRecordFound
File: GCX016.cbl
GIVEN:
DS table lookup has been performed
WHEN:
The system checks the lookup result
THEN:
If DS record is found, extract station name, otherwise attempt KS table lookup
File: GCX016.cbl
GIVEN:
The system has searched the DS table for a location ID after SD table lookup failed
WHEN:
A matching DS record is found
THEN:
- The system extracts station name
- Description from the ds record
- Completes the lookup process
β Consolidated Acceptance Criteria
- The system searches the KS table using the location ID → retrieve location record from GCSTBRT KS table as fallback option
- The system continues the hierarchical lookup process → the system searches the KS table in GCSTBRT database for matching station records
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LookupKSTable(["Start Step"])
E_LookupKSTable(["End Step"])
N_LookupKSTable_Node0{"The system searches the KS table
using the location ID"}:::decision N_LookupKSTable_Node0_action["Retrieve location record from
GCSTBRT KS table as fallback option"]:::main N_LookupKSTable_Node0 -- Yes --> N_LookupKSTable_Node0_action N_LookupKSTable_Node0_action --> E_LookupKSTable S_LookupKSTable --> N_LookupKSTable_Node0 N_LookupKSTable_Node1{"The system continues the
hierarchical lookup process"}:::decision N_LookupKSTable_Node1_action["The system searches the KS table in
GCSTBRT database for matching
station records"]:::main N_LookupKSTable_Node1 -- Yes --> N_LookupKSTable_Node1_action N_LookupKSTable_Node1_action --> E_LookupKSTable N_LookupKSTable_Node0 -- No --> N_LookupKSTable_Node1 N_LookupKSTable_Node1 -- No --> E_LookupKSTable
using the location ID"}:::decision N_LookupKSTable_Node0_action["Retrieve location record from
GCSTBRT KS table as fallback option"]:::main N_LookupKSTable_Node0 -- Yes --> N_LookupKSTable_Node0_action N_LookupKSTable_Node0_action --> E_LookupKSTable S_LookupKSTable --> N_LookupKSTable_Node0 N_LookupKSTable_Node1{"The system continues the
hierarchical lookup process"}:::decision N_LookupKSTable_Node1_action["The system searches the KS table in
GCSTBRT database for matching
station records"]:::main N_LookupKSTable_Node1 -- Yes --> N_LookupKSTable_Node1_action N_LookupKSTable_Node1_action --> E_LookupKSTable N_LookupKSTable_Node0 -- No --> N_LookupKSTable_Node1 N_LookupKSTable_Node1 -- No --> E_LookupKSTable
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
DS table lookup did not find a matching record
WHEN:
The system searches the KS table using the location ID
THEN:
Retrieve location record from GCSTBRT KS table as fallback option
File: GCX016.cbl
GIVEN:
No matching records were found in both SD and DS tables
WHEN:
The system continues the hierarchical lookup process
THEN:
The system searches the KS table in GCSTBRT database for matching station records
β Consolidated Acceptance Criteria
- The system checks the KS lookup result → if KS record is found, extract location description, otherwise set default location name
- A matching KS record is found → the system extracts station name and description from the KS record and completes the lookup process
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_KSRecordFound(["Start Step"])
E_KSRecordFound(["End Step"])
N_KSRecordFound_Node0{"The system checks the KS lookup
result"}:::decision N_KSRecordFound_Node0_action["If KS record is found, extract
location description, otherwise set
default location name"]:::main N_KSRecordFound_Node0 -- Yes --> N_KSRecordFound_Node0_action N_KSRecordFound_Node0_action --> E_KSRecordFound S_KSRecordFound --> N_KSRecordFound_Node0 N_KSRecordFound_Node1{"A matching KS record is found"}:::decision N_KSRecordFound_Node1_action["The system extracts station name
and description from the KS record
and completes the lookup process"]:::main N_KSRecordFound_Node1 -- Yes --> N_KSRecordFound_Node1_action N_KSRecordFound_Node1_action --> E_KSRecordFound N_KSRecordFound_Node0 -- No --> N_KSRecordFound_Node1 N_KSRecordFound_Node1 -- No --> E_KSRecordFound
result"}:::decision N_KSRecordFound_Node0_action["If KS record is found, extract
location description, otherwise set
default location name"]:::main N_KSRecordFound_Node0 -- Yes --> N_KSRecordFound_Node0_action N_KSRecordFound_Node0_action --> E_KSRecordFound S_KSRecordFound --> N_KSRecordFound_Node0 N_KSRecordFound_Node1{"A matching KS record is found"}:::decision N_KSRecordFound_Node1_action["The system extracts station name
and description from the KS record
and completes the lookup process"]:::main N_KSRecordFound_Node1 -- Yes --> N_KSRecordFound_Node1_action N_KSRecordFound_Node1_action --> E_KSRecordFound N_KSRecordFound_Node0 -- No --> N_KSRecordFound_Node1 N_KSRecordFound_Node1 -- No --> E_KSRecordFound
File: GCX016.cbl
GIVEN:
KS table lookup has been performed after DS lookup failure
WHEN:
The system checks the KS lookup result
THEN:
If KS record is found, extract location description, otherwise set default location name
File: GCX016.cbl
GIVEN:
The system has searched the KS table for a location ID after SD and DS table lookups failed
WHEN:
A matching KS record is found
THEN:
- The system extracts station name
- Description from the ks record
- Completes the lookup process
β Consolidated Acceptance Criteria
- The system processes the DS record data → extract the station name field for location information combination
- The system processes the found record → the system extracts the station name field from the record for use in location mapping
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExtractStationName(["Start Step"])
E_ExtractStationName(["End Step"])
N_ExtractStationName_Node0{"The system processes the DS record
data"}:::decision N_ExtractStationName_Node0_action["Extract the station name field for
location information combination"]:::main N_ExtractStationName_Node0 -- Yes --> N_ExtractStationName_Node0_action N_ExtractStationName_Node0_action --> E_ExtractStationName S_ExtractStationName --> N_ExtractStationName_Node0 N_ExtractStationName_Node1{"The system processes the found
record"}:::decision N_ExtractStationName_Node1_action["The system extracts the station
name field from the record for use
in location mapping"]:::main N_ExtractStationName_Node1 -- Yes --> N_ExtractStationName_Node1_action N_ExtractStationName_Node1_action --> E_ExtractStationName N_ExtractStationName_Node0 -- No --> N_ExtractStationName_Node1 N_ExtractStationName_Node1 -- No --> E_ExtractStationName
data"}:::decision N_ExtractStationName_Node0_action["Extract the station name field for
location information combination"]:::main N_ExtractStationName_Node0 -- Yes --> N_ExtractStationName_Node0_action N_ExtractStationName_Node0_action --> E_ExtractStationName S_ExtractStationName --> N_ExtractStationName_Node0 N_ExtractStationName_Node1{"The system processes the found
record"}:::decision N_ExtractStationName_Node1_action["The system extracts the station
name field from the record for use
in location mapping"]:::main N_ExtractStationName_Node1 -- Yes --> N_ExtractStationName_Node1_action N_ExtractStationName_Node1_action --> E_ExtractStationName N_ExtractStationName_Node0 -- No --> N_ExtractStationName_Node1 N_ExtractStationName_Node1 -- No --> E_ExtractStationName
File: GCX016.cbl
GIVEN:
A DS record has been found in the station table
WHEN:
The system processes the DS record data
THEN:
Extract the station name field for location information combination
File: GCX016.cbl
GIVEN:
A matching station record has been found in any of the station tables (SD, DS, or KS)
WHEN:
The system processes the found record
THEN:
The system extracts the station name field from the record for use in location mapping
β Consolidated Acceptance Criteria
- The system processes the KS record data → extract the location description field for location information combination
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExtractLocationDescription(["Start Step"])
E_ExtractLocationDescription(["End Step"])
N_ExtractLocationDescription_Node0{"The system processes the KS record
data"}:::decision N_ExtractLocationDescription_Node0_action["Extract the location description
field for location information
combination"]:::main N_ExtractLocationDescription_Node0 -- Yes --> N_ExtractLocationDescription_Node0_action N_ExtractLocationDescription_Node0_action --> E_ExtractLocationDescription S_ExtractLocationDescription --> N_ExtractLocationDescription_Node0 N_ExtractLocationDescription_Node0 -- No --> E_ExtractLocationDescription
data"}:::decision N_ExtractLocationDescription_Node0_action["Extract the location description
field for location information
combination"]:::main N_ExtractLocationDescription_Node0 -- Yes --> N_ExtractLocationDescription_Node0_action N_ExtractLocationDescription_Node0_action --> E_ExtractLocationDescription S_ExtractLocationDescription --> N_ExtractLocationDescription_Node0 N_ExtractLocationDescription_Node0 -- No --> E_ExtractLocationDescription
File: GCX016.cbl
GIVEN:
A KS record has been found in the location table
WHEN:
The system processes the KS record data
THEN:
Extract the location description field for location information combination
β Consolidated Acceptance Criteria
- The system processes the extracted location data → combine the location information into a complete location reference for cargo record update
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CombineLocationInformation(["Start Step"])
E_CombineLocationInformation(["End Step"])
N_CombineLocationInformation_Node0{"The system processes the extracted
location data"}:::decision N_CombineLocationInformation_Node0_action["Combine the location information
into a complete location reference
for cargo record update"]:::main N_CombineLocationInformation_Node0 -- Yes --> N_CombineLocationInformation_Node0_action N_CombineLocationInformation_Node0_action --> E_CombineLocationInformation S_CombineLocationInformation --> N_CombineLocationInformation_Node0 N_CombineLocationInformation_Node0 -- No --> E_CombineLocationInformation
location data"}:::decision N_CombineLocationInformation_Node0_action["Combine the location information
into a complete location reference
for cargo record update"]:::main N_CombineLocationInformation_Node0 -- Yes --> N_CombineLocationInformation_Node0_action N_CombineLocationInformation_Node0_action --> E_CombineLocationInformation S_CombineLocationInformation --> N_CombineLocationInformation_Node0 N_CombineLocationInformation_Node0 -- No --> E_CombineLocationInformation
File: GCX016.cbl
GIVEN:
Either station name from DS table or location description from KS table has been extracted
WHEN:
The system processes the extracted location data
THEN:
Combine the location information into a complete location reference for cargo record update
β Consolidated Acceptance Criteria
- The system cannot resolve location information from tables → set a default location name to ensure cargo record has location information
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetDefaultLocationName(["Start Step"])
E_SetDefaultLocationName(["End Step"])
N_SetDefaultLocationName_Node0{"The system cannot resolve location
information from tables"}:::decision N_SetDefaultLocationName_Node0_action["Set a default location name to
ensure cargo record has location
information"]:::main N_SetDefaultLocationName_Node0 -- Yes --> N_SetDefaultLocationName_Node0_action N_SetDefaultLocationName_Node0_action --> E_SetDefaultLocationName S_SetDefaultLocationName --> N_SetDefaultLocationName_Node0 N_SetDefaultLocationName_Node0 -- No --> E_SetDefaultLocationName
information from tables"}:::decision N_SetDefaultLocationName_Node0_action["Set a default location name to
ensure cargo record has location
information"]:::main N_SetDefaultLocationName_Node0 -- Yes --> N_SetDefaultLocationName_Node0_action N_SetDefaultLocationName_Node0_action --> E_SetDefaultLocationName S_SetDefaultLocationName --> N_SetDefaultLocationName_Node0 N_SetDefaultLocationName_Node0 -- No --> E_SetDefaultLocationName
File: GCX016.cbl
GIVEN:
Either no location ID is available or both DS and KS table lookups have failed
WHEN:
The system cannot resolve location information from tables
THEN:
Set a default location name to ensure cargo record has location information
β Consolidated Acceptance Criteria
- The system updates the cargo record → store the location information in the GCCC-CARGO-ROOT record for future reference
- The system updates the cargo record → the system stores the location information in the appropriate cargo record fields
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UpdateCargoRecordwithLocationInfo(["Start Step"])
E_UpdateCargoRecordwithLocationInfo(["End Step"])
N_UpdateCargoRecordwithLocationInfo_Node0{"The system updates the cargo record"}:::decision
N_UpdateCargoRecordwithLocationInfo_Node0_action["Store the location information in
the GCCC-CARGO-ROOT record for
future reference"]:::main N_UpdateCargoRecordwithLocationInfo_Node0 -- Yes --> N_UpdateCargoRecordwithLocationInfo_Node0_action N_UpdateCargoRecordwithLocationInfo_Node0_action --> E_UpdateCargoRecordwithLocationInfo S_UpdateCargoRecordwithLocationInfo --> N_UpdateCargoRecordwithLocationInfo_Node0 N_UpdateCargoRecordwithLocationInfo_Node1{"The system updates the cargo record"}:::decision N_UpdateCargoRecordwithLocationInfo_Node1_action["The system stores the location
information in the appropriate cargo
record fields"]:::main N_UpdateCargoRecordwithLocationInfo_Node1 -- Yes --> N_UpdateCargoRecordwithLocationInfo_Node1_action N_UpdateCargoRecordwithLocationInfo_Node1_action --> E_UpdateCargoRecordwithLocationInfo N_UpdateCargoRecordwithLocationInfo_Node0 -- No --> N_UpdateCargoRecordwithLocationInfo_Node1 N_UpdateCargoRecordwithLocationInfo_Node1 -- No --> E_UpdateCargoRecordwithLocationInfo
the GCCC-CARGO-ROOT record for
future reference"]:::main N_UpdateCargoRecordwithLocationInfo_Node0 -- Yes --> N_UpdateCargoRecordwithLocationInfo_Node0_action N_UpdateCargoRecordwithLocationInfo_Node0_action --> E_UpdateCargoRecordwithLocationInfo S_UpdateCargoRecordwithLocationInfo --> N_UpdateCargoRecordwithLocationInfo_Node0 N_UpdateCargoRecordwithLocationInfo_Node1{"The system updates the cargo record"}:::decision N_UpdateCargoRecordwithLocationInfo_Node1_action["The system stores the location
information in the appropriate cargo
record fields"]:::main N_UpdateCargoRecordwithLocationInfo_Node1 -- Yes --> N_UpdateCargoRecordwithLocationInfo_Node1_action N_UpdateCargoRecordwithLocationInfo_Node1_action --> E_UpdateCargoRecordwithLocationInfo N_UpdateCargoRecordwithLocationInfo_Node0 -- No --> N_UpdateCargoRecordwithLocationInfo_Node1 N_UpdateCargoRecordwithLocationInfo_Node1 -- No --> E_UpdateCargoRecordwithLocationInfo
File: GCX016.cbl
GIVEN:
Location information has been resolved through table lookups or default assignment
WHEN:
The system updates the cargo record
THEN:
Store the location information in the GCCC-CARGO-ROOT record for future reference
File: GCX016.cbl
GIVEN:
Location description has been set with resolved location name
WHEN:
The system updates the cargo record
THEN:
The system stores the location information in the appropriate cargo record fields
β Consolidated Acceptance Criteria
- The system checks for available secondary cargo records in GCSA2RT → the system proceeds to access secondary records if available, otherwise completes processing without N9 references
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SecondaryCargoRecordsAvailable(["Start Step"])
E_SecondaryCargoRecordsAvailable(["End Step"])
N_SecondaryCargoRecordsAvailable_Node0{"The system checks for available
secondary cargo records in GCSA2RT"}:::decision N_SecondaryCargoRecordsAvailable_Node0_action["The system proceeds to access
secondary records if available,
otherwise completes processing
without N9 references"]:::main N_SecondaryCargoRecordsAvailable_Node0 -- Yes --> N_SecondaryCargoRecordsAvailable_Node0_action N_SecondaryCargoRecordsAvailable_Node0_action --> E_SecondaryCargoRecordsAvailable S_SecondaryCargoRecordsAvailable --> N_SecondaryCargoRecordsAvailable_Node0 N_SecondaryCargoRecordsAvailable_Node0 -- No --> E_SecondaryCargoRecordsAvailable
secondary cargo records in GCSA2RT"}:::decision N_SecondaryCargoRecordsAvailable_Node0_action["The system proceeds to access
secondary records if available,
otherwise completes processing
without N9 references"]:::main N_SecondaryCargoRecordsAvailable_Node0 -- Yes --> N_SecondaryCargoRecordsAvailable_Node0_action N_SecondaryCargoRecordsAvailable_Node0_action --> E_SecondaryCargoRecordsAvailable S_SecondaryCargoRecordsAvailable --> N_SecondaryCargoRecordsAvailable_Node0 N_SecondaryCargoRecordsAvailable_Node0 -- No --> E_SecondaryCargoRecordsAvailable
File: GCX016.cbl
GIVEN:
A request for N9 reference processing is initiated
WHEN:
The system checks for available secondary cargo records in GCSA2RT
THEN:
The system proceeds to access secondary records if available, otherwise completes processing without N9 references
β Consolidated Acceptance Criteria
- The system needs to retrieve N9 reference information → the system accesses GCSA2RT secondary records database
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AccessGCSA2RTSecondaryRecords(["Start Step"])
E_AccessGCSA2RTSecondaryRecords(["End Step"])
N_AccessGCSA2RTSecondaryRecords_Node0{"The system needs to retrieve N9
reference information"}:::decision N_AccessGCSA2RTSecondaryRecords_Node0_action["The system accesses GCSA2RT
secondary records database"]:::main N_AccessGCSA2RTSecondaryRecords_Node0 -- Yes --> N_AccessGCSA2RTSecondaryRecords_Node0_action N_AccessGCSA2RTSecondaryRecords_Node0_action --> E_AccessGCSA2RTSecondaryRecords S_AccessGCSA2RTSecondaryRecords --> N_AccessGCSA2RTSecondaryRecords_Node0 N_AccessGCSA2RTSecondaryRecords_Node0 -- No --> E_AccessGCSA2RTSecondaryRecords
reference information"}:::decision N_AccessGCSA2RTSecondaryRecords_Node0_action["The system accesses GCSA2RT
secondary records database"]:::main N_AccessGCSA2RTSecondaryRecords_Node0 -- Yes --> N_AccessGCSA2RTSecondaryRecords_Node0_action N_AccessGCSA2RTSecondaryRecords_Node0_action --> E_AccessGCSA2RTSecondaryRecords S_AccessGCSA2RTSecondaryRecords --> N_AccessGCSA2RTSecondaryRecords_Node0 N_AccessGCSA2RTSecondaryRecords_Node0 -- No --> E_AccessGCSA2RTSecondaryRecords
File: GCX016.cbl
GIVEN:
Secondary cargo records are available
WHEN:
The system needs to retrieve N9 reference information
THEN:
The system accesses GCSA2RT secondary records database
β Consolidated Acceptance Criteria
- The system searches for N9 reference segments within the records → the system identifies and locates all N9 reference segments present in the secondary records
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SearchforN9ReferenceSegments(["Start Step"])
E_SearchforN9ReferenceSegments(["End Step"])
N_SearchforN9ReferenceSegments_Node0{"The system searches for N9
reference segments within the
records"}:::decision N_SearchforN9ReferenceSegments_Node0_action["The system identifies and locates
all N9 reference segments present in
the secondary records"]:::main N_SearchforN9ReferenceSegments_Node0 -- Yes --> N_SearchforN9ReferenceSegments_Node0_action N_SearchforN9ReferenceSegments_Node0_action --> E_SearchforN9ReferenceSegments S_SearchforN9ReferenceSegments --> N_SearchforN9ReferenceSegments_Node0 N_SearchforN9ReferenceSegments_Node0 -- No --> E_SearchforN9ReferenceSegments
reference segments within the
records"}:::decision N_SearchforN9ReferenceSegments_Node0_action["The system identifies and locates
all N9 reference segments present in
the secondary records"]:::main N_SearchforN9ReferenceSegments_Node0 -- Yes --> N_SearchforN9ReferenceSegments_Node0_action N_SearchforN9ReferenceSegments_Node0_action --> E_SearchforN9ReferenceSegments S_SearchforN9ReferenceSegments --> N_SearchforN9ReferenceSegments_Node0 N_SearchforN9ReferenceSegments_Node0 -- No --> E_SearchforN9ReferenceSegments
File: GCX016.cbl
GIVEN:
GCSA2RT secondary records are accessed
WHEN:
The system searches for N9 reference segments within the records
THEN:
- The system identifies
- Locates all n9 reference segments present in the secondary records
β Consolidated Acceptance Criteria
- If the search results → the system proceeds to extract reference information if N9 segments are found, otherwise completes processing without references
- If the search results → if N9 segments are found, proceed to extract reference information, otherwise log no references found and continue processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_N9SegmentsFound(["Start Step"])
E_N9SegmentsFound(["End Step"])
N_N9SegmentsFound_Node0{"The system evaluates the search
results"}:::decision N_N9SegmentsFound_Node0_action["The system proceeds to extract
reference information if N9 segments
are found, otherwise completes
processing without references"]:::main N_N9SegmentsFound_Node0 -- Yes --> N_N9SegmentsFound_Node0_action N_N9SegmentsFound_Node0_action --> E_N9SegmentsFound S_N9SegmentsFound --> N_N9SegmentsFound_Node0 N_N9SegmentsFound_Node1{"The system evaluates the search
results"}:::decision N_N9SegmentsFound_Node1_action["If N9 segments are found, proceed
to extract reference information,
otherwise log no references found
and continue processing"]:::main N_N9SegmentsFound_Node1 -- Yes --> N_N9SegmentsFound_Node1_action N_N9SegmentsFound_Node1_action --> E_N9SegmentsFound N_N9SegmentsFound_Node0 -- No --> N_N9SegmentsFound_Node1 N_N9SegmentsFound_Node1 -- No --> E_N9SegmentsFound
results"}:::decision N_N9SegmentsFound_Node0_action["The system proceeds to extract
reference information if N9 segments
are found, otherwise completes
processing without references"]:::main N_N9SegmentsFound_Node0 -- Yes --> N_N9SegmentsFound_Node0_action N_N9SegmentsFound_Node0_action --> E_N9SegmentsFound S_N9SegmentsFound --> N_N9SegmentsFound_Node0 N_N9SegmentsFound_Node1{"The system evaluates the search
results"}:::decision N_N9SegmentsFound_Node1_action["If N9 segments are found, proceed
to extract reference information,
otherwise log no references found
and continue processing"]:::main N_N9SegmentsFound_Node1 -- Yes --> N_N9SegmentsFound_Node1_action N_N9SegmentsFound_Node1_action --> E_N9SegmentsFound N_N9SegmentsFound_Node0 -- No --> N_N9SegmentsFound_Node1 N_N9SegmentsFound_Node1 -- No --> E_N9SegmentsFound
File: GCX016.cbl
GIVEN:
A search for N9 reference segments has been completed
WHEN:
The system evaluates the search results
THEN:
The system proceeds to extract reference information if N9 segments are found, otherwise completes processing without references
File: GCX016.cbl
GIVEN:
Secondary cargo records have been searched for N9 segments
WHEN:
The system evaluates the search results
THEN:
- If n9 segments are found, proceed to extract reference information, otherwise log no references found
- Continue processing
β Consolidated Acceptance Criteria
- The system processes the N9 segments → the system extracts all reference information contained within the N9 segments
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExtractReferenceInformation(["Start Step"])
E_ExtractReferenceInformation(["End Step"])
N_ExtractReferenceInformation_Node0{"The system processes the N9
segments"}:::decision N_ExtractReferenceInformation_Node0_action["The system extracts all reference
information contained within the N9
segments"]:::main N_ExtractReferenceInformation_Node0 -- Yes --> N_ExtractReferenceInformation_Node0_action N_ExtractReferenceInformation_Node0_action --> E_ExtractReferenceInformation S_ExtractReferenceInformation --> N_ExtractReferenceInformation_Node0 N_ExtractReferenceInformation_Node0 -- No --> E_ExtractReferenceInformation
segments"}:::decision N_ExtractReferenceInformation_Node0_action["The system extracts all reference
information contained within the N9
segments"]:::main N_ExtractReferenceInformation_Node0 -- Yes --> N_ExtractReferenceInformation_Node0_action N_ExtractReferenceInformation_Node0_action --> E_ExtractReferenceInformation S_ExtractReferenceInformation --> N_ExtractReferenceInformation_Node0 N_ExtractReferenceInformation_Node0 -- No --> E_ExtractReferenceInformation
File: GCX016.cbl
GIVEN:
N9 reference segments have been found in secondary cargo records
WHEN:
The system processes the N9 segments
THEN:
The system extracts all reference information contained within the N9 segments
β Consolidated Acceptance Criteria
- The system validates the extracted reference data → the system verifies that the reference data meets required format and completeness criteria
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ValidateReferenceData(["Start Step"])
E_ValidateReferenceData(["End Step"])
N_ValidateReferenceData_Node0{"The system validates the extracted
reference data"}:::decision N_ValidateReferenceData_Node0_action["The system verifies that the
reference data meets required format
and completeness criteria"]:::main N_ValidateReferenceData_Node0 -- Yes --> N_ValidateReferenceData_Node0_action N_ValidateReferenceData_Node0_action --> E_ValidateReferenceData S_ValidateReferenceData --> N_ValidateReferenceData_Node0 N_ValidateReferenceData_Node0 -- No --> E_ValidateReferenceData
reference data"}:::decision N_ValidateReferenceData_Node0_action["The system verifies that the
reference data meets required format
and completeness criteria"]:::main N_ValidateReferenceData_Node0 -- Yes --> N_ValidateReferenceData_Node0_action N_ValidateReferenceData_Node0_action --> E_ValidateReferenceData S_ValidateReferenceData --> N_ValidateReferenceData_Node0 N_ValidateReferenceData_Node0 -- No --> E_ValidateReferenceData
File: GCX016.cbl
GIVEN:
Reference information has been extracted from N9 segments
WHEN:
The system validates the extracted reference data
THEN:
- The system verifies that the reference data meets required format
- Completeness criteria
β Consolidated Acceptance Criteria
- If validation results → the system proceeds to store valid reference information or handles invalid data error
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ReferenceDataValid(["Start Step"])
E_ReferenceDataValid(["End Step"])
N_ReferenceDataValid_Node0{"The system evaluates validation
results"}:::decision N_ReferenceDataValid_Node0_action["The system proceeds to store valid
reference information or handles
invalid data error"]:::main N_ReferenceDataValid_Node0 -- Yes --> N_ReferenceDataValid_Node0_action N_ReferenceDataValid_Node0_action --> E_ReferenceDataValid S_ReferenceDataValid --> N_ReferenceDataValid_Node0 N_ReferenceDataValid_Node0 -- No --> E_ReferenceDataValid
results"}:::decision N_ReferenceDataValid_Node0_action["The system proceeds to store valid
reference information or handles
invalid data error"]:::main N_ReferenceDataValid_Node0 -- Yes --> N_ReferenceDataValid_Node0_action N_ReferenceDataValid_Node0_action --> E_ReferenceDataValid S_ReferenceDataValid --> N_ReferenceDataValid_Node0 N_ReferenceDataValid_Node0 -- No --> E_ReferenceDataValid
File: GCX016.cbl
GIVEN:
Reference data has been validated
WHEN:
The system evaluates validation results
THEN:
The system proceeds to store valid reference information or handles invalid data error
β Consolidated Acceptance Criteria
- The system processes valid reference information → the system stores the reference information in temporary storage for cargo record updating
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_StoreReferenceInformation(["Start Step"])
E_StoreReferenceInformation(["End Step"])
N_StoreReferenceInformation_Node0{"The system processes valid
reference information"}:::decision N_StoreReferenceInformation_Node0_action["The system stores the reference
information in temporary storage for
cargo record updating"]:::main N_StoreReferenceInformation_Node0 -- Yes --> N_StoreReferenceInformation_Node0_action N_StoreReferenceInformation_Node0_action --> E_StoreReferenceInformation S_StoreReferenceInformation --> N_StoreReferenceInformation_Node0 N_StoreReferenceInformation_Node0 -- No --> E_StoreReferenceInformation
reference information"}:::decision N_StoreReferenceInformation_Node0_action["The system stores the reference
information in temporary storage for
cargo record updating"]:::main N_StoreReferenceInformation_Node0 -- Yes --> N_StoreReferenceInformation_Node0_action N_StoreReferenceInformation_Node0_action --> E_StoreReferenceInformation S_StoreReferenceInformation --> N_StoreReferenceInformation_Node0 N_StoreReferenceInformation_Node0 -- No --> E_StoreReferenceInformation
File: GCX016.cbl
GIVEN:
Reference data has been validated as correct
WHEN:
The system processes valid reference information
THEN:
The system stores the reference information in temporary storage for cargo record updating
β Consolidated Acceptance Criteria
- The system updates the cargo record → the system applies all N9 reference information to the appropriate fields in the cargo record
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UpdateCargoRecordwithReferences(["Start Step"])
E_UpdateCargoRecordwithReferences(["End Step"])
N_UpdateCargoRecordwithReferences_Node0{"The system updates the cargo record"}:::decision
N_UpdateCargoRecordwithReferences_Node0_action["The system applies all N9 reference
information to the appropriate
fields in the cargo record"]:::main N_UpdateCargoRecordwithReferences_Node0 -- Yes --> N_UpdateCargoRecordwithReferences_Node0_action N_UpdateCargoRecordwithReferences_Node0_action --> E_UpdateCargoRecordwithReferences S_UpdateCargoRecordwithReferences --> N_UpdateCargoRecordwithReferences_Node0 N_UpdateCargoRecordwithReferences_Node0 -- No --> E_UpdateCargoRecordwithReferences
information to the appropriate
fields in the cargo record"]:::main N_UpdateCargoRecordwithReferences_Node0 -- Yes --> N_UpdateCargoRecordwithReferences_Node0_action N_UpdateCargoRecordwithReferences_Node0_action --> E_UpdateCargoRecordwithReferences S_UpdateCargoRecordwithReferences --> N_UpdateCargoRecordwithReferences_Node0 N_UpdateCargoRecordwithReferences_Node0 -- No --> E_UpdateCargoRecordwithReferences
File: GCX016.cbl
GIVEN:
Valid reference information has been stored
WHEN:
The system updates the cargo record
THEN:
The system applies all N9 reference information to the appropriate fields in the cargo record
β Consolidated Acceptance Criteria
- The system completes reference processing → the system creates log entries documenting the N9 reference processing activities
- The system completes the reference processing → processing activity is logged with details of references processed and shipment updates made
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogReferenceProcessing(["Start Step"])
E_LogReferenceProcessing(["End Step"])
N_LogReferenceProcessing_Node0{"The system completes reference
processing"}:::decision N_LogReferenceProcessing_Node0_action["The system creates log entries
documenting the N9 reference
processing activities"]:::main N_LogReferenceProcessing_Node0 -- Yes --> N_LogReferenceProcessing_Node0_action N_LogReferenceProcessing_Node0_action --> E_LogReferenceProcessing S_LogReferenceProcessing --> N_LogReferenceProcessing_Node0 N_LogReferenceProcessing_Node1{"The system completes the reference
processing"}:::decision N_LogReferenceProcessing_Node1_action["Processing activity is logged with
details of references processed and
shipment updates made"]:::main N_LogReferenceProcessing_Node1 -- Yes --> N_LogReferenceProcessing_Node1_action N_LogReferenceProcessing_Node1_action --> E_LogReferenceProcessing N_LogReferenceProcessing_Node0 -- No --> N_LogReferenceProcessing_Node1 N_LogReferenceProcessing_Node1 -- No --> E_LogReferenceProcessing
processing"}:::decision N_LogReferenceProcessing_Node0_action["The system creates log entries
documenting the N9 reference
processing activities"]:::main N_LogReferenceProcessing_Node0 -- Yes --> N_LogReferenceProcessing_Node0_action N_LogReferenceProcessing_Node0_action --> E_LogReferenceProcessing S_LogReferenceProcessing --> N_LogReferenceProcessing_Node0 N_LogReferenceProcessing_Node1{"The system completes the reference
processing"}:::decision N_LogReferenceProcessing_Node1_action["Processing activity is logged with
details of references processed and
shipment updates made"]:::main N_LogReferenceProcessing_Node1 -- Yes --> N_LogReferenceProcessing_Node1_action N_LogReferenceProcessing_Node1_action --> E_LogReferenceProcessing N_LogReferenceProcessing_Node0 -- No --> N_LogReferenceProcessing_Node1 N_LogReferenceProcessing_Node1 -- No --> E_LogReferenceProcessing
File: GCX016.cbl
GIVEN:
Cargo record has been updated with reference information
WHEN:
The system completes reference processing
THEN:
The system creates log entries documenting the N9 reference processing activities
File: GCX016.cbl
GIVEN:
N9 reference information has been processed and shipment record updated
WHEN:
The system completes the reference processing
THEN:
- Processing activity is logged with details of references processed
- Shipment updates made
β Consolidated Acceptance Criteria
- No N9 segments are found in the secondary cargo records → the system completes processing without updating cargo records with reference information
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_NoN9ReferencesFound(["Start Step"])
E_NoN9ReferencesFound(["End Step"])
N_NoN9ReferencesFound_Node0{"No N9 segments are found in the
secondary cargo records"}:::decision N_NoN9ReferencesFound_Node0_action["The system completes processing
without updating cargo records with
reference information"]:::main N_NoN9ReferencesFound_Node0 -- Yes --> N_NoN9ReferencesFound_Node0_action N_NoN9ReferencesFound_Node0_action --> E_NoN9ReferencesFound S_NoN9ReferencesFound --> N_NoN9ReferencesFound_Node0 N_NoN9ReferencesFound_Node0 -- No --> E_NoN9ReferencesFound
secondary cargo records"}:::decision N_NoN9ReferencesFound_Node0_action["The system completes processing
without updating cargo records with
reference information"]:::main N_NoN9ReferencesFound_Node0 -- Yes --> N_NoN9ReferencesFound_Node0_action N_NoN9ReferencesFound_Node0_action --> E_NoN9ReferencesFound S_NoN9ReferencesFound --> N_NoN9ReferencesFound_Node0 N_NoN9ReferencesFound_Node0 -- No --> E_NoN9ReferencesFound
File: GCX016.cbl
GIVEN:
A search for N9 reference segments has been completed
WHEN:
No N9 segments are found in the secondary cargo records
THEN:
The system completes processing without updating cargo records with reference information
β Consolidated Acceptance Criteria
- The extracted reference data fails validation requirements → the system handles the invalid data error and completes processing without updating cargo records
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_InvalidReferenceDataError(["Start Step"])
E_InvalidReferenceDataError(["End Step"])
N_InvalidReferenceDataError_Node0{"The extracted reference data fails
validation requirements"}:::decision N_InvalidReferenceDataError_Node0_action["The system handles the invalid data
error and completes processing
without updating cargo records"]:::main N_InvalidReferenceDataError_Node0 -- Yes --> N_InvalidReferenceDataError_Node0_action N_InvalidReferenceDataError_Node0_action --> E_InvalidReferenceDataError S_InvalidReferenceDataError --> N_InvalidReferenceDataError_Node0 N_InvalidReferenceDataError_Node0 -- No --> E_InvalidReferenceDataError
validation requirements"}:::decision N_InvalidReferenceDataError_Node0_action["The system handles the invalid data
error and completes processing
without updating cargo records"]:::main N_InvalidReferenceDataError_Node0 -- Yes --> N_InvalidReferenceDataError_Node0_action N_InvalidReferenceDataError_Node0_action --> E_InvalidReferenceDataError S_InvalidReferenceDataError --> N_InvalidReferenceDataError_Node0 N_InvalidReferenceDataError_Node0 -- No --> E_InvalidReferenceDataError
File: GCX016.cbl
GIVEN:
Reference data has been extracted from N9 segments
WHEN:
The extracted reference data fails validation requirements
THEN:
- The system handles the invalid data error
- Completes processing without updating cargo records
β Consolidated Acceptance Criteria
- If the operation type → the system routes to insert, replace, or retrieve operation based on the operation type specified
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_OperationType(["Start Step"])
E_OperationType(["End Step"])
N_OperationType_Node0{"The system evaluates the operation
type"}:::decision N_OperationType_Node0_action["The system routes to insert,
replace, or retrieve operation based
on the operation type specified"]:::main N_OperationType_Node0 -- Yes --> N_OperationType_Node0_action N_OperationType_Node0_action --> E_OperationType S_OperationType --> N_OperationType_Node0 N_OperationType_Node0 -- No --> E_OperationType
type"}:::decision N_OperationType_Node0_action["The system routes to insert,
replace, or retrieve operation based
on the operation type specified"]:::main N_OperationType_Node0 -- Yes --> N_OperationType_Node0_action N_OperationType_Node0_action --> E_OperationType S_OperationType --> N_OperationType_Node0 N_OperationType_Node0 -- No --> E_OperationType
File: GCX016.cbl
GIVEN:
A database I/O operation request is received
WHEN:
The system evaluates the operation type
THEN:
The system routes to insert, replace, or retrieve operation based on the operation type specified
β Consolidated Acceptance Criteria
- If the segment type → the system routes to appropriate segment handler for S09 Status, Cargo Root, Table Data, Secondary, Shipment, or Transmission segments
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SegmentType(["Start Step"])
E_SegmentType(["End Step"])
N_SegmentType_Node0{"The system evaluates the segment
type"}:::decision N_SegmentType_Node0_action["The system routes to appropriate
segment handler for S09 Status,
Cargo Root, Table Data, Secondary,
Shipment, or Transmission segments"]:::main N_SegmentType_Node0 -- Yes --> N_SegmentType_Node0_action N_SegmentType_Node0_action --> E_SegmentType S_SegmentType --> N_SegmentType_Node0 N_SegmentType_Node0 -- No --> E_SegmentType
type"}:::decision N_SegmentType_Node0_action["The system routes to appropriate
segment handler for S09 Status,
Cargo Root, Table Data, Secondary,
Shipment, or Transmission segments"]:::main N_SegmentType_Node0 -- Yes --> N_SegmentType_Node0_action N_SegmentType_Node0_action --> E_SegmentType S_SegmentType --> N_SegmentType_Node0 N_SegmentType_Node0 -- No --> E_SegmentType
File: GCX016.cbl
GIVEN:
A database operation is being processed
WHEN:
The system evaluates the segment type
THEN:
The system routes to appropriate segment handler for S09 Status, Cargo Root, Table Data, Secondary, Shipment, or Transmission segments
β Consolidated Acceptance Criteria
- The system processes the S09 segment type → the system accesses the GCSUSS09 database for status segment operations
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_StatusSegmentsS09(["Start Step"])
E_StatusSegmentsS09(["End Step"])
N_StatusSegmentsS09_Node0{"The system processes the S09
segment type"}:::decision N_StatusSegmentsS09_Node0_action["The system accesses the GCSUSS09
database for status segment
operations"]:::main N_StatusSegmentsS09_Node0 -- Yes --> N_StatusSegmentsS09_Node0_action N_StatusSegmentsS09_Node0_action --> E_StatusSegmentsS09 S_StatusSegmentsS09 --> N_StatusSegmentsS09_Node0 N_StatusSegmentsS09_Node0 -- No --> E_StatusSegmentsS09
segment type"}:::decision N_StatusSegmentsS09_Node0_action["The system accesses the GCSUSS09
database for status segment
operations"]:::main N_StatusSegmentsS09_Node0 -- Yes --> N_StatusSegmentsS09_Node0_action N_StatusSegmentsS09_Node0_action --> E_StatusSegmentsS09 S_StatusSegmentsS09 --> N_StatusSegmentsS09_Node0 N_StatusSegmentsS09_Node0 -- No --> E_StatusSegmentsS09
File: GCX016.cbl
GIVEN:
A database operation involves S09 status segments
WHEN:
The system processes the S09 segment type
THEN:
The system accesses the GCSUSS09 database for status segment operations
β Consolidated Acceptance Criteria
- The system processes the cargo root segment type → the system accesses the GCCC-CARGO-ROOT database for cargo segment operations
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CargoRootSegments(["Start Step"])
E_CargoRootSegments(["End Step"])
N_CargoRootSegments_Node0{"The system processes the cargo root
segment type"}:::decision N_CargoRootSegments_Node0_action["The system accesses the
GCCC-CARGO-ROOT database for cargo
segment operations"]:::main N_CargoRootSegments_Node0 -- Yes --> N_CargoRootSegments_Node0_action N_CargoRootSegments_Node0_action --> E_CargoRootSegments S_CargoRootSegments --> N_CargoRootSegments_Node0 N_CargoRootSegments_Node0 -- No --> E_CargoRootSegments
segment type"}:::decision N_CargoRootSegments_Node0_action["The system accesses the
GCCC-CARGO-ROOT database for cargo
segment operations"]:::main N_CargoRootSegments_Node0 -- Yes --> N_CargoRootSegments_Node0_action N_CargoRootSegments_Node0_action --> E_CargoRootSegments S_CargoRootSegments --> N_CargoRootSegments_Node0 N_CargoRootSegments_Node0 -- No --> E_CargoRootSegments
File: GCX016.cbl
GIVEN:
A database operation involves cargo root segments
WHEN:
The system processes the cargo root segment type
THEN:
The system accesses the GCCC-CARGO-ROOT database for cargo segment operations
β Consolidated Acceptance Criteria
- The system processes the GCSTBRT segment type → the system accesses the GCSTBRT database for table segment operations
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_TableSegmentsGCSTBRT(["Start Step"])
E_TableSegmentsGCSTBRT(["End Step"])
N_TableSegmentsGCSTBRT_Node0{"The system processes the GCSTBRT
segment type"}:::decision N_TableSegmentsGCSTBRT_Node0_action["The system accesses the GCSTBRT
database for table segment
operations"]:::main N_TableSegmentsGCSTBRT_Node0 -- Yes --> N_TableSegmentsGCSTBRT_Node0_action N_TableSegmentsGCSTBRT_Node0_action --> E_TableSegmentsGCSTBRT S_TableSegmentsGCSTBRT --> N_TableSegmentsGCSTBRT_Node0 N_TableSegmentsGCSTBRT_Node0 -- No --> E_TableSegmentsGCSTBRT
segment type"}:::decision N_TableSegmentsGCSTBRT_Node0_action["The system accesses the GCSTBRT
database for table segment
operations"]:::main N_TableSegmentsGCSTBRT_Node0 -- Yes --> N_TableSegmentsGCSTBRT_Node0_action N_TableSegmentsGCSTBRT_Node0_action --> E_TableSegmentsGCSTBRT S_TableSegmentsGCSTBRT --> N_TableSegmentsGCSTBRT_Node0 N_TableSegmentsGCSTBRT_Node0 -- No --> E_TableSegmentsGCSTBRT
File: GCX016.cbl
GIVEN:
A database operation involves table segments
WHEN:
The system processes the GCSTBRT segment type
THEN:
The system accesses the GCSTBRT database for table segment operations
β Consolidated Acceptance Criteria
- The system processes the GCSA2RT segment type → the system accesses the GCSA2RT database for secondary segment operations
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SecondarySegmentsGCSA2RT(["Start Step"])
E_SecondarySegmentsGCSA2RT(["End Step"])
N_SecondarySegmentsGCSA2RT_Node0{"The system processes the GCSA2RT
segment type"}:::decision N_SecondarySegmentsGCSA2RT_Node0_action["The system accesses the GCSA2RT
database for secondary segment
operations"]:::main N_SecondarySegmentsGCSA2RT_Node0 -- Yes --> N_SecondarySegmentsGCSA2RT_Node0_action N_SecondarySegmentsGCSA2RT_Node0_action --> E_SecondarySegmentsGCSA2RT S_SecondarySegmentsGCSA2RT --> N_SecondarySegmentsGCSA2RT_Node0 N_SecondarySegmentsGCSA2RT_Node0 -- No --> E_SecondarySegmentsGCSA2RT
segment type"}:::decision N_SecondarySegmentsGCSA2RT_Node0_action["The system accesses the GCSA2RT
database for secondary segment
operations"]:::main N_SecondarySegmentsGCSA2RT_Node0 -- Yes --> N_SecondarySegmentsGCSA2RT_Node0_action N_SecondarySegmentsGCSA2RT_Node0_action --> E_SecondarySegmentsGCSA2RT S_SecondarySegmentsGCSA2RT --> N_SecondarySegmentsGCSA2RT_Node0 N_SecondarySegmentsGCSA2RT_Node0 -- No --> E_SecondarySegmentsGCSA2RT
File: GCX016.cbl
GIVEN:
A database operation involves secondary segments
WHEN:
The system processes the GCSA2RT segment type
THEN:
The system accesses the GCSA2RT database for secondary segment operations
β Consolidated Acceptance Criteria
- The system processes the U1 segment type → the system accesses the appropriate database for shipment segment operations
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ShipmentSegmentsU1(["Start Step"])
E_ShipmentSegmentsU1(["End Step"])
N_ShipmentSegmentsU1_Node0{"The system processes the U1 segment
type"}:::decision N_ShipmentSegmentsU1_Node0_action["The system accesses the appropriate
database for shipment segment
operations"]:::main N_ShipmentSegmentsU1_Node0 -- Yes --> N_ShipmentSegmentsU1_Node0_action N_ShipmentSegmentsU1_Node0_action --> E_ShipmentSegmentsU1 S_ShipmentSegmentsU1 --> N_ShipmentSegmentsU1_Node0 N_ShipmentSegmentsU1_Node0 -- No --> E_ShipmentSegmentsU1
type"}:::decision N_ShipmentSegmentsU1_Node0_action["The system accesses the appropriate
database for shipment segment
operations"]:::main N_ShipmentSegmentsU1_Node0 -- Yes --> N_ShipmentSegmentsU1_Node0_action N_ShipmentSegmentsU1_Node0_action --> E_ShipmentSegmentsU1 S_ShipmentSegmentsU1 --> N_ShipmentSegmentsU1_Node0 N_ShipmentSegmentsU1_Node0 -- No --> E_ShipmentSegmentsU1
File: GCX016.cbl
GIVEN:
A database operation involves U1 shipment segments
WHEN:
The system processes the U1 segment type
THEN:
The system accesses the appropriate database for shipment segment operations
β Consolidated Acceptance Criteria
- The system processes A9RT or A9DP segment types → the system accesses the A9RT/A9DP database for transmission segment operations
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_TransmissionSegmentsA9RTA9DP(["Start Step"])
E_TransmissionSegmentsA9RTA9DP(["End Step"])
N_TransmissionSegmentsA9RTA9DP_Node0{"The system processes A9RT or A9DP
segment types"}:::decision N_TransmissionSegmentsA9RTA9DP_Node0_action["The system accesses the A9RTA9DP
database for transmission segment
operations"]:::main N_TransmissionSegmentsA9RTA9DP_Node0 -- Yes --> N_TransmissionSegmentsA9RTA9DP_Node0_action N_TransmissionSegmentsA9RTA9DP_Node0_action --> E_TransmissionSegmentsA9RTA9DP S_TransmissionSegmentsA9RTA9DP --> N_TransmissionSegmentsA9RTA9DP_Node0 N_TransmissionSegmentsA9RTA9DP_Node0 -- No --> E_TransmissionSegmentsA9RTA9DP
segment types"}:::decision N_TransmissionSegmentsA9RTA9DP_Node0_action["The system accesses the A9RTA9DP
database for transmission segment
operations"]:::main N_TransmissionSegmentsA9RTA9DP_Node0 -- Yes --> N_TransmissionSegmentsA9RTA9DP_Node0_action N_TransmissionSegmentsA9RTA9DP_Node0_action --> E_TransmissionSegmentsA9RTA9DP S_TransmissionSegmentsA9RTA9DP --> N_TransmissionSegmentsA9RTA9DP_Node0 N_TransmissionSegmentsA9RTA9DP_Node0 -- No --> E_TransmissionSegmentsA9RTA9DP
File: GCX016.cbl
GIVEN:
A database operation involves transmission segments
WHEN:
The system processes A9RT or A9DP segment types
THEN:
The system accesses the A9RT/A9DP database for transmission segment operations
β Consolidated Acceptance Criteria
- The system validates the segment key → the system proceeds with database operation if key is valid, otherwise handles database error
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_KeyValid(["Start Step"])
E_KeyValid(["End Step"])
N_KeyValid_Node0{"The system validates the segment
key"}:::decision N_KeyValid_Node0_action["The system proceeds with database
operation if key is valid, otherwise
handles database error"]:::main N_KeyValid_Node0 -- Yes --> N_KeyValid_Node0_action N_KeyValid_Node0_action --> E_KeyValid S_KeyValid --> N_KeyValid_Node0 N_KeyValid_Node0 -- No --> E_KeyValid
key"}:::decision N_KeyValid_Node0_action["The system proceeds with database
operation if key is valid, otherwise
handles database error"]:::main N_KeyValid_Node0 -- Yes --> N_KeyValid_Node0_action N_KeyValid_Node0_action --> E_KeyValid S_KeyValid --> N_KeyValid_Node0 N_KeyValid_Node0 -- No --> E_KeyValid
File: GCX016.cbl
GIVEN:
A database operation requires a segment key
WHEN:
The system validates the segment key
THEN:
The system proceeds with database operation if key is valid, otherwise handles database error
β Consolidated Acceptance Criteria
- The system checks the operation result → the system updates working storage and logs operation if successful, otherwise handles database error
- The system checks the operation result status → if operation successful, log success and continue, otherwise handle database error
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_OperationSuccessful(["Start Step"])
E_OperationSuccessful(["End Step"])
N_OperationSuccessful_Node0{"The system checks the operation
result"}:::decision N_OperationSuccessful_Node0_action["The system updates working storage
and logs operation if successful,
otherwise handles database error"]:::main N_OperationSuccessful_Node0 -- Yes --> N_OperationSuccessful_Node0_action N_OperationSuccessful_Node0_action --> E_OperationSuccessful S_OperationSuccessful --> N_OperationSuccessful_Node0 N_OperationSuccessful_Node1{"The system checks the operation
result status"}:::decision N_OperationSuccessful_Node1_action["If operation successful, log
success and continue, otherwise
handle database error"]:::main N_OperationSuccessful_Node1 -- Yes --> N_OperationSuccessful_Node1_action N_OperationSuccessful_Node1_action --> E_OperationSuccessful N_OperationSuccessful_Node0 -- No --> N_OperationSuccessful_Node1 N_OperationSuccessful_Node1 -- No --> E_OperationSuccessful
result"}:::decision N_OperationSuccessful_Node0_action["The system updates working storage
and logs operation if successful,
otherwise handles database error"]:::main N_OperationSuccessful_Node0 -- Yes --> N_OperationSuccessful_Node0_action N_OperationSuccessful_Node0_action --> E_OperationSuccessful S_OperationSuccessful --> N_OperationSuccessful_Node0 N_OperationSuccessful_Node1{"The system checks the operation
result status"}:::decision N_OperationSuccessful_Node1_action["If operation successful, log
success and continue, otherwise
handle database error"]:::main N_OperationSuccessful_Node1 -- Yes --> N_OperationSuccessful_Node1_action N_OperationSuccessful_Node1_action --> E_OperationSuccessful N_OperationSuccessful_Node0 -- No --> N_OperationSuccessful_Node1 N_OperationSuccessful_Node1 -- No --> E_OperationSuccessful
File: GCX016.cbl
GIVEN:
A database operation has been executed
WHEN:
The system checks the operation result
THEN:
- The system updates working storage
- Logs operation if successful, otherwise handles database error
File: GCX016.cbl
GIVEN:
A database operation has been performed on U1 segment
WHEN:
The system checks the operation result status
THEN:
- If operation successful, log success
- Continue, otherwise handle database error
β Consolidated Acceptance Criteria
- The system initializes a new segment → the system sets default values and prepares segment data before executing database call
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_InitializeNewSegment(["Start Step"])
E_InitializeNewSegment(["End Step"])
N_InitializeNewSegment_Node0{"The system initializes a new
segment"}:::decision N_InitializeNewSegment_Node0_action["The system sets default values and
prepares segment data before
executing database call"]:::main N_InitializeNewSegment_Node0 -- Yes --> N_InitializeNewSegment_Node0_action N_InitializeNewSegment_Node0_action --> E_InitializeNewSegment S_InitializeNewSegment --> N_InitializeNewSegment_Node0 N_InitializeNewSegment_Node0 -- No --> E_InitializeNewSegment
segment"}:::decision N_InitializeNewSegment_Node0_action["The system sets default values and
prepares segment data before
executing database call"]:::main N_InitializeNewSegment_Node0 -- Yes --> N_InitializeNewSegment_Node0_action N_InitializeNewSegment_Node0_action --> E_InitializeNewSegment S_InitializeNewSegment --> N_InitializeNewSegment_Node0 N_InitializeNewSegment_Node0 -- No --> E_InitializeNewSegment
File: GCX016.cbl
GIVEN:
An insert operation is being performed
WHEN:
The system initializes a new segment
THEN:
- The system sets default values
- Prepares segment data before executing database call
β Consolidated Acceptance Criteria
- The system sets default values → the system prepares segment data with appropriate default values before database insertion
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetDefaultValues(["Start Step"])
E_SetDefaultValues(["End Step"])
N_SetDefaultValues_Node0{"The system sets default values"}:::decision
N_SetDefaultValues_Node0_action["The system prepares segment data
with appropriate default values
before database insertion"]:::main N_SetDefaultValues_Node0 -- Yes --> N_SetDefaultValues_Node0_action N_SetDefaultValues_Node0_action --> E_SetDefaultValues S_SetDefaultValues --> N_SetDefaultValues_Node0 N_SetDefaultValues_Node0 -- No --> E_SetDefaultValues
with appropriate default values
before database insertion"]:::main N_SetDefaultValues_Node0 -- Yes --> N_SetDefaultValues_Node0_action N_SetDefaultValues_Node0_action --> E_SetDefaultValues S_SetDefaultValues --> N_SetDefaultValues_Node0 N_SetDefaultValues_Node0 -- No --> E_SetDefaultValues
File: GCX016.cbl
GIVEN:
A new segment is being initialized for insert
WHEN:
The system sets default values
THEN:
The system prepares segment data with appropriate default values before database insertion
β Consolidated Acceptance Criteria
- The system replaces an existing segment → the system executes the database call to update the existing segment
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ReplaceExistingSegment(["Start Step"])
E_ReplaceExistingSegment(["End Step"])
N_ReplaceExistingSegment_Node0{"The system replaces an existing
segment"}:::decision N_ReplaceExistingSegment_Node0_action["The system executes the database
call to update the existing segment"]:::main N_ReplaceExistingSegment_Node0 -- Yes --> N_ReplaceExistingSegment_Node0_action N_ReplaceExistingSegment_Node0_action --> E_ReplaceExistingSegment S_ReplaceExistingSegment --> N_ReplaceExistingSegment_Node0 N_ReplaceExistingSegment_Node0 -- No --> E_ReplaceExistingSegment
segment"}:::decision N_ReplaceExistingSegment_Node0_action["The system executes the database
call to update the existing segment"]:::main N_ReplaceExistingSegment_Node0 -- Yes --> N_ReplaceExistingSegment_Node0_action N_ReplaceExistingSegment_Node0_action --> E_ReplaceExistingSegment S_ReplaceExistingSegment --> N_ReplaceExistingSegment_Node0 N_ReplaceExistingSegment_Node0 -- No --> E_ReplaceExistingSegment
File: GCX016.cbl
GIVEN:
A replace operation is being performed
WHEN:
The system replaces an existing segment
THEN:
The system executes the database call to update the existing segment
β Consolidated Acceptance Criteria
- The system fetches a segment by key → the system loads the segment into working storage and validates retrieved data
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_FetchSegmentbyKey(["Start Step"])
E_FetchSegmentbyKey(["End Step"])
N_FetchSegmentbyKey_Node0{"The system fetches a segment by key"}:::decision
N_FetchSegmentbyKey_Node0_action["The system loads the segment into
working storage and validates
retrieved data"]:::main N_FetchSegmentbyKey_Node0 -- Yes --> N_FetchSegmentbyKey_Node0_action N_FetchSegmentbyKey_Node0_action --> E_FetchSegmentbyKey S_FetchSegmentbyKey --> N_FetchSegmentbyKey_Node0 N_FetchSegmentbyKey_Node0 -- No --> E_FetchSegmentbyKey
working storage and validates
retrieved data"]:::main N_FetchSegmentbyKey_Node0 -- Yes --> N_FetchSegmentbyKey_Node0_action N_FetchSegmentbyKey_Node0_action --> E_FetchSegmentbyKey S_FetchSegmentbyKey --> N_FetchSegmentbyKey_Node0 N_FetchSegmentbyKey_Node0 -- No --> E_FetchSegmentbyKey
File: GCX016.cbl
GIVEN:
A retrieve operation is being performed
WHEN:
The system fetches a segment by key
THEN:
- The system loads the segment into working storage
- Validates retrieved data
β Consolidated Acceptance Criteria
- The system validates the retrieved data → the system updates working storage if data is valid
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ValidateRetrievedData(["Start Step"])
E_ValidateRetrievedData(["End Step"])
N_ValidateRetrievedData_Node0{"The system validates the retrieved
data"}:::decision N_ValidateRetrievedData_Node0_action["The system updates working storage
if data is valid"]:::main N_ValidateRetrievedData_Node0 -- Yes --> N_ValidateRetrievedData_Node0_action N_ValidateRetrievedData_Node0_action --> E_ValidateRetrievedData S_ValidateRetrievedData --> N_ValidateRetrievedData_Node0 N_ValidateRetrievedData_Node0 -- No --> E_ValidateRetrievedData
data"}:::decision N_ValidateRetrievedData_Node0_action["The system updates working storage
if data is valid"]:::main N_ValidateRetrievedData_Node0 -- Yes --> N_ValidateRetrievedData_Node0_action N_ValidateRetrievedData_Node0_action --> E_ValidateRetrievedData S_ValidateRetrievedData --> N_ValidateRetrievedData_Node0 N_ValidateRetrievedData_Node0 -- No --> E_ValidateRetrievedData
File: GCX016.cbl
GIVEN:
Data has been retrieved from the database
WHEN:
The system validates the retrieved data
THEN:
The system updates working storage if data is valid
β Consolidated Acceptance Criteria
- The system logs the operation → the system returns success status
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogOperation(["Start Step"])
E_LogOperation(["End Step"])
N_LogOperation_Node0{"The system logs the operation"}:::decision
N_LogOperation_Node0_action["The system returns success status"]:::main
N_LogOperation_Node0 -- Yes --> N_LogOperation_Node0_action
N_LogOperation_Node0_action --> E_LogOperation
S_LogOperation --> N_LogOperation_Node0
N_LogOperation_Node0 -- No --> E_LogOperation
File: GCX016.cbl
GIVEN:
A database operation has completed successfully and working storage is updated
WHEN:
The system logs the operation
THEN:
The system returns success status
β Consolidated Acceptance Criteria
- The system matches equipment IDs between US and Canadian systems → a cross-border coordination link is established between the cargo records
- Equipment ID match is confirmed between US and Canadian systems → a cross-border link is established between the corresponding cargo records
- The system establishes cross-border coordination → a cross-border link is created between the cargo records
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_EstablishCrossBorderLink(["Start Step"])
E_EstablishCrossBorderLink(["End Step"])
N_EstablishCrossBorderLink_Node0{"The system matches equipment IDs
between US and Canadian systems"}:::decision N_EstablishCrossBorderLink_Node0_action["A cross-border coordination link is
established between the cargo
records"]:::main N_EstablishCrossBorderLink_Node0 -- Yes --> N_EstablishCrossBorderLink_Node0_action N_EstablishCrossBorderLink_Node0_action --> E_EstablishCrossBorderLink S_EstablishCrossBorderLink --> N_EstablishCrossBorderLink_Node0 N_EstablishCrossBorderLink_Node1{"Equipment ID match is confirmed
between US and Canadian systems"}:::decision N_EstablishCrossBorderLink_Node1_action["A cross-border link is established
between the corresponding cargo
records"]:::main N_EstablishCrossBorderLink_Node1 -- Yes --> N_EstablishCrossBorderLink_Node1_action N_EstablishCrossBorderLink_Node1_action --> E_EstablishCrossBorderLink N_EstablishCrossBorderLink_Node0 -- No --> N_EstablishCrossBorderLink_Node1 N_EstablishCrossBorderLink_Node2{"The system establishes cross-border
coordination"}:::decision N_EstablishCrossBorderLink_Node2_action["A cross-border link is created
between the cargo records"]:::main N_EstablishCrossBorderLink_Node2 -- Yes --> N_EstablishCrossBorderLink_Node2_action N_EstablishCrossBorderLink_Node2_action --> E_EstablishCrossBorderLink N_EstablishCrossBorderLink_Node1 -- No --> N_EstablishCrossBorderLink_Node2 N_EstablishCrossBorderLink_Node2 -- No --> E_EstablishCrossBorderLink
between US and Canadian systems"}:::decision N_EstablishCrossBorderLink_Node0_action["A cross-border coordination link is
established between the cargo
records"]:::main N_EstablishCrossBorderLink_Node0 -- Yes --> N_EstablishCrossBorderLink_Node0_action N_EstablishCrossBorderLink_Node0_action --> E_EstablishCrossBorderLink S_EstablishCrossBorderLink --> N_EstablishCrossBorderLink_Node0 N_EstablishCrossBorderLink_Node1{"Equipment ID match is confirmed
between US and Canadian systems"}:::decision N_EstablishCrossBorderLink_Node1_action["A cross-border link is established
between the corresponding cargo
records"]:::main N_EstablishCrossBorderLink_Node1 -- Yes --> N_EstablishCrossBorderLink_Node1_action N_EstablishCrossBorderLink_Node1_action --> E_EstablishCrossBorderLink N_EstablishCrossBorderLink_Node0 -- No --> N_EstablishCrossBorderLink_Node1 N_EstablishCrossBorderLink_Node2{"The system establishes cross-border
coordination"}:::decision N_EstablishCrossBorderLink_Node2_action["A cross-border link is created
between the cargo records"]:::main N_EstablishCrossBorderLink_Node2 -- Yes --> N_EstablishCrossBorderLink_Node2_action N_EstablishCrossBorderLink_Node2_action --> E_EstablishCrossBorderLink N_EstablishCrossBorderLink_Node1 -- No --> N_EstablishCrossBorderLink_Node2 N_EstablishCrossBorderLink_Node2 -- No --> E_EstablishCrossBorderLink
File: GCX016.cbl
GIVEN:
Valid Canadian cargo records are found and US cargo equipment ID is available
WHEN:
- The system matches equipment ids between us
- Canadian systems
THEN:
A cross-border coordination link is established between the cargo records
File: GCX016.cbl
GIVEN:
Valid Canadian cargo records are found with matching equipment ID
WHEN:
- Equipment id match is confirmed between us
- Canadian systems
THEN:
A cross-border link is established between the corresponding cargo records
File: GCX016.cbl
GIVEN:
Equipment identifiers match between US and Canadian systems
WHEN:
The system establishes cross-border coordination
THEN:
A cross-border link is created between the cargo records
β Consolidated Acceptance Criteria
- Canadian cargo information is retrieved and linked with US cargo → the coordination activity is logged with cargo details and timestamp
- The system logs the cross-border coordination → the cargo release information is logged to the GCX105 system for audit trail and tracking
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogCrossBorderCoordination(["Start Step"])
E_LogCrossBorderCoordination(["End Step"])
N_LogCrossBorderCoordination_Node0{"Canadian cargo information is
retrieved and linked with US cargo"}:::decision N_LogCrossBorderCoordination_Node0_action["The coordination activity is logged
with cargo details and timestamp"]:::main N_LogCrossBorderCoordination_Node0 -- Yes --> N_LogCrossBorderCoordination_Node0_action N_LogCrossBorderCoordination_Node0_action --> E_LogCrossBorderCoordination S_LogCrossBorderCoordination --> N_LogCrossBorderCoordination_Node0 N_LogCrossBorderCoordination_Node1{"The system logs the cross-border
coordination"}:::decision N_LogCrossBorderCoordination_Node1_action["The cargo release information is
logged to the GCX105 system for
audit trail and tracking"]:::main N_LogCrossBorderCoordination_Node1 -- Yes --> N_LogCrossBorderCoordination_Node1_action N_LogCrossBorderCoordination_Node1_action --> E_LogCrossBorderCoordination N_LogCrossBorderCoordination_Node0 -- No --> N_LogCrossBorderCoordination_Node1 N_LogCrossBorderCoordination_Node1 -- No --> E_LogCrossBorderCoordination
retrieved and linked with US cargo"}:::decision N_LogCrossBorderCoordination_Node0_action["The coordination activity is logged
with cargo details and timestamp"]:::main N_LogCrossBorderCoordination_Node0 -- Yes --> N_LogCrossBorderCoordination_Node0_action N_LogCrossBorderCoordination_Node0_action --> E_LogCrossBorderCoordination S_LogCrossBorderCoordination --> N_LogCrossBorderCoordination_Node0 N_LogCrossBorderCoordination_Node1{"The system logs the cross-border
coordination"}:::decision N_LogCrossBorderCoordination_Node1_action["The cargo release information is
logged to the GCX105 system for
audit trail and tracking"]:::main N_LogCrossBorderCoordination_Node1 -- Yes --> N_LogCrossBorderCoordination_Node1_action N_LogCrossBorderCoordination_Node1_action --> E_LogCrossBorderCoordination N_LogCrossBorderCoordination_Node0 -- No --> N_LogCrossBorderCoordination_Node1 N_LogCrossBorderCoordination_Node1 -- No --> E_LogCrossBorderCoordination
File: GCX016.cbl
GIVEN:
Cross-border cargo coordination is performed
WHEN:
- Canadian cargo information is retrieved
- Linked with us cargo
THEN:
- The coordination activity is logged with cargo details
- Timestamp
File: GCX016.cbl
GIVEN:
A Canadian cargo record has been added to the matching records list
WHEN:
The system logs the cross-border coordination
THEN:
- The cargo release information is logged to the gcx105 system for audit trail
- Tracking
β Consolidated Acceptance Criteria
- The system processes the cargo record for Canadian matching → the equipment ID is extracted and made available for Canadian system lookup
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExtractEquipmentIDfromUSCargoRecord(["Start Step"])
E_ExtractEquipmentIDfromUSCargoRecord(["End Step"])
N_ExtractEquipmentIDfromUSCargoRecord_Node0{"The system processes the cargo
record for Canadian matching"}:::decision N_ExtractEquipmentIDfromUSCargoRecord_Node0_action["The equipment ID is extracted and
made available for Canadian system
lookup"]:::main N_ExtractEquipmentIDfromUSCargoRecord_Node0 -- Yes --> N_ExtractEquipmentIDfromUSCargoRecord_Node0_action N_ExtractEquipmentIDfromUSCargoRecord_Node0_action --> E_ExtractEquipmentIDfromUSCargoRecord S_ExtractEquipmentIDfromUSCargoRecord --> N_ExtractEquipmentIDfromUSCargoRecord_Node0 N_ExtractEquipmentIDfromUSCargoRecord_Node0 -- No --> E_ExtractEquipmentIDfromUSCargoRecord
record for Canadian matching"}:::decision N_ExtractEquipmentIDfromUSCargoRecord_Node0_action["The equipment ID is extracted and
made available for Canadian system
lookup"]:::main N_ExtractEquipmentIDfromUSCargoRecord_Node0 -- Yes --> N_ExtractEquipmentIDfromUSCargoRecord_Node0_action N_ExtractEquipmentIDfromUSCargoRecord_Node0_action --> E_ExtractEquipmentIDfromUSCargoRecord S_ExtractEquipmentIDfromUSCargoRecord --> N_ExtractEquipmentIDfromUSCargoRecord_Node0 N_ExtractEquipmentIDfromUSCargoRecord_Node0 -- No --> E_ExtractEquipmentIDfromUSCargoRecord
File: GCX016.cbl
GIVEN:
A US cargo record exists with equipment information
WHEN:
The system processes the cargo record for Canadian matching
THEN:
- The equipment id is extracted
- Made available for canadian system lookup
β Consolidated Acceptance Criteria
- The system prepares to search Canadian cargo database → the equipment ID is formatted according to Canadian system requirements
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_FormatEquipmentIDforCanadianSystemLookup(["Start Step"])
E_FormatEquipmentIDforCanadianSystemLookup(["End Step"])
N_FormatEquipmentIDforCanadianSystemLookup_Node0{"The system prepares to search
Canadian cargo database"}:::decision N_FormatEquipmentIDforCanadianSystemLookup_Node0_action["The equipment ID is formatted
according to Canadian system
requirements"]:::main N_FormatEquipmentIDforCanadianSystemLookup_Node0 -- Yes --> N_FormatEquipmentIDforCanadianSystemLookup_Node0_action N_FormatEquipmentIDforCanadianSystemLookup_Node0_action --> E_FormatEquipmentIDforCanadianSystemLookup S_FormatEquipmentIDforCanadianSystemLookup --> N_FormatEquipmentIDforCanadianSystemLookup_Node0 N_FormatEquipmentIDforCanadianSystemLookup_Node0 -- No --> E_FormatEquipmentIDforCanadianSystemLookup
Canadian cargo database"}:::decision N_FormatEquipmentIDforCanadianSystemLookup_Node0_action["The equipment ID is formatted
according to Canadian system
requirements"]:::main N_FormatEquipmentIDforCanadianSystemLookup_Node0 -- Yes --> N_FormatEquipmentIDforCanadianSystemLookup_Node0_action N_FormatEquipmentIDforCanadianSystemLookup_Node0_action --> E_FormatEquipmentIDforCanadianSystemLookup S_FormatEquipmentIDforCanadianSystemLookup --> N_FormatEquipmentIDforCanadianSystemLookup_Node0 N_FormatEquipmentIDforCanadianSystemLookup_Node0 -- No --> E_FormatEquipmentIDforCanadianSystemLookup
File: GCX016.cbl
GIVEN:
An equipment ID has been extracted from US cargo record
WHEN:
The system prepares to search Canadian cargo database
THEN:
The equipment ID is formatted according to Canadian system requirements
β Consolidated Acceptance Criteria
- The system searches the Canadian cargo database → canadian cargo records matching the equipment ID are retrieved
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SearchCanadianCargoDatabasebyEquipmentID(["Start Step"])
E_SearchCanadianCargoDatabasebyEquipmentID(["End Step"])
N_SearchCanadianCargoDatabasebyEquipmentID_Node0{"The system searches the Canadian
cargo database"}:::decision N_SearchCanadianCargoDatabasebyEquipmentID_Node0_action["Canadian cargo records matching the
equipment ID are retrieved"]:::main N_SearchCanadianCargoDatabasebyEquipmentID_Node0 -- Yes --> N_SearchCanadianCargoDatabasebyEquipmentID_Node0_action N_SearchCanadianCargoDatabasebyEquipmentID_Node0_action --> E_SearchCanadianCargoDatabasebyEquipmentID S_SearchCanadianCargoDatabasebyEquipmentID --> N_SearchCanadianCargoDatabasebyEquipmentID_Node0 N_SearchCanadianCargoDatabasebyEquipmentID_Node0 -- No --> E_SearchCanadianCargoDatabasebyEquipmentID
cargo database"}:::decision N_SearchCanadianCargoDatabasebyEquipmentID_Node0_action["Canadian cargo records matching the
equipment ID are retrieved"]:::main N_SearchCanadianCargoDatabasebyEquipmentID_Node0 -- Yes --> N_SearchCanadianCargoDatabasebyEquipmentID_Node0_action N_SearchCanadianCargoDatabasebyEquipmentID_Node0_action --> E_SearchCanadianCargoDatabasebyEquipmentID S_SearchCanadianCargoDatabasebyEquipmentID --> N_SearchCanadianCargoDatabasebyEquipmentID_Node0 N_SearchCanadianCargoDatabasebyEquipmentID_Node0 -- No --> E_SearchCanadianCargoDatabasebyEquipmentID
File: GCX016.cbl
GIVEN:
A formatted equipment ID is available for lookup
WHEN:
The system searches the Canadian cargo database
THEN:
Canadian cargo records matching the equipment ID are retrieved
β Consolidated Acceptance Criteria
- The system validates the record status → the system determines if the Canadian record is valid for processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ValidateCanadianCargoRecordStatus(["Start Step"])
E_ValidateCanadianCargoRecordStatus(["End Step"])
N_ValidateCanadianCargoRecordStatus_Node0{"The system validates the record
status"}:::decision N_ValidateCanadianCargoRecordStatus_Node0_action["The system determines if the
Canadian record is valid for
processing"]:::main N_ValidateCanadianCargoRecordStatus_Node0 -- Yes --> N_ValidateCanadianCargoRecordStatus_Node0_action N_ValidateCanadianCargoRecordStatus_Node0_action --> E_ValidateCanadianCargoRecordStatus S_ValidateCanadianCargoRecordStatus --> N_ValidateCanadianCargoRecordStatus_Node0 N_ValidateCanadianCargoRecordStatus_Node0 -- No --> E_ValidateCanadianCargoRecordStatus
status"}:::decision N_ValidateCanadianCargoRecordStatus_Node0_action["The system determines if the
Canadian record is valid for
processing"]:::main N_ValidateCanadianCargoRecordStatus_Node0 -- Yes --> N_ValidateCanadianCargoRecordStatus_Node0_action N_ValidateCanadianCargoRecordStatus_Node0_action --> E_ValidateCanadianCargoRecordStatus S_ValidateCanadianCargoRecordStatus --> N_ValidateCanadianCargoRecordStatus_Node0 N_ValidateCanadianCargoRecordStatus_Node0 -- No --> E_ValidateCanadianCargoRecordStatus
File: GCX016.cbl
GIVEN:
Canadian cargo records have been found for the equipment ID
WHEN:
The system validates the record status
THEN:
The system determines if the Canadian record is valid for processing
β Consolidated Acceptance Criteria
- If the validation results → the system determines if the record is valid or invalid/deleted
- The system validates Canadian record status → canadian record is valid if it is not deleted and not marked as new bond created record
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CanadianRecordValid(["Start Step"])
E_CanadianRecordValid(["End Step"])
N_CanadianRecordValid_Node0{"The system evaluates the validation
results"}:::decision N_CanadianRecordValid_Node0_action["The system determines if the record
is valid or invaliddeleted"]:::main N_CanadianRecordValid_Node0 -- Yes --> N_CanadianRecordValid_Node0_action N_CanadianRecordValid_Node0_action --> E_CanadianRecordValid S_CanadianRecordValid --> N_CanadianRecordValid_Node0 N_CanadianRecordValid_Node1{"the system validates Canadian
record status"}:::decision N_CanadianRecordValid_Node1_action["Canadian record is valid if it is
not deleted and not marked as new
bond created record"]:::main N_CanadianRecordValid_Node1 -- Yes --> N_CanadianRecordValid_Node1_action N_CanadianRecordValid_Node1_action --> E_CanadianRecordValid N_CanadianRecordValid_Node0 -- No --> N_CanadianRecordValid_Node1 N_CanadianRecordValid_Node1 -- No --> E_CanadianRecordValid
results"}:::decision N_CanadianRecordValid_Node0_action["The system determines if the record
is valid or invaliddeleted"]:::main N_CanadianRecordValid_Node0 -- Yes --> N_CanadianRecordValid_Node0_action N_CanadianRecordValid_Node0_action --> E_CanadianRecordValid S_CanadianRecordValid --> N_CanadianRecordValid_Node0 N_CanadianRecordValid_Node1{"the system validates Canadian
record status"}:::decision N_CanadianRecordValid_Node1_action["Canadian record is valid if it is
not deleted and not marked as new
bond created record"]:::main N_CanadianRecordValid_Node1 -- Yes --> N_CanadianRecordValid_Node1_action N_CanadianRecordValid_Node1_action --> E_CanadianRecordValid N_CanadianRecordValid_Node0 -- No --> N_CanadianRecordValid_Node1 N_CanadianRecordValid_Node1 -- No --> E_CanadianRecordValid
File: GCX016.cbl
GIVEN:
Canadian cargo record status has been validated
WHEN:
The system evaluates the validation results
THEN:
The system determines if the record is valid or invalid/deleted
File: GCX016.cbl
GIVEN:
Canadian manifest records have been found for the equipment ID
WHEN:
the system validates Canadian record status
THEN:
- Canadian record is valid if it is not deleted
- Not marked as new bond created record
β Consolidated Acceptance Criteria
- The system processes the matching logic → uS and Canadian cargo records are matched and linked
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MatchUSandCanadianCargoRecords(["Start Step"])
E_MatchUSandCanadianCargoRecords(["End Step"])
N_MatchUSandCanadianCargoRecords_Node0{"The system processes the matching
logic"}:::decision N_MatchUSandCanadianCargoRecords_Node0_action["US and Canadian cargo records are
matched and linked"]:::main N_MatchUSandCanadianCargoRecords_Node0 -- Yes --> N_MatchUSandCanadianCargoRecords_Node0_action N_MatchUSandCanadianCargoRecords_Node0_action --> E_MatchUSandCanadianCargoRecords S_MatchUSandCanadianCargoRecords --> N_MatchUSandCanadianCargoRecords_Node0 N_MatchUSandCanadianCargoRecords_Node0 -- No --> E_MatchUSandCanadianCargoRecords
logic"}:::decision N_MatchUSandCanadianCargoRecords_Node0_action["US and Canadian cargo records are
matched and linked"]:::main N_MatchUSandCanadianCargoRecords_Node0 -- Yes --> N_MatchUSandCanadianCargoRecords_Node0_action N_MatchUSandCanadianCargoRecords_Node0_action --> E_MatchUSandCanadianCargoRecords S_MatchUSandCanadianCargoRecords --> N_MatchUSandCanadianCargoRecords_Node0 N_MatchUSandCanadianCargoRecords_Node0 -- No --> E_MatchUSandCanadianCargoRecords
File: GCX016.cbl
GIVEN:
A valid Canadian cargo record exists for the equipment ID
WHEN:
The system processes the matching logic
THEN:
- Us
- Canadian cargo records are matched
- Linked
β Consolidated Acceptance Criteria
- The system stores the match information → cross-reference data is saved for cross-border coordination
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_StoreCrossReferenceInformation(["Start Step"])
E_StoreCrossReferenceInformation(["End Step"])
N_StoreCrossReferenceInformation_Node0{"The system stores the match
information"}:::decision N_StoreCrossReferenceInformation_Node0_action["Cross-reference data is saved for
cross-border coordination"]:::main N_StoreCrossReferenceInformation_Node0 -- Yes --> N_StoreCrossReferenceInformation_Node0_action N_StoreCrossReferenceInformation_Node0_action --> E_StoreCrossReferenceInformation S_StoreCrossReferenceInformation --> N_StoreCrossReferenceInformation_Node0 N_StoreCrossReferenceInformation_Node0 -- No --> E_StoreCrossReferenceInformation
information"}:::decision N_StoreCrossReferenceInformation_Node0_action["Cross-reference data is saved for
cross-border coordination"]:::main N_StoreCrossReferenceInformation_Node0 -- Yes --> N_StoreCrossReferenceInformation_Node0_action N_StoreCrossReferenceInformation_Node0_action --> E_StoreCrossReferenceInformation S_StoreCrossReferenceInformation --> N_StoreCrossReferenceInformation_Node0 N_StoreCrossReferenceInformation_Node0 -- No --> E_StoreCrossReferenceInformation
File: GCX016.cbl
GIVEN:
US and Canadian cargo records have been successfully matched
WHEN:
The system stores the match information
THEN:
Cross-reference data is saved for cross-border coordination
β Consolidated Acceptance Criteria
- The system completes the matching process → a successful match is logged for cross-border coordination tracking
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogSuccessfulMatchforCrossBorderCoordination(["Start Step"])
E_LogSuccessfulMatchforCrossBorderCoordination(["End Step"])
N_LogSuccessfulMatchforCrossBorderCoordination_Node0{"The system completes the matching
process"}:::decision N_LogSuccessfulMatchforCrossBorderCoordination_Node0_action["A successful match is logged for
cross-border coordination tracking"]:::main N_LogSuccessfulMatchforCrossBorderCoordination_Node0 -- Yes --> N_LogSuccessfulMatchforCrossBorderCoordination_Node0_action N_LogSuccessfulMatchforCrossBorderCoordination_Node0_action --> E_LogSuccessfulMatchforCrossBorderCoordination S_LogSuccessfulMatchforCrossBorderCoordination --> N_LogSuccessfulMatchforCrossBorderCoordination_Node0 N_LogSuccessfulMatchforCrossBorderCoordination_Node0 -- No --> E_LogSuccessfulMatchforCrossBorderCoordination
process"}:::decision N_LogSuccessfulMatchforCrossBorderCoordination_Node0_action["A successful match is logged for
cross-border coordination tracking"]:::main N_LogSuccessfulMatchforCrossBorderCoordination_Node0 -- Yes --> N_LogSuccessfulMatchforCrossBorderCoordination_Node0_action N_LogSuccessfulMatchforCrossBorderCoordination_Node0_action --> E_LogSuccessfulMatchforCrossBorderCoordination S_LogSuccessfulMatchforCrossBorderCoordination --> N_LogSuccessfulMatchforCrossBorderCoordination_Node0 N_LogSuccessfulMatchforCrossBorderCoordination_Node0 -- No --> E_LogSuccessfulMatchforCrossBorderCoordination
File: GCX016.cbl
GIVEN:
Cross-reference information has been stored successfully
WHEN:
The system completes the matching process
THEN:
A successful match is logged for cross-border coordination tracking
β Consolidated Acceptance Criteria
- The system processes the no-match condition → the absence of Canadian match is logged for tracking purposes
- No Canadian cargo records are found matching the equipment ID → the system logs that no Canadian match was found and continues with US-only processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogNoCanadianMatchFound(["Start Step"])
E_LogNoCanadianMatchFound(["End Step"])
N_LogNoCanadianMatchFound_Node0{"The system processes the no-match
condition"}:::decision N_LogNoCanadianMatchFound_Node0_action["The absence of Canadian match is
logged for tracking purposes"]:::main N_LogNoCanadianMatchFound_Node0 -- Yes --> N_LogNoCanadianMatchFound_Node0_action N_LogNoCanadianMatchFound_Node0_action --> E_LogNoCanadianMatchFound S_LogNoCanadianMatchFound --> N_LogNoCanadianMatchFound_Node0 N_LogNoCanadianMatchFound_Node1{"No Canadian cargo records are found
matching the equipment ID"}:::decision N_LogNoCanadianMatchFound_Node1_action["The system logs that no Canadian
match was found and continues with
US-only processing"]:::main N_LogNoCanadianMatchFound_Node1 -- Yes --> N_LogNoCanadianMatchFound_Node1_action N_LogNoCanadianMatchFound_Node1_action --> E_LogNoCanadianMatchFound N_LogNoCanadianMatchFound_Node0 -- No --> N_LogNoCanadianMatchFound_Node1 N_LogNoCanadianMatchFound_Node1 -- No --> E_LogNoCanadianMatchFound
condition"}:::decision N_LogNoCanadianMatchFound_Node0_action["The absence of Canadian match is
logged for tracking purposes"]:::main N_LogNoCanadianMatchFound_Node0 -- Yes --> N_LogNoCanadianMatchFound_Node0_action N_LogNoCanadianMatchFound_Node0_action --> E_LogNoCanadianMatchFound S_LogNoCanadianMatchFound --> N_LogNoCanadianMatchFound_Node0 N_LogNoCanadianMatchFound_Node1{"No Canadian cargo records are found
matching the equipment ID"}:::decision N_LogNoCanadianMatchFound_Node1_action["The system logs that no Canadian
match was found and continues with
US-only processing"]:::main N_LogNoCanadianMatchFound_Node1 -- Yes --> N_LogNoCanadianMatchFound_Node1_action N_LogNoCanadianMatchFound_Node1_action --> E_LogNoCanadianMatchFound N_LogNoCanadianMatchFound_Node0 -- No --> N_LogNoCanadianMatchFound_Node1 N_LogNoCanadianMatchFound_Node1 -- No --> E_LogNoCanadianMatchFound
File: GCX016.cbl
GIVEN:
No Canadian cargo records were found for the equipment ID
WHEN:
The system processes the no-match condition
THEN:
The absence of Canadian match is logged for tracking purposes
File: GCX016.cbl
GIVEN:
A search for Canadian cargo records by equipment ID is performed
WHEN:
No Canadian cargo records are found matching the equipment ID
THEN:
- The system logs that no canadian match was found
- Continues with us-only processing
β Consolidated Acceptance Criteria
- The system processes the invalid record → the Canadian record is marked as invalid/deleted and excluded from matching
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MarkCanadianRecordasInvalidDeleted(["Start Step"])
E_MarkCanadianRecordasInvalidDeleted(["End Step"])
N_MarkCanadianRecordasInvalidDeleted_Node0{"The system processes the invalid
record"}:::decision N_MarkCanadianRecordasInvalidDeleted_Node0_action["The Canadian record is marked as
invaliddeleted and excluded from
matching"]:::exclusion N_MarkCanadianRecordasInvalidDeleted_Node0 -- Yes -->|Alternative| N_MarkCanadianRecordasInvalidDeleted_Node0_action N_MarkCanadianRecordasInvalidDeleted_Node0_action --> E_MarkCanadianRecordasInvalidDeleted S_MarkCanadianRecordasInvalidDeleted --> N_MarkCanadianRecordasInvalidDeleted_Node0 N_MarkCanadianRecordasInvalidDeleted_Node0 -- No --> E_MarkCanadianRecordasInvalidDeleted
record"}:::decision N_MarkCanadianRecordasInvalidDeleted_Node0_action["The Canadian record is marked as
invaliddeleted and excluded from
matching"]:::exclusion N_MarkCanadianRecordasInvalidDeleted_Node0 -- Yes -->|Alternative| N_MarkCanadianRecordasInvalidDeleted_Node0_action N_MarkCanadianRecordasInvalidDeleted_Node0_action --> E_MarkCanadianRecordasInvalidDeleted S_MarkCanadianRecordasInvalidDeleted --> N_MarkCanadianRecordasInvalidDeleted_Node0 N_MarkCanadianRecordasInvalidDeleted_Node0 -- No --> E_MarkCanadianRecordasInvalidDeleted
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
Canadian cargo record exists but has invalid or deleted status
WHEN:
The system processes the invalid record
THEN:
- The canadian record is marked as invalid/deleted
- Excluded from matching
β Consolidated Acceptance Criteria
- The system continues with cargo processing → processing continues without Canadian cross-reference information
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ContinueProcessingWithoutCanadianMatch(["Start Step"])
E_ContinueProcessingWithoutCanadianMatch(["End Step"])
N_ContinueProcessingWithoutCanadianMatch_Node0{"The system continues with cargo
processing"}:::decision N_ContinueProcessingWithoutCanadianMatch_Node0_action["Processing continues without
Canadian cross-reference information"]:::main N_ContinueProcessingWithoutCanadianMatch_Node0 -- Yes --> N_ContinueProcessingWithoutCanadianMatch_Node0_action N_ContinueProcessingWithoutCanadianMatch_Node0_action --> E_ContinueProcessingWithoutCanadianMatch S_ContinueProcessingWithoutCanadianMatch --> N_ContinueProcessingWithoutCanadianMatch_Node0 N_ContinueProcessingWithoutCanadianMatch_Node0 -- No --> E_ContinueProcessingWithoutCanadianMatch
processing"}:::decision N_ContinueProcessingWithoutCanadianMatch_Node0_action["Processing continues without
Canadian cross-reference information"]:::main N_ContinueProcessingWithoutCanadianMatch_Node0 -- Yes --> N_ContinueProcessingWithoutCanadianMatch_Node0_action N_ContinueProcessingWithoutCanadianMatch_Node0_action --> E_ContinueProcessingWithoutCanadianMatch S_ContinueProcessingWithoutCanadianMatch --> N_ContinueProcessingWithoutCanadianMatch_Node0 N_ContinueProcessingWithoutCanadianMatch_Node0 -- No --> E_ContinueProcessingWithoutCanadianMatch
File: GCX016.cbl
GIVEN:
No Canadian cargo match is found or Canadian record is invalid
WHEN:
The system continues with cargo processing
THEN:
Processing continues without Canadian cross-reference information
β Consolidated Acceptance Criteria
- The system continues processing → cross-border processing proceeds with linked cargo information
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ContinuewithCrossBorderProcessing(["Start Step"])
E_ContinuewithCrossBorderProcessing(["End Step"])
N_ContinuewithCrossBorderProcessing_Node0{"The system continues processing"}:::decision
N_ContinuewithCrossBorderProcessing_Node0_action["Cross-border processing proceeds
with linked cargo information"]:::main N_ContinuewithCrossBorderProcessing_Node0 -- Yes --> N_ContinuewithCrossBorderProcessing_Node0_action N_ContinuewithCrossBorderProcessing_Node0_action --> E_ContinuewithCrossBorderProcessing S_ContinuewithCrossBorderProcessing --> N_ContinuewithCrossBorderProcessing_Node0 N_ContinuewithCrossBorderProcessing_Node0 -- No --> E_ContinuewithCrossBorderProcessing
with linked cargo information"]:::main N_ContinuewithCrossBorderProcessing_Node0 -- Yes --> N_ContinuewithCrossBorderProcessing_Node0_action N_ContinuewithCrossBorderProcessing_Node0_action --> E_ContinuewithCrossBorderProcessing S_ContinuewithCrossBorderProcessing --> N_ContinuewithCrossBorderProcessing_Node0 N_ContinuewithCrossBorderProcessing_Node0 -- No --> E_ContinuewithCrossBorderProcessing
File: GCX016.cbl
GIVEN:
Successful match has been logged for cross-border coordination
WHEN:
The system continues processing
THEN:
Cross-border processing proceeds with linked cargo information
β Consolidated Acceptance Criteria
- The system attempts to access the Canadian cargo record → the system determines if the record exists and either proceeds to status validation or excludes the record from processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RecordExists(["Start Step"])
E_RecordExists(["End Step"])
N_RecordExists_Node0{"The system attempts to access the
Canadian cargo record"}:::decision N_RecordExists_Node0_action["The system determines if the record
exists and either proceeds to status
validation or excludes the record
from processing"]:::main N_RecordExists_Node0 -- Yes --> N_RecordExists_Node0_action N_RecordExists_Node0_action --> E_RecordExists S_RecordExists --> N_RecordExists_Node0 N_RecordExists_Node0 -- No --> E_RecordExists
Canadian cargo record"}:::decision N_RecordExists_Node0_action["The system determines if the record
exists and either proceeds to status
validation or excludes the record
from processing"]:::main N_RecordExists_Node0 -- Yes --> N_RecordExists_Node0_action N_RecordExists_Node0_action --> E_RecordExists S_RecordExists --> N_RecordExists_Node0 N_RecordExists_Node0 -- No --> E_RecordExists
File: GCX016.cbl
GIVEN:
A Canadian cargo record retrieval operation is performed
WHEN:
The system attempts to access the Canadian cargo record
THEN:
- The system determines if the record exists
- Either proceeds to status validation or excludes the record from processing
β Consolidated Acceptance Criteria
- The record's deletion status is evaluated → if the record is marked as deleted, it is excluded from processing, otherwise status validation continues
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RecordDeleted(["Start Step"])
E_RecordDeleted(["End Step"])
N_RecordDeleted_Node0{"The record s deletion status is
evaluated"}:::decision N_RecordDeleted_Node0_action["If the record is marked as deleted,
it is excluded from processing,
otherwise status validation
continues"]:::main N_RecordDeleted_Node0 -- Yes --> N_RecordDeleted_Node0_action N_RecordDeleted_Node0_action --> E_RecordDeleted S_RecordDeleted --> N_RecordDeleted_Node0 N_RecordDeleted_Node0 -- No --> E_RecordDeleted
evaluated"}:::decision N_RecordDeleted_Node0_action["If the record is marked as deleted,
it is excluded from processing,
otherwise status validation
continues"]:::main N_RecordDeleted_Node0 -- Yes --> N_RecordDeleted_Node0_action N_RecordDeleted_Node0_action --> E_RecordDeleted S_RecordDeleted --> N_RecordDeleted_Node0 N_RecordDeleted_Node0 -- No --> E_RecordDeleted
File: GCX016.cbl
GIVEN:
A Canadian cargo record exists in the system
WHEN:
The record's deletion status is evaluated
THEN:
If the record is marked as deleted, it is excluded from processing, otherwise status validation continues
β Consolidated Acceptance Criteria
- The record's usability status is evaluated → if the record is marked as unusable, it is excluded from processing, otherwise the record is marked as valid for processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RecordUnusable(["Start Step"])
E_RecordUnusable(["End Step"])
N_RecordUnusable_Node0{"The record s usability status is
evaluated"}:::decision N_RecordUnusable_Node0_action["If the record is marked as
unusable, it is excluded from
processing, otherwise the record is
marked as valid for processing"]:::main N_RecordUnusable_Node0 -- Yes --> N_RecordUnusable_Node0_action N_RecordUnusable_Node0_action --> E_RecordUnusable S_RecordUnusable --> N_RecordUnusable_Node0 N_RecordUnusable_Node0 -- No --> E_RecordUnusable
evaluated"}:::decision N_RecordUnusable_Node0_action["If the record is marked as
unusable, it is excluded from
processing, otherwise the record is
marked as valid for processing"]:::main N_RecordUnusable_Node0 -- Yes --> N_RecordUnusable_Node0_action N_RecordUnusable_Node0_action --> E_RecordUnusable S_RecordUnusable --> N_RecordUnusable_Node0 N_RecordUnusable_Node0 -- No --> E_RecordUnusable
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
A Canadian cargo record exists and is not deleted
WHEN:
The record's usability status is evaluated
THEN:
If the record is marked as unusable, it is excluded from processing, otherwise the record is marked as valid for processing
β Consolidated Acceptance Criteria
- All validation checks are completed successfully → the record is marked as valid and available for subsequent business processing operations
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MarkRecordasValidforProcessing(["Start Step"])
E_MarkRecordasValidforProcessing(["End Step"])
N_MarkRecordasValidforProcessing_Node0{"All validation checks are completed
successfully"}:::decision N_MarkRecordasValidforProcessing_Node0_action["The record is marked as valid and
available for subsequent business
processing operations"]:::main N_MarkRecordasValidforProcessing_Node0 -- Yes --> N_MarkRecordasValidforProcessing_Node0_action N_MarkRecordasValidforProcessing_Node0_action --> E_MarkRecordasValidforProcessing S_MarkRecordasValidforProcessing --> N_MarkRecordasValidforProcessing_Node0 N_MarkRecordasValidforProcessing_Node0 -- No --> E_MarkRecordasValidforProcessing
successfully"}:::decision N_MarkRecordasValidforProcessing_Node0_action["The record is marked as valid and
available for subsequent business
processing operations"]:::main N_MarkRecordasValidforProcessing_Node0 -- Yes --> N_MarkRecordasValidforProcessing_Node0_action N_MarkRecordasValidforProcessing_Node0_action --> E_MarkRecordasValidforProcessing S_MarkRecordasValidforProcessing --> N_MarkRecordasValidforProcessing_Node0 N_MarkRecordasValidforProcessing_Node0 -- No --> E_MarkRecordasValidforProcessing
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
A Canadian cargo record exists, is not deleted, and is not unusable
WHEN:
All validation checks are completed successfully
THEN:
- The record is marked as valid
- Available for subsequent business processing operations
β Consolidated Acceptance Criteria
- The validation failure is detected → the record is excluded from processing and the exclusion reason is logged
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExcludeRecordfromProcessing(["Start Step"])
E_ExcludeRecordfromProcessing(["End Step"])
N_ExcludeRecordfromProcessing_Node0{"The validation failure is detected"}:::decision
N_ExcludeRecordfromProcessing_Node0_action["The record is excluded from
processing and the exclusion reason
is logged"]:::main N_ExcludeRecordfromProcessing_Node0 -- Yes --> N_ExcludeRecordfromProcessing_Node0_action N_ExcludeRecordfromProcessing_Node0_action --> E_ExcludeRecordfromProcessing S_ExcludeRecordfromProcessing --> N_ExcludeRecordfromProcessing_Node0 N_ExcludeRecordfromProcessing_Node0 -- No --> E_ExcludeRecordfromProcessing
processing and the exclusion reason
is logged"]:::main N_ExcludeRecordfromProcessing_Node0 -- Yes --> N_ExcludeRecordfromProcessing_Node0_action N_ExcludeRecordfromProcessing_Node0_action --> E_ExcludeRecordfromProcessing S_ExcludeRecordfromProcessing --> N_ExcludeRecordfromProcessing_Node0 N_ExcludeRecordfromProcessing_Node0 -- No --> E_ExcludeRecordfromProcessing
File: GCX016.cbl
GIVEN:
A Canadian cargo record fails one or more validation checks (non-existent, deleted, or unusable)
WHEN:
The validation failure is detected
THEN:
- The record is excluded from processing
- The exclusion reason is logged
β Consolidated Acceptance Criteria
- The exclusion decision is made → the system logs the specific reason for exclusion (non-existent, deleted, or unusable status)
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogExclusionReason(["Start Step"])
E_LogExclusionReason(["End Step"])
N_LogExclusionReason_Node0{"The exclusion decision is made"}:::decision
N_LogExclusionReason_Node0_action["The system logs the specific reason
for exclusion non-existent, deleted,
or unusable status"]:::main N_LogExclusionReason_Node0 -- Yes --> N_LogExclusionReason_Node0_action N_LogExclusionReason_Node0_action --> E_LogExclusionReason S_LogExclusionReason --> N_LogExclusionReason_Node0 N_LogExclusionReason_Node0 -- No --> E_LogExclusionReason
for exclusion non-existent, deleted,
or unusable status"]:::main N_LogExclusionReason_Node0 -- Yes --> N_LogExclusionReason_Node0_action N_LogExclusionReason_Node0_action --> E_LogExclusionReason S_LogExclusionReason --> N_LogExclusionReason_Node0 N_LogExclusionReason_Node0 -- No --> E_LogExclusionReason
File: GCX016.cbl
GIVEN:
A Canadian cargo record has been excluded from processing
WHEN:
The exclusion decision is made
THEN:
The system logs the specific reason for exclusion (non-existent, deleted, or unusable status)
β Consolidated Acceptance Criteria
- If cargo for Canadian coordination requirements → canadian coordination is required if cargo status indicates manual release processing is needed
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CanadianCoordinationRequired(["Start Step"])
E_CanadianCoordinationRequired(["End Step"])
N_CanadianCoordinationRequired_Node0{"the system evaluates cargo for
Canadian coordination requirements"}:::decision N_CanadianCoordinationRequired_Node0_action["Canadian coordination is required
if cargo status indicates manual
release processing is needed"]:::main N_CanadianCoordinationRequired_Node0 -- Yes --> N_CanadianCoordinationRequired_Node0_action N_CanadianCoordinationRequired_Node0_action --> E_CanadianCoordinationRequired S_CanadianCoordinationRequired --> N_CanadianCoordinationRequired_Node0 N_CanadianCoordinationRequired_Node0 -- No --> E_CanadianCoordinationRequired
Canadian coordination requirements"}:::decision N_CanadianCoordinationRequired_Node0_action["Canadian coordination is required
if cargo status indicates manual
release processing is needed"]:::main N_CanadianCoordinationRequired_Node0 -- Yes --> N_CanadianCoordinationRequired_Node0_action N_CanadianCoordinationRequired_Node0_action --> E_CanadianCoordinationRequired S_CanadianCoordinationRequired --> N_CanadianCoordinationRequired_Node0 N_CanadianCoordinationRequired_Node0 -- No --> E_CanadianCoordinationRequired
File: GCX016.cbl
GIVEN:
US cargo has been released and cargo status has been updated to a release state
WHEN:
the system evaluates cargo for Canadian coordination requirements
THEN:
Canadian coordination is required if cargo status indicates manual release processing is needed
β Consolidated Acceptance Criteria
- The system searches for matching Canadian manifest records → system queries Canadian cargo records using equipment ID as the primary search key
- The system searches for matching Canadian manifests using waybill number → canadian cargo records are retrieved based on waybill and equipment matching criteria
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SearchforMatchingCanadianManifests(["Start Step"])
E_SearchforMatchingCanadianManifests(["End Step"])
N_SearchforMatchingCanadianManifests_Node0{"the system searches for matching
Canadian manifest records"}:::decision N_SearchforMatchingCanadianManifests_Node0_action["system queries Canadian cargo
records using equipment ID as the
primary search key"]:::main N_SearchforMatchingCanadianManifests_Node0 -- Yes --> N_SearchforMatchingCanadianManifests_Node0_action N_SearchforMatchingCanadianManifests_Node0_action --> E_SearchforMatchingCanadianManifests S_SearchforMatchingCanadianManifests --> N_SearchforMatchingCanadianManifests_Node0 N_SearchforMatchingCanadianManifests_Node1{"The system searches for matching
Canadian manifests using waybill
number"}:::decision N_SearchforMatchingCanadianManifests_Node1_action["Canadian cargo records are
retrieved based on waybill and
equipment matching criteria"]:::main N_SearchforMatchingCanadianManifests_Node1 -- Yes --> N_SearchforMatchingCanadianManifests_Node1_action N_SearchforMatchingCanadianManifests_Node1_action --> E_SearchforMatchingCanadianManifests N_SearchforMatchingCanadianManifests_Node0 -- No --> N_SearchforMatchingCanadianManifests_Node1 N_SearchforMatchingCanadianManifests_Node1 -- No --> E_SearchforMatchingCanadianManifests
Canadian manifest records"}:::decision N_SearchforMatchingCanadianManifests_Node0_action["system queries Canadian cargo
records using equipment ID as the
primary search key"]:::main N_SearchforMatchingCanadianManifests_Node0 -- Yes --> N_SearchforMatchingCanadianManifests_Node0_action N_SearchforMatchingCanadianManifests_Node0_action --> E_SearchforMatchingCanadianManifests S_SearchforMatchingCanadianManifests --> N_SearchforMatchingCanadianManifests_Node0 N_SearchforMatchingCanadianManifests_Node1{"The system searches for matching
Canadian manifests using waybill
number"}:::decision N_SearchforMatchingCanadianManifests_Node1_action["Canadian cargo records are
retrieved based on waybill and
equipment matching criteria"]:::main N_SearchforMatchingCanadianManifests_Node1 -- Yes --> N_SearchforMatchingCanadianManifests_Node1_action N_SearchforMatchingCanadianManifests_Node1_action --> E_SearchforMatchingCanadianManifests N_SearchforMatchingCanadianManifests_Node0 -- No --> N_SearchforMatchingCanadianManifests_Node1 N_SearchforMatchingCanadianManifests_Node1 -- No --> E_SearchforMatchingCanadianManifests
File: GCX016.cbl
GIVEN:
Canadian coordination is required for released US cargo and equipment ID is available
WHEN:
the system searches for matching Canadian manifest records
THEN:
system queries Canadian cargo records using equipment ID as the primary search key
File: GCX016.cbl
GIVEN:
Canadian manifest coordination is required for released US cargo
WHEN:
The system searches for matching Canadian manifests using waybill number
THEN:
- Canadian cargo records are retrieved based on waybill
- Equipment matching criteria
β Consolidated Acceptance Criteria
- The system performs equipment ID matching → system looks up Canadian waybill records using the equipment ID from the US cargo record
- The system attempts to match records between US and Canadian systems → the system should identify matching records where the equipment ID corresponds between US and Canadian cargo
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MatchbyEquipmentID(["Start Step"])
E_MatchbyEquipmentID(["End Step"])
N_MatchbyEquipmentID_Node0{"the system performs equipment ID
matching"}:::decision N_MatchbyEquipmentID_Node0_action["system looks up Canadian waybill
records using the equipment ID from
the US cargo record"]:::main N_MatchbyEquipmentID_Node0 -- Yes --> N_MatchbyEquipmentID_Node0_action N_MatchbyEquipmentID_Node0_action --> E_MatchbyEquipmentID S_MatchbyEquipmentID --> N_MatchbyEquipmentID_Node0 N_MatchbyEquipmentID_Node1{"The system attempts to match
records between US and Canadian
systems"}:::decision N_MatchbyEquipmentID_Node1_action["The system should identify matching
records where the equipment ID
corresponds between US and Canadian
cargo"]:::main N_MatchbyEquipmentID_Node1 -- Yes --> N_MatchbyEquipmentID_Node1_action N_MatchbyEquipmentID_Node1_action --> E_MatchbyEquipmentID N_MatchbyEquipmentID_Node0 -- No --> N_MatchbyEquipmentID_Node1 N_MatchbyEquipmentID_Node1 -- No --> E_MatchbyEquipmentID
matching"}:::decision N_MatchbyEquipmentID_Node0_action["system looks up Canadian waybill
records using the equipment ID from
the US cargo record"]:::main N_MatchbyEquipmentID_Node0 -- Yes --> N_MatchbyEquipmentID_Node0_action N_MatchbyEquipmentID_Node0_action --> E_MatchbyEquipmentID S_MatchbyEquipmentID --> N_MatchbyEquipmentID_Node0 N_MatchbyEquipmentID_Node1{"The system attempts to match
records between US and Canadian
systems"}:::decision N_MatchbyEquipmentID_Node1_action["The system should identify matching
records where the equipment ID
corresponds between US and Canadian
cargo"]:::main N_MatchbyEquipmentID_Node1 -- Yes --> N_MatchbyEquipmentID_Node1_action N_MatchbyEquipmentID_Node1_action --> E_MatchbyEquipmentID N_MatchbyEquipmentID_Node0 -- No --> N_MatchbyEquipmentID_Node1 N_MatchbyEquipmentID_Node1 -- No --> E_MatchbyEquipmentID
File: GCX016.cbl
GIVEN:
Canadian manifest search has been initiated with equipment ID
WHEN:
the system performs equipment ID matching
THEN:
system looks up Canadian waybill records using the equipment ID from the US cargo record
File: GCX016.cbl
GIVEN:
Canadian cargo database search has been initiated with equipment ID
WHEN:
- The system attempts to match records between us
- Canadian systems
THEN:
- The system should identify matching records where the equipment id corresponds between us
- Canadian cargo
β Consolidated Acceptance Criteria
- The system creates cross-border log message → system generates log message containing cargo release details, equipment information, and cross-border coordination status
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CreateCrossborderLogMessage(["Start Step"])
E_CreateCrossborderLogMessage(["End Step"])
N_CreateCrossborderLogMessage_Node0{"the system creates cross-border log
message"}:::decision N_CreateCrossborderLogMessage_Node0_action["system generates log message
containing cargo release details,
equipment information, and
cross-border coordination status"]:::main N_CreateCrossborderLogMessage_Node0 -- Yes --> N_CreateCrossborderLogMessage_Node0_action N_CreateCrossborderLogMessage_Node0_action --> E_CreateCrossborderLogMessage S_CreateCrossborderLogMessage --> N_CreateCrossborderLogMessage_Node0 N_CreateCrossborderLogMessage_Node0 -- No --> E_CreateCrossborderLogMessage
message"}:::decision N_CreateCrossborderLogMessage_Node0_action["system generates log message
containing cargo release details,
equipment information, and
cross-border coordination status"]:::main N_CreateCrossborderLogMessage_Node0 -- Yes --> N_CreateCrossborderLogMessage_Node0_action N_CreateCrossborderLogMessage_Node0_action --> E_CreateCrossborderLogMessage S_CreateCrossborderLogMessage --> N_CreateCrossborderLogMessage_Node0 N_CreateCrossborderLogMessage_Node0 -- No --> E_CreateCrossborderLogMessage
File: GCX016.cbl
GIVEN:
valid Canadian manifest records have been identified for released US cargo
WHEN:
the system creates cross-border log message
THEN:
system generates log message containing cargo release details, equipment information, and cross-border coordination status
β Consolidated Acceptance Criteria
- The system updates Canadian system notification → system calls GCX105 logging system to record cargo release information for Canadian coordination
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UpdateCanadianSystemNotification(["Start Step"])
E_UpdateCanadianSystemNotification(["End Step"])
N_UpdateCanadianSystemNotification_Node0{"the system updates Canadian system
notification"}:::decision N_UpdateCanadianSystemNotification_Node0_action["system calls GCX105 logging system
to record cargo release information
for Canadian coordination"]:::main N_UpdateCanadianSystemNotification_Node0 -- Yes --> N_UpdateCanadianSystemNotification_Node0_action N_UpdateCanadianSystemNotification_Node0_action --> E_UpdateCanadianSystemNotification S_UpdateCanadianSystemNotification --> N_UpdateCanadianSystemNotification_Node0 N_UpdateCanadianSystemNotification_Node0 -- No --> E_UpdateCanadianSystemNotification
notification"}:::decision N_UpdateCanadianSystemNotification_Node0_action["system calls GCX105 logging system
to record cargo release information
for Canadian coordination"]:::main N_UpdateCanadianSystemNotification_Node0 -- Yes --> N_UpdateCanadianSystemNotification_Node0_action N_UpdateCanadianSystemNotification_Node0_action --> E_UpdateCanadianSystemNotification S_UpdateCanadianSystemNotification --> N_UpdateCanadianSystemNotification_Node0 N_UpdateCanadianSystemNotification_Node0 -- No --> E_UpdateCanadianSystemNotification
File: GCX016.cbl
GIVEN:
cross-border log message has been created for valid Canadian records
WHEN:
the system updates Canadian system notification
THEN:
system calls GCX105 logging system to record cargo release information for Canadian coordination
β Consolidated Acceptance Criteria
- The system generates audit trail → system creates complete audit record of cross-border coordination process including timestamps, cargo details, and processing results
- The system generates audit documentation → the system should create a complete audit trail documenting all cross-border coordination activities for compliance and tracking purposes
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GenerateAuditTrail(["Start Step"])
E_GenerateAuditTrail(["End Step"])
N_GenerateAuditTrail_Node0{"the system generates audit trail"}:::decision
N_GenerateAuditTrail_Node0_action["system creates complete audit
record of cross-border coordination
process including timestamps, cargo
details, and processing results"]:::main N_GenerateAuditTrail_Node0 -- Yes --> N_GenerateAuditTrail_Node0_action N_GenerateAuditTrail_Node0_action --> E_GenerateAuditTrail S_GenerateAuditTrail --> N_GenerateAuditTrail_Node0 N_GenerateAuditTrail_Node1{"The system generates audit
documentation"}:::decision N_GenerateAuditTrail_Node1_action["The system should create a complete
audit trail documenting all
cross-border coordination activities
for compliance and tracking purposes"]:::main N_GenerateAuditTrail_Node1 -- Yes --> N_GenerateAuditTrail_Node1_action N_GenerateAuditTrail_Node1_action --> E_GenerateAuditTrail N_GenerateAuditTrail_Node0 -- No --> N_GenerateAuditTrail_Node1 N_GenerateAuditTrail_Node1 -- No --> E_GenerateAuditTrail
record of cross-border coordination
process including timestamps, cargo
details, and processing results"]:::main N_GenerateAuditTrail_Node0 -- Yes --> N_GenerateAuditTrail_Node0_action N_GenerateAuditTrail_Node0_action --> E_GenerateAuditTrail S_GenerateAuditTrail --> N_GenerateAuditTrail_Node0 N_GenerateAuditTrail_Node1{"The system generates audit
documentation"}:::decision N_GenerateAuditTrail_Node1_action["The system should create a complete
audit trail documenting all
cross-border coordination activities
for compliance and tracking purposes"]:::main N_GenerateAuditTrail_Node1 -- Yes --> N_GenerateAuditTrail_Node1_action N_GenerateAuditTrail_Node1_action --> E_GenerateAuditTrail N_GenerateAuditTrail_Node0 -- No --> N_GenerateAuditTrail_Node1 N_GenerateAuditTrail_Node1 -- No --> E_GenerateAuditTrail
File: GCX016.cbl
GIVEN:
Canadian system notification has been successfully updated
WHEN:
the system generates audit trail
THEN:
system creates complete audit record of cross-border coordination process including timestamps, cargo details, and processing results
File: GCX016.cbl
GIVEN:
Release status coordination has been completed between US and Canadian systems
WHEN:
The system generates audit documentation
THEN:
- The system should create a complete audit trail documenting all cross-border coordination activities for compliance
- Tracking purposes
β Consolidated Acceptance Criteria
- The date needs to be converted to Julian format → the date is converted to Julian format for standardized processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ConvertDatetoJulianFormat(["Start Step"])
E_ConvertDatetoJulianFormat(["End Step"])
N_ConvertDatetoJulianFormat_Node0{"The date needs to be converted to
Julian format"}:::decision N_ConvertDatetoJulianFormat_Node0_action["The date is converted to Julian
format for standardized processing"]:::main N_ConvertDatetoJulianFormat_Node0 -- Yes --> N_ConvertDatetoJulianFormat_Node0_action N_ConvertDatetoJulianFormat_Node0_action --> E_ConvertDatetoJulianFormat S_ConvertDatetoJulianFormat --> N_ConvertDatetoJulianFormat_Node0 N_ConvertDatetoJulianFormat_Node0 -- No --> E_ConvertDatetoJulianFormat
Julian format"}:::decision N_ConvertDatetoJulianFormat_Node0_action["The date is converted to Julian
format for standardized processing"]:::main N_ConvertDatetoJulianFormat_Node0 -- Yes --> N_ConvertDatetoJulianFormat_Node0_action N_ConvertDatetoJulianFormat_Node0_action --> E_ConvertDatetoJulianFormat S_ConvertDatetoJulianFormat --> N_ConvertDatetoJulianFormat_Node0 N_ConvertDatetoJulianFormat_Node0 -- No --> E_ConvertDatetoJulianFormat
File: GCX016.cbl
GIVEN:
A system date has been captured
WHEN:
The date needs to be converted to Julian format
THEN:
The date is converted to Julian format for standardized processing
β Consolidated Acceptance Criteria
- The system checks if the conversion was successful → if conversion is successful, proceed with timestamp formatting, otherwise handle the conversion error
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_DateConversionSuccessful(["Start Step"])
E_DateConversionSuccessful(["End Step"])
N_DateConversionSuccessful_Node0{"The system checks if the conversion
was successful"}:::decision N_DateConversionSuccessful_Node0_action["If conversion is successful,
proceed with timestamp formatting,
otherwise handle the conversion
error"]:::main N_DateConversionSuccessful_Node0 -- Yes --> N_DateConversionSuccessful_Node0_action N_DateConversionSuccessful_Node0_action --> E_DateConversionSuccessful S_DateConversionSuccessful --> N_DateConversionSuccessful_Node0 N_DateConversionSuccessful_Node0 -- No --> E_DateConversionSuccessful
was successful"}:::decision N_DateConversionSuccessful_Node0_action["If conversion is successful,
proceed with timestamp formatting,
otherwise handle the conversion
error"]:::main N_DateConversionSuccessful_Node0 -- Yes --> N_DateConversionSuccessful_Node0_action N_DateConversionSuccessful_Node0_action --> E_DateConversionSuccessful S_DateConversionSuccessful --> N_DateConversionSuccessful_Node0 N_DateConversionSuccessful_Node0 -- No --> E_DateConversionSuccessful
File: GCX016.cbl
GIVEN:
A date conversion to Julian format has been attempted
WHEN:
The system checks if the conversion was successful
THEN:
If conversion is successful, proceed with timestamp formatting, otherwise handle the conversion error
β Consolidated Acceptance Criteria
- A formatted timestamp is required for transaction processing → the date and time are formatted into a standardized timestamp for business use
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_FormatTimestampforTransaction(["Start Step"])
E_FormatTimestampforTransaction(["End Step"])
N_FormatTimestampforTransaction_Node0{"A formatted timestamp is required
for transaction processing"}:::decision N_FormatTimestampforTransaction_Node0_action["The date and time are formatted
into a standardized timestamp for
business use"]:::main N_FormatTimestampforTransaction_Node0 -- Yes --> N_FormatTimestampforTransaction_Node0_action N_FormatTimestampforTransaction_Node0_action --> E_FormatTimestampforTransaction S_FormatTimestampforTransaction --> N_FormatTimestampforTransaction_Node0 N_FormatTimestampforTransaction_Node0 -- No --> E_FormatTimestampforTransaction
for transaction processing"}:::decision N_FormatTimestampforTransaction_Node0_action["The date and time are formatted
into a standardized timestamp for
business use"]:::main N_FormatTimestampforTransaction_Node0 -- Yes --> N_FormatTimestampforTransaction_Node0_action N_FormatTimestampforTransaction_Node0_action --> E_FormatTimestampforTransaction S_FormatTimestampforTransaction --> N_FormatTimestampforTransaction_Node0 N_FormatTimestampforTransaction_Node0 -- No --> E_FormatTimestampforTransaction
File: GCX016.cbl
GIVEN:
System date and time have been successfully captured and date converted to Julian format
WHEN:
A formatted timestamp is required for transaction processing
THEN:
- The date
- Time are formatted into a standardized timestamp for business use
β Consolidated Acceptance Criteria
- A business transaction is being processed → the timestamp is applied to the transaction for tracking and audit trail purposes
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ApplyTimestamptoBusinessTransaction(["Start Step"])
E_ApplyTimestamptoBusinessTransaction(["End Step"])
N_ApplyTimestamptoBusinessTransaction_Node0{"A business transaction is being
processed"}:::decision N_ApplyTimestamptoBusinessTransaction_Node0_action["The timestamp is applied to the
transaction for tracking and audit
trail purposes"]:::main N_ApplyTimestamptoBusinessTransaction_Node0 -- Yes --> N_ApplyTimestamptoBusinessTransaction_Node0_action N_ApplyTimestamptoBusinessTransaction_Node0_action --> E_ApplyTimestamptoBusinessTransaction S_ApplyTimestamptoBusinessTransaction --> N_ApplyTimestamptoBusinessTransaction_Node0 N_ApplyTimestamptoBusinessTransaction_Node0 -- No --> E_ApplyTimestamptoBusinessTransaction
processed"}:::decision N_ApplyTimestamptoBusinessTransaction_Node0_action["The timestamp is applied to the
transaction for tracking and audit
trail purposes"]:::main N_ApplyTimestamptoBusinessTransaction_Node0 -- Yes --> N_ApplyTimestamptoBusinessTransaction_Node0_action N_ApplyTimestamptoBusinessTransaction_Node0_action --> E_ApplyTimestamptoBusinessTransaction S_ApplyTimestamptoBusinessTransaction --> N_ApplyTimestamptoBusinessTransaction_Node0 N_ApplyTimestamptoBusinessTransaction_Node0 -- No --> E_ApplyTimestamptoBusinessTransaction
File: GCX016.cbl
GIVEN:
A formatted timestamp is available
WHEN:
A business transaction is being processed
THEN:
- The timestamp is applied to the transaction for tracking
- Audit trail purposes
β Consolidated Acceptance Criteria
- The transaction needs to be logged for audit purposes → the timestamp is stored in the transaction log for compliance and tracking
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_StoreTimestampinTransactionLog(["Start Step"])
E_StoreTimestampinTransactionLog(["End Step"])
N_StoreTimestampinTransactionLog_Node0{"The transaction needs to be logged
for audit purposes"}:::decision N_StoreTimestampinTransactionLog_Node0_action["The timestamp is stored in the
transaction log for compliance and
tracking"]:::main N_StoreTimestampinTransactionLog_Node0 -- Yes --> N_StoreTimestampinTransactionLog_Node0_action N_StoreTimestampinTransactionLog_Node0_action --> E_StoreTimestampinTransactionLog S_StoreTimestampinTransactionLog --> N_StoreTimestampinTransactionLog_Node0 N_StoreTimestampinTransactionLog_Node0 -- No --> E_StoreTimestampinTransactionLog
for audit purposes"}:::decision N_StoreTimestampinTransactionLog_Node0_action["The timestamp is stored in the
transaction log for compliance and
tracking"]:::main N_StoreTimestampinTransactionLog_Node0 -- Yes --> N_StoreTimestampinTransactionLog_Node0_action N_StoreTimestampinTransactionLog_Node0_action --> E_StoreTimestampinTransactionLog S_StoreTimestampinTransactionLog --> N_StoreTimestampinTransactionLog_Node0 N_StoreTimestampinTransactionLog_Node0 -- No --> E_StoreTimestampinTransactionLog
File: GCX016.cbl
GIVEN:
A business transaction has been timestamped
WHEN:
The transaction needs to be logged for audit purposes
THEN:
- The timestamp is stored in the transaction log for compliance
- Tracking
β Consolidated Acceptance Criteria
- The system detects the conversion error → the error is handled appropriately to allow transaction processing to continue
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_HandleDateConversionError(["Start Step"])
E_HandleDateConversionError(["End Step"])
N_HandleDateConversionError_Node0{"The system detects the conversion
error"}:::decision N_HandleDateConversionError_Node0_action["The error is handled appropriately
to allow transaction processing to
continue"]:::exclusion N_HandleDateConversionError_Node0 -- Yes -->|Alternative| N_HandleDateConversionError_Node0_action N_HandleDateConversionError_Node0_action --> E_HandleDateConversionError S_HandleDateConversionError --> N_HandleDateConversionError_Node0 N_HandleDateConversionError_Node0 -- No --> E_HandleDateConversionError
error"}:::decision N_HandleDateConversionError_Node0_action["The error is handled appropriately
to allow transaction processing to
continue"]:::exclusion N_HandleDateConversionError_Node0 -- Yes -->|Alternative| N_HandleDateConversionError_Node0_action N_HandleDateConversionError_Node0_action --> E_HandleDateConversionError S_HandleDateConversionError --> N_HandleDateConversionError_Node0 N_HandleDateConversionError_Node0 -- No --> E_HandleDateConversionError
File: GCX016.cbl
GIVEN:
A date conversion to Julian format has failed
WHEN:
The system detects the conversion error
THEN:
The error is handled appropriately to allow transaction processing to continue
β Consolidated Acceptance Criteria
- The system needs to confirm timestamp availability → the timestamp is marked as ready for use in business transactions
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_TimestampReadyforUse(["Start Step"])
E_TimestampReadyforUse(["End Step"])
N_TimestampReadyforUse_Node0{"The system needs to confirm
timestamp availability"}:::decision N_TimestampReadyforUse_Node0_action["The timestamp is marked as ready
for use in business transactions"]:::main N_TimestampReadyforUse_Node0 -- Yes --> N_TimestampReadyforUse_Node0_action N_TimestampReadyforUse_Node0_action --> E_TimestampReadyforUse S_TimestampReadyforUse --> N_TimestampReadyforUse_Node0 N_TimestampReadyforUse_Node0 -- No --> E_TimestampReadyforUse
timestamp availability"}:::decision N_TimestampReadyforUse_Node0_action["The timestamp is marked as ready
for use in business transactions"]:::main N_TimestampReadyforUse_Node0 -- Yes --> N_TimestampReadyforUse_Node0_action N_TimestampReadyforUse_Node0_action --> E_TimestampReadyforUse S_TimestampReadyforUse --> N_TimestampReadyforUse_Node0 N_TimestampReadyforUse_Node0 -- No --> E_TimestampReadyforUse
File: GCX016.cbl
GIVEN:
Date and time processing has completed either successfully or with error handling
WHEN:
The system needs to confirm timestamp availability
THEN:
The timestamp is marked as ready for use in business transactions
β Consolidated Acceptance Criteria
- The system needs to lookup broker information → the system should access the GCSTBRT broker tables to retrieve broker data
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AccessBrokerTables(["Start Step"])
E_AccessBrokerTables(["End Step"])
N_AccessBrokerTables_Node0{"The system needs to lookup broker
information"}:::decision N_AccessBrokerTables_Node0_action["The system should access the
GCSTBRT broker tables to retrieve
broker data"]:::main N_AccessBrokerTables_Node0 -- Yes --> N_AccessBrokerTables_Node0_action N_AccessBrokerTables_Node0_action --> E_AccessBrokerTables S_AccessBrokerTables --> N_AccessBrokerTables_Node0 N_AccessBrokerTables_Node0 -- No --> E_AccessBrokerTables
information"}:::decision N_AccessBrokerTables_Node0_action["The system should access the
GCSTBRT broker tables to retrieve
broker data"]:::main N_AccessBrokerTables_Node0 -- Yes --> N_AccessBrokerTables_Node0_action N_AccessBrokerTables_Node0_action --> E_AccessBrokerTables S_AccessBrokerTables --> N_AccessBrokerTables_Node0 N_AccessBrokerTables_Node0 -- No --> E_AccessBrokerTables
File: GCX016.cbl
GIVEN:
KCSM processing is required
WHEN:
The system needs to lookup broker information
THEN:
The system should access the GCSTBRT broker tables to retrieve broker data
β Consolidated Acceptance Criteria
- The system performs broker lookup → the system should retrieve broker information from BK Table (Broker Master) and B1 Table (Broker Details)
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RetrieveBrokerInformation(["Start Step"])
E_RetrieveBrokerInformation(["End Step"])
N_RetrieveBrokerInformation_Node0{"The system performs broker lookup"}:::decision
N_RetrieveBrokerInformation_Node0_action["The system should retrieve broker
information from BK Table Broker
Master and B1 Table Broker Details"]:::main N_RetrieveBrokerInformation_Node0 -- Yes --> N_RetrieveBrokerInformation_Node0_action N_RetrieveBrokerInformation_Node0_action --> E_RetrieveBrokerInformation S_RetrieveBrokerInformation --> N_RetrieveBrokerInformation_Node0 N_RetrieveBrokerInformation_Node0 -- No --> E_RetrieveBrokerInformation
information from BK Table Broker
Master and B1 Table Broker Details"]:::main N_RetrieveBrokerInformation_Node0 -- Yes --> N_RetrieveBrokerInformation_Node0_action N_RetrieveBrokerInformation_Node0_action --> E_RetrieveBrokerInformation S_RetrieveBrokerInformation --> N_RetrieveBrokerInformation_Node0 N_RetrieveBrokerInformation_Node0 -- No --> E_RetrieveBrokerInformation
File: GCX016.cbl
GIVEN:
Broker tables are accessible
WHEN:
The system performs broker lookup
THEN:
The system should retrieve broker information from BK Table (Broker Master) and B1 Table (Broker Details)
β Consolidated Acceptance Criteria
- The system checks the lookup results → the system should determine if broker information was found and proceed accordingly
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_BrokerFound(["Start Step"])
E_BrokerFound(["End Step"])
N_BrokerFound_Node0{"The system checks the lookup
results"}:::decision N_BrokerFound_Node0_action["The system should determine if
broker information was found and
proceed accordingly"]:::main N_BrokerFound_Node0 -- Yes --> N_BrokerFound_Node0_action N_BrokerFound_Node0_action --> E_BrokerFound S_BrokerFound --> N_BrokerFound_Node0 N_BrokerFound_Node0 -- No --> E_BrokerFound
results"}:::decision N_BrokerFound_Node0_action["The system should determine if
broker information was found and
proceed accordingly"]:::main N_BrokerFound_Node0 -- Yes --> N_BrokerFound_Node0_action N_BrokerFound_Node0_action --> E_BrokerFound S_BrokerFound --> N_BrokerFound_Node0 N_BrokerFound_Node0 -- No --> E_BrokerFound
File: GCX016.cbl
GIVEN:
A broker lookup has been performed
WHEN:
The system checks the lookup results
THEN:
- The system should determine if broker information was found
- Proceed accordingly
β Consolidated Acceptance Criteria
- The system prepares data for KCSM processing → the system should format the broker data according to KCSM specifications
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_FormatBrokerDataforKCSM(["Start Step"])
E_FormatBrokerDataforKCSM(["End Step"])
N_FormatBrokerDataforKCSM_Node0{"The system prepares data for KCSM
processing"}:::decision N_FormatBrokerDataforKCSM_Node0_action["The system should format the broker
data according to KCSM
specifications"]:::main N_FormatBrokerDataforKCSM_Node0 -- Yes --> N_FormatBrokerDataforKCSM_Node0_action N_FormatBrokerDataforKCSM_Node0_action --> E_FormatBrokerDataforKCSM S_FormatBrokerDataforKCSM --> N_FormatBrokerDataforKCSM_Node0 N_FormatBrokerDataforKCSM_Node0 -- No --> E_FormatBrokerDataforKCSM
processing"}:::decision N_FormatBrokerDataforKCSM_Node0_action["The system should format the broker
data according to KCSM
specifications"]:::main N_FormatBrokerDataforKCSM_Node0 -- Yes --> N_FormatBrokerDataforKCSM_Node0_action N_FormatBrokerDataforKCSM_Node0_action --> E_FormatBrokerDataforKCSM S_FormatBrokerDataforKCSM --> N_FormatBrokerDataforKCSM_Node0 N_FormatBrokerDataforKCSM_Node0 -- No --> E_FormatBrokerDataforKCSM
File: GCX016.cbl
GIVEN:
Broker short name has been extracted
WHEN:
The system prepares data for KCSM processing
THEN:
The system should format the broker data according to KCSM specifications
β Consolidated Acceptance Criteria
- No broker information is found in the lookup tables → the system should log a broker not found error for tracking purposes
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogBrokerNotFoundError(["Start Step"])
E_LogBrokerNotFoundError(["End Step"])
N_LogBrokerNotFoundError_Node0{"No broker information is found in
the lookup tables"}:::decision N_LogBrokerNotFoundError_Node0_action["The system should log a broker not
found error for tracking purposes"]:::main N_LogBrokerNotFoundError_Node0 -- Yes --> N_LogBrokerNotFoundError_Node0_action N_LogBrokerNotFoundError_Node0_action --> E_LogBrokerNotFoundError S_LogBrokerNotFoundError --> N_LogBrokerNotFoundError_Node0 N_LogBrokerNotFoundError_Node0 -- No --> E_LogBrokerNotFoundError
the lookup tables"}:::decision N_LogBrokerNotFoundError_Node0_action["The system should log a broker not
found error for tracking purposes"]:::main N_LogBrokerNotFoundError_Node0 -- Yes --> N_LogBrokerNotFoundError_Node0_action N_LogBrokerNotFoundError_Node0_action --> E_LogBrokerNotFoundError S_LogBrokerNotFoundError --> N_LogBrokerNotFoundError_Node0 N_LogBrokerNotFoundError_Node0 -- No --> E_LogBrokerNotFoundError
File: GCX016.cbl
GIVEN:
A broker lookup has been performed
WHEN:
No broker information is found in the lookup tables
THEN:
The system should log a broker not found error for tracking purposes
β Consolidated Acceptance Criteria
- The system needs to continue processing → the system should use default broker information to allow processing to continue
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UseDefaultBrokerInformation(["Start Step"])
E_UseDefaultBrokerInformation(["End Step"])
N_UseDefaultBrokerInformation_Node0{"The system needs to continue
processing"}:::decision N_UseDefaultBrokerInformation_Node0_action["The system should use default
broker information to allow
processing to continue"]:::main N_UseDefaultBrokerInformation_Node0 -- Yes --> N_UseDefaultBrokerInformation_Node0_action N_UseDefaultBrokerInformation_Node0_action --> E_UseDefaultBrokerInformation S_UseDefaultBrokerInformation --> N_UseDefaultBrokerInformation_Node0 N_UseDefaultBrokerInformation_Node0 -- No --> E_UseDefaultBrokerInformation
processing"}:::decision N_UseDefaultBrokerInformation_Node0_action["The system should use default
broker information to allow
processing to continue"]:::main N_UseDefaultBrokerInformation_Node0 -- Yes --> N_UseDefaultBrokerInformation_Node0_action N_UseDefaultBrokerInformation_Node0_action --> E_UseDefaultBrokerInformation S_UseDefaultBrokerInformation --> N_UseDefaultBrokerInformation_Node0 N_UseDefaultBrokerInformation_Node0 -- No --> E_UseDefaultBrokerInformation
File: GCX016.cbl
GIVEN:
Broker lookup has failed and error has been logged
WHEN:
The system needs to continue processing
THEN:
The system should use default broker information to allow processing to continue
β Consolidated Acceptance Criteria
- All broker lookup processing is complete → the system should continue with the main KCSM processing workflow
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ContinueKCSMProcessing(["Start Step"])
E_ContinueKCSMProcessing(["End Step"])
N_ContinueKCSMProcessing_Node0{"All broker lookup processing is
complete"}:::decision N_ContinueKCSMProcessing_Node0_action["The system should continue with the
main KCSM processing workflow"]:::main N_ContinueKCSMProcessing_Node0 -- Yes --> N_ContinueKCSMProcessing_Node0_action N_ContinueKCSMProcessing_Node0_action --> E_ContinueKCSMProcessing S_ContinueKCSMProcessing --> N_ContinueKCSMProcessing_Node0 N_ContinueKCSMProcessing_Node0 -- No --> E_ContinueKCSMProcessing
complete"}:::decision N_ContinueKCSMProcessing_Node0_action["The system should continue with the
main KCSM processing workflow"]:::main N_ContinueKCSMProcessing_Node0 -- Yes --> N_ContinueKCSMProcessing_Node0_action N_ContinueKCSMProcessing_Node0_action --> E_ContinueKCSMProcessing S_ContinueKCSMProcessing --> N_ContinueKCSMProcessing_Node0 N_ContinueKCSMProcessing_Node0 -- No --> E_ContinueKCSMProcessing
File: GCX016.cbl
GIVEN:
Broker information is available (either found or default)
WHEN:
All broker lookup processing is complete
THEN:
The system should continue with the main KCSM processing workflow
β Consolidated Acceptance Criteria
- The system begins transmission root segment creation process → all transmission control parameters are initialized to default values and prepared for message processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_InitializeTransmissionControlParameters(["Start Step"])
E_InitializeTransmissionControlParameters(["End Step"])
N_InitializeTransmissionControlParameters_Node0{"The system begins transmission root
segment creation process"}:::decision N_InitializeTransmissionControlParameters_Node0_action["All transmission control parameters
are initialized to default values
and prepared for message processing"]:::main N_InitializeTransmissionControlParameters_Node0 -- Yes --> N_InitializeTransmissionControlParameters_Node0_action N_InitializeTransmissionControlParameters_Node0_action --> E_InitializeTransmissionControlParameters S_InitializeTransmissionControlParameters --> N_InitializeTransmissionControlParameters_Node0 N_InitializeTransmissionControlParameters_Node0 -- No --> E_InitializeTransmissionControlParameters
segment creation process"}:::decision N_InitializeTransmissionControlParameters_Node0_action["All transmission control parameters
are initialized to default values
and prepared for message processing"]:::main N_InitializeTransmissionControlParameters_Node0 -- Yes --> N_InitializeTransmissionControlParameters_Node0_action N_InitializeTransmissionControlParameters_Node0_action --> E_InitializeTransmissionControlParameters S_InitializeTransmissionControlParameters --> N_InitializeTransmissionControlParameters_Node0 N_InitializeTransmissionControlParameters_Node0 -- No --> E_InitializeTransmissionControlParameters
File: GCX016.cbl
GIVEN:
A new EDI transmission needs to be created
WHEN:
The system begins transmission root segment creation process
THEN:
- All transmission control parameters are initialized to default values
- Prepared for message processing
β Consolidated Acceptance Criteria
- The system sets up EDI message tracking → message tracking information is established with unique identifiers and control data
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetEDIMessageTrackingInformation(["Start Step"])
E_SetEDIMessageTrackingInformation(["End Step"])
N_SetEDIMessageTrackingInformation_Node0{"The system sets up EDI message
tracking"}:::decision N_SetEDIMessageTrackingInformation_Node0_action["Message tracking information is
established with unique identifiers
and control data"]:::main N_SetEDIMessageTrackingInformation_Node0 -- Yes --> N_SetEDIMessageTrackingInformation_Node0_action N_SetEDIMessageTrackingInformation_Node0_action --> E_SetEDIMessageTrackingInformation S_SetEDIMessageTrackingInformation --> N_SetEDIMessageTrackingInformation_Node0 N_SetEDIMessageTrackingInformation_Node0 -- No --> E_SetEDIMessageTrackingInformation
tracking"}:::decision N_SetEDIMessageTrackingInformation_Node0_action["Message tracking information is
established with unique identifiers
and control data"]:::main N_SetEDIMessageTrackingInformation_Node0 -- Yes --> N_SetEDIMessageTrackingInformation_Node0_action N_SetEDIMessageTrackingInformation_Node0_action --> E_SetEDIMessageTrackingInformation S_SetEDIMessageTrackingInformation --> N_SetEDIMessageTrackingInformation_Node0 N_SetEDIMessageTrackingInformation_Node0 -- No --> E_SetEDIMessageTrackingInformation
File: GCX016.cbl
GIVEN:
Transmission control parameters are initialized
WHEN:
The system sets up EDI message tracking
THEN:
- Message tracking information is established with unique identifiers
- Control data
β Consolidated Acceptance Criteria
- The system assigns transmission sequence number → a unique sequential number is assigned to identify this specific transmission
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AssignTransmissionSequenceNumber(["Start Step"])
E_AssignTransmissionSequenceNumber(["End Step"])
N_AssignTransmissionSequenceNumber_Node0{"The system assigns transmission
sequence number"}:::decision N_AssignTransmissionSequenceNumber_Node0_action["A unique sequential number is
assigned to identify this specific
transmission"]:::main N_AssignTransmissionSequenceNumber_Node0 -- Yes --> N_AssignTransmissionSequenceNumber_Node0_action N_AssignTransmissionSequenceNumber_Node0_action --> E_AssignTransmissionSequenceNumber S_AssignTransmissionSequenceNumber --> N_AssignTransmissionSequenceNumber_Node0 N_AssignTransmissionSequenceNumber_Node0 -- No --> E_AssignTransmissionSequenceNumber
sequence number"}:::decision N_AssignTransmissionSequenceNumber_Node0_action["A unique sequential number is
assigned to identify this specific
transmission"]:::main N_AssignTransmissionSequenceNumber_Node0 -- Yes --> N_AssignTransmissionSequenceNumber_Node0_action N_AssignTransmissionSequenceNumber_Node0_action --> E_AssignTransmissionSequenceNumber S_AssignTransmissionSequenceNumber --> N_AssignTransmissionSequenceNumber_Node0 N_AssignTransmissionSequenceNumber_Node0 -- No --> E_AssignTransmissionSequenceNumber
File: GCX016.cbl
GIVEN:
EDI message tracking information is set
WHEN:
The system assigns transmission sequence number
THEN:
A unique sequential number is assigned to identify this specific transmission
β Consolidated Acceptance Criteria
- The system sets message type and format → message type and format are defined according to EDI standards and business requirements
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetMessageTypeandFormat(["Start Step"])
E_SetMessageTypeandFormat(["End Step"])
N_SetMessageTypeandFormat_Node0{"The system sets message type and
format"}:::decision N_SetMessageTypeandFormat_Node0_action["Message type and format are defined
according to EDI standards and
business requirements"]:::main N_SetMessageTypeandFormat_Node0 -- Yes --> N_SetMessageTypeandFormat_Node0_action N_SetMessageTypeandFormat_Node0_action --> E_SetMessageTypeandFormat S_SetMessageTypeandFormat --> N_SetMessageTypeandFormat_Node0 N_SetMessageTypeandFormat_Node0 -- No --> E_SetMessageTypeandFormat
format"}:::decision N_SetMessageTypeandFormat_Node0_action["Message type and format are defined
according to EDI standards and
business requirements"]:::main N_SetMessageTypeandFormat_Node0 -- Yes --> N_SetMessageTypeandFormat_Node0_action N_SetMessageTypeandFormat_Node0_action --> E_SetMessageTypeandFormat S_SetMessageTypeandFormat --> N_SetMessageTypeandFormat_Node0 N_SetMessageTypeandFormat_Node0 -- No --> E_SetMessageTypeandFormat
File: GCX016.cbl
GIVEN:
Transmission sequence number is assigned
WHEN:
- The system sets message type
- Format
THEN:
- Message type
- Format are defined according to edi standards
- Business requirements
β Consolidated Acceptance Criteria
- The system establishes sender and receiver information → valid sender and receiver identifiers are set for message routing and delivery
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_EstablishSenderReceiverInformation(["Start Step"])
E_EstablishSenderReceiverInformation(["End Step"])
N_EstablishSenderReceiverInformation_Node0{"The system establishes sender and
receiver information"}:::decision N_EstablishSenderReceiverInformation_Node0_action["Valid sender and receiver
identifiers are set for message
routing and delivery"]:::main N_EstablishSenderReceiverInformation_Node0 -- Yes --> N_EstablishSenderReceiverInformation_Node0_action N_EstablishSenderReceiverInformation_Node0_action --> E_EstablishSenderReceiverInformation S_EstablishSenderReceiverInformation --> N_EstablishSenderReceiverInformation_Node0 N_EstablishSenderReceiverInformation_Node0 -- No --> E_EstablishSenderReceiverInformation
receiver information"}:::decision N_EstablishSenderReceiverInformation_Node0_action["Valid sender and receiver
identifiers are set for message
routing and delivery"]:::main N_EstablishSenderReceiverInformation_Node0 -- Yes --> N_EstablishSenderReceiverInformation_Node0_action N_EstablishSenderReceiverInformation_Node0_action --> E_EstablishSenderReceiverInformation S_EstablishSenderReceiverInformation --> N_EstablishSenderReceiverInformation_Node0 N_EstablishSenderReceiverInformation_Node0 -- No --> E_EstablishSenderReceiverInformation
File: GCX016.cbl
GIVEN:
Message type and format are set
WHEN:
- The system establishes sender
- Receiver information
THEN:
- Valid sender
- Receiver identifiers are set for message routing
- Delivery
β Consolidated Acceptance Criteria
- The system sets transmission date and time → current system date and time are recorded as transmission timestamp
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetTransmissionDateandTime(["Start Step"])
E_SetTransmissionDateandTime(["End Step"])
N_SetTransmissionDateandTime_Node0{"The system sets transmission date
and time"}:::decision N_SetTransmissionDateandTime_Node0_action["Current system date and time are
recorded as transmission timestamp"]:::main N_SetTransmissionDateandTime_Node0 -- Yes --> N_SetTransmissionDateandTime_Node0_action N_SetTransmissionDateandTime_Node0_action --> E_SetTransmissionDateandTime S_SetTransmissionDateandTime --> N_SetTransmissionDateandTime_Node0 N_SetTransmissionDateandTime_Node0 -- No --> E_SetTransmissionDateandTime
and time"}:::decision N_SetTransmissionDateandTime_Node0_action["Current system date and time are
recorded as transmission timestamp"]:::main N_SetTransmissionDateandTime_Node0 -- Yes --> N_SetTransmissionDateandTime_Node0_action N_SetTransmissionDateandTime_Node0_action --> E_SetTransmissionDateandTime S_SetTransmissionDateandTime --> N_SetTransmissionDateandTime_Node0 N_SetTransmissionDateandTime_Node0 -- No --> E_SetTransmissionDateandTime
File: GCX016.cbl
GIVEN:
Sender and receiver information is established
WHEN:
- The system sets transmission date
- Time
THEN:
- Current system date
- Time are recorded as transmission timestamp
β Consolidated Acceptance Criteria
- The system creates A9RT transmission root segment → a9RT segment is created with complete transmission control information ready for database storage
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CreateA9RTTransmissionRootSegment(["Start Step"])
E_CreateA9RTTransmissionRootSegment(["End Step"])
N_CreateA9RTTransmissionRootSegment_Node0{"The system creates A9RT
transmission root segment"}:::decision N_CreateA9RTTransmissionRootSegment_Node0_action["A9RT segment is created with
complete transmission control
information ready for database
storage"]:::main N_CreateA9RTTransmissionRootSegment_Node0 -- Yes --> N_CreateA9RTTransmissionRootSegment_Node0_action N_CreateA9RTTransmissionRootSegment_Node0_action --> E_CreateA9RTTransmissionRootSegment S_CreateA9RTTransmissionRootSegment --> N_CreateA9RTTransmissionRootSegment_Node0 N_CreateA9RTTransmissionRootSegment_Node0 -- No --> E_CreateA9RTTransmissionRootSegment
transmission root segment"}:::decision N_CreateA9RTTransmissionRootSegment_Node0_action["A9RT segment is created with
complete transmission control
information ready for database
storage"]:::main N_CreateA9RTTransmissionRootSegment_Node0 -- Yes --> N_CreateA9RTTransmissionRootSegment_Node0_action N_CreateA9RTTransmissionRootSegment_Node0_action --> E_CreateA9RTTransmissionRootSegment S_CreateA9RTTransmissionRootSegment --> N_CreateA9RTTransmissionRootSegment_Node0 N_CreateA9RTTransmissionRootSegment_Node0 -- No --> E_CreateA9RTTransmissionRootSegment
File: GCX016.cbl
GIVEN:
All transmission control data is prepared including date, time, sender, receiver, and sequence information
WHEN:
The system creates A9RT transmission root segment
THEN:
A9RT segment is created with complete transmission control information ready for database storage
β Consolidated Acceptance Criteria
- The system validates transmission control data → all required fields are validated for completeness, format, and business rule compliance
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ValidateTransmissionControlData(["Start Step"])
E_ValidateTransmissionControlData(["End Step"])
N_ValidateTransmissionControlData_Node0{"The system validates transmission
control data"}:::decision N_ValidateTransmissionControlData_Node0_action["All required fields are validated
for completeness, format, and
business rule compliance"]:::main N_ValidateTransmissionControlData_Node0 -- Yes --> N_ValidateTransmissionControlData_Node0_action N_ValidateTransmissionControlData_Node0_action --> E_ValidateTransmissionControlData S_ValidateTransmissionControlData --> N_ValidateTransmissionControlData_Node0 N_ValidateTransmissionControlData_Node0 -- No --> E_ValidateTransmissionControlData
control data"}:::decision N_ValidateTransmissionControlData_Node0_action["All required fields are validated
for completeness, format, and
business rule compliance"]:::main N_ValidateTransmissionControlData_Node0 -- Yes --> N_ValidateTransmissionControlData_Node0_action N_ValidateTransmissionControlData_Node0_action --> E_ValidateTransmissionControlData S_ValidateTransmissionControlData --> N_ValidateTransmissionControlData_Node0 N_ValidateTransmissionControlData_Node0 -- No --> E_ValidateTransmissionControlData
File: GCX016.cbl
GIVEN:
A9RT transmission root segment is created
WHEN:
The system validates transmission control data
THEN:
All required fields are validated for completeness, format, and business rule compliance
β Consolidated Acceptance Criteria
- The system stores root segment to database → a9RT transmission root segment is successfully stored in the database with all control information
- The system stores the root segment to database → the A9RT transmission segment is successfully stored in the AECWRKTB database table
- Root segment storage is initiated → validated root segment is stored to A9RT transmission segment database
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_StoreRootSegmenttoDatabase(["Start Step"])
E_StoreRootSegmenttoDatabase(["End Step"])
N_StoreRootSegmenttoDatabase_Node0{"The system stores root segment to
database"}:::decision N_StoreRootSegmenttoDatabase_Node0_action["A9RT transmission root segment is
successfully stored in the database
with all control information"]:::main N_StoreRootSegmenttoDatabase_Node0 -- Yes --> N_StoreRootSegmenttoDatabase_Node0_action N_StoreRootSegmenttoDatabase_Node0_action --> E_StoreRootSegmenttoDatabase S_StoreRootSegmenttoDatabase --> N_StoreRootSegmenttoDatabase_Node0 N_StoreRootSegmenttoDatabase_Node1{"The system stores the root segment
to database"}:::decision N_StoreRootSegmenttoDatabase_Node1_action["The A9RT transmission segment is
successfully stored in the AECWRKTB
database table"]:::main N_StoreRootSegmenttoDatabase_Node1 -- Yes --> N_StoreRootSegmenttoDatabase_Node1_action N_StoreRootSegmenttoDatabase_Node1_action --> E_StoreRootSegmenttoDatabase N_StoreRootSegmenttoDatabase_Node0 -- No --> N_StoreRootSegmenttoDatabase_Node1 N_StoreRootSegmenttoDatabase_Node2{"root segment storage is initiated"}:::decision N_StoreRootSegmenttoDatabase_Node2_action["validated root segment is stored to
A9RT transmission segment database"]:::main N_StoreRootSegmenttoDatabase_Node2 -- Yes --> N_StoreRootSegmenttoDatabase_Node2_action N_StoreRootSegmenttoDatabase_Node2_action --> E_StoreRootSegmenttoDatabase N_StoreRootSegmenttoDatabase_Node1 -- No --> N_StoreRootSegmenttoDatabase_Node2 N_StoreRootSegmenttoDatabase_Node2 -- No --> E_StoreRootSegmenttoDatabase
database"}:::decision N_StoreRootSegmenttoDatabase_Node0_action["A9RT transmission root segment is
successfully stored in the database
with all control information"]:::main N_StoreRootSegmenttoDatabase_Node0 -- Yes --> N_StoreRootSegmenttoDatabase_Node0_action N_StoreRootSegmenttoDatabase_Node0_action --> E_StoreRootSegmenttoDatabase S_StoreRootSegmenttoDatabase --> N_StoreRootSegmenttoDatabase_Node0 N_StoreRootSegmenttoDatabase_Node1{"The system stores the root segment
to database"}:::decision N_StoreRootSegmenttoDatabase_Node1_action["The A9RT transmission segment is
successfully stored in the AECWRKTB
database table"]:::main N_StoreRootSegmenttoDatabase_Node1 -- Yes --> N_StoreRootSegmenttoDatabase_Node1_action N_StoreRootSegmenttoDatabase_Node1_action --> E_StoreRootSegmenttoDatabase N_StoreRootSegmenttoDatabase_Node0 -- No --> N_StoreRootSegmenttoDatabase_Node1 N_StoreRootSegmenttoDatabase_Node2{"root segment storage is initiated"}:::decision N_StoreRootSegmenttoDatabase_Node2_action["validated root segment is stored to
A9RT transmission segment database"]:::main N_StoreRootSegmenttoDatabase_Node2 -- Yes --> N_StoreRootSegmenttoDatabase_Node2_action N_StoreRootSegmenttoDatabase_Node2_action --> E_StoreRootSegmenttoDatabase N_StoreRootSegmenttoDatabase_Node1 -- No --> N_StoreRootSegmenttoDatabase_Node2 N_StoreRootSegmenttoDatabase_Node2 -- No --> E_StoreRootSegmenttoDatabase
File: GCX016.cbl
GIVEN:
Transmission control data validation is successful
WHEN:
The system stores root segment to database
THEN:
A9RT transmission root segment is successfully stored in the database with all control information
File: GCX016.cbl
GIVEN:
Transmission parameters validation is successful
WHEN:
The system stores the root segment to database
THEN:
The A9RT transmission segment is successfully stored in the AECWRKTB database table
File: GCX016.cbl
GIVEN:
segment validation is successful
WHEN:
root segment storage is initiated
THEN:
validated root segment is stored to A9RT transmission segment database
β Consolidated Acceptance Criteria
- The system updates transmission status → transmission status is updated to indicate successful root segment creation and storage
- The system updates transmission status → the status must be updated to indicate successful queuing and readiness for transmission
- Transmission status needs to be updated → overall transmission status is updated to reflect success or failure in A9RT and A9DP segments
- The system finalizes the transmission process → the system updates the transmission status to indicate successful completion of dependent segment creation for KCSM transmission
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UpdateTransmissionStatus(["Start Step"])
E_UpdateTransmissionStatus(["End Step"])
N_UpdateTransmissionStatus_Node0{"The system updates transmission
status"}:::decision N_UpdateTransmissionStatus_Node0_action["Transmission status is updated to
indicate successful root segment
creation and storage"]:::main N_UpdateTransmissionStatus_Node0 -- Yes --> N_UpdateTransmissionStatus_Node0_action N_UpdateTransmissionStatus_Node0_action --> E_UpdateTransmissionStatus S_UpdateTransmissionStatus --> N_UpdateTransmissionStatus_Node0 N_UpdateTransmissionStatus_Node1{"The system updates transmission
status"}:::decision N_UpdateTransmissionStatus_Node1_action["The status must be updated to
indicate successful queuing and
readiness for transmission"]:::main N_UpdateTransmissionStatus_Node1 -- Yes --> N_UpdateTransmissionStatus_Node1_action N_UpdateTransmissionStatus_Node1_action --> E_UpdateTransmissionStatus N_UpdateTransmissionStatus_Node0 -- No --> N_UpdateTransmissionStatus_Node1 N_UpdateTransmissionStatus_Node2{"Transmission status needs to be
updated"}:::decision N_UpdateTransmissionStatus_Node2_action["Overall transmission status is
updated to reflect success or
failure in A9RT and A9DP segments"]:::main N_UpdateTransmissionStatus_Node2 -- Yes --> N_UpdateTransmissionStatus_Node2_action N_UpdateTransmissionStatus_Node2_action --> E_UpdateTransmissionStatus N_UpdateTransmissionStatus_Node1 -- No --> N_UpdateTransmissionStatus_Node2 N_UpdateTransmissionStatus_Node3{"The system finalizes the
transmission process"}:::decision N_UpdateTransmissionStatus_Node3_action["The system updates the transmission
status to indicate successful
completion of dependent segment
creation for KCSM transmission"]:::main N_UpdateTransmissionStatus_Node3 -- Yes --> N_UpdateTransmissionStatus_Node3_action N_UpdateTransmissionStatus_Node3_action --> E_UpdateTransmissionStatus N_UpdateTransmissionStatus_Node2 -- No --> N_UpdateTransmissionStatus_Node3 N_UpdateTransmissionStatus_Node3 -- No --> E_UpdateTransmissionStatus
status"}:::decision N_UpdateTransmissionStatus_Node0_action["Transmission status is updated to
indicate successful root segment
creation and storage"]:::main N_UpdateTransmissionStatus_Node0 -- Yes --> N_UpdateTransmissionStatus_Node0_action N_UpdateTransmissionStatus_Node0_action --> E_UpdateTransmissionStatus S_UpdateTransmissionStatus --> N_UpdateTransmissionStatus_Node0 N_UpdateTransmissionStatus_Node1{"The system updates transmission
status"}:::decision N_UpdateTransmissionStatus_Node1_action["The status must be updated to
indicate successful queuing and
readiness for transmission"]:::main N_UpdateTransmissionStatus_Node1 -- Yes --> N_UpdateTransmissionStatus_Node1_action N_UpdateTransmissionStatus_Node1_action --> E_UpdateTransmissionStatus N_UpdateTransmissionStatus_Node0 -- No --> N_UpdateTransmissionStatus_Node1 N_UpdateTransmissionStatus_Node2{"Transmission status needs to be
updated"}:::decision N_UpdateTransmissionStatus_Node2_action["Overall transmission status is
updated to reflect success or
failure in A9RT and A9DP segments"]:::main N_UpdateTransmissionStatus_Node2 -- Yes --> N_UpdateTransmissionStatus_Node2_action N_UpdateTransmissionStatus_Node2_action --> E_UpdateTransmissionStatus N_UpdateTransmissionStatus_Node1 -- No --> N_UpdateTransmissionStatus_Node2 N_UpdateTransmissionStatus_Node3{"The system finalizes the
transmission process"}:::decision N_UpdateTransmissionStatus_Node3_action["The system updates the transmission
status to indicate successful
completion of dependent segment
creation for KCSM transmission"]:::main N_UpdateTransmissionStatus_Node3 -- Yes --> N_UpdateTransmissionStatus_Node3_action N_UpdateTransmissionStatus_Node3_action --> E_UpdateTransmissionStatus N_UpdateTransmissionStatus_Node2 -- No --> N_UpdateTransmissionStatus_Node3 N_UpdateTransmissionStatus_Node3 -- No --> E_UpdateTransmissionStatus
File: GCX016.cbl
GIVEN:
Root segment is successfully stored to database
WHEN:
The system updates transmission status
THEN:
- Transmission status is updated to indicate successful root segment creation
- Storage
File: GCX016.cbl
GIVEN:
Transmission parameters have been logged
WHEN:
The system updates transmission status
THEN:
- The status must be updated to indicate successful queuing
- Readiness for transmission
File: GCX016.cbl
GIVEN:
Transaction completion status has been logged
WHEN:
Transmission status needs to be updated
THEN:
- Overall transmission status is updated to reflect success or failure in a9rt
- A9dp segments
File: GCX016.cbl
GIVEN:
Dependent segment creation has been validated successfully
WHEN:
The system finalizes the transmission process
THEN:
The system updates the transmission status to indicate successful completion of dependent segment creation for KCSM transmission
β Consolidated Acceptance Criteria
- The system logs transmission creation → transmission creation event is logged with relevant details for audit and monitoring purposes
- The system logs transmission creation → transmission creation event is recorded in system logs with relevant details
- Transmission creation logging is performed → successful transmission creation is logged for audit and monitoring purposes
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogTransmissionCreation(["Start Step"])
E_LogTransmissionCreation(["End Step"])
N_LogTransmissionCreation_Node0{"The system logs transmission
creation"}:::decision N_LogTransmissionCreation_Node0_action["Transmission creation event is
logged with relevant details for
audit and monitoring purposes"]:::main N_LogTransmissionCreation_Node0 -- Yes --> N_LogTransmissionCreation_Node0_action N_LogTransmissionCreation_Node0_action --> E_LogTransmissionCreation S_LogTransmissionCreation --> N_LogTransmissionCreation_Node0 N_LogTransmissionCreation_Node1{"The system logs transmission
creation"}:::decision N_LogTransmissionCreation_Node1_action["Transmission creation event is
recorded in system logs with
relevant details"]:::main N_LogTransmissionCreation_Node1 -- Yes --> N_LogTransmissionCreation_Node1_action N_LogTransmissionCreation_Node1_action --> E_LogTransmissionCreation N_LogTransmissionCreation_Node0 -- No --> N_LogTransmissionCreation_Node1 N_LogTransmissionCreation_Node2{"transmission creation logging is
performed"}:::decision N_LogTransmissionCreation_Node2_action["successful transmission creation is
logged for audit and monitoring
purposes"]:::main N_LogTransmissionCreation_Node2 -- Yes --> N_LogTransmissionCreation_Node2_action N_LogTransmissionCreation_Node2_action --> E_LogTransmissionCreation N_LogTransmissionCreation_Node1 -- No --> N_LogTransmissionCreation_Node2 N_LogTransmissionCreation_Node2 -- No --> E_LogTransmissionCreation
creation"}:::decision N_LogTransmissionCreation_Node0_action["Transmission creation event is
logged with relevant details for
audit and monitoring purposes"]:::main N_LogTransmissionCreation_Node0 -- Yes --> N_LogTransmissionCreation_Node0_action N_LogTransmissionCreation_Node0_action --> E_LogTransmissionCreation S_LogTransmissionCreation --> N_LogTransmissionCreation_Node0 N_LogTransmissionCreation_Node1{"The system logs transmission
creation"}:::decision N_LogTransmissionCreation_Node1_action["Transmission creation event is
recorded in system logs with
relevant details"]:::main N_LogTransmissionCreation_Node1 -- Yes --> N_LogTransmissionCreation_Node1_action N_LogTransmissionCreation_Node1_action --> E_LogTransmissionCreation N_LogTransmissionCreation_Node0 -- No --> N_LogTransmissionCreation_Node1 N_LogTransmissionCreation_Node2{"transmission creation logging is
performed"}:::decision N_LogTransmissionCreation_Node2_action["successful transmission creation is
logged for audit and monitoring
purposes"]:::main N_LogTransmissionCreation_Node2 -- Yes --> N_LogTransmissionCreation_Node2_action N_LogTransmissionCreation_Node2_action --> E_LogTransmissionCreation N_LogTransmissionCreation_Node1 -- No --> N_LogTransmissionCreation_Node2 N_LogTransmissionCreation_Node2 -- No --> E_LogTransmissionCreation
File: GCX016.cbl
GIVEN:
Transmission status is updated successfully
WHEN:
The system logs transmission creation
THEN:
- Transmission creation event is logged with relevant details for audit
- Monitoring purposes
File: GCX016.cbl
GIVEN:
Root segment is stored to database successfully
WHEN:
The system logs transmission creation
THEN:
Transmission creation event is recorded in system logs with relevant details
File: GCX016.cbl
GIVEN:
root segment is successfully stored to database
WHEN:
transmission creation logging is performed
THEN:
- Successful transmission creation is logged for audit
- Monitoring purposes
β Consolidated Acceptance Criteria
- The system handles validation error → validation error is processed and appropriate error handling procedures are initiated
- A validation error is detected → the system must handle the validation error by setting appropriate error flags and preparing error information for logging
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_HandleValidationError(["Start Step"])
E_HandleValidationError(["End Step"])
N_HandleValidationError_Node0{"The system handles validation error"}:::decision
N_HandleValidationError_Node0_action["Validation error is processed and
appropriate error handling
procedures are initiated"]:::exclusion N_HandleValidationError_Node0 -- Yes -->|Alternative| N_HandleValidationError_Node0_action N_HandleValidationError_Node0_action --> E_HandleValidationError S_HandleValidationError --> N_HandleValidationError_Node0 N_HandleValidationError_Node1{"A validation error is detected"}:::decision N_HandleValidationError_Node1_action["The system must handle the
validation error by setting
appropriate error flags and
preparing error information for
logging"]:::exclusion N_HandleValidationError_Node1 -- Yes -->|Alternative| N_HandleValidationError_Node1_action N_HandleValidationError_Node1_action --> E_HandleValidationError N_HandleValidationError_Node0 -- No --> N_HandleValidationError_Node1 N_HandleValidationError_Node1 -- No --> E_HandleValidationError
appropriate error handling
procedures are initiated"]:::exclusion N_HandleValidationError_Node0 -- Yes -->|Alternative| N_HandleValidationError_Node0_action N_HandleValidationError_Node0_action --> E_HandleValidationError S_HandleValidationError --> N_HandleValidationError_Node0 N_HandleValidationError_Node1{"A validation error is detected"}:::decision N_HandleValidationError_Node1_action["The system must handle the
validation error by setting
appropriate error flags and
preparing error information for
logging"]:::exclusion N_HandleValidationError_Node1 -- Yes -->|Alternative| N_HandleValidationError_Node1_action N_HandleValidationError_Node1_action --> E_HandleValidationError N_HandleValidationError_Node0 -- No --> N_HandleValidationError_Node1 N_HandleValidationError_Node1 -- No --> E_HandleValidationError
File: GCX016.cbl
GIVEN:
Transmission control data validation fails
WHEN:
The system handles validation error
THEN:
- Validation error is processed
- Appropriate error handling procedures are initiated
File: GCX016.cbl
GIVEN:
Segment structure validation fails
WHEN:
A validation error is detected
THEN:
- The system must handle the validation error by setting appropriate error flags
- Preparing error information for logging
β Consolidated Acceptance Criteria
- The system logs error information → detailed error information is logged including validation failure reasons and relevant data
- Error logging is required → the system must log detailed error information including segment data, validation failure reason, and transmission context
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogErrorInformation(["Start Step"])
E_LogErrorInformation(["End Step"])
N_LogErrorInformation_Node0{"The system logs error information"}:::decision
N_LogErrorInformation_Node0_action["Detailed error information is
logged including validation failure
reasons and relevant data"]:::exclusion N_LogErrorInformation_Node0 -- Yes -->|Alternative| N_LogErrorInformation_Node0_action N_LogErrorInformation_Node0_action --> E_LogErrorInformation S_LogErrorInformation --> N_LogErrorInformation_Node0 N_LogErrorInformation_Node1{"Error logging is required"}:::decision N_LogErrorInformation_Node1_action["The system must log detailed error
information including segment data,
validation failure reason, and
transmission context"]:::exclusion N_LogErrorInformation_Node1 -- Yes -->|Alternative| N_LogErrorInformation_Node1_action N_LogErrorInformation_Node1_action --> E_LogErrorInformation N_LogErrorInformation_Node0 -- No --> N_LogErrorInformation_Node1 N_LogErrorInformation_Node1 -- No --> E_LogErrorInformation
logged including validation failure
reasons and relevant data"]:::exclusion N_LogErrorInformation_Node0 -- Yes -->|Alternative| N_LogErrorInformation_Node0_action N_LogErrorInformation_Node0_action --> E_LogErrorInformation S_LogErrorInformation --> N_LogErrorInformation_Node0 N_LogErrorInformation_Node1{"Error logging is required"}:::decision N_LogErrorInformation_Node1_action["The system must log detailed error
information including segment data,
validation failure reason, and
transmission context"]:::exclusion N_LogErrorInformation_Node1 -- Yes -->|Alternative| N_LogErrorInformation_Node1_action N_LogErrorInformation_Node1_action --> E_LogErrorInformation N_LogErrorInformation_Node0 -- No --> N_LogErrorInformation_Node1 N_LogErrorInformation_Node1 -- No --> E_LogErrorInformation
File: GCX016.cbl
GIVEN:
Validation error is handled
WHEN:
The system logs error information
THEN:
- Detailed error information is logged including validation failure reasons
- Relevant data
File: GCX016.cbl
GIVEN:
A validation error is handled
WHEN:
Error logging is required
THEN:
The system must log detailed error information including segment data, validation failure reason, and transmission context
β Consolidated Acceptance Criteria
- The system begins creating dependent segments → the dependent segment structure must be initialized with default values and cleared of any previous data
- The system begins creating dependent segments → the system initializes the A9DP dependent segment structure with default values and prepares it for data population
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_InitializeDependentSegmentStructure(["Start Step"])
E_InitializeDependentSegmentStructure(["End Step"])
N_InitializeDependentSegmentStructure_Node0{"The system begins creating
dependent segments"}:::decision N_InitializeDependentSegmentStructure_Node0_action["The dependent segment structure
must be initialized with default
values and cleared of any previous
data"]:::main N_InitializeDependentSegmentStructure_Node0 -- Yes --> N_InitializeDependentSegmentStructure_Node0_action N_InitializeDependentSegmentStructure_Node0_action --> E_InitializeDependentSegmentStructure S_InitializeDependentSegmentStructure --> N_InitializeDependentSegmentStructure_Node0 N_InitializeDependentSegmentStructure_Node1{"The system begins creating
dependent segments"}:::decision N_InitializeDependentSegmentStructure_Node1_action["The system initializes the A9DP
dependent segment structure with
default values and prepares it for
data population"]:::main N_InitializeDependentSegmentStructure_Node1 -- Yes --> N_InitializeDependentSegmentStructure_Node1_action N_InitializeDependentSegmentStructure_Node1_action --> E_InitializeDependentSegmentStructure N_InitializeDependentSegmentStructure_Node0 -- No --> N_InitializeDependentSegmentStructure_Node1 N_InitializeDependentSegmentStructure_Node1 -- No --> E_InitializeDependentSegmentStructure
dependent segments"}:::decision N_InitializeDependentSegmentStructure_Node0_action["The dependent segment structure
must be initialized with default
values and cleared of any previous
data"]:::main N_InitializeDependentSegmentStructure_Node0 -- Yes --> N_InitializeDependentSegmentStructure_Node0_action N_InitializeDependentSegmentStructure_Node0_action --> E_InitializeDependentSegmentStructure S_InitializeDependentSegmentStructure --> N_InitializeDependentSegmentStructure_Node0 N_InitializeDependentSegmentStructure_Node1{"The system begins creating
dependent segments"}:::decision N_InitializeDependentSegmentStructure_Node1_action["The system initializes the A9DP
dependent segment structure with
default values and prepares it for
data population"]:::main N_InitializeDependentSegmentStructure_Node1 -- Yes --> N_InitializeDependentSegmentStructure_Node1_action N_InitializeDependentSegmentStructure_Node1_action --> E_InitializeDependentSegmentStructure N_InitializeDependentSegmentStructure_Node0 -- No --> N_InitializeDependentSegmentStructure_Node1 N_InitializeDependentSegmentStructure_Node1 -- No --> E_InitializeDependentSegmentStructure
File: GCX016.cbl
GIVEN:
A transmission dependent segment creation process is initiated
WHEN:
The system begins creating dependent segments
THEN:
- The dependent segment structure must be initialized with default values
- Cleared of any previous data
File: GCX016.cbl
GIVEN:
EDI 350 message data has been retrieved
WHEN:
The system begins creating dependent segments
THEN:
- The system initializes the a9dp dependent segment structure with default values
- Prepares it for data population
β Consolidated Acceptance Criteria
- Transmission control information needs to be established → the system must copy transmission control data including interchange control numbers and functional group identifiers to the dependent segment
- The system sets up transmission control parameters → the system assigns transmission sequence numbers, control codes, and identification information for KCSM processing
- The system configures transmission parameters → transmission control information including identifiers and parameters are set
- Transmission control information is being set → control information is configured for message routing and tracking purposes
- The system needs to establish transmission control → the system sets transmission control information including sequence numbers and transmission identifiers in the dependent segment
- The system sets transmission control information → transmission control parameters including routing, priority, and processing flags are established
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetTransmissionControlInformation(["Start Step"])
E_SetTransmissionControlInformation(["End Step"])
N_SetTransmissionControlInformation_Node0{"Transmission control information
needs to be established"}:::decision N_SetTransmissionControlInformation_Node0_action["The system must copy transmission
control data including interchange
control numbers and functional group
identifiers to the dependent segment"]:::main N_SetTransmissionControlInformation_Node0 -- Yes --> N_SetTransmissionControlInformation_Node0_action N_SetTransmissionControlInformation_Node0_action --> E_SetTransmissionControlInformation S_SetTransmissionControlInformation --> N_SetTransmissionControlInformation_Node0 N_SetTransmissionControlInformation_Node1{"The system sets up transmission
control parameters"}:::decision N_SetTransmissionControlInformation_Node1_action["The system assigns transmission
sequence numbers, control codes, and
identification information for KCSM
processing"]:::main N_SetTransmissionControlInformation_Node1 -- Yes --> N_SetTransmissionControlInformation_Node1_action N_SetTransmissionControlInformation_Node1_action --> E_SetTransmissionControlInformation N_SetTransmissionControlInformation_Node0 -- No --> N_SetTransmissionControlInformation_Node1 N_SetTransmissionControlInformation_Node2{"The system configures transmission
parameters"}:::decision N_SetTransmissionControlInformation_Node2_action["Transmission control information
including identifiers and parameters
are set"]:::main N_SetTransmissionControlInformation_Node2 -- Yes --> N_SetTransmissionControlInformation_Node2_action N_SetTransmissionControlInformation_Node2_action --> E_SetTransmissionControlInformation N_SetTransmissionControlInformation_Node1 -- No --> N_SetTransmissionControlInformation_Node2 N_SetTransmissionControlInformation_Node3{"transmission control information is
being set"}:::decision N_SetTransmissionControlInformation_Node3_action["control information is configured
for message routing and tracking
purposes"]:::main N_SetTransmissionControlInformation_Node3 -- Yes --> N_SetTransmissionControlInformation_Node3_action N_SetTransmissionControlInformation_Node3_action --> E_SetTransmissionControlInformation N_SetTransmissionControlInformation_Node2 -- No --> N_SetTransmissionControlInformation_Node3 N_SetTransmissionControlInformation_Node4{"The system needs to establish
transmission control"}:::decision N_SetTransmissionControlInformation_Node4_action["The system sets transmission
control information including
sequence numbers and transmission
identifiers in the dependent segment"]:::main N_SetTransmissionControlInformation_Node4 -- Yes --> N_SetTransmissionControlInformation_Node4_action N_SetTransmissionControlInformation_Node4_action --> E_SetTransmissionControlInformation N_SetTransmissionControlInformation_Node3 -- No --> N_SetTransmissionControlInformation_Node4 N_SetTransmissionControlInformation_Node5{"The system sets transmission
control information"}:::decision N_SetTransmissionControlInformation_Node5_action["Transmission control parameters
including routing, priority, and
processing flags are established"]:::main N_SetTransmissionControlInformation_Node5 -- Yes --> N_SetTransmissionControlInformation_Node5_action N_SetTransmissionControlInformation_Node5_action --> E_SetTransmissionControlInformation N_SetTransmissionControlInformation_Node4 -- No --> N_SetTransmissionControlInformation_Node5 N_SetTransmissionControlInformation_Node5 -- No --> E_SetTransmissionControlInformation
needs to be established"}:::decision N_SetTransmissionControlInformation_Node0_action["The system must copy transmission
control data including interchange
control numbers and functional group
identifiers to the dependent segment"]:::main N_SetTransmissionControlInformation_Node0 -- Yes --> N_SetTransmissionControlInformation_Node0_action N_SetTransmissionControlInformation_Node0_action --> E_SetTransmissionControlInformation S_SetTransmissionControlInformation --> N_SetTransmissionControlInformation_Node0 N_SetTransmissionControlInformation_Node1{"The system sets up transmission
control parameters"}:::decision N_SetTransmissionControlInformation_Node1_action["The system assigns transmission
sequence numbers, control codes, and
identification information for KCSM
processing"]:::main N_SetTransmissionControlInformation_Node1 -- Yes --> N_SetTransmissionControlInformation_Node1_action N_SetTransmissionControlInformation_Node1_action --> E_SetTransmissionControlInformation N_SetTransmissionControlInformation_Node0 -- No --> N_SetTransmissionControlInformation_Node1 N_SetTransmissionControlInformation_Node2{"The system configures transmission
parameters"}:::decision N_SetTransmissionControlInformation_Node2_action["Transmission control information
including identifiers and parameters
are set"]:::main N_SetTransmissionControlInformation_Node2 -- Yes --> N_SetTransmissionControlInformation_Node2_action N_SetTransmissionControlInformation_Node2_action --> E_SetTransmissionControlInformation N_SetTransmissionControlInformation_Node1 -- No --> N_SetTransmissionControlInformation_Node2 N_SetTransmissionControlInformation_Node3{"transmission control information is
being set"}:::decision N_SetTransmissionControlInformation_Node3_action["control information is configured
for message routing and tracking
purposes"]:::main N_SetTransmissionControlInformation_Node3 -- Yes --> N_SetTransmissionControlInformation_Node3_action N_SetTransmissionControlInformation_Node3_action --> E_SetTransmissionControlInformation N_SetTransmissionControlInformation_Node2 -- No --> N_SetTransmissionControlInformation_Node3 N_SetTransmissionControlInformation_Node4{"The system needs to establish
transmission control"}:::decision N_SetTransmissionControlInformation_Node4_action["The system sets transmission
control information including
sequence numbers and transmission
identifiers in the dependent segment"]:::main N_SetTransmissionControlInformation_Node4 -- Yes --> N_SetTransmissionControlInformation_Node4_action N_SetTransmissionControlInformation_Node4_action --> E_SetTransmissionControlInformation N_SetTransmissionControlInformation_Node3 -- No --> N_SetTransmissionControlInformation_Node4 N_SetTransmissionControlInformation_Node5{"The system sets transmission
control information"}:::decision N_SetTransmissionControlInformation_Node5_action["Transmission control parameters
including routing, priority, and
processing flags are established"]:::main N_SetTransmissionControlInformation_Node5 -- Yes --> N_SetTransmissionControlInformation_Node5_action N_SetTransmissionControlInformation_Node5_action --> E_SetTransmissionControlInformation N_SetTransmissionControlInformation_Node4 -- No --> N_SetTransmissionControlInformation_Node5 N_SetTransmissionControlInformation_Node5 -- No --> E_SetTransmissionControlInformation
File: GCX016.cbl
GIVEN:
A dependent segment structure is initialized
WHEN:
Transmission control information needs to be established
THEN:
- The system must copy transmission control data including interchange control numbers
- Functional group identifiers to the dependent segment
File: GCX016.cbl
GIVEN:
A transmission root segment A9RT has been created
WHEN:
The system sets up transmission control parameters
THEN:
The system assigns transmission sequence numbers, control codes, and identification information for KCSM processing
File: GCX016.cbl
GIVEN:
A9RT transmission root segment has been created
WHEN:
The system configures transmission parameters
THEN:
- Transmission control information including identifiers
- Parameters are set
File: GCX016.cbl
GIVEN:
transmission parameters are initialized
WHEN:
transmission control information is being set
THEN:
- Control information is configured for message routing
- Tracking purposes
File: GCX016.cbl
GIVEN:
An A9DP dependent segment has been initialized
WHEN:
The system needs to establish transmission control
THEN:
- The system sets transmission control information including sequence numbers
- Transmission identifiers in the dependent segment
File: GCX016.cbl
GIVEN:
A transmission root segment has been created
WHEN:
The system sets transmission control information
THEN:
Transmission control parameters including routing, priority, and processing flags are established
β Consolidated Acceptance Criteria
- The system processes EDI 350 message content → all relevant EDI 350 message data must be copied to the dependent segment maintaining data integrity and format
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CopyEDI350MessageData(["Start Step"])
E_CopyEDI350MessageData(["End Step"])
N_CopyEDI350MessageData_Node0{"The system processes EDI 350
message content"}:::decision N_CopyEDI350MessageData_Node0_action["All relevant EDI 350 message data
must be copied to the dependent
segment maintaining data integrity
and format"]:::main N_CopyEDI350MessageData_Node0 -- Yes --> N_CopyEDI350MessageData_Node0_action N_CopyEDI350MessageData_Node0_action --> E_CopyEDI350MessageData S_CopyEDI350MessageData --> N_CopyEDI350MessageData_Node0 N_CopyEDI350MessageData_Node0 -- No --> E_CopyEDI350MessageData
message content"}:::decision N_CopyEDI350MessageData_Node0_action["All relevant EDI 350 message data
must be copied to the dependent
segment maintaining data integrity
and format"]:::main N_CopyEDI350MessageData_Node0 -- Yes --> N_CopyEDI350MessageData_Node0_action N_CopyEDI350MessageData_Node0_action --> E_CopyEDI350MessageData S_CopyEDI350MessageData --> N_CopyEDI350MessageData_Node0 N_CopyEDI350MessageData_Node0 -- No --> E_CopyEDI350MessageData
File: GCX016.cbl
GIVEN:
Transmission control information is set and EDI 350 message data is available
WHEN:
The system processes EDI 350 message content
THEN:
- All relevant edi 350 message data must be copied to the dependent segment maintaining data integrity
- Format
β Consolidated Acceptance Criteria
- Segment header formatting is required → the system must format segment header with proper segment identifier, element separator, and component separator according to EDI standards
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_FormatSegmentHeaderInformation(["Start Step"])
E_FormatSegmentHeaderInformation(["End Step"])
N_FormatSegmentHeaderInformation_Node0{"Segment header formatting is
required"}:::decision N_FormatSegmentHeaderInformation_Node0_action["The system must format segment
header with proper segment
identifier, element separator, and
component separator according to EDI
standards"]:::main N_FormatSegmentHeaderInformation_Node0 -- Yes --> N_FormatSegmentHeaderInformation_Node0_action N_FormatSegmentHeaderInformation_Node0_action --> E_FormatSegmentHeaderInformation S_FormatSegmentHeaderInformation --> N_FormatSegmentHeaderInformation_Node0 N_FormatSegmentHeaderInformation_Node0 -- No --> E_FormatSegmentHeaderInformation
required"}:::decision N_FormatSegmentHeaderInformation_Node0_action["The system must format segment
header with proper segment
identifier, element separator, and
component separator according to EDI
standards"]:::main N_FormatSegmentHeaderInformation_Node0 -- Yes --> N_FormatSegmentHeaderInformation_Node0_action N_FormatSegmentHeaderInformation_Node0_action --> E_FormatSegmentHeaderInformation S_FormatSegmentHeaderInformation --> N_FormatSegmentHeaderInformation_Node0 N_FormatSegmentHeaderInformation_Node0 -- No --> E_FormatSegmentHeaderInformation
File: GCX016.cbl
GIVEN:
EDI 350 message data is copied to the segment
WHEN:
Segment header formatting is required
THEN:
The system must format segment header with proper segment identifier, element separator, and component separator according to EDI standards
β Consolidated Acceptance Criteria
- A dependent segment key needs to be established → the system must generate and assign a unique key combining transmission control information and segment identifiers
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetDependentSegmentKey(["Start Step"])
E_SetDependentSegmentKey(["End Step"])
N_SetDependentSegmentKey_Node0{"A dependent segment key needs to be
established"}:::decision N_SetDependentSegmentKey_Node0_action["The system must generate and assign
a unique key combining transmission
control information and segment
identifiers"]:::main N_SetDependentSegmentKey_Node0 -- Yes --> N_SetDependentSegmentKey_Node0_action N_SetDependentSegmentKey_Node0_action --> E_SetDependentSegmentKey S_SetDependentSegmentKey --> N_SetDependentSegmentKey_Node0 N_SetDependentSegmentKey_Node0 -- No --> E_SetDependentSegmentKey
established"}:::decision N_SetDependentSegmentKey_Node0_action["The system must generate and assign
a unique key combining transmission
control information and segment
identifiers"]:::main N_SetDependentSegmentKey_Node0 -- Yes --> N_SetDependentSegmentKey_Node0_action N_SetDependentSegmentKey_Node0_action --> E_SetDependentSegmentKey S_SetDependentSegmentKey --> N_SetDependentSegmentKey_Node0 N_SetDependentSegmentKey_Node0 -- No --> E_SetDependentSegmentKey
File: GCX016.cbl
GIVEN:
Segment header information is formatted
WHEN:
A dependent segment key needs to be established
THEN:
- The system must generate
- Assign a unique key combining transmission control information
- Segment identifiers
β Consolidated Acceptance Criteria
- Segment sequence numbering is required → the system must assign sequential numbers to dependent segments starting from 1 and incrementing for each additional segment
- The system needs to establish segment ordering → the system assigns a sequential sequence number to the dependent segment to maintain proper transmission order
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetSegmentSequenceNumber(["Start Step"])
E_SetSegmentSequenceNumber(["End Step"])
N_SetSegmentSequenceNumber_Node0{"Segment sequence numbering is
required"}:::decision N_SetSegmentSequenceNumber_Node0_action["The system must assign sequential
numbers to dependent segments
starting from 1 and incrementing for
each additional segment"]:::main N_SetSegmentSequenceNumber_Node0 -- Yes --> N_SetSegmentSequenceNumber_Node0_action N_SetSegmentSequenceNumber_Node0_action --> E_SetSegmentSequenceNumber S_SetSegmentSequenceNumber --> N_SetSegmentSequenceNumber_Node0 N_SetSegmentSequenceNumber_Node1{"The system needs to establish
segment ordering"}:::decision N_SetSegmentSequenceNumber_Node1_action["The system assigns a sequential
sequence number to the dependent
segment to maintain proper
transmission order"]:::main N_SetSegmentSequenceNumber_Node1 -- Yes --> N_SetSegmentSequenceNumber_Node1_action N_SetSegmentSequenceNumber_Node1_action --> E_SetSegmentSequenceNumber N_SetSegmentSequenceNumber_Node0 -- No --> N_SetSegmentSequenceNumber_Node1 N_SetSegmentSequenceNumber_Node1 -- No --> E_SetSegmentSequenceNumber
required"}:::decision N_SetSegmentSequenceNumber_Node0_action["The system must assign sequential
numbers to dependent segments
starting from 1 and incrementing for
each additional segment"]:::main N_SetSegmentSequenceNumber_Node0 -- Yes --> N_SetSegmentSequenceNumber_Node0_action N_SetSegmentSequenceNumber_Node0_action --> E_SetSegmentSequenceNumber S_SetSegmentSequenceNumber --> N_SetSegmentSequenceNumber_Node0 N_SetSegmentSequenceNumber_Node1{"The system needs to establish
segment ordering"}:::decision N_SetSegmentSequenceNumber_Node1_action["The system assigns a sequential
sequence number to the dependent
segment to maintain proper
transmission order"]:::main N_SetSegmentSequenceNumber_Node1 -- Yes --> N_SetSegmentSequenceNumber_Node1_action N_SetSegmentSequenceNumber_Node1_action --> E_SetSegmentSequenceNumber N_SetSegmentSequenceNumber_Node0 -- No --> N_SetSegmentSequenceNumber_Node1 N_SetSegmentSequenceNumber_Node1 -- No --> E_SetSegmentSequenceNumber
File: GCX016.cbl
GIVEN:
A dependent segment key is established
WHEN:
Segment sequence numbering is required
THEN:
- The system must assign sequential numbers to dependent segments starting from 1
- Incrementing for each additional segment
File: GCX016.cbl
GIVEN:
A new A9DP dependent segment has been created
WHEN:
The system needs to establish segment ordering
THEN:
The system assigns a sequential sequence number to the dependent segment to maintain proper transmission order
β Consolidated Acceptance Criteria
- Message content needs to be stored in the segment → the system must copy the complete message content including all data elements and segments to the dependent segment structure
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CopyMessageContenttoSegment(["Start Step"])
E_CopyMessageContenttoSegment(["End Step"])
N_CopyMessageContenttoSegment_Node0{"Message content needs to be stored
in the segment"}:::decision N_CopyMessageContenttoSegment_Node0_action["The system must copy the complete
message content including all data
elements and segments to the
dependent segment structure"]:::main N_CopyMessageContenttoSegment_Node0 -- Yes --> N_CopyMessageContenttoSegment_Node0_action N_CopyMessageContenttoSegment_Node0_action --> E_CopyMessageContenttoSegment S_CopyMessageContenttoSegment --> N_CopyMessageContenttoSegment_Node0 N_CopyMessageContenttoSegment_Node0 -- No --> E_CopyMessageContenttoSegment
in the segment"}:::decision N_CopyMessageContenttoSegment_Node0_action["The system must copy the complete
message content including all data
elements and segments to the
dependent segment structure"]:::main N_CopyMessageContenttoSegment_Node0 -- Yes --> N_CopyMessageContenttoSegment_Node0_action N_CopyMessageContenttoSegment_Node0_action --> E_CopyMessageContenttoSegment S_CopyMessageContenttoSegment --> N_CopyMessageContenttoSegment_Node0 N_CopyMessageContenttoSegment_Node0 -- No --> E_CopyMessageContenttoSegment
File: GCX016.cbl
GIVEN:
Segment sequence number is set
WHEN:
Message content needs to be stored in the segment
THEN:
- The system must copy the complete message content including all data elements
- Segments to the dependent segment structure
β Consolidated Acceptance Criteria
- Segment length calculation is required → the system must calculate and store the actual length of the message content in the segment length field
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetSegmentLengthInformation(["Start Step"])
E_SetSegmentLengthInformation(["End Step"])
N_SetSegmentLengthInformation_Node0{"Segment length calculation is
required"}:::decision N_SetSegmentLengthInformation_Node0_action["The system must calculate and store
the actual length of the message
content in the segment length field"]:::main N_SetSegmentLengthInformation_Node0 -- Yes --> N_SetSegmentLengthInformation_Node0_action N_SetSegmentLengthInformation_Node0_action --> E_SetSegmentLengthInformation S_SetSegmentLengthInformation --> N_SetSegmentLengthInformation_Node0 N_SetSegmentLengthInformation_Node0 -- No --> E_SetSegmentLengthInformation
required"}:::decision N_SetSegmentLengthInformation_Node0_action["The system must calculate and store
the actual length of the message
content in the segment length field"]:::main N_SetSegmentLengthInformation_Node0 -- Yes --> N_SetSegmentLengthInformation_Node0_action N_SetSegmentLengthInformation_Node0_action --> E_SetSegmentLengthInformation S_SetSegmentLengthInformation --> N_SetSegmentLengthInformation_Node0 N_SetSegmentLengthInformation_Node0 -- No --> E_SetSegmentLengthInformation
File: GCX016.cbl
GIVEN:
Message content is copied to the segment
WHEN:
Segment length calculation is required
THEN:
- The system must calculate
- Store the actual length of the message content in the segment length field
β Consolidated Acceptance Criteria
- The dependent segment is ready for storage → the system must write the dependent segment to the A9DP database with all populated fields and proper key structure
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_WriteDependentSegmenttoA9DP(["Start Step"])
E_WriteDependentSegmenttoA9DP(["End Step"])
N_WriteDependentSegmenttoA9DP_Node0{"The dependent segment is ready for
storage"}:::decision N_WriteDependentSegmenttoA9DP_Node0_action["The system must write the dependent
segment to the A9DP database with
all populated fields and proper key
structure"]:::main N_WriteDependentSegmenttoA9DP_Node0 -- Yes --> N_WriteDependentSegmenttoA9DP_Node0_action N_WriteDependentSegmenttoA9DP_Node0_action --> E_WriteDependentSegmenttoA9DP S_WriteDependentSegmenttoA9DP --> N_WriteDependentSegmenttoA9DP_Node0 N_WriteDependentSegmenttoA9DP_Node0 -- No --> E_WriteDependentSegmenttoA9DP
storage"}:::decision N_WriteDependentSegmenttoA9DP_Node0_action["The system must write the dependent
segment to the A9DP database with
all populated fields and proper key
structure"]:::main N_WriteDependentSegmenttoA9DP_Node0 -- Yes --> N_WriteDependentSegmenttoA9DP_Node0_action N_WriteDependentSegmenttoA9DP_Node0_action --> E_WriteDependentSegmenttoA9DP S_WriteDependentSegmenttoA9DP --> N_WriteDependentSegmenttoA9DP_Node0 N_WriteDependentSegmenttoA9DP_Node0 -- No --> E_WriteDependentSegmenttoA9DP
File: GCX016.cbl
GIVEN:
Segment structure validation is successful
WHEN:
The dependent segment is ready for storage
THEN:
- The system must write the dependent segment to the a9dp database with all populated fields
- Proper key structure
β Consolidated Acceptance Criteria
- Transmission control counter update is required → the system must increment the segment count and update transmission control counters to reflect the new segment
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UpdateTransmissionControlCounters(["Start Step"])
E_UpdateTransmissionControlCounters(["End Step"])
N_UpdateTransmissionControlCounters_Node0{"Transmission control counter update
is required"}:::decision N_UpdateTransmissionControlCounters_Node0_action["The system must increment the
segment count and update
transmission control counters to
reflect the new segment"]:::main N_UpdateTransmissionControlCounters_Node0 -- Yes --> N_UpdateTransmissionControlCounters_Node0_action N_UpdateTransmissionControlCounters_Node0_action --> E_UpdateTransmissionControlCounters S_UpdateTransmissionControlCounters --> N_UpdateTransmissionControlCounters_Node0 N_UpdateTransmissionControlCounters_Node0 -- No --> E_UpdateTransmissionControlCounters
is required"}:::decision N_UpdateTransmissionControlCounters_Node0_action["The system must increment the
segment count and update
transmission control counters to
reflect the new segment"]:::main N_UpdateTransmissionControlCounters_Node0 -- Yes --> N_UpdateTransmissionControlCounters_Node0_action N_UpdateTransmissionControlCounters_Node0_action --> E_UpdateTransmissionControlCounters S_UpdateTransmissionControlCounters --> N_UpdateTransmissionControlCounters_Node0 N_UpdateTransmissionControlCounters_Node0 -- No --> E_UpdateTransmissionControlCounters
File: GCX016.cbl
GIVEN:
A dependent segment is successfully written to A9DP
WHEN:
Transmission control counter update is required
THEN:
- The system must increment the segment count
- Update transmission control counters to reflect the new segment
β Consolidated Acceptance Criteria
- Preparation for next segment is required → the system must increment the segment sequence number by 1 to ensure proper ordering of subsequent segments
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IncrementSegmentSequence(["Start Step"])
E_IncrementSegmentSequence(["End Step"])
N_IncrementSegmentSequence_Node0{"Preparation for next segment is
required"}:::decision N_IncrementSegmentSequence_Node0_action["The system must increment the
segment sequence number by 1 to
ensure proper ordering of subsequent
segments"]:::main N_IncrementSegmentSequence_Node0 -- Yes --> N_IncrementSegmentSequence_Node0_action N_IncrementSegmentSequence_Node0_action --> E_IncrementSegmentSequence S_IncrementSegmentSequence --> N_IncrementSegmentSequence_Node0 N_IncrementSegmentSequence_Node0 -- No --> E_IncrementSegmentSequence
required"}:::decision N_IncrementSegmentSequence_Node0_action["The system must increment the
segment sequence number by 1 to
ensure proper ordering of subsequent
segments"]:::main N_IncrementSegmentSequence_Node0 -- Yes --> N_IncrementSegmentSequence_Node0_action N_IncrementSegmentSequence_Node0_action --> E_IncrementSegmentSequence S_IncrementSegmentSequence --> N_IncrementSegmentSequence_Node0 N_IncrementSegmentSequence_Node0 -- No --> E_IncrementSegmentSequence
File: GCX016.cbl
GIVEN:
Transmission control counters are updated
WHEN:
Preparation for next segment is required
THEN:
The system must increment the segment sequence number by 1 to ensure proper ordering of subsequent segments
β Consolidated Acceptance Criteria
- The system checks for additional EDI data to process → if more EDI data exists, the system must return to copy EDI 350 message data step, otherwise proceed to completion
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MoreEDIDatatoProcess(["Start Step"])
E_MoreEDIDatatoProcess(["End Step"])
N_MoreEDIDatatoProcess_Node0{"The system checks for additional
EDI data to process"}:::decision N_MoreEDIDatatoProcess_Node0_action["If more EDI data exists, the system
must return to copy EDI 350 message
data step, otherwise proceed to
completion"]:::main N_MoreEDIDatatoProcess_Node0 -- Yes --> N_MoreEDIDatatoProcess_Node0_action N_MoreEDIDatatoProcess_Node0_action --> E_MoreEDIDatatoProcess S_MoreEDIDatatoProcess --> N_MoreEDIDatatoProcess_Node0 N_MoreEDIDatatoProcess_Node0 -- No --> E_MoreEDIDatatoProcess
EDI data to process"}:::decision N_MoreEDIDatatoProcess_Node0_action["If more EDI data exists, the system
must return to copy EDI 350 message
data step, otherwise proceed to
completion"]:::main N_MoreEDIDatatoProcess_Node0 -- Yes --> N_MoreEDIDatatoProcess_Node0_action N_MoreEDIDatatoProcess_Node0_action --> E_MoreEDIDatatoProcess S_MoreEDIDatatoProcess --> N_MoreEDIDatatoProcess_Node0 N_MoreEDIDatatoProcess_Node0 -- No --> E_MoreEDIDatatoProcess
File: GCX016.cbl
GIVEN:
Segment sequence is incremented and more EDI data may exist
WHEN:
The system checks for additional EDI data to process
THEN:
If more EDI data exists, the system must return to copy EDI 350 message data step, otherwise proceed to completion
β Consolidated Acceptance Criteria
- The dependent segment creation process reaches completion → the system must complete the process by setting final status indicators and returning control to the calling process
- The dependent segment creation process needs to be finalized → the system completes the dependent segment creation process and finalizes EDI transmission preparation
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CompleteDependentSegmentCreation(["Start Step"])
E_CompleteDependentSegmentCreation(["End Step"])
N_CompleteDependentSegmentCreation_Node0{"The dependent segment creation
process reaches completion"}:::decision N_CompleteDependentSegmentCreation_Node0_action["The system must complete the
process by setting final status
indicators and returning control to
the calling process"]:::main N_CompleteDependentSegmentCreation_Node0 -- Yes --> N_CompleteDependentSegmentCreation_Node0_action N_CompleteDependentSegmentCreation_Node0_action --> E_CompleteDependentSegmentCreation S_CompleteDependentSegmentCreation --> N_CompleteDependentSegmentCreation_Node0 N_CompleteDependentSegmentCreation_Node1{"The dependent segment creation
process needs to be finalized"}:::decision N_CompleteDependentSegmentCreation_Node1_action["The system completes the dependent
segment creation process and
finalizes EDI transmission
preparation"]:::main N_CompleteDependentSegmentCreation_Node1 -- Yes --> N_CompleteDependentSegmentCreation_Node1_action N_CompleteDependentSegmentCreation_Node1_action --> E_CompleteDependentSegmentCreation N_CompleteDependentSegmentCreation_Node0 -- No --> N_CompleteDependentSegmentCreation_Node1 N_CompleteDependentSegmentCreation_Node1 -- No --> E_CompleteDependentSegmentCreation
process reaches completion"}:::decision N_CompleteDependentSegmentCreation_Node0_action["The system must complete the
process by setting final status
indicators and returning control to
the calling process"]:::main N_CompleteDependentSegmentCreation_Node0 -- Yes --> N_CompleteDependentSegmentCreation_Node0_action N_CompleteDependentSegmentCreation_Node0_action --> E_CompleteDependentSegmentCreation S_CompleteDependentSegmentCreation --> N_CompleteDependentSegmentCreation_Node0 N_CompleteDependentSegmentCreation_Node1{"The dependent segment creation
process needs to be finalized"}:::decision N_CompleteDependentSegmentCreation_Node1_action["The system completes the dependent
segment creation process and
finalizes EDI transmission
preparation"]:::main N_CompleteDependentSegmentCreation_Node1 -- Yes --> N_CompleteDependentSegmentCreation_Node1_action N_CompleteDependentSegmentCreation_Node1_action --> E_CompleteDependentSegmentCreation N_CompleteDependentSegmentCreation_Node0 -- No --> N_CompleteDependentSegmentCreation_Node1 N_CompleteDependentSegmentCreation_Node1 -- No --> E_CompleteDependentSegmentCreation
File: GCX016.cbl
GIVEN:
All EDI data is processed or an error is logged
WHEN:
The dependent segment creation process reaches completion
THEN:
- The system must complete the process by setting final status indicators
- Returning control to the calling process
File: GCX016.cbl
GIVEN:
All dependent segments have been processed or errors have been handled
WHEN:
The dependent segment creation process needs to be finalized
THEN:
- The system completes the dependent segment creation process
- Finalizes edi transmission preparation
β Consolidated Acceptance Criteria
- If if KCSM EDI transmission is required for the disposition code → the system should determine whether to proceed with KCSM EDI transaction spawning or skip KCSM processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CheckDispositionCodeforKCSM(["Start Step"])
E_CheckDispositionCodeforKCSM(["End Step"])
N_CheckDispositionCodeforKCSM_Node0{"The system evaluates if KCSM EDI
transmission is required for the
disposition code"}:::decision N_CheckDispositionCodeforKCSM_Node0_action["The system should determine whether
to proceed with KCSM EDI transaction
spawning or skip KCSM processing"]:::main N_CheckDispositionCodeforKCSM_Node0 -- Yes --> N_CheckDispositionCodeforKCSM_Node0_action N_CheckDispositionCodeforKCSM_Node0_action --> E_CheckDispositionCodeforKCSM S_CheckDispositionCodeforKCSM --> N_CheckDispositionCodeforKCSM_Node0 N_CheckDispositionCodeforKCSM_Node0 -- No --> E_CheckDispositionCodeforKCSM
transmission is required for the
disposition code"}:::decision N_CheckDispositionCodeforKCSM_Node0_action["The system should determine whether
to proceed with KCSM EDI transaction
spawning or skip KCSM processing"]:::main N_CheckDispositionCodeforKCSM_Node0 -- Yes --> N_CheckDispositionCodeforKCSM_Node0_action N_CheckDispositionCodeforKCSM_Node0_action --> E_CheckDispositionCodeforKCSM S_CheckDispositionCodeforKCSM --> N_CheckDispositionCodeforKCSM_Node0 N_CheckDispositionCodeforKCSM_Node0 -- No --> E_CheckDispositionCodeforKCSM
File: GCX016.cbl
GIVEN:
A disposition code is being processed for cargo release
WHEN:
The system evaluates if KCSM EDI transmission is required for the disposition code
THEN:
The system should determine whether to proceed with KCSM EDI transaction spawning or skip KCSM processing
β Consolidated Acceptance Criteria
- The system needs to retrieve broker details for EDI message formatting → the system should fetch broker information from GCSTBRT broker tables and make it available for transmission setup
- The system needs broker information for transmission setup → broker KCSM configuration data is retrieved from broker master records
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RetrieveKCSMBrokerInformation(["Start Step"])
E_RetrieveKCSMBrokerInformation(["End Step"])
N_RetrieveKCSMBrokerInformation_Node0{"The system needs to retrieve broker
details for EDI message formatting"}:::decision N_RetrieveKCSMBrokerInformation_Node0_action["The system should fetch broker
information from GCSTBRT broker
tables and make it available for
transmission setup"]:::main N_RetrieveKCSMBrokerInformation_Node0 -- Yes --> N_RetrieveKCSMBrokerInformation_Node0_action N_RetrieveKCSMBrokerInformation_Node0_action --> E_RetrieveKCSMBrokerInformation S_RetrieveKCSMBrokerInformation --> N_RetrieveKCSMBrokerInformation_Node0 N_RetrieveKCSMBrokerInformation_Node1{"The system needs broker information
for transmission setup"}:::decision N_RetrieveKCSMBrokerInformation_Node1_action["Broker KCSM configuration data is
retrieved from broker master records"]:::main N_RetrieveKCSMBrokerInformation_Node1 -- Yes --> N_RetrieveKCSMBrokerInformation_Node1_action N_RetrieveKCSMBrokerInformation_Node1_action --> E_RetrieveKCSMBrokerInformation N_RetrieveKCSMBrokerInformation_Node0 -- No --> N_RetrieveKCSMBrokerInformation_Node1 N_RetrieveKCSMBrokerInformation_Node1 -- No --> E_RetrieveKCSMBrokerInformation
details for EDI message formatting"}:::decision N_RetrieveKCSMBrokerInformation_Node0_action["The system should fetch broker
information from GCSTBRT broker
tables and make it available for
transmission setup"]:::main N_RetrieveKCSMBrokerInformation_Node0 -- Yes --> N_RetrieveKCSMBrokerInformation_Node0_action N_RetrieveKCSMBrokerInformation_Node0_action --> E_RetrieveKCSMBrokerInformation S_RetrieveKCSMBrokerInformation --> N_RetrieveKCSMBrokerInformation_Node0 N_RetrieveKCSMBrokerInformation_Node1{"The system needs broker information
for transmission setup"}:::decision N_RetrieveKCSMBrokerInformation_Node1_action["Broker KCSM configuration data is
retrieved from broker master records"]:::main N_RetrieveKCSMBrokerInformation_Node1 -- Yes --> N_RetrieveKCSMBrokerInformation_Node1_action N_RetrieveKCSMBrokerInformation_Node1_action --> E_RetrieveKCSMBrokerInformation N_RetrieveKCSMBrokerInformation_Node0 -- No --> N_RetrieveKCSMBrokerInformation_Node1 N_RetrieveKCSMBrokerInformation_Node1 -- No --> E_RetrieveKCSMBrokerInformation
File: GCX016.cbl
GIVEN:
KCSM EDI transmission is required and broker identification is available
WHEN:
The system needs to retrieve broker details for EDI message formatting
THEN:
- The system should fetch broker information from gcstbrt broker tables
- Make it available for transmission setup
File: GCX016.cbl
GIVEN:
KCSM processing is required for a transaction
WHEN:
The system needs broker information for transmission setup
THEN:
Broker KCSM configuration data is retrieved from broker master records
β Consolidated Acceptance Criteria
- The system needs to configure transmission control settings → the system should set appropriate transmission control parameters including message type, sequence numbers, and processing flags
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetTransmissionControlParameters(["Start Step"])
E_SetTransmissionControlParameters(["End Step"])
N_SetTransmissionControlParameters_Node0{"The system needs to configure
transmission control settings"}:::decision N_SetTransmissionControlParameters_Node0_action["The system should set appropriate
transmission control parameters
including message type, sequence
numbers, and processing flags"]:::main N_SetTransmissionControlParameters_Node0 -- Yes --> N_SetTransmissionControlParameters_Node0_action N_SetTransmissionControlParameters_Node0_action --> E_SetTransmissionControlParameters S_SetTransmissionControlParameters --> N_SetTransmissionControlParameters_Node0 N_SetTransmissionControlParameters_Node0 -- No --> E_SetTransmissionControlParameters
transmission control settings"}:::decision N_SetTransmissionControlParameters_Node0_action["The system should set appropriate
transmission control parameters
including message type, sequence
numbers, and processing flags"]:::main N_SetTransmissionControlParameters_Node0 -- Yes --> N_SetTransmissionControlParameters_Node0_action N_SetTransmissionControlParameters_Node0_action --> E_SetTransmissionControlParameters S_SetTransmissionControlParameters --> N_SetTransmissionControlParameters_Node0 N_SetTransmissionControlParameters_Node0 -- No --> E_SetTransmissionControlParameters
File: GCX016.cbl
GIVEN:
A transmission root segment has been created for the EDI message
WHEN:
The system needs to configure transmission control settings
THEN:
The system should set appropriate transmission control parameters including message type, sequence numbers, and processing flags
β Consolidated Acceptance Criteria
- The system needs to populate EDI message content with cargo and disposition data → the system should create A9DP dependent segments containing formatted EDI data including cargo details, disposition codes, and transaction information
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CreateDependentSegmentswithEDIData(["Start Step"])
E_CreateDependentSegmentswithEDIData(["End Step"])
N_CreateDependentSegmentswithEDIData_Node0{"The system needs to populate EDI
message content with cargo and
disposition data"}:::decision N_CreateDependentSegmentswithEDIData_Node0_action["The system should create A9DP
dependent segments containing
formatted EDI data including cargo
details, disposition codes, and
transaction information"]:::main N_CreateDependentSegmentswithEDIData_Node0 -- Yes --> N_CreateDependentSegmentswithEDIData_Node0_action N_CreateDependentSegmentswithEDIData_Node0_action --> E_CreateDependentSegmentswithEDIData S_CreateDependentSegmentswithEDIData --> N_CreateDependentSegmentswithEDIData_Node0 N_CreateDependentSegmentswithEDIData_Node0 -- No --> E_CreateDependentSegmentswithEDIData
message content with cargo and
disposition data"}:::decision N_CreateDependentSegmentswithEDIData_Node0_action["The system should create A9DP
dependent segments containing
formatted EDI data including cargo
details, disposition codes, and
transaction information"]:::main N_CreateDependentSegmentswithEDIData_Node0 -- Yes --> N_CreateDependentSegmentswithEDIData_Node0_action N_CreateDependentSegmentswithEDIData_Node0_action --> E_CreateDependentSegmentswithEDIData S_CreateDependentSegmentswithEDIData --> N_CreateDependentSegmentswithEDIData_Node0 N_CreateDependentSegmentswithEDIData_Node0 -- No --> E_CreateDependentSegmentswithEDIData
File: GCX016.cbl
GIVEN:
Transmission control parameters have been established
WHEN:
- The system needs to populate edi message content with cargo
- Disposition data
THEN:
The system should create A9DP dependent segments containing formatted EDI data including cargo details, disposition codes, and transaction information
β Consolidated Acceptance Criteria
- The system needs to include equipment details in the EDI transmission → the system should extract and format equipment information from N7 segments including car numbers, equipment types, and related identifiers
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_FormatEquipmentDetailsfromN7Segments(["Start Step"])
E_FormatEquipmentDetailsfromN7Segments(["End Step"])
N_FormatEquipmentDetailsfromN7Segments_Node0{"The system needs to include
equipment details in the EDI
transmission"}:::decision N_FormatEquipmentDetailsfromN7Segments_Node0_action["The system should extract and
format equipment information from N7
segments including car numbers,
equipment types, and related
identifiers"]:::main N_FormatEquipmentDetailsfromN7Segments_Node0 -- Yes --> N_FormatEquipmentDetailsfromN7Segments_Node0_action N_FormatEquipmentDetailsfromN7Segments_Node0_action --> E_FormatEquipmentDetailsfromN7Segments S_FormatEquipmentDetailsfromN7Segments --> N_FormatEquipmentDetailsfromN7Segments_Node0 N_FormatEquipmentDetailsfromN7Segments_Node0 -- No --> E_FormatEquipmentDetailsfromN7Segments
equipment details in the EDI
transmission"}:::decision N_FormatEquipmentDetailsfromN7Segments_Node0_action["The system should extract and
format equipment information from N7
segments including car numbers,
equipment types, and related
identifiers"]:::main N_FormatEquipmentDetailsfromN7Segments_Node0 -- Yes --> N_FormatEquipmentDetailsfromN7Segments_Node0_action N_FormatEquipmentDetailsfromN7Segments_Node0_action --> E_FormatEquipmentDetailsfromN7Segments S_FormatEquipmentDetailsfromN7Segments --> N_FormatEquipmentDetailsfromN7Segments_Node0 N_FormatEquipmentDetailsfromN7Segments_Node0 -- No --> E_FormatEquipmentDetailsfromN7Segments
File: GCX016.cbl
GIVEN:
N7 equipment segments are available and dependent segments are being created
WHEN:
The system needs to include equipment details in the EDI transmission
THEN:
- The system should extract
- Format equipment information from n7 segments including car numbers, equipment types, and related identifiers
β Consolidated Acceptance Criteria
- The system needs to create the final EDI message structure → the system should build a complete EDI 350 message copy containing all root segments, dependent segments, and formatted data ready for transmission
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_BuildCompleteEDI350MessageCopy(["Start Step"])
E_BuildCompleteEDI350MessageCopy(["End Step"])
N_BuildCompleteEDI350MessageCopy_Node0{"The system needs to create the
final EDI message structure"}:::decision N_BuildCompleteEDI350MessageCopy_Node0_action["The system should build a complete
EDI 350 message copy containing all
root segments, dependent segments,
and formatted data ready for
transmission"]:::main N_BuildCompleteEDI350MessageCopy_Node0 -- Yes --> N_BuildCompleteEDI350MessageCopy_Node0_action N_BuildCompleteEDI350MessageCopy_Node0_action --> E_BuildCompleteEDI350MessageCopy S_BuildCompleteEDI350MessageCopy --> N_BuildCompleteEDI350MessageCopy_Node0 N_BuildCompleteEDI350MessageCopy_Node0 -- No --> E_BuildCompleteEDI350MessageCopy
final EDI message structure"}:::decision N_BuildCompleteEDI350MessageCopy_Node0_action["The system should build a complete
EDI 350 message copy containing all
root segments, dependent segments,
and formatted data ready for
transmission"]:::main N_BuildCompleteEDI350MessageCopy_Node0 -- Yes --> N_BuildCompleteEDI350MessageCopy_Node0_action N_BuildCompleteEDI350MessageCopy_Node0_action --> E_BuildCompleteEDI350MessageCopy S_BuildCompleteEDI350MessageCopy --> N_BuildCompleteEDI350MessageCopy_Node0 N_BuildCompleteEDI350MessageCopy_Node0 -- No --> E_BuildCompleteEDI350MessageCopy
File: GCX016.cbl
GIVEN:
All EDI segments have been created and equipment details have been formatted
WHEN:
The system needs to create the final EDI message structure
THEN:
The system should build a complete EDI 350 message copy containing all root segments, dependent segments, and formatted data ready for transmission
β Consolidated Acceptance Criteria
- The system needs to initiate the actual EDI transmission process → the system should spawn GCT1091E transaction with the prepared EDI message and transmission parameters
- The system spawns GCT1091E transaction → gCT1091E transaction is initiated for KCSM system integration processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SpawnGCT1091ETransaction(["Start Step"])
E_SpawnGCT1091ETransaction(["End Step"])
N_SpawnGCT1091ETransaction_Node0{"The system needs to initiate the
actual EDI transmission process"}:::decision N_SpawnGCT1091ETransaction_Node0_action["The system should spawn GCT1091E
transaction with the prepared EDI
message and transmission parameters"]:::main N_SpawnGCT1091ETransaction_Node0 -- Yes --> N_SpawnGCT1091ETransaction_Node0_action N_SpawnGCT1091ETransaction_Node0_action --> E_SpawnGCT1091ETransaction S_SpawnGCT1091ETransaction --> N_SpawnGCT1091ETransaction_Node0 N_SpawnGCT1091ETransaction_Node1{"The system spawns GCT1091E
transaction"}:::decision N_SpawnGCT1091ETransaction_Node1_action["GCT1091E transaction is initiated
for KCSM system integration
processing"]:::main N_SpawnGCT1091ETransaction_Node1 -- Yes --> N_SpawnGCT1091ETransaction_Node1_action N_SpawnGCT1091ETransaction_Node1_action --> E_SpawnGCT1091ETransaction N_SpawnGCT1091ETransaction_Node0 -- No --> N_SpawnGCT1091ETransaction_Node1 N_SpawnGCT1091ETransaction_Node1 -- No --> E_SpawnGCT1091ETransaction
actual EDI transmission process"}:::decision N_SpawnGCT1091ETransaction_Node0_action["The system should spawn GCT1091E
transaction with the prepared EDI
message and transmission parameters"]:::main N_SpawnGCT1091ETransaction_Node0 -- Yes --> N_SpawnGCT1091ETransaction_Node0_action N_SpawnGCT1091ETransaction_Node0_action --> E_SpawnGCT1091ETransaction S_SpawnGCT1091ETransaction --> N_SpawnGCT1091ETransaction_Node0 N_SpawnGCT1091ETransaction_Node1{"The system spawns GCT1091E
transaction"}:::decision N_SpawnGCT1091ETransaction_Node1_action["GCT1091E transaction is initiated
for KCSM system integration
processing"]:::main N_SpawnGCT1091ETransaction_Node1 -- Yes --> N_SpawnGCT1091ETransaction_Node1_action N_SpawnGCT1091ETransaction_Node1_action --> E_SpawnGCT1091ETransaction N_SpawnGCT1091ETransaction_Node0 -- No --> N_SpawnGCT1091ETransaction_Node1 N_SpawnGCT1091ETransaction_Node1 -- No --> E_SpawnGCT1091ETransaction
File: GCX016.cbl
GIVEN:
KCSM transmission parameters have been configured and EDI message is ready
WHEN:
The system needs to initiate the actual EDI transmission process
THEN:
- The system should spawn gct1091e transaction with the prepared edi message
- Transmission parameters
File: GCX016.cbl
GIVEN:
Transmission has been created successfully
WHEN:
The system spawns GCT1091E transaction
THEN:
GCT1091E transaction is initiated for KCSM system integration processing
β Consolidated Acceptance Criteria
- The system needs to verify the spawn operation result → the system should check the spawn status and determine whether to proceed with successful processing or handle spawn errors
- The system receives the spawn response → the system determines if the transaction spawn was successful or failed
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_TransactionSpawnSuccessful(["Start Step"])
E_TransactionSpawnSuccessful(["End Step"])
N_TransactionSpawnSuccessful_Node0{"The system needs to verify the
spawn operation result"}:::decision N_TransactionSpawnSuccessful_Node0_action["The system should check the spawn
status and determine whether to
proceed with successful processing
or handle spawn errors"]:::main N_TransactionSpawnSuccessful_Node0 -- Yes --> N_TransactionSpawnSuccessful_Node0_action N_TransactionSpawnSuccessful_Node0_action --> E_TransactionSpawnSuccessful S_TransactionSpawnSuccessful --> N_TransactionSpawnSuccessful_Node0 N_TransactionSpawnSuccessful_Node1{"The system receives the spawn
response"}:::decision N_TransactionSpawnSuccessful_Node1_action["The system determines if the
transaction spawn was successful or
failed"]:::main N_TransactionSpawnSuccessful_Node1 -- Yes --> N_TransactionSpawnSuccessful_Node1_action N_TransactionSpawnSuccessful_Node1_action --> E_TransactionSpawnSuccessful N_TransactionSpawnSuccessful_Node0 -- No --> N_TransactionSpawnSuccessful_Node1 N_TransactionSpawnSuccessful_Node1 -- No --> E_TransactionSpawnSuccessful
spawn operation result"}:::decision N_TransactionSpawnSuccessful_Node0_action["The system should check the spawn
status and determine whether to
proceed with successful processing
or handle spawn errors"]:::main N_TransactionSpawnSuccessful_Node0 -- Yes --> N_TransactionSpawnSuccessful_Node0_action N_TransactionSpawnSuccessful_Node0_action --> E_TransactionSpawnSuccessful S_TransactionSpawnSuccessful --> N_TransactionSpawnSuccessful_Node0 N_TransactionSpawnSuccessful_Node1{"The system receives the spawn
response"}:::decision N_TransactionSpawnSuccessful_Node1_action["The system determines if the
transaction spawn was successful or
failed"]:::main N_TransactionSpawnSuccessful_Node1 -- Yes --> N_TransactionSpawnSuccessful_Node1_action N_TransactionSpawnSuccessful_Node1_action --> E_TransactionSpawnSuccessful N_TransactionSpawnSuccessful_Node0 -- No --> N_TransactionSpawnSuccessful_Node1 N_TransactionSpawnSuccessful_Node1 -- No --> E_TransactionSpawnSuccessful
File: GCX016.cbl
GIVEN:
GCT1091E transaction spawn has been attempted
WHEN:
The system needs to verify the spawn operation result
THEN:
- The system should check the spawn status
- Determine whether to proceed with successful processing or handle spawn errors
File: GCX016.cbl
GIVEN:
A GCT0161E transaction has been attempted for a follower manifest
WHEN:
The system receives the spawn response
THEN:
The system determines if the transaction spawn was successful or failed
β Consolidated Acceptance Criteria
- The system needs to record transmission activity → the system should log transmission details including message identifiers, timestamps, broker information, and processing status
- The system logs transmission details → the system records transmission file creation details including timestamps, segment counts, and processing status for audit trail
- The system completes transmission setup → transmission details are logged for audit and tracking purposes
- The system needs to maintain an audit trail → the system logs transmission details including segment information and processing status
- The system logs transmission details → transmission details including broker information, message length, and timestamp are logged for audit purposes
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogTransmissionDetails(["Start Step"])
E_LogTransmissionDetails(["End Step"])
N_LogTransmissionDetails_Node0{"The system needs to record
transmission activity"}:::decision N_LogTransmissionDetails_Node0_action["The system should log transmission
details including message
identifiers, timestamps, broker
information, and processing status"]:::main N_LogTransmissionDetails_Node0 -- Yes --> N_LogTransmissionDetails_Node0_action N_LogTransmissionDetails_Node0_action --> E_LogTransmissionDetails S_LogTransmissionDetails --> N_LogTransmissionDetails_Node0 N_LogTransmissionDetails_Node1{"The system logs transmission
details"}:::decision N_LogTransmissionDetails_Node1_action["The system records transmission
file creation details including
timestamps, segment counts, and
processing status for audit trail"]:::main N_LogTransmissionDetails_Node1 -- Yes --> N_LogTransmissionDetails_Node1_action N_LogTransmissionDetails_Node1_action --> E_LogTransmissionDetails N_LogTransmissionDetails_Node0 -- No --> N_LogTransmissionDetails_Node1 N_LogTransmissionDetails_Node2{"The system completes transmission
setup"}:::decision N_LogTransmissionDetails_Node2_action["Transmission details are logged for
audit and tracking purposes"]:::main N_LogTransmissionDetails_Node2 -- Yes --> N_LogTransmissionDetails_Node2_action N_LogTransmissionDetails_Node2_action --> E_LogTransmissionDetails N_LogTransmissionDetails_Node1 -- No --> N_LogTransmissionDetails_Node2 N_LogTransmissionDetails_Node3{"The system needs to maintain an
audit trail"}:::decision N_LogTransmissionDetails_Node3_action["The system logs transmission
details including segment
information and processing status"]:::main N_LogTransmissionDetails_Node3 -- Yes --> N_LogTransmissionDetails_Node3_action N_LogTransmissionDetails_Node3_action --> E_LogTransmissionDetails N_LogTransmissionDetails_Node2 -- No --> N_LogTransmissionDetails_Node3 N_LogTransmissionDetails_Node4{"The system logs transmission
details"}:::decision N_LogTransmissionDetails_Node4_action["Transmission details including
broker information, message length,
and timestamp are logged for audit
purposes"]:::main N_LogTransmissionDetails_Node4 -- Yes --> N_LogTransmissionDetails_Node4_action N_LogTransmissionDetails_Node4_action --> E_LogTransmissionDetails N_LogTransmissionDetails_Node3 -- No --> N_LogTransmissionDetails_Node4 N_LogTransmissionDetails_Node4 -- No --> E_LogTransmissionDetails
transmission activity"}:::decision N_LogTransmissionDetails_Node0_action["The system should log transmission
details including message
identifiers, timestamps, broker
information, and processing status"]:::main N_LogTransmissionDetails_Node0 -- Yes --> N_LogTransmissionDetails_Node0_action N_LogTransmissionDetails_Node0_action --> E_LogTransmissionDetails S_LogTransmissionDetails --> N_LogTransmissionDetails_Node0 N_LogTransmissionDetails_Node1{"The system logs transmission
details"}:::decision N_LogTransmissionDetails_Node1_action["The system records transmission
file creation details including
timestamps, segment counts, and
processing status for audit trail"]:::main N_LogTransmissionDetails_Node1 -- Yes --> N_LogTransmissionDetails_Node1_action N_LogTransmissionDetails_Node1_action --> E_LogTransmissionDetails N_LogTransmissionDetails_Node0 -- No --> N_LogTransmissionDetails_Node1 N_LogTransmissionDetails_Node2{"The system completes transmission
setup"}:::decision N_LogTransmissionDetails_Node2_action["Transmission details are logged for
audit and tracking purposes"]:::main N_LogTransmissionDetails_Node2 -- Yes --> N_LogTransmissionDetails_Node2_action N_LogTransmissionDetails_Node2_action --> E_LogTransmissionDetails N_LogTransmissionDetails_Node1 -- No --> N_LogTransmissionDetails_Node2 N_LogTransmissionDetails_Node3{"The system needs to maintain an
audit trail"}:::decision N_LogTransmissionDetails_Node3_action["The system logs transmission
details including segment
information and processing status"]:::main N_LogTransmissionDetails_Node3 -- Yes --> N_LogTransmissionDetails_Node3_action N_LogTransmissionDetails_Node3_action --> E_LogTransmissionDetails N_LogTransmissionDetails_Node2 -- No --> N_LogTransmissionDetails_Node3 N_LogTransmissionDetails_Node4{"The system logs transmission
details"}:::decision N_LogTransmissionDetails_Node4_action["Transmission details including
broker information, message length,
and timestamp are logged for audit
purposes"]:::main N_LogTransmissionDetails_Node4 -- Yes --> N_LogTransmissionDetails_Node4_action N_LogTransmissionDetails_Node4_action --> E_LogTransmissionDetails N_LogTransmissionDetails_Node3 -- No --> N_LogTransmissionDetails_Node4 N_LogTransmissionDetails_Node4 -- No --> E_LogTransmissionDetails
File: GCX016.cbl
GIVEN:
GCT1091E transaction spawn was successful
WHEN:
The system needs to record transmission activity
THEN:
The system should log transmission details including message identifiers, timestamps, broker information, and processing status
File: GCX016.cbl
GIVEN:
Message has been queued for KCSM system
WHEN:
The system logs transmission details
THEN:
The system records transmission file creation details including timestamps, segment counts, and processing status for audit trail
File: GCX016.cbl
GIVEN:
Message has been queued for KCSM transmission
WHEN:
The system completes transmission setup
THEN:
- Transmission details are logged for audit
- Tracking purposes
File: GCX016.cbl
GIVEN:
The database insertion was successful
WHEN:
The system needs to maintain an audit trail
THEN:
- The system logs transmission details including segment information
- Processing status
File: GCX016.cbl
GIVEN:
Transmission parameters have been passed to GCT1091E
WHEN:
The system logs transmission details
THEN:
Transmission details including broker information, message length, and timestamp are logged for audit purposes
β Consolidated Acceptance Criteria
- The system needs to queue the message for KCSM delivery → the system should place the EDI message in the appropriate queue for KCSM system processing with proper routing and priority
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_QueueEDIMessageforKCSM(["Start Step"])
E_QueueEDIMessageforKCSM(["End Step"])
N_QueueEDIMessageforKCSM_Node0{"The system needs to queue the
message for KCSM delivery"}:::decision N_QueueEDIMessageforKCSM_Node0_action["The system should place the EDI
message in the appropriate queue for
KCSM system processing with proper
routing and priority"]:::main N_QueueEDIMessageforKCSM_Node0 -- Yes --> N_QueueEDIMessageforKCSM_Node0_action N_QueueEDIMessageforKCSM_Node0_action --> E_QueueEDIMessageforKCSM S_QueueEDIMessageforKCSM --> N_QueueEDIMessageforKCSM_Node0 N_QueueEDIMessageforKCSM_Node0 -- No --> E_QueueEDIMessageforKCSM
message for KCSM delivery"}:::decision N_QueueEDIMessageforKCSM_Node0_action["The system should place the EDI
message in the appropriate queue for
KCSM system processing with proper
routing and priority"]:::main N_QueueEDIMessageforKCSM_Node0 -- Yes --> N_QueueEDIMessageforKCSM_Node0_action N_QueueEDIMessageforKCSM_Node0_action --> E_QueueEDIMessageforKCSM S_QueueEDIMessageforKCSM --> N_QueueEDIMessageforKCSM_Node0 N_QueueEDIMessageforKCSM_Node0 -- No --> E_QueueEDIMessageforKCSM
File: GCX016.cbl
GIVEN:
Transmission details have been logged successfully
WHEN:
The system needs to queue the message for KCSM delivery
THEN:
- The system should place the edi message in the appropriate queue for kcsm system processing with proper routing
- Priority
β Consolidated Acceptance Criteria
- The system needs to update processing status → the system should update transaction status to indicate successful KCSM EDI integration completion
- The system updates transaction status → aECWRKTB work tables are updated with current transaction status and processing results
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UpdateTransactionStatus(["Start Step"])
E_UpdateTransactionStatus(["End Step"])
N_UpdateTransactionStatus_Node0{"The system needs to update
processing status"}:::decision N_UpdateTransactionStatus_Node0_action["The system should update
transaction status to indicate
successful KCSM EDI integration
completion"]:::main N_UpdateTransactionStatus_Node0 -- Yes --> N_UpdateTransactionStatus_Node0_action N_UpdateTransactionStatus_Node0_action --> E_UpdateTransactionStatus S_UpdateTransactionStatus --> N_UpdateTransactionStatus_Node0 N_UpdateTransactionStatus_Node1{"The system updates transaction
status"}:::decision N_UpdateTransactionStatus_Node1_action["AECWRKTB work tables are updated
with current transaction status and
processing results"]:::main N_UpdateTransactionStatus_Node1 -- Yes --> N_UpdateTransactionStatus_Node1_action N_UpdateTransactionStatus_Node1_action --> E_UpdateTransactionStatus N_UpdateTransactionStatus_Node0 -- No --> N_UpdateTransactionStatus_Node1 N_UpdateTransactionStatus_Node1 -- No --> E_UpdateTransactionStatus
processing status"}:::decision N_UpdateTransactionStatus_Node0_action["The system should update
transaction status to indicate
successful KCSM EDI integration
completion"]:::main N_UpdateTransactionStatus_Node0 -- Yes --> N_UpdateTransactionStatus_Node0_action N_UpdateTransactionStatus_Node0_action --> E_UpdateTransactionStatus S_UpdateTransactionStatus --> N_UpdateTransactionStatus_Node0 N_UpdateTransactionStatus_Node1{"The system updates transaction
status"}:::decision N_UpdateTransactionStatus_Node1_action["AECWRKTB work tables are updated
with current transaction status and
processing results"]:::main N_UpdateTransactionStatus_Node1 -- Yes --> N_UpdateTransactionStatus_Node1_action N_UpdateTransactionStatus_Node1_action --> E_UpdateTransactionStatus N_UpdateTransactionStatus_Node0 -- No --> N_UpdateTransactionStatus_Node1 N_UpdateTransactionStatus_Node1 -- No --> E_UpdateTransactionStatus
File: GCX016.cbl
GIVEN:
EDI message has been queued for KCSM successfully
WHEN:
The system needs to update processing status
THEN:
The system should update transaction status to indicate successful KCSM EDI integration completion
File: GCX016.cbl
GIVEN:
EDI message has been queued for transmission
WHEN:
The system updates transaction status
THEN:
- Aecwrktb work tables are updated with current transaction status
- Processing results
β Consolidated Acceptance Criteria
- The system needs to record error information → the system should log detailed error information including error codes, failure reasons, message content, and system state for troubleshooting purposes
- Error logging is performed → detailed error information is logged for troubleshooting and audit purposes
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogErrorDetails(["Start Step"])
E_LogErrorDetails(["End Step"])
N_LogErrorDetails_Node0{"The system needs to record error
information"}:::decision N_LogErrorDetails_Node0_action["The system should log detailed
error information including error
codes, failure reasons, message
content, and system state for
troubleshooting purposes"]:::exclusion N_LogErrorDetails_Node0 -- Yes -->|Alternative| N_LogErrorDetails_Node0_action N_LogErrorDetails_Node0_action --> E_LogErrorDetails S_LogErrorDetails --> N_LogErrorDetails_Node0 N_LogErrorDetails_Node1{"error logging is performed"}:::decision N_LogErrorDetails_Node1_action["detailed error information is
logged for troubleshooting and audit
purposes"]:::exclusion N_LogErrorDetails_Node1 -- Yes -->|Alternative| N_LogErrorDetails_Node1_action N_LogErrorDetails_Node1_action --> E_LogErrorDetails N_LogErrorDetails_Node0 -- No --> N_LogErrorDetails_Node1 N_LogErrorDetails_Node1 -- No --> E_LogErrorDetails
information"}:::decision N_LogErrorDetails_Node0_action["The system should log detailed
error information including error
codes, failure reasons, message
content, and system state for
troubleshooting purposes"]:::exclusion N_LogErrorDetails_Node0 -- Yes -->|Alternative| N_LogErrorDetails_Node0_action N_LogErrorDetails_Node0_action --> E_LogErrorDetails S_LogErrorDetails --> N_LogErrorDetails_Node0 N_LogErrorDetails_Node1{"error logging is performed"}:::decision N_LogErrorDetails_Node1_action["detailed error information is
logged for troubleshooting and audit
purposes"]:::exclusion N_LogErrorDetails_Node1 -- Yes -->|Alternative| N_LogErrorDetails_Node1_action N_LogErrorDetails_Node1_action --> E_LogErrorDetails N_LogErrorDetails_Node0 -- No --> N_LogErrorDetails_Node1 N_LogErrorDetails_Node1 -- No --> E_LogErrorDetails
File: GCX016.cbl
GIVEN:
A transaction spawn error is being handled
WHEN:
The system needs to record error information
THEN:
The system should log detailed error information including error codes, failure reasons, message content, and system state for troubleshooting purposes
File: GCX016.cbl
GIVEN:
creation error handling is initiated
WHEN:
error logging is performed
THEN:
- Detailed error information is logged for troubleshooting
- Audit purposes
β Consolidated Acceptance Criteria
- The system validates the disposition code against AECWRKTB configuration table → the disposition code must be found in the KCSM authorized codes list to proceed with message queuing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ValidateKCSMDispositionCode(["Start Step"])
E_ValidateKCSMDispositionCode(["End Step"])
N_ValidateKCSMDispositionCode_Node0{"The system validates the
disposition code against AECWRKTB
configuration table"}:::decision N_ValidateKCSMDispositionCode_Node0_action["The disposition code must be found
in the KCSM authorized codes list to
proceed with message queuing"]:::main N_ValidateKCSMDispositionCode_Node0 -- Yes --> N_ValidateKCSMDispositionCode_Node0_action N_ValidateKCSMDispositionCode_Node0_action --> E_ValidateKCSMDispositionCode S_ValidateKCSMDispositionCode --> N_ValidateKCSMDispositionCode_Node0 N_ValidateKCSMDispositionCode_Node0 -- No --> E_ValidateKCSMDispositionCode
disposition code against AECWRKTB
configuration table"}:::decision N_ValidateKCSMDispositionCode_Node0_action["The disposition code must be found
in the KCSM authorized codes list to
proceed with message queuing"]:::main N_ValidateKCSMDispositionCode_Node0 -- Yes --> N_ValidateKCSMDispositionCode_Node0_action N_ValidateKCSMDispositionCode_Node0_action --> E_ValidateKCSMDispositionCode S_ValidateKCSMDispositionCode --> N_ValidateKCSMDispositionCode_Node0 N_ValidateKCSMDispositionCode_Node0 -- No --> E_ValidateKCSMDispositionCode
File: GCX016.cbl
GIVEN:
A disposition code is provided for KCSM processing
WHEN:
The system validates the disposition code against AECWRKTB configuration table
THEN:
The disposition code must be found in the KCSM authorized codes list to proceed with message queuing
β Consolidated Acceptance Criteria
- The system prepares the message for KCSM transmission → all message segments must be copied to the transmission buffer maintaining segment structure and data integrity
- The system processes the original EDI 350 message → the system copies relevant message segments including X4, N7, and other required segments to the KCSM transmission structure
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CopyEDI350MessageSegments(["Start Step"])
E_CopyEDI350MessageSegments(["End Step"])
N_CopyEDI350MessageSegments_Node0{"The system prepares the message for
KCSM transmission"}:::decision N_CopyEDI350MessageSegments_Node0_action["All message segments must be copied
to the transmission buffer
maintaining segment structure and
data integrity"]:::main N_CopyEDI350MessageSegments_Node0 -- Yes --> N_CopyEDI350MessageSegments_Node0_action N_CopyEDI350MessageSegments_Node0_action --> E_CopyEDI350MessageSegments S_CopyEDI350MessageSegments --> N_CopyEDI350MessageSegments_Node0 N_CopyEDI350MessageSegments_Node1{"The system processes the original
EDI 350 message"}:::decision N_CopyEDI350MessageSegments_Node1_action["The system copies relevant message
segments including X4, N7, and other
required segments to the KCSM
transmission structure"]:::main N_CopyEDI350MessageSegments_Node1 -- Yes --> N_CopyEDI350MessageSegments_Node1_action N_CopyEDI350MessageSegments_Node1_action --> E_CopyEDI350MessageSegments N_CopyEDI350MessageSegments_Node0 -- No --> N_CopyEDI350MessageSegments_Node1 N_CopyEDI350MessageSegments_Node1 -- No --> E_CopyEDI350MessageSegments
KCSM transmission"}:::decision N_CopyEDI350MessageSegments_Node0_action["All message segments must be copied
to the transmission buffer
maintaining segment structure and
data integrity"]:::main N_CopyEDI350MessageSegments_Node0 -- Yes --> N_CopyEDI350MessageSegments_Node0_action N_CopyEDI350MessageSegments_Node0_action --> E_CopyEDI350MessageSegments S_CopyEDI350MessageSegments --> N_CopyEDI350MessageSegments_Node0 N_CopyEDI350MessageSegments_Node1{"The system processes the original
EDI 350 message"}:::decision N_CopyEDI350MessageSegments_Node1_action["The system copies relevant message
segments including X4, N7, and other
required segments to the KCSM
transmission structure"]:::main N_CopyEDI350MessageSegments_Node1 -- Yes --> N_CopyEDI350MessageSegments_Node1_action N_CopyEDI350MessageSegments_Node1_action --> E_CopyEDI350MessageSegments N_CopyEDI350MessageSegments_Node0 -- No --> N_CopyEDI350MessageSegments_Node1 N_CopyEDI350MessageSegments_Node1 -- No --> E_CopyEDI350MessageSegments
File: GCX016.cbl
GIVEN:
An EDI 350 message exists with multiple segments
WHEN:
The system prepares the message for KCSM transmission
THEN:
- All message segments must be copied to the transmission buffer maintaining segment structure
- Data integrity
File: GCX016.cbl
GIVEN:
Transmission parameters have been initialized
WHEN:
The system processes the original EDI 350 message
THEN:
The system copies relevant message segments including X4, N7, and other required segments to the KCSM transmission structure
β Consolidated Acceptance Criteria
- The system formats the EDI message for KCSM → the message must be formatted according to KCSM EDI standards with proper segment delimiters and structure
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_FormatEDIMessageforKCSM(["Start Step"])
E_FormatEDIMessageforKCSM(["End Step"])
N_FormatEDIMessageforKCSM_Node0{"The system formats the EDI message
for KCSM"}:::decision N_FormatEDIMessageforKCSM_Node0_action["The message must be formatted
according to KCSM EDI standards with
proper segment delimiters and
structure"]:::main N_FormatEDIMessageforKCSM_Node0 -- Yes --> N_FormatEDIMessageforKCSM_Node0_action N_FormatEDIMessageforKCSM_Node0_action --> E_FormatEDIMessageforKCSM S_FormatEDIMessageforKCSM --> N_FormatEDIMessageforKCSM_Node0 N_FormatEDIMessageforKCSM_Node0 -- No --> E_FormatEDIMessageforKCSM
for KCSM"}:::decision N_FormatEDIMessageforKCSM_Node0_action["The message must be formatted
according to KCSM EDI standards with
proper segment delimiters and
structure"]:::main N_FormatEDIMessageforKCSM_Node0 -- Yes --> N_FormatEDIMessageforKCSM_Node0_action N_FormatEDIMessageforKCSM_Node0_action --> E_FormatEDIMessageforKCSM S_FormatEDIMessageforKCSM --> N_FormatEDIMessageforKCSM_Node0 N_FormatEDIMessageforKCSM_Node0 -- No --> E_FormatEDIMessageforKCSM
File: GCX016.cbl
GIVEN:
Root and dependent segments are created
WHEN:
The system formats the EDI message for KCSM
THEN:
- The message must be formatted according to kcsm edi standards with proper segment delimiters
- Structure
β Consolidated Acceptance Criteria
- The system prepares the message queue entry → the queue entry must include message data, transmission parameters, and routing information
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_PrepareMessageQueueEntry(["Start Step"])
E_PrepareMessageQueueEntry(["End Step"])
N_PrepareMessageQueueEntry_Node0{"The system prepares the message
queue entry"}:::decision N_PrepareMessageQueueEntry_Node0_action["The queue entry must include
message data, transmission
parameters, and routing information"]:::main N_PrepareMessageQueueEntry_Node0 -- Yes --> N_PrepareMessageQueueEntry_Node0_action N_PrepareMessageQueueEntry_Node0_action --> E_PrepareMessageQueueEntry S_PrepareMessageQueueEntry --> N_PrepareMessageQueueEntry_Node0 N_PrepareMessageQueueEntry_Node0 -- No --> E_PrepareMessageQueueEntry
queue entry"}:::decision N_PrepareMessageQueueEntry_Node0_action["The queue entry must include
message data, transmission
parameters, and routing information"]:::main N_PrepareMessageQueueEntry_Node0 -- Yes --> N_PrepareMessageQueueEntry_Node0_action N_PrepareMessageQueueEntry_Node0_action --> E_PrepareMessageQueueEntry S_PrepareMessageQueueEntry --> N_PrepareMessageQueueEntry_Node0 N_PrepareMessageQueueEntry_Node0 -- No --> E_PrepareMessageQueueEntry
File: GCX016.cbl
GIVEN:
A formatted EDI message is ready for transmission
WHEN:
The system prepares the message queue entry
THEN:
The queue entry must include message data, transmission parameters, and routing information
β Consolidated Acceptance Criteria
- The system calls WRITMSGL to queue the message → wRITMSGL must be invoked with the prepared message data and queue parameters
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CallWRITMSGLtoQueueMessage(["Start Step"])
E_CallWRITMSGLtoQueueMessage(["End Step"])
N_CallWRITMSGLtoQueueMessage_Node0{"The system calls WRITMSGL to queue
the message"}:::decision N_CallWRITMSGLtoQueueMessage_Node0_action["WRITMSGL must be invoked with the
prepared message data and queue
parameters"]:::main N_CallWRITMSGLtoQueueMessage_Node0 -- Yes --> N_CallWRITMSGLtoQueueMessage_Node0_action N_CallWRITMSGLtoQueueMessage_Node0_action --> E_CallWRITMSGLtoQueueMessage S_CallWRITMSGLtoQueueMessage --> N_CallWRITMSGLtoQueueMessage_Node0 N_CallWRITMSGLtoQueueMessage_Node0 -- No --> E_CallWRITMSGLtoQueueMessage
the message"}:::decision N_CallWRITMSGLtoQueueMessage_Node0_action["WRITMSGL must be invoked with the
prepared message data and queue
parameters"]:::main N_CallWRITMSGLtoQueueMessage_Node0 -- Yes --> N_CallWRITMSGLtoQueueMessage_Node0_action N_CallWRITMSGLtoQueueMessage_Node0_action --> E_CallWRITMSGLtoQueueMessage S_CallWRITMSGLtoQueueMessage --> N_CallWRITMSGLtoQueueMessage_Node0 N_CallWRITMSGLtoQueueMessage_Node0 -- No --> E_CallWRITMSGLtoQueueMessage
File: GCX016.cbl
GIVEN:
A message queue entry is prepared
WHEN:
The system calls WRITMSGL to queue the message
THEN:
- Writmsgl must be invoked with the prepared message data
- Queue parameters
β Consolidated Acceptance Criteria
- The system checks the queue operation result → if the operation is successful, proceed to logging; if failed, initiate error handling
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_QueueOperationSuccessful(["Start Step"])
E_QueueOperationSuccessful(["End Step"])
N_QueueOperationSuccessful_Node0{"The system checks the queue
operation result"}:::decision N_QueueOperationSuccessful_Node0_action["If the operation is successful,
proceed to logging if failed,
initiate error handling"]:::main N_QueueOperationSuccessful_Node0 -- Yes --> N_QueueOperationSuccessful_Node0_action N_QueueOperationSuccessful_Node0_action --> E_QueueOperationSuccessful S_QueueOperationSuccessful --> N_QueueOperationSuccessful_Node0 N_QueueOperationSuccessful_Node0 -- No --> E_QueueOperationSuccessful
operation result"}:::decision N_QueueOperationSuccessful_Node0_action["If the operation is successful,
proceed to logging if failed,
initiate error handling"]:::main N_QueueOperationSuccessful_Node0 -- Yes --> N_QueueOperationSuccessful_Node0_action N_QueueOperationSuccessful_Node0_action --> E_QueueOperationSuccessful S_QueueOperationSuccessful --> N_QueueOperationSuccessful_Node0 N_QueueOperationSuccessful_Node0 -- No --> E_QueueOperationSuccessful
File: GCX016.cbl
GIVEN:
WRITMSGL has been called to queue a message
WHEN:
The system checks the queue operation result
THEN:
If the operation is successful, proceed to logging; if failed, initiate error handling
β Consolidated Acceptance Criteria
- The system logs transmission parameters → transmission details including message ID, timestamp, and routing information must be logged
- Transmission parameters need to be logged → transmission parameters including broker configuration, message type, and processing flags are recorded in A9RT segment
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogTransmissionParameters(["Start Step"])
E_LogTransmissionParameters(["End Step"])
N_LogTransmissionParameters_Node0{"The system logs transmission
parameters"}:::decision N_LogTransmissionParameters_Node0_action["Transmission details including
message ID, timestamp, and routing
information must be logged"]:::main N_LogTransmissionParameters_Node0 -- Yes --> N_LogTransmissionParameters_Node0_action N_LogTransmissionParameters_Node0_action --> E_LogTransmissionParameters S_LogTransmissionParameters --> N_LogTransmissionParameters_Node0 N_LogTransmissionParameters_Node1{"Transmission parameters need to be
logged"}:::decision N_LogTransmissionParameters_Node1_action["Transmission parameters including
broker configuration, message type,
and processing flags are recorded in
A9RT segment"]:::main N_LogTransmissionParameters_Node1 -- Yes --> N_LogTransmissionParameters_Node1_action N_LogTransmissionParameters_Node1_action --> E_LogTransmissionParameters N_LogTransmissionParameters_Node0 -- No --> N_LogTransmissionParameters_Node1 N_LogTransmissionParameters_Node1 -- No --> E_LogTransmissionParameters
parameters"}:::decision N_LogTransmissionParameters_Node0_action["Transmission details including
message ID, timestamp, and routing
information must be logged"]:::main N_LogTransmissionParameters_Node0 -- Yes --> N_LogTransmissionParameters_Node0_action N_LogTransmissionParameters_Node0_action --> E_LogTransmissionParameters S_LogTransmissionParameters --> N_LogTransmissionParameters_Node0 N_LogTransmissionParameters_Node1{"Transmission parameters need to be
logged"}:::decision N_LogTransmissionParameters_Node1_action["Transmission parameters including
broker configuration, message type,
and processing flags are recorded in
A9RT segment"]:::main N_LogTransmissionParameters_Node1 -- Yes --> N_LogTransmissionParameters_Node1_action N_LogTransmissionParameters_Node1_action --> E_LogTransmissionParameters N_LogTransmissionParameters_Node0 -- No --> N_LogTransmissionParameters_Node1 N_LogTransmissionParameters_Node1 -- No --> E_LogTransmissionParameters
File: GCX016.cbl
GIVEN:
A message has been successfully queued
WHEN:
The system logs transmission parameters
THEN:
Transmission details including message ID, timestamp, and routing information must be logged
File: GCX016.cbl
GIVEN:
A transmission root segment has been created
WHEN:
Transmission parameters need to be logged
THEN:
Transmission parameters including broker configuration, message type, and processing flags are recorded in A9RT segment
β Consolidated Acceptance Criteria
- The system handles the queue error → error details must be captured and retry logic must be initiated
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_HandleQueueError(["Start Step"])
E_HandleQueueError(["End Step"])
N_HandleQueueError_Node0{"The system handles the queue error"}:::decision
N_HandleQueueError_Node0_action["Error details must be captured and
retry logic must be initiated"]:::exclusion N_HandleQueueError_Node0 -- Yes -->|Alternative| N_HandleQueueError_Node0_action N_HandleQueueError_Node0_action --> E_HandleQueueError S_HandleQueueError --> N_HandleQueueError_Node0 N_HandleQueueError_Node0 -- No --> E_HandleQueueError
retry logic must be initiated"]:::exclusion N_HandleQueueError_Node0 -- Yes -->|Alternative| N_HandleQueueError_Node0_action N_HandleQueueError_Node0_action --> E_HandleQueueError S_HandleQueueError --> N_HandleQueueError_Node0 N_HandleQueueError_Node0 -- No --> E_HandleQueueError
File: GCX016.cbl
GIVEN:
A message queuing operation has failed
WHEN:
The system handles the queue error
THEN:
- Error details must be captured
- Retry logic must be initiated
β Consolidated Acceptance Criteria
- The system retries the queue operation → the same message must be resubmitted to the queue with identical parameters
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RetryQueueOperation(["Start Step"])
E_RetryQueueOperation(["End Step"])
N_RetryQueueOperation_Node0{"The system retries the queue
operation"}:::decision N_RetryQueueOperation_Node0_action["The same message must be
resubmitted to the queue with
identical parameters"]:::main N_RetryQueueOperation_Node0 -- Yes --> N_RetryQueueOperation_Node0_action N_RetryQueueOperation_Node0_action --> E_RetryQueueOperation S_RetryQueueOperation --> N_RetryQueueOperation_Node0 N_RetryQueueOperation_Node0 -- No --> E_RetryQueueOperation
operation"}:::decision N_RetryQueueOperation_Node0_action["The same message must be
resubmitted to the queue with
identical parameters"]:::main N_RetryQueueOperation_Node0 -- Yes --> N_RetryQueueOperation_Node0_action N_RetryQueueOperation_Node0_action --> E_RetryQueueOperation S_RetryQueueOperation --> N_RetryQueueOperation_Node0 N_RetryQueueOperation_Node0 -- No --> E_RetryQueueOperation
File: GCX016.cbl
GIVEN:
A queue error has been handled
WHEN:
The system retries the queue operation
THEN:
The same message must be resubmitted to the queue with identical parameters
β Consolidated Acceptance Criteria
- The system checks the retry operation result → if retry is successful, proceed to logging; if retry fails, log the failure and continue processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RetrySuccessful(["Start Step"])
E_RetrySuccessful(["End Step"])
N_RetrySuccessful_Node0{"The system checks the retry
operation result"}:::decision N_RetrySuccessful_Node0_action["If retry is successful, proceed to
logging if retry fails, log the
failure and continue processing"]:::main N_RetrySuccessful_Node0 -- Yes --> N_RetrySuccessful_Node0_action N_RetrySuccessful_Node0_action --> E_RetrySuccessful S_RetrySuccessful --> N_RetrySuccessful_Node0 N_RetrySuccessful_Node0 -- No --> E_RetrySuccessful
operation result"}:::decision N_RetrySuccessful_Node0_action["If retry is successful, proceed to
logging if retry fails, log the
failure and continue processing"]:::main N_RetrySuccessful_Node0 -- Yes --> N_RetrySuccessful_Node0_action N_RetrySuccessful_Node0_action --> E_RetrySuccessful S_RetrySuccessful --> N_RetrySuccessful_Node0 N_RetrySuccessful_Node0 -- No --> E_RetrySuccessful
File: GCX016.cbl
GIVEN:
A queue operation has been retried
WHEN:
The system checks the retry operation result
THEN:
- If retry is successful, proceed to logging; if retry fails, log the failure
- Continue processing
β Consolidated Acceptance Criteria
- The system logs the queue failure → failure details including error codes, message data, and retry attempts must be logged for troubleshooting
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogQueueFailure(["Start Step"])
E_LogQueueFailure(["End Step"])
N_LogQueueFailure_Node0{"The system logs the queue failure"}:::decision
N_LogQueueFailure_Node0_action["Failure details including error
codes, message data, and retry
attempts must be logged for
troubleshooting"]:::main N_LogQueueFailure_Node0 -- Yes --> N_LogQueueFailure_Node0_action N_LogQueueFailure_Node0_action --> E_LogQueueFailure S_LogQueueFailure --> N_LogQueueFailure_Node0 N_LogQueueFailure_Node0 -- No --> E_LogQueueFailure
codes, message data, and retry
attempts must be logged for
troubleshooting"]:::main N_LogQueueFailure_Node0 -- Yes --> N_LogQueueFailure_Node0_action N_LogQueueFailure_Node0_action --> E_LogQueueFailure S_LogQueueFailure --> N_LogQueueFailure_Node0 N_LogQueueFailure_Node0 -- No --> E_LogQueueFailure
File: GCX016.cbl
GIVEN:
A queue retry operation has failed
WHEN:
The system logs the queue failure
THEN:
Failure details including error codes, message data, and retry attempts must be logged for troubleshooting
β Consolidated Acceptance Criteria
- Detailed transmission information needs to be stored → a9DP transmission dependent segment is created with message details and cargo information
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CreateTransmissionDependentSegment(["Start Step"])
E_CreateTransmissionDependentSegment(["End Step"])
N_CreateTransmissionDependentSegment_Node0{"Detailed transmission information
needs to be stored"}:::decision N_CreateTransmissionDependentSegment_Node0_action["A9DP transmission dependent segment
is created with message details and
cargo information"]:::main N_CreateTransmissionDependentSegment_Node0 -- Yes --> N_CreateTransmissionDependentSegment_Node0_action N_CreateTransmissionDependentSegment_Node0_action --> E_CreateTransmissionDependentSegment S_CreateTransmissionDependentSegment --> N_CreateTransmissionDependentSegment_Node0 N_CreateTransmissionDependentSegment_Node0 -- No --> E_CreateTransmissionDependentSegment
needs to be stored"}:::decision N_CreateTransmissionDependentSegment_Node0_action["A9DP transmission dependent segment
is created with message details and
cargo information"]:::main N_CreateTransmissionDependentSegment_Node0 -- Yes --> N_CreateTransmissionDependentSegment_Node0_action N_CreateTransmissionDependentSegment_Node0_action --> E_CreateTransmissionDependentSegment S_CreateTransmissionDependentSegment --> N_CreateTransmissionDependentSegment_Node0 N_CreateTransmissionDependentSegment_Node0 -- No --> E_CreateTransmissionDependentSegment
File: GCX016.cbl
GIVEN:
Transmission parameters have been logged
WHEN:
Detailed transmission information needs to be stored
THEN:
- A9dp transmission dependent segment is created with message details
- Cargo information
β Consolidated Acceptance Criteria
- EDI message details need to be logged → message content, structure, and cargo details are recorded in A9DP segment
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogEDIMessageDetails(["Start Step"])
E_LogEDIMessageDetails(["End Step"])
N_LogEDIMessageDetails_Node0{"EDI message details need to be
logged"}:::decision N_LogEDIMessageDetails_Node0_action["Message content, structure, and
cargo details are recorded in A9DP
segment"]:::main N_LogEDIMessageDetails_Node0 -- Yes --> N_LogEDIMessageDetails_Node0_action N_LogEDIMessageDetails_Node0_action --> E_LogEDIMessageDetails S_LogEDIMessageDetails --> N_LogEDIMessageDetails_Node0 N_LogEDIMessageDetails_Node0 -- No --> E_LogEDIMessageDetails
logged"}:::decision N_LogEDIMessageDetails_Node0_action["Message content, structure, and
cargo details are recorded in A9DP
segment"]:::main N_LogEDIMessageDetails_Node0 -- Yes --> N_LogEDIMessageDetails_Node0_action N_LogEDIMessageDetails_Node0_action --> E_LogEDIMessageDetails S_LogEDIMessageDetails --> N_LogEDIMessageDetails_Node0 N_LogEDIMessageDetails_Node0 -- No --> E_LogEDIMessageDetails
File: GCX016.cbl
GIVEN:
A transmission dependent segment has been created
WHEN:
EDI message details need to be logged
THEN:
Message content, structure, and cargo details are recorded in A9DP segment
β Consolidated Acceptance Criteria
- KCSM transmission transaction needs to be prepared → gCT1091E transaction is prepared with transmission segments, broker information, and message data
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_PrepareGCT1091ETransaction(["Start Step"])
E_PrepareGCT1091ETransaction(["End Step"])
N_PrepareGCT1091ETransaction_Node0{"KCSM transmission transaction needs
to be prepared"}:::decision N_PrepareGCT1091ETransaction_Node0_action["GCT1091E transaction is prepared
with transmission segments, broker
information, and message data"]:::main N_PrepareGCT1091ETransaction_Node0 -- Yes --> N_PrepareGCT1091ETransaction_Node0_action N_PrepareGCT1091ETransaction_Node0_action --> E_PrepareGCT1091ETransaction S_PrepareGCT1091ETransaction --> N_PrepareGCT1091ETransaction_Node0 N_PrepareGCT1091ETransaction_Node0 -- No --> E_PrepareGCT1091ETransaction
to be prepared"}:::decision N_PrepareGCT1091ETransaction_Node0_action["GCT1091E transaction is prepared
with transmission segments, broker
information, and message data"]:::main N_PrepareGCT1091ETransaction_Node0 -- Yes --> N_PrepareGCT1091ETransaction_Node0_action N_PrepareGCT1091ETransaction_Node0_action --> E_PrepareGCT1091ETransaction S_PrepareGCT1091ETransaction --> N_PrepareGCT1091ETransaction_Node0 N_PrepareGCT1091ETransaction_Node0 -- No --> E_PrepareGCT1091ETransaction
File: GCX016.cbl
GIVEN:
EDI message details have been logged
WHEN:
KCSM transmission transaction needs to be prepared
THEN:
GCT1091E transaction is prepared with transmission segments, broker information, and message data
β Consolidated Acceptance Criteria
- Transaction spawn parameters need to be logged → spawn parameters including transaction ID, broker ID, and message parameters are recorded in AECWRKTB work table
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogTransactionSpawnParameters(["Start Step"])
E_LogTransactionSpawnParameters(["End Step"])
N_LogTransactionSpawnParameters_Node0{"Transaction spawn parameters need
to be logged"}:::decision N_LogTransactionSpawnParameters_Node0_action["Spawn parameters including
transaction ID, broker ID, and
message parameters are recorded in
AECWRKTB work table"]:::main N_LogTransactionSpawnParameters_Node0 -- Yes --> N_LogTransactionSpawnParameters_Node0_action N_LogTransactionSpawnParameters_Node0_action --> E_LogTransactionSpawnParameters S_LogTransactionSpawnParameters --> N_LogTransactionSpawnParameters_Node0 N_LogTransactionSpawnParameters_Node0 -- No --> E_LogTransactionSpawnParameters
to be logged"}:::decision N_LogTransactionSpawnParameters_Node0_action["Spawn parameters including
transaction ID, broker ID, and
message parameters are recorded in
AECWRKTB work table"]:::main N_LogTransactionSpawnParameters_Node0 -- Yes --> N_LogTransactionSpawnParameters_Node0_action N_LogTransactionSpawnParameters_Node0_action --> E_LogTransactionSpawnParameters S_LogTransactionSpawnParameters --> N_LogTransactionSpawnParameters_Node0 N_LogTransactionSpawnParameters_Node0 -- No --> E_LogTransactionSpawnParameters
File: GCX016.cbl
GIVEN:
GCT1091E transaction has been prepared
WHEN:
Transaction spawn parameters need to be logged
THEN:
Spawn parameters including transaction ID, broker ID, and message parameters are recorded in AECWRKTB work table
β Consolidated Acceptance Criteria
- KCSM transaction needs to be executed → gCT1091E transaction is spawned to process KCSM transmission
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExecuteKCSMTransactionSpawn(["Start Step"])
E_ExecuteKCSMTransactionSpawn(["End Step"])
N_ExecuteKCSMTransactionSpawn_Node0{"KCSM transaction needs to be
executed"}:::decision N_ExecuteKCSMTransactionSpawn_Node0_action["GCT1091E transaction is spawned to
process KCSM transmission"]:::main N_ExecuteKCSMTransactionSpawn_Node0 -- Yes --> N_ExecuteKCSMTransactionSpawn_Node0_action N_ExecuteKCSMTransactionSpawn_Node0_action --> E_ExecuteKCSMTransactionSpawn S_ExecuteKCSMTransactionSpawn --> N_ExecuteKCSMTransactionSpawn_Node0 N_ExecuteKCSMTransactionSpawn_Node0 -- No --> E_ExecuteKCSMTransactionSpawn
executed"}:::decision N_ExecuteKCSMTransactionSpawn_Node0_action["GCT1091E transaction is spawned to
process KCSM transmission"]:::main N_ExecuteKCSMTransactionSpawn_Node0 -- Yes --> N_ExecuteKCSMTransactionSpawn_Node0_action N_ExecuteKCSMTransactionSpawn_Node0_action --> E_ExecuteKCSMTransactionSpawn S_ExecuteKCSMTransactionSpawn --> N_ExecuteKCSMTransactionSpawn_Node0 N_ExecuteKCSMTransactionSpawn_Node0 -- No --> E_ExecuteKCSMTransactionSpawn
File: GCX016.cbl
GIVEN:
Transaction spawn parameters have been logged
WHEN:
KCSM transaction needs to be executed
THEN:
GCT1091E transaction is spawned to process KCSM transmission
β Consolidated Acceptance Criteria
- Transaction completion status needs to be evaluated → transaction is successful if return code indicates normal completion without errors
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_TransactionSuccessful(["Start Step"])
E_TransactionSuccessful(["End Step"])
N_TransactionSuccessful_Node0{"Transaction completion status needs
to be evaluated"}:::decision N_TransactionSuccessful_Node0_action["Transaction is successful if return
code indicates normal completion
without errors"]:::main N_TransactionSuccessful_Node0 -- Yes --> N_TransactionSuccessful_Node0_action N_TransactionSuccessful_Node0_action --> E_TransactionSuccessful S_TransactionSuccessful --> N_TransactionSuccessful_Node0 N_TransactionSuccessful_Node0 -- No --> E_TransactionSuccessful
to be evaluated"}:::decision N_TransactionSuccessful_Node0_action["Transaction is successful if return
code indicates normal completion
without errors"]:::main N_TransactionSuccessful_Node0 -- Yes --> N_TransactionSuccessful_Node0_action N_TransactionSuccessful_Node0_action --> E_TransactionSuccessful S_TransactionSuccessful --> N_TransactionSuccessful_Node0 N_TransactionSuccessful_Node0 -- No --> E_TransactionSuccessful
File: GCX016.cbl
GIVEN:
KCSM transaction has been executed
WHEN:
Transaction completion status needs to be evaluated
THEN:
Transaction is successful if return code indicates normal completion without errors
β Consolidated Acceptance Criteria
- Success status needs to be logged → success status and completion timestamp are recorded in transmission records
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogSuccessStatus(["Start Step"])
E_LogSuccessStatus(["End Step"])
N_LogSuccessStatus_Node0{"Success status needs to be logged"}:::decision
N_LogSuccessStatus_Node0_action["Success status and completion
timestamp are recorded in
transmission records"]:::main N_LogSuccessStatus_Node0 -- Yes --> N_LogSuccessStatus_Node0_action N_LogSuccessStatus_Node0_action --> E_LogSuccessStatus S_LogSuccessStatus --> N_LogSuccessStatus_Node0 N_LogSuccessStatus_Node0 -- No --> E_LogSuccessStatus
timestamp are recorded in
transmission records"]:::main N_LogSuccessStatus_Node0 -- Yes --> N_LogSuccessStatus_Node0_action N_LogSuccessStatus_Node0_action --> E_LogSuccessStatus S_LogSuccessStatus --> N_LogSuccessStatus_Node0 N_LogSuccessStatus_Node0 -- No --> E_LogSuccessStatus
File: GCX016.cbl
GIVEN:
KCSM transaction completed successfully
WHEN:
Success status needs to be logged
THEN:
- Success status
- Completion timestamp are recorded in transmission records
β Consolidated Acceptance Criteria
- Error status and details need to be logged → error status, error codes, and failure details are recorded in transmission records
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogErrorStatusandDetails(["Start Step"])
E_LogErrorStatusandDetails(["End Step"])
N_LogErrorStatusandDetails_Node0{"Error status and details need to be
logged"}:::decision N_LogErrorStatusandDetails_Node0_action["Error status, error codes, and
failure details are recorded in
transmission records"]:::exclusion N_LogErrorStatusandDetails_Node0 -- Yes -->|Alternative| N_LogErrorStatusandDetails_Node0_action N_LogErrorStatusandDetails_Node0_action --> E_LogErrorStatusandDetails S_LogErrorStatusandDetails --> N_LogErrorStatusandDetails_Node0 N_LogErrorStatusandDetails_Node0 -- No --> E_LogErrorStatusandDetails
logged"}:::decision N_LogErrorStatusandDetails_Node0_action["Error status, error codes, and
failure details are recorded in
transmission records"]:::exclusion N_LogErrorStatusandDetails_Node0 -- Yes -->|Alternative| N_LogErrorStatusandDetails_Node0_action N_LogErrorStatusandDetails_Node0_action --> E_LogErrorStatusandDetails S_LogErrorStatusandDetails --> N_LogErrorStatusandDetails_Node0 N_LogErrorStatusandDetails_Node0 -- No --> E_LogErrorStatusandDetails
File: GCX016.cbl
GIVEN:
KCSM transaction failed to complete successfully
WHEN:
- Error status
- Details need to be logged
THEN:
Error status, error codes, and failure details are recorded in transmission records
β Consolidated Acceptance Criteria
- Final transmission status needs to be logged → final status, completion timestamp, and summary information are recorded for audit trail
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogFinalTransmissionStatus(["Start Step"])
E_LogFinalTransmissionStatus(["End Step"])
N_LogFinalTransmissionStatus_Node0{"Final transmission status needs to
be logged"}:::decision N_LogFinalTransmissionStatus_Node0_action["Final status, completion timestamp,
and summary information are recorded
for audit trail"]:::main N_LogFinalTransmissionStatus_Node0 -- Yes --> N_LogFinalTransmissionStatus_Node0_action N_LogFinalTransmissionStatus_Node0_action --> E_LogFinalTransmissionStatus S_LogFinalTransmissionStatus --> N_LogFinalTransmissionStatus_Node0 N_LogFinalTransmissionStatus_Node0 -- No --> E_LogFinalTransmissionStatus
be logged"}:::decision N_LogFinalTransmissionStatus_Node0_action["Final status, completion timestamp,
and summary information are recorded
for audit trail"]:::main N_LogFinalTransmissionStatus_Node0 -- Yes --> N_LogFinalTransmissionStatus_Node0_action N_LogFinalTransmissionStatus_Node0_action --> E_LogFinalTransmissionStatus S_LogFinalTransmissionStatus --> N_LogFinalTransmissionStatus_Node0 N_LogFinalTransmissionStatus_Node0 -- No --> E_LogFinalTransmissionStatus
File: GCX016.cbl
GIVEN:
Transmission status has been updated
WHEN:
Final transmission status needs to be logged
THEN:
Final status, completion timestamp, and summary information are recorded for audit trail
β Consolidated Acceptance Criteria
- Business process 162 is referenced or called → the system indicates that no source code is available for this functionality in the provided program summary
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_DatabaseTransactionControlManageIMSdatabasetransactionpurgingforcleanupoperations(["Start Step"])
E_DatabaseTransactionControlManageIMSdatabasetransactionpurgingforcleanupoperations(["End Step"])
N_DatabaseTransactionControlManageIMSdatabasetransactionpurgingforcleanupoperations_Node0{"Business process 162 is referenced
or called"}:::decision N_DatabaseTransactionControlManageIMSdatabasetransactionpurgingforcleanupoperations_Node0_action["The system indicates that no source
code is available for this
functionality in the provided
program summary"]:::main N_DatabaseTransactionControlManageIMSdatabasetransactionpurgingforcleanupoperations_Node0 -- Yes --> N_DatabaseTransactionControlManageIMSdatabasetransactionpurgingforcleanupoperations_Node0_action N_DatabaseTransactionControlManageIMSdatabasetransactionpurgingforcleanupoperations_Node0_action --> E_DatabaseTransactionControlManageIMSdatabasetransactionpurgingforcleanupoperations S_DatabaseTransactionControlManageIMSdatabasetransactionpurgingforcleanupoperations --> N_DatabaseTransactionControlManageIMSdatabasetransactionpurgingforcleanupoperations_Node0 N_DatabaseTransactionControlManageIMSdatabasetransactionpurgingforcleanupoperations_Node0 -- No --> E_DatabaseTransactionControlManageIMSdatabasetransactionpurgingforcleanupoperations
or called"}:::decision N_DatabaseTransactionControlManageIMSdatabasetransactionpurgingforcleanupoperations_Node0_action["The system indicates that no source
code is available for this
functionality in the provided
program summary"]:::main N_DatabaseTransactionControlManageIMSdatabasetransactionpurgingforcleanupoperations_Node0 -- Yes --> N_DatabaseTransactionControlManageIMSdatabasetransactionpurgingforcleanupoperations_Node0_action N_DatabaseTransactionControlManageIMSdatabasetransactionpurgingforcleanupoperations_Node0_action --> E_DatabaseTransactionControlManageIMSdatabasetransactionpurgingforcleanupoperations S_DatabaseTransactionControlManageIMSdatabasetransactionpurgingforcleanupoperations --> N_DatabaseTransactionControlManageIMSdatabasetransactionpurgingforcleanupoperations_Node0 N_DatabaseTransactionControlManageIMSdatabasetransactionpurgingforcleanupoperations_Node0 -- No --> E_DatabaseTransactionControlManageIMSdatabasetransactionpurgingforcleanupoperations
File: GCX016.cbl
GIVEN:
The system requires database transaction control for IMS database transaction purging cleanup operations
WHEN:
Business process 162 is referenced or called
THEN:
The system indicates that no source code is available for this functionality in the provided program summary
β Consolidated Acceptance Criteria
- If the completeness of equipment holds → if all equipment on train is held, set complete train hold status, otherwise set partial train hold status
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AllEquipmentHeld(["Start Step"])
E_AllEquipmentHeld(["End Step"])
N_AllEquipmentHeld_Node0{"The system evaluates the
completeness of equipment holds"}:::decision N_AllEquipmentHeld_Node0_action["If all equipment on train is held,
set complete train hold status,
otherwise set partial train hold
status"]:::main N_AllEquipmentHeld_Node0 -- Yes --> N_AllEquipmentHeld_Node0_action N_AllEquipmentHeld_Node0_action --> E_AllEquipmentHeld S_AllEquipmentHeld --> N_AllEquipmentHeld_Node0 N_AllEquipmentHeld_Node0 -- No --> E_AllEquipmentHeld
completeness of equipment holds"}:::decision N_AllEquipmentHeld_Node0_action["If all equipment on train is held,
set complete train hold status,
otherwise set partial train hold
status"]:::main N_AllEquipmentHeld_Node0 -- Yes --> N_AllEquipmentHeld_Node0_action N_AllEquipmentHeld_Node0_action --> E_AllEquipmentHeld S_AllEquipmentHeld --> N_AllEquipmentHeld_Node0 N_AllEquipmentHeld_Node0 -- No --> E_AllEquipmentHeld
File: GCX016.cbl
GIVEN:
Train hold status has been updated with held equipment count
WHEN:
The system evaluates the completeness of equipment holds
THEN:
If all equipment on train is held, set complete train hold status, otherwise set partial train hold status
β Consolidated Acceptance Criteria
- The system sets the final train hold status → set the train status to complete hold
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetCompleteTrainHoldStatus(["Start Step"])
E_SetCompleteTrainHoldStatus(["End Step"])
N_SetCompleteTrainHoldStatus_Node0{"The system sets the final train
hold status"}:::decision N_SetCompleteTrainHoldStatus_Node0_action["Set the train status to complete
hold"]:::main N_SetCompleteTrainHoldStatus_Node0 -- Yes --> N_SetCompleteTrainHoldStatus_Node0_action N_SetCompleteTrainHoldStatus_Node0_action --> E_SetCompleteTrainHoldStatus S_SetCompleteTrainHoldStatus --> N_SetCompleteTrainHoldStatus_Node0 N_SetCompleteTrainHoldStatus_Node0 -- No --> E_SetCompleteTrainHoldStatus
hold status"}:::decision N_SetCompleteTrainHoldStatus_Node0_action["Set the train status to complete
hold"]:::main N_SetCompleteTrainHoldStatus_Node0 -- Yes --> N_SetCompleteTrainHoldStatus_Node0_action N_SetCompleteTrainHoldStatus_Node0_action --> E_SetCompleteTrainHoldStatus S_SetCompleteTrainHoldStatus --> N_SetCompleteTrainHoldStatus_Node0 N_SetCompleteTrainHoldStatus_Node0 -- No --> E_SetCompleteTrainHoldStatus
File: GCX016.cbl
GIVEN:
All equipment on the train has been successfully held
WHEN:
The system sets the final train hold status
THEN:
Set the train status to complete hold
β Consolidated Acceptance Criteria
- The system sets the final train hold status → set the train status to partial hold
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetPartialTrainHoldStatus(["Start Step"])
E_SetPartialTrainHoldStatus(["End Step"])
N_SetPartialTrainHoldStatus_Node0{"The system sets the final train
hold status"}:::decision N_SetPartialTrainHoldStatus_Node0_action["Set the train status to partial
hold"]:::main N_SetPartialTrainHoldStatus_Node0 -- Yes --> N_SetPartialTrainHoldStatus_Node0_action N_SetPartialTrainHoldStatus_Node0_action --> E_SetPartialTrainHoldStatus S_SetPartialTrainHoldStatus --> N_SetPartialTrainHoldStatus_Node0 N_SetPartialTrainHoldStatus_Node0 -- No --> E_SetPartialTrainHoldStatus
hold status"}:::decision N_SetPartialTrainHoldStatus_Node0_action["Set the train status to partial
hold"]:::main N_SetPartialTrainHoldStatus_Node0 -- Yes --> N_SetPartialTrainHoldStatus_Node0_action N_SetPartialTrainHoldStatus_Node0_action --> E_SetPartialTrainHoldStatus S_SetPartialTrainHoldStatus --> N_SetPartialTrainHoldStatus_Node0 N_SetPartialTrainHoldStatus_Node0 -- No --> E_SetPartialTrainHoldStatus
File: GCX016.cbl
GIVEN:
Only some equipment on the train has been held (not all equipment)
WHEN:
The system sets the final train hold status
THEN:
Set the train status to partial hold
β Consolidated Acceptance Criteria
- The system processes the message segments in sequence → vID segments following HRE codes are identified for equipment release processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_VIDSegmentFollowingHRECodeDetected(["Start Step"])
E_VIDSegmentFollowingHRECodeDetected(["End Step"])
N_VIDSegmentFollowingHRECodeDetected_Node0{"The system processes the message
segments in sequence"}:::decision N_VIDSegmentFollowingHRECodeDetected_Node0_action["VID segments following HRE codes
are identified for equipment release
processing"]:::main N_VIDSegmentFollowingHRECodeDetected_Node0 -- Yes --> N_VIDSegmentFollowingHRECodeDetected_Node0_action N_VIDSegmentFollowingHRECodeDetected_Node0_action --> E_VIDSegmentFollowingHRECodeDetected S_VIDSegmentFollowingHRECodeDetected --> N_VIDSegmentFollowingHRECodeDetected_Node0 N_VIDSegmentFollowingHRECodeDetected_Node0 -- No --> E_VIDSegmentFollowingHRECodeDetected
segments in sequence"}:::decision N_VIDSegmentFollowingHRECodeDetected_Node0_action["VID segments following HRE codes
are identified for equipment release
processing"]:::main N_VIDSegmentFollowingHRECodeDetected_Node0 -- Yes --> N_VIDSegmentFollowingHRECodeDetected_Node0_action N_VIDSegmentFollowingHRECodeDetected_Node0_action --> E_VIDSegmentFollowingHRECodeDetected S_VIDSegmentFollowingHRECodeDetected --> N_VIDSegmentFollowingHRECodeDetected_Node0 N_VIDSegmentFollowingHRECodeDetected_Node0 -- No --> E_VIDSegmentFollowingHRECodeDetected
File: GCX016.cbl
GIVEN:
A message contains HRE disposition code followed by VID segments
WHEN:
The system processes the message segments in sequence
THEN:
VID segments following HRE codes are identified for equipment release processing
β Consolidated Acceptance Criteria
- The system needs to process equipment release → train record is retrieved from GCWTL-TRAIN-LIST database
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GetTrainRecordfromGCWTLTRAINLIST(["Start Step"])
E_GetTrainRecordfromGCWTLTRAINLIST(["End Step"])
N_GetTrainRecordfromGCWTLTRAINLIST_Node0{"The system needs to process
equipment release"}:::decision N_GetTrainRecordfromGCWTLTRAINLIST_Node0_action["Train record is retrieved from
GCWTL-TRAIN-LIST database"]:::main N_GetTrainRecordfromGCWTLTRAINLIST_Node0 -- Yes --> N_GetTrainRecordfromGCWTLTRAINLIST_Node0_action N_GetTrainRecordfromGCWTLTRAINLIST_Node0_action --> E_GetTrainRecordfromGCWTLTRAINLIST S_GetTrainRecordfromGCWTLTRAINLIST --> N_GetTrainRecordfromGCWTLTRAINLIST_Node0 N_GetTrainRecordfromGCWTLTRAINLIST_Node0 -- No --> E_GetTrainRecordfromGCWTLTRAINLIST
equipment release"}:::decision N_GetTrainRecordfromGCWTLTRAINLIST_Node0_action["Train record is retrieved from
GCWTL-TRAIN-LIST database"]:::main N_GetTrainRecordfromGCWTLTRAINLIST_Node0 -- Yes --> N_GetTrainRecordfromGCWTLTRAINLIST_Node0_action N_GetTrainRecordfromGCWTLTRAINLIST_Node0_action --> E_GetTrainRecordfromGCWTLTRAINLIST S_GetTrainRecordfromGCWTLTRAINLIST --> N_GetTrainRecordfromGCWTLTRAINLIST_Node0 N_GetTrainRecordfromGCWTLTRAINLIST_Node0 -- No --> E_GetTrainRecordfromGCWTLTRAINLIST
File: GCX016.cbl
GIVEN:
A valid equipment ID exists
WHEN:
The system needs to process equipment release
THEN:
Train record is retrieved from GCWTL-TRAIN-LIST database
β Consolidated Acceptance Criteria
- The system searches for equipment in the train's held equipment list → equipment is located in the held list or not found status is determined
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SearchforEquipmentinTrainsHeldEquipmentList(["Start Step"])
E_SearchforEquipmentinTrainsHeldEquipmentList(["End Step"])
N_SearchforEquipmentinTrainsHeldEquipmentList_Node0{"The system searches for equipment
in the train s held equipment list"}:::decision N_SearchforEquipmentinTrainsHeldEquipmentList_Node0_action["Equipment is located in the held
list or not found status is
determined"]:::main N_SearchforEquipmentinTrainsHeldEquipmentList_Node0 -- Yes --> N_SearchforEquipmentinTrainsHeldEquipmentList_Node0_action N_SearchforEquipmentinTrainsHeldEquipmentList_Node0_action --> E_SearchforEquipmentinTrainsHeldEquipmentList S_SearchforEquipmentinTrainsHeldEquipmentList --> N_SearchforEquipmentinTrainsHeldEquipmentList_Node0 N_SearchforEquipmentinTrainsHeldEquipmentList_Node0 -- No --> E_SearchforEquipmentinTrainsHeldEquipmentList
in the train s held equipment list"}:::decision N_SearchforEquipmentinTrainsHeldEquipmentList_Node0_action["Equipment is located in the held
list or not found status is
determined"]:::main N_SearchforEquipmentinTrainsHeldEquipmentList_Node0 -- Yes --> N_SearchforEquipmentinTrainsHeldEquipmentList_Node0_action N_SearchforEquipmentinTrainsHeldEquipmentList_Node0_action --> E_SearchforEquipmentinTrainsHeldEquipmentList S_SearchforEquipmentinTrainsHeldEquipmentList --> N_SearchforEquipmentinTrainsHeldEquipmentList_Node0 N_SearchforEquipmentinTrainsHeldEquipmentList_Node0 -- No --> E_SearchforEquipmentinTrainsHeldEquipmentList
File: GCX016.cbl
GIVEN:
A train record exists and equipment ID is valid
WHEN:
The system searches for equipment in the train's held equipment list
THEN:
Equipment is located in the held list or not found status is determined
β Consolidated Acceptance Criteria
- The system checks if equipment was found in held list → equipment release proceeds if found or error is logged if not found in held list
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_EquipmentFoundinHeldList(["Start Step"])
E_EquipmentFoundinHeldList(["End Step"])
N_EquipmentFoundinHeldList_Node0{"The system checks if equipment was
found in held list"}:::decision N_EquipmentFoundinHeldList_Node0_action["Equipment release proceeds if found
or error is logged if not found in
held list"]:::main N_EquipmentFoundinHeldList_Node0 -- Yes --> N_EquipmentFoundinHeldList_Node0_action N_EquipmentFoundinHeldList_Node0_action --> E_EquipmentFoundinHeldList S_EquipmentFoundinHeldList --> N_EquipmentFoundinHeldList_Node0 N_EquipmentFoundinHeldList_Node0 -- No --> E_EquipmentFoundinHeldList
found in held list"}:::decision N_EquipmentFoundinHeldList_Node0_action["Equipment release proceeds if found
or error is logged if not found in
held list"]:::main N_EquipmentFoundinHeldList_Node0 -- Yes --> N_EquipmentFoundinHeldList_Node0_action N_EquipmentFoundinHeldList_Node0_action --> E_EquipmentFoundinHeldList S_EquipmentFoundinHeldList --> N_EquipmentFoundinHeldList_Node0 N_EquipmentFoundinHeldList_Node0 -- No --> E_EquipmentFoundinHeldList
File: GCX016.cbl
GIVEN:
Equipment search in held list has been completed
WHEN:
The system checks if equipment was found in held list
THEN:
Equipment release proceeds if found or error is logged if not found in held list
β Consolidated Acceptance Criteria
- Equipment release is authorized → equipment is removed from the held equipment list
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RemoveEquipmentfromHeldEquipmentList(["Start Step"])
E_RemoveEquipmentfromHeldEquipmentList(["End Step"])
N_RemoveEquipmentfromHeldEquipmentList_Node0{"Equipment release is authorized"}:::decision
N_RemoveEquipmentfromHeldEquipmentList_Node0_action["Equipment is removed from the held
equipment list"]:::main N_RemoveEquipmentfromHeldEquipmentList_Node0 -- Yes --> N_RemoveEquipmentfromHeldEquipmentList_Node0_action N_RemoveEquipmentfromHeldEquipmentList_Node0_action --> E_RemoveEquipmentfromHeldEquipmentList S_RemoveEquipmentfromHeldEquipmentList --> N_RemoveEquipmentfromHeldEquipmentList_Node0 N_RemoveEquipmentfromHeldEquipmentList_Node0 -- No --> E_RemoveEquipmentfromHeldEquipmentList
equipment list"]:::main N_RemoveEquipmentfromHeldEquipmentList_Node0 -- Yes --> N_RemoveEquipmentfromHeldEquipmentList_Node0_action N_RemoveEquipmentfromHeldEquipmentList_Node0_action --> E_RemoveEquipmentfromHeldEquipmentList S_RemoveEquipmentfromHeldEquipmentList --> N_RemoveEquipmentfromHeldEquipmentList_Node0 N_RemoveEquipmentfromHeldEquipmentList_Node0 -- No --> E_RemoveEquipmentfromHeldEquipmentList
File: GCX016.cbl
GIVEN:
Equipment is found in the train's held equipment list
WHEN:
Equipment release is authorized
THEN:
Equipment is removed from the held equipment list
β Consolidated Acceptance Criteria
- The system updates train statistics → train's held equipment count is decremented by one
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_DecrementTrainsHeldEquipmentCount(["Start Step"])
E_DecrementTrainsHeldEquipmentCount(["End Step"])
N_DecrementTrainsHeldEquipmentCount_Node0{"The system updates train statistics"}:::decision
N_DecrementTrainsHeldEquipmentCount_Node0_action["Train s held equipment count is
decremented by one"]:::main N_DecrementTrainsHeldEquipmentCount_Node0 -- Yes --> N_DecrementTrainsHeldEquipmentCount_Node0_action N_DecrementTrainsHeldEquipmentCount_Node0_action --> E_DecrementTrainsHeldEquipmentCount S_DecrementTrainsHeldEquipmentCount --> N_DecrementTrainsHeldEquipmentCount_Node0 N_DecrementTrainsHeldEquipmentCount_Node0 -- No --> E_DecrementTrainsHeldEquipmentCount
decremented by one"]:::main N_DecrementTrainsHeldEquipmentCount_Node0 -- Yes --> N_DecrementTrainsHeldEquipmentCount_Node0_action N_DecrementTrainsHeldEquipmentCount_Node0_action --> E_DecrementTrainsHeldEquipmentCount S_DecrementTrainsHeldEquipmentCount --> N_DecrementTrainsHeldEquipmentCount_Node0 N_DecrementTrainsHeldEquipmentCount_Node0 -- No --> E_DecrementTrainsHeldEquipmentCount
File: GCX016.cbl
GIVEN:
Equipment has been removed from held equipment list
WHEN:
The system updates train statistics
THEN:
Train's held equipment count is decremented by one
β Consolidated Acceptance Criteria
- The system encounters invalid equipment ID format → equipment ID format error is logged and processing continues with next VID segment
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogEquipmentIDFormatError(["Start Step"])
E_LogEquipmentIDFormatError(["End Step"])
N_LogEquipmentIDFormatError_Node0{"The system encounters invalid
equipment ID format"}:::decision N_LogEquipmentIDFormatError_Node0_action["Equipment ID format error is logged
and processing continues with next
VID segment"]:::exclusion N_LogEquipmentIDFormatError_Node0 -- Yes -->|Alternative| N_LogEquipmentIDFormatError_Node0_action N_LogEquipmentIDFormatError_Node0_action --> E_LogEquipmentIDFormatError S_LogEquipmentIDFormatError --> N_LogEquipmentIDFormatError_Node0 N_LogEquipmentIDFormatError_Node0 -- No --> E_LogEquipmentIDFormatError
equipment ID format"}:::decision N_LogEquipmentIDFormatError_Node0_action["Equipment ID format error is logged
and processing continues with next
VID segment"]:::exclusion N_LogEquipmentIDFormatError_Node0 -- Yes -->|Alternative| N_LogEquipmentIDFormatError_Node0_action N_LogEquipmentIDFormatError_Node0_action --> E_LogEquipmentIDFormatError S_LogEquipmentIDFormatError --> N_LogEquipmentIDFormatError_Node0 N_LogEquipmentIDFormatError_Node0 -- No --> E_LogEquipmentIDFormatError
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
Equipment ID formatting fails
WHEN:
The system encounters invalid equipment ID format
THEN:
- Equipment id format error is logged
- Processing continues with next vid segment
β Consolidated Acceptance Criteria
- The system cannot find the train in the database → train not found error is logged and processing continues with next VID segment
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogTrainNotFoundError(["Start Step"])
E_LogTrainNotFoundError(["End Step"])
N_LogTrainNotFoundError_Node0{"The system cannot find the train in
the database"}:::decision N_LogTrainNotFoundError_Node0_action["Train not found error is logged and
processing continues with next VID
segment"]:::main N_LogTrainNotFoundError_Node0 -- Yes --> N_LogTrainNotFoundError_Node0_action N_LogTrainNotFoundError_Node0_action --> E_LogTrainNotFoundError S_LogTrainNotFoundError --> N_LogTrainNotFoundError_Node0 N_LogTrainNotFoundError_Node0 -- No --> E_LogTrainNotFoundError
the database"}:::decision N_LogTrainNotFoundError_Node0_action["Train not found error is logged and
processing continues with next VID
segment"]:::main N_LogTrainNotFoundError_Node0 -- Yes --> N_LogTrainNotFoundError_Node0_action N_LogTrainNotFoundError_Node0_action --> E_LogTrainNotFoundError S_LogTrainNotFoundError --> N_LogTrainNotFoundError_Node0 N_LogTrainNotFoundError_Node0 -- No --> E_LogTrainNotFoundError
File: GCX016.cbl
GIVEN:
Train record lookup fails
WHEN:
The system cannot find the train in the database
THEN:
- Train not found error is logged
- Processing continues with next vid segment
β Consolidated Acceptance Criteria
- The system cannot locate equipment in held list → equipment not found in held list error is logged and processing continues with next VID segment
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogEquipmentNotFoundinHeldList(["Start Step"])
E_LogEquipmentNotFoundinHeldList(["End Step"])
N_LogEquipmentNotFoundinHeldList_Node0{"The system cannot locate equipment
in held list"}:::decision N_LogEquipmentNotFoundinHeldList_Node0_action["Equipment not found in held list
error is logged and processing
continues with next VID segment"]:::main N_LogEquipmentNotFoundinHeldList_Node0 -- Yes --> N_LogEquipmentNotFoundinHeldList_Node0_action N_LogEquipmentNotFoundinHeldList_Node0_action --> E_LogEquipmentNotFoundinHeldList S_LogEquipmentNotFoundinHeldList --> N_LogEquipmentNotFoundinHeldList_Node0 N_LogEquipmentNotFoundinHeldList_Node0 -- No --> E_LogEquipmentNotFoundinHeldList
in held list"}:::decision N_LogEquipmentNotFoundinHeldList_Node0_action["Equipment not found in held list
error is logged and processing
continues with next VID segment"]:::main N_LogEquipmentNotFoundinHeldList_Node0 -- Yes --> N_LogEquipmentNotFoundinHeldList_Node0_action N_LogEquipmentNotFoundinHeldList_Node0_action --> E_LogEquipmentNotFoundinHeldList S_LogEquipmentNotFoundinHeldList --> N_LogEquipmentNotFoundinHeldList_Node0 N_LogEquipmentNotFoundinHeldList_Node0 -- No --> E_LogEquipmentNotFoundinHeldList
File: GCX016.cbl
GIVEN:
Equipment search in held list returns no results
WHEN:
The system cannot locate equipment in held list
THEN:
- Equipment not found in held list error is logged
- Processing continues with next vid segment
β Consolidated Acceptance Criteria
- The system processes the seizure action → mark the equipment as seized and update its status in the system
- The system processes SEI disposition code → the equipment is marked as seized in the system
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MarkEquipmentasSeized(["Start Step"])
E_MarkEquipmentasSeized(["End Step"])
N_MarkEquipmentasSeized_Node0{"The system processes the seizure
action"}:::decision N_MarkEquipmentasSeized_Node0_action["Mark the equipment as seized and
update its status in the system"]:::main N_MarkEquipmentasSeized_Node0 -- Yes --> N_MarkEquipmentasSeized_Node0_action N_MarkEquipmentasSeized_Node0_action --> E_MarkEquipmentasSeized S_MarkEquipmentasSeized --> N_MarkEquipmentasSeized_Node0 N_MarkEquipmentasSeized_Node1{"The system processes SEI
disposition code"}:::decision N_MarkEquipmentasSeized_Node1_action["The equipment is marked as seized
in the system"]:::main N_MarkEquipmentasSeized_Node1 -- Yes --> N_MarkEquipmentasSeized_Node1_action N_MarkEquipmentasSeized_Node1_action --> E_MarkEquipmentasSeized N_MarkEquipmentasSeized_Node0 -- No --> N_MarkEquipmentasSeized_Node1 N_MarkEquipmentasSeized_Node1 -- No --> E_MarkEquipmentasSeized
action"}:::decision N_MarkEquipmentasSeized_Node0_action["Mark the equipment as seized and
update its status in the system"]:::main N_MarkEquipmentasSeized_Node0 -- Yes --> N_MarkEquipmentasSeized_Node0_action N_MarkEquipmentasSeized_Node0_action --> E_MarkEquipmentasSeized S_MarkEquipmentasSeized --> N_MarkEquipmentasSeized_Node0 N_MarkEquipmentasSeized_Node1{"The system processes SEI
disposition code"}:::decision N_MarkEquipmentasSeized_Node1_action["The equipment is marked as seized
in the system"]:::main N_MarkEquipmentasSeized_Node1 -- Yes --> N_MarkEquipmentasSeized_Node1_action N_MarkEquipmentasSeized_Node1_action --> E_MarkEquipmentasSeized N_MarkEquipmentasSeized_Node0 -- No --> N_MarkEquipmentasSeized_Node1 N_MarkEquipmentasSeized_Node1 -- No --> E_MarkEquipmentasSeized
File: GCX016.cbl
GIVEN:
A valid equipment ID has been identified for seizure
WHEN:
The system processes the seizure action
THEN:
- Mark the equipment as seized
- Update its status in the system
File: GCX016.cbl
GIVEN:
Equipment ID is valid for seizure processing
WHEN:
The system processes SEI disposition code
THEN:
The equipment is marked as seized in the system
β Consolidated Acceptance Criteria
- The system processes the seizure count → increment the train's seized equipment counter by one
- The system updates train seizure statistics → the train seized equipment count is incremented by one
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IncrementTrainSeizedEquipmentCount(["Start Step"])
E_IncrementTrainSeizedEquipmentCount(["End Step"])
N_IncrementTrainSeizedEquipmentCount_Node0{"The system processes the seizure
count"}:::decision N_IncrementTrainSeizedEquipmentCount_Node0_action["Increment the train s seized
equipment counter by one"]:::main N_IncrementTrainSeizedEquipmentCount_Node0 -- Yes --> N_IncrementTrainSeizedEquipmentCount_Node0_action N_IncrementTrainSeizedEquipmentCount_Node0_action --> E_IncrementTrainSeizedEquipmentCount S_IncrementTrainSeizedEquipmentCount --> N_IncrementTrainSeizedEquipmentCount_Node0 N_IncrementTrainSeizedEquipmentCount_Node1{"The system updates train seizure
statistics"}:::decision N_IncrementTrainSeizedEquipmentCount_Node1_action["The train seized equipment count is
incremented by one"]:::main N_IncrementTrainSeizedEquipmentCount_Node1 -- Yes --> N_IncrementTrainSeizedEquipmentCount_Node1_action N_IncrementTrainSeizedEquipmentCount_Node1_action --> E_IncrementTrainSeizedEquipmentCount N_IncrementTrainSeizedEquipmentCount_Node0 -- No --> N_IncrementTrainSeizedEquipmentCount_Node1 N_IncrementTrainSeizedEquipmentCount_Node1 -- No --> E_IncrementTrainSeizedEquipmentCount
count"}:::decision N_IncrementTrainSeizedEquipmentCount_Node0_action["Increment the train s seized
equipment counter by one"]:::main N_IncrementTrainSeizedEquipmentCount_Node0 -- Yes --> N_IncrementTrainSeizedEquipmentCount_Node0_action N_IncrementTrainSeizedEquipmentCount_Node0_action --> E_IncrementTrainSeizedEquipmentCount S_IncrementTrainSeizedEquipmentCount --> N_IncrementTrainSeizedEquipmentCount_Node0 N_IncrementTrainSeizedEquipmentCount_Node1{"The system updates train seizure
statistics"}:::decision N_IncrementTrainSeizedEquipmentCount_Node1_action["The train seized equipment count is
incremented by one"]:::main N_IncrementTrainSeizedEquipmentCount_Node1 -- Yes --> N_IncrementTrainSeizedEquipmentCount_Node1_action N_IncrementTrainSeizedEquipmentCount_Node1_action --> E_IncrementTrainSeizedEquipmentCount N_IncrementTrainSeizedEquipmentCount_Node0 -- No --> N_IncrementTrainSeizedEquipmentCount_Node1 N_IncrementTrainSeizedEquipmentCount_Node1 -- No --> E_IncrementTrainSeizedEquipmentCount
File: GCX016.cbl
GIVEN:
Equipment seizure status has been updated
WHEN:
The system processes the seizure count
THEN:
Increment the train's seized equipment counter by one
File: GCX016.cbl
GIVEN:
Equipment has been marked as seized
WHEN:
The system updates train seizure statistics
THEN:
The train seized equipment count is incremented by one
β Consolidated Acceptance Criteria
- The system checks for additional VID segments → determine if more VID segments are available for processing additional equipment seizures
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CheckifMoreVIDSegments(["Start Step"])
E_CheckifMoreVIDSegments(["End Step"])
N_CheckifMoreVIDSegments_Node0{"The system checks for additional
VID segments"}:::decision N_CheckifMoreVIDSegments_Node0_action["Determine if more VID segments are
available for processing additional
equipment seizures"]:::main N_CheckifMoreVIDSegments_Node0 -- Yes --> N_CheckifMoreVIDSegments_Node0_action N_CheckifMoreVIDSegments_Node0_action --> E_CheckifMoreVIDSegments S_CheckifMoreVIDSegments --> N_CheckifMoreVIDSegments_Node0 N_CheckifMoreVIDSegments_Node0 -- No --> E_CheckifMoreVIDSegments
VID segments"}:::decision N_CheckifMoreVIDSegments_Node0_action["Determine if more VID segments are
available for processing additional
equipment seizures"]:::main N_CheckifMoreVIDSegments_Node0 -- Yes --> N_CheckifMoreVIDSegments_Node0_action N_CheckifMoreVIDSegments_Node0_action --> E_CheckifMoreVIDSegments S_CheckifMoreVIDSegments --> N_CheckifMoreVIDSegments_Node0 N_CheckifMoreVIDSegments_Node0 -- No --> E_CheckifMoreVIDSegments
File: GCX016.cbl
GIVEN:
One VID segment has been processed for equipment seizure
WHEN:
The system checks for additional VID segments
THEN:
Determine if more VID segments are available for processing additional equipment seizures
β Consolidated Acceptance Criteria
- The system sets the train seizure status → set the train status to fully seized indicating complete seizure of all equipment
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetTrainasFullySeized(["Start Step"])
E_SetTrainasFullySeized(["End Step"])
N_SetTrainasFullySeized_Node0{"The system sets the train seizure
status"}:::decision N_SetTrainasFullySeized_Node0_action["Set the train status to fully
seized indicating complete seizure
of all equipment"]:::main N_SetTrainasFullySeized_Node0 -- Yes --> N_SetTrainasFullySeized_Node0_action N_SetTrainasFullySeized_Node0_action --> E_SetTrainasFullySeized S_SetTrainasFullySeized --> N_SetTrainasFullySeized_Node0 N_SetTrainasFullySeized_Node0 -- No --> E_SetTrainasFullySeized
status"}:::decision N_SetTrainasFullySeized_Node0_action["Set the train status to fully
seized indicating complete seizure
of all equipment"]:::main N_SetTrainasFullySeized_Node0 -- Yes --> N_SetTrainasFullySeized_Node0_action N_SetTrainasFullySeized_Node0_action --> E_SetTrainasFullySeized S_SetTrainasFullySeized --> N_SetTrainasFullySeized_Node0 N_SetTrainasFullySeized_Node0 -- No --> E_SetTrainasFullySeized
File: GCX016.cbl
GIVEN:
All equipment on the train has been seized
WHEN:
The system sets the train seizure status
THEN:
Set the train status to fully seized indicating complete seizure of all equipment
β Consolidated Acceptance Criteria
- The system sets the train seizure status → set the train status to partially seized indicating incomplete seizure of equipment
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetTrainasPartiallySeized(["Start Step"])
E_SetTrainasPartiallySeized(["End Step"])
N_SetTrainasPartiallySeized_Node0{"The system sets the train seizure
status"}:::decision N_SetTrainasPartiallySeized_Node0_action["Set the train status to partially
seized indicating incomplete seizure
of equipment"]:::main N_SetTrainasPartiallySeized_Node0 -- Yes --> N_SetTrainasPartiallySeized_Node0_action N_SetTrainasPartiallySeized_Node0_action --> E_SetTrainasPartiallySeized S_SetTrainasPartiallySeized --> N_SetTrainasPartiallySeized_Node0 N_SetTrainasPartiallySeized_Node0 -- No --> E_SetTrainasPartiallySeized
status"}:::decision N_SetTrainasPartiallySeized_Node0_action["Set the train status to partially
seized indicating incomplete seizure
of equipment"]:::main N_SetTrainasPartiallySeized_Node0 -- Yes --> N_SetTrainasPartiallySeized_Node0_action N_SetTrainasPartiallySeized_Node0_action --> E_SetTrainasPartiallySeized S_SetTrainasPartiallySeized --> N_SetTrainasPartiallySeized_Node0 N_SetTrainasPartiallySeized_Node0 -- No --> E_SetTrainasPartiallySeized
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
Some but not all equipment on the train has been seized
WHEN:
The system sets the train seizure status
THEN:
Set the train status to partially seized indicating incomplete seizure of equipment
β Consolidated Acceptance Criteria
- The system performs error logging → log the equipment ID error with details about the validation failure and continue processing
- The system encounters an invalid equipment ID → equipment ID error is logged with details about the validation failure
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogEquipmentIDError(["Start Step"])
E_LogEquipmentIDError(["End Step"])
N_LogEquipmentIDError_Node0{"The system performs error logging"}:::decision
N_LogEquipmentIDError_Node0_action["Log the equipment ID error with
details about the validation failure
and continue processing"]:::exclusion N_LogEquipmentIDError_Node0 -- Yes -->|Alternative| N_LogEquipmentIDError_Node0_action N_LogEquipmentIDError_Node0_action --> E_LogEquipmentIDError S_LogEquipmentIDError --> N_LogEquipmentIDError_Node0 N_LogEquipmentIDError_Node1{"The system encounters an invalid
equipment ID"}:::decision N_LogEquipmentIDError_Node1_action["Equipment ID error is logged with
details about the validation failure"]:::exclusion N_LogEquipmentIDError_Node1 -- Yes -->|Alternative| N_LogEquipmentIDError_Node1_action N_LogEquipmentIDError_Node1_action --> E_LogEquipmentIDError N_LogEquipmentIDError_Node0 -- No --> N_LogEquipmentIDError_Node1 N_LogEquipmentIDError_Node1 -- No --> E_LogEquipmentIDError
details about the validation failure
and continue processing"]:::exclusion N_LogEquipmentIDError_Node0 -- Yes -->|Alternative| N_LogEquipmentIDError_Node0_action N_LogEquipmentIDError_Node0_action --> E_LogEquipmentIDError S_LogEquipmentIDError --> N_LogEquipmentIDError_Node0 N_LogEquipmentIDError_Node1{"The system encounters an invalid
equipment ID"}:::decision N_LogEquipmentIDError_Node1_action["Equipment ID error is logged with
details about the validation failure"]:::exclusion N_LogEquipmentIDError_Node1 -- Yes -->|Alternative| N_LogEquipmentIDError_Node1_action N_LogEquipmentIDError_Node1_action --> E_LogEquipmentIDError N_LogEquipmentIDError_Node0 -- No --> N_LogEquipmentIDError_Node1 N_LogEquipmentIDError_Node1 -- No --> E_LogEquipmentIDError
File: GCX016.cbl
GIVEN:
An invalid equipment ID has been skipped
WHEN:
The system performs error logging
THEN:
- Log the equipment id error with details about the validation failure
- Continue processing
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
Equipment ID validation has failed
WHEN:
The system encounters an invalid equipment ID
THEN:
Equipment ID error is logged with details about the validation failure
β Consolidated Acceptance Criteria
- The system searches for the equipment in the train's seized equipment list → if equipment is found in the seized list, proceed to release it from seizure, otherwise no action is required as equipment is not currently seized
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_EquipmentFoundinSeizedList(["Start Step"])
E_EquipmentFoundinSeizedList(["End Step"])
N_EquipmentFoundinSeizedList_Node0{"The system searches for the
equipment in the train s seized
equipment list"}:::decision N_EquipmentFoundinSeizedList_Node0_action["If equipment is found in the seized
list, proceed to release it from
seizure, otherwise no action is
required as equipment is not
currently seized"]:::main N_EquipmentFoundinSeizedList_Node0 -- Yes --> N_EquipmentFoundinSeizedList_Node0_action N_EquipmentFoundinSeizedList_Node0_action --> E_EquipmentFoundinSeizedList S_EquipmentFoundinSeizedList --> N_EquipmentFoundinSeizedList_Node0 N_EquipmentFoundinSeizedList_Node0 -- No --> E_EquipmentFoundinSeizedList
equipment in the train s seized
equipment list"}:::decision N_EquipmentFoundinSeizedList_Node0_action["If equipment is found in the seized
list, proceed to release it from
seizure, otherwise no action is
required as equipment is not
currently seized"]:::main N_EquipmentFoundinSeizedList_Node0 -- Yes --> N_EquipmentFoundinSeizedList_Node0_action N_EquipmentFoundinSeizedList_Node0_action --> E_EquipmentFoundinSeizedList S_EquipmentFoundinSeizedList --> N_EquipmentFoundinSeizedList_Node0 N_EquipmentFoundinSeizedList_Node0 -- No --> E_EquipmentFoundinSeizedList
File: GCX016.cbl
GIVEN:
A valid equipment ID has been extracted from VID segment
WHEN:
The system searches for the equipment in the train's seized equipment list
THEN:
If equipment is found in the seized list, proceed to release it from seizure, otherwise no action is required as equipment is not currently seized
β Consolidated Acceptance Criteria
- The system processes the seizure release → remove the equipment from seized status and update the equipment seizure flag to released
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RemoveEquipmentfromSeizedStatus(["Start Step"])
E_RemoveEquipmentfromSeizedStatus(["End Step"])
N_RemoveEquipmentfromSeizedStatus_Node0{"The system processes the seizure
release"}:::decision N_RemoveEquipmentfromSeizedStatus_Node0_action["Remove the equipment from seized
status and update the equipment
seizure flag to released"]:::main N_RemoveEquipmentfromSeizedStatus_Node0 -- Yes --> N_RemoveEquipmentfromSeizedStatus_Node0_action N_RemoveEquipmentfromSeizedStatus_Node0_action --> E_RemoveEquipmentfromSeizedStatus S_RemoveEquipmentfromSeizedStatus --> N_RemoveEquipmentfromSeizedStatus_Node0 N_RemoveEquipmentfromSeizedStatus_Node0 -- No --> E_RemoveEquipmentfromSeizedStatus
release"}:::decision N_RemoveEquipmentfromSeizedStatus_Node0_action["Remove the equipment from seized
status and update the equipment
seizure flag to released"]:::main N_RemoveEquipmentfromSeizedStatus_Node0 -- Yes --> N_RemoveEquipmentfromSeizedStatus_Node0_action N_RemoveEquipmentfromSeizedStatus_Node0_action --> E_RemoveEquipmentfromSeizedStatus S_RemoveEquipmentfromSeizedStatus --> N_RemoveEquipmentfromSeizedStatus_Node0 N_RemoveEquipmentfromSeizedStatus_Node0 -- No --> E_RemoveEquipmentfromSeizedStatus
File: GCX016.cbl
GIVEN:
Equipment is found in the train's seized equipment list
WHEN:
The system processes the seizure release
THEN:
- Remove the equipment from seized status
- Update the equipment seizure flag to released
β Consolidated Acceptance Criteria
- The system updates the database → update the train seizure status in the database to reflect current seizure state
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UpdateTrainSeizureStatusinDatabase(["Start Step"])
E_UpdateTrainSeizureStatusinDatabase(["End Step"])
N_UpdateTrainSeizureStatusinDatabase_Node0{"The system updates the database"}:::decision
N_UpdateTrainSeizureStatusinDatabase_Node0_action["Update the train seizure status in
the database to reflect current
seizure state"]:::main N_UpdateTrainSeizureStatusinDatabase_Node0 -- Yes --> N_UpdateTrainSeizureStatusinDatabase_Node0_action N_UpdateTrainSeizureStatusinDatabase_Node0_action --> E_UpdateTrainSeizureStatusinDatabase S_UpdateTrainSeizureStatusinDatabase --> N_UpdateTrainSeizureStatusinDatabase_Node0 N_UpdateTrainSeizureStatusinDatabase_Node0 -- No --> E_UpdateTrainSeizureStatusinDatabase
the database to reflect current
seizure state"]:::main N_UpdateTrainSeizureStatusinDatabase_Node0 -- Yes --> N_UpdateTrainSeizureStatusinDatabase_Node0_action N_UpdateTrainSeizureStatusinDatabase_Node0_action --> E_UpdateTrainSeizureStatusinDatabase S_UpdateTrainSeizureStatusinDatabase --> N_UpdateTrainSeizureStatusinDatabase_Node0 N_UpdateTrainSeizureStatusinDatabase_Node0 -- No --> E_UpdateTrainSeizureStatusinDatabase
File: GCX016.cbl
GIVEN:
Train's overall seizure status has been determined
WHEN:
The system updates the database
THEN:
Update the train seizure status in the database to reflect current seizure state
β Consolidated Acceptance Criteria
- The system performs activity logging → log all equipment seizure release activities including equipment IDs, timestamps, and status changes
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogEquipmentSeizureReleaseActivity(["Start Step"])
E_LogEquipmentSeizureReleaseActivity(["End Step"])
N_LogEquipmentSeizureReleaseActivity_Node0{"The system performs activity
logging"}:::decision N_LogEquipmentSeizureReleaseActivity_Node0_action["Log all equipment seizure release
activities including equipment IDs,
timestamps, and status changes"]:::main N_LogEquipmentSeizureReleaseActivity_Node0 -- Yes --> N_LogEquipmentSeizureReleaseActivity_Node0_action N_LogEquipmentSeizureReleaseActivity_Node0_action --> E_LogEquipmentSeizureReleaseActivity S_LogEquipmentSeizureReleaseActivity --> N_LogEquipmentSeizureReleaseActivity_Node0 N_LogEquipmentSeizureReleaseActivity_Node0 -- No --> E_LogEquipmentSeizureReleaseActivity
logging"}:::decision N_LogEquipmentSeizureReleaseActivity_Node0_action["Log all equipment seizure release
activities including equipment IDs,
timestamps, and status changes"]:::main N_LogEquipmentSeizureReleaseActivity_Node0 -- Yes --> N_LogEquipmentSeizureReleaseActivity_Node0_action N_LogEquipmentSeizureReleaseActivity_Node0_action --> E_LogEquipmentSeizureReleaseActivity S_LogEquipmentSeizureReleaseActivity --> N_LogEquipmentSeizureReleaseActivity_Node0 N_LogEquipmentSeizureReleaseActivity_Node0 -- No --> E_LogEquipmentSeizureReleaseActivity
File: GCX016.cbl
GIVEN:
Equipment seizure release processing has been completed
WHEN:
The system performs activity logging
THEN:
Log all equipment seizure release activities including equipment IDs, timestamps, and status changes
β Consolidated Acceptance Criteria
- The system processes the HMI disposition code for equipment hold → the equipment is added to the hold list AND the held equipment counter is incremented AND the train status is set to HELD
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_HMIHoldEquipment(["Start Step"])
E_HMIHoldEquipment(["End Step"])
N_HMIHoldEquipment_Node0{"The system processes the HMI
disposition code for equipment hold"}:::decision N_HMIHoldEquipment_Node0_action["The equipment is added to the hold
list AND the held equipment counter
is incremented AND the train status
is set to HELD"]:::main N_HMIHoldEquipment_Node0 -- Yes --> N_HMIHoldEquipment_Node0_action N_HMIHoldEquipment_Node0_action --> E_HMIHoldEquipment S_HMIHoldEquipment --> N_HMIHoldEquipment_Node0 N_HMIHoldEquipment_Node0 -- No --> E_HMIHoldEquipment
disposition code for equipment hold"}:::decision N_HMIHoldEquipment_Node0_action["The equipment is added to the hold
list AND the held equipment counter
is incremented AND the train status
is set to HELD"]:::main N_HMIHoldEquipment_Node0 -- Yes --> N_HMIHoldEquipment_Node0_action N_HMIHoldEquipment_Node0_action --> E_HMIHoldEquipment S_HMIHoldEquipment --> N_HMIHoldEquipment_Node0 N_HMIHoldEquipment_Node0 -- No --> E_HMIHoldEquipment
File: GCX016.cbl
GIVEN:
A VID segment is received after an HMI event code AND the disposition code is HMI
WHEN:
The system processes the HMI disposition code for equipment hold
THEN:
- The equipment is added to the hold list
- The held equipment counter is incremented
- The train status is set to held
β Consolidated Acceptance Criteria
- The system processes the HRE disposition code for equipment release → the equipment is removed from the hold list AND the held equipment counter is decremented
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_HREReleaseEquipment(["Start Step"])
E_HREReleaseEquipment(["End Step"])
N_HREReleaseEquipment_Node0{"The system processes the HRE
disposition code for equipment
release"}:::decision N_HREReleaseEquipment_Node0_action["The equipment is removed from the
hold list AND the held equipment
counter is decremented"]:::main N_HREReleaseEquipment_Node0 -- Yes --> N_HREReleaseEquipment_Node0_action N_HREReleaseEquipment_Node0_action --> E_HREReleaseEquipment S_HREReleaseEquipment --> N_HREReleaseEquipment_Node0 N_HREReleaseEquipment_Node0 -- No --> E_HREReleaseEquipment
disposition code for equipment
release"}:::decision N_HREReleaseEquipment_Node0_action["The equipment is removed from the
hold list AND the held equipment
counter is decremented"]:::main N_HREReleaseEquipment_Node0 -- Yes --> N_HREReleaseEquipment_Node0_action N_HREReleaseEquipment_Node0_action --> E_HREReleaseEquipment S_HREReleaseEquipment --> N_HREReleaseEquipment_Node0 N_HREReleaseEquipment_Node0 -- No --> E_HREReleaseEquipment
File: GCX016.cbl
GIVEN:
A VID segment is received after an HRE event code AND the disposition code is HRE
WHEN:
The system processes the HRE disposition code for equipment release
THEN:
- The equipment is removed from the hold list
- The held equipment counter is decremented
β Consolidated Acceptance Criteria
- The system processes the equipment hold request → the equipment is added to the train's equipment hold list
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AddEquipmenttoHoldList(["Start Step"])
E_AddEquipmenttoHoldList(["End Step"])
N_AddEquipmenttoHoldList_Node0{"The system processes the equipment
hold request"}:::decision N_AddEquipmenttoHoldList_Node0_action["The equipment is added to the train
s equipment hold list"]:::main N_AddEquipmenttoHoldList_Node0 -- Yes --> N_AddEquipmenttoHoldList_Node0_action N_AddEquipmenttoHoldList_Node0_action --> E_AddEquipmenttoHoldList S_AddEquipmenttoHoldList --> N_AddEquipmenttoHoldList_Node0 N_AddEquipmenttoHoldList_Node0 -- No --> E_AddEquipmenttoHoldList
hold request"}:::decision N_AddEquipmenttoHoldList_Node0_action["The equipment is added to the train
s equipment hold list"]:::main N_AddEquipmenttoHoldList_Node0 -- Yes --> N_AddEquipmenttoHoldList_Node0_action N_AddEquipmenttoHoldList_Node0_action --> E_AddEquipmenttoHoldList S_AddEquipmenttoHoldList --> N_AddEquipmenttoHoldList_Node0 N_AddEquipmenttoHoldList_Node0 -- No --> E_AddEquipmenttoHoldList
File: GCX016.cbl
GIVEN:
Equipment ID is valid AND disposition code is HMI
WHEN:
The system processes the equipment hold request
THEN:
The equipment is added to the train's equipment hold list
β Consolidated Acceptance Criteria
- The system processes the equipment release request → the equipment is removed from the train's equipment hold list
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RemoveEquipmentfromHoldList(["Start Step"])
E_RemoveEquipmentfromHoldList(["End Step"])
N_RemoveEquipmentfromHoldList_Node0{"The system processes the equipment
release request"}:::decision N_RemoveEquipmentfromHoldList_Node0_action["The equipment is removed from the
train s equipment hold list"]:::main N_RemoveEquipmentfromHoldList_Node0 -- Yes --> N_RemoveEquipmentfromHoldList_Node0_action N_RemoveEquipmentfromHoldList_Node0_action --> E_RemoveEquipmentfromHoldList S_RemoveEquipmentfromHoldList --> N_RemoveEquipmentfromHoldList_Node0 N_RemoveEquipmentfromHoldList_Node0 -- No --> E_RemoveEquipmentfromHoldList
release request"}:::decision N_RemoveEquipmentfromHoldList_Node0_action["The equipment is removed from the
train s equipment hold list"]:::main N_RemoveEquipmentfromHoldList_Node0 -- Yes --> N_RemoveEquipmentfromHoldList_Node0_action N_RemoveEquipmentfromHoldList_Node0_action --> E_RemoveEquipmentfromHoldList S_RemoveEquipmentfromHoldList --> N_RemoveEquipmentfromHoldList_Node0 N_RemoveEquipmentfromHoldList_Node0 -- No --> E_RemoveEquipmentfromHoldList
File: GCX016.cbl
GIVEN:
Equipment ID is valid AND disposition code is HRE
WHEN:
The system processes the equipment release request
THEN:
The equipment is removed from the train's equipment hold list
β Consolidated Acceptance Criteria
- The system updates the held equipment count → the held equipment counter is decremented by one
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_DecrementHeldEquipmentCounter(["Start Step"])
E_DecrementHeldEquipmentCounter(["End Step"])
N_DecrementHeldEquipmentCounter_Node0{"The system updates the held
equipment count"}:::decision N_DecrementHeldEquipmentCounter_Node0_action["The held equipment counter is
decremented by one"]:::main N_DecrementHeldEquipmentCounter_Node0 -- Yes --> N_DecrementHeldEquipmentCounter_Node0_action N_DecrementHeldEquipmentCounter_Node0_action --> E_DecrementHeldEquipmentCounter S_DecrementHeldEquipmentCounter --> N_DecrementHeldEquipmentCounter_Node0 N_DecrementHeldEquipmentCounter_Node0 -- No --> E_DecrementHeldEquipmentCounter
equipment count"}:::decision N_DecrementHeldEquipmentCounter_Node0_action["The held equipment counter is
decremented by one"]:::main N_DecrementHeldEquipmentCounter_Node0 -- Yes --> N_DecrementHeldEquipmentCounter_Node0_action N_DecrementHeldEquipmentCounter_Node0_action --> E_DecrementHeldEquipmentCounter S_DecrementHeldEquipmentCounter --> N_DecrementHeldEquipmentCounter_Node0 N_DecrementHeldEquipmentCounter_Node0 -- No --> E_DecrementHeldEquipmentCounter
File: GCX016.cbl
GIVEN:
Equipment has been removed from the hold list
WHEN:
The system updates the held equipment count
THEN:
The held equipment counter is decremented by one
β Consolidated Acceptance Criteria
- The system updates the train status → the train status is set to HELD
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetTrainStatusHELD(["Start Step"])
E_SetTrainStatusHELD(["End Step"])
N_SetTrainStatusHELD_Node0{"The system updates the train status"}:::decision
N_SetTrainStatusHELD_Node0_action["The train status is set to HELD"]:::main
N_SetTrainStatusHELD_Node0 -- Yes --> N_SetTrainStatusHELD_Node0_action
N_SetTrainStatusHELD_Node0_action --> E_SetTrainStatusHELD
S_SetTrainStatusHELD --> N_SetTrainStatusHELD_Node0
N_SetTrainStatusHELD_Node0 -- No --> E_SetTrainStatusHELD
File: GCX016.cbl
GIVEN:
Equipment has been added to hold list OR equipment still remains on hold list after release processing
WHEN:
The system updates the train status
THEN:
The train status is set to HELD
β Consolidated Acceptance Criteria
- The system updates the train status → the train status is set to RELEASED
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetTrainStatusRELEASED(["Start Step"])
E_SetTrainStatusRELEASED(["End Step"])
N_SetTrainStatusRELEASED_Node0{"The system updates the train status"}:::decision
N_SetTrainStatusRELEASED_Node0_action["The train status is set to RELEASED"]:::main
N_SetTrainStatusRELEASED_Node0 -- Yes --> N_SetTrainStatusRELEASED_Node0_action
N_SetTrainStatusRELEASED_Node0_action --> E_SetTrainStatusRELEASED
S_SetTrainStatusRELEASED --> N_SetTrainStatusRELEASED_Node0
N_SetTrainStatusRELEASED_Node0 -- No --> E_SetTrainStatusRELEASED
File: GCX016.cbl
GIVEN:
No equipment remains on the hold list after release processing
WHEN:
The system updates the train status
THEN:
The train status is set to RELEASED
β Consolidated Acceptance Criteria
- The system updates the database → the train hold status is updated in the GCWTL-TRAIN-LIST database AND the train status database
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UpdateTrainHoldStatusinDatabase(["Start Step"])
E_UpdateTrainHoldStatusinDatabase(["End Step"])
N_UpdateTrainHoldStatusinDatabase_Node0{"The system updates the database"}:::decision
N_UpdateTrainHoldStatusinDatabase_Node0_action["The train hold status is updated in
the GCWTL-TRAIN-LIST database AND
the train status database"]:::main N_UpdateTrainHoldStatusinDatabase_Node0 -- Yes --> N_UpdateTrainHoldStatusinDatabase_Node0_action N_UpdateTrainHoldStatusinDatabase_Node0_action --> E_UpdateTrainHoldStatusinDatabase S_UpdateTrainHoldStatusinDatabase --> N_UpdateTrainHoldStatusinDatabase_Node0 N_UpdateTrainHoldStatusinDatabase_Node0 -- No --> E_UpdateTrainHoldStatusinDatabase
the GCWTL-TRAIN-LIST database AND
the train status database"]:::main N_UpdateTrainHoldStatusinDatabase_Node0 -- Yes --> N_UpdateTrainHoldStatusinDatabase_Node0_action N_UpdateTrainHoldStatusinDatabase_Node0_action --> E_UpdateTrainHoldStatusinDatabase S_UpdateTrainHoldStatusinDatabase --> N_UpdateTrainHoldStatusinDatabase_Node0 N_UpdateTrainHoldStatusinDatabase_Node0 -- No --> E_UpdateTrainHoldStatusinDatabase
File: GCX016.cbl
GIVEN:
The train status has been determined as HELD or RELEASED
WHEN:
The system updates the database
THEN:
- The train hold status is updated in the gcwtl-train-list database
- The train status database
β Consolidated Acceptance Criteria
- The system logs the action → the equipment hold or release action is logged with equipment ID and action type
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogEquipmentHoldReleaseAction(["Start Step"])
E_LogEquipmentHoldReleaseAction(["End Step"])
N_LogEquipmentHoldReleaseAction_Node0{"The system logs the action"}:::decision
N_LogEquipmentHoldReleaseAction_Node0_action["The equipment hold or release
action is logged with equipment ID
and action type"]:::main N_LogEquipmentHoldReleaseAction_Node0 -- Yes --> N_LogEquipmentHoldReleaseAction_Node0_action N_LogEquipmentHoldReleaseAction_Node0_action --> E_LogEquipmentHoldReleaseAction S_LogEquipmentHoldReleaseAction --> N_LogEquipmentHoldReleaseAction_Node0 N_LogEquipmentHoldReleaseAction_Node0 -- No --> E_LogEquipmentHoldReleaseAction
action is logged with equipment ID
and action type"]:::main N_LogEquipmentHoldReleaseAction_Node0 -- Yes --> N_LogEquipmentHoldReleaseAction_Node0_action N_LogEquipmentHoldReleaseAction_Node0_action --> E_LogEquipmentHoldReleaseAction S_LogEquipmentHoldReleaseAction --> N_LogEquipmentHoldReleaseAction_Node0 N_LogEquipmentHoldReleaseAction_Node0 -- No --> E_LogEquipmentHoldReleaseAction
File: GCX016.cbl
GIVEN:
Equipment hold or release processing has been completed
WHEN:
The system logs the action
THEN:
- The equipment hold or release action is logged with equipment id
- Action type
β Consolidated Acceptance Criteria
- The system processes the VID segment → the equipment ID is extracted from the VID segment and seizure processing is initiated
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_VIDSegmentwithSEIDispositionCodeReceived(["Start Step"])
E_VIDSegmentwithSEIDispositionCodeReceived(["End Step"])
N_VIDSegmentwithSEIDispositionCodeReceived_Node0{"The system processes the VID
segment"}:::decision N_VIDSegmentwithSEIDispositionCodeReceived_Node0_action["The equipment ID is extracted from
the VID segment and seizure
processing is initiated"]:::main N_VIDSegmentwithSEIDispositionCodeReceived_Node0 -- Yes --> N_VIDSegmentwithSEIDispositionCodeReceived_Node0_action N_VIDSegmentwithSEIDispositionCodeReceived_Node0_action --> E_VIDSegmentwithSEIDispositionCodeReceived S_VIDSegmentwithSEIDispositionCodeReceived --> N_VIDSegmentwithSEIDispositionCodeReceived_Node0 N_VIDSegmentwithSEIDispositionCodeReceived_Node0 -- No --> E_VIDSegmentwithSEIDispositionCodeReceived
segment"}:::decision N_VIDSegmentwithSEIDispositionCodeReceived_Node0_action["The equipment ID is extracted from
the VID segment and seizure
processing is initiated"]:::main N_VIDSegmentwithSEIDispositionCodeReceived_Node0 -- Yes --> N_VIDSegmentwithSEIDispositionCodeReceived_Node0_action N_VIDSegmentwithSEIDispositionCodeReceived_Node0_action --> E_VIDSegmentwithSEIDispositionCodeReceived S_VIDSegmentwithSEIDispositionCodeReceived --> N_VIDSegmentwithSEIDispositionCodeReceived_Node0 N_VIDSegmentwithSEIDispositionCodeReceived_Node0 -- No --> E_VIDSegmentwithSEIDispositionCodeReceived
File: GCX016.cbl
GIVEN:
A VID segment is received with SEI disposition code
WHEN:
The system processes the VID segment
THEN:
- The equipment id is extracted from the vid segment
- Seizure processing is initiated
β Consolidated Acceptance Criteria
- The system processes the VID segment → the equipment ID is extracted from the VID segment and seizure release processing is initiated
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_VIDSegmentwithSERDispositionCodeReceived(["Start Step"])
E_VIDSegmentwithSERDispositionCodeReceived(["End Step"])
N_VIDSegmentwithSERDispositionCodeReceived_Node0{"The system processes the VID
segment"}:::decision N_VIDSegmentwithSERDispositionCodeReceived_Node0_action["The equipment ID is extracted from
the VID segment and seizure release
processing is initiated"]:::main N_VIDSegmentwithSERDispositionCodeReceived_Node0 -- Yes --> N_VIDSegmentwithSERDispositionCodeReceived_Node0_action N_VIDSegmentwithSERDispositionCodeReceived_Node0_action --> E_VIDSegmentwithSERDispositionCodeReceived S_VIDSegmentwithSERDispositionCodeReceived --> N_VIDSegmentwithSERDispositionCodeReceived_Node0 N_VIDSegmentwithSERDispositionCodeReceived_Node0 -- No --> E_VIDSegmentwithSERDispositionCodeReceived
segment"}:::decision N_VIDSegmentwithSERDispositionCodeReceived_Node0_action["The equipment ID is extracted from
the VID segment and seizure release
processing is initiated"]:::main N_VIDSegmentwithSERDispositionCodeReceived_Node0 -- Yes --> N_VIDSegmentwithSERDispositionCodeReceived_Node0_action N_VIDSegmentwithSERDispositionCodeReceived_Node0_action --> E_VIDSegmentwithSERDispositionCodeReceived S_VIDSegmentwithSERDispositionCodeReceived --> N_VIDSegmentwithSERDispositionCodeReceived_Node0 N_VIDSegmentwithSERDispositionCodeReceived_Node0 -- No --> E_VIDSegmentwithSERDispositionCodeReceived
File: GCX016.cbl
GIVEN:
A VID segment is received with SER disposition code
WHEN:
The system processes the VID segment
THEN:
- The equipment id is extracted from the vid segment
- Seizure release processing is initiated
β Consolidated Acceptance Criteria
- The system updates train status after release → the train status is set to not seized
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetTrainStatustoNotSeized(["Start Step"])
E_SetTrainStatustoNotSeized(["End Step"])
N_SetTrainStatustoNotSeized_Node0{"The system updates train status
after release"}:::decision N_SetTrainStatustoNotSeized_Node0_action["The train status is set to not
seized"]:::main N_SetTrainStatustoNotSeized_Node0 -- Yes --> N_SetTrainStatustoNotSeized_Node0_action N_SetTrainStatustoNotSeized_Node0_action --> E_SetTrainStatustoNotSeized S_SetTrainStatustoNotSeized --> N_SetTrainStatustoNotSeized_Node0 N_SetTrainStatustoNotSeized_Node0 -- No --> E_SetTrainStatustoNotSeized
after release"}:::decision N_SetTrainStatustoNotSeized_Node0_action["The train status is set to not
seized"]:::main N_SetTrainStatustoNotSeized_Node0 -- Yes --> N_SetTrainStatustoNotSeized_Node0_action N_SetTrainStatustoNotSeized_Node0_action --> E_SetTrainStatustoNotSeized S_SetTrainStatustoNotSeized --> N_SetTrainStatustoNotSeized_Node0 N_SetTrainStatustoNotSeized_Node0 -- No --> E_SetTrainStatustoNotSeized
File: GCX016.cbl
GIVEN:
No equipment on the train remains seized
WHEN:
The system updates train status after release
THEN:
The train status is set to not seized
β Consolidated Acceptance Criteria
- The system completes seizure release processing → the equipment seizure release action is logged in the system
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogEquipmentSeizureReleaseAction(["Start Step"])
E_LogEquipmentSeizureReleaseAction(["End Step"])
N_LogEquipmentSeizureReleaseAction_Node0{"The system completes seizure
release processing"}:::decision N_LogEquipmentSeizureReleaseAction_Node0_action["The equipment seizure release
action is logged in the system"]:::main N_LogEquipmentSeizureReleaseAction_Node0 -- Yes --> N_LogEquipmentSeizureReleaseAction_Node0_action N_LogEquipmentSeizureReleaseAction_Node0_action --> E_LogEquipmentSeizureReleaseAction S_LogEquipmentSeizureReleaseAction --> N_LogEquipmentSeizureReleaseAction_Node0 N_LogEquipmentSeizureReleaseAction_Node0 -- No --> E_LogEquipmentSeizureReleaseAction
release processing"}:::decision N_LogEquipmentSeizureReleaseAction_Node0_action["The equipment seizure release
action is logged in the system"]:::main N_LogEquipmentSeizureReleaseAction_Node0 -- Yes --> N_LogEquipmentSeizureReleaseAction_Node0_action N_LogEquipmentSeizureReleaseAction_Node0_action --> E_LogEquipmentSeizureReleaseAction S_LogEquipmentSeizureReleaseAction --> N_LogEquipmentSeizureReleaseAction_Node0 N_LogEquipmentSeizureReleaseAction_Node0 -- No --> E_LogEquipmentSeizureReleaseAction
File: GCX016.cbl
GIVEN:
Equipment seizure has been released and train status updated
WHEN:
The system completes seizure release processing
THEN:
The equipment seizure release action is logged in the system
β Consolidated Acceptance Criteria
- The system encounters invalid equipment ID → an error is generated for invalid equipment ID and processing stops
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ErrorInvalidEquipmentID(["Start Step"])
E_ErrorInvalidEquipmentID(["End Step"])
N_ErrorInvalidEquipmentID_Node0{"The system encounters invalid
equipment ID"}:::decision N_ErrorInvalidEquipmentID_Node0_action["An error is generated for invalid
equipment ID and processing stops"]:::exclusion N_ErrorInvalidEquipmentID_Node0 -- Yes -->|Alternative| N_ErrorInvalidEquipmentID_Node0_action N_ErrorInvalidEquipmentID_Node0_action --> E_ErrorInvalidEquipmentID S_ErrorInvalidEquipmentID --> N_ErrorInvalidEquipmentID_Node0 N_ErrorInvalidEquipmentID_Node0 -- No --> E_ErrorInvalidEquipmentID
equipment ID"}:::decision N_ErrorInvalidEquipmentID_Node0_action["An error is generated for invalid
equipment ID and processing stops"]:::exclusion N_ErrorInvalidEquipmentID_Node0 -- Yes -->|Alternative| N_ErrorInvalidEquipmentID_Node0_action N_ErrorInvalidEquipmentID_Node0_action --> E_ErrorInvalidEquipmentID S_ErrorInvalidEquipmentID --> N_ErrorInvalidEquipmentID_Node0 N_ErrorInvalidEquipmentID_Node0 -- No --> E_ErrorInvalidEquipmentID
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
Equipment ID format validation has failed
WHEN:
The system encounters invalid equipment ID
THEN:
- An error is generated for invalid equipment id
- Processing stops
β Consolidated Acceptance Criteria
- If the train type and manifest designation → the system identifies whether the train is an export manifest train and proceeds with appropriate processing path
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IsTrainExportManifest(["Start Step"])
E_IsTrainExportManifest(["End Step"])
N_IsTrainExportManifest_Node0{"The system evaluates the train type
and manifest designation"}:::decision N_IsTrainExportManifest_Node0_action["The system identifies whether the
train is an export manifest train
and proceeds with appropriate
processing path"]:::main N_IsTrainExportManifest_Node0 -- Yes --> N_IsTrainExportManifest_Node0_action N_IsTrainExportManifest_Node0_action --> E_IsTrainExportManifest S_IsTrainExportManifest --> N_IsTrainExportManifest_Node0 N_IsTrainExportManifest_Node0 -- No --> E_IsTrainExportManifest
and manifest designation"}:::decision N_IsTrainExportManifest_Node0_action["The system identifies whether the
train is an export manifest train
and proceeds with appropriate
processing path"]:::main N_IsTrainExportManifest_Node0 -- Yes --> N_IsTrainExportManifest_Node0_action N_IsTrainExportManifest_Node0_action --> E_IsTrainExportManifest S_IsTrainExportManifest --> N_IsTrainExportManifest_Node0 N_IsTrainExportManifest_Node0 -- No --> E_IsTrainExportManifest
File: GCX016.cbl
GIVEN:
A train processing request is received with train information
WHEN:
- The system evaluates the train type
- Manifest designation
THEN:
- The system identifies whether the train is an export manifest train
- Proceeds with appropriate processing path
β Consolidated Acceptance Criteria
- The system checks the destination port configuration in the port tables → the system determines if the port is authorized and configured for export processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IsPortConfiguredforExportProcessing(["Start Step"])
E_IsPortConfiguredforExportProcessing(["End Step"])
N_IsPortConfiguredforExportProcessing_Node0{"The system checks the destination
port configuration in the port
tables"}:::decision N_IsPortConfiguredforExportProcessing_Node0_action["The system determines if the port
is authorized and configured for
export processing"]:::main N_IsPortConfiguredforExportProcessing_Node0 -- Yes --> N_IsPortConfiguredforExportProcessing_Node0_action N_IsPortConfiguredforExportProcessing_Node0_action --> E_IsPortConfiguredforExportProcessing S_IsPortConfiguredforExportProcessing --> N_IsPortConfiguredforExportProcessing_Node0 N_IsPortConfiguredforExportProcessing_Node0 -- No --> E_IsPortConfiguredforExportProcessing
port configuration in the port
tables"}:::decision N_IsPortConfiguredforExportProcessing_Node0_action["The system determines if the port
is authorized and configured for
export processing"]:::main N_IsPortConfiguredforExportProcessing_Node0 -- Yes --> N_IsPortConfiguredforExportProcessing_Node0_action N_IsPortConfiguredforExportProcessing_Node0_action --> E_IsPortConfiguredforExportProcessing S_IsPortConfiguredforExportProcessing --> N_IsPortConfiguredforExportProcessing_Node0 N_IsPortConfiguredforExportProcessing_Node0 -- No --> E_IsPortConfiguredforExportProcessing
File: GCX016.cbl
GIVEN:
An export manifest train is being processed
WHEN:
The system checks the destination port configuration in the port tables
THEN:
- The system determines if the port is authorized
- Configured for export processing
β Consolidated Acceptance Criteria
- The system processes the M10 segment data → the system validates train name, route, and other essential train information for completeness and accuracy
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ValidateTrainInformationfromM10Segment(["Start Step"])
E_ValidateTrainInformationfromM10Segment(["End Step"])
N_ValidateTrainInformationfromM10Segment_Node0{"The system processes the M10
segment data"}:::decision N_ValidateTrainInformationfromM10Segment_Node0_action["The system validates train name,
route, and other essential train
information for completeness and
accuracy"]:::main N_ValidateTrainInformationfromM10Segment_Node0 -- Yes --> N_ValidateTrainInformationfromM10Segment_Node0_action N_ValidateTrainInformationfromM10Segment_Node0_action --> E_ValidateTrainInformationfromM10Segment S_ValidateTrainInformationfromM10Segment --> N_ValidateTrainInformationfromM10Segment_Node0 N_ValidateTrainInformationfromM10Segment_Node0 -- No --> E_ValidateTrainInformationfromM10Segment
segment data"}:::decision N_ValidateTrainInformationfromM10Segment_Node0_action["The system validates train name,
route, and other essential train
information for completeness and
accuracy"]:::main N_ValidateTrainInformationfromM10Segment_Node0 -- Yes --> N_ValidateTrainInformationfromM10Segment_Node0_action N_ValidateTrainInformationfromM10Segment_Node0_action --> E_ValidateTrainInformationfromM10Segment S_ValidateTrainInformationfromM10Segment --> N_ValidateTrainInformationfromM10Segment_Node0 N_ValidateTrainInformationfromM10Segment_Node0 -- No --> E_ValidateTrainInformationfromM10Segment
File: GCX016.cbl
GIVEN:
An M10 segment containing train manifest information is received
WHEN:
The system processes the M10 segment data
THEN:
- The system validates train name, route, and other essential train information for completeness
- Accuracy
β Consolidated Acceptance Criteria
- The system searches the GCWTL-TRAIN-LIST table using the train identifier → the system confirms whether the train exists in the master train registry
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CheckTrainExistenceinGCWTLTRAINLIST(["Start Step"])
E_CheckTrainExistenceinGCWTLTRAINLIST(["End Step"])
N_CheckTrainExistenceinGCWTLTRAINLIST_Node0{"The system searches the
GCWTL-TRAIN-LIST table using the
train identifier"}:::decision N_CheckTrainExistenceinGCWTLTRAINLIST_Node0_action["The system confirms whether the
train exists in the master train
registry"]:::main N_CheckTrainExistenceinGCWTLTRAINLIST_Node0 -- Yes --> N_CheckTrainExistenceinGCWTLTRAINLIST_Node0_action N_CheckTrainExistenceinGCWTLTRAINLIST_Node0_action --> E_CheckTrainExistenceinGCWTLTRAINLIST S_CheckTrainExistenceinGCWTLTRAINLIST --> N_CheckTrainExistenceinGCWTLTRAINLIST_Node0 N_CheckTrainExistenceinGCWTLTRAINLIST_Node0 -- No --> E_CheckTrainExistenceinGCWTLTRAINLIST
GCWTL-TRAIN-LIST table using the
train identifier"}:::decision N_CheckTrainExistenceinGCWTLTRAINLIST_Node0_action["The system confirms whether the
train exists in the master train
registry"]:::main N_CheckTrainExistenceinGCWTLTRAINLIST_Node0 -- Yes --> N_CheckTrainExistenceinGCWTLTRAINLIST_Node0_action N_CheckTrainExistenceinGCWTLTRAINLIST_Node0_action --> E_CheckTrainExistenceinGCWTLTRAINLIST S_CheckTrainExistenceinGCWTLTRAINLIST --> N_CheckTrainExistenceinGCWTLTRAINLIST_Node0 N_CheckTrainExistenceinGCWTLTRAINLIST_Node0 -- No --> E_CheckTrainExistenceinGCWTLTRAINLIST
File: GCX016.cbl
GIVEN:
Train information has been validated from the M10 segment
WHEN:
The system searches the GCWTL-TRAIN-LIST table using the train identifier
THEN:
The system confirms whether the train exists in the master train registry
β Consolidated Acceptance Criteria
- The system processes the train for pre-arrival → the system sets the train status to pre-arrival state for export processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetPrearrivalStatus(["Start Step"])
E_SetPrearrivalStatus(["End Step"])
N_SetPrearrivalStatus_Node0{"The system processes the train for
pre-arrival"}:::decision N_SetPrearrivalStatus_Node0_action["The system sets the train status to
pre-arrival state for export
processing"]:::main N_SetPrearrivalStatus_Node0 -- Yes --> N_SetPrearrivalStatus_Node0_action N_SetPrearrivalStatus_Node0_action --> E_SetPrearrivalStatus S_SetPrearrivalStatus --> N_SetPrearrivalStatus_Node0 N_SetPrearrivalStatus_Node0 -- No --> E_SetPrearrivalStatus
pre-arrival"}:::decision N_SetPrearrivalStatus_Node0_action["The system sets the train status to
pre-arrival state for export
processing"]:::main N_SetPrearrivalStatus_Node0 -- Yes --> N_SetPrearrivalStatus_Node0_action N_SetPrearrivalStatus_Node0_action --> E_SetPrearrivalStatus S_SetPrearrivalStatus --> N_SetPrearrivalStatus_Node0 N_SetPrearrivalStatus_Node0 -- No --> E_SetPrearrivalStatus
File: GCX016.cbl
GIVEN:
An export manifest train has been found in the master train list
WHEN:
The system processes the train for pre-arrival
THEN:
The system sets the train status to pre-arrival state for export processing
β Consolidated Acceptance Criteria
- The system updates the train status record → the train status is changed to 'Pre-arrived' in the train status records
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UpdateTrainStatustoPrearrived(["Start Step"])
E_UpdateTrainStatustoPrearrived(["End Step"])
N_UpdateTrainStatustoPrearrived_Node0{"The system updates the train status
record"}:::decision N_UpdateTrainStatustoPrearrived_Node0_action["The train status is changed to
Pre-arrived in the train status
records"]:::main N_UpdateTrainStatustoPrearrived_Node0 -- Yes --> N_UpdateTrainStatustoPrearrived_Node0_action N_UpdateTrainStatustoPrearrived_Node0_action --> E_UpdateTrainStatustoPrearrived S_UpdateTrainStatustoPrearrived --> N_UpdateTrainStatustoPrearrived_Node0 N_UpdateTrainStatustoPrearrived_Node0 -- No --> E_UpdateTrainStatustoPrearrived
record"}:::decision N_UpdateTrainStatustoPrearrived_Node0_action["The train status is changed to
Pre-arrived in the train status
records"]:::main N_UpdateTrainStatustoPrearrived_Node0 -- Yes --> N_UpdateTrainStatustoPrearrived_Node0_action N_UpdateTrainStatustoPrearrived_Node0_action --> E_UpdateTrainStatustoPrearrived S_UpdateTrainStatustoPrearrived --> N_UpdateTrainStatustoPrearrived_Node0 N_UpdateTrainStatustoPrearrived_Node0 -- No --> E_UpdateTrainStatustoPrearrived
File: GCX016.cbl
GIVEN:
A train has been assigned pre-arrival status
WHEN:
The system updates the train status record
THEN:
The train status is changed to 'Pre-arrived' in the train status records
β Consolidated Acceptance Criteria
- The system processes the P4 segment data → the system extracts port codes, locations, and routing information for export processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ProcessPortInformationfromP4Segment(["Start Step"])
E_ProcessPortInformationfromP4Segment(["End Step"])
N_ProcessPortInformationfromP4Segment_Node0{"The system processes the P4 segment
data"}:::decision N_ProcessPortInformationfromP4Segment_Node0_action["The system extracts port codes,
locations, and routing information
for export processing"]:::main N_ProcessPortInformationfromP4Segment_Node0 -- Yes --> N_ProcessPortInformationfromP4Segment_Node0_action N_ProcessPortInformationfromP4Segment_Node0_action --> E_ProcessPortInformationfromP4Segment S_ProcessPortInformationfromP4Segment --> N_ProcessPortInformationfromP4Segment_Node0 N_ProcessPortInformationfromP4Segment_Node0 -- No --> E_ProcessPortInformationfromP4Segment
data"}:::decision N_ProcessPortInformationfromP4Segment_Node0_action["The system extracts port codes,
locations, and routing information
for export processing"]:::main N_ProcessPortInformationfromP4Segment_Node0 -- Yes --> N_ProcessPortInformationfromP4Segment_Node0_action N_ProcessPortInformationfromP4Segment_Node0_action --> E_ProcessPortInformationfromP4Segment S_ProcessPortInformationfromP4Segment --> N_ProcessPortInformationfromP4Segment_Node0 N_ProcessPortInformationfromP4Segment_Node0 -- No --> E_ProcessPortInformationfromP4Segment
File: GCX016.cbl
GIVEN:
A P4 segment containing port information is available
WHEN:
The system processes the P4 segment data
THEN:
The system extracts port codes, locations, and routing information for export processing
β Consolidated Acceptance Criteria
- The system checks the port configuration in GCSTBRT port tables → the system validates that the port is configured with proper export processing capabilities
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ValidateExportPortConfiguration(["Start Step"])
E_ValidateExportPortConfiguration(["End Step"])
N_ValidateExportPortConfiguration_Node0{"The system checks the port
configuration in GCSTBRT port tables"}:::decision N_ValidateExportPortConfiguration_Node0_action["The system validates that the port
is configured with proper export
processing capabilities"]:::main N_ValidateExportPortConfiguration_Node0 -- Yes --> N_ValidateExportPortConfiguration_Node0_action N_ValidateExportPortConfiguration_Node0_action --> E_ValidateExportPortConfiguration S_ValidateExportPortConfiguration --> N_ValidateExportPortConfiguration_Node0 N_ValidateExportPortConfiguration_Node0 -- No --> E_ValidateExportPortConfiguration
configuration in GCSTBRT port tables"}:::decision N_ValidateExportPortConfiguration_Node0_action["The system validates that the port
is configured with proper export
processing capabilities"]:::main N_ValidateExportPortConfiguration_Node0 -- Yes --> N_ValidateExportPortConfiguration_Node0_action N_ValidateExportPortConfiguration_Node0_action --> E_ValidateExportPortConfiguration S_ValidateExportPortConfiguration --> N_ValidateExportPortConfiguration_Node0 N_ValidateExportPortConfiguration_Node0 -- No --> E_ValidateExportPortConfiguration
File: GCX016.cbl
GIVEN:
Port information has been extracted from the P4 segment
WHEN:
The system checks the port configuration in GCSTBRT port tables
THEN:
The system validates that the port is configured with proper export processing capabilities
β Consolidated Acceptance Criteria
- If the port's export processing capabilities → if port is valid for export, continue with export pre-arrival processing; otherwise skip processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_PortValidforExport(["Start Step"])
E_PortValidforExport(["End Step"])
N_PortValidforExport_Node0{"The system evaluates the port s
export processing capabilities"}:::decision N_PortValidforExport_Node0_action["If port is valid for export,
continue with export pre-arrival
processing otherwise skip processing"]:::main N_PortValidforExport_Node0 -- Yes --> N_PortValidforExport_Node0_action N_PortValidforExport_Node0_action --> E_PortValidforExport S_PortValidforExport --> N_PortValidforExport_Node0 N_PortValidforExport_Node0 -- No --> E_PortValidforExport
export processing capabilities"}:::decision N_PortValidforExport_Node0_action["If port is valid for export,
continue with export pre-arrival
processing otherwise skip processing"]:::main N_PortValidforExport_Node0 -- Yes --> N_PortValidforExport_Node0_action N_PortValidforExport_Node0_action --> E_PortValidforExport S_PortValidforExport --> N_PortValidforExport_Node0 N_PortValidforExport_Node0 -- No --> E_PortValidforExport
File: GCX016.cbl
GIVEN:
Port configuration has been validated against export requirements
WHEN:
The system evaluates the port's export processing capabilities
THEN:
If port is valid for export, continue with export pre-arrival processing; otherwise skip processing
β Consolidated Acceptance Criteria
- The system processes the export pre-arrival requirements → the system sets the export pre-arrival flag to indicate the train is ready for export processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetExportPrearrivalFlag(["Start Step"])
E_SetExportPrearrivalFlag(["End Step"])
N_SetExportPrearrivalFlag_Node0{"The system processes the export
pre-arrival requirements"}:::decision N_SetExportPrearrivalFlag_Node0_action["The system sets the export
pre-arrival flag to indicate the
train is ready for export processing"]:::main N_SetExportPrearrivalFlag_Node0 -- Yes --> N_SetExportPrearrivalFlag_Node0_action N_SetExportPrearrivalFlag_Node0_action --> E_SetExportPrearrivalFlag S_SetExportPrearrivalFlag --> N_SetExportPrearrivalFlag_Node0 N_SetExportPrearrivalFlag_Node0 -- No --> E_SetExportPrearrivalFlag
pre-arrival requirements"}:::decision N_SetExportPrearrivalFlag_Node0_action["The system sets the export
pre-arrival flag to indicate the
train is ready for export processing"]:::main N_SetExportPrearrivalFlag_Node0 -- Yes --> N_SetExportPrearrivalFlag_Node0_action N_SetExportPrearrivalFlag_Node0_action --> E_SetExportPrearrivalFlag S_SetExportPrearrivalFlag --> N_SetExportPrearrivalFlag_Node0 N_SetExportPrearrivalFlag_Node0 -- No --> E_SetExportPrearrivalFlag
File: GCX016.cbl
GIVEN:
A train is at a port that is valid for export processing
WHEN:
The system processes the export pre-arrival requirements
THEN:
The system sets the export pre-arrival flag to indicate the train is ready for export processing
β Consolidated Acceptance Criteria
- The system completes the status change process → the system creates a log entry documenting the pre-arrival status change with timestamp and train details
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogPrearrivalStatusChange(["Start Step"])
E_LogPrearrivalStatusChange(["End Step"])
N_LogPrearrivalStatusChange_Node0{"The system completes the status
change process"}:::decision N_LogPrearrivalStatusChange_Node0_action["The system creates a log entry
documenting the pre-arrival status
change with timestamp and train
details"]:::main N_LogPrearrivalStatusChange_Node0 -- Yes --> N_LogPrearrivalStatusChange_Node0_action N_LogPrearrivalStatusChange_Node0_action --> E_LogPrearrivalStatusChange S_LogPrearrivalStatusChange --> N_LogPrearrivalStatusChange_Node0 N_LogPrearrivalStatusChange_Node0 -- No --> E_LogPrearrivalStatusChange
change process"}:::decision N_LogPrearrivalStatusChange_Node0_action["The system creates a log entry
documenting the pre-arrival status
change with timestamp and train
details"]:::main N_LogPrearrivalStatusChange_Node0 -- Yes --> N_LogPrearrivalStatusChange_Node0_action N_LogPrearrivalStatusChange_Node0_action --> E_LogPrearrivalStatusChange S_LogPrearrivalStatusChange --> N_LogPrearrivalStatusChange_Node0 N_LogPrearrivalStatusChange_Node0 -- No --> E_LogPrearrivalStatusChange
File: GCX016.cbl
GIVEN:
The export pre-arrival flag has been set for a train
WHEN:
The system completes the status change process
THEN:
- The system creates a log entry documenting the pre-arrival status change with timestamp
- Train details
β Consolidated Acceptance Criteria
- The system prepares for the next processing phase → the system sets up the train record with necessary flags and data for arrival processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_PrepareforArrivalProcessing(["Start Step"])
E_PrepareforArrivalProcessing(["End Step"])
N_PrepareforArrivalProcessing_Node0{"The system prepares for the next
processing phase"}:::decision N_PrepareforArrivalProcessing_Node0_action["The system sets up the train record
with necessary flags and data for
arrival processing"]:::main N_PrepareforArrivalProcessing_Node0 -- Yes --> N_PrepareforArrivalProcessing_Node0_action N_PrepareforArrivalProcessing_Node0_action --> E_PrepareforArrivalProcessing S_PrepareforArrivalProcessing --> N_PrepareforArrivalProcessing_Node0 N_PrepareforArrivalProcessing_Node0 -- No --> E_PrepareforArrivalProcessing
processing phase"}:::decision N_PrepareforArrivalProcessing_Node0_action["The system sets up the train record
with necessary flags and data for
arrival processing"]:::main N_PrepareforArrivalProcessing_Node0 -- Yes --> N_PrepareforArrivalProcessing_Node0_action N_PrepareforArrivalProcessing_Node0_action --> E_PrepareforArrivalProcessing S_PrepareforArrivalProcessing --> N_PrepareforArrivalProcessing_Node0 N_PrepareforArrivalProcessing_Node0 -- No --> E_PrepareforArrivalProcessing
File: GCX016.cbl
GIVEN:
A train has been successfully set to pre-arrival status and logged
WHEN:
The system prepares for the next processing phase
THEN:
- The system sets up the train record with necessary flags
- Data for arrival processing
β Consolidated Acceptance Criteria
- The system processes the train not found condition → the system generates and sends an error message indicating the train was not found in the system
- The train validation fails because the train is not found in the train list database → the system generates a train not found error message and terminates AEI processing for this arrival event
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SendTrainNotFoundError(["Start Step"])
E_SendTrainNotFoundError(["End Step"])
N_SendTrainNotFoundError_Node0{"The system processes the train not
found condition"}:::decision N_SendTrainNotFoundError_Node0_action["The system generates and sends an
error message indicating the train
was not found in the system"]:::main N_SendTrainNotFoundError_Node0 -- Yes --> N_SendTrainNotFoundError_Node0_action N_SendTrainNotFoundError_Node0_action --> E_SendTrainNotFoundError S_SendTrainNotFoundError --> N_SendTrainNotFoundError_Node0 N_SendTrainNotFoundError_Node1{"The train validation fails because
the train is not found in the train
list database"}:::decision N_SendTrainNotFoundError_Node1_action["The system generates a train not
found error message and terminates
AEI processing for this arrival
event"]:::main N_SendTrainNotFoundError_Node1 -- Yes --> N_SendTrainNotFoundError_Node1_action N_SendTrainNotFoundError_Node1_action --> E_SendTrainNotFoundError N_SendTrainNotFoundError_Node0 -- No --> N_SendTrainNotFoundError_Node1 N_SendTrainNotFoundError_Node1 -- No --> E_SendTrainNotFoundError
found condition"}:::decision N_SendTrainNotFoundError_Node0_action["The system generates and sends an
error message indicating the train
was not found in the system"]:::main N_SendTrainNotFoundError_Node0 -- Yes --> N_SendTrainNotFoundError_Node0_action N_SendTrainNotFoundError_Node0_action --> E_SendTrainNotFoundError S_SendTrainNotFoundError --> N_SendTrainNotFoundError_Node0 N_SendTrainNotFoundError_Node1{"The train validation fails because
the train is not found in the train
list database"}:::decision N_SendTrainNotFoundError_Node1_action["The system generates a train not
found error message and terminates
AEI processing for this arrival
event"]:::main N_SendTrainNotFoundError_Node1 -- Yes --> N_SendTrainNotFoundError_Node1_action N_SendTrainNotFoundError_Node1_action --> E_SendTrainNotFoundError N_SendTrainNotFoundError_Node0 -- No --> N_SendTrainNotFoundError_Node1 N_SendTrainNotFoundError_Node1 -- No --> E_SendTrainNotFoundError
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
A train search in GCWTL-TRAIN-LIST returns no results
WHEN:
The system processes the train not found condition
THEN:
- The system generates
- Sends an error message indicating the train was not found in the system
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
A train arrival event (POD or AAD) is being processed
WHEN:
The train validation fails because the train is not found in the train list database
THEN:
- The system generates a train not found error message
- Terminates aei processing for this arrival event
β Consolidated Acceptance Criteria
- If the processing requirements → the system skips pre-arrival processing and proceeds to completion
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SkipPrearrivalProcessing(["Start Step"])
E_SkipPrearrivalProcessing(["End Step"])
N_SkipPrearrivalProcessing_Node0{"The system evaluates the processing
requirements"}:::decision N_SkipPrearrivalProcessing_Node0_action["The system skips pre-arrival
processing and proceeds to
completion"]:::main N_SkipPrearrivalProcessing_Node0 -- Yes --> N_SkipPrearrivalProcessing_Node0_action N_SkipPrearrivalProcessing_Node0_action --> E_SkipPrearrivalProcessing S_SkipPrearrivalProcessing --> N_SkipPrearrivalProcessing_Node0 N_SkipPrearrivalProcessing_Node0 -- No --> E_SkipPrearrivalProcessing
requirements"}:::decision N_SkipPrearrivalProcessing_Node0_action["The system skips pre-arrival
processing and proceeds to
completion"]:::main N_SkipPrearrivalProcessing_Node0 -- Yes --> N_SkipPrearrivalProcessing_Node0_action N_SkipPrearrivalProcessing_Node0_action --> E_SkipPrearrivalProcessing S_SkipPrearrivalProcessing --> N_SkipPrearrivalProcessing_Node0 N_SkipPrearrivalProcessing_Node0 -- No --> E_SkipPrearrivalProcessing
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
A train is either not an export manifest train or the port is not configured for export processing
WHEN:
The system evaluates the processing requirements
THEN:
- The system skips pre-arrival processing
- Proceeds to completion
β Consolidated Acceptance Criteria
- The system processes the M10 segment to extract port information → the train arrival port code is extracted and made available for port configuration lookup
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExtractTrainArrivalPortfromM10Segment(["Start Step"])
E_ExtractTrainArrivalPortfromM10Segment(["End Step"])
N_ExtractTrainArrivalPortfromM10Segment_Node0{"The system processes the M10
segment to extract port information"}:::decision N_ExtractTrainArrivalPortfromM10Segment_Node0_action["The train arrival port code is
extracted and made available for
port configuration lookup"]:::main N_ExtractTrainArrivalPortfromM10Segment_Node0 -- Yes --> N_ExtractTrainArrivalPortfromM10Segment_Node0_action N_ExtractTrainArrivalPortfromM10Segment_Node0_action --> E_ExtractTrainArrivalPortfromM10Segment S_ExtractTrainArrivalPortfromM10Segment --> N_ExtractTrainArrivalPortfromM10Segment_Node0 N_ExtractTrainArrivalPortfromM10Segment_Node0 -- No --> E_ExtractTrainArrivalPortfromM10Segment
segment to extract port information"}:::decision N_ExtractTrainArrivalPortfromM10Segment_Node0_action["The train arrival port code is
extracted and made available for
port configuration lookup"]:::main N_ExtractTrainArrivalPortfromM10Segment_Node0 -- Yes --> N_ExtractTrainArrivalPortfromM10Segment_Node0_action N_ExtractTrainArrivalPortfromM10Segment_Node0_action --> E_ExtractTrainArrivalPortfromM10Segment S_ExtractTrainArrivalPortfromM10Segment --> N_ExtractTrainArrivalPortfromM10Segment_Node0 N_ExtractTrainArrivalPortfromM10Segment_Node0 -- No --> E_ExtractTrainArrivalPortfromM10Segment
File: GCX016.cbl
GIVEN:
A train arrival event has been received with M10 manifest segment data
WHEN:
The system processes the M10 segment to extract port information
THEN:
- The train arrival port code is extracted
- Made available for port configuration lookup
β Consolidated Acceptance Criteria
- The system looks up the port configuration in GCSTBRT port configuration tables → the port configuration settings are retrieved and made available for export processing determination
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LookupPortConfigurationinSystemTables(["Start Step"])
E_LookupPortConfigurationinSystemTables(["End Step"])
N_LookupPortConfigurationinSystemTables_Node0{"The system looks up the port
configuration in GCSTBRT port
configuration tables"}:::decision N_LookupPortConfigurationinSystemTables_Node0_action["The port configuration settings are
retrieved and made available for
export processing determination"]:::main N_LookupPortConfigurationinSystemTables_Node0 -- Yes --> N_LookupPortConfigurationinSystemTables_Node0_action N_LookupPortConfigurationinSystemTables_Node0_action --> E_LookupPortConfigurationinSystemTables S_LookupPortConfigurationinSystemTables --> N_LookupPortConfigurationinSystemTables_Node0 N_LookupPortConfigurationinSystemTables_Node0 -- No --> E_LookupPortConfigurationinSystemTables
configuration in GCSTBRT port
configuration tables"}:::decision N_LookupPortConfigurationinSystemTables_Node0_action["The port configuration settings are
retrieved and made available for
export processing determination"]:::main N_LookupPortConfigurationinSystemTables_Node0 -- Yes --> N_LookupPortConfigurationinSystemTables_Node0_action N_LookupPortConfigurationinSystemTables_Node0_action --> E_LookupPortConfigurationinSystemTables S_LookupPortConfigurationinSystemTables --> N_LookupPortConfigurationinSystemTables_Node0 N_LookupPortConfigurationinSystemTables_Node0 -- No --> E_LookupPortConfigurationinSystemTables
File: GCX016.cbl
GIVEN:
A train arrival port code has been extracted from the M10 segment
WHEN:
The system looks up the port configuration in GCSTBRT port configuration tables
THEN:
- The port configuration settings are retrieved
- Made available for export processing determination
β Consolidated Acceptance Criteria
- If the port configuration for export manifest processing capability → the system determines if the port is configured for export manifest processing (Yes) or standard import processing (No)
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IsPortConfiguredforExportManifestProcessing(["Start Step"])
E_IsPortConfiguredforExportManifestProcessing(["End Step"])
N_IsPortConfiguredforExportManifestProcessing_Node0{"The system evaluates the port
configuration for export manifest
processing capability"}:::decision N_IsPortConfiguredforExportManifestProcessing_Node0_action["The system determines if the port
is configured for export manifest
processing Yes or standard import
processing No"]:::main N_IsPortConfiguredforExportManifestProcessing_Node0 -- Yes --> N_IsPortConfiguredforExportManifestProcessing_Node0_action N_IsPortConfiguredforExportManifestProcessing_Node0_action --> E_IsPortConfiguredforExportManifestProcessing S_IsPortConfiguredforExportManifestProcessing --> N_IsPortConfiguredforExportManifestProcessing_Node0 N_IsPortConfiguredforExportManifestProcessing_Node0 -- No --> E_IsPortConfiguredforExportManifestProcessing
configuration for export manifest
processing capability"}:::decision N_IsPortConfiguredforExportManifestProcessing_Node0_action["The system determines if the port
is configured for export manifest
processing Yes or standard import
processing No"]:::main N_IsPortConfiguredforExportManifestProcessing_Node0 -- Yes --> N_IsPortConfiguredforExportManifestProcessing_Node0_action N_IsPortConfiguredforExportManifestProcessing_Node0_action --> E_IsPortConfiguredforExportManifestProcessing S_IsPortConfiguredforExportManifestProcessing --> N_IsPortConfiguredforExportManifestProcessing_Node0 N_IsPortConfiguredforExportManifestProcessing_Node0 -- No --> E_IsPortConfiguredforExportManifestProcessing
File: GCX016.cbl
GIVEN:
Port configuration settings have been retrieved from system tables
WHEN:
The system evaluates the port configuration for export manifest processing capability
THEN:
The system determines if the port is configured for export manifest processing (Yes) or standard import processing (No)
β Consolidated Acceptance Criteria
- The system processes an export-enabled port → the export manifest processing flag is set to enable export-specific business rules
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetExportManifestProcessingFlag(["Start Step"])
E_SetExportManifestProcessingFlag(["End Step"])
N_SetExportManifestProcessingFlag_Node0{"The system processes an
export-enabled port"}:::decision N_SetExportManifestProcessingFlag_Node0_action["The export manifest processing flag
is set to enable export-specific
business rules"]:::main N_SetExportManifestProcessingFlag_Node0 -- Yes --> N_SetExportManifestProcessingFlag_Node0_action N_SetExportManifestProcessingFlag_Node0_action --> E_SetExportManifestProcessingFlag S_SetExportManifestProcessingFlag --> N_SetExportManifestProcessingFlag_Node0 N_SetExportManifestProcessingFlag_Node0 -- No --> E_SetExportManifestProcessingFlag
export-enabled port"}:::decision N_SetExportManifestProcessingFlag_Node0_action["The export manifest processing flag
is set to enable export-specific
business rules"]:::main N_SetExportManifestProcessingFlag_Node0 -- Yes --> N_SetExportManifestProcessingFlag_Node0_action N_SetExportManifestProcessingFlag_Node0_action --> E_SetExportManifestProcessingFlag S_SetExportManifestProcessingFlag --> N_SetExportManifestProcessingFlag_Node0 N_SetExportManifestProcessingFlag_Node0 -- No --> E_SetExportManifestProcessingFlag
File: GCX016.cbl
GIVEN:
The port is determined to be configured for export manifest processing
WHEN:
The system processes an export-enabled port
THEN:
The export manifest processing flag is set to enable export-specific business rules
β Consolidated Acceptance Criteria
- The system applies export manifest business rules → export-specific processing logic is executed including special validation and status handling
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ApplyExportManifestBusinessRules(["Start Step"])
E_ApplyExportManifestBusinessRules(["End Step"])
N_ApplyExportManifestBusinessRules_Node0{"The system applies export manifest
business rules"}:::decision N_ApplyExportManifestBusinessRules_Node0_action["Export-specific processing logic is
executed including special
validation and status handling"]:::main N_ApplyExportManifestBusinessRules_Node0 -- Yes --> N_ApplyExportManifestBusinessRules_Node0_action N_ApplyExportManifestBusinessRules_Node0_action --> E_ApplyExportManifestBusinessRules S_ApplyExportManifestBusinessRules --> N_ApplyExportManifestBusinessRules_Node0 N_ApplyExportManifestBusinessRules_Node0 -- No --> E_ApplyExportManifestBusinessRules
business rules"}:::decision N_ApplyExportManifestBusinessRules_Node0_action["Export-specific processing logic is
executed including special
validation and status handling"]:::main N_ApplyExportManifestBusinessRules_Node0 -- Yes --> N_ApplyExportManifestBusinessRules_Node0_action N_ApplyExportManifestBusinessRules_Node0_action --> E_ApplyExportManifestBusinessRules S_ApplyExportManifestBusinessRules --> N_ApplyExportManifestBusinessRules_Node0 N_ApplyExportManifestBusinessRules_Node0 -- No --> E_ApplyExportManifestBusinessRules
File: GCX016.cbl
GIVEN:
The export manifest processing flag has been set for an export-configured port
WHEN:
The system applies export manifest business rules
THEN:
- Export-specific processing logic is executed including special validation
- Status handling
β Consolidated Acceptance Criteria
- The system sets the train status for export processing → the train is assigned pre-arrival status appropriate for export manifest processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetPrearrivalStatusforExportTrains(["Start Step"])
E_SetPrearrivalStatusforExportTrains(["End Step"])
N_SetPrearrivalStatusforExportTrains_Node0{"The system sets the train status
for export processing"}:::decision N_SetPrearrivalStatusforExportTrains_Node0_action["The train is assigned pre-arrival
status appropriate for export
manifest processing"]:::main N_SetPrearrivalStatusforExportTrains_Node0 -- Yes --> N_SetPrearrivalStatusforExportTrains_Node0_action N_SetPrearrivalStatusforExportTrains_Node0_action --> E_SetPrearrivalStatusforExportTrains S_SetPrearrivalStatusforExportTrains --> N_SetPrearrivalStatusforExportTrains_Node0 N_SetPrearrivalStatusforExportTrains_Node0 -- No --> E_SetPrearrivalStatusforExportTrains
for export processing"}:::decision N_SetPrearrivalStatusforExportTrains_Node0_action["The train is assigned pre-arrival
status appropriate for export
manifest processing"]:::main N_SetPrearrivalStatusforExportTrains_Node0 -- Yes --> N_SetPrearrivalStatusforExportTrains_Node0_action N_SetPrearrivalStatusforExportTrains_Node0_action --> E_SetPrearrivalStatusforExportTrains S_SetPrearrivalStatusforExportTrains --> N_SetPrearrivalStatusforExportTrains_Node0 N_SetPrearrivalStatusforExportTrains_Node0 -- No --> E_SetPrearrivalStatusforExportTrains
File: GCX016.cbl
GIVEN:
Export manifest business rules have been applied for an export-configured port
WHEN:
The system sets the train status for export processing
THEN:
The train is assigned pre-arrival status appropriate for export manifest processing
β Consolidated Acceptance Criteria
- The system processes a standard import port → standard import processing logic is applied without export-specific rules
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ContinuewithStandardImportProcessing(["Start Step"])
E_ContinuewithStandardImportProcessing(["End Step"])
N_ContinuewithStandardImportProcessing_Node0{"The system processes a standard
import port"}:::decision N_ContinuewithStandardImportProcessing_Node0_action["Standard import processing logic is
applied without export-specific
rules"]:::main N_ContinuewithStandardImportProcessing_Node0 -- Yes --> N_ContinuewithStandardImportProcessing_Node0_action N_ContinuewithStandardImportProcessing_Node0_action --> E_ContinuewithStandardImportProcessing S_ContinuewithStandardImportProcessing --> N_ContinuewithStandardImportProcessing_Node0 N_ContinuewithStandardImportProcessing_Node0 -- No --> E_ContinuewithStandardImportProcessing
import port"}:::decision N_ContinuewithStandardImportProcessing_Node0_action["Standard import processing logic is
applied without export-specific
rules"]:::main N_ContinuewithStandardImportProcessing_Node0 -- Yes --> N_ContinuewithStandardImportProcessing_Node0_action N_ContinuewithStandardImportProcessing_Node0_action --> E_ContinuewithStandardImportProcessing S_ContinuewithStandardImportProcessing --> N_ContinuewithStandardImportProcessing_Node0 N_ContinuewithStandardImportProcessing_Node0 -- No --> E_ContinuewithStandardImportProcessing
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
The port is determined to not be configured for export manifest processing
WHEN:
The system processes a standard import port
THEN:
Standard import processing logic is applied without export-specific rules
β Consolidated Acceptance Criteria
- The system completes the port configuration evaluation → the port configuration decision is logged with relevant port and processing type information
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogPortConfigurationDecision(["Start Step"])
E_LogPortConfigurationDecision(["End Step"])
N_LogPortConfigurationDecision_Node0{"The system completes the port
configuration evaluation"}:::decision N_LogPortConfigurationDecision_Node0_action["The port configuration decision is
logged with relevant port and
processing type information"]:::main N_LogPortConfigurationDecision_Node0 -- Yes --> N_LogPortConfigurationDecision_Node0_action N_LogPortConfigurationDecision_Node0_action --> E_LogPortConfigurationDecision S_LogPortConfigurationDecision --> N_LogPortConfigurationDecision_Node0 N_LogPortConfigurationDecision_Node0 -- No --> E_LogPortConfigurationDecision
configuration evaluation"}:::decision N_LogPortConfigurationDecision_Node0_action["The port configuration decision is
logged with relevant port and
processing type information"]:::main N_LogPortConfigurationDecision_Node0 -- Yes --> N_LogPortConfigurationDecision_Node0_action N_LogPortConfigurationDecision_Node0_action --> E_LogPortConfigurationDecision S_LogPortConfigurationDecision --> N_LogPortConfigurationDecision_Node0 N_LogPortConfigurationDecision_Node0 -- No --> E_LogPortConfigurationDecision
File: GCX016.cbl
GIVEN:
The port configuration decision has been made (either export or import processing)
WHEN:
The system completes the port configuration evaluation
THEN:
- The port configuration decision is logged with relevant port
- Processing type information
β Consolidated Acceptance Criteria
- The system checks the manifest type → if manifest is import type, continue with import arrival processing, otherwise skip arrival processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IsImportManifest(["Start Step"])
E_IsImportManifest(["End Step"])
N_IsImportManifest_Node0{"The system checks the manifest type"}:::decision
N_IsImportManifest_Node0_action["If manifest is import type,
continue with import arrival
processing, otherwise skip arrival
processing"]:::main N_IsImportManifest_Node0 -- Yes --> N_IsImportManifest_Node0_action N_IsImportManifest_Node0_action --> E_IsImportManifest S_IsImportManifest --> N_IsImportManifest_Node0 N_IsImportManifest_Node0 -- No --> E_IsImportManifest
continue with import arrival
processing, otherwise skip arrival
processing"]:::main N_IsImportManifest_Node0 -- Yes --> N_IsImportManifest_Node0_action N_IsImportManifest_Node0_action --> E_IsImportManifest S_IsImportManifest --> N_IsImportManifest_Node0 N_IsImportManifest_Node0 -- No --> E_IsImportManifest
File: GCX016.cbl
GIVEN:
Train information has been successfully retrieved from the system
WHEN:
The system checks the manifest type
THEN:
If manifest is import type, continue with import arrival processing, otherwise skip arrival processing
β Consolidated Acceptance Criteria
- The system checks port configuration for import processing capability → if port is not configured for import manifests, generate port configuration error and route to system administrator
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_PortConfiguredforImportManifests(["Start Step"])
E_PortConfiguredforImportManifests(["End Step"])
N_PortConfiguredforImportManifests_Node0{"The system checks port
configuration for import processing
capability"}:::decision N_PortConfiguredforImportManifests_Node0_action["If port is not configured for
import manifests, generate port
configuration error and route to
system administrator"]:::main N_PortConfiguredforImportManifests_Node0 -- Yes --> N_PortConfiguredforImportManifests_Node0_action N_PortConfiguredforImportManifests_Node0_action --> E_PortConfiguredforImportManifests S_PortConfiguredforImportManifests --> N_PortConfiguredforImportManifests_Node0 N_PortConfiguredforImportManifests_Node0 -- No --> E_PortConfiguredforImportManifests
configuration for import processing
capability"}:::decision N_PortConfiguredforImportManifests_Node0_action["If port is not configured for
import manifests, generate port
configuration error and route to
system administrator"]:::main N_PortConfiguredforImportManifests_Node0 -- Yes --> N_PortConfiguredforImportManifests_Node0_action N_PortConfiguredforImportManifests_Node0_action --> E_PortConfiguredforImportManifests S_PortConfiguredforImportManifests --> N_PortConfiguredforImportManifests_Node0 N_PortConfiguredforImportManifests_Node0 -- No --> E_PortConfiguredforImportManifests
File: GCX016.cbl
GIVEN:
An import manifest requires arrival processing
WHEN:
The system checks port configuration for import processing capability
THEN:
- If port is not configured for import manifests, generate port configuration error
- Route to system administrator
β Consolidated Acceptance Criteria
- The arrival processing begins → update the train status to arrived in the system
- The system completes individual equipment notification processing → the system updates the train status to 'Arrived' with the corresponding arrival date and time
- The train status is updated → the train status is set to 'Arrived' and arrival timestamp is recorded
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UpdateTrainStatustoArrived(["Start Step"])
E_UpdateTrainStatustoArrived(["End Step"])
N_UpdateTrainStatustoArrived_Node0{"The arrival processing begins"}:::decision
N_UpdateTrainStatustoArrived_Node0_action["Update the train status to arrived
in the system"]:::main N_UpdateTrainStatustoArrived_Node0 -- Yes --> N_UpdateTrainStatustoArrived_Node0_action N_UpdateTrainStatustoArrived_Node0_action --> E_UpdateTrainStatustoArrived S_UpdateTrainStatustoArrived --> N_UpdateTrainStatustoArrived_Node0 N_UpdateTrainStatustoArrived_Node1{"The system completes individual
equipment notification processing"}:::decision N_UpdateTrainStatustoArrived_Node1_action["The system updates the train status
to Arrived with the corresponding
arrival date and time"]:::main N_UpdateTrainStatustoArrived_Node1 -- Yes --> N_UpdateTrainStatustoArrived_Node1_action N_UpdateTrainStatustoArrived_Node1_action --> E_UpdateTrainStatustoArrived N_UpdateTrainStatustoArrived_Node0 -- No --> N_UpdateTrainStatustoArrived_Node1 N_UpdateTrainStatustoArrived_Node2{"The train status is updated"}:::decision N_UpdateTrainStatustoArrived_Node2_action["The train status is set to Arrived
and arrival timestamp is recorded"]:::main N_UpdateTrainStatustoArrived_Node2 -- Yes --> N_UpdateTrainStatustoArrived_Node2_action N_UpdateTrainStatustoArrived_Node2_action --> E_UpdateTrainStatustoArrived N_UpdateTrainStatustoArrived_Node1 -- No --> N_UpdateTrainStatustoArrived_Node2 N_UpdateTrainStatustoArrived_Node2 -- No --> E_UpdateTrainStatustoArrived
in the system"]:::main N_UpdateTrainStatustoArrived_Node0 -- Yes --> N_UpdateTrainStatustoArrived_Node0_action N_UpdateTrainStatustoArrived_Node0_action --> E_UpdateTrainStatustoArrived S_UpdateTrainStatustoArrived --> N_UpdateTrainStatustoArrived_Node0 N_UpdateTrainStatustoArrived_Node1{"The system completes individual
equipment notification processing"}:::decision N_UpdateTrainStatustoArrived_Node1_action["The system updates the train status
to Arrived with the corresponding
arrival date and time"]:::main N_UpdateTrainStatustoArrived_Node1 -- Yes --> N_UpdateTrainStatustoArrived_Node1_action N_UpdateTrainStatustoArrived_Node1_action --> E_UpdateTrainStatustoArrived N_UpdateTrainStatustoArrived_Node0 -- No --> N_UpdateTrainStatustoArrived_Node1 N_UpdateTrainStatustoArrived_Node2{"The train status is updated"}:::decision N_UpdateTrainStatustoArrived_Node2_action["The train status is set to Arrived
and arrival timestamp is recorded"]:::main N_UpdateTrainStatustoArrived_Node2 -- Yes --> N_UpdateTrainStatustoArrived_Node2_action N_UpdateTrainStatustoArrived_Node2_action --> E_UpdateTrainStatustoArrived N_UpdateTrainStatustoArrived_Node1 -- No --> N_UpdateTrainStatustoArrived_Node2 N_UpdateTrainStatustoArrived_Node2 -- No --> E_UpdateTrainStatustoArrived
File: GCX016.cbl
GIVEN:
Train exists in system and port is configured for import processing
WHEN:
The arrival processing begins
THEN:
Update the train status to arrived in the system
File: GCX016.cbl
GIVEN:
AEI notifications have been generated for all equipment on the train
WHEN:
The system completes individual equipment notification processing
THEN:
- The system updates the train status to 'arrived' with the corresponding arrival date
- Time
File: GCX016.cbl
GIVEN:
A valid train has been found in the system for arrival processing
WHEN:
The train status is updated
THEN:
The train status is set to 'Arrived' and arrival timestamp is recorded
β Consolidated Acceptance Criteria
- The system processes the arrival timestamp → set the train arrival date and time from the V9 segment or system timestamp
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetTrainArrivalDateandTime(["Start Step"])
E_SetTrainArrivalDateandTime(["End Step"])
N_SetTrainArrivalDateandTime_Node0{"The system processes the arrival
timestamp"}:::decision N_SetTrainArrivalDateandTime_Node0_action["Set the train arrival date and time
from the V9 segment or system
timestamp"]:::main N_SetTrainArrivalDateandTime_Node0 -- Yes --> N_SetTrainArrivalDateandTime_Node0_action N_SetTrainArrivalDateandTime_Node0_action --> E_SetTrainArrivalDateandTime S_SetTrainArrivalDateandTime --> N_SetTrainArrivalDateandTime_Node0 N_SetTrainArrivalDateandTime_Node0 -- No --> E_SetTrainArrivalDateandTime
timestamp"}:::decision N_SetTrainArrivalDateandTime_Node0_action["Set the train arrival date and time
from the V9 segment or system
timestamp"]:::main N_SetTrainArrivalDateandTime_Node0 -- Yes --> N_SetTrainArrivalDateandTime_Node0_action N_SetTrainArrivalDateandTime_Node0_action --> E_SetTrainArrivalDateandTime S_SetTrainArrivalDateandTime --> N_SetTrainArrivalDateandTime_Node0 N_SetTrainArrivalDateandTime_Node0 -- No --> E_SetTrainArrivalDateandTime
File: GCX016.cbl
GIVEN:
Train status has been updated to arrived
WHEN:
The system processes the arrival timestamp
THEN:
- Set the train arrival date
- Time from the v9 segment or system timestamp
β Consolidated Acceptance Criteria
- The system processes equipment during train arrival → maintain the existing equipment hold status and do not automatically release holds
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MaintainEquipmentHoldStatus(["Start Step"])
E_MaintainEquipmentHoldStatus(["End Step"])
N_MaintainEquipmentHoldStatus_Node0{"The system processes equipment
during train arrival"}:::decision N_MaintainEquipmentHoldStatus_Node0_action["Maintain the existing equipment
hold status and do not automatically
release holds"]:::main N_MaintainEquipmentHoldStatus_Node0 -- Yes --> N_MaintainEquipmentHoldStatus_Node0_action N_MaintainEquipmentHoldStatus_Node0_action --> E_MaintainEquipmentHoldStatus S_MaintainEquipmentHoldStatus --> N_MaintainEquipmentHoldStatus_Node0 N_MaintainEquipmentHoldStatus_Node0 -- No --> E_MaintainEquipmentHoldStatus
during train arrival"}:::decision N_MaintainEquipmentHoldStatus_Node0_action["Maintain the existing equipment
hold status and do not automatically
release holds"]:::main N_MaintainEquipmentHoldStatus_Node0 -- Yes --> N_MaintainEquipmentHoldStatus_Node0_action N_MaintainEquipmentHoldStatus_Node0_action --> E_MaintainEquipmentHoldStatus S_MaintainEquipmentHoldStatus --> N_MaintainEquipmentHoldStatus_Node0 N_MaintainEquipmentHoldStatus_Node0 -- No --> E_MaintainEquipmentHoldStatus
File: GCX016.cbl
GIVEN:
Equipment on the arriving train has existing hold status
WHEN:
The system processes equipment during train arrival
THEN:
- Maintain the existing equipment hold status
- Do not automatically release holds
β Consolidated Acceptance Criteria
- If auto-unlock requirements → remove the train lock status to allow normal operations
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RemoveTrainLockStatus(["Start Step"])
E_RemoveTrainLockStatus(["End Step"])
N_RemoveTrainLockStatus_Node0{"The system evaluates auto-unlock
requirements"}:::decision N_RemoveTrainLockStatus_Node0_action["Remove the train lock status to
allow normal operations"]:::main N_RemoveTrainLockStatus_Node0 -- Yes --> N_RemoveTrainLockStatus_Node0_action N_RemoveTrainLockStatus_Node0_action --> E_RemoveTrainLockStatus S_RemoveTrainLockStatus --> N_RemoveTrainLockStatus_Node0 N_RemoveTrainLockStatus_Node0 -- No --> E_RemoveTrainLockStatus
requirements"}:::decision N_RemoveTrainLockStatus_Node0_action["Remove the train lock status to
allow normal operations"]:::main N_RemoveTrainLockStatus_Node0 -- Yes --> N_RemoveTrainLockStatus_Node0_action N_RemoveTrainLockStatus_Node0_action --> E_RemoveTrainLockStatus S_RemoveTrainLockStatus --> N_RemoveTrainLockStatus_Node0 N_RemoveTrainLockStatus_Node0 -- No --> E_RemoveTrainLockStatus
File: GCX016.cbl
GIVEN:
Train arrival status has been updated and auto-unlock is configured
WHEN:
The system evaluates auto-unlock requirements
THEN:
Remove the train lock status to allow normal operations
β Consolidated Acceptance Criteria
- The system processes cargo on the train → update the arrival status for all cargo records associated with the train
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UpdateCargoArrivalStatusforAllCargoonTrain(["Start Step"])
E_UpdateCargoArrivalStatusforAllCargoonTrain(["End Step"])
N_UpdateCargoArrivalStatusforAllCargoonTrain_Node0{"The system processes cargo on the
train"}:::decision N_UpdateCargoArrivalStatusforAllCargoonTrain_Node0_action["Update the arrival status for all
cargo records associated with the
train"]:::main N_UpdateCargoArrivalStatusforAllCargoonTrain_Node0 -- Yes --> N_UpdateCargoArrivalStatusforAllCargoonTrain_Node0_action N_UpdateCargoArrivalStatusforAllCargoonTrain_Node0_action --> E_UpdateCargoArrivalStatusforAllCargoonTrain S_UpdateCargoArrivalStatusforAllCargoonTrain --> N_UpdateCargoArrivalStatusforAllCargoonTrain_Node0 N_UpdateCargoArrivalStatusforAllCargoonTrain_Node0 -- No --> E_UpdateCargoArrivalStatusforAllCargoonTrain
train"}:::decision N_UpdateCargoArrivalStatusforAllCargoonTrain_Node0_action["Update the arrival status for all
cargo records associated with the
train"]:::main N_UpdateCargoArrivalStatusforAllCargoonTrain_Node0 -- Yes --> N_UpdateCargoArrivalStatusforAllCargoonTrain_Node0_action N_UpdateCargoArrivalStatusforAllCargoonTrain_Node0_action --> E_UpdateCargoArrivalStatusforAllCargoonTrain S_UpdateCargoArrivalStatusforAllCargoonTrain --> N_UpdateCargoArrivalStatusforAllCargoonTrain_Node0 N_UpdateCargoArrivalStatusforAllCargoonTrain_Node0 -- No --> E_UpdateCargoArrivalStatusforAllCargoonTrain
File: GCX016.cbl
GIVEN:
AEI arrival notification has been generated
WHEN:
The system processes cargo on the train
THEN:
Update the arrival status for all cargo records associated with the train
β Consolidated Acceptance Criteria
- The system identifies in-bond cargo on the train → set the border arrival date for all in-bond cargo to the train arrival date
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetBorderArrivalDateforInBondCargo(["Start Step"])
E_SetBorderArrivalDateforInBondCargo(["End Step"])
N_SetBorderArrivalDateforInBondCargo_Node0{"The system identifies in-bond cargo
on the train"}:::decision N_SetBorderArrivalDateforInBondCargo_Node0_action["Set the border arrival date for all
in-bond cargo to the train arrival
date"]:::main N_SetBorderArrivalDateforInBondCargo_Node0 -- Yes --> N_SetBorderArrivalDateforInBondCargo_Node0_action N_SetBorderArrivalDateforInBondCargo_Node0_action --> E_SetBorderArrivalDateforInBondCargo S_SetBorderArrivalDateforInBondCargo --> N_SetBorderArrivalDateforInBondCargo_Node0 N_SetBorderArrivalDateforInBondCargo_Node0 -- No --> E_SetBorderArrivalDateforInBondCargo
on the train"}:::decision N_SetBorderArrivalDateforInBondCargo_Node0_action["Set the border arrival date for all
in-bond cargo to the train arrival
date"]:::main N_SetBorderArrivalDateforInBondCargo_Node0 -- Yes --> N_SetBorderArrivalDateforInBondCargo_Node0_action N_SetBorderArrivalDateforInBondCargo_Node0_action --> E_SetBorderArrivalDateforInBondCargo S_SetBorderArrivalDateforInBondCargo --> N_SetBorderArrivalDateforInBondCargo_Node0 N_SetBorderArrivalDateforInBondCargo_Node0 -- No --> E_SetBorderArrivalDateforInBondCargo
File: GCX016.cbl
GIVEN:
Cargo arrival status has been updated for all cargo on train
WHEN:
The system identifies in-bond cargo on the train
THEN:
Set the border arrival date for all in-bond cargo to the train arrival date
β Consolidated Acceptance Criteria
- The system identifies cargo at final destination on the train → update the destination arrival status for cargo reaching final destination
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UpdateDestinationArrivalforFinalDestinationCargo(["Start Step"])
E_UpdateDestinationArrivalforFinalDestinationCargo(["End Step"])
N_UpdateDestinationArrivalforFinalDestinationCargo_Node0{"The system identifies cargo at
final destination on the train"}:::decision N_UpdateDestinationArrivalforFinalDestinationCargo_Node0_action["Update the destination arrival
status for cargo reaching final
destination"]:::main N_UpdateDestinationArrivalforFinalDestinationCargo_Node0 -- Yes --> N_UpdateDestinationArrivalforFinalDestinationCargo_Node0_action N_UpdateDestinationArrivalforFinalDestinationCargo_Node0_action --> E_UpdateDestinationArrivalforFinalDestinationCargo S_UpdateDestinationArrivalforFinalDestinationCargo --> N_UpdateDestinationArrivalforFinalDestinationCargo_Node0 N_UpdateDestinationArrivalforFinalDestinationCargo_Node0 -- No --> E_UpdateDestinationArrivalforFinalDestinationCargo
final destination on the train"}:::decision N_UpdateDestinationArrivalforFinalDestinationCargo_Node0_action["Update the destination arrival
status for cargo reaching final
destination"]:::main N_UpdateDestinationArrivalforFinalDestinationCargo_Node0 -- Yes --> N_UpdateDestinationArrivalforFinalDestinationCargo_Node0_action N_UpdateDestinationArrivalforFinalDestinationCargo_Node0_action --> E_UpdateDestinationArrivalforFinalDestinationCargo S_UpdateDestinationArrivalforFinalDestinationCargo --> N_UpdateDestinationArrivalforFinalDestinationCargo_Node0 N_UpdateDestinationArrivalforFinalDestinationCargo_Node0 -- No --> E_UpdateDestinationArrivalforFinalDestinationCargo
File: GCX016.cbl
GIVEN:
Border arrival date has been set for in-bond cargo
WHEN:
The system identifies cargo at final destination on the train
THEN:
Update the destination arrival status for cargo reaching final destination
β Consolidated Acceptance Criteria
- The system completes arrival processing → log the train arrival transaction with all relevant details for audit trail
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogTrainArrivalTransaction(["Start Step"])
E_LogTrainArrivalTransaction(["End Step"])
N_LogTrainArrivalTransaction_Node0{"The system completes arrival
processing"}:::decision N_LogTrainArrivalTransaction_Node0_action["Log the train arrival transaction
with all relevant details for audit
trail"]:::main N_LogTrainArrivalTransaction_Node0 -- Yes --> N_LogTrainArrivalTransaction_Node0_action N_LogTrainArrivalTransaction_Node0_action --> E_LogTrainArrivalTransaction S_LogTrainArrivalTransaction --> N_LogTrainArrivalTransaction_Node0 N_LogTrainArrivalTransaction_Node0 -- No --> E_LogTrainArrivalTransaction
processing"}:::decision N_LogTrainArrivalTransaction_Node0_action["Log the train arrival transaction
with all relevant details for audit
trail"]:::main N_LogTrainArrivalTransaction_Node0 -- Yes --> N_LogTrainArrivalTransaction_Node0_action N_LogTrainArrivalTransaction_Node0_action --> E_LogTrainArrivalTransaction S_LogTrainArrivalTransaction --> N_LogTrainArrivalTransaction_Node0 N_LogTrainArrivalTransaction_Node0 -- No --> E_LogTrainArrivalTransaction
File: GCX016.cbl
GIVEN:
All cargo arrival statuses have been updated
WHEN:
The system completes arrival processing
THEN:
Log the train arrival transaction with all relevant details for audit trail
β Consolidated Acceptance Criteria
- The system prepares confirmation notifications → send arrival confirmation message to appropriate stakeholders and systems
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SendArrivalConfirmationMessage(["Start Step"])
E_SendArrivalConfirmationMessage(["End Step"])
N_SendArrivalConfirmationMessage_Node0{"The system prepares confirmation
notifications"}:::decision N_SendArrivalConfirmationMessage_Node0_action["Send arrival confirmation message
to appropriate stakeholders and
systems"]:::main N_SendArrivalConfirmationMessage_Node0 -- Yes --> N_SendArrivalConfirmationMessage_Node0_action N_SendArrivalConfirmationMessage_Node0_action --> E_SendArrivalConfirmationMessage S_SendArrivalConfirmationMessage --> N_SendArrivalConfirmationMessage_Node0 N_SendArrivalConfirmationMessage_Node0 -- No --> E_SendArrivalConfirmationMessage
notifications"}:::decision N_SendArrivalConfirmationMessage_Node0_action["Send arrival confirmation message
to appropriate stakeholders and
systems"]:::main N_SendArrivalConfirmationMessage_Node0 -- Yes --> N_SendArrivalConfirmationMessage_Node0_action N_SendArrivalConfirmationMessage_Node0_action --> E_SendArrivalConfirmationMessage S_SendArrivalConfirmationMessage --> N_SendArrivalConfirmationMessage_Node0 N_SendArrivalConfirmationMessage_Node0 -- No --> E_SendArrivalConfirmationMessage
File: GCX016.cbl
GIVEN:
Train arrival transaction has been logged
WHEN:
The system prepares confirmation notifications
THEN:
- Send arrival confirmation message to appropriate stakeholders
- Systems
β Consolidated Acceptance Criteria
- If the disposition code in the V9 segment → the system identifies POD (Port of Discharge) or AAD (Arrived at Destination) codes as valid train arrival events and routes to appropriate processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_DispositionCode(["Start Step"])
E_DispositionCode(["End Step"])
N_DispositionCode_Node0{"The system evaluates the
disposition code in the V9 segment"}:::decision N_DispositionCode_Node0_action["The system identifies POD Port of
Discharge or AAD Arrived at
Destination codes as valid train
arrival events and routes to
appropriate processing"]:::main N_DispositionCode_Node0 -- Yes --> N_DispositionCode_Node0_action N_DispositionCode_Node0_action --> E_DispositionCode S_DispositionCode --> N_DispositionCode_Node0 N_DispositionCode_Node0 -- No --> E_DispositionCode
disposition code in the V9 segment"}:::decision N_DispositionCode_Node0_action["The system identifies POD Port of
Discharge or AAD Arrived at
Destination codes as valid train
arrival events and routes to
appropriate processing"]:::main N_DispositionCode_Node0 -- Yes --> N_DispositionCode_Node0_action N_DispositionCode_Node0_action --> E_DispositionCode S_DispositionCode --> N_DispositionCode_Node0 N_DispositionCode_Node0 -- No --> E_DispositionCode
File: GCX016.cbl
GIVEN:
A V9 event segment is received for train arrival processing
WHEN:
The system evaluates the disposition code in the V9 segment
THEN:
- The system identifies pod (port of discharge) or aad (arrived at destination) codes as valid train arrival events
- Routes to appropriate processing
β Consolidated Acceptance Criteria
- The system processes the train for AEI notification generation → the system retrieves the complete equipment list associated with the train from the equipment records database
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GetTrainEquipmentList(["Start Step"])
E_GetTrainEquipmentList(["End Step"])
N_GetTrainEquipmentList_Node0{"The system processes the train for
AEI notification generation"}:::decision N_GetTrainEquipmentList_Node0_action["The system retrieves the complete
equipment list associated with the
train from the equipment records
database"]:::main N_GetTrainEquipmentList_Node0 -- Yes --> N_GetTrainEquipmentList_Node0_action N_GetTrainEquipmentList_Node0_action --> E_GetTrainEquipmentList S_GetTrainEquipmentList --> N_GetTrainEquipmentList_Node0 N_GetTrainEquipmentList_Node0 -- No --> E_GetTrainEquipmentList
AEI notification generation"}:::decision N_GetTrainEquipmentList_Node0_action["The system retrieves the complete
equipment list associated with the
train from the equipment records
database"]:::main N_GetTrainEquipmentList_Node0 -- Yes --> N_GetTrainEquipmentList_Node0_action N_GetTrainEquipmentList_Node0_action --> E_GetTrainEquipmentList S_GetTrainEquipmentList --> N_GetTrainEquipmentList_Node0 N_GetTrainEquipmentList_Node0 -- No --> E_GetTrainEquipmentList
File: GCX016.cbl
GIVEN:
A valid train has been confirmed as arrived (POD or AAD)
WHEN:
The system processes the train for AEI notification generation
THEN:
The system retrieves the complete equipment list associated with the train from the equipment records database
β Consolidated Acceptance Criteria
- The system processes each individual equipment/car on the train → the system generates an AEI notification including car ID, equipment details, arrival date and time for each piece of equipment
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GenerateAEIEquipmentNotification(["Start Step"])
E_GenerateAEIEquipmentNotification(["End Step"])
N_GenerateAEIEquipmentNotification_Node0{"The system processes each
individual equipmentcar on the train"}:::decision N_GenerateAEIEquipmentNotification_Node0_action["The system generates an AEI
notification including car ID,
equipment details, arrival date and
time for each piece of equipment"]:::main N_GenerateAEIEquipmentNotification_Node0 -- Yes --> N_GenerateAEIEquipmentNotification_Node0_action N_GenerateAEIEquipmentNotification_Node0_action --> E_GenerateAEIEquipmentNotification S_GenerateAEIEquipmentNotification --> N_GenerateAEIEquipmentNotification_Node0 N_GenerateAEIEquipmentNotification_Node0 -- No --> E_GenerateAEIEquipmentNotification
individual equipmentcar on the train"}:::decision N_GenerateAEIEquipmentNotification_Node0_action["The system generates an AEI
notification including car ID,
equipment details, arrival date and
time for each piece of equipment"]:::main N_GenerateAEIEquipmentNotification_Node0 -- Yes --> N_GenerateAEIEquipmentNotification_Node0_action N_GenerateAEIEquipmentNotification_Node0_action --> E_GenerateAEIEquipmentNotification S_GenerateAEIEquipmentNotification --> N_GenerateAEIEquipmentNotification_Node0 N_GenerateAEIEquipmentNotification_Node0 -- No --> E_GenerateAEIEquipmentNotification
File: GCX016.cbl
GIVEN:
A train's equipment list has been retrieved and train arrival is confirmed
WHEN:
The system processes each individual equipment/car on the train
THEN:
- The system generates an aei notification including car id, equipment details, arrival date
- Time for each piece of equipment
β Consolidated Acceptance Criteria
- The system is ready to distribute the notifications → the system sends the AEI notifications to designated external AEI systems for equipment tracking and monitoring
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SendAEINotificationtoSystems(["Start Step"])
E_SendAEINotificationtoSystems(["End Step"])
N_SendAEINotificationtoSystems_Node0{"The system is ready to distribute
the notifications"}:::decision N_SendAEINotificationtoSystems_Node0_action["The system sends the AEI
notifications to designated external
AEI systems for equipment tracking
and monitoring"]:::main N_SendAEINotificationtoSystems_Node0 -- Yes --> N_SendAEINotificationtoSystems_Node0_action N_SendAEINotificationtoSystems_Node0_action --> E_SendAEINotificationtoSystems S_SendAEINotificationtoSystems --> N_SendAEINotificationtoSystems_Node0 N_SendAEINotificationtoSystems_Node0 -- No --> E_SendAEINotificationtoSystems
the notifications"}:::decision N_SendAEINotificationtoSystems_Node0_action["The system sends the AEI
notifications to designated external
AEI systems for equipment tracking
and monitoring"]:::main N_SendAEINotificationtoSystems_Node0 -- Yes --> N_SendAEINotificationtoSystems_Node0_action N_SendAEINotificationtoSystems_Node0_action --> E_SendAEINotificationtoSystems S_SendAEINotificationtoSystems --> N_SendAEINotificationtoSystems_Node0 N_SendAEINotificationtoSystems_Node0 -- No --> E_SendAEINotificationtoSystems
File: GCX016.cbl
GIVEN:
AEI notifications have been generated with complete equipment details and arrival information
WHEN:
The system is ready to distribute the notifications
THEN:
- The system sends the aei notifications to designated external aei systems for equipment tracking
- Monitoring
β Consolidated Acceptance Criteria
- The system completes the notification transmission process → the system logs the AEI notification activity including train ID, equipment details, notification timestamp, and transmission status
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogAEINotificationActivity(["Start Step"])
E_LogAEINotificationActivity(["End Step"])
N_LogAEINotificationActivity_Node0{"The system completes the
notification transmission process"}:::decision N_LogAEINotificationActivity_Node0_action["The system logs the AEI
notification activity including
train ID, equipment details,
notification timestamp, and
transmission status"]:::main N_LogAEINotificationActivity_Node0 -- Yes --> N_LogAEINotificationActivity_Node0_action N_LogAEINotificationActivity_Node0_action --> E_LogAEINotificationActivity S_LogAEINotificationActivity --> N_LogAEINotificationActivity_Node0 N_LogAEINotificationActivity_Node0 -- No --> E_LogAEINotificationActivity
notification transmission process"}:::decision N_LogAEINotificationActivity_Node0_action["The system logs the AEI
notification activity including
train ID, equipment details,
notification timestamp, and
transmission status"]:::main N_LogAEINotificationActivity_Node0 -- Yes --> N_LogAEINotificationActivity_Node0_action N_LogAEINotificationActivity_Node0_action --> E_LogAEINotificationActivity S_LogAEINotificationActivity --> N_LogAEINotificationActivity_Node0 N_LogAEINotificationActivity_Node0 -- No --> E_LogAEINotificationActivity
File: GCX016.cbl
GIVEN:
AEI notifications have been successfully transmitted to external systems
WHEN:
The system completes the notification transmission process
THEN:
The system logs the AEI notification activity including train ID, equipment details, notification timestamp, and transmission status
β Consolidated Acceptance Criteria
- The system completes processing for one piece of equipment → if more equipment exists on the train, continue processing the next equipment; if no more equipment, complete the AEI train arrival process
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MoreEquipment(["Start Step"])
E_MoreEquipment(["End Step"])
N_MoreEquipment_Node0{"The system completes processing for
one piece of equipment"}:::decision N_MoreEquipment_Node0_action["If more equipment exists on the
train, continue processing the next
equipment if no more equipment,
complete the AEI train arrival
process"]:::main N_MoreEquipment_Node0 -- Yes --> N_MoreEquipment_Node0_action N_MoreEquipment_Node0_action --> E_MoreEquipment S_MoreEquipment --> N_MoreEquipment_Node0 N_MoreEquipment_Node0 -- No --> E_MoreEquipment
one piece of equipment"}:::decision N_MoreEquipment_Node0_action["If more equipment exists on the
train, continue processing the next
equipment if no more equipment,
complete the AEI train arrival
process"]:::main N_MoreEquipment_Node0 -- Yes --> N_MoreEquipment_Node0_action N_MoreEquipment_Node0_action --> E_MoreEquipment S_MoreEquipment --> N_MoreEquipment_Node0 N_MoreEquipment_Node0 -- No --> E_MoreEquipment
File: GCX016.cbl
GIVEN:
The system is processing equipment on an arrived train for AEI notifications
WHEN:
The system completes processing for one piece of equipment
THEN:
If more equipment exists on the train, continue processing the next equipment; if no more equipment, complete the AEI train arrival process
β Consolidated Acceptance Criteria
- The system processes the V9 segment for event details → the train arrival event is identified and flagged for processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_TrainArrivalEventDetected(["Start Step"])
E_TrainArrivalEventDetected(["End Step"])
N_TrainArrivalEventDetected_Node0{"The system processes the V9 segment
for event details"}:::decision N_TrainArrivalEventDetected_Node0_action["The train arrival event is
identified and flagged for
processing"]:::main N_TrainArrivalEventDetected_Node0 -- Yes --> N_TrainArrivalEventDetected_Node0_action N_TrainArrivalEventDetected_Node0_action --> E_TrainArrivalEventDetected S_TrainArrivalEventDetected --> N_TrainArrivalEventDetected_Node0 N_TrainArrivalEventDetected_Node0 -- No --> E_TrainArrivalEventDetected
for event details"}:::decision N_TrainArrivalEventDetected_Node0_action["The train arrival event is
identified and flagged for
processing"]:::main N_TrainArrivalEventDetected_Node0 -- Yes --> N_TrainArrivalEventDetected_Node0_action N_TrainArrivalEventDetected_Node0_action --> E_TrainArrivalEventDetected S_TrainArrivalEventDetected --> N_TrainArrivalEventDetected_Node0 N_TrainArrivalEventDetected_Node0 -- No --> E_TrainArrivalEventDetected
File: GCX016.cbl
GIVEN:
A V9 event segment is received in the message queue
WHEN:
The system processes the V9 segment for event details
THEN:
- The train arrival event is identified
- Flagged for processing
β Consolidated Acceptance Criteria
- The disposition code is evaluated for arrival processing → the system determines if it is POD (Proof of Delivery) or AAD (Arrival at Destination) event
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CheckDispositionCode(["Start Step"])
E_CheckDispositionCode(["End Step"])
N_CheckDispositionCode_Node0{"The disposition code is evaluated
for arrival processing"}:::decision N_CheckDispositionCode_Node0_action["The system determines if it is POD
Proof of Delivery or AAD Arrival at
Destination event"]:::main N_CheckDispositionCode_Node0 -- Yes --> N_CheckDispositionCode_Node0_action N_CheckDispositionCode_Node0_action --> E_CheckDispositionCode S_CheckDispositionCode --> N_CheckDispositionCode_Node0 N_CheckDispositionCode_Node0 -- No --> E_CheckDispositionCode
for arrival processing"}:::decision N_CheckDispositionCode_Node0_action["The system determines if it is POD
Proof of Delivery or AAD Arrival at
Destination event"]:::main N_CheckDispositionCode_Node0 -- Yes --> N_CheckDispositionCode_Node0_action N_CheckDispositionCode_Node0_action --> E_CheckDispositionCode S_CheckDispositionCode --> N_CheckDispositionCode_Node0 N_CheckDispositionCode_Node0 -- No --> E_CheckDispositionCode
File: GCX016.cbl
GIVEN:
A V9 event segment contains a disposition code
WHEN:
The disposition code is evaluated for arrival processing
THEN:
The system determines if it is POD (Proof of Delivery) or AAD (Arrival at Destination) event
β Consolidated Acceptance Criteria
- The POD event is processed → the system initiates train arrival processing workflow
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_PODProofofDelivery(["Start Step"])
E_PODProofofDelivery(["End Step"])
N_PODProofofDelivery_Node0{"The POD event is processed"}:::decision
N_PODProofofDelivery_Node0_action["The system initiates train arrival
processing workflow"]:::main N_PODProofofDelivery_Node0 -- Yes --> N_PODProofofDelivery_Node0_action N_PODProofofDelivery_Node0_action --> E_PODProofofDelivery S_PODProofofDelivery --> N_PODProofofDelivery_Node0 N_PODProofofDelivery_Node0 -- No --> E_PODProofofDelivery
processing workflow"]:::main N_PODProofofDelivery_Node0 -- Yes --> N_PODProofofDelivery_Node0_action N_PODProofofDelivery_Node0_action --> E_PODProofofDelivery S_PODProofofDelivery --> N_PODProofofDelivery_Node0 N_PODProofofDelivery_Node0 -- No --> E_PODProofofDelivery
File: GCX016.cbl
GIVEN:
A V9 segment has disposition code 'POD'
WHEN:
The POD event is processed
THEN:
The system initiates train arrival processing workflow
β Consolidated Acceptance Criteria
- The AAD event is processed → the system initiates train arrival processing workflow
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AADArrivalatDestination(["Start Step"])
E_AADArrivalatDestination(["End Step"])
N_AADArrivalatDestination_Node0{"The AAD event is processed"}:::decision
N_AADArrivalatDestination_Node0_action["The system initiates train arrival
processing workflow"]:::main N_AADArrivalatDestination_Node0 -- Yes --> N_AADArrivalatDestination_Node0_action N_AADArrivalatDestination_Node0_action --> E_AADArrivalatDestination S_AADArrivalatDestination --> N_AADArrivalatDestination_Node0 N_AADArrivalatDestination_Node0 -- No --> E_AADArrivalatDestination
processing workflow"]:::main N_AADArrivalatDestination_Node0 -- Yes --> N_AADArrivalatDestination_Node0_action N_AADArrivalatDestination_Node0_action --> E_AADArrivalatDestination S_AADArrivalatDestination --> N_AADArrivalatDestination_Node0 N_AADArrivalatDestination_Node0 -- No --> E_AADArrivalatDestination
File: GCX016.cbl
GIVEN:
A V9 segment has disposition code 'AAD'
WHEN:
The AAD event is processed
THEN:
The system initiates train arrival processing workflow
β Consolidated Acceptance Criteria
- The system checks the current lock status of the train → the system retrieves the current lock status from train records
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CheckCurrentTrainLockStatus(["Start Step"])
E_CheckCurrentTrainLockStatus(["End Step"])
N_CheckCurrentTrainLockStatus_Node0{"The system checks the current lock
status of the train"}:::decision N_CheckCurrentTrainLockStatus_Node0_action["The system retrieves the current
lock status from train records"]:::main N_CheckCurrentTrainLockStatus_Node0 -- Yes --> N_CheckCurrentTrainLockStatus_Node0_action N_CheckCurrentTrainLockStatus_Node0_action --> E_CheckCurrentTrainLockStatus S_CheckCurrentTrainLockStatus --> N_CheckCurrentTrainLockStatus_Node0 N_CheckCurrentTrainLockStatus_Node0 -- No --> E_CheckCurrentTrainLockStatus
status of the train"}:::decision N_CheckCurrentTrainLockStatus_Node0_action["The system retrieves the current
lock status from train records"]:::main N_CheckCurrentTrainLockStatus_Node0 -- Yes --> N_CheckCurrentTrainLockStatus_Node0_action N_CheckCurrentTrainLockStatus_Node0_action --> E_CheckCurrentTrainLockStatus S_CheckCurrentTrainLockStatus --> N_CheckCurrentTrainLockStatus_Node0 N_CheckCurrentTrainLockStatus_Node0 -- No --> E_CheckCurrentTrainLockStatus
File: GCX016.cbl
GIVEN:
A train has arrived and status has been updated to arrived
WHEN:
The system checks the current lock status of the train
THEN:
The system retrieves the current lock status from train records
β Consolidated Acceptance Criteria
- The lock status is evaluated → if train is locked, proceed with automatic unlock; if not locked, skip unlock process
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_TrainCurrentlyLocked(["Start Step"])
E_TrainCurrentlyLocked(["End Step"])
N_TrainCurrentlyLocked_Node0{"The lock status is evaluated"}:::decision
N_TrainCurrentlyLocked_Node0_action["If train is locked, proceed with
automatic unlock if not locked, skip
unlock process"]:::main N_TrainCurrentlyLocked_Node0 -- Yes --> N_TrainCurrentlyLocked_Node0_action N_TrainCurrentlyLocked_Node0_action --> E_TrainCurrentlyLocked S_TrainCurrentlyLocked --> N_TrainCurrentlyLocked_Node0 N_TrainCurrentlyLocked_Node0 -- No --> E_TrainCurrentlyLocked
automatic unlock if not locked, skip
unlock process"]:::main N_TrainCurrentlyLocked_Node0 -- Yes --> N_TrainCurrentlyLocked_Node0_action N_TrainCurrentlyLocked_Node0_action --> E_TrainCurrentlyLocked S_TrainCurrentlyLocked --> N_TrainCurrentlyLocked_Node0 N_TrainCurrentlyLocked_Node0 -- No --> E_TrainCurrentlyLocked
File: GCX016.cbl
GIVEN:
Train lock status has been retrieved
WHEN:
The lock status is evaluated
THEN:
If train is locked, proceed with automatic unlock; if not locked, skip unlock process
β Consolidated Acceptance Criteria
- The automatic unlock process is triggered → the system removes the lock restriction from the train
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AutomaticallyUnlockTrain(["Start Step"])
E_AutomaticallyUnlockTrain(["End Step"])
N_AutomaticallyUnlockTrain_Node0{"The automatic unlock process is
triggered"}:::decision N_AutomaticallyUnlockTrain_Node0_action["The system removes the lock
restriction from the train"]:::main N_AutomaticallyUnlockTrain_Node0 -- Yes --> N_AutomaticallyUnlockTrain_Node0_action N_AutomaticallyUnlockTrain_Node0_action --> E_AutomaticallyUnlockTrain S_AutomaticallyUnlockTrain --> N_AutomaticallyUnlockTrain_Node0 N_AutomaticallyUnlockTrain_Node0 -- No --> E_AutomaticallyUnlockTrain
triggered"}:::decision N_AutomaticallyUnlockTrain_Node0_action["The system removes the lock
restriction from the train"]:::main N_AutomaticallyUnlockTrain_Node0 -- Yes --> N_AutomaticallyUnlockTrain_Node0_action N_AutomaticallyUnlockTrain_Node0_action --> E_AutomaticallyUnlockTrain S_AutomaticallyUnlockTrain --> N_AutomaticallyUnlockTrain_Node0 N_AutomaticallyUnlockTrain_Node0 -- No --> E_AutomaticallyUnlockTrain
File: GCX016.cbl
GIVEN:
A train has arrived at destination and is currently in locked status
WHEN:
The automatic unlock process is triggered
THEN:
The system removes the lock restriction from the train
β Consolidated Acceptance Criteria
- The lock status is updated in the system → the train lock status is set to 'Unlocked' and timestamp is recorded
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UpdateTrainLockStatustoUnlocked(["Start Step"])
E_UpdateTrainLockStatustoUnlocked(["End Step"])
N_UpdateTrainLockStatustoUnlocked_Node0{"The lock status is updated in the
system"}:::decision N_UpdateTrainLockStatustoUnlocked_Node0_action["The train lock status is set to
Unlocked and timestamp is recorded"]:::main N_UpdateTrainLockStatustoUnlocked_Node0 -- Yes --> N_UpdateTrainLockStatustoUnlocked_Node0_action N_UpdateTrainLockStatustoUnlocked_Node0_action --> E_UpdateTrainLockStatustoUnlocked S_UpdateTrainLockStatustoUnlocked --> N_UpdateTrainLockStatustoUnlocked_Node0 N_UpdateTrainLockStatustoUnlocked_Node0 -- No --> E_UpdateTrainLockStatustoUnlocked
system"}:::decision N_UpdateTrainLockStatustoUnlocked_Node0_action["The train lock status is set to
Unlocked and timestamp is recorded"]:::main N_UpdateTrainLockStatustoUnlocked_Node0 -- Yes --> N_UpdateTrainLockStatustoUnlocked_Node0_action N_UpdateTrainLockStatustoUnlocked_Node0_action --> E_UpdateTrainLockStatustoUnlocked S_UpdateTrainLockStatustoUnlocked --> N_UpdateTrainLockStatustoUnlocked_Node0 N_UpdateTrainLockStatustoUnlocked_Node0 -- No --> E_UpdateTrainLockStatustoUnlocked
File: GCX016.cbl
GIVEN:
A train has been automatically unlocked upon arrival
WHEN:
The lock status is updated in the system
THEN:
The train lock status is set to 'Unlocked' and timestamp is recorded
β Consolidated Acceptance Criteria
- The unlock action is logged → the system records the unlock event with timestamp, train ID, and reason code
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogTrainUnlockAction(["Start Step"])
E_LogTrainUnlockAction(["End Step"])
N_LogTrainUnlockAction_Node0{"The unlock action is logged"}:::decision
N_LogTrainUnlockAction_Node0_action["The system records the unlock event
with timestamp, train ID, and reason
code"]:::main N_LogTrainUnlockAction_Node0 -- Yes --> N_LogTrainUnlockAction_Node0_action N_LogTrainUnlockAction_Node0_action --> E_LogTrainUnlockAction S_LogTrainUnlockAction --> N_LogTrainUnlockAction_Node0 N_LogTrainUnlockAction_Node0 -- No --> E_LogTrainUnlockAction
with timestamp, train ID, and reason
code"]:::main N_LogTrainUnlockAction_Node0 -- Yes --> N_LogTrainUnlockAction_Node0_action N_LogTrainUnlockAction_Node0_action --> E_LogTrainUnlockAction S_LogTrainUnlockAction --> N_LogTrainUnlockAction_Node0 N_LogTrainUnlockAction_Node0 -- No --> E_LogTrainUnlockAction
File: GCX016.cbl
GIVEN:
A train has been automatically unlocked upon arrival
WHEN:
The unlock action is logged
THEN:
The system records the unlock event with timestamp, train ID, and reason code
β Consolidated Acceptance Criteria
- The system checks the port location in the message → if port equals 'Laredo', proceed to KCSM disposition code lookup, otherwise skip KCSM processing
- The system checks the current port location → if the port equals Laredo, the system proceeds to KCSM configuration validation, otherwise it skips KCSM integration and continues with standard processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IsPortLaredo(["Start Step"])
E_IsPortLaredo(["End Step"])
N_IsPortLaredo_Node0{"The system checks the port location
in the message"}:::decision N_IsPortLaredo_Node0_action["If port equals Laredo , proceed to
KCSM disposition code lookup,
otherwise skip KCSM processing"]:::main N_IsPortLaredo_Node0 -- Yes --> N_IsPortLaredo_Node0_action N_IsPortLaredo_Node0_action --> E_IsPortLaredo S_IsPortLaredo --> N_IsPortLaredo_Node0 N_IsPortLaredo_Node1{"The system checks the current port
location"}:::decision N_IsPortLaredo_Node1_action["If the port equals Laredo, the
system proceeds to KCSM
configuration validation, otherwise
it skips KCSM integration and
continues with standard processing"]:::main N_IsPortLaredo_Node1 -- Yes --> N_IsPortLaredo_Node1_action N_IsPortLaredo_Node1_action --> E_IsPortLaredo N_IsPortLaredo_Node0 -- No --> N_IsPortLaredo_Node1 N_IsPortLaredo_Node1 -- No --> E_IsPortLaredo
in the message"}:::decision N_IsPortLaredo_Node0_action["If port equals Laredo , proceed to
KCSM disposition code lookup,
otherwise skip KCSM processing"]:::main N_IsPortLaredo_Node0 -- Yes --> N_IsPortLaredo_Node0_action N_IsPortLaredo_Node0_action --> E_IsPortLaredo S_IsPortLaredo --> N_IsPortLaredo_Node0 N_IsPortLaredo_Node1{"The system checks the current port
location"}:::decision N_IsPortLaredo_Node1_action["If the port equals Laredo, the
system proceeds to KCSM
configuration validation, otherwise
it skips KCSM integration and
continues with standard processing"]:::main N_IsPortLaredo_Node1 -- Yes --> N_IsPortLaredo_Node1_action N_IsPortLaredo_Node1_action --> E_IsPortLaredo N_IsPortLaredo_Node0 -- No --> N_IsPortLaredo_Node1 N_IsPortLaredo_Node1 -- No --> E_IsPortLaredo
File: GCX016.cbl
GIVEN:
An X4 segment with disposition code is received
WHEN:
The system checks the port location in the message
THEN:
If port equals 'Laredo', proceed to KCSM disposition code lookup, otherwise skip KCSM processing
File: GCX016.cbl
GIVEN:
The system has extracted a disposition code from an X4 segment and needs to determine processing requirements
WHEN:
The system checks the current port location
THEN:
- If the port equals laredo, the system proceeds to kcsm configuration validation, otherwise it skips kcsm integration
- Continues with standard processing
β Consolidated Acceptance Criteria
- System searches AECWRKTB table for the disposition code → return found or not found status for the disposition code in KCSM table
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_BBFA0SearchAECWRKTBTable(["Start Step"])
E_BBFA0SearchAECWRKTBTable(["End Step"])
N_BBFA0SearchAECWRKTBTable_Node0{"System searches AECWRKTB table for
the disposition code"}:::decision N_BBFA0SearchAECWRKTBTable_Node0_action["Return found or not found status
for the disposition code in KCSM
table"]:::main N_BBFA0SearchAECWRKTBTable_Node0 -- Yes --> N_BBFA0SearchAECWRKTBTable_Node0_action N_BBFA0SearchAECWRKTBTable_Node0_action --> E_BBFA0SearchAECWRKTBTable S_BBFA0SearchAECWRKTBTable --> N_BBFA0SearchAECWRKTBTable_Node0 N_BBFA0SearchAECWRKTBTable_Node0 -- No --> E_BBFA0SearchAECWRKTBTable
the disposition code"}:::decision N_BBFA0SearchAECWRKTBTable_Node0_action["Return found or not found status
for the disposition code in KCSM
table"]:::main N_BBFA0SearchAECWRKTBTable_Node0 -- Yes --> N_BBFA0SearchAECWRKTBTable_Node0_action N_BBFA0SearchAECWRKTBTable_Node0_action --> E_BBFA0SearchAECWRKTBTable S_BBFA0SearchAECWRKTBTable --> N_BBFA0SearchAECWRKTBTable_Node0 N_BBFA0SearchAECWRKTBTable_Node0 -- No --> E_BBFA0SearchAECWRKTBTable
File: GCX016.cbl
GIVEN:
Port location is Laredo and disposition code is present
WHEN:
System searches AECWRKTB table for the disposition code
THEN:
Return found or not found status for the disposition code in KCSM table
β Consolidated Acceptance Criteria
- System initiates transmission file creation process → copy the complete EDI 350 message content to the transmission file
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_BBFB0CopyEDI350toTransmissionFile(["Start Step"])
E_BBFB0CopyEDI350toTransmissionFile(["End Step"])
N_BBFB0CopyEDI350toTransmissionFile_Node0{"System initiates transmission file
creation process"}:::decision N_BBFB0CopyEDI350toTransmissionFile_Node0_action["Copy the complete EDI 350 message
content to the transmission file"]:::main N_BBFB0CopyEDI350toTransmissionFile_Node0 -- Yes --> N_BBFB0CopyEDI350toTransmissionFile_Node0_action N_BBFB0CopyEDI350toTransmissionFile_Node0_action --> E_BBFB0CopyEDI350toTransmissionFile S_BBFB0CopyEDI350toTransmissionFile --> N_BBFB0CopyEDI350toTransmissionFile_Node0 N_BBFB0CopyEDI350toTransmissionFile_Node0 -- No --> E_BBFB0CopyEDI350toTransmissionFile
creation process"}:::decision N_BBFB0CopyEDI350toTransmissionFile_Node0_action["Copy the complete EDI 350 message
content to the transmission file"]:::main N_BBFB0CopyEDI350toTransmissionFile_Node0 -- Yes --> N_BBFB0CopyEDI350toTransmissionFile_Node0_action N_BBFB0CopyEDI350toTransmissionFile_Node0_action --> E_BBFB0CopyEDI350toTransmissionFile S_BBFB0CopyEDI350toTransmissionFile --> N_BBFB0CopyEDI350toTransmissionFile_Node0 N_BBFB0CopyEDI350toTransmissionFile_Node0 -- No --> E_BBFB0CopyEDI350toTransmissionFile
File: GCX016.cbl
GIVEN:
Disposition code is found in KCSM table and requires KCSM processing
WHEN:
System initiates transmission file creation process
THEN:
Copy the complete EDI 350 message content to the transmission file
β Consolidated Acceptance Criteria
- System creates dependent transmission segments → generate A9DP transmission dependent segment with EDI message content
- The system creates transmission dependent segments → the system creates A9DP segments containing the copied EDI segment data with proper sequencing and linkage to the root segment
- The system creates dependent data structures → an A9DP transmission dependent segment is created to contain EDI segment data
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CreateTransmissionDependentSegmentA9DP(["Start Step"])
E_CreateTransmissionDependentSegmentA9DP(["End Step"])
N_CreateTransmissionDependentSegmentA9DP_Node0{"System creates dependent
transmission segments"}:::decision N_CreateTransmissionDependentSegmentA9DP_Node0_action["Generate A9DP transmission
dependent segment with EDI message
content"]:::main N_CreateTransmissionDependentSegmentA9DP_Node0 -- Yes --> N_CreateTransmissionDependentSegmentA9DP_Node0_action N_CreateTransmissionDependentSegmentA9DP_Node0_action --> E_CreateTransmissionDependentSegmentA9DP S_CreateTransmissionDependentSegmentA9DP --> N_CreateTransmissionDependentSegmentA9DP_Node0 N_CreateTransmissionDependentSegmentA9DP_Node1{"The system creates transmission
dependent segments"}:::decision N_CreateTransmissionDependentSegmentA9DP_Node1_action["The system creates A9DP segments
containing the copied EDI segment
data with proper sequencing and
linkage to the root segment"]:::main N_CreateTransmissionDependentSegmentA9DP_Node1 -- Yes --> N_CreateTransmissionDependentSegmentA9DP_Node1_action N_CreateTransmissionDependentSegmentA9DP_Node1_action --> E_CreateTransmissionDependentSegmentA9DP N_CreateTransmissionDependentSegmentA9DP_Node0 -- No --> N_CreateTransmissionDependentSegmentA9DP_Node1 N_CreateTransmissionDependentSegmentA9DP_Node2{"The system creates dependent data
structures"}:::decision N_CreateTransmissionDependentSegmentA9DP_Node2_action["An A9DP transmission dependent
segment is created to contain EDI
segment data"]:::main N_CreateTransmissionDependentSegmentA9DP_Node2 -- Yes --> N_CreateTransmissionDependentSegmentA9DP_Node2_action N_CreateTransmissionDependentSegmentA9DP_Node2_action --> E_CreateTransmissionDependentSegmentA9DP N_CreateTransmissionDependentSegmentA9DP_Node1 -- No --> N_CreateTransmissionDependentSegmentA9DP_Node2 N_CreateTransmissionDependentSegmentA9DP_Node2 -- No --> E_CreateTransmissionDependentSegmentA9DP
transmission segments"}:::decision N_CreateTransmissionDependentSegmentA9DP_Node0_action["Generate A9DP transmission
dependent segment with EDI message
content"]:::main N_CreateTransmissionDependentSegmentA9DP_Node0 -- Yes --> N_CreateTransmissionDependentSegmentA9DP_Node0_action N_CreateTransmissionDependentSegmentA9DP_Node0_action --> E_CreateTransmissionDependentSegmentA9DP S_CreateTransmissionDependentSegmentA9DP --> N_CreateTransmissionDependentSegmentA9DP_Node0 N_CreateTransmissionDependentSegmentA9DP_Node1{"The system creates transmission
dependent segments"}:::decision N_CreateTransmissionDependentSegmentA9DP_Node1_action["The system creates A9DP segments
containing the copied EDI segment
data with proper sequencing and
linkage to the root segment"]:::main N_CreateTransmissionDependentSegmentA9DP_Node1 -- Yes --> N_CreateTransmissionDependentSegmentA9DP_Node1_action N_CreateTransmissionDependentSegmentA9DP_Node1_action --> E_CreateTransmissionDependentSegmentA9DP N_CreateTransmissionDependentSegmentA9DP_Node0 -- No --> N_CreateTransmissionDependentSegmentA9DP_Node1 N_CreateTransmissionDependentSegmentA9DP_Node2{"The system creates dependent data
structures"}:::decision N_CreateTransmissionDependentSegmentA9DP_Node2_action["An A9DP transmission dependent
segment is created to contain EDI
segment data"]:::main N_CreateTransmissionDependentSegmentA9DP_Node2 -- Yes --> N_CreateTransmissionDependentSegmentA9DP_Node2_action N_CreateTransmissionDependentSegmentA9DP_Node2_action --> E_CreateTransmissionDependentSegmentA9DP N_CreateTransmissionDependentSegmentA9DP_Node1 -- No --> N_CreateTransmissionDependentSegmentA9DP_Node2 N_CreateTransmissionDependentSegmentA9DP_Node2 -- No --> E_CreateTransmissionDependentSegmentA9DP
File: GCX016.cbl
GIVEN:
A9RT transmission root segment has been created
WHEN:
System creates dependent transmission segments
THEN:
Generate A9DP transmission dependent segment with EDI message content
File: GCX016.cbl
GIVEN:
EDI 350 message segments have been copied
WHEN:
The system creates transmission dependent segments
THEN:
- The system creates a9dp segments containing the copied edi segment data with proper sequencing
- Linkage to the root segment
File: GCX016.cbl
GIVEN:
Transmission control information has been set
WHEN:
The system creates dependent data structures
THEN:
An A9DP transmission dependent segment is created to contain EDI segment data
β Consolidated Acceptance Criteria
- System completes KCSM transmission file preparation → set KCSM processing flag to indicate successful KCSM integration completion
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetKCSMProcessingFlag(["Start Step"])
E_SetKCSMProcessingFlag(["End Step"])
N_SetKCSMProcessingFlag_Node0{"System completes KCSM transmission
file preparation"}:::decision N_SetKCSMProcessingFlag_Node0_action["Set KCSM processing flag to
indicate successful KCSM integration
completion"]:::main N_SetKCSMProcessingFlag_Node0 -- Yes --> N_SetKCSMProcessingFlag_Node0_action N_SetKCSMProcessingFlag_Node0_action --> E_SetKCSMProcessingFlag S_SetKCSMProcessingFlag --> N_SetKCSMProcessingFlag_Node0 N_SetKCSMProcessingFlag_Node0 -- No --> E_SetKCSMProcessingFlag
file preparation"}:::decision N_SetKCSMProcessingFlag_Node0_action["Set KCSM processing flag to
indicate successful KCSM integration
completion"]:::main N_SetKCSMProcessingFlag_Node0 -- Yes --> N_SetKCSMProcessingFlag_Node0_action N_SetKCSMProcessingFlag_Node0_action --> E_SetKCSMProcessingFlag S_SetKCSMProcessingFlag --> N_SetKCSMProcessingFlag_Node0 N_SetKCSMProcessingFlag_Node0 -- No --> E_SetKCSMProcessingFlag
File: GCX016.cbl
GIVEN:
Transmission segments A9RT and A9DP have been successfully created
WHEN:
System completes KCSM transmission file preparation
THEN:
Set KCSM processing flag to indicate successful KCSM integration completion
β Consolidated Acceptance Criteria
- The system searches AECWRKTB table for the disposition code configuration → the system returns whether KCSM processing is required for this disposition code
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_QueryAECWRKTBDB2Table(["Start Step"])
E_QueryAECWRKTBDB2Table(["End Step"])
N_QueryAECWRKTBDB2Table_Node0{"The system searches AECWRKTB table
for the disposition code
configuration"}:::decision N_QueryAECWRKTBDB2Table_Node0_action["The system returns whether KCSM
processing is required for this
disposition code"]:::main N_QueryAECWRKTBDB2Table_Node0 -- Yes --> N_QueryAECWRKTBDB2Table_Node0_action N_QueryAECWRKTBDB2Table_Node0_action --> E_QueryAECWRKTBDB2Table S_QueryAECWRKTBDB2Table --> N_QueryAECWRKTBDB2Table_Node0 N_QueryAECWRKTBDB2Table_Node0 -- No --> E_QueryAECWRKTBDB2Table
for the disposition code
configuration"}:::decision N_QueryAECWRKTBDB2Table_Node0_action["The system returns whether KCSM
processing is required for this
disposition code"]:::main N_QueryAECWRKTBDB2Table_Node0 -- Yes --> N_QueryAECWRKTBDB2Table_Node0_action N_QueryAECWRKTBDB2Table_Node0_action --> E_QueryAECWRKTBDB2Table S_QueryAECWRKTBDB2Table --> N_QueryAECWRKTBDB2Table_Node0 N_QueryAECWRKTBDB2Table_Node0 -- No --> E_QueryAECWRKTBDB2Table
File: GCX016.cbl
GIVEN:
A disposition code is received from X4 segment
WHEN:
The system searches AECWRKTB table for the disposition code configuration
THEN:
The system returns whether KCSM processing is required for this disposition code
β Consolidated Acceptance Criteria
- The disposition code is found in the AECWRKTB configuration table → the KCSM processing flag is set to YES to enable special KCSM processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetKCSMProcessingFlagYES(["Start Step"])
E_SetKCSMProcessingFlagYES(["End Step"])
N_SetKCSMProcessingFlagYES_Node0{"The disposition code is found in
the AECWRKTB configuration table"}:::decision N_SetKCSMProcessingFlagYES_Node0_action["The KCSM processing flag is set to
YES to enable special KCSM
processing"]:::main N_SetKCSMProcessingFlagYES_Node0 -- Yes --> N_SetKCSMProcessingFlagYES_Node0_action N_SetKCSMProcessingFlagYES_Node0_action --> E_SetKCSMProcessingFlagYES S_SetKCSMProcessingFlagYES --> N_SetKCSMProcessingFlagYES_Node0 N_SetKCSMProcessingFlagYES_Node0 -- No --> E_SetKCSMProcessingFlagYES
the AECWRKTB configuration table"}:::decision N_SetKCSMProcessingFlagYES_Node0_action["The KCSM processing flag is set to
YES to enable special KCSM
processing"]:::main N_SetKCSMProcessingFlagYES_Node0 -- Yes --> N_SetKCSMProcessingFlagYES_Node0_action N_SetKCSMProcessingFlagYES_Node0_action --> E_SetKCSMProcessingFlagYES S_SetKCSMProcessingFlagYES --> N_SetKCSMProcessingFlagYES_Node0 N_SetKCSMProcessingFlagYES_Node0 -- No --> E_SetKCSMProcessingFlagYES
File: GCX016.cbl
GIVEN:
A disposition code search is performed in AECWRKTB table
WHEN:
The disposition code is found in the AECWRKTB configuration table
THEN:
The KCSM processing flag is set to YES to enable special KCSM processing
β Consolidated Acceptance Criteria
- The disposition code is not found in the AECWRKTB configuration table → the KCSM processing flag is set to NO to disable KCSM processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetKCSMProcessingFlagNO(["Start Step"])
E_SetKCSMProcessingFlagNO(["End Step"])
N_SetKCSMProcessingFlagNO_Node0{"The disposition code is not found
in the AECWRKTB configuration table"}:::decision N_SetKCSMProcessingFlagNO_Node0_action["The KCSM processing flag is set to
NO to disable KCSM processing"]:::main N_SetKCSMProcessingFlagNO_Node0 -- Yes --> N_SetKCSMProcessingFlagNO_Node0_action N_SetKCSMProcessingFlagNO_Node0_action --> E_SetKCSMProcessingFlagNO S_SetKCSMProcessingFlagNO --> N_SetKCSMProcessingFlagNO_Node0 N_SetKCSMProcessingFlagNO_Node0 -- No --> E_SetKCSMProcessingFlagNO
in the AECWRKTB configuration table"}:::decision N_SetKCSMProcessingFlagNO_Node0_action["The KCSM processing flag is set to
NO to disable KCSM processing"]:::main N_SetKCSMProcessingFlagNO_Node0 -- Yes --> N_SetKCSMProcessingFlagNO_Node0_action N_SetKCSMProcessingFlagNO_Node0_action --> E_SetKCSMProcessingFlagNO S_SetKCSMProcessingFlagNO --> N_SetKCSMProcessingFlagNO_Node0 N_SetKCSMProcessingFlagNO_Node0 -- No --> E_SetKCSMProcessingFlagNO
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
A disposition code search is performed in AECWRKTB table
WHEN:
The disposition code is not found in the AECWRKTB configuration table
THEN:
The KCSM processing flag is set to NO to disable KCSM processing
β Consolidated Acceptance Criteria
- The system prepares to search AECWRKTB table → the disposition code is formatted into the proper search key structure for table lookup
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_FormatSearchKeywithDispositionCode(["Start Step"])
E_FormatSearchKeywithDispositionCode(["End Step"])
N_FormatSearchKeywithDispositionCode_Node0{"The system prepares to search
AECWRKTB table"}:::decision N_FormatSearchKeywithDispositionCode_Node0_action["The disposition code is formatted
into the proper search key structure
for table lookup"]:::main N_FormatSearchKeywithDispositionCode_Node0 -- Yes --> N_FormatSearchKeywithDispositionCode_Node0_action N_FormatSearchKeywithDispositionCode_Node0_action --> E_FormatSearchKeywithDispositionCode S_FormatSearchKeywithDispositionCode --> N_FormatSearchKeywithDispositionCode_Node0 N_FormatSearchKeywithDispositionCode_Node0 -- No --> E_FormatSearchKeywithDispositionCode
AECWRKTB table"}:::decision N_FormatSearchKeywithDispositionCode_Node0_action["The disposition code is formatted
into the proper search key structure
for table lookup"]:::main N_FormatSearchKeywithDispositionCode_Node0 -- Yes --> N_FormatSearchKeywithDispositionCode_Node0_action N_FormatSearchKeywithDispositionCode_Node0_action --> E_FormatSearchKeywithDispositionCode S_FormatSearchKeywithDispositionCode --> N_FormatSearchKeywithDispositionCode_Node0 N_FormatSearchKeywithDispositionCode_Node0 -- No --> E_FormatSearchKeywithDispositionCode
File: GCX016.cbl
GIVEN:
A disposition code is received from X4 segment
WHEN:
The system prepares to search AECWRKTB table
THEN:
The disposition code is formatted into the proper search key structure for table lookup
β Consolidated Acceptance Criteria
- The system checks the AECWRKTB KCSM configuration table for the disposition code → the system determines if KCSM processing is required based on the configuration entry
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CheckifKCSMProcessingRequired(["Start Step"])
E_CheckifKCSMProcessingRequired(["End Step"])
N_CheckifKCSMProcessingRequired_Node0{"The system checks the AECWRKTB KCSM
configuration table for the
disposition code"}:::decision N_CheckifKCSMProcessingRequired_Node0_action["The system determines if KCSM
processing is required based on the
configuration entry"]:::main N_CheckifKCSMProcessingRequired_Node0 -- Yes --> N_CheckifKCSMProcessingRequired_Node0_action N_CheckifKCSMProcessingRequired_Node0_action --> E_CheckifKCSMProcessingRequired S_CheckifKCSMProcessingRequired --> N_CheckifKCSMProcessingRequired_Node0 N_CheckifKCSMProcessingRequired_Node0 -- No --> E_CheckifKCSMProcessingRequired
configuration table for the
disposition code"}:::decision N_CheckifKCSMProcessingRequired_Node0_action["The system determines if KCSM
processing is required based on the
configuration entry"]:::main N_CheckifKCSMProcessingRequired_Node0 -- Yes --> N_CheckifKCSMProcessingRequired_Node0_action N_CheckifKCSMProcessingRequired_Node0_action --> E_CheckifKCSMProcessingRequired S_CheckifKCSMProcessingRequired --> N_CheckifKCSMProcessingRequired_Node0 N_CheckifKCSMProcessingRequired_Node0 -- No --> E_CheckifKCSMProcessingRequired
File: GCX016.cbl
GIVEN:
An EDI 350 message with a disposition code is being processed
WHEN:
The system checks the AECWRKTB KCSM configuration table for the disposition code
THEN:
The system determines if KCSM processing is required based on the configuration entry
β Consolidated Acceptance Criteria
- The system looks up the disposition code in the KCSM configuration table → if the disposition code is found and marked for KCSM processing, proceed with EDI message copy creation, otherwise skip KCSM processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_DispositionCodeConfiguredforKCSM(["Start Step"])
E_DispositionCodeConfiguredforKCSM(["End Step"])
N_DispositionCodeConfiguredforKCSM_Node0{"The system looks up the disposition
code in the KCSM configuration table"}:::decision N_DispositionCodeConfiguredforKCSM_Node0_action["If the disposition code is found
and marked for KCSM processing,
proceed with EDI message copy
creation, otherwise skip KCSM
processing"]:::main N_DispositionCodeConfiguredforKCSM_Node0 -- Yes --> N_DispositionCodeConfiguredforKCSM_Node0_action N_DispositionCodeConfiguredforKCSM_Node0_action --> E_DispositionCodeConfiguredforKCSM S_DispositionCodeConfiguredforKCSM --> N_DispositionCodeConfiguredforKCSM_Node0 N_DispositionCodeConfiguredforKCSM_Node0 -- No --> E_DispositionCodeConfiguredforKCSM
code in the KCSM configuration table"}:::decision N_DispositionCodeConfiguredforKCSM_Node0_action["If the disposition code is found
and marked for KCSM processing,
proceed with EDI message copy
creation, otherwise skip KCSM
processing"]:::main N_DispositionCodeConfiguredforKCSM_Node0 -- Yes --> N_DispositionCodeConfiguredforKCSM_Node0_action N_DispositionCodeConfiguredforKCSM_Node0_action --> E_DispositionCodeConfiguredforKCSM S_DispositionCodeConfiguredforKCSM --> N_DispositionCodeConfiguredforKCSM_Node0 N_DispositionCodeConfiguredforKCSM_Node0 -- No --> E_DispositionCodeConfiguredforKCSM
File: GCX016.cbl
GIVEN:
A disposition code from the EDI 350 message
WHEN:
The system looks up the disposition code in the KCSM configuration table
THEN:
- If the disposition code is found
- Marked for kcsm processing, proceed with edi message copy creation, otherwise skip kcsm processing
β Consolidated Acceptance Criteria
- The system begins EDI message copy creation process → all EDI message copy variables, counters, and data structures are initialized to their default values
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_InitializeEDIMessageCopyVariables(["Start Step"])
E_InitializeEDIMessageCopyVariables(["End Step"])
N_InitializeEDIMessageCopyVariables_Node0{"The system begins EDI message copy
creation process"}:::decision N_InitializeEDIMessageCopyVariables_Node0_action["All EDI message copy variables,
counters, and data structures are
initialized to their default values"]:::main N_InitializeEDIMessageCopyVariables_Node0 -- Yes --> N_InitializeEDIMessageCopyVariables_Node0_action N_InitializeEDIMessageCopyVariables_Node0_action --> E_InitializeEDIMessageCopyVariables S_InitializeEDIMessageCopyVariables --> N_InitializeEDIMessageCopyVariables_Node0 N_InitializeEDIMessageCopyVariables_Node0 -- No --> E_InitializeEDIMessageCopyVariables
creation process"}:::decision N_InitializeEDIMessageCopyVariables_Node0_action["All EDI message copy variables,
counters, and data structures are
initialized to their default values"]:::main N_InitializeEDIMessageCopyVariables_Node0 -- Yes --> N_InitializeEDIMessageCopyVariables_Node0_action N_InitializeEDIMessageCopyVariables_Node0_action --> E_InitializeEDIMessageCopyVariables S_InitializeEDIMessageCopyVariables --> N_InitializeEDIMessageCopyVariables_Node0 N_InitializeEDIMessageCopyVariables_Node0 -- No --> E_InitializeEDIMessageCopyVariables
File: GCX016.cbl
GIVEN:
KCSM processing is required for the current message
WHEN:
The system begins EDI message copy creation process
THEN:
All EDI message copy variables, counters, and data structures are initialized to their default values
β Consolidated Acceptance Criteria
- The system creates a copy for KCSM transmission → the original message header data is copied exactly to the transmission copy maintaining all header fields and values
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CopyOriginalEDIMessageHeader(["Start Step"])
E_CopyOriginalEDIMessageHeader(["End Step"])
N_CopyOriginalEDIMessageHeader_Node0{"The system creates a copy for KCSM
transmission"}:::decision N_CopyOriginalEDIMessageHeader_Node0_action["The original message header data is
copied exactly to the transmission
copy maintaining all header fields
and values"]:::main N_CopyOriginalEDIMessageHeader_Node0 -- Yes --> N_CopyOriginalEDIMessageHeader_Node0_action N_CopyOriginalEDIMessageHeader_Node0_action --> E_CopyOriginalEDIMessageHeader S_CopyOriginalEDIMessageHeader --> N_CopyOriginalEDIMessageHeader_Node0 N_CopyOriginalEDIMessageHeader_Node0 -- No --> E_CopyOriginalEDIMessageHeader
transmission"}:::decision N_CopyOriginalEDIMessageHeader_Node0_action["The original message header data is
copied exactly to the transmission
copy maintaining all header fields
and values"]:::main N_CopyOriginalEDIMessageHeader_Node0 -- Yes --> N_CopyOriginalEDIMessageHeader_Node0_action N_CopyOriginalEDIMessageHeader_Node0_action --> E_CopyOriginalEDIMessageHeader S_CopyOriginalEDIMessageHeader --> N_CopyOriginalEDIMessageHeader_Node0 N_CopyOriginalEDIMessageHeader_Node0 -- No --> E_CopyOriginalEDIMessageHeader
File: GCX016.cbl
GIVEN:
An original EDI 350 message with header information
WHEN:
The system creates a copy for KCSM transmission
THEN:
- The original message header data is copied exactly to the transmission copy maintaining all header fields
- Values
β Consolidated Acceptance Criteria
- The system processes the message for KCSM transmission → the ST segment is copied to the transmission file with proper formatting and sequence control
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ProcessSTTransactionSetHeader(["Start Step"])
E_ProcessSTTransactionSetHeader(["End Step"])
N_ProcessSTTransactionSetHeader_Node0{"The system processes the message
for KCSM transmission"}:::decision N_ProcessSTTransactionSetHeader_Node0_action["The ST segment is copied to the
transmission file with proper
formatting and sequence control"]:::main N_ProcessSTTransactionSetHeader_Node0 -- Yes --> N_ProcessSTTransactionSetHeader_Node0_action N_ProcessSTTransactionSetHeader_Node0_action --> E_ProcessSTTransactionSetHeader S_ProcessSTTransactionSetHeader --> N_ProcessSTTransactionSetHeader_Node0 N_ProcessSTTransactionSetHeader_Node0 -- No --> E_ProcessSTTransactionSetHeader
for KCSM transmission"}:::decision N_ProcessSTTransactionSetHeader_Node0_action["The ST segment is copied to the
transmission file with proper
formatting and sequence control"]:::main N_ProcessSTTransactionSetHeader_Node0 -- Yes --> N_ProcessSTTransactionSetHeader_Node0_action N_ProcessSTTransactionSetHeader_Node0_action --> E_ProcessSTTransactionSetHeader S_ProcessSTTransactionSetHeader --> N_ProcessSTTransactionSetHeader_Node0 N_ProcessSTTransactionSetHeader_Node0 -- No --> E_ProcessSTTransactionSetHeader
File: GCX016.cbl
GIVEN:
An EDI 350 message with ST transaction set header segment
WHEN:
The system processes the message for KCSM transmission
THEN:
- The st segment is copied to the transmission file with proper formatting
- Sequence control
β Consolidated Acceptance Criteria
- The system creates KCSM transmission copy → the M10 segment with all manifest information is copied to the transmission file
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CopyM10ManifestInformationSegment(["Start Step"])
E_CopyM10ManifestInformationSegment(["End Step"])
N_CopyM10ManifestInformationSegment_Node0{"The system creates KCSM
transmission copy"}:::decision N_CopyM10ManifestInformationSegment_Node0_action["The M10 segment with all manifest
information is copied to the
transmission file"]:::main N_CopyM10ManifestInformationSegment_Node0 -- Yes --> N_CopyM10ManifestInformationSegment_Node0_action N_CopyM10ManifestInformationSegment_Node0_action --> E_CopyM10ManifestInformationSegment S_CopyM10ManifestInformationSegment --> N_CopyM10ManifestInformationSegment_Node0 N_CopyM10ManifestInformationSegment_Node0 -- No --> E_CopyM10ManifestInformationSegment
transmission copy"}:::decision N_CopyM10ManifestInformationSegment_Node0_action["The M10 segment with all manifest
information is copied to the
transmission file"]:::main N_CopyM10ManifestInformationSegment_Node0 -- Yes --> N_CopyM10ManifestInformationSegment_Node0_action N_CopyM10ManifestInformationSegment_Node0_action --> E_CopyM10ManifestInformationSegment S_CopyM10ManifestInformationSegment --> N_CopyM10ManifestInformationSegment_Node0 N_CopyM10ManifestInformationSegment_Node0 -- No --> E_CopyM10ManifestInformationSegment
File: GCX016.cbl
GIVEN:
An EDI 350 message with M10 manifest information segment
WHEN:
The system creates KCSM transmission copy
THEN:
The M10 segment with all manifest information is copied to the transmission file
β Consolidated Acceptance Criteria
- The system creates KCSM transmission copy → the P4 segment with all port information is copied to the transmission file
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CopyP4PortInformationSegment(["Start Step"])
E_CopyP4PortInformationSegment(["End Step"])
N_CopyP4PortInformationSegment_Node0{"The system creates KCSM
transmission copy"}:::decision N_CopyP4PortInformationSegment_Node0_action["The P4 segment with all port
information is copied to the
transmission file"]:::main N_CopyP4PortInformationSegment_Node0 -- Yes --> N_CopyP4PortInformationSegment_Node0_action N_CopyP4PortInformationSegment_Node0_action --> E_CopyP4PortInformationSegment S_CopyP4PortInformationSegment --> N_CopyP4PortInformationSegment_Node0 N_CopyP4PortInformationSegment_Node0 -- No --> E_CopyP4PortInformationSegment
transmission copy"}:::decision N_CopyP4PortInformationSegment_Node0_action["The P4 segment with all port
information is copied to the
transmission file"]:::main N_CopyP4PortInformationSegment_Node0 -- Yes --> N_CopyP4PortInformationSegment_Node0_action N_CopyP4PortInformationSegment_Node0_action --> E_CopyP4PortInformationSegment S_CopyP4PortInformationSegment --> N_CopyP4PortInformationSegment_Node0 N_CopyP4PortInformationSegment_Node0 -- No --> E_CopyP4PortInformationSegment
File: GCX016.cbl
GIVEN:
An EDI 350 message with P4 port information segment
WHEN:
The system creates KCSM transmission copy
THEN:
The P4 segment with all port information is copied to the transmission file
β Consolidated Acceptance Criteria
- The system creates KCSM transmission copy → the V9 segment with all event detail information is copied to the transmission file
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CopyV9EventDetailSegment(["Start Step"])
E_CopyV9EventDetailSegment(["End Step"])
N_CopyV9EventDetailSegment_Node0{"The system creates KCSM
transmission copy"}:::decision N_CopyV9EventDetailSegment_Node0_action["The V9 segment with all event
detail information is copied to the
transmission file"]:::main N_CopyV9EventDetailSegment_Node0 -- Yes --> N_CopyV9EventDetailSegment_Node0_action N_CopyV9EventDetailSegment_Node0_action --> E_CopyV9EventDetailSegment S_CopyV9EventDetailSegment --> N_CopyV9EventDetailSegment_Node0 N_CopyV9EventDetailSegment_Node0 -- No --> E_CopyV9EventDetailSegment
transmission copy"}:::decision N_CopyV9EventDetailSegment_Node0_action["The V9 segment with all event
detail information is copied to the
transmission file"]:::main N_CopyV9EventDetailSegment_Node0 -- Yes --> N_CopyV9EventDetailSegment_Node0_action N_CopyV9EventDetailSegment_Node0_action --> E_CopyV9EventDetailSegment S_CopyV9EventDetailSegment --> N_CopyV9EventDetailSegment_Node0 N_CopyV9EventDetailSegment_Node0 -- No --> E_CopyV9EventDetailSegment
File: GCX016.cbl
GIVEN:
An EDI 350 message with V9 event detail segment
WHEN:
The system creates KCSM transmission copy
THEN:
The V9 segment with all event detail information is copied to the transmission file
β Consolidated Acceptance Criteria
- If the message structure for VID segments → if VID equipment segments are present, they are processed and copied, otherwise the system continues to the next segment type
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_VIDEquipmentSegmentsPresent(["Start Step"])
E_VIDEquipmentSegmentsPresent(["End Step"])
N_VIDEquipmentSegmentsPresent_Node0{"The system evaluates the message
structure for VID segments"}:::decision N_VIDEquipmentSegmentsPresent_Node0_action["If VID equipment segments are
present, they are processed and
copied, otherwise the system
continues to the next segment type"]:::main N_VIDEquipmentSegmentsPresent_Node0 -- Yes --> N_VIDEquipmentSegmentsPresent_Node0_action N_VIDEquipmentSegmentsPresent_Node0_action --> E_VIDEquipmentSegmentsPresent S_VIDEquipmentSegmentsPresent --> N_VIDEquipmentSegmentsPresent_Node0 N_VIDEquipmentSegmentsPresent_Node0 -- No --> E_VIDEquipmentSegmentsPresent
structure for VID segments"}:::decision N_VIDEquipmentSegmentsPresent_Node0_action["If VID equipment segments are
present, they are processed and
copied, otherwise the system
continues to the next segment type"]:::main N_VIDEquipmentSegmentsPresent_Node0 -- Yes --> N_VIDEquipmentSegmentsPresent_Node0_action N_VIDEquipmentSegmentsPresent_Node0_action --> E_VIDEquipmentSegmentsPresent S_VIDEquipmentSegmentsPresent --> N_VIDEquipmentSegmentsPresent_Node0 N_VIDEquipmentSegmentsPresent_Node0 -- No --> E_VIDEquipmentSegmentsPresent
File: GCX016.cbl
GIVEN:
An EDI 350 message being processed for KCSM transmission
WHEN:
The system evaluates the message structure for VID segments
THEN:
- If vid equipment segments are present, they are processed
- Copied, otherwise the system continues to the next segment type
β Consolidated Acceptance Criteria
- The system processes VID segments for KCSM transmission → all VID equipment information is copied to the transmission file maintaining equipment details and relationships
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CopyVIDEquipmentInformation(["Start Step"])
E_CopyVIDEquipmentInformation(["End Step"])
N_CopyVIDEquipmentInformation_Node0{"The system processes VID segments
for KCSM transmission"}:::decision N_CopyVIDEquipmentInformation_Node0_action["All VID equipment information is
copied to the transmission file
maintaining equipment details and
relationships"]:::main N_CopyVIDEquipmentInformation_Node0 -- Yes --> N_CopyVIDEquipmentInformation_Node0_action N_CopyVIDEquipmentInformation_Node0_action --> E_CopyVIDEquipmentInformation S_CopyVIDEquipmentInformation --> N_CopyVIDEquipmentInformation_Node0 N_CopyVIDEquipmentInformation_Node0 -- No --> E_CopyVIDEquipmentInformation
for KCSM transmission"}:::decision N_CopyVIDEquipmentInformation_Node0_action["All VID equipment information is
copied to the transmission file
maintaining equipment details and
relationships"]:::main N_CopyVIDEquipmentInformation_Node0 -- Yes --> N_CopyVIDEquipmentInformation_Node0_action N_CopyVIDEquipmentInformation_Node0_action --> E_CopyVIDEquipmentInformation S_CopyVIDEquipmentInformation --> N_CopyVIDEquipmentInformation_Node0 N_CopyVIDEquipmentInformation_Node0 -- No --> E_CopyVIDEquipmentInformation
File: GCX016.cbl
GIVEN:
An EDI 350 message with VID equipment information segments
WHEN:
The system processes VID segments for KCSM transmission
THEN:
- All vid equipment information is copied to the transmission file maintaining equipment details
- Relationships
β Consolidated Acceptance Criteria
- The system creates KCSM transmission copy → all K1 remarks segments with their associated information are copied to the transmission file
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CopyK1RemarksSegments(["Start Step"])
E_CopyK1RemarksSegments(["End Step"])
N_CopyK1RemarksSegments_Node0{"The system creates KCSM
transmission copy"}:::decision N_CopyK1RemarksSegments_Node0_action["All K1 remarks segments with their
associated information are copied to
the transmission file"]:::main N_CopyK1RemarksSegments_Node0 -- Yes --> N_CopyK1RemarksSegments_Node0_action N_CopyK1RemarksSegments_Node0_action --> E_CopyK1RemarksSegments S_CopyK1RemarksSegments --> N_CopyK1RemarksSegments_Node0 N_CopyK1RemarksSegments_Node0 -- No --> E_CopyK1RemarksSegments
transmission copy"}:::decision N_CopyK1RemarksSegments_Node0_action["All K1 remarks segments with their
associated information are copied to
the transmission file"]:::main N_CopyK1RemarksSegments_Node0 -- Yes --> N_CopyK1RemarksSegments_Node0_action N_CopyK1RemarksSegments_Node0_action --> E_CopyK1RemarksSegments S_CopyK1RemarksSegments --> N_CopyK1RemarksSegments_Node0 N_CopyK1RemarksSegments_Node0 -- No --> E_CopyK1RemarksSegments
File: GCX016.cbl
GIVEN:
An EDI 350 message with K1 remarks segments
WHEN:
The system creates KCSM transmission copy
THEN:
All K1 remarks segments with their associated information are copied to the transmission file
β Consolidated Acceptance Criteria
- The system creates KCSM transmission copy → the X4 segment with all customs release information including disposition codes is copied to the transmission file
- The system copies customs release data segments → the system copies the X4 customs release information segment maintaining all customs data for KCSM transmission
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CopyX4CustomsReleaseInformation(["Start Step"])
E_CopyX4CustomsReleaseInformation(["End Step"])
N_CopyX4CustomsReleaseInformation_Node0{"The system creates KCSM
transmission copy"}:::decision N_CopyX4CustomsReleaseInformation_Node0_action["The X4 segment with all customs
release information including
disposition codes is copied to the
transmission file"]:::main N_CopyX4CustomsReleaseInformation_Node0 -- Yes --> N_CopyX4CustomsReleaseInformation_Node0_action N_CopyX4CustomsReleaseInformation_Node0_action --> E_CopyX4CustomsReleaseInformation S_CopyX4CustomsReleaseInformation --> N_CopyX4CustomsReleaseInformation_Node0 N_CopyX4CustomsReleaseInformation_Node1{"The system copies customs release
data segments"}:::decision N_CopyX4CustomsReleaseInformation_Node1_action["The system copies the X4 customs
release information segment
maintaining all customs data for
KCSM transmission"]:::main N_CopyX4CustomsReleaseInformation_Node1 -- Yes --> N_CopyX4CustomsReleaseInformation_Node1_action N_CopyX4CustomsReleaseInformation_Node1_action --> E_CopyX4CustomsReleaseInformation N_CopyX4CustomsReleaseInformation_Node0 -- No --> N_CopyX4CustomsReleaseInformation_Node1 N_CopyX4CustomsReleaseInformation_Node1 -- No --> E_CopyX4CustomsReleaseInformation
transmission copy"}:::decision N_CopyX4CustomsReleaseInformation_Node0_action["The X4 segment with all customs
release information including
disposition codes is copied to the
transmission file"]:::main N_CopyX4CustomsReleaseInformation_Node0 -- Yes --> N_CopyX4CustomsReleaseInformation_Node0_action N_CopyX4CustomsReleaseInformation_Node0_action --> E_CopyX4CustomsReleaseInformation S_CopyX4CustomsReleaseInformation --> N_CopyX4CustomsReleaseInformation_Node0 N_CopyX4CustomsReleaseInformation_Node1{"The system copies customs release
data segments"}:::decision N_CopyX4CustomsReleaseInformation_Node1_action["The system copies the X4 customs
release information segment
maintaining all customs data for
KCSM transmission"]:::main N_CopyX4CustomsReleaseInformation_Node1 -- Yes --> N_CopyX4CustomsReleaseInformation_Node1_action N_CopyX4CustomsReleaseInformation_Node1_action --> E_CopyX4CustomsReleaseInformation N_CopyX4CustomsReleaseInformation_Node0 -- No --> N_CopyX4CustomsReleaseInformation_Node1 N_CopyX4CustomsReleaseInformation_Node1 -- No --> E_CopyX4CustomsReleaseInformation
File: GCX016.cbl
GIVEN:
An EDI 350 message with X4 customs release information segment
WHEN:
The system creates KCSM transmission copy
THEN:
The X4 segment with all customs release information including disposition codes is copied to the transmission file
File: GCX016.cbl
GIVEN:
The V9 event details have been copied
WHEN:
The system copies customs release data segments
THEN:
The system copies the X4 customs release information segment maintaining all customs data for KCSM transmission
β Consolidated Acceptance Criteria
- The system creates KCSM transmission copy → the N7 segment with all equipment details and specifications is copied to the transmission file
- The system copies equipment data segments → the system copies the N7 equipment details segment preserving all equipment information for KCSM transmission
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CopyN7EquipmentDetails(["Start Step"])
E_CopyN7EquipmentDetails(["End Step"])
N_CopyN7EquipmentDetails_Node0{"The system creates KCSM
transmission copy"}:::decision N_CopyN7EquipmentDetails_Node0_action["The N7 segment with all equipment
details and specifications is copied
to the transmission file"]:::main N_CopyN7EquipmentDetails_Node0 -- Yes --> N_CopyN7EquipmentDetails_Node0_action N_CopyN7EquipmentDetails_Node0_action --> E_CopyN7EquipmentDetails S_CopyN7EquipmentDetails --> N_CopyN7EquipmentDetails_Node0 N_CopyN7EquipmentDetails_Node1{"The system copies equipment data
segments"}:::decision N_CopyN7EquipmentDetails_Node1_action["The system copies the N7 equipment
details segment preserving all
equipment information for KCSM
transmission"]:::main N_CopyN7EquipmentDetails_Node1 -- Yes --> N_CopyN7EquipmentDetails_Node1_action N_CopyN7EquipmentDetails_Node1_action --> E_CopyN7EquipmentDetails N_CopyN7EquipmentDetails_Node0 -- No --> N_CopyN7EquipmentDetails_Node1 N_CopyN7EquipmentDetails_Node1 -- No --> E_CopyN7EquipmentDetails
transmission copy"}:::decision N_CopyN7EquipmentDetails_Node0_action["The N7 segment with all equipment
details and specifications is copied
to the transmission file"]:::main N_CopyN7EquipmentDetails_Node0 -- Yes --> N_CopyN7EquipmentDetails_Node0_action N_CopyN7EquipmentDetails_Node0_action --> E_CopyN7EquipmentDetails S_CopyN7EquipmentDetails --> N_CopyN7EquipmentDetails_Node0 N_CopyN7EquipmentDetails_Node1{"The system copies equipment data
segments"}:::decision N_CopyN7EquipmentDetails_Node1_action["The system copies the N7 equipment
details segment preserving all
equipment information for KCSM
transmission"]:::main N_CopyN7EquipmentDetails_Node1 -- Yes --> N_CopyN7EquipmentDetails_Node1_action N_CopyN7EquipmentDetails_Node1_action --> E_CopyN7EquipmentDetails N_CopyN7EquipmentDetails_Node0 -- No --> N_CopyN7EquipmentDetails_Node1 N_CopyN7EquipmentDetails_Node1 -- No --> E_CopyN7EquipmentDetails
File: GCX016.cbl
GIVEN:
An EDI 350 message with N7 equipment details segment
WHEN:
The system creates KCSM transmission copy
THEN:
- The n7 segment with all equipment details
- Specifications is copied to the transmission file
File: GCX016.cbl
GIVEN:
The X4 customs release information has been copied
WHEN:
The system copies equipment data segments
THEN:
The system copies the N7 equipment details segment preserving all equipment information for KCSM transmission
β Consolidated Acceptance Criteria
- The system completes KCSM transmission copy creation → the SE trailer segment is copied to the transmission file with proper segment count and control number
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CopySETransactionSetTrailer(["Start Step"])
E_CopySETransactionSetTrailer(["End Step"])
N_CopySETransactionSetTrailer_Node0{"The system completes KCSM
transmission copy creation"}:::decision N_CopySETransactionSetTrailer_Node0_action["The SE trailer segment is copied to
the transmission file with proper
segment count and control number"]:::main N_CopySETransactionSetTrailer_Node0 -- Yes --> N_CopySETransactionSetTrailer_Node0_action N_CopySETransactionSetTrailer_Node0_action --> E_CopySETransactionSetTrailer S_CopySETransactionSetTrailer --> N_CopySETransactionSetTrailer_Node0 N_CopySETransactionSetTrailer_Node0 -- No --> E_CopySETransactionSetTrailer
transmission copy creation"}:::decision N_CopySETransactionSetTrailer_Node0_action["The SE trailer segment is copied to
the transmission file with proper
segment count and control number"]:::main N_CopySETransactionSetTrailer_Node0 -- Yes --> N_CopySETransactionSetTrailer_Node0_action N_CopySETransactionSetTrailer_Node0_action --> E_CopySETransactionSetTrailer S_CopySETransactionSetTrailer --> N_CopySETransactionSetTrailer_Node0 N_CopySETransactionSetTrailer_Node0 -- No --> E_CopySETransactionSetTrailer
File: GCX016.cbl
GIVEN:
An EDI 350 message with SE transaction set trailer segment
WHEN:
The system completes KCSM transmission copy creation
THEN:
- The se trailer segment is copied to the transmission file with proper segment count
- Control number
β Consolidated Acceptance Criteria
- The system formats the message for KCSM transmission → the message is formatted according to KCSM specifications with proper delimiters, segment terminators, and transmission structure
- The system formats the message for KCSM transmission → the system applies KCSM-specific formatting rules and transmission standards to the copied message
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_FormatMessageforKCSMTransmission(["Start Step"])
E_FormatMessageforKCSMTransmission(["End Step"])
N_FormatMessageforKCSMTransmission_Node0{"The system formats the message for
KCSM transmission"}:::decision N_FormatMessageforKCSMTransmission_Node0_action["The message is formatted according
to KCSM specifications with proper
delimiters, segment terminators, and
transmission structure"]:::main N_FormatMessageforKCSMTransmission_Node0 -- Yes --> N_FormatMessageforKCSMTransmission_Node0_action N_FormatMessageforKCSMTransmission_Node0_action --> E_FormatMessageforKCSMTransmission S_FormatMessageforKCSMTransmission --> N_FormatMessageforKCSMTransmission_Node0 N_FormatMessageforKCSMTransmission_Node1{"The system formats the message for
KCSM transmission"}:::decision N_FormatMessageforKCSMTransmission_Node1_action["The system applies KCSM-specific
formatting rules and transmission
standards to the copied message"]:::main N_FormatMessageforKCSMTransmission_Node1 -- Yes --> N_FormatMessageforKCSMTransmission_Node1_action N_FormatMessageforKCSMTransmission_Node1_action --> E_FormatMessageforKCSMTransmission N_FormatMessageforKCSMTransmission_Node0 -- No --> N_FormatMessageforKCSMTransmission_Node1 N_FormatMessageforKCSMTransmission_Node1 -- No --> E_FormatMessageforKCSMTransmission
KCSM transmission"}:::decision N_FormatMessageforKCSMTransmission_Node0_action["The message is formatted according
to KCSM specifications with proper
delimiters, segment terminators, and
transmission structure"]:::main N_FormatMessageforKCSMTransmission_Node0 -- Yes --> N_FormatMessageforKCSMTransmission_Node0_action N_FormatMessageforKCSMTransmission_Node0_action --> E_FormatMessageforKCSMTransmission S_FormatMessageforKCSMTransmission --> N_FormatMessageforKCSMTransmission_Node0 N_FormatMessageforKCSMTransmission_Node1{"The system formats the message for
KCSM transmission"}:::decision N_FormatMessageforKCSMTransmission_Node1_action["The system applies KCSM-specific
formatting rules and transmission
standards to the copied message"]:::main N_FormatMessageforKCSMTransmission_Node1 -- Yes --> N_FormatMessageforKCSMTransmission_Node1_action N_FormatMessageforKCSMTransmission_Node1_action --> E_FormatMessageforKCSMTransmission N_FormatMessageforKCSMTransmission_Node0 -- No --> N_FormatMessageforKCSMTransmission_Node1 N_FormatMessageforKCSMTransmission_Node1 -- No --> E_FormatMessageforKCSMTransmission
File: GCX016.cbl
GIVEN:
All EDI message segments have been copied for KCSM transmission
WHEN:
The system formats the message for KCSM transmission
THEN:
The message is formatted according to KCSM specifications with proper delimiters, segment terminators, and transmission structure
File: GCX016.cbl
GIVEN:
All EDI segments have been copied to the KCSM message structure
WHEN:
The system formats the message for KCSM transmission
THEN:
- The system applies kcsm-specific formatting rules
- Transmission standards to the copied message
β Consolidated Acceptance Criteria
- The system stores the EDI copy in the transmission file → the EDI message copy is stored in the transmission file with proper indexing and control information for KCSM retrieval
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_StoreEDICopyinTransmissionFile(["Start Step"])
E_StoreEDICopyinTransmissionFile(["End Step"])
N_StoreEDICopyinTransmissionFile_Node0{"The system stores the EDI copy in
the transmission file"}:::decision N_StoreEDICopyinTransmissionFile_Node0_action["The EDI message copy is stored in
the transmission file with proper
indexing and control information for
KCSM retrieval"]:::main N_StoreEDICopyinTransmissionFile_Node0 -- Yes --> N_StoreEDICopyinTransmissionFile_Node0_action N_StoreEDICopyinTransmissionFile_Node0_action --> E_StoreEDICopyinTransmissionFile S_StoreEDICopyinTransmissionFile --> N_StoreEDICopyinTransmissionFile_Node0 N_StoreEDICopyinTransmissionFile_Node0 -- No --> E_StoreEDICopyinTransmissionFile
the transmission file"}:::decision N_StoreEDICopyinTransmissionFile_Node0_action["The EDI message copy is stored in
the transmission file with proper
indexing and control information for
KCSM retrieval"]:::main N_StoreEDICopyinTransmissionFile_Node0 -- Yes --> N_StoreEDICopyinTransmissionFile_Node0_action N_StoreEDICopyinTransmissionFile_Node0_action --> E_StoreEDICopyinTransmissionFile S_StoreEDICopyinTransmissionFile --> N_StoreEDICopyinTransmissionFile_Node0 N_StoreEDICopyinTransmissionFile_Node0 -- No --> E_StoreEDICopyinTransmissionFile
File: GCX016.cbl
GIVEN:
Complete transmission root and dependent segments for KCSM message
WHEN:
The system stores the EDI copy in the transmission file
THEN:
- The edi message copy is stored in the transmission file with proper indexing
- Control information for kcsm retrieval
β Consolidated Acceptance Criteria
- The system completes the KCSM copy creation process → the message is marked with appropriate status indicators showing it is ready for KCSM transmission
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MarkMessageReadyforKCSMTransmission(["Start Step"])
E_MarkMessageReadyforKCSMTransmission(["End Step"])
N_MarkMessageReadyforKCSMTransmission_Node0{"The system completes the KCSM copy
creation process"}:::decision N_MarkMessageReadyforKCSMTransmission_Node0_action["The message is marked with
appropriate status indicators
showing it is ready for KCSM
transmission"]:::main N_MarkMessageReadyforKCSMTransmission_Node0 -- Yes --> N_MarkMessageReadyforKCSMTransmission_Node0_action N_MarkMessageReadyforKCSMTransmission_Node0_action --> E_MarkMessageReadyforKCSMTransmission S_MarkMessageReadyforKCSMTransmission --> N_MarkMessageReadyforKCSMTransmission_Node0 N_MarkMessageReadyforKCSMTransmission_Node0 -- No --> E_MarkMessageReadyforKCSMTransmission
creation process"}:::decision N_MarkMessageReadyforKCSMTransmission_Node0_action["The message is marked with
appropriate status indicators
showing it is ready for KCSM
transmission"]:::main N_MarkMessageReadyforKCSMTransmission_Node0 -- Yes --> N_MarkMessageReadyforKCSMTransmission_Node0_action N_MarkMessageReadyforKCSMTransmission_Node0_action --> E_MarkMessageReadyforKCSMTransmission S_MarkMessageReadyforKCSMTransmission --> N_MarkMessageReadyforKCSMTransmission_Node0 N_MarkMessageReadyforKCSMTransmission_Node0 -- No --> E_MarkMessageReadyforKCSMTransmission
File: GCX016.cbl
GIVEN:
An EDI message copy stored in the transmission file
WHEN:
The system completes the KCSM copy creation process
THEN:
The message is marked with appropriate status indicators showing it is ready for KCSM transmission
β Consolidated Acceptance Criteria
- The system performs a lookup in the AECWRKTB KCSM configuration table → the system determines if the disposition code is configured for KCSM transmission
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ValidateDispositionCodeinKCSMTable(["Start Step"])
E_ValidateDispositionCodeinKCSMTable(["End Step"])
N_ValidateDispositionCodeinKCSMTable_Node0{"The system performs a lookup in the
AECWRKTB KCSM configuration table"}:::decision N_ValidateDispositionCodeinKCSMTable_Node0_action["The system determines if the
disposition code is configured for
KCSM transmission"]:::main N_ValidateDispositionCodeinKCSMTable_Node0 -- Yes --> N_ValidateDispositionCodeinKCSMTable_Node0_action N_ValidateDispositionCodeinKCSMTable_Node0_action --> E_ValidateDispositionCodeinKCSMTable S_ValidateDispositionCodeinKCSMTable --> N_ValidateDispositionCodeinKCSMTable_Node0 N_ValidateDispositionCodeinKCSMTable_Node0 -- No --> E_ValidateDispositionCodeinKCSMTable
AECWRKTB KCSM configuration table"}:::decision N_ValidateDispositionCodeinKCSMTable_Node0_action["The system determines if the
disposition code is configured for
KCSM transmission"]:::main N_ValidateDispositionCodeinKCSMTable_Node0 -- Yes --> N_ValidateDispositionCodeinKCSMTable_Node0_action N_ValidateDispositionCodeinKCSMTable_Node0_action --> E_ValidateDispositionCodeinKCSMTable S_ValidateDispositionCodeinKCSMTable --> N_ValidateDispositionCodeinKCSMTable_Node0 N_ValidateDispositionCodeinKCSMTable_Node0 -- No --> E_ValidateDispositionCodeinKCSMTable
File: GCX016.cbl
GIVEN:
A disposition code needs to be validated for KCSM processing
WHEN:
The system performs a lookup in the AECWRKTB KCSM configuration table
THEN:
The system determines if the disposition code is configured for KCSM transmission
β Consolidated Acceptance Criteria
- If if the code is configured for KCSM processing → if configured, proceed with KCSM message copying; if not configured, skip KCSM processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CodeConfiguredforKCSM(["Start Step"])
E_CodeConfiguredforKCSM(["End Step"])
N_CodeConfiguredforKCSM_Node0{"The system evaluates if the code is
configured for KCSM processing"}:::decision N_CodeConfiguredforKCSM_Node0_action["If configured, proceed with KCSM
message copying if not configured,
skip KCSM processing"]:::main N_CodeConfiguredforKCSM_Node0 -- Yes --> N_CodeConfiguredforKCSM_Node0_action N_CodeConfiguredforKCSM_Node0_action --> E_CodeConfiguredforKCSM S_CodeConfiguredforKCSM --> N_CodeConfiguredforKCSM_Node0 N_CodeConfiguredforKCSM_Node0 -- No --> E_CodeConfiguredforKCSM
configured for KCSM processing"}:::decision N_CodeConfiguredforKCSM_Node0_action["If configured, proceed with KCSM
message copying if not configured,
skip KCSM processing"]:::main N_CodeConfiguredforKCSM_Node0 -- Yes --> N_CodeConfiguredforKCSM_Node0_action N_CodeConfiguredforKCSM_Node0_action --> E_CodeConfiguredforKCSM S_CodeConfiguredforKCSM --> N_CodeConfiguredforKCSM_Node0 N_CodeConfiguredforKCSM_Node0 -- No --> E_CodeConfiguredforKCSM
File: GCX016.cbl
GIVEN:
The disposition code has been validated against the KCSM configuration table
WHEN:
The system evaluates if the code is configured for KCSM processing
THEN:
If configured, proceed with KCSM message copying; if not configured, skip KCSM processing
β Consolidated Acceptance Criteria
- The system begins the KCSM message copying process → the system initializes all necessary structures and variables for EDI message duplication
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_InitializeEDIMessageCopyProcess(["Start Step"])
E_InitializeEDIMessageCopyProcess(["End Step"])
N_InitializeEDIMessageCopyProcess_Node0{"The system begins the KCSM message
copying process"}:::decision N_InitializeEDIMessageCopyProcess_Node0_action["The system initializes all
necessary structures and variables
for EDI message duplication"]:::main N_InitializeEDIMessageCopyProcess_Node0 -- Yes --> N_InitializeEDIMessageCopyProcess_Node0_action N_InitializeEDIMessageCopyProcess_Node0_action --> E_InitializeEDIMessageCopyProcess S_InitializeEDIMessageCopyProcess --> N_InitializeEDIMessageCopyProcess_Node0 N_InitializeEDIMessageCopyProcess_Node0 -- No --> E_InitializeEDIMessageCopyProcess
copying process"}:::decision N_InitializeEDIMessageCopyProcess_Node0_action["The system initializes all
necessary structures and variables
for EDI message duplication"]:::main N_InitializeEDIMessageCopyProcess_Node0 -- Yes --> N_InitializeEDIMessageCopyProcess_Node0_action N_InitializeEDIMessageCopyProcess_Node0_action --> E_InitializeEDIMessageCopyProcess S_InitializeEDIMessageCopyProcess --> N_InitializeEDIMessageCopyProcess_Node0 N_InitializeEDIMessageCopyProcess_Node0 -- No --> E_InitializeEDIMessageCopyProcess
File: GCX016.cbl
GIVEN:
The disposition code is configured for KCSM processing
WHEN:
The system begins the KCSM message copying process
THEN:
- The system initializes all necessary structures
- Variables for edi message duplication
β Consolidated Acceptance Criteria
- The system begins copying the original EDI 350 message → the system creates an exact structural copy of the original message for KCSM processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CopyOriginalEDI350MessageStructure(["Start Step"])
E_CopyOriginalEDI350MessageStructure(["End Step"])
N_CopyOriginalEDI350MessageStructure_Node0{"The system begins copying the
original EDI 350 message"}:::decision N_CopyOriginalEDI350MessageStructure_Node0_action["The system creates an exact
structural copy of the original
message for KCSM processing"]:::main N_CopyOriginalEDI350MessageStructure_Node0 -- Yes --> N_CopyOriginalEDI350MessageStructure_Node0_action N_CopyOriginalEDI350MessageStructure_Node0_action --> E_CopyOriginalEDI350MessageStructure S_CopyOriginalEDI350MessageStructure --> N_CopyOriginalEDI350MessageStructure_Node0 N_CopyOriginalEDI350MessageStructure_Node0 -- No --> E_CopyOriginalEDI350MessageStructure
original EDI 350 message"}:::decision N_CopyOriginalEDI350MessageStructure_Node0_action["The system creates an exact
structural copy of the original
message for KCSM processing"]:::main N_CopyOriginalEDI350MessageStructure_Node0 -- Yes --> N_CopyOriginalEDI350MessageStructure_Node0_action N_CopyOriginalEDI350MessageStructure_Node0_action --> E_CopyOriginalEDI350MessageStructure S_CopyOriginalEDI350MessageStructure --> N_CopyOriginalEDI350MessageStructure_Node0 N_CopyOriginalEDI350MessageStructure_Node0 -- No --> E_CopyOriginalEDI350MessageStructure
File: GCX016.cbl
GIVEN:
The KCSM message copy process has been initialized
WHEN:
The system begins copying the original EDI 350 message
THEN:
The system creates an exact structural copy of the original message for KCSM processing
β Consolidated Acceptance Criteria
- The system copies EDI transaction segments → the system copies the ST transaction header segment maintaining all original data for KCSM transmission
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CopySTTransactionHeader(["Start Step"])
E_CopySTTransactionHeader(["End Step"])
N_CopySTTransactionHeader_Node0{"The system copies EDI transaction
segments"}:::decision N_CopySTTransactionHeader_Node0_action["The system copies the ST
transaction header segment
maintaining all original data for
KCSM transmission"]:::main N_CopySTTransactionHeader_Node0 -- Yes --> N_CopySTTransactionHeader_Node0_action N_CopySTTransactionHeader_Node0_action --> E_CopySTTransactionHeader S_CopySTTransactionHeader --> N_CopySTTransactionHeader_Node0 N_CopySTTransactionHeader_Node0 -- No --> E_CopySTTransactionHeader
segments"}:::decision N_CopySTTransactionHeader_Node0_action["The system copies the ST
transaction header segment
maintaining all original data for
KCSM transmission"]:::main N_CopySTTransactionHeader_Node0 -- Yes --> N_CopySTTransactionHeader_Node0_action N_CopySTTransactionHeader_Node0_action --> E_CopySTTransactionHeader S_CopySTTransactionHeader --> N_CopySTTransactionHeader_Node0 N_CopySTTransactionHeader_Node0 -- No --> E_CopySTTransactionHeader
File: GCX016.cbl
GIVEN:
The transmission segments have been created
WHEN:
The system copies EDI transaction segments
THEN:
The system copies the ST transaction header segment maintaining all original data for KCSM transmission
β Consolidated Acceptance Criteria
- The system copies manifest data segments → the system copies the M10 manifest information segment preserving all manifest details for KCSM transmission
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CopyM10ManifestInformation(["Start Step"])
E_CopyM10ManifestInformation(["End Step"])
N_CopyM10ManifestInformation_Node0{"The system copies manifest data
segments"}:::decision N_CopyM10ManifestInformation_Node0_action["The system copies the M10 manifest
information segment preserving all
manifest details for KCSM
transmission"]:::main N_CopyM10ManifestInformation_Node0 -- Yes --> N_CopyM10ManifestInformation_Node0_action N_CopyM10ManifestInformation_Node0_action --> E_CopyM10ManifestInformation S_CopyM10ManifestInformation --> N_CopyM10ManifestInformation_Node0 N_CopyM10ManifestInformation_Node0 -- No --> E_CopyM10ManifestInformation
segments"}:::decision N_CopyM10ManifestInformation_Node0_action["The system copies the M10 manifest
information segment preserving all
manifest details for KCSM
transmission"]:::main N_CopyM10ManifestInformation_Node0 -- Yes --> N_CopyM10ManifestInformation_Node0_action N_CopyM10ManifestInformation_Node0_action --> E_CopyM10ManifestInformation S_CopyM10ManifestInformation --> N_CopyM10ManifestInformation_Node0 N_CopyM10ManifestInformation_Node0 -- No --> E_CopyM10ManifestInformation
File: GCX016.cbl
GIVEN:
The ST transaction header has been copied
WHEN:
The system copies manifest data segments
THEN:
The system copies the M10 manifest information segment preserving all manifest details for KCSM transmission
β Consolidated Acceptance Criteria
- The system copies port data segments → the system copies the P4 port information segment maintaining all port details for KCSM transmission
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CopyP4PortInformation(["Start Step"])
E_CopyP4PortInformation(["End Step"])
N_CopyP4PortInformation_Node0{"The system copies port data
segments"}:::decision N_CopyP4PortInformation_Node0_action["The system copies the P4 port
information segment maintaining all
port details for KCSM transmission"]:::main N_CopyP4PortInformation_Node0 -- Yes --> N_CopyP4PortInformation_Node0_action N_CopyP4PortInformation_Node0_action --> E_CopyP4PortInformation S_CopyP4PortInformation --> N_CopyP4PortInformation_Node0 N_CopyP4PortInformation_Node0 -- No --> E_CopyP4PortInformation
segments"}:::decision N_CopyP4PortInformation_Node0_action["The system copies the P4 port
information segment maintaining all
port details for KCSM transmission"]:::main N_CopyP4PortInformation_Node0 -- Yes --> N_CopyP4PortInformation_Node0_action N_CopyP4PortInformation_Node0_action --> E_CopyP4PortInformation S_CopyP4PortInformation --> N_CopyP4PortInformation_Node0 N_CopyP4PortInformation_Node0 -- No --> E_CopyP4PortInformation
File: GCX016.cbl
GIVEN:
The M10 manifest information has been copied
WHEN:
The system copies port data segments
THEN:
The system copies the P4 port information segment maintaining all port details for KCSM transmission
β Consolidated Acceptance Criteria
- The system copies event data segments → the system copies the V9 event details segment preserving all event information for KCSM transmission
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CopyV9EventDetails(["Start Step"])
E_CopyV9EventDetails(["End Step"])
N_CopyV9EventDetails_Node0{"The system copies event data
segments"}:::decision N_CopyV9EventDetails_Node0_action["The system copies the V9 event
details segment preserving all event
information for KCSM transmission"]:::main N_CopyV9EventDetails_Node0 -- Yes --> N_CopyV9EventDetails_Node0_action N_CopyV9EventDetails_Node0_action --> E_CopyV9EventDetails S_CopyV9EventDetails --> N_CopyV9EventDetails_Node0 N_CopyV9EventDetails_Node0 -- No --> E_CopyV9EventDetails
segments"}:::decision N_CopyV9EventDetails_Node0_action["The system copies the V9 event
details segment preserving all event
information for KCSM transmission"]:::main N_CopyV9EventDetails_Node0 -- Yes --> N_CopyV9EventDetails_Node0_action N_CopyV9EventDetails_Node0_action --> E_CopyV9EventDetails S_CopyV9EventDetails --> N_CopyV9EventDetails_Node0 N_CopyV9EventDetails_Node0 -- No --> E_CopyV9EventDetails
File: GCX016.cbl
GIVEN:
The P4 port information has been copied
WHEN:
The system copies event data segments
THEN:
The system copies the V9 event details segment preserving all event information for KCSM transmission
β Consolidated Acceptance Criteria
- The system copies remarks data segments → the system copies the K1 remarks segment maintaining all remark information for KCSM transmission
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CopyK1Remarks(["Start Step"])
E_CopyK1Remarks(["End Step"])
N_CopyK1Remarks_Node0{"The system copies remarks data
segments"}:::decision N_CopyK1Remarks_Node0_action["The system copies the K1 remarks
segment maintaining all remark
information for KCSM transmission"]:::main N_CopyK1Remarks_Node0 -- Yes --> N_CopyK1Remarks_Node0_action N_CopyK1Remarks_Node0_action --> E_CopyK1Remarks S_CopyK1Remarks --> N_CopyK1Remarks_Node0 N_CopyK1Remarks_Node0 -- No --> E_CopyK1Remarks
segments"}:::decision N_CopyK1Remarks_Node0_action["The system copies the K1 remarks
segment maintaining all remark
information for KCSM transmission"]:::main N_CopyK1Remarks_Node0 -- Yes --> N_CopyK1Remarks_Node0_action N_CopyK1Remarks_Node0_action --> E_CopyK1Remarks S_CopyK1Remarks --> N_CopyK1Remarks_Node0 N_CopyK1Remarks_Node0 -- No --> E_CopyK1Remarks
File: GCX016.cbl
GIVEN:
The N7 equipment details have been copied
WHEN:
The system copies remarks data segments
THEN:
The system copies the K1 remarks segment maintaining all remark information for KCSM transmission
β Consolidated Acceptance Criteria
- The system copies transaction trailer segments → the system copies the SE transaction trailer segment completing the EDI message structure for KCSM transmission
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CopySETransactionTrailer(["Start Step"])
E_CopySETransactionTrailer(["End Step"])
N_CopySETransactionTrailer_Node0{"The system copies transaction
trailer segments"}:::decision N_CopySETransactionTrailer_Node0_action["The system copies the SE
transaction trailer segment
completing the EDI message structure
for KCSM transmission"]:::main N_CopySETransactionTrailer_Node0 -- Yes --> N_CopySETransactionTrailer_Node0_action N_CopySETransactionTrailer_Node0_action --> E_CopySETransactionTrailer S_CopySETransactionTrailer --> N_CopySETransactionTrailer_Node0 N_CopySETransactionTrailer_Node0 -- No --> E_CopySETransactionTrailer
trailer segments"}:::decision N_CopySETransactionTrailer_Node0_action["The system copies the SE
transaction trailer segment
completing the EDI message structure
for KCSM transmission"]:::main N_CopySETransactionTrailer_Node0 -- Yes --> N_CopySETransactionTrailer_Node0_action N_CopySETransactionTrailer_Node0_action --> E_CopySETransactionTrailer S_CopySETransactionTrailer --> N_CopySETransactionTrailer_Node0 N_CopySETransactionTrailer_Node0 -- No --> E_CopySETransactionTrailer
File: GCX016.cbl
GIVEN:
The K1 remarks have been copied
WHEN:
The system copies transaction trailer segments
THEN:
The system copies the SE transaction trailer segment completing the EDI message structure for KCSM transmission
β Consolidated Acceptance Criteria
- The system queues the message for KCSM delivery → the system places the formatted message in the KCSM transmission queue for delivery to the KCSM system
- The system queues the message for KCSM system → the system places the message in the appropriate queue for KCSM system processing with proper priority and routing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_QueueMessageforKCSMSystem(["Start Step"])
E_QueueMessageforKCSMSystem(["End Step"])
N_QueueMessageforKCSMSystem_Node0{"The system queues the message for
KCSM delivery"}:::decision N_QueueMessageforKCSMSystem_Node0_action["The system places the formatted
message in the KCSM transmission
queue for delivery to the KCSM
system"]:::main N_QueueMessageforKCSMSystem_Node0 -- Yes --> N_QueueMessageforKCSMSystem_Node0_action N_QueueMessageforKCSMSystem_Node0_action --> E_QueueMessageforKCSMSystem S_QueueMessageforKCSMSystem --> N_QueueMessageforKCSMSystem_Node0 N_QueueMessageforKCSMSystem_Node1{"The system queues the message for
KCSM system"}:::decision N_QueueMessageforKCSMSystem_Node1_action["The system places the message in
the appropriate queue for KCSM
system processing with proper
priority and routing"]:::main N_QueueMessageforKCSMSystem_Node1 -- Yes --> N_QueueMessageforKCSMSystem_Node1_action N_QueueMessageforKCSMSystem_Node1_action --> E_QueueMessageforKCSMSystem N_QueueMessageforKCSMSystem_Node0 -- No --> N_QueueMessageforKCSMSystem_Node1 N_QueueMessageforKCSMSystem_Node1 -- No --> E_QueueMessageforKCSMSystem
KCSM delivery"}:::decision N_QueueMessageforKCSMSystem_Node0_action["The system places the formatted
message in the KCSM transmission
queue for delivery to the KCSM
system"]:::main N_QueueMessageforKCSMSystem_Node0 -- Yes --> N_QueueMessageforKCSMSystem_Node0_action N_QueueMessageforKCSMSystem_Node0_action --> E_QueueMessageforKCSMSystem S_QueueMessageforKCSMSystem --> N_QueueMessageforKCSMSystem_Node0 N_QueueMessageforKCSMSystem_Node1{"The system queues the message for
KCSM system"}:::decision N_QueueMessageforKCSMSystem_Node1_action["The system places the message in
the appropriate queue for KCSM
system processing with proper
priority and routing"]:::main N_QueueMessageforKCSMSystem_Node1 -- Yes --> N_QueueMessageforKCSMSystem_Node1_action N_QueueMessageforKCSMSystem_Node1_action --> E_QueueMessageforKCSMSystem N_QueueMessageforKCSMSystem_Node0 -- No --> N_QueueMessageforKCSMSystem_Node1 N_QueueMessageforKCSMSystem_Node1 -- No --> E_QueueMessageforKCSMSystem
File: GCX016.cbl
GIVEN:
The EDI message has been formatted for KCSM transmission
WHEN:
The system queues the message for KCSM delivery
THEN:
The system places the formatted message in the KCSM transmission queue for delivery to the KCSM system
File: GCX016.cbl
GIVEN:
KCSM integration message has been prepared
WHEN:
The system queues the message for KCSM system
THEN:
- The system places the message in the appropriate queue for kcsm system processing with proper priority
- Routing
β Consolidated Acceptance Criteria
- The system completes the KCSM message copying process → the system finalizes all KCSM processing activities and returns control to the main EDI 350 message processing workflow
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CompleteKCSMMessageCopy(["Start Step"])
E_CompleteKCSMMessageCopy(["End Step"])
N_CompleteKCSMMessageCopy_Node0{"The system completes the KCSM
message copying process"}:::decision N_CompleteKCSMMessageCopy_Node0_action["The system finalizes all KCSM
processing activities and returns
control to the main EDI 350 message
processing workflow"]:::main N_CompleteKCSMMessageCopy_Node0 -- Yes --> N_CompleteKCSMMessageCopy_Node0_action N_CompleteKCSMMessageCopy_Node0_action --> E_CompleteKCSMMessageCopy S_CompleteKCSMMessageCopy --> N_CompleteKCSMMessageCopy_Node0 N_CompleteKCSMMessageCopy_Node0 -- No --> E_CompleteKCSMMessageCopy
message copying process"}:::decision N_CompleteKCSMMessageCopy_Node0_action["The system finalizes all KCSM
processing activities and returns
control to the main EDI 350 message
processing workflow"]:::main N_CompleteKCSMMessageCopy_Node0 -- Yes --> N_CompleteKCSMMessageCopy_Node0_action N_CompleteKCSMMessageCopy_Node0_action --> E_CompleteKCSMMessageCopy S_CompleteKCSMMessageCopy --> N_CompleteKCSMMessageCopy_Node0 N_CompleteKCSMMessageCopy_Node0 -- No --> E_CompleteKCSMMessageCopy
File: GCX016.cbl
GIVEN:
The KCSM transmission has been logged
WHEN:
The system completes the KCSM message copying process
THEN:
- The system finalizes all kcsm processing activities
- Returns control to the main edi 350 message processing workflow
β Consolidated Acceptance Criteria
- The port is Laredo AND the disposition code exists in the AECWRKTB database table → set KCSM processing flag to Yes and continue with EDI message processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SearchdatabasefordispositioncodesconfiguredforKCSMprocessing(["Start Step"])
E_SearchdatabasefordispositioncodesconfiguredforKCSMprocessing(["End Step"])
N_SearchdatabasefordispositioncodesconfiguredforKCSMprocessing_Node0{"The port is Laredo AND the
disposition code exists in the
AECWRKTB database table"}:::decision N_SearchdatabasefordispositioncodesconfiguredforKCSMprocessing_Node0_action["Set KCSM processing flag to Yes and
continue with EDI message processing"]:::main N_SearchdatabasefordispositioncodesconfiguredforKCSMprocessing_Node0 -- Yes --> N_SearchdatabasefordispositioncodesconfiguredforKCSMprocessing_Node0_action N_SearchdatabasefordispositioncodesconfiguredforKCSMprocessing_Node0_action --> E_SearchdatabasefordispositioncodesconfiguredforKCSMprocessing S_SearchdatabasefordispositioncodesconfiguredforKCSMprocessing --> N_SearchdatabasefordispositioncodesconfiguredforKCSMprocessing_Node0 N_SearchdatabasefordispositioncodesconfiguredforKCSMprocessing_Node0 -- No --> E_SearchdatabasefordispositioncodesconfiguredforKCSMprocessing
disposition code exists in the
AECWRKTB database table"}:::decision N_SearchdatabasefordispositioncodesconfiguredforKCSMprocessing_Node0_action["Set KCSM processing flag to Yes and
continue with EDI message processing"]:::main N_SearchdatabasefordispositioncodesconfiguredforKCSMprocessing_Node0 -- Yes --> N_SearchdatabasefordispositioncodesconfiguredforKCSMprocessing_Node0_action N_SearchdatabasefordispositioncodesconfiguredforKCSMprocessing_Node0_action --> E_SearchdatabasefordispositioncodesconfiguredforKCSMprocessing S_SearchdatabasefordispositioncodesconfiguredforKCSMprocessing --> N_SearchdatabasefordispositioncodesconfiguredforKCSMprocessing_Node0 N_SearchdatabasefordispositioncodesconfiguredforKCSMprocessing_Node0 -- No --> E_SearchdatabasefordispositioncodesconfiguredforKCSMprocessing
File: GCX016.cbl
GIVEN:
An X4 segment contains a disposition code and port information
WHEN:
- The port is laredo
- The disposition code exists in the aecwrktb database table
THEN:
- Set kcsm processing flag to yes
- Continue with edi message processing
β Consolidated Acceptance Criteria
- The port is not Laredo → set KCSM processing flag to No and continue with EDI message processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CheckifPortisLaredo(["Start Step"])
E_CheckifPortisLaredo(["End Step"])
N_CheckifPortisLaredo_Node0{"The port is not Laredo"}:::decision
N_CheckifPortisLaredo_Node0_action["Set KCSM processing flag to No and
continue with EDI message processing"]:::main N_CheckifPortisLaredo_Node0 -- Yes --> N_CheckifPortisLaredo_Node0_action N_CheckifPortisLaredo_Node0_action --> E_CheckifPortisLaredo S_CheckifPortisLaredo --> N_CheckifPortisLaredo_Node0 N_CheckifPortisLaredo_Node0 -- No --> E_CheckifPortisLaredo
continue with EDI message processing"]:::main N_CheckifPortisLaredo_Node0 -- Yes --> N_CheckifPortisLaredo_Node0_action N_CheckifPortisLaredo_Node0_action --> E_CheckifPortisLaredo S_CheckifPortisLaredo --> N_CheckifPortisLaredo_Node0 N_CheckifPortisLaredo_Node0 -- No --> E_CheckifPortisLaredo
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
An X4 segment contains port information
WHEN:
The port is not Laredo
THEN:
- Set kcsm processing flag to no
- Continue with edi message processing
β Consolidated Acceptance Criteria
- The disposition code is not found in the AECWRKTB database table → set KCSM processing flag to No and continue with EDI message processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LookforDispositionCodeMatch(["Start Step"])
E_LookforDispositionCodeMatch(["End Step"])
N_LookforDispositionCodeMatch_Node0{"The disposition code is not found
in the AECWRKTB database table"}:::decision N_LookforDispositionCodeMatch_Node0_action["Set KCSM processing flag to No and
continue with EDI message processing"]:::main N_LookforDispositionCodeMatch_Node0 -- Yes --> N_LookforDispositionCodeMatch_Node0_action N_LookforDispositionCodeMatch_Node0_action --> E_LookforDispositionCodeMatch S_LookforDispositionCodeMatch --> N_LookforDispositionCodeMatch_Node0 N_LookforDispositionCodeMatch_Node0 -- No --> E_LookforDispositionCodeMatch
in the AECWRKTB database table"}:::decision N_LookforDispositionCodeMatch_Node0_action["Set KCSM processing flag to No and
continue with EDI message processing"]:::main N_LookforDispositionCodeMatch_Node0 -- Yes --> N_LookforDispositionCodeMatch_Node0_action N_LookforDispositionCodeMatch_Node0_action --> E_LookforDispositionCodeMatch S_LookforDispositionCodeMatch --> N_LookforDispositionCodeMatch_Node0 N_LookforDispositionCodeMatch_Node0 -- No --> E_LookforDispositionCodeMatch
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
The port is Laredo AND a disposition code from X4 segment
WHEN:
The disposition code is not found in the AECWRKTB database table
THEN:
- Set kcsm processing flag to no
- Continue with edi message processing
β Consolidated Acceptance Criteria
- System searches the AECWRKTB database table for the disposition code → return found or not found status for the disposition code lookup
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SearchAECWRKTBDatabaseTable(["Start Step"])
E_SearchAECWRKTBDatabaseTable(["End Step"])
N_SearchAECWRKTBDatabaseTable_Node0{"System searches the AECWRKTB
database table for the disposition
code"}:::decision N_SearchAECWRKTBDatabaseTable_Node0_action["Return found or not found status
for the disposition code lookup"]:::main N_SearchAECWRKTBDatabaseTable_Node0 -- Yes --> N_SearchAECWRKTBDatabaseTable_Node0_action N_SearchAECWRKTBDatabaseTable_Node0_action --> E_SearchAECWRKTBDatabaseTable S_SearchAECWRKTBDatabaseTable --> N_SearchAECWRKTBDatabaseTable_Node0 N_SearchAECWRKTBDatabaseTable_Node0 -- No --> E_SearchAECWRKTBDatabaseTable
database table for the disposition
code"}:::decision N_SearchAECWRKTBDatabaseTable_Node0_action["Return found or not found status
for the disposition code lookup"]:::main N_SearchAECWRKTBDatabaseTable_Node0 -- Yes --> N_SearchAECWRKTBDatabaseTable_Node0_action N_SearchAECWRKTBDatabaseTable_Node0_action --> E_SearchAECWRKTBDatabaseTable S_SearchAECWRKTBDatabaseTable --> N_SearchAECWRKTBDatabaseTable_Node0 N_SearchAECWRKTBDatabaseTable_Node0 -- No --> E_SearchAECWRKTBDatabaseTable
File: GCX016.cbl
GIVEN:
The port is Laredo AND a disposition code needs validation
WHEN:
System searches the AECWRKTB database table for the disposition code
THEN:
Return found or not found status for the disposition code lookup
β Consolidated Acceptance Criteria
- If the disposition code configuration → the system determines whether KCSM transmission processing is required for this disposition code
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_DispositionCodeRequiresKCSM(["Start Step"])
E_DispositionCodeRequiresKCSM(["End Step"])
N_DispositionCodeRequiresKCSM_Node0{"The system evaluates the
disposition code configuration"}:::decision N_DispositionCodeRequiresKCSM_Node0_action["The system determines whether KCSM
transmission processing is required
for this disposition code"]:::main N_DispositionCodeRequiresKCSM_Node0 -- Yes --> N_DispositionCodeRequiresKCSM_Node0_action N_DispositionCodeRequiresKCSM_Node0_action --> E_DispositionCodeRequiresKCSM S_DispositionCodeRequiresKCSM --> N_DispositionCodeRequiresKCSM_Node0 N_DispositionCodeRequiresKCSM_Node0 -- No --> E_DispositionCodeRequiresKCSM
disposition code configuration"}:::decision N_DispositionCodeRequiresKCSM_Node0_action["The system determines whether KCSM
transmission processing is required
for this disposition code"]:::main N_DispositionCodeRequiresKCSM_Node0 -- Yes --> N_DispositionCodeRequiresKCSM_Node0_action N_DispositionCodeRequiresKCSM_Node0_action --> E_DispositionCodeRequiresKCSM S_DispositionCodeRequiresKCSM --> N_DispositionCodeRequiresKCSM_Node0 N_DispositionCodeRequiresKCSM_Node0 -- No --> E_DispositionCodeRequiresKCSM
File: GCX016.cbl
GIVEN:
A disposition code is being processed for customs release
WHEN:
The system evaluates the disposition code configuration
THEN:
The system determines whether KCSM transmission processing is required for this disposition code
β Consolidated Acceptance Criteria
- The system checks the port configuration for KCSM integration → the system validates that KCSM processing is enabled and configured for the Laredo port
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CheckKCSMConfigurationatLaredoPort(["Start Step"])
E_CheckKCSMConfigurationatLaredoPort(["End Step"])
N_CheckKCSMConfigurationatLaredoPort_Node0{"The system checks the port
configuration for KCSM integration"}:::decision N_CheckKCSMConfigurationatLaredoPort_Node0_action["The system validates that KCSM
processing is enabled and configured
for the Laredo port"]:::main N_CheckKCSMConfigurationatLaredoPort_Node0 -- Yes --> N_CheckKCSMConfigurationatLaredoPort_Node0_action N_CheckKCSMConfigurationatLaredoPort_Node0_action --> E_CheckKCSMConfigurationatLaredoPort S_CheckKCSMConfigurationatLaredoPort --> N_CheckKCSMConfigurationatLaredoPort_Node0 N_CheckKCSMConfigurationatLaredoPort_Node0 -- No --> E_CheckKCSMConfigurationatLaredoPort
configuration for KCSM integration"}:::decision N_CheckKCSMConfigurationatLaredoPort_Node0_action["The system validates that KCSM
processing is enabled and configured
for the Laredo port"]:::main N_CheckKCSMConfigurationatLaredoPort_Node0 -- Yes --> N_CheckKCSMConfigurationatLaredoPort_Node0_action N_CheckKCSMConfigurationatLaredoPort_Node0_action --> E_CheckKCSMConfigurationatLaredoPort S_CheckKCSMConfigurationatLaredoPort --> N_CheckKCSMConfigurationatLaredoPort_Node0 N_CheckKCSMConfigurationatLaredoPort_Node0 -- No --> E_CheckKCSMConfigurationatLaredoPort
File: GCX016.cbl
GIVEN:
A disposition code requires KCSM processing
WHEN:
The system checks the port configuration for KCSM integration
THEN:
- The system validates that kcsm processing is enabled
- Configured for the laredo port
β Consolidated Acceptance Criteria
- The system initializes transmission parameters → the system sets up EDI message parameters, transmission dates, and processing configuration for KCSM integration
- The system begins transmission root segment creation process → all transmission parameters are initialized to default values and system is ready for parameter setting
- The system begins transmission parameter initialization → transmission parameters are loaded from AECWRKTB work table
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_InitializeTransmissionParameters(["Start Step"])
E_InitializeTransmissionParameters(["End Step"])
N_InitializeTransmissionParameters_Node0{"The system initializes transmission
parameters"}:::decision N_InitializeTransmissionParameters_Node0_action["The system sets up EDI message
parameters, transmission dates, and
processing configuration for KCSM
integration"]:::main N_InitializeTransmissionParameters_Node0 -- Yes --> N_InitializeTransmissionParameters_Node0_action N_InitializeTransmissionParameters_Node0_action --> E_InitializeTransmissionParameters S_InitializeTransmissionParameters --> N_InitializeTransmissionParameters_Node0 N_InitializeTransmissionParameters_Node1{"The system begins transmission root
segment creation process"}:::decision N_InitializeTransmissionParameters_Node1_action["All transmission parameters are
initialized to default values and
system is ready for parameter
setting"]:::main N_InitializeTransmissionParameters_Node1 -- Yes --> N_InitializeTransmissionParameters_Node1_action N_InitializeTransmissionParameters_Node1_action --> E_InitializeTransmissionParameters N_InitializeTransmissionParameters_Node0 -- No --> N_InitializeTransmissionParameters_Node1 N_InitializeTransmissionParameters_Node2{"the system begins transmission
parameter initialization"}:::decision N_InitializeTransmissionParameters_Node2_action["transmission parameters are loaded
from AECWRKTB work table"]:::main N_InitializeTransmissionParameters_Node2 -- Yes --> N_InitializeTransmissionParameters_Node2_action N_InitializeTransmissionParameters_Node2_action --> E_InitializeTransmissionParameters N_InitializeTransmissionParameters_Node1 -- No --> N_InitializeTransmissionParameters_Node2 N_InitializeTransmissionParameters_Node2 -- No --> E_InitializeTransmissionParameters
parameters"}:::decision N_InitializeTransmissionParameters_Node0_action["The system sets up EDI message
parameters, transmission dates, and
processing configuration for KCSM
integration"]:::main N_InitializeTransmissionParameters_Node0 -- Yes --> N_InitializeTransmissionParameters_Node0_action N_InitializeTransmissionParameters_Node0_action --> E_InitializeTransmissionParameters S_InitializeTransmissionParameters --> N_InitializeTransmissionParameters_Node0 N_InitializeTransmissionParameters_Node1{"The system begins transmission root
segment creation process"}:::decision N_InitializeTransmissionParameters_Node1_action["All transmission parameters are
initialized to default values and
system is ready for parameter
setting"]:::main N_InitializeTransmissionParameters_Node1 -- Yes --> N_InitializeTransmissionParameters_Node1_action N_InitializeTransmissionParameters_Node1_action --> E_InitializeTransmissionParameters N_InitializeTransmissionParameters_Node0 -- No --> N_InitializeTransmissionParameters_Node1 N_InitializeTransmissionParameters_Node2{"the system begins transmission
parameter initialization"}:::decision N_InitializeTransmissionParameters_Node2_action["transmission parameters are loaded
from AECWRKTB work table"]:::main N_InitializeTransmissionParameters_Node2 -- Yes --> N_InitializeTransmissionParameters_Node2_action N_InitializeTransmissionParameters_Node2_action --> E_InitializeTransmissionParameters N_InitializeTransmissionParameters_Node1 -- No --> N_InitializeTransmissionParameters_Node2 N_InitializeTransmissionParameters_Node2 -- No --> E_InitializeTransmissionParameters
File: GCX016.cbl
GIVEN:
Transmission control information has been established
WHEN:
The system initializes transmission parameters
THEN:
The system sets up EDI message parameters, transmission dates, and processing configuration for KCSM integration
File: GCX016.cbl
GIVEN:
A new KCSM transmission is being created
WHEN:
The system begins transmission root segment creation process
THEN:
- All transmission parameters are initialized to default values
- System is ready for parameter setting
File: GCX016.cbl
GIVEN:
EDI transmission root segment creation is requested
WHEN:
the system begins transmission parameter initialization
THEN:
transmission parameters are loaded from AECWRKTB work table
β Consolidated Acceptance Criteria
- The system stores EDI segment data → the system stores each EDI segment with proper sequence numbers and maintains data integrity for KCSM processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_StoreEDISegmentData(["Start Step"])
E_StoreEDISegmentData(["End Step"])
N_StoreEDISegmentData_Node0{"The system stores EDI segment data"}:::decision
N_StoreEDISegmentData_Node0_action["The system stores each EDI segment
with proper sequence numbers and
maintains data integrity for KCSM
processing"]:::main N_StoreEDISegmentData_Node0 -- Yes --> N_StoreEDISegmentData_Node0_action N_StoreEDISegmentData_Node0_action --> E_StoreEDISegmentData S_StoreEDISegmentData --> N_StoreEDISegmentData_Node0 N_StoreEDISegmentData_Node0 -- No --> E_StoreEDISegmentData
with proper sequence numbers and
maintains data integrity for KCSM
processing"]:::main N_StoreEDISegmentData_Node0 -- Yes --> N_StoreEDISegmentData_Node0_action N_StoreEDISegmentData_Node0_action --> E_StoreEDISegmentData S_StoreEDISegmentData --> N_StoreEDISegmentData_Node0 N_StoreEDISegmentData_Node0 -- No --> E_StoreEDISegmentData
File: GCX016.cbl
GIVEN:
Transmission dependent segments A9DP have been created
WHEN:
The system stores EDI segment data
THEN:
- The system stores each edi segment with proper sequence numbers
- Maintains data integrity for kcsm processing
β Consolidated Acceptance Criteria
- The system sets transmission file properties → the system configures file status, creation timestamps, processing indicators, and other metadata required for KCSM integration
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetTransmissionFileProperties(["Start Step"])
E_SetTransmissionFileProperties(["End Step"])
N_SetTransmissionFileProperties_Node0{"The system sets transmission file
properties"}:::decision N_SetTransmissionFileProperties_Node0_action["The system configures file status,
creation timestamps, processing
indicators, and other metadata
required for KCSM integration"]:::main N_SetTransmissionFileProperties_Node0 -- Yes --> N_SetTransmissionFileProperties_Node0_action N_SetTransmissionFileProperties_Node0_action --> E_SetTransmissionFileProperties S_SetTransmissionFileProperties --> N_SetTransmissionFileProperties_Node0 N_SetTransmissionFileProperties_Node0 -- No --> E_SetTransmissionFileProperties
properties"}:::decision N_SetTransmissionFileProperties_Node0_action["The system configures file status,
creation timestamps, processing
indicators, and other metadata
required for KCSM integration"]:::main N_SetTransmissionFileProperties_Node0 -- Yes --> N_SetTransmissionFileProperties_Node0_action N_SetTransmissionFileProperties_Node0_action --> E_SetTransmissionFileProperties S_SetTransmissionFileProperties --> N_SetTransmissionFileProperties_Node0 N_SetTransmissionFileProperties_Node0 -- No --> E_SetTransmissionFileProperties
File: GCX016.cbl
GIVEN:
EDI segment data has been stored in transmission segments
WHEN:
The system sets transmission file properties
THEN:
The system configures file status, creation timestamps, processing indicators, and other metadata required for KCSM integration
β Consolidated Acceptance Criteria
- The system writes transmission segments to the database → the system stores the A9RT root segment and all A9DP dependent segments to the database with proper relationships and indexing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_WriteTransmissionSegmentstoDatabase(["Start Step"])
E_WriteTransmissionSegmentstoDatabase(["End Step"])
N_WriteTransmissionSegmentstoDatabase_Node0{"The system writes transmission
segments to the database"}:::decision N_WriteTransmissionSegmentstoDatabase_Node0_action["The system stores the A9RT root
segment and all A9DP dependent
segments to the database with proper
relationships and indexing"]:::main N_WriteTransmissionSegmentstoDatabase_Node0 -- Yes --> N_WriteTransmissionSegmentstoDatabase_Node0_action N_WriteTransmissionSegmentstoDatabase_Node0_action --> E_WriteTransmissionSegmentstoDatabase S_WriteTransmissionSegmentstoDatabase --> N_WriteTransmissionSegmentstoDatabase_Node0 N_WriteTransmissionSegmentstoDatabase_Node0 -- No --> E_WriteTransmissionSegmentstoDatabase
segments to the database"}:::decision N_WriteTransmissionSegmentstoDatabase_Node0_action["The system stores the A9RT root
segment and all A9DP dependent
segments to the database with proper
relationships and indexing"]:::main N_WriteTransmissionSegmentstoDatabase_Node0 -- Yes --> N_WriteTransmissionSegmentstoDatabase_Node0_action N_WriteTransmissionSegmentstoDatabase_Node0_action --> E_WriteTransmissionSegmentstoDatabase S_WriteTransmissionSegmentstoDatabase --> N_WriteTransmissionSegmentstoDatabase_Node0 N_WriteTransmissionSegmentstoDatabase_Node0 -- No --> E_WriteTransmissionSegmentstoDatabase
File: GCX016.cbl
GIVEN:
Transmission file properties have been configured
WHEN:
The system writes transmission segments to the database
THEN:
- The system stores the a9rt root segment
- All a9dp dependent segments to the database with proper relationships
- Indexing
β Consolidated Acceptance Criteria
- The system prepares KCSM integration message → the system creates notification message containing transmission file identifiers and processing instructions for KCSM system
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_PrepareKCSMIntegrationMessage(["Start Step"])
E_PrepareKCSMIntegrationMessage(["End Step"])
N_PrepareKCSMIntegrationMessage_Node0{"The system prepares KCSM
integration message"}:::decision N_PrepareKCSMIntegrationMessage_Node0_action["The system creates notification
message containing transmission file
identifiers and processing
instructions for KCSM system"]:::main N_PrepareKCSMIntegrationMessage_Node0 -- Yes --> N_PrepareKCSMIntegrationMessage_Node0_action N_PrepareKCSMIntegrationMessage_Node0_action --> E_PrepareKCSMIntegrationMessage S_PrepareKCSMIntegrationMessage --> N_PrepareKCSMIntegrationMessage_Node0 N_PrepareKCSMIntegrationMessage_Node0 -- No --> E_PrepareKCSMIntegrationMessage
integration message"}:::decision N_PrepareKCSMIntegrationMessage_Node0_action["The system creates notification
message containing transmission file
identifiers and processing
instructions for KCSM system"]:::main N_PrepareKCSMIntegrationMessage_Node0 -- Yes --> N_PrepareKCSMIntegrationMessage_Node0_action N_PrepareKCSMIntegrationMessage_Node0_action --> E_PrepareKCSMIntegrationMessage S_PrepareKCSMIntegrationMessage --> N_PrepareKCSMIntegrationMessage_Node0 N_PrepareKCSMIntegrationMessage_Node0 -- No --> E_PrepareKCSMIntegrationMessage
File: GCX016.cbl
GIVEN:
Transmission segments have been written to the database
WHEN:
The system prepares KCSM integration message
THEN:
- The system creates notification message containing transmission file identifiers
- Processing instructions for kcsm system
β Consolidated Acceptance Criteria
- The system checks for available train context → processing continues if train context exists, otherwise an error is logged
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_TrainContextAvailable(["Start Step"])
E_TrainContextAvailable(["End Step"])
N_TrainContextAvailable_Node0{"The system checks for available
train context"}:::decision N_TrainContextAvailable_Node0_action["Processing continues if train
context exists, otherwise an error
is logged"]:::main N_TrainContextAvailable_Node0 -- Yes --> N_TrainContextAvailable_Node0_action N_TrainContextAvailable_Node0_action --> E_TrainContextAvailable S_TrainContextAvailable --> N_TrainContextAvailable_Node0 N_TrainContextAvailable_Node0 -- No --> E_TrainContextAvailable
train context"}:::decision N_TrainContextAvailable_Node0_action["Processing continues if train
context exists, otherwise an error
is logged"]:::main N_TrainContextAvailable_Node0 -- Yes --> N_TrainContextAvailable_Node0_action N_TrainContextAvailable_Node0_action --> E_TrainContextAvailable S_TrainContextAvailable --> N_TrainContextAvailable_Node0 N_TrainContextAvailable_Node0 -- No --> E_TrainContextAvailable
File: GCX016.cbl
GIVEN:
A K1 segment is received for train operations
WHEN:
The system checks for available train context
THEN:
Processing continues if train context exists, otherwise an error is logged
β Consolidated Acceptance Criteria
- The system processes the K1 segment → the free-form comment text is extracted from the K1 segment
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExtractK1FreeformCommentText(["Start Step"])
E_ExtractK1FreeformCommentText(["End Step"])
N_ExtractK1FreeformCommentText_Node0{"The system processes the K1 segment"}:::decision
N_ExtractK1FreeformCommentText_Node0_action["The free-form comment text is
extracted from the K1 segment"]:::main N_ExtractK1FreeformCommentText_Node0 -- Yes --> N_ExtractK1FreeformCommentText_Node0_action N_ExtractK1FreeformCommentText_Node0_action --> E_ExtractK1FreeformCommentText S_ExtractK1FreeformCommentText --> N_ExtractK1FreeformCommentText_Node0 N_ExtractK1FreeformCommentText_Node0 -- No --> E_ExtractK1FreeformCommentText
extracted from the K1 segment"]:::main N_ExtractK1FreeformCommentText_Node0 -- Yes --> N_ExtractK1FreeformCommentText_Node0_action N_ExtractK1FreeformCommentText_Node0_action --> E_ExtractK1FreeformCommentText S_ExtractK1FreeformCommentText --> N_ExtractK1FreeformCommentText_Node0 N_ExtractK1FreeformCommentText_Node0 -- No --> E_ExtractK1FreeformCommentText
File: GCX016.cbl
GIVEN:
A valid K1 segment with train context available
WHEN:
The system processes the K1 segment
THEN:
The free-form comment text is extracted from the K1 segment
β Consolidated Acceptance Criteria
- The system validates the comment → the comment is checked for proper length and format constraints
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ValidateCommentLengthandFormat(["Start Step"])
E_ValidateCommentLengthandFormat(["End Step"])
N_ValidateCommentLengthandFormat_Node0{"The system validates the comment"}:::decision
N_ValidateCommentLengthandFormat_Node0_action["The comment is checked for proper
length and format constraints"]:::main N_ValidateCommentLengthandFormat_Node0 -- Yes --> N_ValidateCommentLengthandFormat_Node0_action N_ValidateCommentLengthandFormat_Node0_action --> E_ValidateCommentLengthandFormat S_ValidateCommentLengthandFormat --> N_ValidateCommentLengthandFormat_Node0 N_ValidateCommentLengthandFormat_Node0 -- No --> E_ValidateCommentLengthandFormat
length and format constraints"]:::main N_ValidateCommentLengthandFormat_Node0 -- Yes --> N_ValidateCommentLengthandFormat_Node0_action N_ValidateCommentLengthandFormat_Node0_action --> E_ValidateCommentLengthandFormat S_ValidateCommentLengthandFormat --> N_ValidateCommentLengthandFormat_Node0 N_ValidateCommentLengthandFormat_Node0 -- No --> E_ValidateCommentLengthandFormat
File: GCX016.cbl
GIVEN:
K1 free-form comment text has been extracted
WHEN:
The system validates the comment
THEN:
- The comment is checked for proper length
- Format constraints
β Consolidated Acceptance Criteria
- If comment validity → processing continues if valid, otherwise the segment is skipped
- If comment validity based on length and content criteria → the comment is marked as valid for storage or invalid for rejection
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CommentValid(["Start Step"])
E_CommentValid(["End Step"])
N_CommentValid_Node0{"The system evaluates comment
validity"}:::decision N_CommentValid_Node0_action["Processing continues if valid,
otherwise the segment is skipped"]:::main N_CommentValid_Node0 -- Yes --> N_CommentValid_Node0_action N_CommentValid_Node0_action --> E_CommentValid S_CommentValid --> N_CommentValid_Node0 N_CommentValid_Node1{"The system evaluates comment
validity based on length and content
criteria"}:::decision N_CommentValid_Node1_action["The comment is marked as valid for
storage or invalid for rejection"]:::main N_CommentValid_Node1 -- Yes --> N_CommentValid_Node1_action N_CommentValid_Node1_action --> E_CommentValid N_CommentValid_Node0 -- No --> N_CommentValid_Node1 N_CommentValid_Node1 -- No --> E_CommentValid
validity"}:::decision N_CommentValid_Node0_action["Processing continues if valid,
otherwise the segment is skipped"]:::main N_CommentValid_Node0 -- Yes --> N_CommentValid_Node0_action N_CommentValid_Node0_action --> E_CommentValid S_CommentValid --> N_CommentValid_Node0 N_CommentValid_Node1{"The system evaluates comment
validity based on length and content
criteria"}:::decision N_CommentValid_Node1_action["The comment is marked as valid for
storage or invalid for rejection"]:::main N_CommentValid_Node1 -- Yes --> N_CommentValid_Node1_action N_CommentValid_Node1_action --> E_CommentValid N_CommentValid_Node0 -- No --> N_CommentValid_Node1 N_CommentValid_Node1 -- No --> E_CommentValid
File: GCX016.cbl
GIVEN:
K1 comment has been validated for length and format
WHEN:
The system evaluates comment validity
THEN:
Processing continues if valid, otherwise the segment is skipped
File: GCX016.cbl
GIVEN:
A K1 comment has undergone length validation
WHEN:
- The system evaluates comment validity based on length
- Content criteria
THEN:
The comment is marked as valid for storage or invalid for rejection
β Consolidated Acceptance Criteria
- The system processes the comment for train operations → the comment is associated with the current train ID
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AssociateCommentwithTrainID(["Start Step"])
E_AssociateCommentwithTrainID(["End Step"])
N_AssociateCommentwithTrainID_Node0{"The system processes the comment
for train operations"}:::decision N_AssociateCommentwithTrainID_Node0_action["The comment is associated with the
current train ID"]:::main N_AssociateCommentwithTrainID_Node0 -- Yes --> N_AssociateCommentwithTrainID_Node0_action N_AssociateCommentwithTrainID_Node0_action --> E_AssociateCommentwithTrainID S_AssociateCommentwithTrainID --> N_AssociateCommentwithTrainID_Node0 N_AssociateCommentwithTrainID_Node0 -- No --> E_AssociateCommentwithTrainID
for train operations"}:::decision N_AssociateCommentwithTrainID_Node0_action["The comment is associated with the
current train ID"]:::main N_AssociateCommentwithTrainID_Node0 -- Yes --> N_AssociateCommentwithTrainID_Node0_action N_AssociateCommentwithTrainID_Node0_action --> E_AssociateCommentwithTrainID S_AssociateCommentwithTrainID --> N_AssociateCommentwithTrainID_Node0 N_AssociateCommentwithTrainID_Node0 -- No --> E_AssociateCommentwithTrainID
File: GCX016.cbl
GIVEN:
A valid K1 comment has been validated
WHEN:
The system processes the comment for train operations
THEN:
The comment is associated with the current train ID
β Consolidated Acceptance Criteria
- The system logs the remark → the K1 remark is logged with complete train information
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogK1RemarkwithTrainInformation(["Start Step"])
E_LogK1RemarkwithTrainInformation(["End Step"])
N_LogK1RemarkwithTrainInformation_Node0{"The system logs the remark"}:::decision
N_LogK1RemarkwithTrainInformation_Node0_action["The K1 remark is logged with
complete train information"]:::main N_LogK1RemarkwithTrainInformation_Node0 -- Yes --> N_LogK1RemarkwithTrainInformation_Node0_action N_LogK1RemarkwithTrainInformation_Node0_action --> E_LogK1RemarkwithTrainInformation S_LogK1RemarkwithTrainInformation --> N_LogK1RemarkwithTrainInformation_Node0 N_LogK1RemarkwithTrainInformation_Node0 -- No --> E_LogK1RemarkwithTrainInformation
complete train information"]:::main N_LogK1RemarkwithTrainInformation_Node0 -- Yes --> N_LogK1RemarkwithTrainInformation_Node0_action N_LogK1RemarkwithTrainInformation_Node0_action --> E_LogK1RemarkwithTrainInformation S_LogK1RemarkwithTrainInformation --> N_LogK1RemarkwithTrainInformation_Node0 N_LogK1RemarkwithTrainInformation_Node0 -- No --> E_LogK1RemarkwithTrainInformation
File: GCX016.cbl
GIVEN:
K1 comment has been associated with train ID
WHEN:
The system logs the remark
THEN:
The K1 remark is logged with complete train information
β Consolidated Acceptance Criteria
- The system stores the comment → the comment is stored as a train-level remark in the system
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_StoreTrainlevelCommentinSystem(["Start Step"])
E_StoreTrainlevelCommentinSystem(["End Step"])
N_StoreTrainlevelCommentinSystem_Node0{"The system stores the comment"}:::decision
N_StoreTrainlevelCommentinSystem_Node0_action["The comment is stored as a
train-level remark in the system"]:::main N_StoreTrainlevelCommentinSystem_Node0 -- Yes --> N_StoreTrainlevelCommentinSystem_Node0_action N_StoreTrainlevelCommentinSystem_Node0_action --> E_StoreTrainlevelCommentinSystem S_StoreTrainlevelCommentinSystem --> N_StoreTrainlevelCommentinSystem_Node0 N_StoreTrainlevelCommentinSystem_Node0 -- No --> E_StoreTrainlevelCommentinSystem
train-level remark in the system"]:::main N_StoreTrainlevelCommentinSystem_Node0 -- Yes --> N_StoreTrainlevelCommentinSystem_Node0_action N_StoreTrainlevelCommentinSystem_Node0_action --> E_StoreTrainlevelCommentinSystem S_StoreTrainlevelCommentinSystem --> N_StoreTrainlevelCommentinSystem_Node0 N_StoreTrainlevelCommentinSystem_Node0 -- No --> E_StoreTrainlevelCommentinSystem
File: GCX016.cbl
GIVEN:
K1 remark has been logged with train information
WHEN:
The system stores the comment
THEN:
The comment is stored as a train-level remark in the system
β Consolidated Acceptance Criteria
- The system completes the storage process → an audit trail entry is generated for the K1 train remark
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GenerateAuditTrailEntry(["Start Step"])
E_GenerateAuditTrailEntry(["End Step"])
N_GenerateAuditTrailEntry_Node0{"The system completes the storage
process"}:::decision N_GenerateAuditTrailEntry_Node0_action["An audit trail entry is generated
for the K1 train remark"]:::main N_GenerateAuditTrailEntry_Node0 -- Yes --> N_GenerateAuditTrailEntry_Node0_action N_GenerateAuditTrailEntry_Node0_action --> E_GenerateAuditTrailEntry S_GenerateAuditTrailEntry --> N_GenerateAuditTrailEntry_Node0 N_GenerateAuditTrailEntry_Node0 -- No --> E_GenerateAuditTrailEntry
process"}:::decision N_GenerateAuditTrailEntry_Node0_action["An audit trail entry is generated
for the K1 train remark"]:::main N_GenerateAuditTrailEntry_Node0 -- Yes --> N_GenerateAuditTrailEntry_Node0_action N_GenerateAuditTrailEntry_Node0_action --> E_GenerateAuditTrailEntry S_GenerateAuditTrailEntry --> N_GenerateAuditTrailEntry_Node0 N_GenerateAuditTrailEntry_Node0 -- No --> E_GenerateAuditTrailEntry
File: GCX016.cbl
GIVEN:
Train-level comment has been stored in the system
WHEN:
The system completes the storage process
THEN:
An audit trail entry is generated for the K1 train remark
β Consolidated Acceptance Criteria
- The system determines the comment is invalid → the invalid K1 segment is skipped and processing continues
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SkipInvalidK1Segment(["Start Step"])
E_SkipInvalidK1Segment(["End Step"])
N_SkipInvalidK1Segment_Node0{"The system determines the comment
is invalid"}:::decision N_SkipInvalidK1Segment_Node0_action["The invalid K1 segment is skipped
and processing continues"]:::exclusion N_SkipInvalidK1Segment_Node0 -- Yes -->|Alternative| N_SkipInvalidK1Segment_Node0_action N_SkipInvalidK1Segment_Node0_action --> E_SkipInvalidK1Segment S_SkipInvalidK1Segment --> N_SkipInvalidK1Segment_Node0 N_SkipInvalidK1Segment_Node0 -- No --> E_SkipInvalidK1Segment
is invalid"}:::decision N_SkipInvalidK1Segment_Node0_action["The invalid K1 segment is skipped
and processing continues"]:::exclusion N_SkipInvalidK1Segment_Node0 -- Yes -->|Alternative| N_SkipInvalidK1Segment_Node0_action N_SkipInvalidK1Segment_Node0_action --> E_SkipInvalidK1Segment S_SkipInvalidK1Segment --> N_SkipInvalidK1Segment_Node0 N_SkipInvalidK1Segment_Node0 -- No --> E_SkipInvalidK1Segment
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
A K1 comment has failed validation checks
WHEN:
The system determines the comment is invalid
THEN:
- The invalid k1 segment is skipped
- Processing continues
β Consolidated Acceptance Criteria
- No train context is available → an error is logged indicating missing train context
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogErrorNoTrainContext(["Start Step"])
E_LogErrorNoTrainContext(["End Step"])
N_LogErrorNoTrainContext_Node0{"No train context is available"}:::decision
N_LogErrorNoTrainContext_Node0_action["An error is logged indicating
missing train context"]:::main N_LogErrorNoTrainContext_Node0 -- Yes --> N_LogErrorNoTrainContext_Node0_action N_LogErrorNoTrainContext_Node0_action --> E_LogErrorNoTrainContext S_LogErrorNoTrainContext --> N_LogErrorNoTrainContext_Node0 N_LogErrorNoTrainContext_Node0 -- No --> E_LogErrorNoTrainContext
missing train context"]:::main N_LogErrorNoTrainContext_Node0 -- Yes --> N_LogErrorNoTrainContext_Node0_action N_LogErrorNoTrainContext_Node0_action --> E_LogErrorNoTrainContext S_LogErrorNoTrainContext --> N_LogErrorNoTrainContext_Node0 N_LogErrorNoTrainContext_Node0 -- No --> E_LogErrorNoTrainContext
File: GCX016.cbl
GIVEN:
A K1 segment is received for train operations
WHEN:
No train context is available
THEN:
An error is logged indicating missing train context
β Consolidated Acceptance Criteria
- The system checks if the K1 segment is associated with an X4 customs release segment → the K1 segment is processed for cargo remarks if associated with X4, otherwise it is skipped as non-cargo related
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IsK1AssociatedwithX4Segment(["Start Step"])
E_IsK1AssociatedwithX4Segment(["End Step"])
N_IsK1AssociatedwithX4Segment_Node0{"The system checks if the K1 segment
is associated with an X4 customs
release segment"}:::decision N_IsK1AssociatedwithX4Segment_Node0_action["The K1 segment is processed for
cargo remarks if associated with X4,
otherwise it is skipped as non-cargo
related"]:::main N_IsK1AssociatedwithX4Segment_Node0 -- Yes --> N_IsK1AssociatedwithX4Segment_Node0_action N_IsK1AssociatedwithX4Segment_Node0_action --> E_IsK1AssociatedwithX4Segment S_IsK1AssociatedwithX4Segment --> N_IsK1AssociatedwithX4Segment_Node0 N_IsK1AssociatedwithX4Segment_Node0 -- No --> E_IsK1AssociatedwithX4Segment
is associated with an X4 customs
release segment"}:::decision N_IsK1AssociatedwithX4Segment_Node0_action["The K1 segment is processed for
cargo remarks if associated with X4,
otherwise it is skipped as non-cargo
related"]:::main N_IsK1AssociatedwithX4Segment_Node0 -- Yes --> N_IsK1AssociatedwithX4Segment_Node0_action N_IsK1AssociatedwithX4Segment_Node0_action --> E_IsK1AssociatedwithX4Segment S_IsK1AssociatedwithX4Segment --> N_IsK1AssociatedwithX4Segment_Node0 N_IsK1AssociatedwithX4Segment_Node0 -- No --> E_IsK1AssociatedwithX4Segment
File: GCX016.cbl
GIVEN:
A K1 remarks segment is received in the message queue
WHEN:
The system checks if the K1 segment is associated with an X4 customs release segment
THEN:
The K1 segment is processed for cargo remarks if associated with X4, otherwise it is skipped as non-cargo related
β Consolidated Acceptance Criteria
- The system validates the K1 segment format and structure → the K1 segment is accepted for comment extraction if format is valid, otherwise it is rejected with invalid format error
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_K1FormatValid(["Start Step"])
E_K1FormatValid(["End Step"])
N_K1FormatValid_Node0{"The system validates the K1 segment
format and structure"}:::decision N_K1FormatValid_Node0_action["The K1 segment is accepted for
comment extraction if format is
valid, otherwise it is rejected with
invalid format error"]:::exclusion N_K1FormatValid_Node0 -- Yes -->|Alternative| N_K1FormatValid_Node0_action N_K1FormatValid_Node0_action --> E_K1FormatValid S_K1FormatValid --> N_K1FormatValid_Node0 N_K1FormatValid_Node0 -- No --> E_K1FormatValid
format and structure"}:::decision N_K1FormatValid_Node0_action["The K1 segment is accepted for
comment extraction if format is
valid, otherwise it is rejected with
invalid format error"]:::exclusion N_K1FormatValid_Node0 -- Yes -->|Alternative| N_K1FormatValid_Node0_action N_K1FormatValid_Node0_action --> E_K1FormatValid S_K1FormatValid --> N_K1FormatValid_Node0 N_K1FormatValid_Node0 -- No --> E_K1FormatValid
File: GCX016.cbl
GIVEN:
A K1 remarks segment associated with an X4 segment
WHEN:
- The system validates the k1 segment format
- Structure
THEN:
The K1 segment is accepted for comment extraction if format is valid, otherwise it is rejected with invalid format error
β Consolidated Acceptance Criteria
- The system extracts the free-form comment text from the K1 segment → the comment text is extracted and prepared for storage in the cargo record
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExtractFreeformCommentText(["Start Step"])
E_ExtractFreeformCommentText(["End Step"])
N_ExtractFreeformCommentText_Node0{"The system extracts the free-form
comment text from the K1 segment"}:::decision N_ExtractFreeformCommentText_Node0_action["The comment text is extracted and
prepared for storage in the cargo
record"]:::main N_ExtractFreeformCommentText_Node0 -- Yes --> N_ExtractFreeformCommentText_Node0_action N_ExtractFreeformCommentText_Node0_action --> E_ExtractFreeformCommentText S_ExtractFreeformCommentText --> N_ExtractFreeformCommentText_Node0 N_ExtractFreeformCommentText_Node0 -- No --> E_ExtractFreeformCommentText
comment text from the K1 segment"}:::decision N_ExtractFreeformCommentText_Node0_action["The comment text is extracted and
prepared for storage in the cargo
record"]:::main N_ExtractFreeformCommentText_Node0 -- Yes --> N_ExtractFreeformCommentText_Node0_action N_ExtractFreeformCommentText_Node0_action --> E_ExtractFreeformCommentText S_ExtractFreeformCommentText --> N_ExtractFreeformCommentText_Node0 N_ExtractFreeformCommentText_Node0 -- No --> E_ExtractFreeformCommentText
File: GCX016.cbl
GIVEN:
A valid K1 remarks segment associated with an X4 segment
WHEN:
The system extracts the free-form comment text from the K1 segment
THEN:
- The comment text is extracted
- Prepared for storage in the cargo record
β Consolidated Acceptance Criteria
- The system stores the comment in the cargo record → the comment is successfully stored in the cargo record and associated with the X4 segment
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_StoreCommentinCargoRecord(["Start Step"])
E_StoreCommentinCargoRecord(["End Step"])
N_StoreCommentinCargoRecord_Node0{"The system stores the comment in
the cargo record"}:::decision N_StoreCommentinCargoRecord_Node0_action["The comment is successfully stored
in the cargo record and associated
with the X4 segment"]:::main N_StoreCommentinCargoRecord_Node0 -- Yes --> N_StoreCommentinCargoRecord_Node0_action N_StoreCommentinCargoRecord_Node0_action --> E_StoreCommentinCargoRecord S_StoreCommentinCargoRecord --> N_StoreCommentinCargoRecord_Node0 N_StoreCommentinCargoRecord_Node0 -- No --> E_StoreCommentinCargoRecord
the cargo record"}:::decision N_StoreCommentinCargoRecord_Node0_action["The comment is successfully stored
in the cargo record and associated
with the X4 segment"]:::main N_StoreCommentinCargoRecord_Node0 -- Yes --> N_StoreCommentinCargoRecord_Node0_action N_StoreCommentinCargoRecord_Node0_action --> E_StoreCommentinCargoRecord S_StoreCommentinCargoRecord --> N_StoreCommentinCargoRecord_Node0 N_StoreCommentinCargoRecord_Node0 -- No --> E_StoreCommentinCargoRecord
File: GCX016.cbl
GIVEN:
A valid comment extracted from K1 segment with comment count less than 4
WHEN:
The system stores the comment in the cargo record
THEN:
- The comment is successfully stored in the cargo record
- Associated with the x4 segment
β Consolidated Acceptance Criteria
- The system increments the comment counter for the X4 segment → the comment counter is increased by 1 to reflect the new comment count
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IncrementCommentCounter(["Start Step"])
E_IncrementCommentCounter(["End Step"])
N_IncrementCommentCounter_Node0{"The system increments the comment
counter for the X4 segment"}:::decision N_IncrementCommentCounter_Node0_action["The comment counter is increased by
1 to reflect the new comment count"]:::main N_IncrementCommentCounter_Node0 -- Yes --> N_IncrementCommentCounter_Node0_action N_IncrementCommentCounter_Node0_action --> E_IncrementCommentCounter S_IncrementCommentCounter --> N_IncrementCommentCounter_Node0 N_IncrementCommentCounter_Node0 -- No --> E_IncrementCommentCounter
counter for the X4 segment"}:::decision N_IncrementCommentCounter_Node0_action["The comment counter is increased by
1 to reflect the new comment count"]:::main N_IncrementCommentCounter_Node0 -- Yes --> N_IncrementCommentCounter_Node0_action N_IncrementCommentCounter_Node0_action --> E_IncrementCommentCounter S_IncrementCommentCounter --> N_IncrementCommentCounter_Node0 N_IncrementCommentCounter_Node0 -- No --> E_IncrementCommentCounter
File: GCX016.cbl
GIVEN:
A comment has been successfully stored in the cargo record
WHEN:
The system increments the comment counter for the X4 segment
THEN:
The comment counter is increased by 1 to reflect the new comment count
β Consolidated Acceptance Criteria
- The system checks if there are more K1 segments to process → processing continues with the next K1 segment if available, otherwise proceeds to associate all comments with the X4 segment
- The system checks for additional K1 segments in the message → processing continues with next K1 segment if more exist, or proceeds to comment count validation if no more segments
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MoreK1Segments(["Start Step"])
E_MoreK1Segments(["End Step"])
N_MoreK1Segments_Node0{"The system checks if there are more
K1 segments to process"}:::decision N_MoreK1Segments_Node0_action["Processing continues with the next
K1 segment if available, otherwise
proceeds to associate all comments
with the X4 segment"]:::main N_MoreK1Segments_Node0 -- Yes --> N_MoreK1Segments_Node0_action N_MoreK1Segments_Node0_action --> E_MoreK1Segments S_MoreK1Segments --> N_MoreK1Segments_Node0 N_MoreK1Segments_Node1{"The system checks for additional K1
segments in the message"}:::decision N_MoreK1Segments_Node1_action["Processing continues with next K1
segment if more exist, or proceeds
to comment count validation if no
more segments"]:::main N_MoreK1Segments_Node1 -- Yes --> N_MoreK1Segments_Node1_action N_MoreK1Segments_Node1_action --> E_MoreK1Segments N_MoreK1Segments_Node0 -- No --> N_MoreK1Segments_Node1 N_MoreK1Segments_Node1 -- No --> E_MoreK1Segments
K1 segments to process"}:::decision N_MoreK1Segments_Node0_action["Processing continues with the next
K1 segment if available, otherwise
proceeds to associate all comments
with the X4 segment"]:::main N_MoreK1Segments_Node0 -- Yes --> N_MoreK1Segments_Node0_action N_MoreK1Segments_Node0_action --> E_MoreK1Segments S_MoreK1Segments --> N_MoreK1Segments_Node0 N_MoreK1Segments_Node1{"The system checks for additional K1
segments in the message"}:::decision N_MoreK1Segments_Node1_action["Processing continues with next K1
segment if more exist, or proceeds
to comment count validation if no
more segments"]:::main N_MoreK1Segments_Node1 -- Yes --> N_MoreK1Segments_Node1_action N_MoreK1Segments_Node1_action --> E_MoreK1Segments N_MoreK1Segments_Node0 -- No --> N_MoreK1Segments_Node1 N_MoreK1Segments_Node1 -- No --> E_MoreK1Segments
File: GCX016.cbl
GIVEN:
A K1 segment has been processed for an X4 segment
WHEN:
The system checks if there are more K1 segments to process
THEN:
Processing continues with the next K1 segment if available, otherwise proceeds to associate all comments with the X4 segment
File: GCX016.cbl
GIVEN:
A K1 segment has been processed and stored
WHEN:
The system checks for additional K1 segments in the message
THEN:
Processing continues with next K1 segment if more exist, or proceeds to comment count validation if no more segments
β Consolidated Acceptance Criteria
- The system associates the collected comments with the X4 segment → all comments are linked to the X4 segment for cargo record updates
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AssociateCommentswithX4Segment(["Start Step"])
E_AssociateCommentswithX4Segment(["End Step"])
N_AssociateCommentswithX4Segment_Node0{"The system associates the collected
comments with the X4 segment"}:::decision N_AssociateCommentswithX4Segment_Node0_action["All comments are linked to the X4
segment for cargo record updates"]:::main N_AssociateCommentswithX4Segment_Node0 -- Yes --> N_AssociateCommentswithX4Segment_Node0_action N_AssociateCommentswithX4Segment_Node0_action --> E_AssociateCommentswithX4Segment S_AssociateCommentswithX4Segment --> N_AssociateCommentswithX4Segment_Node0 N_AssociateCommentswithX4Segment_Node0 -- No --> E_AssociateCommentswithX4Segment
comments with the X4 segment"}:::decision N_AssociateCommentswithX4Segment_Node0_action["All comments are linked to the X4
segment for cargo record updates"]:::main N_AssociateCommentswithX4Segment_Node0 -- Yes --> N_AssociateCommentswithX4Segment_Node0_action N_AssociateCommentswithX4Segment_Node0_action --> E_AssociateCommentswithX4Segment S_AssociateCommentswithX4Segment --> N_AssociateCommentswithX4Segment_Node0 N_AssociateCommentswithX4Segment_Node0 -- No --> E_AssociateCommentswithX4Segment
File: GCX016.cbl
GIVEN:
All K1 segments for an X4 segment have been processed
WHEN:
The system associates the collected comments with the X4 segment
THEN:
All comments are linked to the X4 segment for cargo record updates
β Consolidated Acceptance Criteria
- The system updates the cargo record with the remarks → the cargo record is updated with all K1 remarks for future reference and processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UpdateCargoRecordwithRemarks(["Start Step"])
E_UpdateCargoRecordwithRemarks(["End Step"])
N_UpdateCargoRecordwithRemarks_Node0{"The system updates the cargo record
with the remarks"}:::decision N_UpdateCargoRecordwithRemarks_Node0_action["The cargo record is updated with
all K1 remarks for future reference
and processing"]:::main N_UpdateCargoRecordwithRemarks_Node0 -- Yes --> N_UpdateCargoRecordwithRemarks_Node0_action N_UpdateCargoRecordwithRemarks_Node0_action --> E_UpdateCargoRecordwithRemarks S_UpdateCargoRecordwithRemarks --> N_UpdateCargoRecordwithRemarks_Node0 N_UpdateCargoRecordwithRemarks_Node0 -- No --> E_UpdateCargoRecordwithRemarks
with the remarks"}:::decision N_UpdateCargoRecordwithRemarks_Node0_action["The cargo record is updated with
all K1 remarks for future reference
and processing"]:::main N_UpdateCargoRecordwithRemarks_Node0 -- Yes --> N_UpdateCargoRecordwithRemarks_Node0_action N_UpdateCargoRecordwithRemarks_Node0_action --> E_UpdateCargoRecordwithRemarks S_UpdateCargoRecordwithRemarks --> N_UpdateCargoRecordwithRemarks_Node0 N_UpdateCargoRecordwithRemarks_Node0 -- No --> E_UpdateCargoRecordwithRemarks
File: GCX016.cbl
GIVEN:
Comments have been associated with an X4 segment
WHEN:
The system updates the cargo record with the remarks
THEN:
- The cargo record is updated with all k1 remarks for future reference
- Processing
β Consolidated Acceptance Criteria
- The system logs the completion of K1 processing → a log entry is created indicating the completion status of K1 remarks processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogK1ProcessingComplete(["Start Step"])
E_LogK1ProcessingComplete(["End Step"])
N_LogK1ProcessingComplete_Node0{"The system logs the completion of
K1 processing"}:::decision N_LogK1ProcessingComplete_Node0_action["A log entry is created indicating
the completion status of K1 remarks
processing"]:::main N_LogK1ProcessingComplete_Node0 -- Yes --> N_LogK1ProcessingComplete_Node0_action N_LogK1ProcessingComplete_Node0_action --> E_LogK1ProcessingComplete S_LogK1ProcessingComplete --> N_LogK1ProcessingComplete_Node0 N_LogK1ProcessingComplete_Node0 -- No --> E_LogK1ProcessingComplete
K1 processing"}:::decision N_LogK1ProcessingComplete_Node0_action["A log entry is created indicating
the completion status of K1 remarks
processing"]:::main N_LogK1ProcessingComplete_Node0 -- Yes --> N_LogK1ProcessingComplete_Node0_action N_LogK1ProcessingComplete_Node0_action --> E_LogK1ProcessingComplete S_LogK1ProcessingComplete --> N_LogK1ProcessingComplete_Node0 N_LogK1ProcessingComplete_Node0 -- No --> E_LogK1ProcessingComplete
File: GCX016.cbl
GIVEN:
K1 segment processing has completed (successfully or with errors)
WHEN:
The system logs the completion of K1 processing
THEN:
A log entry is created indicating the completion status of K1 remarks processing
β Consolidated Acceptance Criteria
- The system processes the X4 segment disposition code → the system extracts the disposition code, checks if the current port is Laredo, searches the KCSM configuration table for the disposition code, and sets KCSM integration flag if found, otherwise continues with standard processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CheckifdispositioncodesareconfiguredforKCSMsystemprocessingatLaredoport(["Start Step"])
E_CheckifdispositioncodesareconfiguredforKCSMsystemprocessingatLaredoport(["End Step"])
N_CheckifdispositioncodesareconfiguredforKCSMsystemprocessingatLaredoport_Node0{"The system processes the X4 segment
disposition code"}:::decision N_CheckifdispositioncodesareconfiguredforKCSMsystemprocessingatLaredoport_Node0_action["The system extracts the disposition
code, checks if the current port is
Laredo, searches the KCSM
configuration table for the
disposition code, and sets KCSM
integration flag if found, otherwise
continues with standard processing"]:::main N_CheckifdispositioncodesareconfiguredforKCSMsystemprocessingatLaredoport_Node0 -- Yes --> N_CheckifdispositioncodesareconfiguredforKCSMsystemprocessingatLaredoport_Node0_action N_CheckifdispositioncodesareconfiguredforKCSMsystemprocessingatLaredoport_Node0_action --> E_CheckifdispositioncodesareconfiguredforKCSMsystemprocessingatLaredoport S_CheckifdispositioncodesareconfiguredforKCSMsystemprocessingatLaredoport --> N_CheckifdispositioncodesareconfiguredforKCSMsystemprocessingatLaredoport_Node0 N_CheckifdispositioncodesareconfiguredforKCSMsystemprocessingatLaredoport_Node0 -- No --> E_CheckifdispositioncodesareconfiguredforKCSMsystemprocessingatLaredoport
disposition code"}:::decision N_CheckifdispositioncodesareconfiguredforKCSMsystemprocessingatLaredoport_Node0_action["The system extracts the disposition
code, checks if the current port is
Laredo, searches the KCSM
configuration table for the
disposition code, and sets KCSM
integration flag if found, otherwise
continues with standard processing"]:::main N_CheckifdispositioncodesareconfiguredforKCSMsystemprocessingatLaredoport_Node0 -- Yes --> N_CheckifdispositioncodesareconfiguredforKCSMsystemprocessingatLaredoport_Node0_action N_CheckifdispositioncodesareconfiguredforKCSMsystemprocessingatLaredoport_Node0_action --> E_CheckifdispositioncodesareconfiguredforKCSMsystemprocessingatLaredoport S_CheckifdispositioncodesareconfiguredforKCSMsystemprocessingatLaredoport --> N_CheckifdispositioncodesareconfiguredforKCSMsystemprocessingatLaredoport_Node0 N_CheckifdispositioncodesareconfiguredforKCSMsystemprocessingatLaredoport_Node0 -- No --> E_CheckifdispositioncodesareconfiguredforKCSMsystemprocessingatLaredoport
File: GCX016.cbl
GIVEN:
An X4 segment is received with a disposition code and the system has access to port configuration and KCSM configuration table
WHEN:
The system processes the X4 segment disposition code
THEN:
The system extracts the disposition code, checks if the current port is Laredo, searches the KCSM configuration table for the disposition code, and sets KCSM integration flag if found, otherwise continues with standard processing
β Consolidated Acceptance Criteria
- The system accesses the KCSM configuration table and searches for the disposition code → the system returns whether the disposition code is found in the KCSM configuration table
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SearchforDispositionCodeinKCSMTable(["Start Step"])
E_SearchforDispositionCodeinKCSMTable(["End Step"])
N_SearchforDispositionCodeinKCSMTable_Node0{"The system accesses the KCSM
configuration table and searches for
the disposition code"}:::decision N_SearchforDispositionCodeinKCSMTable_Node0_action["The system returns whether the
disposition code is found in the
KCSM configuration table"]:::main N_SearchforDispositionCodeinKCSMTable_Node0 -- Yes --> N_SearchforDispositionCodeinKCSMTable_Node0_action N_SearchforDispositionCodeinKCSMTable_Node0_action --> E_SearchforDispositionCodeinKCSMTable S_SearchforDispositionCodeinKCSMTable --> N_SearchforDispositionCodeinKCSMTable_Node0 N_SearchforDispositionCodeinKCSMTable_Node0 -- No --> E_SearchforDispositionCodeinKCSMTable
configuration table and searches for
the disposition code"}:::decision N_SearchforDispositionCodeinKCSMTable_Node0_action["The system returns whether the
disposition code is found in the
KCSM configuration table"]:::main N_SearchforDispositionCodeinKCSMTable_Node0 -- Yes --> N_SearchforDispositionCodeinKCSMTable_Node0_action N_SearchforDispositionCodeinKCSMTable_Node0_action --> E_SearchforDispositionCodeinKCSMTable S_SearchforDispositionCodeinKCSMTable --> N_SearchforDispositionCodeinKCSMTable_Node0 N_SearchforDispositionCodeinKCSMTable_Node0 -- No --> E_SearchforDispositionCodeinKCSMTable
File: GCX016.cbl
GIVEN:
The port location is Laredo and a disposition code has been extracted from the X4 segment
WHEN:
- The system accesses the kcsm configuration table
- Searches for the disposition code
THEN:
The system returns whether the disposition code is found in the KCSM configuration table
β Consolidated Acceptance Criteria
- The system confirms KCSM processing is required → the system marks the cargo for KCSM processing and sets the KCSM integration flag to enable downstream KCSM system integration
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetKCSMIntegrationFlag(["Start Step"])
E_SetKCSMIntegrationFlag(["End Step"])
N_SetKCSMIntegrationFlag_Node0{"The system confirms KCSM processing
is required"}:::decision N_SetKCSMIntegrationFlag_Node0_action["The system marks the cargo for KCSM
processing and sets the KCSM
integration flag to enable
downstream KCSM system integration"]:::main N_SetKCSMIntegrationFlag_Node0 -- Yes --> N_SetKCSMIntegrationFlag_Node0_action N_SetKCSMIntegrationFlag_Node0_action --> E_SetKCSMIntegrationFlag S_SetKCSMIntegrationFlag --> N_SetKCSMIntegrationFlag_Node0 N_SetKCSMIntegrationFlag_Node0 -- No --> E_SetKCSMIntegrationFlag
is required"}:::decision N_SetKCSMIntegrationFlag_Node0_action["The system marks the cargo for KCSM
processing and sets the KCSM
integration flag to enable
downstream KCSM system integration"]:::main N_SetKCSMIntegrationFlag_Node0 -- Yes --> N_SetKCSMIntegrationFlag_Node0_action N_SetKCSMIntegrationFlag_Node0_action --> E_SetKCSMIntegrationFlag S_SetKCSMIntegrationFlag --> N_SetKCSMIntegrationFlag_Node0 N_SetKCSMIntegrationFlag_Node0 -- No --> E_SetKCSMIntegrationFlag
File: GCX016.cbl
GIVEN:
The disposition code is found in the KCSM configuration table and the port is Laredo
WHEN:
The system confirms KCSM processing is required
THEN:
- The system marks the cargo for kcsm processing
- Sets the kcsm integration flag to enable downstream kcsm system integration
β Consolidated Acceptance Criteria
- The system completes the KCSM validation workflow → the system logs the KCSM validation result indicating whether KCSM integration was enabled or standard processing was selected
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogKCSMValidationResult(["Start Step"])
E_LogKCSMValidationResult(["End Step"])
N_LogKCSMValidationResult_Node0{"The system completes the KCSM
validation workflow"}:::decision N_LogKCSMValidationResult_Node0_action["The system logs the KCSM validation
result indicating whether KCSM
integration was enabled or standard
processing was selected"]:::main N_LogKCSMValidationResult_Node0 -- Yes --> N_LogKCSMValidationResult_Node0_action N_LogKCSMValidationResult_Node0_action --> E_LogKCSMValidationResult S_LogKCSMValidationResult --> N_LogKCSMValidationResult_Node0 N_LogKCSMValidationResult_Node0 -- No --> E_LogKCSMValidationResult
validation workflow"}:::decision N_LogKCSMValidationResult_Node0_action["The system logs the KCSM validation
result indicating whether KCSM
integration was enabled or standard
processing was selected"]:::main N_LogKCSMValidationResult_Node0 -- Yes --> N_LogKCSMValidationResult_Node0_action N_LogKCSMValidationResult_Node0_action --> E_LogKCSMValidationResult S_LogKCSMValidationResult --> N_LogKCSMValidationResult_Node0 N_LogKCSMValidationResult_Node0 -- No --> E_LogKCSMValidationResult
File: GCX016.cbl
GIVEN:
The KCSM validation process has completed either with KCSM integration enabled or standard processing continuation
WHEN:
The system completes the KCSM validation workflow
THEN:
The system logs the KCSM validation result indicating whether KCSM integration was enabled or standard processing was selected
β Consolidated Acceptance Criteria
- The system checks the disposition code configuration in AECWRKTB table → the system determines if the disposition code is configured for KCSM transmission
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CheckDispositionCodeinAECWRKTBTable(["Start Step"])
E_CheckDispositionCodeinAECWRKTBTable(["End Step"])
N_CheckDispositionCodeinAECWRKTBTable_Node0{"The system checks the disposition
code configuration in AECWRKTB table"}:::decision N_CheckDispositionCodeinAECWRKTBTable_Node0_action["The system determines if the
disposition code is configured for
KCSM transmission"]:::main N_CheckDispositionCodeinAECWRKTBTable_Node0 -- Yes --> N_CheckDispositionCodeinAECWRKTBTable_Node0_action N_CheckDispositionCodeinAECWRKTBTable_Node0_action --> E_CheckDispositionCodeinAECWRKTBTable S_CheckDispositionCodeinAECWRKTBTable --> N_CheckDispositionCodeinAECWRKTBTable_Node0 N_CheckDispositionCodeinAECWRKTBTable_Node0 -- No --> E_CheckDispositionCodeinAECWRKTBTable
code configuration in AECWRKTB table"}:::decision N_CheckDispositionCodeinAECWRKTBTable_Node0_action["The system determines if the
disposition code is configured for
KCSM transmission"]:::main N_CheckDispositionCodeinAECWRKTBTable_Node0 -- Yes --> N_CheckDispositionCodeinAECWRKTBTable_Node0_action N_CheckDispositionCodeinAECWRKTBTable_Node0_action --> E_CheckDispositionCodeinAECWRKTBTable S_CheckDispositionCodeinAECWRKTBTable --> N_CheckDispositionCodeinAECWRKTBTable_Node0 N_CheckDispositionCodeinAECWRKTBTable_Node0 -- No --> E_CheckDispositionCodeinAECWRKTBTable
File: GCX016.cbl
GIVEN:
An X4 segment with a disposition code is received
WHEN:
The system checks the disposition code configuration in AECWRKTB table
THEN:
The system determines if the disposition code is configured for KCSM transmission
β Consolidated Acceptance Criteria
- The system validates the port location → kCSM processing continues only if the port is Laredo, otherwise processing is skipped
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_PortisLaredo(["Start Step"])
E_PortisLaredo(["End Step"])
N_PortisLaredo_Node0{"The system validates the port
location"}:::decision N_PortisLaredo_Node0_action["KCSM processing continues only if
the port is Laredo, otherwise
processing is skipped"]:::main N_PortisLaredo_Node0 -- Yes --> N_PortisLaredo_Node0_action N_PortisLaredo_Node0_action --> E_PortisLaredo S_PortisLaredo --> N_PortisLaredo_Node0 N_PortisLaredo_Node0 -- No --> E_PortisLaredo
location"}:::decision N_PortisLaredo_Node0_action["KCSM processing continues only if
the port is Laredo, otherwise
processing is skipped"]:::main N_PortisLaredo_Node0 -- Yes --> N_PortisLaredo_Node0_action N_PortisLaredo_Node0_action --> E_PortisLaredo S_PortisLaredo --> N_PortisLaredo_Node0 N_PortisLaredo_Node0 -- No --> E_PortisLaredo
File: GCX016.cbl
GIVEN:
A disposition code is configured for KCSM transmission
WHEN:
The system validates the port location
THEN:
KCSM processing continues only if the port is Laredo, otherwise processing is skipped
β Consolidated Acceptance Criteria
- The system processes the EDI message for transmission → the EDI 350 message data is copied to the transmission file
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CopyEDI350MessagetoTransmissionFile(["Start Step"])
E_CopyEDI350MessagetoTransmissionFile(["End Step"])
N_CopyEDI350MessagetoTransmissionFile_Node0{"The system processes the EDI
message for transmission"}:::decision N_CopyEDI350MessagetoTransmissionFile_Node0_action["The EDI 350 message data is copied
to the transmission file"]:::main N_CopyEDI350MessagetoTransmissionFile_Node0 -- Yes --> N_CopyEDI350MessagetoTransmissionFile_Node0_action N_CopyEDI350MessagetoTransmissionFile_Node0_action --> E_CopyEDI350MessagetoTransmissionFile S_CopyEDI350MessagetoTransmissionFile --> N_CopyEDI350MessagetoTransmissionFile_Node0 N_CopyEDI350MessagetoTransmissionFile_Node0 -- No --> E_CopyEDI350MessagetoTransmissionFile
message for transmission"}:::decision N_CopyEDI350MessagetoTransmissionFile_Node0_action["The EDI 350 message data is copied
to the transmission file"]:::main N_CopyEDI350MessagetoTransmissionFile_Node0 -- Yes --> N_CopyEDI350MessagetoTransmissionFile_Node0_action N_CopyEDI350MessagetoTransmissionFile_Node0_action --> E_CopyEDI350MessagetoTransmissionFile S_CopyEDI350MessagetoTransmissionFile --> N_CopyEDI350MessagetoTransmissionFile_Node0 N_CopyEDI350MessagetoTransmissionFile_Node0 -- No --> E_CopyEDI350MessagetoTransmissionFile
File: GCX016.cbl
GIVEN:
The disposition code is configured for KCSM and the port is Laredo
WHEN:
The system processes the EDI message for transmission
THEN:
The EDI 350 message data is copied to the transmission file
β Consolidated Acceptance Criteria
- The system populates the segment with message data → eDI segment data is copied into the A9DP segment for transmission
- EDI segment data needs to be stored for transmission → the system copies the EDI segment data from the 350 message into the A9DP dependent segment
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CopyEDISegmentDatatoA9DP(["Start Step"])
E_CopyEDISegmentDatatoA9DP(["End Step"])
N_CopyEDISegmentDatatoA9DP_Node0{"The system populates the segment
with message data"}:::decision N_CopyEDISegmentDatatoA9DP_Node0_action["EDI segment data is copied into the
A9DP segment for transmission"]:::main N_CopyEDISegmentDatatoA9DP_Node0 -- Yes --> N_CopyEDISegmentDatatoA9DP_Node0_action N_CopyEDISegmentDatatoA9DP_Node0_action --> E_CopyEDISegmentDatatoA9DP S_CopyEDISegmentDatatoA9DP --> N_CopyEDISegmentDatatoA9DP_Node0 N_CopyEDISegmentDatatoA9DP_Node1{"EDI segment data needs to be stored
for transmission"}:::decision N_CopyEDISegmentDatatoA9DP_Node1_action["The system copies the EDI segment
data from the 350 message into the
A9DP dependent segment"]:::main N_CopyEDISegmentDatatoA9DP_Node1 -- Yes --> N_CopyEDISegmentDatatoA9DP_Node1_action N_CopyEDISegmentDatatoA9DP_Node1_action --> E_CopyEDISegmentDatatoA9DP N_CopyEDISegmentDatatoA9DP_Node0 -- No --> N_CopyEDISegmentDatatoA9DP_Node1 N_CopyEDISegmentDatatoA9DP_Node1 -- No --> E_CopyEDISegmentDatatoA9DP
with message data"}:::decision N_CopyEDISegmentDatatoA9DP_Node0_action["EDI segment data is copied into the
A9DP segment for transmission"]:::main N_CopyEDISegmentDatatoA9DP_Node0 -- Yes --> N_CopyEDISegmentDatatoA9DP_Node0_action N_CopyEDISegmentDatatoA9DP_Node0_action --> E_CopyEDISegmentDatatoA9DP S_CopyEDISegmentDatatoA9DP --> N_CopyEDISegmentDatatoA9DP_Node0 N_CopyEDISegmentDatatoA9DP_Node1{"EDI segment data needs to be stored
for transmission"}:::decision N_CopyEDISegmentDatatoA9DP_Node1_action["The system copies the EDI segment
data from the 350 message into the
A9DP dependent segment"]:::main N_CopyEDISegmentDatatoA9DP_Node1 -- Yes --> N_CopyEDISegmentDatatoA9DP_Node1_action N_CopyEDISegmentDatatoA9DP_Node1_action --> E_CopyEDISegmentDatatoA9DP N_CopyEDISegmentDatatoA9DP_Node0 -- No --> N_CopyEDISegmentDatatoA9DP_Node1 N_CopyEDISegmentDatatoA9DP_Node1 -- No --> E_CopyEDISegmentDatatoA9DP
File: GCX016.cbl
GIVEN:
A9DP transmission dependent segment has been created
WHEN:
The system populates the segment with message data
THEN:
EDI segment data is copied into the A9DP segment for transmission
File: GCX016.cbl
GIVEN:
Transmission control information has been set in the A9DP segment
WHEN:
EDI segment data needs to be stored for transmission
THEN:
The system copies the EDI segment data from the 350 message into the A9DP dependent segment
β Consolidated Acceptance Criteria
- The system requires broker information for transmission → kCSM broker information is retrieved from GCSTBRT broker tables
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LookupKCSMBrokerInformation(["Start Step"])
E_LookupKCSMBrokerInformation(["End Step"])
N_LookupKCSMBrokerInformation_Node0{"The system requires broker
information for transmission"}:::decision N_LookupKCSMBrokerInformation_Node0_action["KCSM broker information is
retrieved from GCSTBRT broker tables"]:::main N_LookupKCSMBrokerInformation_Node0 -- Yes --> N_LookupKCSMBrokerInformation_Node0_action N_LookupKCSMBrokerInformation_Node0_action --> E_LookupKCSMBrokerInformation S_LookupKCSMBrokerInformation --> N_LookupKCSMBrokerInformation_Node0 N_LookupKCSMBrokerInformation_Node0 -- No --> E_LookupKCSMBrokerInformation
information for transmission"}:::decision N_LookupKCSMBrokerInformation_Node0_action["KCSM broker information is
retrieved from GCSTBRT broker tables"]:::main N_LookupKCSMBrokerInformation_Node0 -- Yes --> N_LookupKCSMBrokerInformation_Node0_action N_LookupKCSMBrokerInformation_Node0_action --> E_LookupKCSMBrokerInformation S_LookupKCSMBrokerInformation --> N_LookupKCSMBrokerInformation_Node0 N_LookupKCSMBrokerInformation_Node0 -- No --> E_LookupKCSMBrokerInformation
File: GCX016.cbl
GIVEN:
EDI segment data has been copied to A9DP segment
WHEN:
The system requires broker information for transmission
THEN:
KCSM broker information is retrieved from GCSTBRT broker tables
β Consolidated Acceptance Criteria
- The system configures transmission settings → transmission parameters are set according to KCSM processing requirements
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetTransmissionParameters(["Start Step"])
E_SetTransmissionParameters(["End Step"])
N_SetTransmissionParameters_Node0{"The system configures transmission
settings"}:::decision N_SetTransmissionParameters_Node0_action["Transmission parameters are set
according to KCSM processing
requirements"]:::main N_SetTransmissionParameters_Node0 -- Yes --> N_SetTransmissionParameters_Node0_action N_SetTransmissionParameters_Node0_action --> E_SetTransmissionParameters S_SetTransmissionParameters --> N_SetTransmissionParameters_Node0 N_SetTransmissionParameters_Node0 -- No --> E_SetTransmissionParameters
settings"}:::decision N_SetTransmissionParameters_Node0_action["Transmission parameters are set
according to KCSM processing
requirements"]:::main N_SetTransmissionParameters_Node0 -- Yes --> N_SetTransmissionParameters_Node0_action N_SetTransmissionParameters_Node0_action --> E_SetTransmissionParameters S_SetTransmissionParameters --> N_SetTransmissionParameters_Node0 N_SetTransmissionParameters_Node0 -- No --> E_SetTransmissionParameters
File: GCX016.cbl
GIVEN:
KCSM broker information has been retrieved
WHEN:
The system configures transmission settings
THEN:
Transmission parameters are set according to KCSM processing requirements
β Consolidated Acceptance Criteria
- The system sets the KCSM system identifier → the transmission is tagged with the correct KCSM system identifier for message processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetKCSMSystemIdentifier(["Start Step"])
E_SetKCSMSystemIdentifier(["End Step"])
N_SetKCSMSystemIdentifier_Node0{"The system sets the KCSM system
identifier"}:::decision N_SetKCSMSystemIdentifier_Node0_action["The transmission is tagged with the
correct KCSM system identifier for
message processing"]:::main N_SetKCSMSystemIdentifier_Node0 -- Yes --> N_SetKCSMSystemIdentifier_Node0_action N_SetKCSMSystemIdentifier_Node0_action --> E_SetKCSMSystemIdentifier S_SetKCSMSystemIdentifier --> N_SetKCSMSystemIdentifier_Node0 N_SetKCSMSystemIdentifier_Node0 -- No --> E_SetKCSMSystemIdentifier
identifier"}:::decision N_SetKCSMSystemIdentifier_Node0_action["The transmission is tagged with the
correct KCSM system identifier for
message processing"]:::main N_SetKCSMSystemIdentifier_Node0 -- Yes --> N_SetKCSMSystemIdentifier_Node0_action N_SetKCSMSystemIdentifier_Node0_action --> E_SetKCSMSystemIdentifier S_SetKCSMSystemIdentifier --> N_SetKCSMSystemIdentifier_Node0 N_SetKCSMSystemIdentifier_Node0 -- No --> E_SetKCSMSystemIdentifier
File: GCX016.cbl
GIVEN:
Transmission parameters are initialized
WHEN:
The system sets the KCSM system identifier
THEN:
The transmission is tagged with the correct KCSM system identifier for message processing
β Consolidated Acceptance Criteria
- The system generates a transmission control number → a unique transmission control number is created and assigned to the transmission
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GenerateTransmissionControlNumber(["Start Step"])
E_GenerateTransmissionControlNumber(["End Step"])
N_GenerateTransmissionControlNumber_Node0{"The system generates a transmission
control number"}:::decision N_GenerateTransmissionControlNumber_Node0_action["A unique transmission control
number is created and assigned to
the transmission"]:::main N_GenerateTransmissionControlNumber_Node0 -- Yes --> N_GenerateTransmissionControlNumber_Node0_action N_GenerateTransmissionControlNumber_Node0_action --> E_GenerateTransmissionControlNumber S_GenerateTransmissionControlNumber --> N_GenerateTransmissionControlNumber_Node0 N_GenerateTransmissionControlNumber_Node0 -- No --> E_GenerateTransmissionControlNumber
control number"}:::decision N_GenerateTransmissionControlNumber_Node0_action["A unique transmission control
number is created and assigned to
the transmission"]:::main N_GenerateTransmissionControlNumber_Node0 -- Yes --> N_GenerateTransmissionControlNumber_Node0_action N_GenerateTransmissionControlNumber_Node0_action --> E_GenerateTransmissionControlNumber S_GenerateTransmissionControlNumber --> N_GenerateTransmissionControlNumber_Node0 N_GenerateTransmissionControlNumber_Node0 -- No --> E_GenerateTransmissionControlNumber
File: GCX016.cbl
GIVEN:
KCSM system identifier is set
WHEN:
The system generates a transmission control number
THEN:
- A unique transmission control number is created
- Assigned to the transmission
β Consolidated Acceptance Criteria
- The system creates the A9RT root segment → a properly formatted A9RT root segment is created with all required fields
- A9RT root segment creation is initiated → a9RT root segment is created with transmission control and routing information
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CreateA9RTRootSegment(["Start Step"])
E_CreateA9RTRootSegment(["End Step"])
N_CreateA9RTRootSegment_Node0{"The system creates the A9RT root
segment"}:::decision N_CreateA9RTRootSegment_Node0_action["A properly formatted A9RT root
segment is created with all required
fields"]:::main N_CreateA9RTRootSegment_Node0 -- Yes --> N_CreateA9RTRootSegment_Node0_action N_CreateA9RTRootSegment_Node0_action --> E_CreateA9RTRootSegment S_CreateA9RTRootSegment --> N_CreateA9RTRootSegment_Node0 N_CreateA9RTRootSegment_Node1{"A9RT root segment creation is
initiated"}:::decision N_CreateA9RTRootSegment_Node1_action["A9RT root segment is created with
transmission control and routing
information"]:::main N_CreateA9RTRootSegment_Node1 -- Yes --> N_CreateA9RTRootSegment_Node1_action N_CreateA9RTRootSegment_Node1_action --> E_CreateA9RTRootSegment N_CreateA9RTRootSegment_Node0 -- No --> N_CreateA9RTRootSegment_Node1 N_CreateA9RTRootSegment_Node1 -- No --> E_CreateA9RTRootSegment
segment"}:::decision N_CreateA9RTRootSegment_Node0_action["A properly formatted A9RT root
segment is created with all required
fields"]:::main N_CreateA9RTRootSegment_Node0 -- Yes --> N_CreateA9RTRootSegment_Node0_action N_CreateA9RTRootSegment_Node0_action --> E_CreateA9RTRootSegment S_CreateA9RTRootSegment --> N_CreateA9RTRootSegment_Node0 N_CreateA9RTRootSegment_Node1{"A9RT root segment creation is
initiated"}:::decision N_CreateA9RTRootSegment_Node1_action["A9RT root segment is created with
transmission control and routing
information"]:::main N_CreateA9RTRootSegment_Node1 -- Yes --> N_CreateA9RTRootSegment_Node1_action N_CreateA9RTRootSegment_Node1_action --> E_CreateA9RTRootSegment N_CreateA9RTRootSegment_Node0 -- No --> N_CreateA9RTRootSegment_Node1 N_CreateA9RTRootSegment_Node1 -- No --> E_CreateA9RTRootSegment
File: GCX016.cbl
GIVEN:
Transmission control number is generated
WHEN:
The system creates the A9RT root segment
THEN:
A properly formatted A9RT root segment is created with all required fields
File: GCX016.cbl
GIVEN:
message routing information is configured
WHEN:
A9RT root segment creation is initiated
THEN:
- A9rt root segment is created with transmission control
- Routing information
β Consolidated Acceptance Criteria
- The system sets transmission date and time → current system date and time are recorded in the transmission segment
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetTransmissionDateTime(["Start Step"])
E_SetTransmissionDateTime(["End Step"])
N_SetTransmissionDateTime_Node0{"The system sets transmission date
and time"}:::decision N_SetTransmissionDateTime_Node0_action["Current system date and time are
recorded in the transmission segment"]:::main N_SetTransmissionDateTime_Node0 -- Yes --> N_SetTransmissionDateTime_Node0_action N_SetTransmissionDateTime_Node0_action --> E_SetTransmissionDateTime S_SetTransmissionDateTime --> N_SetTransmissionDateTime_Node0 N_SetTransmissionDateTime_Node0 -- No --> E_SetTransmissionDateTime
and time"}:::decision N_SetTransmissionDateTime_Node0_action["Current system date and time are
recorded in the transmission segment"]:::main N_SetTransmissionDateTime_Node0 -- Yes --> N_SetTransmissionDateTime_Node0_action N_SetTransmissionDateTime_Node0_action --> E_SetTransmissionDateTime S_SetTransmissionDateTime --> N_SetTransmissionDateTime_Node0 N_SetTransmissionDateTime_Node0 -- No --> E_SetTransmissionDateTime
File: GCX016.cbl
GIVEN:
A9RT root segment is created
WHEN:
- The system sets transmission date
- Time
THEN:
- Current system date
- Time are recorded in the transmission segment
β Consolidated Acceptance Criteria
- The system configures source system information → source system identifier and related information are properly set in the transmission segment
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetSourceSystemInformation(["Start Step"])
E_SetSourceSystemInformation(["End Step"])
N_SetSourceSystemInformation_Node0{"The system configures source system
information"}:::decision N_SetSourceSystemInformation_Node0_action["Source system identifier and
related information are properly set
in the transmission segment"]:::main N_SetSourceSystemInformation_Node0 -- Yes --> N_SetSourceSystemInformation_Node0_action N_SetSourceSystemInformation_Node0_action --> E_SetSourceSystemInformation S_SetSourceSystemInformation --> N_SetSourceSystemInformation_Node0 N_SetSourceSystemInformation_Node0 -- No --> E_SetSourceSystemInformation
information"}:::decision N_SetSourceSystemInformation_Node0_action["Source system identifier and
related information are properly set
in the transmission segment"]:::main N_SetSourceSystemInformation_Node0 -- Yes --> N_SetSourceSystemInformation_Node0_action N_SetSourceSystemInformation_Node0_action --> E_SetSourceSystemInformation S_SetSourceSystemInformation --> N_SetSourceSystemInformation_Node0 N_SetSourceSystemInformation_Node0 -- No --> E_SetSourceSystemInformation
File: GCX016.cbl
GIVEN:
Transmission date and time are set
WHEN:
The system configures source system information
THEN:
- Source system identifier
- Related information are properly set in the transmission segment
β Consolidated Acceptance Criteria
- The system configures destination system information → destination system identifier and routing information are properly set in the transmission segment
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetDestinationSystemInformation(["Start Step"])
E_SetDestinationSystemInformation(["End Step"])
N_SetDestinationSystemInformation_Node0{"The system configures destination
system information"}:::decision N_SetDestinationSystemInformation_Node0_action["Destination system identifier and
routing information are properly set
in the transmission segment"]:::main N_SetDestinationSystemInformation_Node0 -- Yes --> N_SetDestinationSystemInformation_Node0_action N_SetDestinationSystemInformation_Node0_action --> E_SetDestinationSystemInformation S_SetDestinationSystemInformation --> N_SetDestinationSystemInformation_Node0 N_SetDestinationSystemInformation_Node0 -- No --> E_SetDestinationSystemInformation
system information"}:::decision N_SetDestinationSystemInformation_Node0_action["Destination system identifier and
routing information are properly set
in the transmission segment"]:::main N_SetDestinationSystemInformation_Node0 -- Yes --> N_SetDestinationSystemInformation_Node0_action N_SetDestinationSystemInformation_Node0_action --> E_SetDestinationSystemInformation S_SetDestinationSystemInformation --> N_SetDestinationSystemInformation_Node0 N_SetDestinationSystemInformation_Node0 -- No --> E_SetDestinationSystemInformation
File: GCX016.cbl
GIVEN:
Source system information is configured
WHEN:
The system configures destination system information
THEN:
- Destination system identifier
- Routing information are properly set in the transmission segment
β Consolidated Acceptance Criteria
- The system sets message type and version → correct message type and version identifiers are assigned to the transmission
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetMessageTypeandVersion(["Start Step"])
E_SetMessageTypeandVersion(["End Step"])
N_SetMessageTypeandVersion_Node0{"The system sets message type and
version"}:::decision N_SetMessageTypeandVersion_Node0_action["Correct message type and version
identifiers are assigned to the
transmission"]:::main N_SetMessageTypeandVersion_Node0 -- Yes --> N_SetMessageTypeandVersion_Node0_action N_SetMessageTypeandVersion_Node0_action --> E_SetMessageTypeandVersion S_SetMessageTypeandVersion --> N_SetMessageTypeandVersion_Node0 N_SetMessageTypeandVersion_Node0 -- No --> E_SetMessageTypeandVersion
version"}:::decision N_SetMessageTypeandVersion_Node0_action["Correct message type and version
identifiers are assigned to the
transmission"]:::main N_SetMessageTypeandVersion_Node0 -- Yes --> N_SetMessageTypeandVersion_Node0_action N_SetMessageTypeandVersion_Node0_action --> E_SetMessageTypeandVersion S_SetMessageTypeandVersion --> N_SetMessageTypeandVersion_Node0 N_SetMessageTypeandVersion_Node0 -- No --> E_SetMessageTypeandVersion
File: GCX016.cbl
GIVEN:
Destination system information is configured
WHEN:
- The system sets message type
- Version
THEN:
- Correct message type
- Version identifiers are assigned to the transmission
β Consolidated Acceptance Criteria
- The system validates transmission parameters → all required transmission parameters are verified for completeness and correctness
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ValidateTransmissionParameters(["Start Step"])
E_ValidateTransmissionParameters(["End Step"])
N_ValidateTransmissionParameters_Node0{"The system validates transmission
parameters"}:::decision N_ValidateTransmissionParameters_Node0_action["All required transmission
parameters are verified for
completeness and correctness"]:::main N_ValidateTransmissionParameters_Node0 -- Yes --> N_ValidateTransmissionParameters_Node0_action N_ValidateTransmissionParameters_Node0_action --> E_ValidateTransmissionParameters S_ValidateTransmissionParameters --> N_ValidateTransmissionParameters_Node0 N_ValidateTransmissionParameters_Node0 -- No --> E_ValidateTransmissionParameters
parameters"}:::decision N_ValidateTransmissionParameters_Node0_action["All required transmission
parameters are verified for
completeness and correctness"]:::main N_ValidateTransmissionParameters_Node0 -- Yes --> N_ValidateTransmissionParameters_Node0_action N_ValidateTransmissionParameters_Node0_action --> E_ValidateTransmissionParameters S_ValidateTransmissionParameters --> N_ValidateTransmissionParameters_Node0 N_ValidateTransmissionParameters_Node0 -- No --> E_ValidateTransmissionParameters
File: GCX016.cbl
GIVEN:
Message type and version are set
WHEN:
The system validates transmission parameters
THEN:
- All required transmission parameters are verified for completeness
- Correctness
β Consolidated Acceptance Criteria
- The system encounters validation errors → validation error details are logged for troubleshooting and audit purposes
- The system encounters validation errors for equipment data → validation error is logged with details about the failed validation criteria
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogValidationError(["Start Step"])
E_LogValidationError(["End Step"])
N_LogValidationError_Node0{"The system encounters validation
errors"}:::decision N_LogValidationError_Node0_action["Validation error details are logged
for troubleshooting and audit
purposes"]:::main N_LogValidationError_Node0 -- Yes --> N_LogValidationError_Node0_action N_LogValidationError_Node0_action --> E_LogValidationError S_LogValidationError --> N_LogValidationError_Node0 N_LogValidationError_Node1{"The system encounters validation
errors for equipment data"}:::decision N_LogValidationError_Node1_action["Validation error is logged with
details about the failed validation
criteria"]:::main N_LogValidationError_Node1 -- Yes --> N_LogValidationError_Node1_action N_LogValidationError_Node1_action --> E_LogValidationError N_LogValidationError_Node0 -- No --> N_LogValidationError_Node1 N_LogValidationError_Node1 -- No --> E_LogValidationError
errors"}:::decision N_LogValidationError_Node0_action["Validation error details are logged
for troubleshooting and audit
purposes"]:::main N_LogValidationError_Node0 -- Yes --> N_LogValidationError_Node0_action N_LogValidationError_Node0_action --> E_LogValidationError S_LogValidationError --> N_LogValidationError_Node0 N_LogValidationError_Node1{"The system encounters validation
errors for equipment data"}:::decision N_LogValidationError_Node1_action["Validation error is logged with
details about the failed validation
criteria"]:::main N_LogValidationError_Node1 -- Yes --> N_LogValidationError_Node1_action N_LogValidationError_Node1_action --> E_LogValidationError N_LogValidationError_Node0 -- No --> N_LogValidationError_Node1 N_LogValidationError_Node1 -- No --> E_LogValidationError
File: GCX016.cbl
GIVEN:
Transmission parameters validation fails
WHEN:
The system encounters validation errors
THEN:
- Validation error details are logged for troubleshooting
- Audit purposes
File: GCX016.cbl
GIVEN:
Equipment information validation has failed
WHEN:
The system encounters validation errors for equipment data
THEN:
Validation error is logged with details about the failed validation criteria
β Consolidated Acceptance Criteria
- The system initiates KCSM transmission dependent segment creation → the system retrieves EDI 350 message data from the message queue and loads it into the message array for processing
- The system needs to process EDI 350 message data → the system retrieves the EDI 350 message data from the message queue for further processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RetrieveEDI350MessageData(["Start Step"])
E_RetrieveEDI350MessageData(["End Step"])
N_RetrieveEDI350MessageData_Node0{"The system initiates KCSM
transmission dependent segment
creation"}:::decision N_RetrieveEDI350MessageData_Node0_action["The system retrieves EDI 350
message data from the message queue
and loads it into the message array
for processing"]:::main N_RetrieveEDI350MessageData_Node0 -- Yes --> N_RetrieveEDI350MessageData_Node0_action N_RetrieveEDI350MessageData_Node0_action --> E_RetrieveEDI350MessageData S_RetrieveEDI350MessageData --> N_RetrieveEDI350MessageData_Node0 N_RetrieveEDI350MessageData_Node1{"The system needs to process EDI 350
message data"}:::decision N_RetrieveEDI350MessageData_Node1_action["The system retrieves the EDI 350
message data from the message queue
for further processing"]:::main N_RetrieveEDI350MessageData_Node1 -- Yes --> N_RetrieveEDI350MessageData_Node1_action N_RetrieveEDI350MessageData_Node1_action --> E_RetrieveEDI350MessageData N_RetrieveEDI350MessageData_Node0 -- No --> N_RetrieveEDI350MessageData_Node1 N_RetrieveEDI350MessageData_Node1 -- No --> E_RetrieveEDI350MessageData
transmission dependent segment
creation"}:::decision N_RetrieveEDI350MessageData_Node0_action["The system retrieves EDI 350
message data from the message queue
and loads it into the message array
for processing"]:::main N_RetrieveEDI350MessageData_Node0 -- Yes --> N_RetrieveEDI350MessageData_Node0_action N_RetrieveEDI350MessageData_Node0_action --> E_RetrieveEDI350MessageData S_RetrieveEDI350MessageData --> N_RetrieveEDI350MessageData_Node0 N_RetrieveEDI350MessageData_Node1{"The system needs to process EDI 350
message data"}:::decision N_RetrieveEDI350MessageData_Node1_action["The system retrieves the EDI 350
message data from the message queue
for further processing"]:::main N_RetrieveEDI350MessageData_Node1 -- Yes --> N_RetrieveEDI350MessageData_Node1_action N_RetrieveEDI350MessageData_Node1_action --> E_RetrieveEDI350MessageData N_RetrieveEDI350MessageData_Node0 -- No --> N_RetrieveEDI350MessageData_Node1 N_RetrieveEDI350MessageData_Node1 -- No --> E_RetrieveEDI350MessageData
File: GCX016.cbl
GIVEN:
A message queue contains EDI 350 messages for processing
WHEN:
The system initiates KCSM transmission dependent segment creation
THEN:
- The system retrieves edi 350 message data from the message queue
- Loads it into the message array for processing
File: GCX016.cbl
GIVEN:
An EDI transmission process is initiated
WHEN:
The system needs to process EDI 350 message data
THEN:
The system retrieves the EDI 350 message data from the message queue for further processing
β Consolidated Acceptance Criteria
- The system processes message segments sequentially → the system extracts ST segment information and sets header found flag for subsequent processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExtractTransactionSetHeaderST(["Start Step"])
E_ExtractTransactionSetHeaderST(["End Step"])
N_ExtractTransactionSetHeaderST_Node0{"The system processes message
segments sequentially"}:::decision N_ExtractTransactionSetHeaderST_Node0_action["The system extracts ST segment
information and sets header found
flag for subsequent processing"]:::main N_ExtractTransactionSetHeaderST_Node0 -- Yes --> N_ExtractTransactionSetHeaderST_Node0_action N_ExtractTransactionSetHeaderST_Node0_action --> E_ExtractTransactionSetHeaderST S_ExtractTransactionSetHeaderST --> N_ExtractTransactionSetHeaderST_Node0 N_ExtractTransactionSetHeaderST_Node0 -- No --> E_ExtractTransactionSetHeaderST
segments sequentially"}:::decision N_ExtractTransactionSetHeaderST_Node0_action["The system extracts ST segment
information and sets header found
flag for subsequent processing"]:::main N_ExtractTransactionSetHeaderST_Node0 -- Yes --> N_ExtractTransactionSetHeaderST_Node0_action N_ExtractTransactionSetHeaderST_Node0_action --> E_ExtractTransactionSetHeaderST S_ExtractTransactionSetHeaderST --> N_ExtractTransactionSetHeaderST_Node0 N_ExtractTransactionSetHeaderST_Node0 -- No --> E_ExtractTransactionSetHeaderST
File: GCX016.cbl
GIVEN:
EDI 350 message contains ST segment data
WHEN:
The system processes message segments sequentially
THEN:
- The system extracts st segment information
- Sets header found flag for subsequent processing
β Consolidated Acceptance Criteria
- The system encounters M10 segment during processing → the system extracts manifest information, validates train name, and performs train lookup if vessel name does not start with 'TRAIN'
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExtractManifestInformationM10(["Start Step"])
E_ExtractManifestInformationM10(["End Step"])
N_ExtractManifestInformationM10_Node0{"The system encounters M10 segment
during processing"}:::decision N_ExtractManifestInformationM10_Node0_action["The system extracts manifest
information, validates train name,
and performs train lookup if vessel
name does not start with TRAIN"]:::main N_ExtractManifestInformationM10_Node0 -- Yes --> N_ExtractManifestInformationM10_Node0_action N_ExtractManifestInformationM10_Node0_action --> E_ExtractManifestInformationM10 S_ExtractManifestInformationM10 --> N_ExtractManifestInformationM10_Node0 N_ExtractManifestInformationM10_Node0 -- No --> E_ExtractManifestInformationM10
during processing"}:::decision N_ExtractManifestInformationM10_Node0_action["The system extracts manifest
information, validates train name,
and performs train lookup if vessel
name does not start with TRAIN"]:::main N_ExtractManifestInformationM10_Node0 -- Yes --> N_ExtractManifestInformationM10_Node0_action N_ExtractManifestInformationM10_Node0_action --> E_ExtractManifestInformationM10 S_ExtractManifestInformationM10 --> N_ExtractManifestInformationM10_Node0 N_ExtractManifestInformationM10_Node0 -- No --> E_ExtractManifestInformationM10
File: GCX016.cbl
GIVEN:
EDI 350 message contains M10 segment with manifest information
WHEN:
The system encounters M10 segment during processing
THEN:
The system extracts manifest information, validates train name, and performs train lookup if vessel name does not start with 'TRAIN'
β Consolidated Acceptance Criteria
- The system encounters P4 segment during processing → the system extracts port information and processes it for customs release procedures
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExtractPortInformationP4(["Start Step"])
E_ExtractPortInformationP4(["End Step"])
N_ExtractPortInformationP4_Node0{"The system encounters P4 segment
during processing"}:::decision N_ExtractPortInformationP4_Node0_action["The system extracts port
information and processes it for
customs release procedures"]:::main N_ExtractPortInformationP4_Node0 -- Yes --> N_ExtractPortInformationP4_Node0_action N_ExtractPortInformationP4_Node0_action --> E_ExtractPortInformationP4 S_ExtractPortInformationP4 --> N_ExtractPortInformationP4_Node0 N_ExtractPortInformationP4_Node0 -- No --> E_ExtractPortInformationP4
during processing"}:::decision N_ExtractPortInformationP4_Node0_action["The system extracts port
information and processes it for
customs release procedures"]:::main N_ExtractPortInformationP4_Node0 -- Yes --> N_ExtractPortInformationP4_Node0_action N_ExtractPortInformationP4_Node0_action --> E_ExtractPortInformationP4 S_ExtractPortInformationP4 --> N_ExtractPortInformationP4_Node0 N_ExtractPortInformationP4_Node0 -- No --> E_ExtractPortInformationP4
File: GCX016.cbl
GIVEN:
EDI 350 message contains P4 segment with port information
WHEN:
The system encounters P4 segment during processing
THEN:
- The system extracts port information
- Processes it for customs release procedures
β Consolidated Acceptance Criteria
- The system encounters V9 segment during processing → the system evaluates event codes (HMI, HRE, POD, AAD, RC, OCA, COC, LCK, ULC, SEI, SER) and applies corresponding train or cargo status changes
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExtractEventDetailsV9(["Start Step"])
E_ExtractEventDetailsV9(["End Step"])
N_ExtractEventDetailsV9_Node0{"The system encounters V9 segment
during processing"}:::decision N_ExtractEventDetailsV9_Node0_action["The system evaluates event codes
HMI, HRE, POD, AAD, RC, OCA, COC,
LCK, ULC, SEI, SER and applies
corresponding train or cargo status
changes"]:::main N_ExtractEventDetailsV9_Node0 -- Yes --> N_ExtractEventDetailsV9_Node0_action N_ExtractEventDetailsV9_Node0_action --> E_ExtractEventDetailsV9 S_ExtractEventDetailsV9 --> N_ExtractEventDetailsV9_Node0 N_ExtractEventDetailsV9_Node0 -- No --> E_ExtractEventDetailsV9
during processing"}:::decision N_ExtractEventDetailsV9_Node0_action["The system evaluates event codes
HMI, HRE, POD, AAD, RC, OCA, COC,
LCK, ULC, SEI, SER and applies
corresponding train or cargo status
changes"]:::main N_ExtractEventDetailsV9_Node0 -- Yes --> N_ExtractEventDetailsV9_Node0_action N_ExtractEventDetailsV9_Node0_action --> E_ExtractEventDetailsV9 S_ExtractEventDetailsV9 --> N_ExtractEventDetailsV9_Node0 N_ExtractEventDetailsV9_Node0 -- No --> E_ExtractEventDetailsV9
File: GCX016.cbl
GIVEN:
EDI 350 message contains V9 segment with event codes
WHEN:
The system encounters V9 segment during processing
THEN:
The system evaluates event codes (HMI, HRE, POD, AAD, RC, OCA, COC, LCK, ULC, SEI, SER) and applies corresponding train or cargo status changes
β Consolidated Acceptance Criteria
- The system encounters N7 segment during processing → the system extracts equipment details, updates car ID information in cargo records, and handles multiple N7 segments per message
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExtractEquipmentInformationN7(["Start Step"])
E_ExtractEquipmentInformationN7(["End Step"])
N_ExtractEquipmentInformationN7_Node0{"The system encounters N7 segment
during processing"}:::decision N_ExtractEquipmentInformationN7_Node0_action["The system extracts equipment
details, updates car ID information
in cargo records, and handles
multiple N7 segments per message"]:::main N_ExtractEquipmentInformationN7_Node0 -- Yes --> N_ExtractEquipmentInformationN7_Node0_action N_ExtractEquipmentInformationN7_Node0_action --> E_ExtractEquipmentInformationN7 S_ExtractEquipmentInformationN7 --> N_ExtractEquipmentInformationN7_Node0 N_ExtractEquipmentInformationN7_Node0 -- No --> E_ExtractEquipmentInformationN7
during processing"}:::decision N_ExtractEquipmentInformationN7_Node0_action["The system extracts equipment
details, updates car ID information
in cargo records, and handles
multiple N7 segments per message"]:::main N_ExtractEquipmentInformationN7_Node0 -- Yes --> N_ExtractEquipmentInformationN7_Node0_action N_ExtractEquipmentInformationN7_Node0_action --> E_ExtractEquipmentInformationN7 S_ExtractEquipmentInformationN7 --> N_ExtractEquipmentInformationN7_Node0 N_ExtractEquipmentInformationN7_Node0 -- No --> E_ExtractEquipmentInformationN7
File: GCX016.cbl
GIVEN:
EDI 350 message contains N7 segment with equipment information
WHEN:
The system encounters N7 segment during processing
THEN:
The system extracts equipment details, updates car ID information in cargo records, and handles multiple N7 segments per message
β Consolidated Acceptance Criteria
- The system encounters X4 segment during processing → the system validates disposition codes, determines processing type (by bond, by car/waybill, or individual), and processes cargo status changes based on disposition code rules
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExtractCustomsReleaseInformationX4(["Start Step"])
E_ExtractCustomsReleaseInformationX4(["End Step"])
N_ExtractCustomsReleaseInformationX4_Node0{"The system encounters X4 segment
during processing"}:::decision N_ExtractCustomsReleaseInformationX4_Node0_action["The system validates disposition
codes, determines processing type by
bond, by carwaybill, or individual,
and processes cargo status changes
based on disposition code rules"]:::main N_ExtractCustomsReleaseInformationX4_Node0 -- Yes --> N_ExtractCustomsReleaseInformationX4_Node0_action N_ExtractCustomsReleaseInformationX4_Node0_action --> E_ExtractCustomsReleaseInformationX4 S_ExtractCustomsReleaseInformationX4 --> N_ExtractCustomsReleaseInformationX4_Node0 N_ExtractCustomsReleaseInformationX4_Node0 -- No --> E_ExtractCustomsReleaseInformationX4
during processing"}:::decision N_ExtractCustomsReleaseInformationX4_Node0_action["The system validates disposition
codes, determines processing type by
bond, by carwaybill, or individual,
and processes cargo status changes
based on disposition code rules"]:::main N_ExtractCustomsReleaseInformationX4_Node0 -- Yes --> N_ExtractCustomsReleaseInformationX4_Node0_action N_ExtractCustomsReleaseInformationX4_Node0_action --> E_ExtractCustomsReleaseInformationX4 S_ExtractCustomsReleaseInformationX4 --> N_ExtractCustomsReleaseInformationX4_Node0 N_ExtractCustomsReleaseInformationX4_Node0 -- No --> E_ExtractCustomsReleaseInformationX4
File: GCX016.cbl
GIVEN:
EDI 350 message contains X4 segment with customs release information
WHEN:
The system encounters X4 segment during processing
THEN:
The system validates disposition codes, determines processing type (by bond, by car/waybill, or individual), and processes cargo status changes based on disposition code rules
β Consolidated Acceptance Criteria
- The system encounters K1 segment during processing → the system extracts remarks information, processes broker data, and includes remarks in Merlin messages when applicable
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExtractRemarksK1(["Start Step"])
E_ExtractRemarksK1(["End Step"])
N_ExtractRemarksK1_Node0{"The system encounters K1 segment
during processing"}:::decision N_ExtractRemarksK1_Node0_action["The system extracts remarks
information, processes broker data,
and includes remarks in Merlin
messages when applicable"]:::main N_ExtractRemarksK1_Node0 -- Yes --> N_ExtractRemarksK1_Node0_action N_ExtractRemarksK1_Node0_action --> E_ExtractRemarksK1 S_ExtractRemarksK1 --> N_ExtractRemarksK1_Node0 N_ExtractRemarksK1_Node0 -- No --> E_ExtractRemarksK1
during processing"}:::decision N_ExtractRemarksK1_Node0_action["The system extracts remarks
information, processes broker data,
and includes remarks in Merlin
messages when applicable"]:::main N_ExtractRemarksK1_Node0 -- Yes --> N_ExtractRemarksK1_Node0_action N_ExtractRemarksK1_Node0_action --> E_ExtractRemarksK1 S_ExtractRemarksK1 --> N_ExtractRemarksK1_Node0 N_ExtractRemarksK1_Node0 -- No --> E_ExtractRemarksK1
File: GCX016.cbl
GIVEN:
EDI 350 message contains K1 segment with remarks
WHEN:
The system encounters K1 segment during processing
THEN:
The system extracts remarks information, processes broker data, and includes remarks in Merlin messages when applicable
β Consolidated Acceptance Criteria
- The system prepares to create dependent segments → the system formats the extracted data according to A9DP dependent segment specifications and ensures proper data structure
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_FormatDependentSegmentData(["Start Step"])
E_FormatDependentSegmentData(["End Step"])
N_FormatDependentSegmentData_Node0{"The system prepares to create
dependent segments"}:::decision N_FormatDependentSegmentData_Node0_action["The system formats the extracted
data according to A9DP dependent
segment specifications and ensures
proper data structure"]:::main N_FormatDependentSegmentData_Node0 -- Yes --> N_FormatDependentSegmentData_Node0_action N_FormatDependentSegmentData_Node0_action --> E_FormatDependentSegmentData S_FormatDependentSegmentData --> N_FormatDependentSegmentData_Node0 N_FormatDependentSegmentData_Node0 -- No --> E_FormatDependentSegmentData
dependent segments"}:::decision N_FormatDependentSegmentData_Node0_action["The system formats the extracted
data according to A9DP dependent
segment specifications and ensures
proper data structure"]:::main N_FormatDependentSegmentData_Node0 -- Yes --> N_FormatDependentSegmentData_Node0_action N_FormatDependentSegmentData_Node0_action --> E_FormatDependentSegmentData S_FormatDependentSegmentData --> N_FormatDependentSegmentData_Node0 N_FormatDependentSegmentData_Node0 -- No --> E_FormatDependentSegmentData
File: GCX016.cbl
GIVEN:
EDI segment data has been extracted from all applicable segments
WHEN:
The system prepares to create dependent segments
THEN:
- The system formats the extracted data according to a9dp dependent segment specifications
- Ensures proper data structure
β Consolidated Acceptance Criteria
- The system creates the dependent segment structure → the system calculates and sets the segment length based on data content and assigns the appropriate segment type identifier
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetSegmentLengthandType(["Start Step"])
E_SetSegmentLengthandType(["End Step"])
N_SetSegmentLengthandType_Node0{"The system creates the dependent
segment structure"}:::decision N_SetSegmentLengthandType_Node0_action["The system calculates and sets the
segment length based on data content
and assigns the appropriate segment
type identifier"]:::main N_SetSegmentLengthandType_Node0 -- Yes --> N_SetSegmentLengthandType_Node0_action N_SetSegmentLengthandType_Node0_action --> E_SetSegmentLengthandType S_SetSegmentLengthandType --> N_SetSegmentLengthandType_Node0 N_SetSegmentLengthandType_Node0 -- No --> E_SetSegmentLengthandType
segment structure"}:::decision N_SetSegmentLengthandType_Node0_action["The system calculates and sets the
segment length based on data content
and assigns the appropriate segment
type identifier"]:::main N_SetSegmentLengthandType_Node0 -- Yes --> N_SetSegmentLengthandType_Node0_action N_SetSegmentLengthandType_Node0_action --> E_SetSegmentLengthandType S_SetSegmentLengthandType --> N_SetSegmentLengthandType_Node0 N_SetSegmentLengthandType_Node0 -- No --> E_SetSegmentLengthandType
File: GCX016.cbl
GIVEN:
Dependent segment data has been formatted
WHEN:
The system creates the dependent segment structure
THEN:
- The system calculates
- Sets the segment length based on data content
- Assigns the appropriate segment type identifier
β Consolidated Acceptance Criteria
- The system finalizes dependent segment creation → the system creates the A9DP dependent segment structure with all formatted EDI data and proper segment identifiers
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CreateA9DPDependentSegment(["Start Step"])
E_CreateA9DPDependentSegment(["End Step"])
N_CreateA9DPDependentSegment_Node0{"The system finalizes dependent
segment creation"}:::decision N_CreateA9DPDependentSegment_Node0_action["The system creates the A9DP
dependent segment structure with all
formatted EDI data and proper
segment identifiers"]:::main N_CreateA9DPDependentSegment_Node0 -- Yes --> N_CreateA9DPDependentSegment_Node0_action N_CreateA9DPDependentSegment_Node0_action --> E_CreateA9DPDependentSegment S_CreateA9DPDependentSegment --> N_CreateA9DPDependentSegment_Node0 N_CreateA9DPDependentSegment_Node0 -- No --> E_CreateA9DPDependentSegment
segment creation"}:::decision N_CreateA9DPDependentSegment_Node0_action["The system creates the A9DP
dependent segment structure with all
formatted EDI data and proper
segment identifiers"]:::main N_CreateA9DPDependentSegment_Node0 -- Yes --> N_CreateA9DPDependentSegment_Node0_action N_CreateA9DPDependentSegment_Node0_action --> E_CreateA9DPDependentSegment S_CreateA9DPDependentSegment --> N_CreateA9DPDependentSegment_Node0 N_CreateA9DPDependentSegment_Node0 -- No --> E_CreateA9DPDependentSegment
File: GCX016.cbl
GIVEN:
Segment length and type have been configured
WHEN:
The system finalizes dependent segment creation
THEN:
- The system creates the a9dp dependent segment structure with all formatted edi data
- Proper segment identifiers
β Consolidated Acceptance Criteria
- The system establishes segment relationships → the system links the dependent segment to the corresponding A9RT transmission root segment to maintain proper hierarchical structure
- The dependent segment needs to be associated with its transmission root → the system links the A9DP dependent segment to the A9RT transmission root segment
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LinktoTransmissionRootSegment(["Start Step"])
E_LinktoTransmissionRootSegment(["End Step"])
N_LinktoTransmissionRootSegment_Node0{"The system establishes segment
relationships"}:::decision N_LinktoTransmissionRootSegment_Node0_action["The system links the dependent
segment to the corresponding A9RT
transmission root segment to
maintain proper hierarchical
structure"]:::main N_LinktoTransmissionRootSegment_Node0 -- Yes --> N_LinktoTransmissionRootSegment_Node0_action N_LinktoTransmissionRootSegment_Node0_action --> E_LinktoTransmissionRootSegment S_LinktoTransmissionRootSegment --> N_LinktoTransmissionRootSegment_Node0 N_LinktoTransmissionRootSegment_Node1{"The dependent segment needs to be
associated with its transmission
root"}:::decision N_LinktoTransmissionRootSegment_Node1_action["The system links the A9DP dependent
segment to the A9RT transmission
root segment"]:::main N_LinktoTransmissionRootSegment_Node1 -- Yes --> N_LinktoTransmissionRootSegment_Node1_action N_LinktoTransmissionRootSegment_Node1_action --> E_LinktoTransmissionRootSegment N_LinktoTransmissionRootSegment_Node0 -- No --> N_LinktoTransmissionRootSegment_Node1 N_LinktoTransmissionRootSegment_Node1 -- No --> E_LinktoTransmissionRootSegment
relationships"}:::decision N_LinktoTransmissionRootSegment_Node0_action["The system links the dependent
segment to the corresponding A9RT
transmission root segment to
maintain proper hierarchical
structure"]:::main N_LinktoTransmissionRootSegment_Node0 -- Yes --> N_LinktoTransmissionRootSegment_Node0_action N_LinktoTransmissionRootSegment_Node0_action --> E_LinktoTransmissionRootSegment S_LinktoTransmissionRootSegment --> N_LinktoTransmissionRootSegment_Node0 N_LinktoTransmissionRootSegment_Node1{"The dependent segment needs to be
associated with its transmission
root"}:::decision N_LinktoTransmissionRootSegment_Node1_action["The system links the A9DP dependent
segment to the A9RT transmission
root segment"]:::main N_LinktoTransmissionRootSegment_Node1 -- Yes --> N_LinktoTransmissionRootSegment_Node1_action N_LinktoTransmissionRootSegment_Node1_action --> E_LinktoTransmissionRootSegment N_LinktoTransmissionRootSegment_Node0 -- No --> N_LinktoTransmissionRootSegment_Node1 N_LinktoTransmissionRootSegment_Node1 -- No --> E_LinktoTransmissionRootSegment
File: GCX016.cbl
GIVEN:
A9DP dependent segment has been created
WHEN:
The system establishes segment relationships
THEN:
The system links the dependent segment to the corresponding A9RT transmission root segment to maintain proper hierarchical structure
File: GCX016.cbl
GIVEN:
EDI data has been stored in the dependent segment
WHEN:
The dependent segment needs to be associated with its transmission root
THEN:
The system links the A9DP dependent segment to the A9RT transmission root segment
β Consolidated Acceptance Criteria
- The system persists segment data → the system stores the A9DP dependent segment in the database with proper key relationships and data integrity
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_StoreDependentSegmentinDatabase(["Start Step"])
E_StoreDependentSegmentinDatabase(["End Step"])
N_StoreDependentSegmentinDatabase_Node0{"The system persists segment data"}:::decision
N_StoreDependentSegmentinDatabase_Node0_action["The system stores the A9DP
dependent segment in the database
with proper key relationships and
data integrity"]:::main N_StoreDependentSegmentinDatabase_Node0 -- Yes --> N_StoreDependentSegmentinDatabase_Node0_action N_StoreDependentSegmentinDatabase_Node0_action --> E_StoreDependentSegmentinDatabase S_StoreDependentSegmentinDatabase --> N_StoreDependentSegmentinDatabase_Node0 N_StoreDependentSegmentinDatabase_Node0 -- No --> E_StoreDependentSegmentinDatabase
dependent segment in the database
with proper key relationships and
data integrity"]:::main N_StoreDependentSegmentinDatabase_Node0 -- Yes --> N_StoreDependentSegmentinDatabase_Node0_action N_StoreDependentSegmentinDatabase_Node0_action --> E_StoreDependentSegmentinDatabase S_StoreDependentSegmentinDatabase --> N_StoreDependentSegmentinDatabase_Node0 N_StoreDependentSegmentinDatabase_Node0 -- No --> E_StoreDependentSegmentinDatabase
File: GCX016.cbl
GIVEN:
Dependent segment has been linked to transmission root segment
WHEN:
The system persists segment data
THEN:
- The system stores the a9dp dependent segment in the database with proper key relationships
- Data integrity
β Consolidated Acceptance Criteria
- The system checks for additional segments in the message array → if more EDI segments exist, the system continues processing from segment extraction; otherwise, it proceeds to validation
- The system checks for additional segments to process → the system evaluates if more EDI segments exist and continues processing if segments remain, or proceeds to transmission preparation if all segments are processed
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MoreEDISegments(["Start Step"])
E_MoreEDISegments(["End Step"])
N_MoreEDISegments_Node0{"The system checks for additional
segments in the message array"}:::decision N_MoreEDISegments_Node0_action["If more EDI segments exist, the
system continues processing from
segment extraction otherwise, it
proceeds to validation"]:::main N_MoreEDISegments_Node0 -- Yes --> N_MoreEDISegments_Node0_action N_MoreEDISegments_Node0_action --> E_MoreEDISegments S_MoreEDISegments --> N_MoreEDISegments_Node0 N_MoreEDISegments_Node1{"The system checks for additional
segments to process"}:::decision N_MoreEDISegments_Node1_action["The system evaluates if more EDI
segments exist and continues
processing if segments remain, or
proceeds to transmission preparation
if all segments are processed"]:::main N_MoreEDISegments_Node1 -- Yes --> N_MoreEDISegments_Node1_action N_MoreEDISegments_Node1_action --> E_MoreEDISegments N_MoreEDISegments_Node0 -- No --> N_MoreEDISegments_Node1 N_MoreEDISegments_Node1 -- No --> E_MoreEDISegments
segments in the message array"}:::decision N_MoreEDISegments_Node0_action["If more EDI segments exist, the
system continues processing from
segment extraction otherwise, it
proceeds to validation"]:::main N_MoreEDISegments_Node0 -- Yes --> N_MoreEDISegments_Node0_action N_MoreEDISegments_Node0_action --> E_MoreEDISegments S_MoreEDISegments --> N_MoreEDISegments_Node0 N_MoreEDISegments_Node1{"The system checks for additional
segments to process"}:::decision N_MoreEDISegments_Node1_action["The system evaluates if more EDI
segments exist and continues
processing if segments remain, or
proceeds to transmission preparation
if all segments are processed"]:::main N_MoreEDISegments_Node1 -- Yes --> N_MoreEDISegments_Node1_action N_MoreEDISegments_Node1_action --> E_MoreEDISegments N_MoreEDISegments_Node0 -- No --> N_MoreEDISegments_Node1 N_MoreEDISegments_Node1 -- No --> E_MoreEDISegments
File: GCX016.cbl
GIVEN:
One EDI segment has been processed and stored
WHEN:
The system checks for additional segments in the message array
THEN:
If more EDI segments exist, the system continues processing from segment extraction; otherwise, it proceeds to validation
File: GCX016.cbl
GIVEN:
EDI segment data has been copied to an A9DP segment
WHEN:
The system checks for additional segments to process
THEN:
- The system evaluates if more edi segments exist
- Continues processing if segments remain, or proceeds to transmission preparation if all segments are processed
β Consolidated Acceptance Criteria
- The system performs final validation → the system verifies that all required dependent segments have been created with proper data integrity and linkages
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ValidateSegmentCreation(["Start Step"])
E_ValidateSegmentCreation(["End Step"])
N_ValidateSegmentCreation_Node0{"The system performs final
validation"}:::decision N_ValidateSegmentCreation_Node0_action["The system verifies that all
required dependent segments have
been created with proper data
integrity and linkages"]:::main N_ValidateSegmentCreation_Node0 -- Yes --> N_ValidateSegmentCreation_Node0_action N_ValidateSegmentCreation_Node0_action --> E_ValidateSegmentCreation S_ValidateSegmentCreation --> N_ValidateSegmentCreation_Node0 N_ValidateSegmentCreation_Node0 -- No --> E_ValidateSegmentCreation
validation"}:::decision N_ValidateSegmentCreation_Node0_action["The system verifies that all
required dependent segments have
been created with proper data
integrity and linkages"]:::main N_ValidateSegmentCreation_Node0 -- Yes --> N_ValidateSegmentCreation_Node0_action N_ValidateSegmentCreation_Node0_action --> E_ValidateSegmentCreation S_ValidateSegmentCreation --> N_ValidateSegmentCreation_Node0 N_ValidateSegmentCreation_Node0 -- No --> E_ValidateSegmentCreation
File: GCX016.cbl
GIVEN:
All EDI segments have been processed and stored
WHEN:
The system performs final validation
THEN:
- The system verifies that all required dependent segments have been created with proper data integrity
- Linkages
β Consolidated Acceptance Criteria
- The system checks the disposition code associated with the equipment → disposition code is evaluated to determine specific KCSM integration actions
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CheckDispositionCodeforKCSMIntegration(["Start Step"])
E_CheckDispositionCodeforKCSMIntegration(["End Step"])
N_CheckDispositionCodeforKCSMIntegration_Node0{"The system checks the disposition
code associated with the equipment"}:::decision N_CheckDispositionCodeforKCSMIntegration_Node0_action["Disposition code is evaluated to
determine specific KCSM integration
actions"]:::main N_CheckDispositionCodeforKCSMIntegration_Node0 -- Yes --> N_CheckDispositionCodeforKCSMIntegration_Node0_action N_CheckDispositionCodeforKCSMIntegration_Node0_action --> E_CheckDispositionCodeforKCSMIntegration S_CheckDispositionCodeforKCSMIntegration --> N_CheckDispositionCodeforKCSMIntegration_Node0 N_CheckDispositionCodeforKCSMIntegration_Node0 -- No --> E_CheckDispositionCodeforKCSMIntegration
code associated with the equipment"}:::decision N_CheckDispositionCodeforKCSMIntegration_Node0_action["Disposition code is evaluated to
determine specific KCSM integration
actions"]:::main N_CheckDispositionCodeforKCSMIntegration_Node0 -- Yes --> N_CheckDispositionCodeforKCSMIntegration_Node0_action N_CheckDispositionCodeforKCSMIntegration_Node0_action --> E_CheckDispositionCodeforKCSMIntegration S_CheckDispositionCodeforKCSMIntegration --> N_CheckDispositionCodeforKCSMIntegration_Node0 N_CheckDispositionCodeforKCSMIntegration_Node0 -- No --> E_CheckDispositionCodeforKCSMIntegration
File: GCX016.cbl
GIVEN:
KCSM processing has been determined as required
WHEN:
The system checks the disposition code associated with the equipment
THEN:
Disposition code is evaluated to determine specific KCSM integration actions
β Consolidated Acceptance Criteria
- The system creates EDI 350 message copy → n7 segment information is included in the EDI 350 message copy
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IncludeN7SegmentinEDI350MessageCopy(["Start Step"])
E_IncludeN7SegmentinEDI350MessageCopy(["End Step"])
N_IncludeN7SegmentinEDI350MessageCopy_Node0{"The system creates EDI 350 message
copy"}:::decision N_IncludeN7SegmentinEDI350MessageCopy_Node0_action["N7 segment information is included
in the EDI 350 message copy"]:::main N_IncludeN7SegmentinEDI350MessageCopy_Node0 -- Yes --> N_IncludeN7SegmentinEDI350MessageCopy_Node0_action N_IncludeN7SegmentinEDI350MessageCopy_Node0_action --> E_IncludeN7SegmentinEDI350MessageCopy S_IncludeN7SegmentinEDI350MessageCopy --> N_IncludeN7SegmentinEDI350MessageCopy_Node0 N_IncludeN7SegmentinEDI350MessageCopy_Node0 -- No --> E_IncludeN7SegmentinEDI350MessageCopy
copy"}:::decision N_IncludeN7SegmentinEDI350MessageCopy_Node0_action["N7 segment information is included
in the EDI 350 message copy"]:::main N_IncludeN7SegmentinEDI350MessageCopy_Node0 -- Yes --> N_IncludeN7SegmentinEDI350MessageCopy_Node0_action N_IncludeN7SegmentinEDI350MessageCopy_Node0_action --> E_IncludeN7SegmentinEDI350MessageCopy S_IncludeN7SegmentinEDI350MessageCopy --> N_IncludeN7SegmentinEDI350MessageCopy_Node0 N_IncludeN7SegmentinEDI350MessageCopy_Node0 -- No --> E_IncludeN7SegmentinEDI350MessageCopy
File: GCX016.cbl
GIVEN:
Equipment details have been extracted for KCSM processing
WHEN:
The system creates EDI 350 message copy
THEN:
N7 segment information is included in the EDI 350 message copy
β Consolidated Acceptance Criteria
- The system processes transmission file updates → equipment information is added to the KCSM transmission file
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AddEquipmentInformationtoTransmissionFile(["Start Step"])
E_AddEquipmentInformationtoTransmissionFile(["End Step"])
N_AddEquipmentInformationtoTransmissionFile_Node0{"The system processes transmission
file updates"}:::decision N_AddEquipmentInformationtoTransmissionFile_Node0_action["Equipment information is added to
the KCSM transmission file"]:::main N_AddEquipmentInformationtoTransmissionFile_Node0 -- Yes --> N_AddEquipmentInformationtoTransmissionFile_Node0_action N_AddEquipmentInformationtoTransmissionFile_Node0_action --> E_AddEquipmentInformationtoTransmissionFile S_AddEquipmentInformationtoTransmissionFile --> N_AddEquipmentInformationtoTransmissionFile_Node0 N_AddEquipmentInformationtoTransmissionFile_Node0 -- No --> E_AddEquipmentInformationtoTransmissionFile
file updates"}:::decision N_AddEquipmentInformationtoTransmissionFile_Node0_action["Equipment information is added to
the KCSM transmission file"]:::main N_AddEquipmentInformationtoTransmissionFile_Node0 -- Yes --> N_AddEquipmentInformationtoTransmissionFile_Node0_action N_AddEquipmentInformationtoTransmissionFile_Node0_action --> E_AddEquipmentInformationtoTransmissionFile S_AddEquipmentInformationtoTransmissionFile --> N_AddEquipmentInformationtoTransmissionFile_Node0 N_AddEquipmentInformationtoTransmissionFile_Node0 -- No --> E_AddEquipmentInformationtoTransmissionFile
File: GCX016.cbl
GIVEN:
N7 segment has been included in EDI 350 message copy
WHEN:
The system processes transmission file updates
THEN:
Equipment information is added to the KCSM transmission file
β Consolidated Acceptance Criteria
- The system creates transmission dependent segments → dependent segments are created with equipment data for KCSM transmission
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CreateTransmissionDependentSegmentwithEquipmentData(["Start Step"])
E_CreateTransmissionDependentSegmentwithEquipmentData(["End Step"])
N_CreateTransmissionDependentSegmentwithEquipmentData_Node0{"The system creates transmission
dependent segments"}:::decision N_CreateTransmissionDependentSegmentwithEquipmentData_Node0_action["Dependent segments are created with
equipment data for KCSM transmission"]:::main N_CreateTransmissionDependentSegmentwithEquipmentData_Node0 -- Yes --> N_CreateTransmissionDependentSegmentwithEquipmentData_Node0_action N_CreateTransmissionDependentSegmentwithEquipmentData_Node0_action --> E_CreateTransmissionDependentSegmentwithEquipmentData S_CreateTransmissionDependentSegmentwithEquipmentData --> N_CreateTransmissionDependentSegmentwithEquipmentData_Node0 N_CreateTransmissionDependentSegmentwithEquipmentData_Node0 -- No --> E_CreateTransmissionDependentSegmentwithEquipmentData
dependent segments"}:::decision N_CreateTransmissionDependentSegmentwithEquipmentData_Node0_action["Dependent segments are created with
equipment data for KCSM transmission"]:::main N_CreateTransmissionDependentSegmentwithEquipmentData_Node0 -- Yes --> N_CreateTransmissionDependentSegmentwithEquipmentData_Node0_action N_CreateTransmissionDependentSegmentwithEquipmentData_Node0_action --> E_CreateTransmissionDependentSegmentwithEquipmentData S_CreateTransmissionDependentSegmentwithEquipmentData --> N_CreateTransmissionDependentSegmentwithEquipmentData_Node0 N_CreateTransmissionDependentSegmentwithEquipmentData_Node0 -- No --> E_CreateTransmissionDependentSegmentwithEquipmentData
File: GCX016.cbl
GIVEN:
Equipment information has been added to transmission file
WHEN:
The system creates transmission dependent segments
THEN:
Dependent segments are created with equipment data for KCSM transmission
β Consolidated Acceptance Criteria
- The system queues data for KCSM transmission → equipment data is queued for transmission to KCSM system
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_QueueEquipmentDataforKCSMTransmission(["Start Step"])
E_QueueEquipmentDataforKCSMTransmission(["End Step"])
N_QueueEquipmentDataforKCSMTransmission_Node0{"The system queues data for KCSM
transmission"}:::decision N_QueueEquipmentDataforKCSMTransmission_Node0_action["Equipment data is queued for
transmission to KCSM system"]:::main N_QueueEquipmentDataforKCSMTransmission_Node0 -- Yes --> N_QueueEquipmentDataforKCSMTransmission_Node0_action N_QueueEquipmentDataforKCSMTransmission_Node0_action --> E_QueueEquipmentDataforKCSMTransmission S_QueueEquipmentDataforKCSMTransmission --> N_QueueEquipmentDataforKCSMTransmission_Node0 N_QueueEquipmentDataforKCSMTransmission_Node0 -- No --> E_QueueEquipmentDataforKCSMTransmission
transmission"}:::decision N_QueueEquipmentDataforKCSMTransmission_Node0_action["Equipment data is queued for
transmission to KCSM system"]:::main N_QueueEquipmentDataforKCSMTransmission_Node0 -- Yes --> N_QueueEquipmentDataforKCSMTransmission_Node0_action N_QueueEquipmentDataforKCSMTransmission_Node0_action --> E_QueueEquipmentDataforKCSMTransmission S_QueueEquipmentDataforKCSMTransmission --> N_QueueEquipmentDataforKCSMTransmission_Node0 N_QueueEquipmentDataforKCSMTransmission_Node0 -- No --> E_QueueEquipmentDataforKCSMTransmission
File: GCX016.cbl
GIVEN:
Transmission dependent segments have been created with equipment data
WHEN:
The system queues data for KCSM transmission
THEN:
Equipment data is queued for transmission to KCSM system
β Consolidated Acceptance Criteria
- The system completes equipment processing → equipment processing activities are logged for KCSM audit trail
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogEquipmentProcessingforKCSM(["Start Step"])
E_LogEquipmentProcessingforKCSM(["End Step"])
N_LogEquipmentProcessingforKCSM_Node0{"The system completes equipment
processing"}:::decision N_LogEquipmentProcessingforKCSM_Node0_action["Equipment processing activities are
logged for KCSM audit trail"]:::main N_LogEquipmentProcessingforKCSM_Node0 -- Yes --> N_LogEquipmentProcessingforKCSM_Node0_action N_LogEquipmentProcessingforKCSM_Node0_action --> E_LogEquipmentProcessingforKCSM S_LogEquipmentProcessingforKCSM --> N_LogEquipmentProcessingforKCSM_Node0 N_LogEquipmentProcessingforKCSM_Node0 -- No --> E_LogEquipmentProcessingforKCSM
processing"}:::decision N_LogEquipmentProcessingforKCSM_Node0_action["Equipment processing activities are
logged for KCSM audit trail"]:::main N_LogEquipmentProcessingforKCSM_Node0 -- Yes --> N_LogEquipmentProcessingforKCSM_Node0_action N_LogEquipmentProcessingforKCSM_Node0_action --> E_LogEquipmentProcessingforKCSM S_LogEquipmentProcessingforKCSM --> N_LogEquipmentProcessingforKCSM_Node0 N_LogEquipmentProcessingforKCSM_Node0 -- No --> E_LogEquipmentProcessingforKCSM
File: GCX016.cbl
GIVEN:
Equipment data has been queued for KCSM transmission
WHEN:
The system completes equipment processing
THEN:
Equipment processing activities are logged for KCSM audit trail
β Consolidated Acceptance Criteria
- Equipment ID validation fails → system handles validation error and proceeds to equipment processing completion
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_EquipmentIDValidationError(["Start Step"])
E_EquipmentIDValidationError(["End Step"])
N_EquipmentIDValidationError_Node0{"Equipment ID validation fails"}:::decision
N_EquipmentIDValidationError_Node0_action["System handles validation error and
proceeds to equipment processing
completion"]:::main N_EquipmentIDValidationError_Node0 -- Yes --> N_EquipmentIDValidationError_Node0_action N_EquipmentIDValidationError_Node0_action --> E_EquipmentIDValidationError S_EquipmentIDValidationError --> N_EquipmentIDValidationError_Node0 N_EquipmentIDValidationError_Node0 -- No --> E_EquipmentIDValidationError
proceeds to equipment processing
completion"]:::main N_EquipmentIDValidationError_Node0 -- Yes --> N_EquipmentIDValidationError_Node0_action N_EquipmentIDValidationError_Node0_action --> E_EquipmentIDValidationError S_EquipmentIDValidationError --> N_EquipmentIDValidationError_Node0 N_EquipmentIDValidationError_Node0 -- No --> E_EquipmentIDValidationError
File: GCX016.cbl
GIVEN:
Equipment ID has been formatted using GCCCARFM utility
WHEN:
Equipment ID validation fails
THEN:
- System handles validation error
- Proceeds to equipment processing completion
β Consolidated Acceptance Criteria
- The system prepares to process the cargo record → all cargo record details and associated status segments are loaded into working storage
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LoadCargoRecordDetails(["Start Step"])
E_LoadCargoRecordDetails(["End Step"])
N_LoadCargoRecordDetails_Node0{"The system prepares to process the
cargo record"}:::decision N_LoadCargoRecordDetails_Node0_action["All cargo record details and
associated status segments are
loaded into working storage"]:::main N_LoadCargoRecordDetails_Node0 -- Yes --> N_LoadCargoRecordDetails_Node0_action N_LoadCargoRecordDetails_Node0_action --> E_LoadCargoRecordDetails S_LoadCargoRecordDetails --> N_LoadCargoRecordDetails_Node0 N_LoadCargoRecordDetails_Node0 -- No --> E_LoadCargoRecordDetails
cargo record"}:::decision N_LoadCargoRecordDetails_Node0_action["All cargo record details and
associated status segments are
loaded into working storage"]:::main N_LoadCargoRecordDetails_Node0 -- Yes --> N_LoadCargoRecordDetails_Node0_action N_LoadCargoRecordDetails_Node0_action --> E_LoadCargoRecordDetails S_LoadCargoRecordDetails --> N_LoadCargoRecordDetails_Node0 N_LoadCargoRecordDetails_Node0 -- No --> E_LoadCargoRecordDetails
File: GCX016.cbl
GIVEN:
A cargo record has been found for the current bond number
WHEN:
The system prepares to process the cargo record
THEN:
- All cargo record details
- Associated status segments are loaded into working storage
β Consolidated Acceptance Criteria
- The system completes bond processing → a summary log entry is created showing the bond number, cargo count processed, and processing results
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogBondProcessingSummary(["Start Step"])
E_LogBondProcessingSummary(["End Step"])
N_LogBondProcessingSummary_Node0{"The system completes bond
processing"}:::decision N_LogBondProcessingSummary_Node0_action["A summary log entry is created
showing the bond number, cargo count
processed, and processing results"]:::main N_LogBondProcessingSummary_Node0 -- Yes --> N_LogBondProcessingSummary_Node0_action N_LogBondProcessingSummary_Node0_action --> E_LogBondProcessingSummary S_LogBondProcessingSummary --> N_LogBondProcessingSummary_Node0 N_LogBondProcessingSummary_Node0 -- No --> E_LogBondProcessingSummary
processing"}:::decision N_LogBondProcessingSummary_Node0_action["A summary log entry is created
showing the bond number, cargo count
processed, and processing results"]:::main N_LogBondProcessingSummary_Node0 -- Yes --> N_LogBondProcessingSummary_Node0_action N_LogBondProcessingSummary_Node0_action --> E_LogBondProcessingSummary S_LogBondProcessingSummary --> N_LogBondProcessingSummary_Node0 N_LogBondProcessingSummary_Node0 -- No --> E_LogBondProcessingSummary
File: GCX016.cbl
GIVEN:
All cargo records for a bond number have been processed
WHEN:
The system completes bond processing
THEN:
A summary log entry is created showing the bond number, cargo count processed, and processing results
β Consolidated Acceptance Criteria
- The system generates processing reports → a detailed bond processing report is created containing all cargo records processed and their final status
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GenerateBondProcessingReport(["Start Step"])
E_GenerateBondProcessingReport(["End Step"])
N_GenerateBondProcessingReport_Node0{"The system generates processing
reports"}:::decision N_GenerateBondProcessingReport_Node0_action["A detailed bond processing report
is created containing all cargo
records processed and their final
status"]:::main N_GenerateBondProcessingReport_Node0 -- Yes --> N_GenerateBondProcessingReport_Node0_action N_GenerateBondProcessingReport_Node0_action --> E_GenerateBondProcessingReport S_GenerateBondProcessingReport --> N_GenerateBondProcessingReport_Node0 N_GenerateBondProcessingReport_Node0 -- No --> E_GenerateBondProcessingReport
reports"}:::decision N_GenerateBondProcessingReport_Node0_action["A detailed bond processing report
is created containing all cargo
records processed and their final
status"]:::main N_GenerateBondProcessingReport_Node0 -- Yes --> N_GenerateBondProcessingReport_Node0_action N_GenerateBondProcessingReport_Node0_action --> E_GenerateBondProcessingReport S_GenerateBondProcessingReport --> N_GenerateBondProcessingReport_Node0 N_GenerateBondProcessingReport_Node0 -- No --> E_GenerateBondProcessingReport
File: GCX016.cbl
GIVEN:
Bond processing has been completed and summary logged
WHEN:
The system generates processing reports
THEN:
- A detailed bond processing report is created containing all cargo records processed
- Their final status
β Consolidated Acceptance Criteria
- The system completes bond processing → bond processing is marked as complete and system resources are cleaned up
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CompleteBondProcessing(["Start Step"])
E_CompleteBondProcessing(["End Step"])
N_CompleteBondProcessing_Node0{"The system completes bond
processing"}:::decision N_CompleteBondProcessing_Node0_action["Bond processing is marked as
complete and system resources are
cleaned up"]:::main N_CompleteBondProcessing_Node0 -- Yes --> N_CompleteBondProcessing_Node0_action N_CompleteBondProcessing_Node0_action --> E_CompleteBondProcessing S_CompleteBondProcessing --> N_CompleteBondProcessing_Node0 N_CompleteBondProcessing_Node0 -- No --> E_CompleteBondProcessing
processing"}:::decision N_CompleteBondProcessing_Node0_action["Bond processing is marked as
complete and system resources are
cleaned up"]:::main N_CompleteBondProcessing_Node0 -- Yes --> N_CompleteBondProcessing_Node0_action N_CompleteBondProcessing_Node0_action --> E_CompleteBondProcessing S_CompleteBondProcessing --> N_CompleteBondProcessing_Node0 N_CompleteBondProcessing_Node0 -- No --> E_CompleteBondProcessing
File: GCX016.cbl
GIVEN:
All cargo records for a bond have been processed and reports generated
WHEN:
The system completes bond processing
THEN:
- Bond processing is marked as complete
- System resources are cleaned up
β Consolidated Acceptance Criteria
- The system handles the validation error → an error log entry is created documenting the invalid bond number and validation failure reason
- The system encounters bond validation failure → log bond validation error with appropriate error details and skip bond-based processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogBondValidationError(["Start Step"])
E_LogBondValidationError(["End Step"])
N_LogBondValidationError_Node0{"The system handles the validation
error"}:::decision N_LogBondValidationError_Node0_action["An error log entry is created
documenting the invalid bond number
and validation failure reason"]:::exclusion N_LogBondValidationError_Node0 -- Yes -->|Alternative| N_LogBondValidationError_Node0_action N_LogBondValidationError_Node0_action --> E_LogBondValidationError S_LogBondValidationError --> N_LogBondValidationError_Node0 N_LogBondValidationError_Node1{"The system encounters bond
validation failure"}:::decision N_LogBondValidationError_Node1_action["Log bond validation error with
appropriate error details and skip
bond-based processing"]:::main N_LogBondValidationError_Node1 -- Yes --> N_LogBondValidationError_Node1_action N_LogBondValidationError_Node1_action --> E_LogBondValidationError N_LogBondValidationError_Node0 -- No --> N_LogBondValidationError_Node1 N_LogBondValidationError_Node1 -- No --> E_LogBondValidationError
error"}:::decision N_LogBondValidationError_Node0_action["An error log entry is created
documenting the invalid bond number
and validation failure reason"]:::exclusion N_LogBondValidationError_Node0 -- Yes -->|Alternative| N_LogBondValidationError_Node0_action N_LogBondValidationError_Node0_action --> E_LogBondValidationError S_LogBondValidationError --> N_LogBondValidationError_Node0 N_LogBondValidationError_Node1{"The system encounters bond
validation failure"}:::decision N_LogBondValidationError_Node1_action["Log bond validation error with
appropriate error details and skip
bond-based processing"]:::main N_LogBondValidationError_Node1 -- Yes --> N_LogBondValidationError_Node1_action N_LogBondValidationError_Node1_action --> E_LogBondValidationError N_LogBondValidationError_Node0 -- No --> N_LogBondValidationError_Node1 N_LogBondValidationError_Node1 -- No --> E_LogBondValidationError
File: GCX016.cbl
GIVEN:
Bond number validation has failed
WHEN:
The system handles the validation error
THEN:
- An error log entry is created documenting the invalid bond number
- Validation failure reason
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
Bond validation fails due to missing bond number or bond not found in system
WHEN:
The system encounters bond validation failure
THEN:
- Log bond validation error with appropriate error details
- Skip bond-based processing
β Consolidated Acceptance Criteria
- The system checks for waybill number availability in the X4 segment data → if waybill number is not available, log 'No Waybill Available' and proceed to alternative cargo retrieval method
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_WaybillNumberAvailable(["Start Step"])
E_WaybillNumberAvailable(["End Step"])
N_WaybillNumberAvailable_Node0{"The system checks for waybill
number availability in the X4
segment data"}:::decision N_WaybillNumberAvailable_Node0_action["If waybill number is not available,
log No Waybill Available and proceed
to alternative cargo retrieval
method"]:::main N_WaybillNumberAvailable_Node0 -- Yes --> N_WaybillNumberAvailable_Node0_action N_WaybillNumberAvailable_Node0_action --> E_WaybillNumberAvailable S_WaybillNumberAvailable --> N_WaybillNumberAvailable_Node0 N_WaybillNumberAvailable_Node0 -- No --> E_WaybillNumberAvailable
number availability in the X4
segment data"}:::decision N_WaybillNumberAvailable_Node0_action["If waybill number is not available,
log No Waybill Available and proceed
to alternative cargo retrieval
method"]:::main N_WaybillNumberAvailable_Node0 -- Yes --> N_WaybillNumberAvailable_Node0_action N_WaybillNumberAvailable_Node0_action --> E_WaybillNumberAvailable S_WaybillNumberAvailable --> N_WaybillNumberAvailable_Node0 N_WaybillNumberAvailable_Node0 -- No --> E_WaybillNumberAvailable
File: GCX016.cbl
GIVEN:
Car ID is available for cargo processing
WHEN:
The system checks for waybill number availability in the X4 segment data
THEN:
If waybill number is not available, log 'No Waybill Available' and proceed to alternative cargo retrieval method
β Consolidated Acceptance Criteria
- The system validates the car ID format for proper structure and length → car ID must meet required format specifications to proceed with cargo search
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ValidateCarIDFormat(["Start Step"])
E_ValidateCarIDFormat(["End Step"])
N_ValidateCarIDFormat_Node0{"The system validates the car ID
format for proper structure and
length"}:::decision N_ValidateCarIDFormat_Node0_action["Car ID must meet required format
specifications to proceed with cargo
search"]:::main N_ValidateCarIDFormat_Node0 -- Yes --> N_ValidateCarIDFormat_Node0_action N_ValidateCarIDFormat_Node0_action --> E_ValidateCarIDFormat S_ValidateCarIDFormat --> N_ValidateCarIDFormat_Node0 N_ValidateCarIDFormat_Node0 -- No --> E_ValidateCarIDFormat
format for proper structure and
length"}:::decision N_ValidateCarIDFormat_Node0_action["Car ID must meet required format
specifications to proceed with cargo
search"]:::main N_ValidateCarIDFormat_Node0 -- Yes --> N_ValidateCarIDFormat_Node0_action N_ValidateCarIDFormat_Node0_action --> E_ValidateCarIDFormat S_ValidateCarIDFormat --> N_ValidateCarIDFormat_Node0 N_ValidateCarIDFormat_Node0 -- No --> E_ValidateCarIDFormat
File: GCX016.cbl
GIVEN:
Car ID is available from N7 segment
WHEN:
- The system validates the car id format for proper structure
- Length
THEN:
Car ID must meet required format specifications to proceed with cargo search
β Consolidated Acceptance Criteria
- The system validates the waybill number format for proper structure and length → waybill number must meet required format specifications to proceed with cargo search
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ValidateWaybillNumberFormat(["Start Step"])
E_ValidateWaybillNumberFormat(["End Step"])
N_ValidateWaybillNumberFormat_Node0{"The system validates the waybill
number format for proper structure
and length"}:::decision N_ValidateWaybillNumberFormat_Node0_action["Waybill number must meet required
format specifications to proceed
with cargo search"]:::main N_ValidateWaybillNumberFormat_Node0 -- Yes --> N_ValidateWaybillNumberFormat_Node0_action N_ValidateWaybillNumberFormat_Node0_action --> E_ValidateWaybillNumberFormat S_ValidateWaybillNumberFormat --> N_ValidateWaybillNumberFormat_Node0 N_ValidateWaybillNumberFormat_Node0 -- No --> E_ValidateWaybillNumberFormat
number format for proper structure
and length"}:::decision N_ValidateWaybillNumberFormat_Node0_action["Waybill number must meet required
format specifications to proceed
with cargo search"]:::main N_ValidateWaybillNumberFormat_Node0 -- Yes --> N_ValidateWaybillNumberFormat_Node0_action N_ValidateWaybillNumberFormat_Node0_action --> E_ValidateWaybillNumberFormat S_ValidateWaybillNumberFormat --> N_ValidateWaybillNumberFormat_Node0 N_ValidateWaybillNumberFormat_Node0 -- No --> E_ValidateWaybillNumberFormat
File: GCX016.cbl
GIVEN:
Waybill number is available from X4 segment
WHEN:
- The system validates the waybill number format for proper structure
- Length
THEN:
Waybill number must meet required format specifications to proceed with cargo search
β Consolidated Acceptance Criteria
- The system performs cargo database search using car ID and waybill combination → system retrieves all cargo records matching the exact car ID and waybill number combination
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SearchCargobyCarIDandWaybillCombination(["Start Step"])
E_SearchCargobyCarIDandWaybillCombination(["End Step"])
N_SearchCargobyCarIDandWaybillCombination_Node0{"The system performs cargo database
search using car ID and waybill
combination"}:::decision N_SearchCargobyCarIDandWaybillCombination_Node0_action["System retrieves all cargo records
matching the exact car ID and
waybill number combination"]:::main N_SearchCargobyCarIDandWaybillCombination_Node0 -- Yes --> N_SearchCargobyCarIDandWaybillCombination_Node0_action N_SearchCargobyCarIDandWaybillCombination_Node0_action --> E_SearchCargobyCarIDandWaybillCombination S_SearchCargobyCarIDandWaybillCombination --> N_SearchCargobyCarIDandWaybillCombination_Node0 N_SearchCargobyCarIDandWaybillCombination_Node0 -- No --> E_SearchCargobyCarIDandWaybillCombination
search using car ID and waybill
combination"}:::decision N_SearchCargobyCarIDandWaybillCombination_Node0_action["System retrieves all cargo records
matching the exact car ID and
waybill number combination"]:::main N_SearchCargobyCarIDandWaybillCombination_Node0 -- Yes --> N_SearchCargobyCarIDandWaybillCombination_Node0_action N_SearchCargobyCarIDandWaybillCombination_Node0_action --> E_SearchCargobyCarIDandWaybillCombination S_SearchCargobyCarIDandWaybillCombination --> N_SearchCargobyCarIDandWaybillCombination_Node0 N_SearchCargobyCarIDandWaybillCombination_Node0 -- No --> E_SearchCargobyCarIDandWaybillCombination
File: GCX016.cbl
GIVEN:
Valid car ID and waybill number are available
WHEN:
- The system performs cargo database search using car id
- Waybill combination
THEN:
- System retrieves all cargo records matching the exact car id
- Waybill number combination
β Consolidated Acceptance Criteria
- The system retrieves matching cargo records from the database → all cargo records matching the car ID and waybill combination are loaded for individual processing
- The system retrieves matching cargo records → all cargo records associated with the car-waybill combination are loaded for processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RetrieveAllMatchingCargoRecords(["Start Step"])
E_RetrieveAllMatchingCargoRecords(["End Step"])
N_RetrieveAllMatchingCargoRecords_Node0{"The system retrieves matching cargo
records from the database"}:::decision N_RetrieveAllMatchingCargoRecords_Node0_action["All cargo records matching the car
ID and waybill combination are
loaded for individual processing"]:::main N_RetrieveAllMatchingCargoRecords_Node0 -- Yes --> N_RetrieveAllMatchingCargoRecords_Node0_action N_RetrieveAllMatchingCargoRecords_Node0_action --> E_RetrieveAllMatchingCargoRecords S_RetrieveAllMatchingCargoRecords --> N_RetrieveAllMatchingCargoRecords_Node0 N_RetrieveAllMatchingCargoRecords_Node1{"The system retrieves matching cargo
records"}:::decision N_RetrieveAllMatchingCargoRecords_Node1_action["All cargo records associated with
the car-waybill combination are
loaded for processing"]:::main N_RetrieveAllMatchingCargoRecords_Node1 -- Yes --> N_RetrieveAllMatchingCargoRecords_Node1_action N_RetrieveAllMatchingCargoRecords_Node1_action --> E_RetrieveAllMatchingCargoRecords N_RetrieveAllMatchingCargoRecords_Node0 -- No --> N_RetrieveAllMatchingCargoRecords_Node1 N_RetrieveAllMatchingCargoRecords_Node1 -- No --> E_RetrieveAllMatchingCargoRecords
records from the database"}:::decision N_RetrieveAllMatchingCargoRecords_Node0_action["All cargo records matching the car
ID and waybill combination are
loaded for individual processing"]:::main N_RetrieveAllMatchingCargoRecords_Node0 -- Yes --> N_RetrieveAllMatchingCargoRecords_Node0_action N_RetrieveAllMatchingCargoRecords_Node0_action --> E_RetrieveAllMatchingCargoRecords S_RetrieveAllMatchingCargoRecords --> N_RetrieveAllMatchingCargoRecords_Node0 N_RetrieveAllMatchingCargoRecords_Node1{"The system retrieves matching cargo
records"}:::decision N_RetrieveAllMatchingCargoRecords_Node1_action["All cargo records associated with
the car-waybill combination are
loaded for processing"]:::main N_RetrieveAllMatchingCargoRecords_Node1 -- Yes --> N_RetrieveAllMatchingCargoRecords_Node1_action N_RetrieveAllMatchingCargoRecords_Node1_action --> E_RetrieveAllMatchingCargoRecords N_RetrieveAllMatchingCargoRecords_Node0 -- No --> N_RetrieveAllMatchingCargoRecords_Node1 N_RetrieveAllMatchingCargoRecords_Node1 -- No --> E_RetrieveAllMatchingCargoRecords
File: GCX016.cbl
GIVEN:
Cargo records exist for the specified car ID and waybill combination
WHEN:
The system retrieves matching cargo records from the database
THEN:
- All cargo records matching the car id
- Waybill combination are loaded for individual processing
File: GCX016.cbl
GIVEN:
Cargo records exist for the car-waybill combination
WHEN:
The system retrieves matching cargo records
THEN:
All cargo records associated with the car-waybill combination are loaded for processing
β Consolidated Acceptance Criteria
- The system iterates through each cargo record → each cargo record is processed individually with the same disposition code and processing parameters
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ProcessEachCargoRecord(["Start Step"])
E_ProcessEachCargoRecord(["End Step"])
N_ProcessEachCargoRecord_Node0{"The system iterates through each
cargo record"}:::decision N_ProcessEachCargoRecord_Node0_action["Each cargo record is processed
individually with the same
disposition code and processing
parameters"]:::main N_ProcessEachCargoRecord_Node0 -- Yes --> N_ProcessEachCargoRecord_Node0_action N_ProcessEachCargoRecord_Node0_action --> E_ProcessEachCargoRecord S_ProcessEachCargoRecord --> N_ProcessEachCargoRecord_Node0 N_ProcessEachCargoRecord_Node0 -- No --> E_ProcessEachCargoRecord
cargo record"}:::decision N_ProcessEachCargoRecord_Node0_action["Each cargo record is processed
individually with the same
disposition code and processing
parameters"]:::main N_ProcessEachCargoRecord_Node0 -- Yes --> N_ProcessEachCargoRecord_Node0_action N_ProcessEachCargoRecord_Node0_action --> E_ProcessEachCargoRecord S_ProcessEachCargoRecord --> N_ProcessEachCargoRecord_Node0 N_ProcessEachCargoRecord_Node0 -- No --> E_ProcessEachCargoRecord
File: GCX016.cbl
GIVEN:
Multiple cargo records are retrieved for a car and waybill combination
WHEN:
The system iterates through each cargo record
THEN:
- Each cargo record is processed individually with the same disposition code
- Processing parameters
β Consolidated Acceptance Criteria
- The system applies disposition codes and business rules to the cargo → cargo status information is updated to reflect the current processing state and any status changes
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UpdateCargoStatusInformation(["Start Step"])
E_UpdateCargoStatusInformation(["End Step"])
N_UpdateCargoStatusInformation_Node0{"The system applies disposition
codes and business rules to the
cargo"}:::decision N_UpdateCargoStatusInformation_Node0_action["Cargo status information is updated
to reflect the current processing
state and any status changes"]:::main N_UpdateCargoStatusInformation_Node0 -- Yes --> N_UpdateCargoStatusInformation_Node0_action N_UpdateCargoStatusInformation_Node0_action --> E_UpdateCargoStatusInformation S_UpdateCargoStatusInformation --> N_UpdateCargoStatusInformation_Node0 N_UpdateCargoStatusInformation_Node0 -- No --> E_UpdateCargoStatusInformation
codes and business rules to the
cargo"}:::decision N_UpdateCargoStatusInformation_Node0_action["Cargo status information is updated
to reflect the current processing
state and any status changes"]:::main N_UpdateCargoStatusInformation_Node0 -- Yes --> N_UpdateCargoStatusInformation_Node0_action N_UpdateCargoStatusInformation_Node0_action --> E_UpdateCargoStatusInformation S_UpdateCargoStatusInformation --> N_UpdateCargoStatusInformation_Node0 N_UpdateCargoStatusInformation_Node0 -- No --> E_UpdateCargoStatusInformation
File: GCX016.cbl
GIVEN:
A cargo record is being processed
WHEN:
- The system applies disposition codes
- Business rules to the cargo
THEN:
- Cargo status information is updated to reflect the current processing state
- Any status changes
β Consolidated Acceptance Criteria
- The system applies the disposition code to each cargo record → the disposition code is processed according to its type (hold, release, status info) and applied to the cargo's status array
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ApplyDispositionCodestoCargo(["Start Step"])
E_ApplyDispositionCodestoCargo(["End Step"])
N_ApplyDispositionCodestoCargo_Node0{"The system applies the disposition
code to each cargo record"}:::decision N_ApplyDispositionCodestoCargo_Node0_action["The disposition code is processed
according to its type hold, release,
status info and applied to the cargo
s status array"]:::main N_ApplyDispositionCodestoCargo_Node0 -- Yes --> N_ApplyDispositionCodestoCargo_Node0_action N_ApplyDispositionCodestoCargo_Node0_action --> E_ApplyDispositionCodestoCargo S_ApplyDispositionCodestoCargo --> N_ApplyDispositionCodestoCargo_Node0 N_ApplyDispositionCodestoCargo_Node0 -- No --> E_ApplyDispositionCodestoCargo
code to each cargo record"}:::decision N_ApplyDispositionCodestoCargo_Node0_action["The disposition code is processed
according to its type hold, release,
status info and applied to the cargo
s status array"]:::main N_ApplyDispositionCodestoCargo_Node0 -- Yes --> N_ApplyDispositionCodestoCargo_Node0_action N_ApplyDispositionCodestoCargo_Node0_action --> E_ApplyDispositionCodestoCargo S_ApplyDispositionCodestoCargo --> N_ApplyDispositionCodestoCargo_Node0 N_ApplyDispositionCodestoCargo_Node0 -- No --> E_ApplyDispositionCodestoCargo
File: GCX016.cbl
GIVEN:
Cargo records are being processed with a specific disposition code
WHEN:
The system applies the disposition code to each cargo record
THEN:
The disposition code is processed according to its type (hold, release, status info) and applied to the cargo's status array
β Consolidated Acceptance Criteria
- The system commits changes to the cargo database → all cargo records in the car and waybill group are updated in the database with new status, quantities, and processing timestamps
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UpdateCargoDatabaseRecords(["Start Step"])
E_UpdateCargoDatabaseRecords(["End Step"])
N_UpdateCargoDatabaseRecords_Node0{"The system commits changes to the
cargo database"}:::decision N_UpdateCargoDatabaseRecords_Node0_action["All cargo records in the car and
waybill group are updated in the
database with new status,
quantities, and processing
timestamps"]:::main N_UpdateCargoDatabaseRecords_Node0 -- Yes --> N_UpdateCargoDatabaseRecords_Node0_action N_UpdateCargoDatabaseRecords_Node0_action --> E_UpdateCargoDatabaseRecords S_UpdateCargoDatabaseRecords --> N_UpdateCargoDatabaseRecords_Node0 N_UpdateCargoDatabaseRecords_Node0 -- No --> E_UpdateCargoDatabaseRecords
cargo database"}:::decision N_UpdateCargoDatabaseRecords_Node0_action["All cargo records in the car and
waybill group are updated in the
database with new status,
quantities, and processing
timestamps"]:::main N_UpdateCargoDatabaseRecords_Node0 -- Yes --> N_UpdateCargoDatabaseRecords_Node0_action N_UpdateCargoDatabaseRecords_Node0_action --> E_UpdateCargoDatabaseRecords S_UpdateCargoDatabaseRecords --> N_UpdateCargoDatabaseRecords_Node0 N_UpdateCargoDatabaseRecords_Node0 -- No --> E_UpdateCargoDatabaseRecords
File: GCX016.cbl
GIVEN:
Cargo records have been processed with updated status and quantities
WHEN:
The system commits changes to the cargo database
THEN:
- All cargo records in the car
- Waybill group are updated in the database with new status, quantities, and processing timestamps
β Consolidated Acceptance Criteria
- The system generates processing messages → appropriate messages are generated including Merlin notifications, broker notifications, and status change messages for the entire car and waybill group
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GenerateProcessingMessages(["Start Step"])
E_GenerateProcessingMessages(["End Step"])
N_GenerateProcessingMessages_Node0{"The system generates processing
messages"}:::decision N_GenerateProcessingMessages_Node0_action["Appropriate messages are generated
including Merlin notifications,
broker notifications, and status
change messages for the entire car
and waybill group"]:::main N_GenerateProcessingMessages_Node0 -- Yes --> N_GenerateProcessingMessages_Node0_action N_GenerateProcessingMessages_Node0_action --> E_GenerateProcessingMessages S_GenerateProcessingMessages --> N_GenerateProcessingMessages_Node0 N_GenerateProcessingMessages_Node0 -- No --> E_GenerateProcessingMessages
messages"}:::decision N_GenerateProcessingMessages_Node0_action["Appropriate messages are generated
including Merlin notifications,
broker notifications, and status
change messages for the entire car
and waybill group"]:::main N_GenerateProcessingMessages_Node0 -- Yes --> N_GenerateProcessingMessages_Node0_action N_GenerateProcessingMessages_Node0_action --> E_GenerateProcessingMessages S_GenerateProcessingMessages --> N_GenerateProcessingMessages_Node0 N_GenerateProcessingMessages_Node0 -- No --> E_GenerateProcessingMessages
File: GCX016.cbl
GIVEN:
Cargo records in a car and waybill group have been successfully processed
WHEN:
The system generates processing messages
THEN:
- Appropriate messages are generated including merlin notifications, broker notifications, and status change messages for the entire car
- Waybill group
β Consolidated Acceptance Criteria
- The system invokes alternative cargo retrieval methods → system attempts to process cargo using individual cargo processing method or by bond number method as alternatives
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_TryAlternativeCargoRetrievalMethod(["Start Step"])
E_TryAlternativeCargoRetrievalMethod(["End Step"])
N_TryAlternativeCargoRetrievalMethod_Node0{"The system invokes alternative
cargo retrieval methods"}:::decision N_TryAlternativeCargoRetrievalMethod_Node0_action["System attempts to process cargo
using individual cargo processing
method or by bond number method as
alternatives"]:::main N_TryAlternativeCargoRetrievalMethod_Node0 -- Yes --> N_TryAlternativeCargoRetrievalMethod_Node0_action N_TryAlternativeCargoRetrievalMethod_Node0_action --> E_TryAlternativeCargoRetrievalMethod S_TryAlternativeCargoRetrievalMethod --> N_TryAlternativeCargoRetrievalMethod_Node0 N_TryAlternativeCargoRetrievalMethod_Node0 -- No --> E_TryAlternativeCargoRetrievalMethod
cargo retrieval methods"}:::decision N_TryAlternativeCargoRetrievalMethod_Node0_action["System attempts to process cargo
using individual cargo processing
method or by bond number method as
alternatives"]:::main N_TryAlternativeCargoRetrievalMethod_Node0 -- Yes --> N_TryAlternativeCargoRetrievalMethod_Node0_action N_TryAlternativeCargoRetrievalMethod_Node0_action --> E_TryAlternativeCargoRetrievalMethod S_TryAlternativeCargoRetrievalMethod --> N_TryAlternativeCargoRetrievalMethod_Node0 N_TryAlternativeCargoRetrievalMethod_Node0 -- No --> E_TryAlternativeCargoRetrievalMethod
File: GCX016.cbl
GIVEN:
Car and waybill processing cannot proceed due to missing car ID, missing waybill, or no cargo found
WHEN:
The system invokes alternative cargo retrieval methods
THEN:
System attempts to process cargo using individual cargo processing method or by bond number method as alternatives
β Consolidated Acceptance Criteria
- The system validates the bond number format against system requirements → if bond format is invalid, log invalid bond format error and skip bond-based processing, otherwise proceed to search cargo records by bond number
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ValidBondFormat(["Start Step"])
E_ValidBondFormat(["End Step"])
N_ValidBondFormat_Node0{"The system validates the bond
number format against system
requirements"}:::decision N_ValidBondFormat_Node0_action["If bond format is invalid, log
invalid bond format error and skip
bond-based processing, otherwise
proceed to search cargo records by
bond number"]:::main N_ValidBondFormat_Node0 -- Yes --> N_ValidBondFormat_Node0_action N_ValidBondFormat_Node0_action --> E_ValidBondFormat S_ValidBondFormat --> N_ValidBondFormat_Node0 N_ValidBondFormat_Node0 -- No --> E_ValidBondFormat
number format against system
requirements"}:::decision N_ValidBondFormat_Node0_action["If bond format is invalid, log
invalid bond format error and skip
bond-based processing, otherwise
proceed to search cargo records by
bond number"]:::main N_ValidBondFormat_Node0 -- Yes --> N_ValidBondFormat_Node0_action N_ValidBondFormat_Node0_action --> E_ValidBondFormat S_ValidBondFormat --> N_ValidBondFormat_Node0 N_ValidBondFormat_Node0 -- No --> E_ValidBondFormat
File: GCX016.cbl
GIVEN:
A bond control number is present in the X4 segment
WHEN:
The system validates the bond number format against system requirements
THEN:
- If bond format is invalid, log invalid bond format error
- Skip bond-based processing, otherwise proceed to search cargo records by bond number
β Consolidated Acceptance Criteria
- The system searches cargo records using the bond control number as search criteria → if no cargo records are found with the bond number, generate bond not found message and skip bond-based processing, otherwise proceed to validate bond number against system tables
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CargoRecordsFoundwithBond(["Start Step"])
E_CargoRecordsFoundwithBond(["End Step"])
N_CargoRecordsFoundwithBond_Node0{"The system searches cargo records
using the bond control number as
search criteria"}:::decision N_CargoRecordsFoundwithBond_Node0_action["If no cargo records are found with
the bond number, generate bond not
found message and skip bond-based
processing, otherwise proceed to
validate bond number against system
tables"]:::main N_CargoRecordsFoundwithBond_Node0 -- Yes --> N_CargoRecordsFoundwithBond_Node0_action N_CargoRecordsFoundwithBond_Node0_action --> E_CargoRecordsFoundwithBond S_CargoRecordsFoundwithBond --> N_CargoRecordsFoundwithBond_Node0 N_CargoRecordsFoundwithBond_Node0 -- No --> E_CargoRecordsFoundwithBond
using the bond control number as
search criteria"}:::decision N_CargoRecordsFoundwithBond_Node0_action["If no cargo records are found with
the bond number, generate bond not
found message and skip bond-based
processing, otherwise proceed to
validate bond number against system
tables"]:::main N_CargoRecordsFoundwithBond_Node0 -- Yes --> N_CargoRecordsFoundwithBond_Node0_action N_CargoRecordsFoundwithBond_Node0_action --> E_CargoRecordsFoundwithBond S_CargoRecordsFoundwithBond --> N_CargoRecordsFoundwithBond_Node0 N_CargoRecordsFoundwithBond_Node0 -- No --> E_CargoRecordsFoundwithBond
File: GCX016.cbl
GIVEN:
A valid bond control number format is confirmed
WHEN:
The system searches cargo records using the bond control number as search criteria
THEN:
- If no cargo records are found with the bond number, generate bond not found message
- Skip bond-based processing, otherwise proceed to validate bond number against system tables
β Consolidated Acceptance Criteria
- The system validates the bond number against authorized bond system tables → if bond number does not exist in system tables, log bond validation error and skip bond-based processing, otherwise mark bond as valid for processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_BondNumberExistsinSystem(["Start Step"])
E_BondNumberExistsinSystem(["End Step"])
N_BondNumberExistsinSystem_Node0{"The system validates the bond
number against authorized bond
system tables"}:::decision N_BondNumberExistsinSystem_Node0_action["If bond number does not exist in
system tables, log bond validation
error and skip bond-based
processing, otherwise mark bond as
valid for processing"]:::main N_BondNumberExistsinSystem_Node0 -- Yes --> N_BondNumberExistsinSystem_Node0_action N_BondNumberExistsinSystem_Node0_action --> E_BondNumberExistsinSystem S_BondNumberExistsinSystem --> N_BondNumberExistsinSystem_Node0 N_BondNumberExistsinSystem_Node0 -- No --> E_BondNumberExistsinSystem
number against authorized bond
system tables"}:::decision N_BondNumberExistsinSystem_Node0_action["If bond number does not exist in
system tables, log bond validation
error and skip bond-based
processing, otherwise mark bond as
valid for processing"]:::main N_BondNumberExistsinSystem_Node0 -- Yes --> N_BondNumberExistsinSystem_Node0_action N_BondNumberExistsinSystem_Node0_action --> E_BondNumberExistsinSystem S_BondNumberExistsinSystem --> N_BondNumberExistsinSystem_Node0 N_BondNumberExistsinSystem_Node0 -- No --> E_BondNumberExistsinSystem
File: GCX016.cbl
GIVEN:
Cargo records are found with the bond control number
WHEN:
The system validates the bond number against authorized bond system tables
THEN:
- If bond number does not exist in system tables, log bond validation error
- Skip bond-based processing, otherwise mark bond as valid for processing
β Consolidated Acceptance Criteria
- The system completes bond validation successfully → mark bond as valid for processing and proceed to bond-based cargo processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MarkBondasValidforProcessing(["Start Step"])
E_MarkBondasValidforProcessing(["End Step"])
N_MarkBondasValidforProcessing_Node0{"The system completes bond
validation successfully"}:::decision N_MarkBondasValidforProcessing_Node0_action["Mark bond as valid for processing
and proceed to bond-based cargo
processing"]:::main N_MarkBondasValidforProcessing_Node0 -- Yes --> N_MarkBondasValidforProcessing_Node0_action N_MarkBondasValidforProcessing_Node0_action --> E_MarkBondasValidforProcessing S_MarkBondasValidforProcessing --> N_MarkBondasValidforProcessing_Node0 N_MarkBondasValidforProcessing_Node0 -- No --> E_MarkBondasValidforProcessing
validation successfully"}:::decision N_MarkBondasValidforProcessing_Node0_action["Mark bond as valid for processing
and proceed to bond-based cargo
processing"]:::main N_MarkBondasValidforProcessing_Node0 -- Yes --> N_MarkBondasValidforProcessing_Node0_action N_MarkBondasValidforProcessing_Node0_action --> E_MarkBondasValidforProcessing S_MarkBondasValidforProcessing --> N_MarkBondasValidforProcessing_Node0 N_MarkBondasValidforProcessing_Node0 -- No --> E_MarkBondasValidforProcessing
File: GCX016.cbl
GIVEN:
Bond number exists in system tables and cargo records are found
WHEN:
The system completes bond validation successfully
THEN:
- Mark bond as valid for processing
- Proceed to bond-based cargo processing
β Consolidated Acceptance Criteria
- The system completes cargo record search with no results → generate bond not found message and skip bond-based processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GenerateBondNotFoundMessage(["Start Step"])
E_GenerateBondNotFoundMessage(["End Step"])
N_GenerateBondNotFoundMessage_Node0{"The system completes cargo record
search with no results"}:::decision N_GenerateBondNotFoundMessage_Node0_action["Generate bond not found message and
skip bond-based processing"]:::main N_GenerateBondNotFoundMessage_Node0 -- Yes --> N_GenerateBondNotFoundMessage_Node0_action N_GenerateBondNotFoundMessage_Node0_action --> E_GenerateBondNotFoundMessage S_GenerateBondNotFoundMessage --> N_GenerateBondNotFoundMessage_Node0 N_GenerateBondNotFoundMessage_Node0 -- No --> E_GenerateBondNotFoundMessage
search with no results"}:::decision N_GenerateBondNotFoundMessage_Node0_action["Generate bond not found message and
skip bond-based processing"]:::main N_GenerateBondNotFoundMessage_Node0 -- Yes --> N_GenerateBondNotFoundMessage_Node0_action N_GenerateBondNotFoundMessage_Node0_action --> E_GenerateBondNotFoundMessage S_GenerateBondNotFoundMessage --> N_GenerateBondNotFoundMessage_Node0 N_GenerateBondNotFoundMessage_Node0 -- No --> E_GenerateBondNotFoundMessage
File: GCX016.cbl
GIVEN:
No cargo records are found with the provided bond control number
WHEN:
The system completes cargo record search with no results
THEN:
- Generate bond not found message
- Skip bond-based processing
β Consolidated Acceptance Criteria
- The system validates bond number format → log invalid bond format error and skip bond-based processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogInvalidBondFormatError(["Start Step"])
E_LogInvalidBondFormatError(["End Step"])
N_LogInvalidBondFormatError_Node0{"The system validates bond number
format"}:::decision N_LogInvalidBondFormatError_Node0_action["Log invalid bond format error and
skip bond-based processing"]:::main N_LogInvalidBondFormatError_Node0 -- Yes --> N_LogInvalidBondFormatError_Node0_action N_LogInvalidBondFormatError_Node0_action --> E_LogInvalidBondFormatError S_LogInvalidBondFormatError --> N_LogInvalidBondFormatError_Node0 N_LogInvalidBondFormatError_Node0 -- No --> E_LogInvalidBondFormatError
format"}:::decision N_LogInvalidBondFormatError_Node0_action["Log invalid bond format error and
skip bond-based processing"]:::main N_LogInvalidBondFormatError_Node0 -- Yes --> N_LogInvalidBondFormatError_Node0_action N_LogInvalidBondFormatError_Node0_action --> E_LogInvalidBondFormatError S_LogInvalidBondFormatError --> N_LogInvalidBondFormatError_Node0 N_LogInvalidBondFormatError_Node0 -- No --> E_LogInvalidBondFormatError
File: GCX016.cbl
GIVEN:
Bond control number is present but format validation fails
WHEN:
The system validates bond number format
THEN:
- Log invalid bond format error
- Skip bond-based processing
β Consolidated Acceptance Criteria
- The system completes bond validation successfully → proceed to bond-based cargo processing for all cargo records with the same bond control number
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ProceedtoBondbasedCargoProcessing(["Start Step"])
E_ProceedtoBondbasedCargoProcessing(["End Step"])
N_ProceedtoBondbasedCargoProcessing_Node0{"The system completes bond
validation successfully"}:::decision N_ProceedtoBondbasedCargoProcessing_Node0_action["Proceed to bond-based cargo
processing for all cargo records
with the same bond control number"]:::main N_ProceedtoBondbasedCargoProcessing_Node0 -- Yes --> N_ProceedtoBondbasedCargoProcessing_Node0_action N_ProceedtoBondbasedCargoProcessing_Node0_action --> E_ProceedtoBondbasedCargoProcessing S_ProceedtoBondbasedCargoProcessing --> N_ProceedtoBondbasedCargoProcessing_Node0 N_ProceedtoBondbasedCargoProcessing_Node0 -- No --> E_ProceedtoBondbasedCargoProcessing
validation successfully"}:::decision N_ProceedtoBondbasedCargoProcessing_Node0_action["Proceed to bond-based cargo
processing for all cargo records
with the same bond control number"]:::main N_ProceedtoBondbasedCargoProcessing_Node0 -- Yes --> N_ProceedtoBondbasedCargoProcessing_Node0_action N_ProceedtoBondbasedCargoProcessing_Node0_action --> E_ProceedtoBondbasedCargoProcessing S_ProceedtoBondbasedCargoProcessing --> N_ProceedtoBondbasedCargoProcessing_Node0 N_ProceedtoBondbasedCargoProcessing_Node0 -- No --> E_ProceedtoBondbasedCargoProcessing
File: GCX016.cbl
GIVEN:
Bond number is validated and marked as valid for processing
WHEN:
The system completes bond validation successfully
THEN:
Proceed to bond-based cargo processing for all cargo records with the same bond control number
β Consolidated Acceptance Criteria
- The system formats the car ID using GCCCARFM utility → the car ID is standardized to proper format for validation
- The system formats the car ID using GCCCARFM utility → the car ID format is validated and standardized for subsequent matching operations
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_FormatCarIDusingGCCCARFMUtility(["Start Step"])
E_FormatCarIDusingGCCCARFMUtility(["End Step"])
N_FormatCarIDusingGCCCARFMUtility_Node0{"The system formats the car ID using
GCCCARFM utility"}:::decision N_FormatCarIDusingGCCCARFMUtility_Node0_action["The car ID is standardized to
proper format for validation"]:::main N_FormatCarIDusingGCCCARFMUtility_Node0 -- Yes --> N_FormatCarIDusingGCCCARFMUtility_Node0_action N_FormatCarIDusingGCCCARFMUtility_Node0_action --> E_FormatCarIDusingGCCCARFMUtility S_FormatCarIDusingGCCCARFMUtility --> N_FormatCarIDusingGCCCARFMUtility_Node0 N_FormatCarIDusingGCCCARFMUtility_Node1{"The system formats the car ID using
GCCCARFM utility"}:::decision N_FormatCarIDusingGCCCARFMUtility_Node1_action["The car ID format is validated and
standardized for subsequent matching
operations"]:::main N_FormatCarIDusingGCCCARFMUtility_Node1 -- Yes --> N_FormatCarIDusingGCCCARFMUtility_Node1_action N_FormatCarIDusingGCCCARFMUtility_Node1_action --> E_FormatCarIDusingGCCCARFMUtility N_FormatCarIDusingGCCCARFMUtility_Node0 -- No --> N_FormatCarIDusingGCCCARFMUtility_Node1 N_FormatCarIDusingGCCCARFMUtility_Node1 -- No --> E_FormatCarIDusingGCCCARFMUtility
GCCCARFM utility"}:::decision N_FormatCarIDusingGCCCARFMUtility_Node0_action["The car ID is standardized to
proper format for validation"]:::main N_FormatCarIDusingGCCCARFMUtility_Node0 -- Yes --> N_FormatCarIDusingGCCCARFMUtility_Node0_action N_FormatCarIDusingGCCCARFMUtility_Node0_action --> E_FormatCarIDusingGCCCARFMUtility S_FormatCarIDusingGCCCARFMUtility --> N_FormatCarIDusingGCCCARFMUtility_Node0 N_FormatCarIDusingGCCCARFMUtility_Node1{"The system formats the car ID using
GCCCARFM utility"}:::decision N_FormatCarIDusingGCCCARFMUtility_Node1_action["The car ID format is validated and
standardized for subsequent matching
operations"]:::main N_FormatCarIDusingGCCCARFMUtility_Node1 -- Yes --> N_FormatCarIDusingGCCCARFMUtility_Node1_action N_FormatCarIDusingGCCCARFMUtility_Node1_action --> E_FormatCarIDusingGCCCARFMUtility N_FormatCarIDusingGCCCARFMUtility_Node0 -- No --> N_FormatCarIDusingGCCCARFMUtility_Node1 N_FormatCarIDusingGCCCARFMUtility_Node1 -- No --> E_FormatCarIDusingGCCCARFMUtility
File: GCX016.cbl
GIVEN:
A car ID is received from N7 segment
WHEN:
The system formats the car ID using GCCCARFM utility
THEN:
The car ID is standardized to proper format for validation
File: GCX016.cbl
GIVEN:
A car ID is received for cargo matching
WHEN:
The system formats the car ID using GCCCARFM utility
THEN:
- The car id format is validated
- Standardized for subsequent matching operations
β Consolidated Acceptance Criteria
- The system checks if the car ID format is valid → the system proceeds to waybill extraction if valid, or logs format error if invalid
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CarIDValidFormat(["Start Step"])
E_CarIDValidFormat(["End Step"])
N_CarIDValidFormat_Node0{"The system checks if the car ID
format is valid"}:::decision N_CarIDValidFormat_Node0_action["The system proceeds to waybill
extraction if valid, or logs format
error if invalid"]:::main N_CarIDValidFormat_Node0 -- Yes --> N_CarIDValidFormat_Node0_action N_CarIDValidFormat_Node0_action --> E_CarIDValidFormat S_CarIDValidFormat --> N_CarIDValidFormat_Node0 N_CarIDValidFormat_Node0 -- No --> E_CarIDValidFormat
format is valid"}:::decision N_CarIDValidFormat_Node0_action["The system proceeds to waybill
extraction if valid, or logs format
error if invalid"]:::main N_CarIDValidFormat_Node0 -- Yes --> N_CarIDValidFormat_Node0_action N_CarIDValidFormat_Node0_action --> E_CarIDValidFormat S_CarIDValidFormat --> N_CarIDValidFormat_Node0 N_CarIDValidFormat_Node0 -- No --> E_CarIDValidFormat
File: GCX016.cbl
GIVEN:
A car ID has been formatted using GCCCARFM utility
WHEN:
The system checks if the car ID format is valid
THEN:
The system proceeds to waybill extraction if valid, or logs format error if invalid
β Consolidated Acceptance Criteria
- The system extracts waybill number from X4 segment entry → the waybill number is available for presence validation
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExtractWaybillNumberfromEntry(["Start Step"])
E_ExtractWaybillNumberfromEntry(["End Step"])
N_ExtractWaybillNumberfromEntry_Node0{"The system extracts waybill number
from X4 segment entry"}:::decision N_ExtractWaybillNumberfromEntry_Node0_action["The waybill number is available for
presence validation"]:::main N_ExtractWaybillNumberfromEntry_Node0 -- Yes --> N_ExtractWaybillNumberfromEntry_Node0_action N_ExtractWaybillNumberfromEntry_Node0_action --> E_ExtractWaybillNumberfromEntry S_ExtractWaybillNumberfromEntry --> N_ExtractWaybillNumberfromEntry_Node0 N_ExtractWaybillNumberfromEntry_Node0 -- No --> E_ExtractWaybillNumberfromEntry
from X4 segment entry"}:::decision N_ExtractWaybillNumberfromEntry_Node0_action["The waybill number is available for
presence validation"]:::main N_ExtractWaybillNumberfromEntry_Node0 -- Yes --> N_ExtractWaybillNumberfromEntry_Node0_action N_ExtractWaybillNumberfromEntry_Node0_action --> E_ExtractWaybillNumberfromEntry S_ExtractWaybillNumberfromEntry --> N_ExtractWaybillNumberfromEntry_Node0 N_ExtractWaybillNumberfromEntry_Node0 -- No --> E_ExtractWaybillNumberfromEntry
File: GCX016.cbl
GIVEN:
Car ID format is valid
WHEN:
The system extracts waybill number from X4 segment entry
THEN:
The waybill number is available for presence validation
β Consolidated Acceptance Criteria
- The system validates car ID length and characters → the system proceeds to standards check if length is valid, or logs invalid length error if not valid
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CarIDLengthValid(["Start Step"])
E_CarIDLengthValid(["End Step"])
N_CarIDLengthValid_Node0{"The system validates car ID length
and characters"}:::decision N_CarIDLengthValid_Node0_action["The system proceeds to standards
check if length is valid, or logs
invalid length error if not valid"]:::main N_CarIDLengthValid_Node0 -- Yes --> N_CarIDLengthValid_Node0_action N_CarIDLengthValid_Node0_action --> E_CarIDLengthValid S_CarIDLengthValid --> N_CarIDLengthValid_Node0 N_CarIDLengthValid_Node0 -- No --> E_CarIDLengthValid
and characters"}:::decision N_CarIDLengthValid_Node0_action["The system proceeds to standards
check if length is valid, or logs
invalid length error if not valid"]:::main N_CarIDLengthValid_Node0 -- Yes --> N_CarIDLengthValid_Node0_action N_CarIDLengthValid_Node0_action --> E_CarIDLengthValid S_CarIDLengthValid --> N_CarIDLengthValid_Node0 N_CarIDLengthValid_Node0 -- No --> E_CarIDLengthValid
File: GCX016.cbl
GIVEN:
Waybill number is present
WHEN:
- The system validates car id length
- Characters
THEN:
The system proceeds to standards check if length is valid, or logs invalid length error if not valid
β Consolidated Acceptance Criteria
- The system checks car ID against system standards → the system proceeds to waybill format validation if standards are met, or logs standards error if not met
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CarIDMeetsStandards(["Start Step"])
E_CarIDMeetsStandards(["End Step"])
N_CarIDMeetsStandards_Node0{"The system checks car ID against
system standards"}:::decision N_CarIDMeetsStandards_Node0_action["The system proceeds to waybill
format validation if standards are
met, or logs standards error if not
met"]:::main N_CarIDMeetsStandards_Node0 -- Yes --> N_CarIDMeetsStandards_Node0_action N_CarIDMeetsStandards_Node0_action --> E_CarIDMeetsStandards S_CarIDMeetsStandards --> N_CarIDMeetsStandards_Node0 N_CarIDMeetsStandards_Node0 -- No --> E_CarIDMeetsStandards
system standards"}:::decision N_CarIDMeetsStandards_Node0_action["The system proceeds to waybill
format validation if standards are
met, or logs standards error if not
met"]:::main N_CarIDMeetsStandards_Node0 -- Yes --> N_CarIDMeetsStandards_Node0_action N_CarIDMeetsStandards_Node0_action --> E_CarIDMeetsStandards S_CarIDMeetsStandards --> N_CarIDMeetsStandards_Node0 N_CarIDMeetsStandards_Node0 -- No --> E_CarIDMeetsStandards
File: GCX016.cbl
GIVEN:
Car ID length is valid
WHEN:
The system checks car ID against system standards
THEN:
The system proceeds to waybill format validation if standards are met, or logs standards error if not met
β Consolidated Acceptance Criteria
- The system validates waybill number format → the system sets validation success flag if format is valid, or logs format error if invalid
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_WaybillFormatValid(["Start Step"])
E_WaybillFormatValid(["End Step"])
N_WaybillFormatValid_Node0{"The system validates waybill number
format"}:::decision N_WaybillFormatValid_Node0_action["The system sets validation success
flag if format is valid, or logs
format error if invalid"]:::main N_WaybillFormatValid_Node0 -- Yes --> N_WaybillFormatValid_Node0_action N_WaybillFormatValid_Node0_action --> E_WaybillFormatValid S_WaybillFormatValid --> N_WaybillFormatValid_Node0 N_WaybillFormatValid_Node0 -- No --> E_WaybillFormatValid
format"}:::decision N_WaybillFormatValid_Node0_action["The system sets validation success
flag if format is valid, or logs
format error if invalid"]:::main N_WaybillFormatValid_Node0 -- Yes --> N_WaybillFormatValid_Node0_action N_WaybillFormatValid_Node0_action --> E_WaybillFormatValid S_WaybillFormatValid --> N_WaybillFormatValid_Node0 N_WaybillFormatValid_Node0 -- No --> E_WaybillFormatValid
File: GCX016.cbl
GIVEN:
Car ID meets system standards
WHEN:
The system validates waybill number format
THEN:
The system sets validation success flag if format is valid, or logs format error if invalid
β Consolidated Acceptance Criteria
- The system sets validation success flag → the system proceeds to cargo processing by car and waybill
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetValidationSuccessFlag(["Start Step"])
E_SetValidationSuccessFlag(["End Step"])
N_SetValidationSuccessFlag_Node0{"The system sets validation success
flag"}:::decision N_SetValidationSuccessFlag_Node0_action["The system proceeds to cargo
processing by car and waybill"]:::main N_SetValidationSuccessFlag_Node0 -- Yes --> N_SetValidationSuccessFlag_Node0_action N_SetValidationSuccessFlag_Node0_action --> E_SetValidationSuccessFlag S_SetValidationSuccessFlag --> N_SetValidationSuccessFlag_Node0 N_SetValidationSuccessFlag_Node0 -- No --> E_SetValidationSuccessFlag
flag"}:::decision N_SetValidationSuccessFlag_Node0_action["The system proceeds to cargo
processing by car and waybill"]:::main N_SetValidationSuccessFlag_Node0 -- Yes --> N_SetValidationSuccessFlag_Node0_action N_SetValidationSuccessFlag_Node0_action --> E_SetValidationSuccessFlag S_SetValidationSuccessFlag --> N_SetValidationSuccessFlag_Node0 N_SetValidationSuccessFlag_Node0 -- No --> E_SetValidationSuccessFlag
File: GCX016.cbl
GIVEN:
Waybill format is valid
WHEN:
The system sets validation success flag
THEN:
- The system proceeds to cargo processing by car
- Waybill
β Consolidated Acceptance Criteria
- The system logs car ID format error → the system sets validation failure flag and skips cargo processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogCarIDFormatError(["Start Step"])
E_LogCarIDFormatError(["End Step"])
N_LogCarIDFormatError_Node0{"The system logs car ID format error"}:::decision
N_LogCarIDFormatError_Node0_action["The system sets validation failure
flag and skips cargo processing"]:::exclusion N_LogCarIDFormatError_Node0 -- Yes -->|Alternative| N_LogCarIDFormatError_Node0_action N_LogCarIDFormatError_Node0_action --> E_LogCarIDFormatError S_LogCarIDFormatError --> N_LogCarIDFormatError_Node0 N_LogCarIDFormatError_Node0 -- No --> E_LogCarIDFormatError
flag and skips cargo processing"]:::exclusion N_LogCarIDFormatError_Node0 -- Yes -->|Alternative| N_LogCarIDFormatError_Node0_action N_LogCarIDFormatError_Node0_action --> E_LogCarIDFormatError S_LogCarIDFormatError --> N_LogCarIDFormatError_Node0 N_LogCarIDFormatError_Node0 -- No --> E_LogCarIDFormatError
File: GCX016.cbl
GIVEN:
Car ID format is invalid
WHEN:
The system logs car ID format error
THEN:
- The system sets validation failure flag
- Skips cargo processing
β Consolidated Acceptance Criteria
- The system logs missing waybill error → the system sets validation failure flag and skips cargo processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogMissingWaybillError(["Start Step"])
E_LogMissingWaybillError(["End Step"])
N_LogMissingWaybillError_Node0{"The system logs missing waybill
error"}:::decision N_LogMissingWaybillError_Node0_action["The system sets validation failure
flag and skips cargo processing"]:::exclusion N_LogMissingWaybillError_Node0 -- Yes -->|Alternative| N_LogMissingWaybillError_Node0_action N_LogMissingWaybillError_Node0_action --> E_LogMissingWaybillError S_LogMissingWaybillError --> N_LogMissingWaybillError_Node0 N_LogMissingWaybillError_Node0 -- No --> E_LogMissingWaybillError
error"}:::decision N_LogMissingWaybillError_Node0_action["The system sets validation failure
flag and skips cargo processing"]:::exclusion N_LogMissingWaybillError_Node0 -- Yes -->|Alternative| N_LogMissingWaybillError_Node0_action N_LogMissingWaybillError_Node0_action --> E_LogMissingWaybillError S_LogMissingWaybillError --> N_LogMissingWaybillError_Node0 N_LogMissingWaybillError_Node0 -- No --> E_LogMissingWaybillError
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
Waybill number is not present
WHEN:
The system logs missing waybill error
THEN:
- The system sets validation failure flag
- Skips cargo processing
β Consolidated Acceptance Criteria
- The system logs invalid car ID length error → the system sets validation failure flag and skips cargo processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogInvalidCarIDLengthError(["Start Step"])
E_LogInvalidCarIDLengthError(["End Step"])
N_LogInvalidCarIDLengthError_Node0{"The system logs invalid car ID
length error"}:::decision N_LogInvalidCarIDLengthError_Node0_action["The system sets validation failure
flag and skips cargo processing"]:::exclusion N_LogInvalidCarIDLengthError_Node0 -- Yes -->|Alternative| N_LogInvalidCarIDLengthError_Node0_action N_LogInvalidCarIDLengthError_Node0_action --> E_LogInvalidCarIDLengthError S_LogInvalidCarIDLengthError --> N_LogInvalidCarIDLengthError_Node0 N_LogInvalidCarIDLengthError_Node0 -- No --> E_LogInvalidCarIDLengthError
length error"}:::decision N_LogInvalidCarIDLengthError_Node0_action["The system sets validation failure
flag and skips cargo processing"]:::exclusion N_LogInvalidCarIDLengthError_Node0 -- Yes -->|Alternative| N_LogInvalidCarIDLengthError_Node0_action N_LogInvalidCarIDLengthError_Node0_action --> E_LogInvalidCarIDLengthError S_LogInvalidCarIDLengthError --> N_LogInvalidCarIDLengthError_Node0 N_LogInvalidCarIDLengthError_Node0 -- No --> E_LogInvalidCarIDLengthError
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
Car ID length is invalid
WHEN:
The system logs invalid car ID length error
THEN:
- The system sets validation failure flag
- Skips cargo processing
β Consolidated Acceptance Criteria
- The system logs car ID standards error → the system sets validation failure flag and skips cargo processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogCarIDStandardsError(["Start Step"])
E_LogCarIDStandardsError(["End Step"])
N_LogCarIDStandardsError_Node0{"The system logs car ID standards
error"}:::decision N_LogCarIDStandardsError_Node0_action["The system sets validation failure
flag and skips cargo processing"]:::exclusion N_LogCarIDStandardsError_Node0 -- Yes -->|Alternative| N_LogCarIDStandardsError_Node0_action N_LogCarIDStandardsError_Node0_action --> E_LogCarIDStandardsError S_LogCarIDStandardsError --> N_LogCarIDStandardsError_Node0 N_LogCarIDStandardsError_Node0 -- No --> E_LogCarIDStandardsError
error"}:::decision N_LogCarIDStandardsError_Node0_action["The system sets validation failure
flag and skips cargo processing"]:::exclusion N_LogCarIDStandardsError_Node0 -- Yes -->|Alternative| N_LogCarIDStandardsError_Node0_action N_LogCarIDStandardsError_Node0_action --> E_LogCarIDStandardsError S_LogCarIDStandardsError --> N_LogCarIDStandardsError_Node0 N_LogCarIDStandardsError_Node0 -- No --> E_LogCarIDStandardsError
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
Car ID does not meet system standards
WHEN:
The system logs car ID standards error
THEN:
- The system sets validation failure flag
- Skips cargo processing
β Consolidated Acceptance Criteria
- The system logs waybill format error → the system sets validation failure flag and skips cargo processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogWaybillFormatError(["Start Step"])
E_LogWaybillFormatError(["End Step"])
N_LogWaybillFormatError_Node0{"The system logs waybill format
error"}:::decision N_LogWaybillFormatError_Node0_action["The system sets validation failure
flag and skips cargo processing"]:::exclusion N_LogWaybillFormatError_Node0 -- Yes -->|Alternative| N_LogWaybillFormatError_Node0_action N_LogWaybillFormatError_Node0_action --> E_LogWaybillFormatError S_LogWaybillFormatError --> N_LogWaybillFormatError_Node0 N_LogWaybillFormatError_Node0 -- No --> E_LogWaybillFormatError
error"}:::decision N_LogWaybillFormatError_Node0_action["The system sets validation failure
flag and skips cargo processing"]:::exclusion N_LogWaybillFormatError_Node0 -- Yes -->|Alternative| N_LogWaybillFormatError_Node0_action N_LogWaybillFormatError_Node0_action --> E_LogWaybillFormatError S_LogWaybillFormatError --> N_LogWaybillFormatError_Node0 N_LogWaybillFormatError_Node0 -- No --> E_LogWaybillFormatError
File: GCX016.cbl
GIVEN:
Waybill format is invalid
WHEN:
The system logs waybill format error
THEN:
- The system sets validation failure flag
- Skips cargo processing
β Consolidated Acceptance Criteria
- The system sets validation failure flag → the system skips cargo processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetValidationFailureFlag(["Start Step"])
E_SetValidationFailureFlag(["End Step"])
N_SetValidationFailureFlag_Node0{"The system sets validation failure
flag"}:::decision N_SetValidationFailureFlag_Node0_action["The system skips cargo processing"]:::main N_SetValidationFailureFlag_Node0 -- Yes --> N_SetValidationFailureFlag_Node0_action N_SetValidationFailureFlag_Node0_action --> E_SetValidationFailureFlag S_SetValidationFailureFlag --> N_SetValidationFailureFlag_Node0 N_SetValidationFailureFlag_Node0 -- No --> E_SetValidationFailureFlag
flag"}:::decision N_SetValidationFailureFlag_Node0_action["The system skips cargo processing"]:::main N_SetValidationFailureFlag_Node0 -- Yes --> N_SetValidationFailureFlag_Node0_action N_SetValidationFailureFlag_Node0_action --> E_SetValidationFailureFlag S_SetValidationFailureFlag --> N_SetValidationFailureFlag_Node0 N_SetValidationFailureFlag_Node0 -- No --> E_SetValidationFailureFlag
File: GCX016.cbl
GIVEN:
Any validation error has been logged
WHEN:
The system sets validation failure flag
THEN:
The system skips cargo processing
β Consolidated Acceptance Criteria
- The system encounters validation failure → the system skips cargo processing and does not proceed with car and waybill operations
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SkipCargoProcessing(["Start Step"])
E_SkipCargoProcessing(["End Step"])
N_SkipCargoProcessing_Node0{"The system encounters validation
failure"}:::decision N_SkipCargoProcessing_Node0_action["The system skips cargo processing
and does not proceed with car and
waybill operations"]:::main N_SkipCargoProcessing_Node0 -- Yes --> N_SkipCargoProcessing_Node0_action N_SkipCargoProcessing_Node0_action --> E_SkipCargoProcessing S_SkipCargoProcessing --> N_SkipCargoProcessing_Node0 N_SkipCargoProcessing_Node0 -- No --> E_SkipCargoProcessing
failure"}:::decision N_SkipCargoProcessing_Node0_action["The system skips cargo processing
and does not proceed with car and
waybill operations"]:::main N_SkipCargoProcessing_Node0 -- Yes --> N_SkipCargoProcessing_Node0_action N_SkipCargoProcessing_Node0_action --> E_SkipCargoProcessing S_SkipCargoProcessing --> N_SkipCargoProcessing_Node0 N_SkipCargoProcessing_Node0 -- No --> E_SkipCargoProcessing
File: GCX016.cbl
GIVEN:
Validation failure flag is set
WHEN:
The system encounters validation failure
THEN:
- The system skips cargo processing
- Does not proceed with car
- Waybill operations
β Consolidated Acceptance Criteria
- The system calls GCCCARFM utility to validate the equipment ID format → the system determines if the equipment ID format is valid or invalid
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CallGCCCARFMUtility(["Start Step"])
E_CallGCCCARFMUtility(["End Step"])
N_CallGCCCARFMUtility_Node0{"The system calls GCCCARFM utility
to validate the equipment ID format"}:::decision N_CallGCCCARFMUtility_Node0_action["The system determines if the
equipment ID format is valid or
invalid"]:::main N_CallGCCCARFMUtility_Node0 -- Yes --> N_CallGCCCARFMUtility_Node0_action N_CallGCCCARFMUtility_Node0_action --> E_CallGCCCARFMUtility S_CallGCCCARFMUtility --> N_CallGCCCARFMUtility_Node0 N_CallGCCCARFMUtility_Node0 -- No --> E_CallGCCCARFMUtility
to validate the equipment ID format"}:::decision N_CallGCCCARFMUtility_Node0_action["The system determines if the
equipment ID format is valid or
invalid"]:::main N_CallGCCCARFMUtility_Node0 -- Yes --> N_CallGCCCARFMUtility_Node0_action N_CallGCCCARFMUtility_Node0_action --> E_CallGCCCARFMUtility S_CallGCCCARFMUtility --> N_CallGCCCARFMUtility_Node0 N_CallGCCCARFMUtility_Node0 -- No --> E_CallGCCCARFMUtility
File: GCX016.cbl
GIVEN:
An equipment identifier is received from N7 segment
WHEN:
The system calls GCCCARFM utility to validate the equipment ID format
THEN:
The system determines if the equipment ID format is valid or invalid
β Consolidated Acceptance Criteria
- The system processes the equipment ID through standardization → the equipment ID is converted to standard format for further processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_StandardizeEquipmentIDFormat(["Start Step"])
E_StandardizeEquipmentIDFormat(["End Step"])
N_StandardizeEquipmentIDFormat_Node0{"The system processes the equipment
ID through standardization"}:::decision N_StandardizeEquipmentIDFormat_Node0_action["The equipment ID is converted to
standard format for further
processing"]:::main N_StandardizeEquipmentIDFormat_Node0 -- Yes --> N_StandardizeEquipmentIDFormat_Node0_action N_StandardizeEquipmentIDFormat_Node0_action --> E_StandardizeEquipmentIDFormat S_StandardizeEquipmentIDFormat --> N_StandardizeEquipmentIDFormat_Node0 N_StandardizeEquipmentIDFormat_Node0 -- No --> E_StandardizeEquipmentIDFormat
ID through standardization"}:::decision N_StandardizeEquipmentIDFormat_Node0_action["The equipment ID is converted to
standard format for further
processing"]:::main N_StandardizeEquipmentIDFormat_Node0 -- Yes --> N_StandardizeEquipmentIDFormat_Node0_action N_StandardizeEquipmentIDFormat_Node0_action --> E_StandardizeEquipmentIDFormat S_StandardizeEquipmentIDFormat --> N_StandardizeEquipmentIDFormat_Node0 N_StandardizeEquipmentIDFormat_Node0 -- No --> E_StandardizeEquipmentIDFormat
File: GCX016.cbl
GIVEN:
An equipment identifier has passed initial format validation
WHEN:
The system processes the equipment ID through standardization
THEN:
The equipment ID is converted to standard format for further processing
β Consolidated Acceptance Criteria
- The system validates the equipment ID structure → the system determines if the structure validation passes or fails
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ValidateEquipmentIDStructure(["Start Step"])
E_ValidateEquipmentIDStructure(["End Step"])
N_ValidateEquipmentIDStructure_Node0{"The system validates the equipment
ID structure"}:::decision N_ValidateEquipmentIDStructure_Node0_action["The system determines if the
structure validation passes or fails"]:::main N_ValidateEquipmentIDStructure_Node0 -- Yes --> N_ValidateEquipmentIDStructure_Node0_action N_ValidateEquipmentIDStructure_Node0_action --> E_ValidateEquipmentIDStructure S_ValidateEquipmentIDStructure --> N_ValidateEquipmentIDStructure_Node0 N_ValidateEquipmentIDStructure_Node0 -- No --> E_ValidateEquipmentIDStructure
ID structure"}:::decision N_ValidateEquipmentIDStructure_Node0_action["The system determines if the
structure validation passes or fails"]:::main N_ValidateEquipmentIDStructure_Node0 -- Yes --> N_ValidateEquipmentIDStructure_Node0_action N_ValidateEquipmentIDStructure_Node0_action --> E_ValidateEquipmentIDStructure S_ValidateEquipmentIDStructure --> N_ValidateEquipmentIDStructure_Node0 N_ValidateEquipmentIDStructure_Node0 -- No --> E_ValidateEquipmentIDStructure
File: GCX016.cbl
GIVEN:
An equipment identifier has been standardized
WHEN:
The system validates the equipment ID structure
THEN:
The system determines if the structure validation passes or fails
β Consolidated Acceptance Criteria
- The system updates the cargo record → the cargo record is updated with the formatted car ID
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UpdateCargoRecordwithFormattedCarID(["Start Step"])
E_UpdateCargoRecordwithFormattedCarID(["End Step"])
N_UpdateCargoRecordwithFormattedCarID_Node0{"The system updates the cargo record"}:::decision
N_UpdateCargoRecordwithFormattedCarID_Node0_action["The cargo record is updated with
the formatted car ID"]:::main N_UpdateCargoRecordwithFormattedCarID_Node0 -- Yes --> N_UpdateCargoRecordwithFormattedCarID_Node0_action N_UpdateCargoRecordwithFormattedCarID_Node0_action --> E_UpdateCargoRecordwithFormattedCarID S_UpdateCargoRecordwithFormattedCarID --> N_UpdateCargoRecordwithFormattedCarID_Node0 N_UpdateCargoRecordwithFormattedCarID_Node0 -- No --> E_UpdateCargoRecordwithFormattedCarID
the formatted car ID"]:::main N_UpdateCargoRecordwithFormattedCarID_Node0 -- Yes --> N_UpdateCargoRecordwithFormattedCarID_Node0_action N_UpdateCargoRecordwithFormattedCarID_Node0_action --> E_UpdateCargoRecordwithFormattedCarID S_UpdateCargoRecordwithFormattedCarID --> N_UpdateCargoRecordwithFormattedCarID_Node0 N_UpdateCargoRecordwithFormattedCarID_Node0 -- No --> E_UpdateCargoRecordwithFormattedCarID
File: GCX016.cbl
GIVEN:
An equipment identifier has passed both format and structure validation
WHEN:
The system updates the cargo record
THEN:
The cargo record is updated with the formatted car ID
β Consolidated Acceptance Criteria
- The system sets the equipment ID in working storage → the equipment ID is available for further processing operations
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetEquipmentIDinWorkingStorage(["Start Step"])
E_SetEquipmentIDinWorkingStorage(["End Step"])
N_SetEquipmentIDinWorkingStorage_Node0{"The system sets the equipment ID in
working storage"}:::decision N_SetEquipmentIDinWorkingStorage_Node0_action["The equipment ID is available for
further processing operations"]:::main N_SetEquipmentIDinWorkingStorage_Node0 -- Yes --> N_SetEquipmentIDinWorkingStorage_Node0_action N_SetEquipmentIDinWorkingStorage_Node0_action --> E_SetEquipmentIDinWorkingStorage S_SetEquipmentIDinWorkingStorage --> N_SetEquipmentIDinWorkingStorage_Node0 N_SetEquipmentIDinWorkingStorage_Node0 -- No --> E_SetEquipmentIDinWorkingStorage
working storage"}:::decision N_SetEquipmentIDinWorkingStorage_Node0_action["The equipment ID is available for
further processing operations"]:::main N_SetEquipmentIDinWorkingStorage_Node0 -- Yes --> N_SetEquipmentIDinWorkingStorage_Node0_action N_SetEquipmentIDinWorkingStorage_Node0_action --> E_SetEquipmentIDinWorkingStorage S_SetEquipmentIDinWorkingStorage --> N_SetEquipmentIDinWorkingStorage_Node0 N_SetEquipmentIDinWorkingStorage_Node0 -- No --> E_SetEquipmentIDinWorkingStorage
File: GCX016.cbl
GIVEN:
A cargo record has been updated with formatted car ID
WHEN:
The system sets the equipment ID in working storage
THEN:
The equipment ID is available for further processing operations
β Consolidated Acceptance Criteria
- The system encounters a format error → the system logs the format error and uses the original equipment ID
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogFormatError(["Start Step"])
E_LogFormatError(["End Step"])
N_LogFormatError_Node0{"The system encounters a format
error"}:::decision N_LogFormatError_Node0_action["The system logs the format error
and uses the original equipment ID"]:::exclusion N_LogFormatError_Node0 -- Yes -->|Alternative| N_LogFormatError_Node0_action N_LogFormatError_Node0_action --> E_LogFormatError S_LogFormatError --> N_LogFormatError_Node0 N_LogFormatError_Node0 -- No --> E_LogFormatError
error"}:::decision N_LogFormatError_Node0_action["The system logs the format error
and uses the original equipment ID"]:::exclusion N_LogFormatError_Node0 -- Yes -->|Alternative| N_LogFormatError_Node0_action N_LogFormatError_Node0_action --> E_LogFormatError S_LogFormatError --> N_LogFormatError_Node0 N_LogFormatError_Node0 -- No --> E_LogFormatError
File: GCX016.cbl
GIVEN:
An equipment identifier fails format validation
WHEN:
The system encounters a format error
THEN:
- The system logs the format error
- Uses the original equipment id
β Consolidated Acceptance Criteria
- The system encounters a validation failure → the system logs a validation warning and uses the original equipment ID
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogValidationWarning(["Start Step"])
E_LogValidationWarning(["End Step"])
N_LogValidationWarning_Node0{"The system encounters a validation
failure"}:::decision N_LogValidationWarning_Node0_action["The system logs a validation
warning and uses the original
equipment ID"]:::main N_LogValidationWarning_Node0 -- Yes --> N_LogValidationWarning_Node0_action N_LogValidationWarning_Node0_action --> E_LogValidationWarning S_LogValidationWarning --> N_LogValidationWarning_Node0 N_LogValidationWarning_Node0 -- No --> E_LogValidationWarning
failure"}:::decision N_LogValidationWarning_Node0_action["The system logs a validation
warning and uses the original
equipment ID"]:::main N_LogValidationWarning_Node0 -- Yes --> N_LogValidationWarning_Node0_action N_LogValidationWarning_Node0_action --> E_LogValidationWarning S_LogValidationWarning --> N_LogValidationWarning_Node0 N_LogValidationWarning_Node0 -- No --> E_LogValidationWarning
File: GCX016.cbl
GIVEN:
An equipment identifier fails structure validation
WHEN:
The system encounters a validation failure
THEN:
- The system logs a validation warning
- Uses the original equipment id
β Consolidated Acceptance Criteria
- The system needs to continue processing → the system uses the original equipment ID and continues processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UseOriginalEquipmentID(["Start Step"])
E_UseOriginalEquipmentID(["End Step"])
N_UseOriginalEquipmentID_Node0{"The system needs to continue
processing"}:::decision N_UseOriginalEquipmentID_Node0_action["The system uses the original
equipment ID and continues
processing"]:::main N_UseOriginalEquipmentID_Node0 -- Yes --> N_UseOriginalEquipmentID_Node0_action N_UseOriginalEquipmentID_Node0_action --> E_UseOriginalEquipmentID S_UseOriginalEquipmentID --> N_UseOriginalEquipmentID_Node0 N_UseOriginalEquipmentID_Node0 -- No --> E_UseOriginalEquipmentID
processing"}:::decision N_UseOriginalEquipmentID_Node0_action["The system uses the original
equipment ID and continues
processing"]:::main N_UseOriginalEquipmentID_Node0 -- Yes --> N_UseOriginalEquipmentID_Node0_action N_UseOriginalEquipmentID_Node0_action --> E_UseOriginalEquipmentID S_UseOriginalEquipmentID --> N_UseOriginalEquipmentID_Node0 N_UseOriginalEquipmentID_Node0 -- No --> E_UseOriginalEquipmentID
File: GCX016.cbl
GIVEN:
Equipment identifier formatting or validation has failed
WHEN:
The system needs to continue processing
THEN:
- The system uses the original equipment id
- Continues processing
β Consolidated Acceptance Criteria
- System prepares to search cargo database using car ID → car ID index key is constructed with proper format for database query
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_BuildCarIDIndexKey(["Start Step"])
E_BuildCarIDIndexKey(["End Step"])
N_BuildCarIDIndexKey_Node0{"System prepares to search cargo
database using car ID"}:::decision N_BuildCarIDIndexKey_Node0_action["Car ID index key is constructed
with proper format for database
query"]:::main N_BuildCarIDIndexKey_Node0 -- Yes --> N_BuildCarIDIndexKey_Node0_action N_BuildCarIDIndexKey_Node0_action --> E_BuildCarIDIndexKey S_BuildCarIDIndexKey --> N_BuildCarIDIndexKey_Node0 N_BuildCarIDIndexKey_Node0 -- No --> E_BuildCarIDIndexKey
database using car ID"}:::decision N_BuildCarIDIndexKey_Node0_action["Car ID index key is constructed
with proper format for database
query"]:::main N_BuildCarIDIndexKey_Node0 -- Yes --> N_BuildCarIDIndexKey_Node0_action N_BuildCarIDIndexKey_Node0_action --> E_BuildCarIDIndexKey S_BuildCarIDIndexKey --> N_BuildCarIDIndexKey_Node0 N_BuildCarIDIndexKey_Node0 -- No --> E_BuildCarIDIndexKey
File: GCX016.cbl
GIVEN:
Car ID has been validated as valid
WHEN:
System prepares to search cargo database using car ID
THEN:
Car ID index key is constructed with proper format for database query
β Consolidated Acceptance Criteria
- System performs comprehensive car ID search → all cargo records matching the car ID are retrieved regardless of US-CCN or other restrictive criteria
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SearchAllCargowithMatchingCarID(["Start Step"])
E_SearchAllCargowithMatchingCarID(["End Step"])
N_SearchAllCargowithMatchingCarID_Node0{"System performs comprehensive car
ID search"}:::decision N_SearchAllCargowithMatchingCarID_Node0_action["All cargo records matching the car
ID are retrieved regardless of
US-CCN or other restrictive criteria"]:::main N_SearchAllCargowithMatchingCarID_Node0 -- Yes --> N_SearchAllCargowithMatchingCarID_Node0_action N_SearchAllCargowithMatchingCarID_Node0_action --> E_SearchAllCargowithMatchingCarID S_SearchAllCargowithMatchingCarID --> N_SearchAllCargowithMatchingCarID_Node0 N_SearchAllCargowithMatchingCarID_Node0 -- No --> E_SearchAllCargowithMatchingCarID
ID search"}:::decision N_SearchAllCargowithMatchingCarID_Node0_action["All cargo records matching the car
ID are retrieved regardless of
US-CCN or other restrictive criteria"]:::main N_SearchAllCargowithMatchingCarID_Node0 -- Yes --> N_SearchAllCargowithMatchingCarID_Node0_action N_SearchAllCargowithMatchingCarID_Node0_action --> E_SearchAllCargowithMatchingCarID S_SearchAllCargowithMatchingCarID --> N_SearchAllCargowithMatchingCarID_Node0 N_SearchAllCargowithMatchingCarID_Node0 -- No --> E_SearchAllCargowithMatchingCarID
File: GCX016.cbl
GIVEN:
Broader search without US-CCN has been initiated
WHEN:
System performs comprehensive car ID search
THEN:
All cargo records matching the car ID are retrieved regardless of US-CCN or other restrictive criteria
β Consolidated Acceptance Criteria
- System evaluates search results → if matching cargo is found, select best match based on criteria, otherwise mark as cargo not found
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AnyMatchingCargo(["Start Step"])
E_AnyMatchingCargo(["End Step"])
N_AnyMatchingCargo_Node0{"System evaluates search results"}:::decision
N_AnyMatchingCargo_Node0_action["If matching cargo is found, select
best match based on criteria,
otherwise mark as cargo not found"]:::main N_AnyMatchingCargo_Node0 -- Yes --> N_AnyMatchingCargo_Node0_action N_AnyMatchingCargo_Node0_action --> E_AnyMatchingCargo S_AnyMatchingCargo --> N_AnyMatchingCargo_Node0 N_AnyMatchingCargo_Node0 -- No --> E_AnyMatchingCargo
best match based on criteria,
otherwise mark as cargo not found"]:::main N_AnyMatchingCargo_Node0 -- Yes --> N_AnyMatchingCargo_Node0_action N_AnyMatchingCargo_Node0_action --> E_AnyMatchingCargo S_AnyMatchingCargo --> N_AnyMatchingCargo_Node0 N_AnyMatchingCargo_Node0 -- No --> E_AnyMatchingCargo
File: GCX016.cbl
GIVEN:
Comprehensive car ID search has been completed
WHEN:
System evaluates search results
THEN:
If matching cargo is found, select best match based on criteria, otherwise mark as cargo not found
β Consolidated Acceptance Criteria
- System selects the best match → business criteria are applied to determine the most appropriate cargo record for processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SelectBestMatchBasedonCriteria(["Start Step"])
E_SelectBestMatchBasedonCriteria(["End Step"])
N_SelectBestMatchBasedonCriteria_Node0{"System selects the best match"}:::decision
N_SelectBestMatchBasedonCriteria_Node0_action["Business criteria are applied to
determine the most appropriate cargo
record for processing"]:::main N_SelectBestMatchBasedonCriteria_Node0 -- Yes --> N_SelectBestMatchBasedonCriteria_Node0_action N_SelectBestMatchBasedonCriteria_Node0_action --> E_SelectBestMatchBasedonCriteria S_SelectBestMatchBasedonCriteria --> N_SelectBestMatchBasedonCriteria_Node0 N_SelectBestMatchBasedonCriteria_Node0 -- No --> E_SelectBestMatchBasedonCriteria
determine the most appropriate cargo
record for processing"]:::main N_SelectBestMatchBasedonCriteria_Node0 -- Yes --> N_SelectBestMatchBasedonCriteria_Node0_action N_SelectBestMatchBasedonCriteria_Node0_action --> E_SelectBestMatchBasedonCriteria S_SelectBestMatchBasedonCriteria --> N_SelectBestMatchBasedonCriteria_Node0 N_SelectBestMatchBasedonCriteria_Node0 -- No --> E_SelectBestMatchBasedonCriteria
File: GCX016.cbl
GIVEN:
Multiple cargo records match the car ID
WHEN:
System selects the best match
THEN:
Business criteria are applied to determine the most appropriate cargo record for processing
β Consolidated Acceptance Criteria
- System processes cargo not found condition → cargo status is marked as not found for appropriate business handling
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MarkasCargoNotFound(["Start Step"])
E_MarkasCargoNotFound(["End Step"])
N_MarkasCargoNotFound_Node0{"System processes cargo not found
condition"}:::decision N_MarkasCargoNotFound_Node0_action["Cargo status is marked as not found
for appropriate business handling"]:::main N_MarkasCargoNotFound_Node0 -- Yes --> N_MarkasCargoNotFound_Node0_action N_MarkasCargoNotFound_Node0_action --> E_MarkasCargoNotFound S_MarkasCargoNotFound --> N_MarkasCargoNotFound_Node0 N_MarkasCargoNotFound_Node0 -- No --> E_MarkasCargoNotFound
condition"}:::decision N_MarkasCargoNotFound_Node0_action["Cargo status is marked as not found
for appropriate business handling"]:::main N_MarkasCargoNotFound_Node0 -- Yes --> N_MarkasCargoNotFound_Node0_action N_MarkasCargoNotFound_Node0_action --> E_MarkasCargoNotFound S_MarkasCargoNotFound --> N_MarkasCargoNotFound_Node0 N_MarkasCargoNotFound_Node0 -- No --> E_MarkasCargoNotFound
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
All car ID search methods have failed to locate valid cargo OR car ID is invalid
WHEN:
System processes cargo not found condition
THEN:
Cargo status is marked as not found for appropriate business handling
β Consolidated Acceptance Criteria
- System logs the search attempt → search attempt details are recorded including car ID used and search outcome
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogCarIDSearchAttempt(["Start Step"])
E_LogCarIDSearchAttempt(["End Step"])
N_LogCarIDSearchAttempt_Node0{"System logs the search attempt"}:::decision
N_LogCarIDSearchAttempt_Node0_action["Search attempt details are recorded
including car ID used and search
outcome"]:::main N_LogCarIDSearchAttempt_Node0 -- Yes --> N_LogCarIDSearchAttempt_Node0_action N_LogCarIDSearchAttempt_Node0_action --> E_LogCarIDSearchAttempt S_LogCarIDSearchAttempt --> N_LogCarIDSearchAttempt_Node0 N_LogCarIDSearchAttempt_Node0 -- No --> E_LogCarIDSearchAttempt
including car ID used and search
outcome"]:::main N_LogCarIDSearchAttempt_Node0 -- Yes --> N_LogCarIDSearchAttempt_Node0_action N_LogCarIDSearchAttempt_Node0_action --> E_LogCarIDSearchAttempt S_LogCarIDSearchAttempt --> N_LogCarIDSearchAttempt_Node0 N_LogCarIDSearchAttempt_Node0 -- No --> E_LogCarIDSearchAttempt
File: GCX016.cbl
GIVEN:
Car ID search process has completed regardless of success or failure
WHEN:
System logs the search attempt
THEN:
- Search attempt details are recorded including car id used
- Search outcome
β Consolidated Acceptance Criteria
- The system processes multi-cargo records → the system spawns GCT0161E for each follower cargo record AND sets follower end-of-database flag when no more records exist
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RetrieveFollowerManifests(["Start Step"])
E_RetrieveFollowerManifests(["End Step"])
N_RetrieveFollowerManifests_Node0{"The system processes multi-cargo
records"}:::decision N_RetrieveFollowerManifests_Node0_action["The system spawns GCT0161E for each
follower cargo record AND sets
follower end-of-database flag when
no more records exist"]:::main N_RetrieveFollowerManifests_Node0 -- Yes --> N_RetrieveFollowerManifests_Node0_action N_RetrieveFollowerManifests_Node0_action --> E_RetrieveFollowerManifests S_RetrieveFollowerManifests --> N_RetrieveFollowerManifests_Node0 N_RetrieveFollowerManifests_Node0 -- No --> E_RetrieveFollowerManifests
records"}:::decision N_RetrieveFollowerManifests_Node0_action["The system spawns GCT0161E for each
follower cargo record AND sets
follower end-of-database flag when
no more records exist"]:::main N_RetrieveFollowerManifests_Node0 -- Yes --> N_RetrieveFollowerManifests_Node0_action N_RetrieveFollowerManifests_Node0_action --> E_RetrieveFollowerManifests S_RetrieveFollowerManifests --> N_RetrieveFollowerManifests_Node0 N_RetrieveFollowerManifests_Node0 -- No --> E_RetrieveFollowerManifests
File: GCX016.cbl
GIVEN:
A lead manifest is being processed AND the lead manifest CCN matches the saved CCN
WHEN:
The system processes multi-cargo records
THEN:
- The system spawns gct0161e for each follower cargo record
- Sets follower end-of-database flag when no more records exist
β Consolidated Acceptance Criteria
- The system prepares the message for cargo processing → the system sets special action code to '350' AND copies disposition code, quantity, and entry number from X4 segment
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ProcessEachFollowerManifest(["Start Step"])
E_ProcessEachFollowerManifest(["End Step"])
N_ProcessEachFollowerManifest_Node0{"The system prepares the message for
cargo processing"}:::decision N_ProcessEachFollowerManifest_Node0_action["The system sets special action code
to 350 AND copies disposition code,
quantity, and entry number from X4
segment"]:::main N_ProcessEachFollowerManifest_Node0 -- Yes --> N_ProcessEachFollowerManifest_Node0_action N_ProcessEachFollowerManifest_Node0_action --> E_ProcessEachFollowerManifest S_ProcessEachFollowerManifest --> N_ProcessEachFollowerManifest_Node0 N_ProcessEachFollowerManifest_Node0 -- No --> E_ProcessEachFollowerManifest
cargo processing"}:::decision N_ProcessEachFollowerManifest_Node0_action["The system sets special action code
to 350 AND copies disposition code,
quantity, and entry number from X4
segment"]:::main N_ProcessEachFollowerManifest_Node0 -- Yes --> N_ProcessEachFollowerManifest_Node0_action N_ProcessEachFollowerManifest_Node0_action --> E_ProcessEachFollowerManifest S_ProcessEachFollowerManifest --> N_ProcessEachFollowerManifest_Node0 N_ProcessEachFollowerManifest_Node0 -- No --> E_ProcessEachFollowerManifest
File: GCX016.cbl
GIVEN:
A follower manifest is being prepared for processing
WHEN:
The system prepares the message for cargo processing
THEN:
The system sets special action code to '350' AND copies disposition code, quantity, and entry number from X4 segment
β Consolidated Acceptance Criteria
- The system processes Canadian manifest coordination → the system searches for Canadian manifest records by waybill AND logs cargo release information to GCX105 system AND filters out deleted records and new bond created records
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CoordinateCrossBorderRequirements(["Start Step"])
E_CoordinateCrossBorderRequirements(["End Step"])
N_CoordinateCrossBorderRequirements_Node0{"The system processes Canadian
manifest coordination"}:::decision N_CoordinateCrossBorderRequirements_Node0_action["The system searches for Canadian
manifest records by waybill AND logs
cargo release information to GCX105
system AND filters out deleted
records and new bond created records"]:::main N_CoordinateCrossBorderRequirements_Node0 -- Yes --> N_CoordinateCrossBorderRequirements_Node0_action N_CoordinateCrossBorderRequirements_Node0_action --> E_CoordinateCrossBorderRequirements S_CoordinateCrossBorderRequirements --> N_CoordinateCrossBorderRequirements_Node0 N_CoordinateCrossBorderRequirements_Node0 -- No --> E_CoordinateCrossBorderRequirements
manifest coordination"}:::decision N_CoordinateCrossBorderRequirements_Node0_action["The system searches for Canadian
manifest records by waybill AND logs
cargo release information to GCX105
system AND filters out deleted
records and new bond created records"]:::main N_CoordinateCrossBorderRequirements_Node0 -- Yes --> N_CoordinateCrossBorderRequirements_Node0_action N_CoordinateCrossBorderRequirements_Node0_action --> E_CoordinateCrossBorderRequirements S_CoordinateCrossBorderRequirements --> N_CoordinateCrossBorderRequirements_Node0 N_CoordinateCrossBorderRequirements_Node0 -- No --> E_CoordinateCrossBorderRequirements
File: GCX016.cbl
GIVEN:
Cargo has been released AND Canadian manifest records exist for the same waybill
WHEN:
The system processes Canadian manifest coordination
THEN:
- The system searches for canadian manifest records by waybill
- Logs cargo release information to gcx105 system
- Filters out deleted records
- New bond created records
β Consolidated Acceptance Criteria
- If the manifest type → the system identifies the manifest as either a detour manifest requiring lead manifest identification OR a special manifest requiring direct special processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ManifestTypeCheck(["Start Step"])
E_ManifestTypeCheck(["End Step"])
N_ManifestTypeCheck_Node0{"The system evaluates the manifest
type"}:::decision N_ManifestTypeCheck_Node0_action["The system identifies the manifest
as either a detour manifest
requiring lead manifest
identification OR a special manifest
requiring direct special processing"]:::main N_ManifestTypeCheck_Node0 -- Yes --> N_ManifestTypeCheck_Node0_action N_ManifestTypeCheck_Node0_action --> E_ManifestTypeCheck S_ManifestTypeCheck --> N_ManifestTypeCheck_Node0 N_ManifestTypeCheck_Node0 -- No --> E_ManifestTypeCheck
type"}:::decision N_ManifestTypeCheck_Node0_action["The system identifies the manifest
as either a detour manifest
requiring lead manifest
identification OR a special manifest
requiring direct special processing"]:::main N_ManifestTypeCheck_Node0 -- Yes --> N_ManifestTypeCheck_Node0_action N_ManifestTypeCheck_Node0_action --> E_ManifestTypeCheck S_ManifestTypeCheck --> N_ManifestTypeCheck_Node0 N_ManifestTypeCheck_Node0 -- No --> E_ManifestTypeCheck
File: GCX016.cbl
GIVEN:
A manifest is detected for special processing
WHEN:
The system evaluates the manifest type
THEN:
The system identifies the manifest as either a detour manifest requiring lead manifest identification OR a special manifest requiring direct special processing
β Consolidated Acceptance Criteria
- The system identifies the lead manifest → the system uses the manifest CCN to determine lead status AND establishes the relationship for follower manifest processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IdentifyLeadManifest(["Start Step"])
E_IdentifyLeadManifest(["End Step"])
N_IdentifyLeadManifest_Node0{"The system identifies the lead
manifest"}:::decision N_IdentifyLeadManifest_Node0_action["The system uses the manifest CCN to
determine lead status AND
establishes the relationship for
follower manifest processing"]:::main N_IdentifyLeadManifest_Node0 -- Yes --> N_IdentifyLeadManifest_Node0_action N_IdentifyLeadManifest_Node0_action --> E_IdentifyLeadManifest S_IdentifyLeadManifest --> N_IdentifyLeadManifest_Node0 N_IdentifyLeadManifest_Node0 -- No --> E_IdentifyLeadManifest
manifest"}:::decision N_IdentifyLeadManifest_Node0_action["The system uses the manifest CCN to
determine lead status AND
establishes the relationship for
follower manifest processing"]:::main N_IdentifyLeadManifest_Node0 -- Yes --> N_IdentifyLeadManifest_Node0_action N_IdentifyLeadManifest_Node0_action --> E_IdentifyLeadManifest S_IdentifyLeadManifest --> N_IdentifyLeadManifest_Node0 N_IdentifyLeadManifest_Node0 -- No --> E_IdentifyLeadManifest
File: GCX016.cbl
GIVEN:
A detour manifest is being processed
WHEN:
The system identifies the lead manifest
THEN:
- The system uses the manifest ccn to determine lead status
- Establishes the relationship for follower manifest processing
β Consolidated Acceptance Criteria
- The system validates manifest relationships → the system verifies that follower manifest CCNs are properly linked to the lead manifest CCN AND ensures data integrity across the manifest group
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ValidateManifestRelationships(["Start Step"])
E_ValidateManifestRelationships(["End Step"])
N_ValidateManifestRelationships_Node0{"The system validates manifest
relationships"}:::decision N_ValidateManifestRelationships_Node0_action["The system verifies that follower
manifest CCNs are properly linked to
the lead manifest CCN AND ensures
data integrity across the manifest
group"]:::main N_ValidateManifestRelationships_Node0 -- Yes --> N_ValidateManifestRelationships_Node0_action N_ValidateManifestRelationships_Node0_action --> E_ValidateManifestRelationships S_ValidateManifestRelationships --> N_ValidateManifestRelationships_Node0 N_ValidateManifestRelationships_Node0 -- No --> E_ValidateManifestRelationships
relationships"}:::decision N_ValidateManifestRelationships_Node0_action["The system verifies that follower
manifest CCNs are properly linked to
the lead manifest CCN AND ensures
data integrity across the manifest
group"]:::main N_ValidateManifestRelationships_Node0 -- Yes --> N_ValidateManifestRelationships_Node0_action N_ValidateManifestRelationships_Node0_action --> E_ValidateManifestRelationships S_ValidateManifestRelationships --> N_ValidateManifestRelationships_Node0 N_ValidateManifestRelationships_Node0 -- No --> E_ValidateManifestRelationships
File: GCX016.cbl
GIVEN:
Follower manifests have been retrieved for a lead manifest
WHEN:
The system validates manifest relationships
THEN:
- The system verifies that follower manifest ccns are properly linked to the lead manifest ccn
- Ensures data integrity across the manifest group
β Consolidated Acceptance Criteria
- The system performs port mapping → the system uses GCSTBRT table to map US port codes to Canadian port codes AND establishes proper cross-border routing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MapUSPorttoCanadianPort(["Start Step"])
E_MapUSPorttoCanadianPort(["End Step"])
N_MapUSPorttoCanadianPort_Node0{"The system performs port mapping"}:::decision
N_MapUSPorttoCanadianPort_Node0_action["The system uses GCSTBRT table to
map US port codes to Canadian port
codes AND establishes proper
cross-border routing"]:::main N_MapUSPorttoCanadianPort_Node0 -- Yes --> N_MapUSPorttoCanadianPort_Node0_action N_MapUSPorttoCanadianPort_Node0_action --> E_MapUSPorttoCanadianPort S_MapUSPorttoCanadianPort --> N_MapUSPorttoCanadianPort_Node0 N_MapUSPorttoCanadianPort_Node0 -- No --> E_MapUSPorttoCanadianPort
map US port codes to Canadian port
codes AND establishes proper
cross-border routing"]:::main N_MapUSPorttoCanadianPort_Node0 -- Yes --> N_MapUSPorttoCanadianPort_Node0_action N_MapUSPorttoCanadianPort_Node0_action --> E_MapUSPorttoCanadianPort S_MapUSPorttoCanadianPort --> N_MapUSPorttoCanadianPort_Node0 N_MapUSPorttoCanadianPort_Node0 -- No --> E_MapUSPorttoCanadianPort
File: GCX016.cbl
GIVEN:
A Canadian manifest is involved in processing
WHEN:
The system performs port mapping
THEN:
- The system uses gcstbrt table to map us port codes to canadian port codes
- Establishes proper cross-border routing
β Consolidated Acceptance Criteria
- The disposition code is evaluated for bond clearing eligibility → the system validates the code is '95' and proceeds with bond clearing or rejects invalid codes
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ValidateDispositionCode95(["Start Step"])
E_ValidateDispositionCode95(["End Step"])
N_ValidateDispositionCode95_Node0{"The disposition code is evaluated
for bond clearing eligibility"}:::decision N_ValidateDispositionCode95_Node0_action["The system validates the code is 95
and proceeds with bond clearing or
rejects invalid codes"]:::main N_ValidateDispositionCode95_Node0 -- Yes --> N_ValidateDispositionCode95_Node0_action N_ValidateDispositionCode95_Node0_action --> E_ValidateDispositionCode95 S_ValidateDispositionCode95 --> N_ValidateDispositionCode95_Node0 N_ValidateDispositionCode95_Node0 -- No --> E_ValidateDispositionCode95
for bond clearing eligibility"}:::decision N_ValidateDispositionCode95_Node0_action["The system validates the code is 95
and proceeds with bond clearing or
rejects invalid codes"]:::main N_ValidateDispositionCode95_Node0 -- Yes --> N_ValidateDispositionCode95_Node0_action N_ValidateDispositionCode95_Node0_action --> E_ValidateDispositionCode95 S_ValidateDispositionCode95 --> N_ValidateDispositionCode95_Node0 N_ValidateDispositionCode95_Node0 -- No --> E_ValidateDispositionCode95
File: GCX016.cbl
GIVEN:
An X4 segment is received with a disposition code
WHEN:
The disposition code is evaluated for bond clearing eligibility
THEN:
The system validates the code is '95' and proceeds with bond clearing or rejects invalid codes
β Consolidated Acceptance Criteria
- The system needs to access cargo data for bond clearing → the current cargo record is retrieved using the CCN key from the X4 segment
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RetrieveCurrentCargoRecord(["Start Step"])
E_RetrieveCurrentCargoRecord(["End Step"])
N_RetrieveCurrentCargoRecord_Node0{"The system needs to access cargo
data for bond clearing"}:::decision N_RetrieveCurrentCargoRecord_Node0_action["The current cargo record is
retrieved using the CCN key from the
X4 segment"]:::main N_RetrieveCurrentCargoRecord_Node0 -- Yes --> N_RetrieveCurrentCargoRecord_Node0_action N_RetrieveCurrentCargoRecord_Node0_action --> E_RetrieveCurrentCargoRecord S_RetrieveCurrentCargoRecord --> N_RetrieveCurrentCargoRecord_Node0 N_RetrieveCurrentCargoRecord_Node0 -- No --> E_RetrieveCurrentCargoRecord
data for bond clearing"}:::decision N_RetrieveCurrentCargoRecord_Node0_action["The current cargo record is
retrieved using the CCN key from the
X4 segment"]:::main N_RetrieveCurrentCargoRecord_Node0 -- Yes --> N_RetrieveCurrentCargoRecord_Node0_action N_RetrieveCurrentCargoRecord_Node0_action --> E_RetrieveCurrentCargoRecord S_RetrieveCurrentCargoRecord --> N_RetrieveCurrentCargoRecord_Node0 N_RetrieveCurrentCargoRecord_Node0 -- No --> E_RetrieveCurrentCargoRecord
File: GCX016.cbl
GIVEN:
A valid disposition code 95 has been confirmed
WHEN:
The system needs to access cargo data for bond clearing
THEN:
The current cargo record is retrieved using the CCN key from the X4 segment
β Consolidated Acceptance Criteria
- Finalizing the bond clearing operation for disposition code 95 → all related bond data fields including bond dates and references are cleared from the cargo record
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ClearRelatedBondDataFields(["Start Step"])
E_ClearRelatedBondDataFields(["End Step"])
N_ClearRelatedBondDataFields_Node0{"Finalizing the bond clearing
operation for disposition code 95"}:::decision N_ClearRelatedBondDataFields_Node0_action["All related bond data fields
including bond dates and references
are cleared from the cargo record"]:::main N_ClearRelatedBondDataFields_Node0 -- Yes --> N_ClearRelatedBondDataFields_Node0_action N_ClearRelatedBondDataFields_Node0_action --> E_ClearRelatedBondDataFields S_ClearRelatedBondDataFields --> N_ClearRelatedBondDataFields_Node0 N_ClearRelatedBondDataFields_Node0 -- No --> E_ClearRelatedBondDataFields
operation for disposition code 95"}:::decision N_ClearRelatedBondDataFields_Node0_action["All related bond data fields
including bond dates and references
are cleared from the cargo record"]:::main N_ClearRelatedBondDataFields_Node0 -- Yes --> N_ClearRelatedBondDataFields_Node0_action N_ClearRelatedBondDataFields_Node0_action --> E_ClearRelatedBondDataFields S_ClearRelatedBondDataFields --> N_ClearRelatedBondDataFields_Node0 N_ClearRelatedBondDataFields_Node0 -- No --> E_ClearRelatedBondDataFields
File: GCX016.cbl
GIVEN:
Bond control number and broker entry number have been cleared
WHEN:
Finalizing the bond clearing operation for disposition code 95
THEN:
- All related bond data fields including bond dates
- References are cleared from the cargo record
β Consolidated Acceptance Criteria
- The disposition code is not '95' or is improperly formatted → an error is generated and the transaction continues with standard processing without bond clearing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ErrorInvalidDispositionCode(["Start Step"])
E_ErrorInvalidDispositionCode(["End Step"])
N_ErrorInvalidDispositionCode_Node0{"The disposition code is not 95 or
is improperly formatted"}:::decision N_ErrorInvalidDispositionCode_Node0_action["An error is generated and the
transaction continues with standard
processing without bond clearing"]:::main N_ErrorInvalidDispositionCode_Node0 -- Yes --> N_ErrorInvalidDispositionCode_Node0_action N_ErrorInvalidDispositionCode_Node0_action --> E_ErrorInvalidDispositionCode S_ErrorInvalidDispositionCode --> N_ErrorInvalidDispositionCode_Node0 N_ErrorInvalidDispositionCode_Node0 -- No --> E_ErrorInvalidDispositionCode
is improperly formatted"}:::decision N_ErrorInvalidDispositionCode_Node0_action["An error is generated and the
transaction continues with standard
processing without bond clearing"]:::main N_ErrorInvalidDispositionCode_Node0 -- Yes --> N_ErrorInvalidDispositionCode_Node0_action N_ErrorInvalidDispositionCode_Node0_action --> E_ErrorInvalidDispositionCode S_ErrorInvalidDispositionCode --> N_ErrorInvalidDispositionCode_Node0 N_ErrorInvalidDispositionCode_Node0 -- No --> E_ErrorInvalidDispositionCode
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
An X4 segment is received with a disposition code
WHEN:
The disposition code is not '95' or is improperly formatted
THEN:
- An error is generated
- The transaction continues with standard processing without bond clearing
β Consolidated Acceptance Criteria
- The entry type code value is '00' → the system should clear bond information and process as border entry
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_BorderEntryProcessingTypeCode00(["Start Step"])
E_BorderEntryProcessingTypeCode00(["End Step"])
N_BorderEntryProcessingTypeCode00_Node0{"The entry type code value is 00"}:::decision
N_BorderEntryProcessingTypeCode00_Node0_action["The system should clear bond
information and process as border
entry"]:::main N_BorderEntryProcessingTypeCode00_Node0 -- Yes --> N_BorderEntryProcessingTypeCode00_Node0_action N_BorderEntryProcessingTypeCode00_Node0_action --> E_BorderEntryProcessingTypeCode00 S_BorderEntryProcessingTypeCode00 --> N_BorderEntryProcessingTypeCode00_Node0 N_BorderEntryProcessingTypeCode00_Node0 -- No --> E_BorderEntryProcessingTypeCode00
information and process as border
entry"]:::main N_BorderEntryProcessingTypeCode00_Node0 -- Yes --> N_BorderEntryProcessingTypeCode00_Node0_action N_BorderEntryProcessingTypeCode00_Node0_action --> E_BorderEntryProcessingTypeCode00 S_BorderEntryProcessingTypeCode00 --> N_BorderEntryProcessingTypeCode00_Node0 N_BorderEntryProcessingTypeCode00_Node0 -- No --> E_BorderEntryProcessingTypeCode00
File: GCX016.cbl
GIVEN:
An EDI entry type code is received from X4 segment
WHEN:
The entry type code value is '00'
THEN:
- The system should clear bond information
- Process as border entry
β Consolidated Acceptance Criteria
- The entry type code value is '61', '62', '63', or '69' → the system should process as master in-bond entry and map to appropriate transport type
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MasterInBondEntryTypes61626369(["Start Step"])
E_MasterInBondEntryTypes61626369(["End Step"])
N_MasterInBondEntryTypes61626369_Node0{"The entry type code value is 61 ,
62 , 63 , or 69"}:::decision N_MasterInBondEntryTypes61626369_Node0_action["The system should process as master
in-bond entry and map to appropriate
transport type"]:::main N_MasterInBondEntryTypes61626369_Node0 -- Yes --> N_MasterInBondEntryTypes61626369_Node0_action N_MasterInBondEntryTypes61626369_Node0_action --> E_MasterInBondEntryTypes61626369 S_MasterInBondEntryTypes61626369 --> N_MasterInBondEntryTypes61626369_Node0 N_MasterInBondEntryTypes61626369_Node0 -- No --> E_MasterInBondEntryTypes61626369
62 , 63 , or 69"}:::decision N_MasterInBondEntryTypes61626369_Node0_action["The system should process as master
in-bond entry and map to appropriate
transport type"]:::main N_MasterInBondEntryTypes61626369_Node0 -- Yes --> N_MasterInBondEntryTypes61626369_Node0_action N_MasterInBondEntryTypes61626369_Node0_action --> E_MasterInBondEntryTypes61626369 S_MasterInBondEntryTypes61626369 --> N_MasterInBondEntryTypes61626369_Node0 N_MasterInBondEntryTypes61626369_Node0 -- No --> E_MasterInBondEntryTypes61626369
File: GCX016.cbl
GIVEN:
An EDI entry type code is received from X4 segment
WHEN:
The entry type code value is '61', '62', '63', or '69'
THEN:
- The system should process as master in-bond entry
- Map to appropriate transport type
β Consolidated Acceptance Criteria
- The entry type code value is not '00', '61', '62', '63', or '69' → the system should process as standard in-bond entry
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_StandardInBondEntryOtherTypeCodes(["Start Step"])
E_StandardInBondEntryOtherTypeCodes(["End Step"])
N_StandardInBondEntryOtherTypeCodes_Node0{"The entry type code value is not 00
, 61 , 62 , 63 , or 69"}:::decision N_StandardInBondEntryOtherTypeCodes_Node0_action["The system should process as
standard in-bond entry"]:::main N_StandardInBondEntryOtherTypeCodes_Node0 -- Yes --> N_StandardInBondEntryOtherTypeCodes_Node0_action N_StandardInBondEntryOtherTypeCodes_Node0_action --> E_StandardInBondEntryOtherTypeCodes S_StandardInBondEntryOtherTypeCodes --> N_StandardInBondEntryOtherTypeCodes_Node0 N_StandardInBondEntryOtherTypeCodes_Node0 -- No --> E_StandardInBondEntryOtherTypeCodes
, 61 , 62 , 63 , or 69"}:::decision N_StandardInBondEntryOtherTypeCodes_Node0_action["The system should process as
standard in-bond entry"]:::main N_StandardInBondEntryOtherTypeCodes_Node0 -- Yes --> N_StandardInBondEntryOtherTypeCodes_Node0_action N_StandardInBondEntryOtherTypeCodes_Node0_action --> E_StandardInBondEntryOtherTypeCodes S_StandardInBondEntryOtherTypeCodes --> N_StandardInBondEntryOtherTypeCodes_Node0 N_StandardInBondEntryOtherTypeCodes_Node0 -- No --> E_StandardInBondEntryOtherTypeCodes
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
An EDI entry type code is received from X4 segment
WHEN:
The entry type code value is not '00', '61', '62', '63', or '69'
THEN:
The system should process as standard in-bond entry
β Consolidated Acceptance Criteria
- The system maps the EDI code to transport type → entry type '61' maps to immediate transport, '62' maps to transport for export, '63' maps to immediate export, '69' maps to US-Canada-US movement
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MaptoTransportTypeforMasterInBond(["Start Step"])
E_MaptoTransportTypeforMasterInBond(["End Step"])
N_MaptoTransportTypeforMasterInBond_Node0{"The system maps the EDI code to
transport type"}:::decision N_MaptoTransportTypeforMasterInBond_Node0_action["Entry type 61 maps to immediate
transport, 62 maps to transport for
export, 63 maps to immediate export,
69 maps to US-Canada-US movement"]:::main N_MaptoTransportTypeforMasterInBond_Node0 -- Yes --> N_MaptoTransportTypeforMasterInBond_Node0_action N_MaptoTransportTypeforMasterInBond_Node0_action --> E_MaptoTransportTypeforMasterInBond S_MaptoTransportTypeforMasterInBond --> N_MaptoTransportTypeforMasterInBond_Node0 N_MaptoTransportTypeforMasterInBond_Node0 -- No --> E_MaptoTransportTypeforMasterInBond
transport type"}:::decision N_MaptoTransportTypeforMasterInBond_Node0_action["Entry type 61 maps to immediate
transport, 62 maps to transport for
export, 63 maps to immediate export,
69 maps to US-Canada-US movement"]:::main N_MaptoTransportTypeforMasterInBond_Node0 -- Yes --> N_MaptoTransportTypeforMasterInBond_Node0_action N_MaptoTransportTypeforMasterInBond_Node0_action --> E_MaptoTransportTypeforMasterInBond S_MaptoTransportTypeforMasterInBond --> N_MaptoTransportTypeforMasterInBond_Node0 N_MaptoTransportTypeforMasterInBond_Node0 -- No --> E_MaptoTransportTypeforMasterInBond
File: GCX016.cbl
GIVEN:
A master in-bond entry type code ('61', '62', '63', or '69') is being processed
WHEN:
The system maps the EDI code to transport type
THEN:
Entry type '61' maps to immediate transport, '62' maps to transport for export, '63' maps to immediate export, '69' maps to US-Canada-US movement
β Consolidated Acceptance Criteria
- The system converts the EDI code to internal format → the EDI code should be mapped to the corresponding internal CPRAIL value
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ConvertEDICodetoInternalCPRAILValue(["Start Step"])
E_ConvertEDICodetoInternalCPRAILValue(["End Step"])
N_ConvertEDICodetoInternalCPRAILValue_Node0{"The system converts the EDI code to
internal format"}:::decision N_ConvertEDICodetoInternalCPRAILValue_Node0_action["The EDI code should be mapped to
the corresponding internal CPRAIL
value"]:::main N_ConvertEDICodetoInternalCPRAILValue_Node0 -- Yes --> N_ConvertEDICodetoInternalCPRAILValue_Node0_action N_ConvertEDICodetoInternalCPRAILValue_Node0_action --> E_ConvertEDICodetoInternalCPRAILValue S_ConvertEDICodetoInternalCPRAILValue --> N_ConvertEDICodetoInternalCPRAILValue_Node0 N_ConvertEDICodetoInternalCPRAILValue_Node0 -- No --> E_ConvertEDICodetoInternalCPRAILValue
internal format"}:::decision N_ConvertEDICodetoInternalCPRAILValue_Node0_action["The EDI code should be mapped to
the corresponding internal CPRAIL
value"]:::main N_ConvertEDICodetoInternalCPRAILValue_Node0 -- Yes --> N_ConvertEDICodetoInternalCPRAILValue_Node0_action N_ConvertEDICodetoInternalCPRAILValue_Node0_action --> E_ConvertEDICodetoInternalCPRAILValue S_ConvertEDICodetoInternalCPRAILValue --> N_ConvertEDICodetoInternalCPRAILValue_Node0 N_ConvertEDICodetoInternalCPRAILValue_Node0 -- No --> E_ConvertEDICodetoInternalCPRAILValue
File: GCX016.cbl
GIVEN:
An EDI entry type code has been received and categorized
WHEN:
The system converts the EDI code to internal format
THEN:
The EDI code should be mapped to the corresponding internal CPRAIL value
β Consolidated Acceptance Criteria
- The system validates the code against system tables → the system should verify the code exists in the reference tables and is valid for processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ValidateEntryTypeCodeAgainstSystemTables(["Start Step"])
E_ValidateEntryTypeCodeAgainstSystemTables(["End Step"])
N_ValidateEntryTypeCodeAgainstSystemTables_Node0{"The system validates the code
against system tables"}:::decision N_ValidateEntryTypeCodeAgainstSystemTables_Node0_action["The system should verify the code
exists in the reference tables and
is valid for processing"]:::main N_ValidateEntryTypeCodeAgainstSystemTables_Node0 -- Yes --> N_ValidateEntryTypeCodeAgainstSystemTables_Node0_action N_ValidateEntryTypeCodeAgainstSystemTables_Node0_action --> E_ValidateEntryTypeCodeAgainstSystemTables S_ValidateEntryTypeCodeAgainstSystemTables --> N_ValidateEntryTypeCodeAgainstSystemTables_Node0 N_ValidateEntryTypeCodeAgainstSystemTables_Node0 -- No --> E_ValidateEntryTypeCodeAgainstSystemTables
against system tables"}:::decision N_ValidateEntryTypeCodeAgainstSystemTables_Node0_action["The system should verify the code
exists in the reference tables and
is valid for processing"]:::main N_ValidateEntryTypeCodeAgainstSystemTables_Node0 -- Yes --> N_ValidateEntryTypeCodeAgainstSystemTables_Node0_action N_ValidateEntryTypeCodeAgainstSystemTables_Node0_action --> E_ValidateEntryTypeCodeAgainstSystemTables S_ValidateEntryTypeCodeAgainstSystemTables --> N_ValidateEntryTypeCodeAgainstSystemTables_Node0 N_ValidateEntryTypeCodeAgainstSystemTables_Node0 -- No --> E_ValidateEntryTypeCodeAgainstSystemTables
File: GCX016.cbl
GIVEN:
An entry type code has been converted to internal CPRAIL format
WHEN:
The system validates the code against system tables
THEN:
- The system should verify the code exists in the reference tables
- Is valid for processing
β Consolidated Acceptance Criteria
- The system updates the cargo record → the in-bond status should be updated in the cargo record
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UpdateInBondStatusinCargoRecord(["Start Step"])
E_UpdateInBondStatusinCargoRecord(["End Step"])
N_UpdateInBondStatusinCargoRecord_Node0{"The system updates the cargo record"}:::decision
N_UpdateInBondStatusinCargoRecord_Node0_action["The in-bond status should be
updated in the cargo record"]:::main N_UpdateInBondStatusinCargoRecord_Node0 -- Yes --> N_UpdateInBondStatusinCargoRecord_Node0_action N_UpdateInBondStatusinCargoRecord_Node0_action --> E_UpdateInBondStatusinCargoRecord S_UpdateInBondStatusinCargoRecord --> N_UpdateInBondStatusinCargoRecord_Node0 N_UpdateInBondStatusinCargoRecord_Node0 -- No --> E_UpdateInBondStatusinCargoRecord
updated in the cargo record"]:::main N_UpdateInBondStatusinCargoRecord_Node0 -- Yes --> N_UpdateInBondStatusinCargoRecord_Node0_action N_UpdateInBondStatusinCargoRecord_Node0_action --> E_UpdateInBondStatusinCargoRecord S_UpdateInBondStatusinCargoRecord --> N_UpdateInBondStatusinCargoRecord_Node0 N_UpdateInBondStatusinCargoRecord_Node0 -- No --> E_UpdateInBondStatusinCargoRecord
File: GCX016.cbl
GIVEN:
A valid standard in-bond entry type code has been processed
WHEN:
The system updates the cargo record
THEN:
The in-bond status should be updated in the cargo record
β Consolidated Acceptance Criteria
- The system completes the entry type processing → the system should log the entry type processing activity
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogEntryTypeProcessing(["Start Step"])
E_LogEntryTypeProcessing(["End Step"])
N_LogEntryTypeProcessing_Node0{"The system completes the entry type
processing"}:::decision N_LogEntryTypeProcessing_Node0_action["The system should log the entry
type processing activity"]:::main N_LogEntryTypeProcessing_Node0 -- Yes --> N_LogEntryTypeProcessing_Node0_action N_LogEntryTypeProcessing_Node0_action --> E_LogEntryTypeProcessing S_LogEntryTypeProcessing --> N_LogEntryTypeProcessing_Node0 N_LogEntryTypeProcessing_Node0 -- No --> E_LogEntryTypeProcessing
processing"}:::decision N_LogEntryTypeProcessing_Node0_action["The system should log the entry
type processing activity"]:::main N_LogEntryTypeProcessing_Node0 -- Yes --> N_LogEntryTypeProcessing_Node0_action N_LogEntryTypeProcessing_Node0_action --> E_LogEntryTypeProcessing S_LogEntryTypeProcessing --> N_LogEntryTypeProcessing_Node0 N_LogEntryTypeProcessing_Node0 -- No --> E_LogEntryTypeProcessing
File: GCX016.cbl
GIVEN:
An entry type code has been successfully processed and cargo record updated
WHEN:
The system completes the entry type processing
THEN:
The system should log the entry type processing activity
β Consolidated Acceptance Criteria
- The entry type code is not found or is invalid → the system should generate an error message indicating invalid entry type
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GenerateErrorMessageInvalidEntryType(["Start Step"])
E_GenerateErrorMessageInvalidEntryType(["End Step"])
N_GenerateErrorMessageInvalidEntryType_Node0{"The entry type code is not found or
is invalid"}:::decision N_GenerateErrorMessageInvalidEntryType_Node0_action["The system should generate an error
message indicating invalid entry
type"]:::exclusion N_GenerateErrorMessageInvalidEntryType_Node0 -- Yes -->|Alternative| N_GenerateErrorMessageInvalidEntryType_Node0_action N_GenerateErrorMessageInvalidEntryType_Node0_action --> E_GenerateErrorMessageInvalidEntryType S_GenerateErrorMessageInvalidEntryType --> N_GenerateErrorMessageInvalidEntryType_Node0 N_GenerateErrorMessageInvalidEntryType_Node0 -- No --> E_GenerateErrorMessageInvalidEntryType
is invalid"}:::decision N_GenerateErrorMessageInvalidEntryType_Node0_action["The system should generate an error
message indicating invalid entry
type"]:::exclusion N_GenerateErrorMessageInvalidEntryType_Node0 -- Yes -->|Alternative| N_GenerateErrorMessageInvalidEntryType_Node0_action N_GenerateErrorMessageInvalidEntryType_Node0_action --> E_GenerateErrorMessageInvalidEntryType S_GenerateErrorMessageInvalidEntryType --> N_GenerateErrorMessageInvalidEntryType_Node0 N_GenerateErrorMessageInvalidEntryType_Node0 -- No --> E_GenerateErrorMessageInvalidEntryType
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
An entry type code has been validated against system tables
WHEN:
The entry type code is not found or is invalid
THEN:
The system should generate an error message indicating invalid entry type
β Consolidated Acceptance Criteria
- The entry type code equals '00' → the system identifies this as a border entry requiring special processing
- The entry type code equals '00' → the system identifies this as a border entry requiring special processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_EntryTypeCode00(["Start Step"])
E_EntryTypeCode00(["End Step"])
N_EntryTypeCode00_Node0{"The entry type code equals 00"}:::decision
N_EntryTypeCode00_Node0_action["The system identifies this as a
border entry requiring special
processing"]:::main N_EntryTypeCode00_Node0 -- Yes --> N_EntryTypeCode00_Node0_action N_EntryTypeCode00_Node0_action --> E_EntryTypeCode00 S_EntryTypeCode00 --> N_EntryTypeCode00_Node0 N_EntryTypeCode00_Node1{"The entry type code equals 00"}:::decision N_EntryTypeCode00_Node1_action["The system identifies this as a
border entry requiring special
processing"]:::main N_EntryTypeCode00_Node1 -- Yes --> N_EntryTypeCode00_Node1_action N_EntryTypeCode00_Node1_action --> E_EntryTypeCode00 N_EntryTypeCode00_Node0 -- No --> N_EntryTypeCode00_Node1 N_EntryTypeCode00_Node1 -- No --> E_EntryTypeCode00
border entry requiring special
processing"]:::main N_EntryTypeCode00_Node0 -- Yes --> N_EntryTypeCode00_Node0_action N_EntryTypeCode00_Node0_action --> E_EntryTypeCode00 S_EntryTypeCode00 --> N_EntryTypeCode00_Node0 N_EntryTypeCode00_Node1{"The entry type code equals 00"}:::decision N_EntryTypeCode00_Node1_action["The system identifies this as a
border entry requiring special
processing"]:::main N_EntryTypeCode00_Node1 -- Yes --> N_EntryTypeCode00_Node1_action N_EntryTypeCode00_Node1_action --> E_EntryTypeCode00 N_EntryTypeCode00_Node0 -- No --> N_EntryTypeCode00_Node1 N_EntryTypeCode00_Node1 -- No --> E_EntryTypeCode00
File: GCX016.cbl
GIVEN:
A cargo entry is being processed
WHEN:
The entry type code equals '00'
THEN:
The system identifies this as a border entry requiring special processing
File: GCX016.cbl
GIVEN:
A cargo record is being processed for entry type validation
WHEN:
The entry type code equals '00'
THEN:
The system identifies this as a border entry requiring special processing
β Consolidated Acceptance Criteria
- The system processes the entry type → the cargo is classified as a border entry
- The system processes the entry type classification → the cargo is classified as a border entry type
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IdentifyasBorderEntry(["Start Step"])
E_IdentifyasBorderEntry(["End Step"])
N_IdentifyasBorderEntry_Node0{"The system processes the entry type"}:::decision
N_IdentifyasBorderEntry_Node0_action["The cargo is classified as a border
entry"]:::main N_IdentifyasBorderEntry_Node0 -- Yes --> N_IdentifyasBorderEntry_Node0_action N_IdentifyasBorderEntry_Node0_action --> E_IdentifyasBorderEntry S_IdentifyasBorderEntry --> N_IdentifyasBorderEntry_Node0 N_IdentifyasBorderEntry_Node1{"The system processes the entry type
classification"}:::decision N_IdentifyasBorderEntry_Node1_action["The cargo is classified as a border
entry type"]:::main N_IdentifyasBorderEntry_Node1 -- Yes --> N_IdentifyasBorderEntry_Node1_action N_IdentifyasBorderEntry_Node1_action --> E_IdentifyasBorderEntry N_IdentifyasBorderEntry_Node0 -- No --> N_IdentifyasBorderEntry_Node1 N_IdentifyasBorderEntry_Node1 -- No --> E_IdentifyasBorderEntry
entry"]:::main N_IdentifyasBorderEntry_Node0 -- Yes --> N_IdentifyasBorderEntry_Node0_action N_IdentifyasBorderEntry_Node0_action --> E_IdentifyasBorderEntry S_IdentifyasBorderEntry --> N_IdentifyasBorderEntry_Node0 N_IdentifyasBorderEntry_Node1{"The system processes the entry type
classification"}:::decision N_IdentifyasBorderEntry_Node1_action["The cargo is classified as a border
entry type"]:::main N_IdentifyasBorderEntry_Node1 -- Yes --> N_IdentifyasBorderEntry_Node1_action N_IdentifyasBorderEntry_Node1_action --> E_IdentifyasBorderEntry N_IdentifyasBorderEntry_Node0 -- No --> N_IdentifyasBorderEntry_Node1 N_IdentifyasBorderEntry_Node1 -- No --> E_IdentifyasBorderEntry
File: GCX016.cbl
GIVEN:
A cargo entry has entry type code '00'
WHEN:
The system processes the entry type
THEN:
The cargo is classified as a border entry
File: GCX016.cbl
GIVEN:
A cargo record has entry type code '00'
WHEN:
The system processes the entry type classification
THEN:
The cargo is classified as a border entry type
β Consolidated Acceptance Criteria
- The system processes the border entry → the border entry flag is set to indicate border processing mode
- The system processes border entry flag setting → the border entry flag is set to indicate this cargo requires border processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetBorderEntryFlag(["Start Step"])
E_SetBorderEntryFlag(["End Step"])
N_SetBorderEntryFlag_Node0{"The system processes the border
entry"}:::decision N_SetBorderEntryFlag_Node0_action["The border entry flag is set to
indicate border processing mode"]:::main N_SetBorderEntryFlag_Node0 -- Yes --> N_SetBorderEntryFlag_Node0_action N_SetBorderEntryFlag_Node0_action --> E_SetBorderEntryFlag S_SetBorderEntryFlag --> N_SetBorderEntryFlag_Node0 N_SetBorderEntryFlag_Node1{"The system processes border entry
flag setting"}:::decision N_SetBorderEntryFlag_Node1_action["The border entry flag is set to
indicate this cargo requires border
processing"]:::main N_SetBorderEntryFlag_Node1 -- Yes --> N_SetBorderEntryFlag_Node1_action N_SetBorderEntryFlag_Node1_action --> E_SetBorderEntryFlag N_SetBorderEntryFlag_Node0 -- No --> N_SetBorderEntryFlag_Node1 N_SetBorderEntryFlag_Node1 -- No --> E_SetBorderEntryFlag
entry"}:::decision N_SetBorderEntryFlag_Node0_action["The border entry flag is set to
indicate border processing mode"]:::main N_SetBorderEntryFlag_Node0 -- Yes --> N_SetBorderEntryFlag_Node0_action N_SetBorderEntryFlag_Node0_action --> E_SetBorderEntryFlag S_SetBorderEntryFlag --> N_SetBorderEntryFlag_Node0 N_SetBorderEntryFlag_Node1{"The system processes border entry
flag setting"}:::decision N_SetBorderEntryFlag_Node1_action["The border entry flag is set to
indicate this cargo requires border
processing"]:::main N_SetBorderEntryFlag_Node1 -- Yes --> N_SetBorderEntryFlag_Node1_action N_SetBorderEntryFlag_Node1_action --> E_SetBorderEntryFlag N_SetBorderEntryFlag_Node0 -- No --> N_SetBorderEntryFlag_Node1 N_SetBorderEntryFlag_Node1 -- No --> E_SetBorderEntryFlag
File: GCX016.cbl
GIVEN:
A cargo entry is classified as border entry with type code '00'
WHEN:
The system processes the border entry
THEN:
The border entry flag is set to indicate border processing mode
File: GCX016.cbl
GIVEN:
A cargo record is classified as border entry with type code '00'
WHEN:
The system processes border entry flag setting
THEN:
The border entry flag is set to indicate this cargo requires border processing
β Consolidated Acceptance Criteria
- The system updates the cargo record → the cargo record is updated with border entry status and all border processing indicators
- The system updates the cargo record status → the cargo record is updated with border processing status and all cleared fields are saved
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UpdateCargoRecordwithBorderStatus(["Start Step"])
E_UpdateCargoRecordwithBorderStatus(["End Step"])
N_UpdateCargoRecordwithBorderStatus_Node0{"The system updates the cargo record"}:::decision
N_UpdateCargoRecordwithBorderStatus_Node0_action["The cargo record is updated with
border entry status and all border
processing indicators"]:::main N_UpdateCargoRecordwithBorderStatus_Node0 -- Yes --> N_UpdateCargoRecordwithBorderStatus_Node0_action N_UpdateCargoRecordwithBorderStatus_Node0_action --> E_UpdateCargoRecordwithBorderStatus S_UpdateCargoRecordwithBorderStatus --> N_UpdateCargoRecordwithBorderStatus_Node0 N_UpdateCargoRecordwithBorderStatus_Node1{"The system updates the cargo record
status"}:::decision N_UpdateCargoRecordwithBorderStatus_Node1_action["The cargo record is updated with
border processing status and all
cleared fields are saved"]:::main N_UpdateCargoRecordwithBorderStatus_Node1 -- Yes --> N_UpdateCargoRecordwithBorderStatus_Node1_action N_UpdateCargoRecordwithBorderStatus_Node1_action --> E_UpdateCargoRecordwithBorderStatus N_UpdateCargoRecordwithBorderStatus_Node0 -- No --> N_UpdateCargoRecordwithBorderStatus_Node1 N_UpdateCargoRecordwithBorderStatus_Node1 -- No --> E_UpdateCargoRecordwithBorderStatus
border entry status and all border
processing indicators"]:::main N_UpdateCargoRecordwithBorderStatus_Node0 -- Yes --> N_UpdateCargoRecordwithBorderStatus_Node0_action N_UpdateCargoRecordwithBorderStatus_Node0_action --> E_UpdateCargoRecordwithBorderStatus S_UpdateCargoRecordwithBorderStatus --> N_UpdateCargoRecordwithBorderStatus_Node0 N_UpdateCargoRecordwithBorderStatus_Node1{"The system updates the cargo record
status"}:::decision N_UpdateCargoRecordwithBorderStatus_Node1_action["The cargo record is updated with
border processing status and all
cleared fields are saved"]:::main N_UpdateCargoRecordwithBorderStatus_Node1 -- Yes --> N_UpdateCargoRecordwithBorderStatus_Node1_action N_UpdateCargoRecordwithBorderStatus_Node1_action --> E_UpdateCargoRecordwithBorderStatus N_UpdateCargoRecordwithBorderStatus_Node0 -- No --> N_UpdateCargoRecordwithBorderStatus_Node1 N_UpdateCargoRecordwithBorderStatus_Node1 -- No --> E_UpdateCargoRecordwithBorderStatus
File: GCX016.cbl
GIVEN:
A cargo entry has been processed as border entry with cleared bond data and set border flag
WHEN:
The system updates the cargo record
THEN:
- The cargo record is updated with border entry status
- All border processing indicators
File: GCX016.cbl
GIVEN:
A cargo record has been processed as border entry with cleared bond data and set flags
WHEN:
The system updates the cargo record status
THEN:
- The cargo record is updated with border processing status
- All cleared fields are saved
β Consolidated Acceptance Criteria
- The entry type code is not equal to '00' → the cargo is processed through the regular entry processing path without border-specific modifications
- The system determines processing path → the cargo is processed through regular entry processing without border-specific clearing operations
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ProcessasRegularEntry(["Start Step"])
E_ProcessasRegularEntry(["End Step"])
N_ProcessasRegularEntry_Node0{"The entry type code is not equal to
00"}:::decision N_ProcessasRegularEntry_Node0_action["The cargo is processed through the
regular entry processing path
without border-specific
modifications"]:::main N_ProcessasRegularEntry_Node0 -- Yes --> N_ProcessasRegularEntry_Node0_action N_ProcessasRegularEntry_Node0_action --> E_ProcessasRegularEntry S_ProcessasRegularEntry --> N_ProcessasRegularEntry_Node0 N_ProcessasRegularEntry_Node1{"The system determines processing
path"}:::decision N_ProcessasRegularEntry_Node1_action["The cargo is processed through
regular entry processing without
border-specific clearing operations"]:::main N_ProcessasRegularEntry_Node1 -- Yes --> N_ProcessasRegularEntry_Node1_action N_ProcessasRegularEntry_Node1_action --> E_ProcessasRegularEntry N_ProcessasRegularEntry_Node0 -- No --> N_ProcessasRegularEntry_Node1 N_ProcessasRegularEntry_Node1 -- No --> E_ProcessasRegularEntry
00"}:::decision N_ProcessasRegularEntry_Node0_action["The cargo is processed through the
regular entry processing path
without border-specific
modifications"]:::main N_ProcessasRegularEntry_Node0 -- Yes --> N_ProcessasRegularEntry_Node0_action N_ProcessasRegularEntry_Node0_action --> E_ProcessasRegularEntry S_ProcessasRegularEntry --> N_ProcessasRegularEntry_Node0 N_ProcessasRegularEntry_Node1{"The system determines processing
path"}:::decision N_ProcessasRegularEntry_Node1_action["The cargo is processed through
regular entry processing without
border-specific clearing operations"]:::main N_ProcessasRegularEntry_Node1 -- Yes --> N_ProcessasRegularEntry_Node1_action N_ProcessasRegularEntry_Node1_action --> E_ProcessasRegularEntry N_ProcessasRegularEntry_Node0 -- No --> N_ProcessasRegularEntry_Node1 N_ProcessasRegularEntry_Node1 -- No --> E_ProcessasRegularEntry
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
A cargo entry is being processed
WHEN:
The entry type code is not equal to '00'
THEN:
The cargo is processed through the regular entry processing path without border-specific modifications
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
A cargo record has entry type code that is not '00'
WHEN:
The system determines processing path
THEN:
The cargo is processed through regular entry processing without border-specific clearing operations
β Consolidated Acceptance Criteria
- The entry type code is 61 → set master in-bond flag M1109 and configure for immediate transport processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_EntryType61MasterInBond(["Start Step"])
E_EntryType61MasterInBond(["End Step"])
N_EntryType61MasterInBond_Node0{"The entry type code is 61"}:::decision
N_EntryType61MasterInBond_Node0_action["Set master in-bond flag M1109 and
configure for immediate transport
processing"]:::main N_EntryType61MasterInBond_Node0 -- Yes --> N_EntryType61MasterInBond_Node0_action N_EntryType61MasterInBond_Node0_action --> E_EntryType61MasterInBond S_EntryType61MasterInBond --> N_EntryType61MasterInBond_Node0 N_EntryType61MasterInBond_Node0 -- No --> E_EntryType61MasterInBond
configure for immediate transport
processing"]:::main N_EntryType61MasterInBond_Node0 -- Yes --> N_EntryType61MasterInBond_Node0_action N_EntryType61MasterInBond_Node0_action --> E_EntryType61MasterInBond S_EntryType61MasterInBond --> N_EntryType61MasterInBond_Node0 N_EntryType61MasterInBond_Node0 -- No --> E_EntryType61MasterInBond
File: GCX016.cbl
GIVEN:
A cargo record with disposition code requiring master in-bond processing
WHEN:
The entry type code is 61
THEN:
- Set master in-bond flag m1109
- Configure for immediate transport processing
β Consolidated Acceptance Criteria
- The entry type code is 62 → set master in-bond flag M1109 and configure for transport export processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_EntryType62MasterInBond(["Start Step"])
E_EntryType62MasterInBond(["End Step"])
N_EntryType62MasterInBond_Node0{"The entry type code is 62"}:::decision
N_EntryType62MasterInBond_Node0_action["Set master in-bond flag M1109 and
configure for transport export
processing"]:::main N_EntryType62MasterInBond_Node0 -- Yes --> N_EntryType62MasterInBond_Node0_action N_EntryType62MasterInBond_Node0_action --> E_EntryType62MasterInBond S_EntryType62MasterInBond --> N_EntryType62MasterInBond_Node0 N_EntryType62MasterInBond_Node0 -- No --> E_EntryType62MasterInBond
configure for transport export
processing"]:::main N_EntryType62MasterInBond_Node0 -- Yes --> N_EntryType62MasterInBond_Node0_action N_EntryType62MasterInBond_Node0_action --> E_EntryType62MasterInBond S_EntryType62MasterInBond --> N_EntryType62MasterInBond_Node0 N_EntryType62MasterInBond_Node0 -- No --> E_EntryType62MasterInBond
File: GCX016.cbl
GIVEN:
A cargo record with disposition code requiring master in-bond processing
WHEN:
The entry type code is 62
THEN:
- Set master in-bond flag m1109
- Configure for transport export processing
β Consolidated Acceptance Criteria
- The entry type code is 63 → set master in-bond flag M1109 and configure for immediate export processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_EntryType63MasterInBond(["Start Step"])
E_EntryType63MasterInBond(["End Step"])
N_EntryType63MasterInBond_Node0{"The entry type code is 63"}:::decision
N_EntryType63MasterInBond_Node0_action["Set master in-bond flag M1109 and
configure for immediate export
processing"]:::main N_EntryType63MasterInBond_Node0 -- Yes --> N_EntryType63MasterInBond_Node0_action N_EntryType63MasterInBond_Node0_action --> E_EntryType63MasterInBond S_EntryType63MasterInBond --> N_EntryType63MasterInBond_Node0 N_EntryType63MasterInBond_Node0 -- No --> E_EntryType63MasterInBond
configure for immediate export
processing"]:::main N_EntryType63MasterInBond_Node0 -- Yes --> N_EntryType63MasterInBond_Node0_action N_EntryType63MasterInBond_Node0_action --> E_EntryType63MasterInBond S_EntryType63MasterInBond --> N_EntryType63MasterInBond_Node0 N_EntryType63MasterInBond_Node0 -- No --> E_EntryType63MasterInBond
File: GCX016.cbl
GIVEN:
A cargo record with disposition code requiring master in-bond processing
WHEN:
The entry type code is 63
THEN:
- Set master in-bond flag m1109
- Configure for immediate export processing
β Consolidated Acceptance Criteria
- The entry type code is 69 → set master in-bond flag M1109 and configure for US-Canada-US movement processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_EntryType69MasterInBond(["Start Step"])
E_EntryType69MasterInBond(["End Step"])
N_EntryType69MasterInBond_Node0{"The entry type code is 69"}:::decision
N_EntryType69MasterInBond_Node0_action["Set master in-bond flag M1109 and
configure for US-Canada-US movement
processing"]:::main N_EntryType69MasterInBond_Node0 -- Yes --> N_EntryType69MasterInBond_Node0_action N_EntryType69MasterInBond_Node0_action --> E_EntryType69MasterInBond S_EntryType69MasterInBond --> N_EntryType69MasterInBond_Node0 N_EntryType69MasterInBond_Node0 -- No --> E_EntryType69MasterInBond
configure for US-Canada-US movement
processing"]:::main N_EntryType69MasterInBond_Node0 -- Yes --> N_EntryType69MasterInBond_Node0_action N_EntryType69MasterInBond_Node0_action --> E_EntryType69MasterInBond S_EntryType69MasterInBond --> N_EntryType69MasterInBond_Node0 N_EntryType69MasterInBond_Node0 -- No --> E_EntryType69MasterInBond
File: GCX016.cbl
GIVEN:
A cargo record with disposition code requiring master in-bond processing
WHEN:
The entry type code is 69
THEN:
- Set master in-bond flag m1109
- Configure for us-canada-us movement processing
β Consolidated Acceptance Criteria
- Processing disposition codes 1J, 69, or 55 → set the M1109 master in-bond flag to indicate master in-bond processing is required
- The system processes the master in-bond entry → the system sets the M1109 master in-bond flag to indicate master in-bond processing is required
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetMasterInBondFlag(["Start Step"])
E_SetMasterInBondFlag(["End Step"])
N_SetMasterInBondFlag_Node0{"Processing disposition codes 1J,
69, or 55"}:::decision N_SetMasterInBondFlag_Node0_action["Set the M1109 master in-bond flag
to indicate master in-bond
processing is required"]:::main N_SetMasterInBondFlag_Node0 -- Yes --> N_SetMasterInBondFlag_Node0_action N_SetMasterInBondFlag_Node0_action --> E_SetMasterInBondFlag S_SetMasterInBondFlag --> N_SetMasterInBondFlag_Node0 N_SetMasterInBondFlag_Node1{"The system processes the master
in-bond entry"}:::decision N_SetMasterInBondFlag_Node1_action["The system sets the M1109 master
in-bond flag to indicate master
in-bond processing is required"]:::main N_SetMasterInBondFlag_Node1 -- Yes --> N_SetMasterInBondFlag_Node1_action N_SetMasterInBondFlag_Node1_action --> E_SetMasterInBondFlag N_SetMasterInBondFlag_Node0 -- No --> N_SetMasterInBondFlag_Node1 N_SetMasterInBondFlag_Node1 -- No --> E_SetMasterInBondFlag
69, or 55"}:::decision N_SetMasterInBondFlag_Node0_action["Set the M1109 master in-bond flag
to indicate master in-bond
processing is required"]:::main N_SetMasterInBondFlag_Node0 -- Yes --> N_SetMasterInBondFlag_Node0_action N_SetMasterInBondFlag_Node0_action --> E_SetMasterInBondFlag S_SetMasterInBondFlag --> N_SetMasterInBondFlag_Node0 N_SetMasterInBondFlag_Node1{"The system processes the master
in-bond entry"}:::decision N_SetMasterInBondFlag_Node1_action["The system sets the M1109 master
in-bond flag to indicate master
in-bond processing is required"]:::main N_SetMasterInBondFlag_Node1 -- Yes --> N_SetMasterInBondFlag_Node1_action N_SetMasterInBondFlag_Node1_action --> E_SetMasterInBondFlag N_SetMasterInBondFlag_Node0 -- No --> N_SetMasterInBondFlag_Node1 N_SetMasterInBondFlag_Node1 -- No --> E_SetMasterInBondFlag
File: GCX016.cbl
GIVEN:
A cargo record with entry type code in (61, 62, 63, 69)
WHEN:
Processing disposition codes 1J, 69, or 55
THEN:
Set the M1109 master in-bond flag to indicate master in-bond processing is required
File: GCX016.cbl
GIVEN:
A cargo record with disposition code in ('1J', '69', '55')
WHEN:
The system processes the master in-bond entry
THEN:
The system sets the M1109 master in-bond flag to indicate master in-bond processing is required
β Consolidated Acceptance Criteria
- The entry type code is not 61, 62, 63, or 69 → skip master in-bond processing and continue with standard cargo processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SkipNotMasterInBondType(["Start Step"])
E_SkipNotMasterInBondType(["End Step"])
N_SkipNotMasterInBondType_Node0{"The entry type code is not 61, 62,
63, or 69"}:::decision N_SkipNotMasterInBondType_Node0_action["Skip master in-bond processing and
continue with standard cargo
processing"]:::main N_SkipNotMasterInBondType_Node0 -- Yes --> N_SkipNotMasterInBondType_Node0_action N_SkipNotMasterInBondType_Node0_action --> E_SkipNotMasterInBondType S_SkipNotMasterInBondType --> N_SkipNotMasterInBondType_Node0 N_SkipNotMasterInBondType_Node0 -- No --> E_SkipNotMasterInBondType
63, or 69"}:::decision N_SkipNotMasterInBondType_Node0_action["Skip master in-bond processing and
continue with standard cargo
processing"]:::main N_SkipNotMasterInBondType_Node0 -- Yes --> N_SkipNotMasterInBondType_Node0_action N_SkipNotMasterInBondType_Node0_action --> E_SkipNotMasterInBondType S_SkipNotMasterInBondType --> N_SkipNotMasterInBondType_Node0 N_SkipNotMasterInBondType_Node0 -- No --> E_SkipNotMasterInBondType
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
A cargo record with an entry type code
WHEN:
The entry type code is not 61, 62, 63, or 69
THEN:
- Skip master in-bond processing
- Continue with standard cargo processing
β Consolidated Acceptance Criteria
- If the shipment for cross-border requirements → the system detects if cross-border processing is needed and initiates port mapping workflow
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CrossBorderShipmentDetected(["Start Step"])
E_CrossBorderShipmentDetected(["End Step"])
N_CrossBorderShipmentDetected_Node0{"The system evaluates the shipment
for cross-border requirements"}:::decision N_CrossBorderShipmentDetected_Node0_action["The system detects if cross-border
processing is needed and initiates
port mapping workflow"]:::main N_CrossBorderShipmentDetected_Node0 -- Yes --> N_CrossBorderShipmentDetected_Node0_action N_CrossBorderShipmentDetected_Node0_action --> E_CrossBorderShipmentDetected S_CrossBorderShipmentDetected --> N_CrossBorderShipmentDetected_Node0 N_CrossBorderShipmentDetected_Node0 -- No --> E_CrossBorderShipmentDetected
for cross-border requirements"}:::decision N_CrossBorderShipmentDetected_Node0_action["The system detects if cross-border
processing is needed and initiates
port mapping workflow"]:::main N_CrossBorderShipmentDetected_Node0 -- Yes --> N_CrossBorderShipmentDetected_Node0_action N_CrossBorderShipmentDetected_Node0_action --> E_CrossBorderShipmentDetected S_CrossBorderShipmentDetected --> N_CrossBorderShipmentDetected_Node0 N_CrossBorderShipmentDetected_Node0 -- No --> E_CrossBorderShipmentDetected
File: GCX016.cbl
GIVEN:
A cargo record is being processed
WHEN:
The system evaluates the shipment for cross-border requirements
THEN:
- The system detects if cross-border processing is needed
- Initiates port mapping workflow
β Consolidated Acceptance Criteria
- The system checks for US port code in the cargo record → the system either proceeds with port code extraction if present or completes mapping process if absent
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_USPortCodePresent(["Start Step"])
E_USPortCodePresent(["End Step"])
N_USPortCodePresent_Node0{"The system checks for US port code
in the cargo record"}:::decision N_USPortCodePresent_Node0_action["The system either proceeds with
port code extraction if present or
completes mapping process if absent"]:::main N_USPortCodePresent_Node0 -- Yes --> N_USPortCodePresent_Node0_action N_USPortCodePresent_Node0_action --> E_USPortCodePresent S_USPortCodePresent --> N_USPortCodePresent_Node0 N_USPortCodePresent_Node0 -- No --> E_USPortCodePresent
in the cargo record"}:::decision N_USPortCodePresent_Node0_action["The system either proceeds with
port code extraction if present or
completes mapping process if absent"]:::main N_USPortCodePresent_Node0 -- Yes --> N_USPortCodePresent_Node0_action N_USPortCodePresent_Node0_action --> E_USPortCodePresent S_USPortCodePresent --> N_USPortCodePresent_Node0 N_USPortCodePresent_Node0 -- No --> E_USPortCodePresent
File: GCX016.cbl
GIVEN:
A cross-border shipment has been detected
WHEN:
The system checks for US port code in the cargo record
THEN:
The system either proceeds with port code extraction if present or completes mapping process if absent
β Consolidated Acceptance Criteria
- The system extracts the port code information → the US port code is retrieved and prepared for DS table lookup
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExtractUSPortCodefromCargoRecord(["Start Step"])
E_ExtractUSPortCodefromCargoRecord(["End Step"])
N_ExtractUSPortCodefromCargoRecord_Node0{"The system extracts the port code
information"}:::decision N_ExtractUSPortCodefromCargoRecord_Node0_action["The US port code is retrieved and
prepared for DS table lookup"]:::main N_ExtractUSPortCodefromCargoRecord_Node0 -- Yes --> N_ExtractUSPortCodefromCargoRecord_Node0_action N_ExtractUSPortCodefromCargoRecord_Node0_action --> E_ExtractUSPortCodefromCargoRecord S_ExtractUSPortCodefromCargoRecord --> N_ExtractUSPortCodefromCargoRecord_Node0 N_ExtractUSPortCodefromCargoRecord_Node0 -- No --> E_ExtractUSPortCodefromCargoRecord
information"}:::decision N_ExtractUSPortCodefromCargoRecord_Node0_action["The US port code is retrieved and
prepared for DS table lookup"]:::main N_ExtractUSPortCodefromCargoRecord_Node0 -- Yes --> N_ExtractUSPortCodefromCargoRecord_Node0_action N_ExtractUSPortCodefromCargoRecord_Node0_action --> E_ExtractUSPortCodefromCargoRecord S_ExtractUSPortCodefromCargoRecord --> N_ExtractUSPortCodefromCargoRecord_Node0 N_ExtractUSPortCodefromCargoRecord_Node0 -- No --> E_ExtractUSPortCodefromCargoRecord
File: GCX016.cbl
GIVEN:
A US port code is present in the cargo record
WHEN:
The system extracts the port code information
THEN:
- The us port code is retrieved
- Prepared for ds table lookup
β Consolidated Acceptance Criteria
- The system accesses the DS table for port mapping lookup → the DS table is queried using the US port code as the search key
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AccessDSTableforPortMapping(["Start Step"])
E_AccessDSTableforPortMapping(["End Step"])
N_AccessDSTableforPortMapping_Node0{"The system accesses the DS table
for port mapping lookup"}:::decision N_AccessDSTableforPortMapping_Node0_action["The DS table is queried using the
US port code as the search key"]:::main N_AccessDSTableforPortMapping_Node0 -- Yes --> N_AccessDSTableforPortMapping_Node0_action N_AccessDSTableforPortMapping_Node0_action --> E_AccessDSTableforPortMapping S_AccessDSTableforPortMapping --> N_AccessDSTableforPortMapping_Node0 N_AccessDSTableforPortMapping_Node0 -- No --> E_AccessDSTableforPortMapping
for port mapping lookup"}:::decision N_AccessDSTableforPortMapping_Node0_action["The DS table is queried using the
US port code as the search key"]:::main N_AccessDSTableforPortMapping_Node0 -- Yes --> N_AccessDSTableforPortMapping_Node0_action N_AccessDSTableforPortMapping_Node0_action --> E_AccessDSTableforPortMapping S_AccessDSTableforPortMapping --> N_AccessDSTableforPortMapping_Node0 N_AccessDSTableforPortMapping_Node0 -- No --> E_AccessDSTableforPortMapping
File: GCX016.cbl
GIVEN:
A US port code has been extracted from the cargo record
WHEN:
The system accesses the DS table for port mapping lookup
THEN:
The DS table is queried using the US port code as the search key
β Consolidated Acceptance Criteria
- The system searches for a matching Canadian port entry → the system either retrieves the Canadian port name if found or uses default port name if not found
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CanadianPortFoundinDSTable(["Start Step"])
E_CanadianPortFoundinDSTable(["End Step"])
N_CanadianPortFoundinDSTable_Node0{"The system searches for a matching
Canadian port entry"}:::decision N_CanadianPortFoundinDSTable_Node0_action["The system either retrieves the
Canadian port name if found or uses
default port name if not found"]:::main N_CanadianPortFoundinDSTable_Node0 -- Yes --> N_CanadianPortFoundinDSTable_Node0_action N_CanadianPortFoundinDSTable_Node0_action --> E_CanadianPortFoundinDSTable S_CanadianPortFoundinDSTable --> N_CanadianPortFoundinDSTable_Node0 N_CanadianPortFoundinDSTable_Node0 -- No --> E_CanadianPortFoundinDSTable
Canadian port entry"}:::decision N_CanadianPortFoundinDSTable_Node0_action["The system either retrieves the
Canadian port name if found or uses
default port name if not found"]:::main N_CanadianPortFoundinDSTable_Node0 -- Yes --> N_CanadianPortFoundinDSTable_Node0_action N_CanadianPortFoundinDSTable_Node0_action --> E_CanadianPortFoundinDSTable S_CanadianPortFoundinDSTable --> N_CanadianPortFoundinDSTable_Node0 N_CanadianPortFoundinDSTable_Node0 -- No --> E_CanadianPortFoundinDSTable
File: GCX016.cbl
GIVEN:
The DS table has been accessed with a US port code
WHEN:
The system searches for a matching Canadian port entry
THEN:
The system either retrieves the Canadian port name if found or uses default port name if not found
β Consolidated Acceptance Criteria
- The system retrieves the Canadian port information → the Canadian port name is extracted from the DS table record
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RetrieveCanadianPortName(["Start Step"])
E_RetrieveCanadianPortName(["End Step"])
N_RetrieveCanadianPortName_Node0{"The system retrieves the Canadian
port information"}:::decision N_RetrieveCanadianPortName_Node0_action["The Canadian port name is extracted
from the DS table record"]:::main N_RetrieveCanadianPortName_Node0 -- Yes --> N_RetrieveCanadianPortName_Node0_action N_RetrieveCanadianPortName_Node0_action --> E_RetrieveCanadianPortName S_RetrieveCanadianPortName --> N_RetrieveCanadianPortName_Node0 N_RetrieveCanadianPortName_Node0 -- No --> E_RetrieveCanadianPortName
port information"}:::decision N_RetrieveCanadianPortName_Node0_action["The Canadian port name is extracted
from the DS table record"]:::main N_RetrieveCanadianPortName_Node0 -- Yes --> N_RetrieveCanadianPortName_Node0_action N_RetrieveCanadianPortName_Node0_action --> E_RetrieveCanadianPortName S_RetrieveCanadianPortName --> N_RetrieveCanadianPortName_Node0 N_RetrieveCanadianPortName_Node0 -- No --> E_RetrieveCanadianPortName
File: GCX016.cbl
GIVEN:
A Canadian port entry exists in the DS table for the US port code
WHEN:
The system retrieves the Canadian port information
THEN:
The Canadian port name is extracted from the DS table record
β Consolidated Acceptance Criteria
- The system cannot find a matching port mapping → the system assigns a default Canadian port name for the shipment
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UseDefaultCanadianPortName(["Start Step"])
E_UseDefaultCanadianPortName(["End Step"])
N_UseDefaultCanadianPortName_Node0{"The system cannot find a matching
port mapping"}:::decision N_UseDefaultCanadianPortName_Node0_action["The system assigns a default
Canadian port name for the shipment"]:::main N_UseDefaultCanadianPortName_Node0 -- Yes --> N_UseDefaultCanadianPortName_Node0_action N_UseDefaultCanadianPortName_Node0_action --> E_UseDefaultCanadianPortName S_UseDefaultCanadianPortName --> N_UseDefaultCanadianPortName_Node0 N_UseDefaultCanadianPortName_Node0 -- No --> E_UseDefaultCanadianPortName
port mapping"}:::decision N_UseDefaultCanadianPortName_Node0_action["The system assigns a default
Canadian port name for the shipment"]:::main N_UseDefaultCanadianPortName_Node0 -- Yes --> N_UseDefaultCanadianPortName_Node0_action N_UseDefaultCanadianPortName_Node0_action --> E_UseDefaultCanadianPortName S_UseDefaultCanadianPortName --> N_UseDefaultCanadianPortName_Node0 N_UseDefaultCanadianPortName_Node0 -- No --> E_UseDefaultCanadianPortName
File: GCX016.cbl
GIVEN:
No Canadian port entry exists in the DS table for the US port code
WHEN:
The system cannot find a matching port mapping
THEN:
The system assigns a default Canadian port name for the shipment
β Consolidated Acceptance Criteria
- The system updates the cargo record → the cargo record is updated with the Canadian port name information
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UpdateCargoRecordwithCanadianPortName(["Start Step"])
E_UpdateCargoRecordwithCanadianPortName(["End Step"])
N_UpdateCargoRecordwithCanadianPortName_Node0{"The system updates the cargo record"}:::decision
N_UpdateCargoRecordwithCanadianPortName_Node0_action["The cargo record is updated with
the Canadian port name information"]:::main N_UpdateCargoRecordwithCanadianPortName_Node0 -- Yes --> N_UpdateCargoRecordwithCanadianPortName_Node0_action N_UpdateCargoRecordwithCanadianPortName_Node0_action --> E_UpdateCargoRecordwithCanadianPortName S_UpdateCargoRecordwithCanadianPortName --> N_UpdateCargoRecordwithCanadianPortName_Node0 N_UpdateCargoRecordwithCanadianPortName_Node0 -- No --> E_UpdateCargoRecordwithCanadianPortName
the Canadian port name information"]:::main N_UpdateCargoRecordwithCanadianPortName_Node0 -- Yes --> N_UpdateCargoRecordwithCanadianPortName_Node0_action N_UpdateCargoRecordwithCanadianPortName_Node0_action --> E_UpdateCargoRecordwithCanadianPortName S_UpdateCargoRecordwithCanadianPortName --> N_UpdateCargoRecordwithCanadianPortName_Node0 N_UpdateCargoRecordwithCanadianPortName_Node0 -- No --> E_UpdateCargoRecordwithCanadianPortName
File: GCX016.cbl
GIVEN:
A Canadian port name has been determined (either from DS table or default)
WHEN:
The system updates the cargo record
THEN:
The cargo record is updated with the Canadian port name information
β Consolidated Acceptance Criteria
- The system sets processing flags → the cross-border flag is set to indicate special cross-border processing requirements
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetCrossBorderFlag(["Start Step"])
E_SetCrossBorderFlag(["End Step"])
N_SetCrossBorderFlag_Node0{"The system sets processing flags"}:::decision
N_SetCrossBorderFlag_Node0_action["The cross-border flag is set to
indicate special cross-border
processing requirements"]:::main N_SetCrossBorderFlag_Node0 -- Yes --> N_SetCrossBorderFlag_Node0_action N_SetCrossBorderFlag_Node0_action --> E_SetCrossBorderFlag S_SetCrossBorderFlag --> N_SetCrossBorderFlag_Node0 N_SetCrossBorderFlag_Node0 -- No --> E_SetCrossBorderFlag
indicate special cross-border
processing requirements"]:::main N_SetCrossBorderFlag_Node0 -- Yes --> N_SetCrossBorderFlag_Node0_action N_SetCrossBorderFlag_Node0_action --> E_SetCrossBorderFlag S_SetCrossBorderFlag --> N_SetCrossBorderFlag_Node0 N_SetCrossBorderFlag_Node0 -- No --> E_SetCrossBorderFlag
File: GCX016.cbl
GIVEN:
The cargo record has been updated with Canadian port information
WHEN:
The system sets processing flags
THEN:
The cross-border flag is set to indicate special cross-border processing requirements
β Consolidated Acceptance Criteria
- The system creates audit trail entries → the port mapping operation is logged with source port, destination port, and mapping status
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogPortMappingforAuditTrail(["Start Step"])
E_LogPortMappingforAuditTrail(["End Step"])
N_LogPortMappingforAuditTrail_Node0{"The system creates audit trail
entries"}:::decision N_LogPortMappingforAuditTrail_Node0_action["The port mapping operation is
logged with source port, destination
port, and mapping status"]:::main N_LogPortMappingforAuditTrail_Node0 -- Yes --> N_LogPortMappingforAuditTrail_Node0_action N_LogPortMappingforAuditTrail_Node0_action --> E_LogPortMappingforAuditTrail S_LogPortMappingforAuditTrail --> N_LogPortMappingforAuditTrail_Node0 N_LogPortMappingforAuditTrail_Node0 -- No --> E_LogPortMappingforAuditTrail
entries"}:::decision N_LogPortMappingforAuditTrail_Node0_action["The port mapping operation is
logged with source port, destination
port, and mapping status"]:::main N_LogPortMappingforAuditTrail_Node0 -- Yes --> N_LogPortMappingforAuditTrail_Node0_action N_LogPortMappingforAuditTrail_Node0_action --> E_LogPortMappingforAuditTrail S_LogPortMappingforAuditTrail --> N_LogPortMappingforAuditTrail_Node0 N_LogPortMappingforAuditTrail_Node0 -- No --> E_LogPortMappingforAuditTrail
File: GCX016.cbl
GIVEN:
The cross-border flag has been set for the shipment
WHEN:
The system creates audit trail entries
THEN:
The port mapping operation is logged with source port, destination port, and mapping status
β Consolidated Acceptance Criteria
- The system checks for additional port codes to process → the system either processes the next port code if available or completes the mapping process
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AdditionalPortCodes(["Start Step"])
E_AdditionalPortCodes(["End Step"])
N_AdditionalPortCodes_Node0{"The system checks for additional
port codes to process"}:::decision N_AdditionalPortCodes_Node0_action["The system either processes the
next port code if available or
completes the mapping process"]:::main N_AdditionalPortCodes_Node0 -- Yes --> N_AdditionalPortCodes_Node0_action N_AdditionalPortCodes_Node0_action --> E_AdditionalPortCodes S_AdditionalPortCodes --> N_AdditionalPortCodes_Node0 N_AdditionalPortCodes_Node0 -- No --> E_AdditionalPortCodes
port codes to process"}:::decision N_AdditionalPortCodes_Node0_action["The system either processes the
next port code if available or
completes the mapping process"]:::main N_AdditionalPortCodes_Node0 -- Yes --> N_AdditionalPortCodes_Node0_action N_AdditionalPortCodes_Node0_action --> E_AdditionalPortCodes S_AdditionalPortCodes --> N_AdditionalPortCodes_Node0 N_AdditionalPortCodes_Node0 -- No --> E_AdditionalPortCodes
File: GCX016.cbl
GIVEN:
One port mapping operation has been completed
WHEN:
The system checks for additional port codes to process
THEN:
The system either processes the next port code if available or completes the mapping process
β Consolidated Acceptance Criteria
- The system processes the next port code → the system returns to port code extraction for the next US port code
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ProcessNextPortCode(["Start Step"])
E_ProcessNextPortCode(["End Step"])
N_ProcessNextPortCode_Node0{"The system processes the next port
code"}:::decision N_ProcessNextPortCode_Node0_action["The system returns to port code
extraction for the next US port code"]:::main N_ProcessNextPortCode_Node0 -- Yes --> N_ProcessNextPortCode_Node0_action N_ProcessNextPortCode_Node0_action --> E_ProcessNextPortCode S_ProcessNextPortCode --> N_ProcessNextPortCode_Node0 N_ProcessNextPortCode_Node0 -- No --> E_ProcessNextPortCode
code"}:::decision N_ProcessNextPortCode_Node0_action["The system returns to port code
extraction for the next US port code"]:::main N_ProcessNextPortCode_Node0 -- Yes --> N_ProcessNextPortCode_Node0_action N_ProcessNextPortCode_Node0_action --> E_ProcessNextPortCode S_ProcessNextPortCode --> N_ProcessNextPortCode_Node0 N_ProcessNextPortCode_Node0 -- No --> E_ProcessNextPortCode
File: GCX016.cbl
GIVEN:
Additional port codes exist in the cargo record
WHEN:
The system processes the next port code
THEN:
The system returns to port code extraction for the next US port code
β Consolidated Acceptance Criteria
- The port mapping workflow reaches completion → the system finalizes the port mapping process and the cargo record is ready for further processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_PortMappingComplete(["Start Step"])
E_PortMappingComplete(["End Step"])
N_PortMappingComplete_Node0{"The port mapping workflow reaches
completion"}:::decision N_PortMappingComplete_Node0_action["The system finalizes the port
mapping process and the cargo record
is ready for further processing"]:::main N_PortMappingComplete_Node0 -- Yes --> N_PortMappingComplete_Node0_action N_PortMappingComplete_Node0_action --> E_PortMappingComplete S_PortMappingComplete --> N_PortMappingComplete_Node0 N_PortMappingComplete_Node0 -- No --> E_PortMappingComplete
completion"}:::decision N_PortMappingComplete_Node0_action["The system finalizes the port
mapping process and the cargo record
is ready for further processing"]:::main N_PortMappingComplete_Node0 -- Yes --> N_PortMappingComplete_Node0_action N_PortMappingComplete_Node0_action --> E_PortMappingComplete S_PortMappingComplete --> N_PortMappingComplete_Node0 N_PortMappingComplete_Node0 -- No --> E_PortMappingComplete
File: GCX016.cbl
GIVEN:
All port codes have been processed or no port codes exist
WHEN:
The port mapping workflow reaches completion
THEN:
- The system finalizes the port mapping process
- The cargo record is ready for further processing
β Consolidated Acceptance Criteria
- The system processes the N9 segment qualifier code → the system determines if the qualifier indicates an FDA-related reference number
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_FDAReferenceQualifier(["Start Step"])
E_FDAReferenceQualifier(["End Step"])
N_FDAReferenceQualifier_Node0{"The system processes the N9 segment
qualifier code"}:::decision N_FDAReferenceQualifier_Node0_action["The system determines if the
qualifier indicates an FDA-related
reference number"]:::main N_FDAReferenceQualifier_Node0 -- Yes --> N_FDAReferenceQualifier_Node0_action N_FDAReferenceQualifier_Node0_action --> E_FDAReferenceQualifier S_FDAReferenceQualifier --> N_FDAReferenceQualifier_Node0 N_FDAReferenceQualifier_Node0 -- No --> E_FDAReferenceQualifier
qualifier code"}:::decision N_FDAReferenceQualifier_Node0_action["The system determines if the
qualifier indicates an FDA-related
reference number"]:::main N_FDAReferenceQualifier_Node0 -- Yes --> N_FDAReferenceQualifier_Node0_action N_FDAReferenceQualifier_Node0_action --> E_FDAReferenceQualifier S_FDAReferenceQualifier --> N_FDAReferenceQualifier_Node0 N_FDAReferenceQualifier_Node0 -- No --> E_FDAReferenceQualifier
File: GCX016.cbl
GIVEN:
An N9 segment is received with reference qualifier and reference number data
WHEN:
The system processes the N9 segment qualifier code
THEN:
The system determines if the qualifier indicates an FDA-related reference number
β Consolidated Acceptance Criteria
- The system validates the reference number format → the system determines if the reference number meets FDA formatting requirements
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ValidFDAFormat(["Start Step"])
E_ValidFDAFormat(["End Step"])
N_ValidFDAFormat_Node0{"The system validates the reference
number format"}:::decision N_ValidFDAFormat_Node0_action["The system determines if the
reference number meets FDA
formatting requirements"]:::main N_ValidFDAFormat_Node0 -- Yes --> N_ValidFDAFormat_Node0_action N_ValidFDAFormat_Node0_action --> E_ValidFDAFormat S_ValidFDAFormat --> N_ValidFDAFormat_Node0 N_ValidFDAFormat_Node0 -- No --> E_ValidFDAFormat
number format"}:::decision N_ValidFDAFormat_Node0_action["The system determines if the
reference number meets FDA
formatting requirements"]:::main N_ValidFDAFormat_Node0 -- Yes --> N_ValidFDAFormat_Node0_action N_ValidFDAFormat_Node0_action --> E_ValidFDAFormat S_ValidFDAFormat --> N_ValidFDAFormat_Node0 N_ValidFDAFormat_Node0 -- No --> E_ValidFDAFormat
File: GCX016.cbl
GIVEN:
An FDA reference number has been extracted from an N9 segment
WHEN:
The system validates the reference number format
THEN:
The system determines if the reference number meets FDA formatting requirements
β Consolidated Acceptance Criteria
- Secondary cargo records exist for the same shipment → the FDA reference information is linked to all related secondary cargo records
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LinktoSecondaryCargoRecords(["Start Step"])
E_LinktoSecondaryCargoRecords(["End Step"])
N_LinktoSecondaryCargoRecords_Node0{"Secondary cargo records exist for
the same shipment"}:::decision N_LinktoSecondaryCargoRecords_Node0_action["The FDA reference information is
linked to all related secondary
cargo records"]:::main N_LinktoSecondaryCargoRecords_Node0 -- Yes --> N_LinktoSecondaryCargoRecords_Node0_action N_LinktoSecondaryCargoRecords_Node0_action --> E_LinktoSecondaryCargoRecords S_LinktoSecondaryCargoRecords --> N_LinktoSecondaryCargoRecords_Node0 N_LinktoSecondaryCargoRecords_Node0 -- No --> E_LinktoSecondaryCargoRecords
the same shipment"}:::decision N_LinktoSecondaryCargoRecords_Node0_action["The FDA reference information is
linked to all related secondary
cargo records"]:::main N_LinktoSecondaryCargoRecords_Node0 -- Yes --> N_LinktoSecondaryCargoRecords_Node0_action N_LinktoSecondaryCargoRecords_Node0_action --> E_LinktoSecondaryCargoRecords S_LinktoSecondaryCargoRecords --> N_LinktoSecondaryCargoRecords_Node0 N_LinktoSecondaryCargoRecords_Node0 -- No --> E_LinktoSecondaryCargoRecords
File: GCX016.cbl
GIVEN:
FDA reference information has been stored in the primary cargo record
WHEN:
Secondary cargo records exist for the same shipment
THEN:
The FDA reference information is linked to all related secondary cargo records
β Consolidated Acceptance Criteria
- The system updates the cargo status array → fDA-related status codes are added to the GCSUSS09 status segments
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UpdateFDAStatusinStatusArray(["Start Step"])
E_UpdateFDAStatusinStatusArray(["End Step"])
N_UpdateFDAStatusinStatusArray_Node0{"The system updates the cargo status
array"}:::decision N_UpdateFDAStatusinStatusArray_Node0_action["FDA-related status codes are added
to the GCSUSS09 status segments"]:::main N_UpdateFDAStatusinStatusArray_Node0 -- Yes --> N_UpdateFDAStatusinStatusArray_Node0_action N_UpdateFDAStatusinStatusArray_Node0_action --> E_UpdateFDAStatusinStatusArray S_UpdateFDAStatusinStatusArray --> N_UpdateFDAStatusinStatusArray_Node0 N_UpdateFDAStatusinStatusArray_Node0 -- No --> E_UpdateFDAStatusinStatusArray
array"}:::decision N_UpdateFDAStatusinStatusArray_Node0_action["FDA-related status codes are added
to the GCSUSS09 status segments"]:::main N_UpdateFDAStatusinStatusArray_Node0 -- Yes --> N_UpdateFDAStatusinStatusArray_Node0_action N_UpdateFDAStatusinStatusArray_Node0_action --> E_UpdateFDAStatusinStatusArray S_UpdateFDAStatusinStatusArray --> N_UpdateFDAStatusinStatusArray_Node0 N_UpdateFDAStatusinStatusArray_Node0 -- No --> E_UpdateFDAStatusinStatusArray
File: GCX016.cbl
GIVEN:
FDA compliance requirements have been processed
WHEN:
The system updates the cargo status array
THEN:
FDA-related status codes are added to the GCSUSS09 status segments
β Consolidated Acceptance Criteria
- The qualifier does not indicate FDA-related reference information → the system skips FDA processing and continues to the next N9 segment
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SkipNonFDAReference(["Start Step"])
E_SkipNonFDAReference(["End Step"])
N_SkipNonFDAReference_Node0{"The qualifier does not indicate
FDA-related reference information"}:::decision N_SkipNonFDAReference_Node0_action["The system skips FDA processing and
continues to the next N9 segment"]:::main N_SkipNonFDAReference_Node0 -- Yes --> N_SkipNonFDAReference_Node0_action N_SkipNonFDAReference_Node0_action --> E_SkipNonFDAReference S_SkipNonFDAReference --> N_SkipNonFDAReference_Node0 N_SkipNonFDAReference_Node0 -- No --> E_SkipNonFDAReference
FDA-related reference information"}:::decision N_SkipNonFDAReference_Node0_action["The system skips FDA processing and
continues to the next N9 segment"]:::main N_SkipNonFDAReference_Node0 -- Yes --> N_SkipNonFDAReference_Node0_action N_SkipNonFDAReference_Node0_action --> E_SkipNonFDAReference S_SkipNonFDAReference --> N_SkipNonFDAReference_Node0 N_SkipNonFDAReference_Node0 -- No --> E_SkipNonFDAReference
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
An N9 segment is received with a reference qualifier
WHEN:
The qualifier does not indicate FDA-related reference information
THEN:
- The system skips fda processing
- Continues to the next n9 segment
β Consolidated Acceptance Criteria
- The system encounters invalid FDA reference formats or processing failures → the error is logged and processing continues to the next N9 segment without stopping the entire transaction
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_FDAProcessingError(["Start Step"])
E_FDAProcessingError(["End Step"])
N_FDAProcessingError_Node0{"The system encounters invalid FDA
reference formats or processing
failures"}:::decision N_FDAProcessingError_Node0_action["The error is logged and processing
continues to the next N9 segment
without stopping the entire
transaction"]:::exclusion N_FDAProcessingError_Node0 -- Yes -->|Alternative| N_FDAProcessingError_Node0_action N_FDAProcessingError_Node0_action --> E_FDAProcessingError S_FDAProcessingError --> N_FDAProcessingError_Node0 N_FDAProcessingError_Node0 -- No --> E_FDAProcessingError
reference formats or processing
failures"}:::decision N_FDAProcessingError_Node0_action["The error is logged and processing
continues to the next N9 segment
without stopping the entire
transaction"]:::exclusion N_FDAProcessingError_Node0 -- Yes -->|Alternative| N_FDAProcessingError_Node0_action N_FDAProcessingError_Node0_action --> E_FDAProcessingError S_FDAProcessingError --> N_FDAProcessingError_Node0 N_FDAProcessingError_Node0 -- No --> E_FDAProcessingError
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
An error occurs during FDA reference processing
WHEN:
The system encounters invalid FDA reference formats or processing failures
THEN:
- The error is logged
- Processing continues to the next n9 segment without stopping the entire transaction
β Consolidated Acceptance Criteria
- The system searches the cargo database using the bond control number as the key → all cargo records with matching bond numbers are retrieved for disposition code processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SearchAllCargoRecordswithSameBondNumber(["Start Step"])
E_SearchAllCargoRecordswithSameBondNumber(["End Step"])
N_SearchAllCargoRecordswithSameBondNumber_Node0{"The system searches the cargo
database using the bond control
number as the key"}:::decision N_SearchAllCargoRecordswithSameBondNumber_Node0_action["All cargo records with matching
bond numbers are retrieved for
disposition code processing"]:::main N_SearchAllCargoRecordswithSameBondNumber_Node0 -- Yes --> N_SearchAllCargoRecordswithSameBondNumber_Node0_action N_SearchAllCargoRecordswithSameBondNumber_Node0_action --> E_SearchAllCargoRecordswithSameBondNumber S_SearchAllCargoRecordswithSameBondNumber --> N_SearchAllCargoRecordswithSameBondNumber_Node0 N_SearchAllCargoRecordswithSameBondNumber_Node0 -- No --> E_SearchAllCargoRecordswithSameBondNumber
database using the bond control
number as the key"}:::decision N_SearchAllCargoRecordswithSameBondNumber_Node0_action["All cargo records with matching
bond numbers are retrieved for
disposition code processing"]:::main N_SearchAllCargoRecordswithSameBondNumber_Node0 -- Yes --> N_SearchAllCargoRecordswithSameBondNumber_Node0_action N_SearchAllCargoRecordswithSameBondNumber_Node0_action --> E_SearchAllCargoRecordswithSameBondNumber S_SearchAllCargoRecordswithSameBondNumber --> N_SearchAllCargoRecordswithSameBondNumber_Node0 N_SearchAllCargoRecordswithSameBondNumber_Node0 -- No --> E_SearchAllCargoRecordswithSameBondNumber
File: GCX016.cbl
GIVEN:
A valid bond control number has been extracted and validated
WHEN:
The system searches the cargo database using the bond control number as the key
THEN:
All cargo records with matching bond numbers are retrieved for disposition code processing
β Consolidated Acceptance Criteria
- The system processes each cargo record individually → each cargo record is prepared for disposition code application and status updates
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ProcessEachCargoRecordwithBondNumber(["Start Step"])
E_ProcessEachCargoRecordwithBondNumber(["End Step"])
N_ProcessEachCargoRecordwithBondNumber_Node0{"The system processes each cargo
record individually"}:::decision N_ProcessEachCargoRecordwithBondNumber_Node0_action["Each cargo record is prepared for
disposition code application and
status updates"]:::main N_ProcessEachCargoRecordwithBondNumber_Node0 -- Yes --> N_ProcessEachCargoRecordwithBondNumber_Node0_action N_ProcessEachCargoRecordwithBondNumber_Node0_action --> E_ProcessEachCargoRecordwithBondNumber S_ProcessEachCargoRecordwithBondNumber --> N_ProcessEachCargoRecordwithBondNumber_Node0 N_ProcessEachCargoRecordwithBondNumber_Node0 -- No --> E_ProcessEachCargoRecordwithBondNumber
record individually"}:::decision N_ProcessEachCargoRecordwithBondNumber_Node0_action["Each cargo record is prepared for
disposition code application and
status updates"]:::main N_ProcessEachCargoRecordwithBondNumber_Node0 -- Yes --> N_ProcessEachCargoRecordwithBondNumber_Node0_action N_ProcessEachCargoRecordwithBondNumber_Node0_action --> E_ProcessEachCargoRecordwithBondNumber S_ProcessEachCargoRecordwithBondNumber --> N_ProcessEachCargoRecordwithBondNumber_Node0 N_ProcessEachCargoRecordwithBondNumber_Node0 -- No --> E_ProcessEachCargoRecordwithBondNumber
File: GCX016.cbl
GIVEN:
Cargo records with matching bond numbers have been found
WHEN:
The system processes each cargo record individually
THEN:
- Each cargo record is prepared for disposition code application
- Status updates
β Consolidated Acceptance Criteria
- The system applies the disposition code to each cargo record in the bond group → all cargo records in the bond group receive the same disposition code treatment for consistent processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ApplyDispositionCodetoAllBondCargo(["Start Step"])
E_ApplyDispositionCodetoAllBondCargo(["End Step"])
N_ApplyDispositionCodetoAllBondCargo_Node0{"The system applies the disposition
code to each cargo record in the
bond group"}:::decision N_ApplyDispositionCodetoAllBondCargo_Node0_action["All cargo records in the bond group
receive the same disposition code
treatment for consistent processing"]:::main N_ApplyDispositionCodetoAllBondCargo_Node0 -- Yes --> N_ApplyDispositionCodetoAllBondCargo_Node0_action N_ApplyDispositionCodetoAllBondCargo_Node0_action --> E_ApplyDispositionCodetoAllBondCargo S_ApplyDispositionCodetoAllBondCargo --> N_ApplyDispositionCodetoAllBondCargo_Node0 N_ApplyDispositionCodetoAllBondCargo_Node0 -- No --> E_ApplyDispositionCodetoAllBondCargo
code to each cargo record in the
bond group"}:::decision N_ApplyDispositionCodetoAllBondCargo_Node0_action["All cargo records in the bond group
receive the same disposition code
treatment for consistent processing"]:::main N_ApplyDispositionCodetoAllBondCargo_Node0 -- Yes --> N_ApplyDispositionCodetoAllBondCargo_Node0_action N_ApplyDispositionCodetoAllBondCargo_Node0_action --> E_ApplyDispositionCodetoAllBondCargo S_ApplyDispositionCodetoAllBondCargo --> N_ApplyDispositionCodetoAllBondCargo_Node0 N_ApplyDispositionCodetoAllBondCargo_Node0 -- No --> E_ApplyDispositionCodetoAllBondCargo
File: GCX016.cbl
GIVEN:
Cargo records with matching bond numbers are being processed and a disposition code exists in the X4 segment
WHEN:
The system applies the disposition code to each cargo record in the bond group
THEN:
All cargo records in the bond group receive the same disposition code treatment for consistent processing
β Consolidated Acceptance Criteria
- The system updates the status arrays for each cargo record → all cargo records in the bond group have their status arrays updated to reflect the new disposition code status
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UpdateStatusArraysforAllBondCargo(["Start Step"])
E_UpdateStatusArraysforAllBondCargo(["End Step"])
N_UpdateStatusArraysforAllBondCargo_Node0{"The system updates the status
arrays for each cargo record"}:::decision N_UpdateStatusArraysforAllBondCargo_Node0_action["All cargo records in the bond group
have their status arrays updated to
reflect the new disposition code
status"]:::main N_UpdateStatusArraysforAllBondCargo_Node0 -- Yes --> N_UpdateStatusArraysforAllBondCargo_Node0_action N_UpdateStatusArraysforAllBondCargo_Node0_action --> E_UpdateStatusArraysforAllBondCargo S_UpdateStatusArraysforAllBondCargo --> N_UpdateStatusArraysforAllBondCargo_Node0 N_UpdateStatusArraysforAllBondCargo_Node0 -- No --> E_UpdateStatusArraysforAllBondCargo
arrays for each cargo record"}:::decision N_UpdateStatusArraysforAllBondCargo_Node0_action["All cargo records in the bond group
have their status arrays updated to
reflect the new disposition code
status"]:::main N_UpdateStatusArraysforAllBondCargo_Node0 -- Yes --> N_UpdateStatusArraysforAllBondCargo_Node0_action N_UpdateStatusArraysforAllBondCargo_Node0_action --> E_UpdateStatusArraysforAllBondCargo S_UpdateStatusArraysforAllBondCargo --> N_UpdateStatusArraysforAllBondCargo_Node0 N_UpdateStatusArraysforAllBondCargo_Node0 -- No --> E_UpdateStatusArraysforAllBondCargo
File: GCX016.cbl
GIVEN:
Disposition codes have been applied to all cargo records in a bond group
WHEN:
The system updates the status arrays for each cargo record
THEN:
All cargo records in the bond group have their status arrays updated to reflect the new disposition code status
β Consolidated Acceptance Criteria
- The system validates the disposition code against each cargo record's current status and characteristics → the disposition code application is confirmed as valid for each cargo record or validation errors are identified
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ValidateDispositionCodeAgainstBondCargo(["Start Step"])
E_ValidateDispositionCodeAgainstBondCargo(["End Step"])
N_ValidateDispositionCodeAgainstBondCargo_Node0{"The system validates the
disposition code against each cargo
record s current status and
characteristics"}:::decision N_ValidateDispositionCodeAgainstBondCargo_Node0_action["The disposition code application is
confirmed as valid for each cargo
record or validation errors are
identified"]:::main N_ValidateDispositionCodeAgainstBondCargo_Node0 -- Yes --> N_ValidateDispositionCodeAgainstBondCargo_Node0_action N_ValidateDispositionCodeAgainstBondCargo_Node0_action --> E_ValidateDispositionCodeAgainstBondCargo S_ValidateDispositionCodeAgainstBondCargo --> N_ValidateDispositionCodeAgainstBondCargo_Node0 N_ValidateDispositionCodeAgainstBondCargo_Node0 -- No --> E_ValidateDispositionCodeAgainstBondCargo
disposition code against each cargo
record s current status and
characteristics"}:::decision N_ValidateDispositionCodeAgainstBondCargo_Node0_action["The disposition code application is
confirmed as valid for each cargo
record or validation errors are
identified"]:::main N_ValidateDispositionCodeAgainstBondCargo_Node0 -- Yes --> N_ValidateDispositionCodeAgainstBondCargo_Node0_action N_ValidateDispositionCodeAgainstBondCargo_Node0_action --> E_ValidateDispositionCodeAgainstBondCargo S_ValidateDispositionCodeAgainstBondCargo --> N_ValidateDispositionCodeAgainstBondCargo_Node0 N_ValidateDispositionCodeAgainstBondCargo_Node0 -- No --> E_ValidateDispositionCodeAgainstBondCargo
File: GCX016.cbl
GIVEN:
Disposition codes have been applied and status arrays updated for bond cargo
WHEN:
- The system validates the disposition code against each cargo record's current status
- Characteristics
THEN:
The disposition code application is confirmed as valid for each cargo record or validation errors are identified
β Consolidated Acceptance Criteria
- The system generates processing messages for the bond operation → messages are created documenting the disposition code application results for all cargo in the bond group
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GenerateBondProcessingMessages(["Start Step"])
E_GenerateBondProcessingMessages(["End Step"])
N_GenerateBondProcessingMessages_Node0{"The system generates processing
messages for the bond operation"}:::decision N_GenerateBondProcessingMessages_Node0_action["Messages are created documenting
the disposition code application
results for all cargo in the bond
group"]:::main N_GenerateBondProcessingMessages_Node0 -- Yes --> N_GenerateBondProcessingMessages_Node0_action N_GenerateBondProcessingMessages_Node0_action --> E_GenerateBondProcessingMessages S_GenerateBondProcessingMessages --> N_GenerateBondProcessingMessages_Node0 N_GenerateBondProcessingMessages_Node0 -- No --> E_GenerateBondProcessingMessages
messages for the bond operation"}:::decision N_GenerateBondProcessingMessages_Node0_action["Messages are created documenting
the disposition code application
results for all cargo in the bond
group"]:::main N_GenerateBondProcessingMessages_Node0 -- Yes --> N_GenerateBondProcessingMessages_Node0_action N_GenerateBondProcessingMessages_Node0_action --> E_GenerateBondProcessingMessages S_GenerateBondProcessingMessages --> N_GenerateBondProcessingMessages_Node0 N_GenerateBondProcessingMessages_Node0 -- No --> E_GenerateBondProcessingMessages
File: GCX016.cbl
GIVEN:
All cargo records in the bond group have been processed
WHEN:
The system generates processing messages for the bond operation
THEN:
Messages are created documenting the disposition code application results for all cargo in the bond group
β Consolidated Acceptance Criteria
- The system generates an error message for the bond number issue → an appropriate error message is created indicating the specific bond number validation failure
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GenerateBondNumberErrorMessage(["Start Step"])
E_GenerateBondNumberErrorMessage(["End Step"])
N_GenerateBondNumberErrorMessage_Node0{"The system generates an error
message for the bond number issue"}:::decision N_GenerateBondNumberErrorMessage_Node0_action["An appropriate error message is
created indicating the specific bond
number validation failure"]:::exclusion N_GenerateBondNumberErrorMessage_Node0 -- Yes -->|Alternative| N_GenerateBondNumberErrorMessage_Node0_action N_GenerateBondNumberErrorMessage_Node0_action --> E_GenerateBondNumberErrorMessage S_GenerateBondNumberErrorMessage --> N_GenerateBondNumberErrorMessage_Node0 N_GenerateBondNumberErrorMessage_Node0 -- No --> E_GenerateBondNumberErrorMessage
message for the bond number issue"}:::decision N_GenerateBondNumberErrorMessage_Node0_action["An appropriate error message is
created indicating the specific bond
number validation failure"]:::exclusion N_GenerateBondNumberErrorMessage_Node0 -- Yes -->|Alternative| N_GenerateBondNumberErrorMessage_Node0_action N_GenerateBondNumberErrorMessage_Node0_action --> E_GenerateBondNumberErrorMessage S_GenerateBondNumberErrorMessage --> N_GenerateBondNumberErrorMessage_Node0 N_GenerateBondNumberErrorMessage_Node0 -- No --> E_GenerateBondNumberErrorMessage
File: GCX016.cbl
GIVEN:
Bond number validation has failed or no bond number is present
WHEN:
The system generates an error message for the bond number issue
THEN:
An appropriate error message is created indicating the specific bond number validation failure
β Consolidated Acceptance Criteria
- The system generates a no cargo found message → a message is created indicating that no cargo records exist for the specified bond number
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GenerateNoCargoFoundMessage(["Start Step"])
E_GenerateNoCargoFoundMessage(["End Step"])
N_GenerateNoCargoFoundMessage_Node0{"The system generates a no cargo
found message"}:::decision N_GenerateNoCargoFoundMessage_Node0_action["A message is created indicating
that no cargo records exist for the
specified bond number"]:::main N_GenerateNoCargoFoundMessage_Node0 -- Yes --> N_GenerateNoCargoFoundMessage_Node0_action N_GenerateNoCargoFoundMessage_Node0_action --> E_GenerateNoCargoFoundMessage S_GenerateNoCargoFoundMessage --> N_GenerateNoCargoFoundMessage_Node0 N_GenerateNoCargoFoundMessage_Node0 -- No --> E_GenerateNoCargoFoundMessage
found message"}:::decision N_GenerateNoCargoFoundMessage_Node0_action["A message is created indicating
that no cargo records exist for the
specified bond number"]:::main N_GenerateNoCargoFoundMessage_Node0 -- Yes --> N_GenerateNoCargoFoundMessage_Node0_action N_GenerateNoCargoFoundMessage_Node0_action --> E_GenerateNoCargoFoundMessage S_GenerateNoCargoFoundMessage --> N_GenerateNoCargoFoundMessage_Node0 N_GenerateNoCargoFoundMessage_Node0 -- No --> E_GenerateNoCargoFoundMessage
File: GCX016.cbl
GIVEN:
A search for cargo records by bond number has returned no results
WHEN:
The system generates a no cargo found message
THEN:
A message is created indicating that no cargo records exist for the specified bond number
β Consolidated Acceptance Criteria
- The system needs to search for cargo records by car and waybill → a composite key is built combining the car ID and waybill number for database search operations
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_BuildCarWaybillKey(["Start Step"])
E_BuildCarWaybillKey(["End Step"])
N_BuildCarWaybillKey_Node0{"The system needs to search for
cargo records by car and waybill"}:::decision N_BuildCarWaybillKey_Node0_action["A composite key is built combining
the car ID and waybill number for
database search operations"]:::main N_BuildCarWaybillKey_Node0 -- Yes --> N_BuildCarWaybillKey_Node0_action N_BuildCarWaybillKey_Node0_action --> E_BuildCarWaybillKey S_BuildCarWaybillKey --> N_BuildCarWaybillKey_Node0 N_BuildCarWaybillKey_Node0 -- No --> E_BuildCarWaybillKey
cargo records by car and waybill"}:::decision N_BuildCarWaybillKey_Node0_action["A composite key is built combining
the car ID and waybill number for
database search operations"]:::main N_BuildCarWaybillKey_Node0 -- Yes --> N_BuildCarWaybillKey_Node0_action N_BuildCarWaybillKey_Node0_action --> E_BuildCarWaybillKey S_BuildCarWaybillKey --> N_BuildCarWaybillKey_Node0 N_BuildCarWaybillKey_Node0 -- No --> E_BuildCarWaybillKey
File: GCX016.cbl
GIVEN:
Valid car ID and waybill number are available
WHEN:
- The system needs to search for cargo records by car
- Waybill
THEN:
- A composite key is built combining the car id
- Waybill number for database search operations
β Consolidated Acceptance Criteria
- The system searches the cargo database using the car-waybill index → all cargo records matching the car-waybill combination are identified
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SearchCargoDatabasebyCarWaybillIndex(["Start Step"])
E_SearchCargoDatabasebyCarWaybillIndex(["End Step"])
N_SearchCargoDatabasebyCarWaybillIndex_Node0{"The system searches the cargo
database using the car-waybill index"}:::decision N_SearchCargoDatabasebyCarWaybillIndex_Node0_action["All cargo records matching the
car-waybill combination are
identified"]:::main N_SearchCargoDatabasebyCarWaybillIndex_Node0 -- Yes --> N_SearchCargoDatabasebyCarWaybillIndex_Node0_action N_SearchCargoDatabasebyCarWaybillIndex_Node0_action --> E_SearchCargoDatabasebyCarWaybillIndex S_SearchCargoDatabasebyCarWaybillIndex --> N_SearchCargoDatabasebyCarWaybillIndex_Node0 N_SearchCargoDatabasebyCarWaybillIndex_Node0 -- No --> E_SearchCargoDatabasebyCarWaybillIndex
database using the car-waybill index"}:::decision N_SearchCargoDatabasebyCarWaybillIndex_Node0_action["All cargo records matching the
car-waybill combination are
identified"]:::main N_SearchCargoDatabasebyCarWaybillIndex_Node0 -- Yes --> N_SearchCargoDatabasebyCarWaybillIndex_Node0_action N_SearchCargoDatabasebyCarWaybillIndex_Node0_action --> E_SearchCargoDatabasebyCarWaybillIndex S_SearchCargoDatabasebyCarWaybillIndex --> N_SearchCargoDatabasebyCarWaybillIndex_Node0 N_SearchCargoDatabasebyCarWaybillIndex_Node0 -- No --> E_SearchCargoDatabasebyCarWaybillIndex
File: GCX016.cbl
GIVEN:
A car-waybill composite key has been constructed
WHEN:
The system searches the cargo database using the car-waybill index
THEN:
All cargo records matching the car-waybill combination are identified
β Consolidated Acceptance Criteria
- The system counts the number of valid cargo records → if multiple records exist, batch processing is initiated, otherwise single record processing is performed
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MultipleRecordsFound(["Start Step"])
E_MultipleRecordsFound(["End Step"])
N_MultipleRecordsFound_Node0{"The system counts the number of
valid cargo records"}:::decision N_MultipleRecordsFound_Node0_action["If multiple records exist, batch
processing is initiated, otherwise
single record processing is
performed"]:::main N_MultipleRecordsFound_Node0 -- Yes --> N_MultipleRecordsFound_Node0_action N_MultipleRecordsFound_Node0_action --> E_MultipleRecordsFound S_MultipleRecordsFound --> N_MultipleRecordsFound_Node0 N_MultipleRecordsFound_Node0 -- No --> E_MultipleRecordsFound
valid cargo records"}:::decision N_MultipleRecordsFound_Node0_action["If multiple records exist, batch
processing is initiated, otherwise
single record processing is
performed"]:::main N_MultipleRecordsFound_Node0 -- Yes --> N_MultipleRecordsFound_Node0_action N_MultipleRecordsFound_Node0_action --> E_MultipleRecordsFound S_MultipleRecordsFound --> N_MultipleRecordsFound_Node0 N_MultipleRecordsFound_Node0 -- No --> E_MultipleRecordsFound
File: GCX016.cbl
GIVEN:
Valid cargo records have been retrieved and validated
WHEN:
The system counts the number of valid cargo records
THEN:
If multiple records exist, batch processing is initiated, otherwise single record processing is performed
β Consolidated Acceptance Criteria
- The system processes the cargo records → each cargo record is processed individually with the same disposition code and business rules applied
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ProcessEachCargoRecordIndividually(["Start Step"])
E_ProcessEachCargoRecordIndividually(["End Step"])
N_ProcessEachCargoRecordIndividually_Node0{"The system processes the cargo
records"}:::decision N_ProcessEachCargoRecordIndividually_Node0_action["Each cargo record is processed
individually with the same
disposition code and business rules
applied"]:::main N_ProcessEachCargoRecordIndividually_Node0 -- Yes --> N_ProcessEachCargoRecordIndividually_Node0_action N_ProcessEachCargoRecordIndividually_Node0_action --> E_ProcessEachCargoRecordIndividually S_ProcessEachCargoRecordIndividually --> N_ProcessEachCargoRecordIndividually_Node0 N_ProcessEachCargoRecordIndividually_Node0 -- No --> E_ProcessEachCargoRecordIndividually
records"}:::decision N_ProcessEachCargoRecordIndividually_Node0_action["Each cargo record is processed
individually with the same
disposition code and business rules
applied"]:::main N_ProcessEachCargoRecordIndividually_Node0 -- Yes --> N_ProcessEachCargoRecordIndividually_Node0_action N_ProcessEachCargoRecordIndividually_Node0_action --> E_ProcessEachCargoRecordIndividually S_ProcessEachCargoRecordIndividually --> N_ProcessEachCargoRecordIndividually_Node0 N_ProcessEachCargoRecordIndividually_Node0 -- No --> E_ProcessEachCargoRecordIndividually
File: GCX016.cbl
GIVEN:
Multiple valid cargo records exist for the car-waybill combination
WHEN:
The system processes the cargo records
THEN:
- Each cargo record is processed individually with the same disposition code
- Business rules applied
β Consolidated Acceptance Criteria
- The system applies the disposition code → the disposition code from the X4 segment is applied to the single cargo record
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ApplyDispositionCodetoSingleRecord(["Start Step"])
E_ApplyDispositionCodetoSingleRecord(["End Step"])
N_ApplyDispositionCodetoSingleRecord_Node0{"The system applies the disposition
code"}:::decision N_ApplyDispositionCodetoSingleRecord_Node0_action["The disposition code from the X4
segment is applied to the single
cargo record"]:::main N_ApplyDispositionCodetoSingleRecord_Node0 -- Yes --> N_ApplyDispositionCodetoSingleRecord_Node0_action N_ApplyDispositionCodetoSingleRecord_Node0_action --> E_ApplyDispositionCodetoSingleRecord S_ApplyDispositionCodetoSingleRecord --> N_ApplyDispositionCodetoSingleRecord_Node0 N_ApplyDispositionCodetoSingleRecord_Node0 -- No --> E_ApplyDispositionCodetoSingleRecord
code"}:::decision N_ApplyDispositionCodetoSingleRecord_Node0_action["The disposition code from the X4
segment is applied to the single
cargo record"]:::main N_ApplyDispositionCodetoSingleRecord_Node0 -- Yes --> N_ApplyDispositionCodetoSingleRecord_Node0_action N_ApplyDispositionCodetoSingleRecord_Node0_action --> E_ApplyDispositionCodetoSingleRecord S_ApplyDispositionCodetoSingleRecord --> N_ApplyDispositionCodetoSingleRecord_Node0 N_ApplyDispositionCodetoSingleRecord_Node0 -- No --> E_ApplyDispositionCodetoSingleRecord
File: GCX016.cbl
GIVEN:
Only one valid cargo record exists for the car-waybill combination
WHEN:
The system applies the disposition code
THEN:
The disposition code from the X4 segment is applied to the single cargo record
β Consolidated Acceptance Criteria
- The system updates cargo status information → cargo status arrays are updated with new disposition codes, release quantities, and status flags
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UpdateCargoStatusArrays(["Start Step"])
E_UpdateCargoStatusArrays(["End Step"])
N_UpdateCargoStatusArrays_Node0{"The system updates cargo status
information"}:::decision N_UpdateCargoStatusArrays_Node0_action["Cargo status arrays are updated
with new disposition codes, release
quantities, and status flags"]:::main N_UpdateCargoStatusArrays_Node0 -- Yes --> N_UpdateCargoStatusArrays_Node0_action N_UpdateCargoStatusArrays_Node0_action --> E_UpdateCargoStatusArrays S_UpdateCargoStatusArrays --> N_UpdateCargoStatusArrays_Node0 N_UpdateCargoStatusArrays_Node0 -- No --> E_UpdateCargoStatusArrays
information"}:::decision N_UpdateCargoStatusArrays_Node0_action["Cargo status arrays are updated
with new disposition codes, release
quantities, and status flags"]:::main N_UpdateCargoStatusArrays_Node0 -- Yes --> N_UpdateCargoStatusArrays_Node0_action N_UpdateCargoStatusArrays_Node0_action --> E_UpdateCargoStatusArrays S_UpdateCargoStatusArrays --> N_UpdateCargoStatusArrays_Node0 N_UpdateCargoStatusArrays_Node0 -- No --> E_UpdateCargoStatusArrays
File: GCX016.cbl
GIVEN:
Disposition codes have been applied to cargo records
WHEN:
The system updates cargo status information
THEN:
Cargo status arrays are updated with new disposition codes, release quantities, and status flags
β Consolidated Acceptance Criteria
- The system checks for related equipment → any additional cars or equipment associated with the cargo are identified for potential processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CheckforRelatedEquipment(["Start Step"])
E_CheckforRelatedEquipment(["End Step"])
N_CheckforRelatedEquipment_Node0{"The system checks for related
equipment"}:::decision N_CheckforRelatedEquipment_Node0_action["Any additional cars or equipment
associated with the cargo are
identified for potential processing"]:::main N_CheckforRelatedEquipment_Node0 -- Yes --> N_CheckforRelatedEquipment_Node0_action N_CheckforRelatedEquipment_Node0_action --> E_CheckforRelatedEquipment S_CheckforRelatedEquipment --> N_CheckforRelatedEquipment_Node0 N_CheckforRelatedEquipment_Node0 -- No --> E_CheckforRelatedEquipment
equipment"}:::decision N_CheckforRelatedEquipment_Node0_action["Any additional cars or equipment
associated with the cargo are
identified for potential processing"]:::main N_CheckforRelatedEquipment_Node0 -- Yes --> N_CheckforRelatedEquipment_Node0_action N_CheckforRelatedEquipment_Node0_action --> E_CheckforRelatedEquipment S_CheckforRelatedEquipment --> N_CheckforRelatedEquipment_Node0 N_CheckforRelatedEquipment_Node0 -- No --> E_CheckforRelatedEquipment
File: GCX016.cbl
GIVEN:
Cargo records have been processed for the current car-waybill combination
WHEN:
The system checks for related equipment
THEN:
Any additional cars or equipment associated with the cargo are identified for potential processing
β Consolidated Acceptance Criteria
- If whether additional cars need processing → if additional cars require processing, the system moves to the next car, otherwise it proceeds to release validation
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ProcessAllCarsinConsist(["Start Step"])
E_ProcessAllCarsinConsist(["End Step"])
N_ProcessAllCarsinConsist_Node0{"The system evaluates whether
additional cars need processing"}:::decision N_ProcessAllCarsinConsist_Node0_action["If additional cars require
processing, the system moves to the
next car, otherwise it proceeds to
release validation"]:::main N_ProcessAllCarsinConsist_Node0 -- Yes --> N_ProcessAllCarsinConsist_Node0_action N_ProcessAllCarsinConsist_Node0_action --> E_ProcessAllCarsinConsist S_ProcessAllCarsinConsist --> N_ProcessAllCarsinConsist_Node0 N_ProcessAllCarsinConsist_Node0 -- No --> E_ProcessAllCarsinConsist
additional cars need processing"}:::decision N_ProcessAllCarsinConsist_Node0_action["If additional cars require
processing, the system moves to the
next car, otherwise it proceeds to
release validation"]:::main N_ProcessAllCarsinConsist_Node0 -- Yes --> N_ProcessAllCarsinConsist_Node0_action N_ProcessAllCarsinConsist_Node0_action --> E_ProcessAllCarsinConsist S_ProcessAllCarsinConsist --> N_ProcessAllCarsinConsist_Node0 N_ProcessAllCarsinConsist_Node0 -- No --> E_ProcessAllCarsinConsist
File: GCX016.cbl
GIVEN:
Current car processing is complete and related equipment has been checked
WHEN:
The system evaluates whether additional cars need processing
THEN:
If additional cars require processing, the system moves to the next car, otherwise it proceeds to release validation
β Consolidated Acceptance Criteria
- The system moves to the next car → processing continues with the next car ID extraction and cargo record processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MovetoNextCarinConsist(["Start Step"])
E_MovetoNextCarinConsist(["End Step"])
N_MovetoNextCarinConsist_Node0{"The system moves to the next car"}:::decision
N_MovetoNextCarinConsist_Node0_action["Processing continues with the next
car ID extraction and cargo record
processing"]:::main N_MovetoNextCarinConsist_Node0 -- Yes --> N_MovetoNextCarinConsist_Node0_action N_MovetoNextCarinConsist_Node0_action --> E_MovetoNextCarinConsist S_MovetoNextCarinConsist --> N_MovetoNextCarinConsist_Node0 N_MovetoNextCarinConsist_Node0 -- No --> E_MovetoNextCarinConsist
car ID extraction and cargo record
processing"]:::main N_MovetoNextCarinConsist_Node0 -- Yes --> N_MovetoNextCarinConsist_Node0_action N_MovetoNextCarinConsist_Node0_action --> E_MovetoNextCarinConsist S_MovetoNextCarinConsist --> N_MovetoNextCarinConsist_Node0 N_MovetoNextCarinConsist_Node0 -- No --> E_MovetoNextCarinConsist
File: GCX016.cbl
GIVEN:
Additional cars in the consist require processing
WHEN:
The system moves to the next car
THEN:
- Processing continues with the next car id extraction
- Cargo record processing
β Consolidated Acceptance Criteria
- The system validates release eligibility across all cars → release eligibility is confirmed for all cargo records before proceeding with release message generation
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ValidateReleaseEligibilityAcrossAllCars(["Start Step"])
E_ValidateReleaseEligibilityAcrossAllCars(["End Step"])
N_ValidateReleaseEligibilityAcrossAllCars_Node0{"The system validates release
eligibility across all cars"}:::decision N_ValidateReleaseEligibilityAcrossAllCars_Node0_action["Release eligibility is confirmed
for all cargo records before
proceeding with release message
generation"]:::main N_ValidateReleaseEligibilityAcrossAllCars_Node0 -- Yes --> N_ValidateReleaseEligibilityAcrossAllCars_Node0_action N_ValidateReleaseEligibilityAcrossAllCars_Node0_action --> E_ValidateReleaseEligibilityAcrossAllCars S_ValidateReleaseEligibilityAcrossAllCars --> N_ValidateReleaseEligibilityAcrossAllCars_Node0 N_ValidateReleaseEligibilityAcrossAllCars_Node0 -- No --> E_ValidateReleaseEligibilityAcrossAllCars
eligibility across all cars"}:::decision N_ValidateReleaseEligibilityAcrossAllCars_Node0_action["Release eligibility is confirmed
for all cargo records before
proceeding with release message
generation"]:::main N_ValidateReleaseEligibilityAcrossAllCars_Node0 -- Yes --> N_ValidateReleaseEligibilityAcrossAllCars_Node0_action N_ValidateReleaseEligibilityAcrossAllCars_Node0_action --> E_ValidateReleaseEligibilityAcrossAllCars S_ValidateReleaseEligibilityAcrossAllCars --> N_ValidateReleaseEligibilityAcrossAllCars_Node0 N_ValidateReleaseEligibilityAcrossAllCars_Node0 -- No --> E_ValidateReleaseEligibilityAcrossAllCars
File: GCX016.cbl
GIVEN:
All cars in the consist have been processed
WHEN:
The system validates release eligibility across all cars
THEN:
Release eligibility is confirmed for all cargo records before proceeding with release message generation
β Consolidated Acceptance Criteria
- The system generates release messages → appropriate release messages are created for all eligible cargo records in the car-waybill group
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GenerateMultiCargoReleaseMessages(["Start Step"])
E_GenerateMultiCargoReleaseMessages(["End Step"])
N_GenerateMultiCargoReleaseMessages_Node0{"The system generates release
messages"}:::decision N_GenerateMultiCargoReleaseMessages_Node0_action["Appropriate release messages are
created for all eligible cargo
records in the car-waybill group"]:::main N_GenerateMultiCargoReleaseMessages_Node0 -- Yes --> N_GenerateMultiCargoReleaseMessages_Node0_action N_GenerateMultiCargoReleaseMessages_Node0_action --> E_GenerateMultiCargoReleaseMessages S_GenerateMultiCargoReleaseMessages --> N_GenerateMultiCargoReleaseMessages_Node0 N_GenerateMultiCargoReleaseMessages_Node0 -- No --> E_GenerateMultiCargoReleaseMessages
messages"}:::decision N_GenerateMultiCargoReleaseMessages_Node0_action["Appropriate release messages are
created for all eligible cargo
records in the car-waybill group"]:::main N_GenerateMultiCargoReleaseMessages_Node0 -- Yes --> N_GenerateMultiCargoReleaseMessages_Node0_action N_GenerateMultiCargoReleaseMessages_Node0_action --> E_GenerateMultiCargoReleaseMessages S_GenerateMultiCargoReleaseMessages --> N_GenerateMultiCargoReleaseMessages_Node0 N_GenerateMultiCargoReleaseMessages_Node0 -- No --> E_GenerateMultiCargoReleaseMessages
File: GCX016.cbl
GIVEN:
All cargo records have been validated for release eligibility
WHEN:
The system generates release messages
THEN:
Appropriate release messages are created for all eligible cargo records in the car-waybill group
β Consolidated Acceptance Criteria
- The system updates cargo records → all related cargo records are updated with final status, disposition codes, and processing timestamps
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UpdateAllRelatedCargoRecords(["Start Step"])
E_UpdateAllRelatedCargoRecords(["End Step"])
N_UpdateAllRelatedCargoRecords_Node0{"The system updates cargo records"}:::decision
N_UpdateAllRelatedCargoRecords_Node0_action["All related cargo records are
updated with final status,
disposition codes, and processing
timestamps"]:::main N_UpdateAllRelatedCargoRecords_Node0 -- Yes --> N_UpdateAllRelatedCargoRecords_Node0_action N_UpdateAllRelatedCargoRecords_Node0_action --> E_UpdateAllRelatedCargoRecords S_UpdateAllRelatedCargoRecords --> N_UpdateAllRelatedCargoRecords_Node0 N_UpdateAllRelatedCargoRecords_Node0 -- No --> E_UpdateAllRelatedCargoRecords
updated with final status,
disposition codes, and processing
timestamps"]:::main N_UpdateAllRelatedCargoRecords_Node0 -- Yes --> N_UpdateAllRelatedCargoRecords_Node0_action N_UpdateAllRelatedCargoRecords_Node0_action --> E_UpdateAllRelatedCargoRecords S_UpdateAllRelatedCargoRecords --> N_UpdateAllRelatedCargoRecords_Node0 N_UpdateAllRelatedCargoRecords_Node0 -- No --> E_UpdateAllRelatedCargoRecords
File: GCX016.cbl
GIVEN:
Release messages have been generated for eligible cargo
WHEN:
The system updates cargo records
THEN:
All related cargo records are updated with final status, disposition codes, and processing timestamps
β Consolidated Acceptance Criteria
- The system completes car-waybill processing → processing is marked as complete and the system prepares for result logging
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CompleteCarWaybillProcessing(["Start Step"])
E_CompleteCarWaybillProcessing(["End Step"])
N_CompleteCarWaybillProcessing_Node0{"The system completes car-waybill
processing"}:::decision N_CompleteCarWaybillProcessing_Node0_action["Processing is marked as complete
and the system prepares for result
logging"]:::main N_CompleteCarWaybillProcessing_Node0 -- Yes --> N_CompleteCarWaybillProcessing_Node0_action N_CompleteCarWaybillProcessing_Node0_action --> E_CompleteCarWaybillProcessing S_CompleteCarWaybillProcessing --> N_CompleteCarWaybillProcessing_Node0 N_CompleteCarWaybillProcessing_Node0 -- No --> E_CompleteCarWaybillProcessing
processing"}:::decision N_CompleteCarWaybillProcessing_Node0_action["Processing is marked as complete
and the system prepares for result
logging"]:::main N_CompleteCarWaybillProcessing_Node0 -- Yes --> N_CompleteCarWaybillProcessing_Node0_action N_CompleteCarWaybillProcessing_Node0_action --> E_CompleteCarWaybillProcessing S_CompleteCarWaybillProcessing --> N_CompleteCarWaybillProcessing_Node0 N_CompleteCarWaybillProcessing_Node0 -- No --> E_CompleteCarWaybillProcessing
File: GCX016.cbl
GIVEN:
All cargo records have been updated with final status
WHEN:
The system completes car-waybill processing
THEN:
- Processing is marked as complete
- The system prepares for result logging
β Consolidated Acceptance Criteria
- The system logs processing results → processing statistics, success counts, error counts, and audit information are recorded in system logs
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogProcessingResults(["Start Step"])
E_LogProcessingResults(["End Step"])
N_LogProcessingResults_Node0{"The system logs processing results"}:::decision
N_LogProcessingResults_Node0_action["Processing statistics, success
counts, error counts, and audit
information are recorded in system
logs"]:::main N_LogProcessingResults_Node0 -- Yes --> N_LogProcessingResults_Node0_action N_LogProcessingResults_Node0_action --> E_LogProcessingResults S_LogProcessingResults --> N_LogProcessingResults_Node0 N_LogProcessingResults_Node0 -- No --> E_LogProcessingResults
counts, error counts, and audit
information are recorded in system
logs"]:::main N_LogProcessingResults_Node0 -- Yes --> N_LogProcessingResults_Node0_action N_LogProcessingResults_Node0_action --> E_LogProcessingResults S_LogProcessingResults --> N_LogProcessingResults_Node0 N_LogProcessingResults_Node0 -- No --> E_LogProcessingResults
File: GCX016.cbl
GIVEN:
Car-waybill processing has been completed
WHEN:
The system logs processing results
THEN:
Processing statistics, success counts, error counts, and audit information are recorded in system logs
β Consolidated Acceptance Criteria
- The system handles the cargo not found condition → error messages are generated and the system may create new cargo records or foreign bill records as appropriate
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_HandleCargoNotFoundError(["Start Step"])
E_HandleCargoNotFoundError(["End Step"])
N_HandleCargoNotFoundError_Node0{"The system handles the cargo not
found condition"}:::decision N_HandleCargoNotFoundError_Node0_action["Error messages are generated and
the system may create new cargo
records or foreign bill records as
appropriate"]:::main N_HandleCargoNotFoundError_Node0 -- Yes --> N_HandleCargoNotFoundError_Node0_action N_HandleCargoNotFoundError_Node0_action --> E_HandleCargoNotFoundError S_HandleCargoNotFoundError --> N_HandleCargoNotFoundError_Node0 N_HandleCargoNotFoundError_Node0 -- No --> E_HandleCargoNotFoundError
found condition"}:::decision N_HandleCargoNotFoundError_Node0_action["Error messages are generated and
the system may create new cargo
records or foreign bill records as
appropriate"]:::main N_HandleCargoNotFoundError_Node0 -- Yes --> N_HandleCargoNotFoundError_Node0_action N_HandleCargoNotFoundError_Node0_action --> E_HandleCargoNotFoundError S_HandleCargoNotFoundError --> N_HandleCargoNotFoundError_Node0 N_HandleCargoNotFoundError_Node0 -- No --> E_HandleCargoNotFoundError
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
No cargo records exist for the car-waybill combination
WHEN:
The system handles the cargo not found condition
THEN:
- Error messages are generated
- The system may create new cargo records or foreign bill records as appropriate
β Consolidated Acceptance Criteria
- The system initializes new cargo with car-waybill data → new cargo records are created and populated with available car ID, waybill number, and disposition code information
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_InitializeNewCargowithCarWaybillData(["Start Step"])
E_InitializeNewCargowithCarWaybillData(["End Step"])
N_InitializeNewCargowithCarWaybillData_Node0{"The system initializes new cargo
with car-waybill data"}:::decision N_InitializeNewCargowithCarWaybillData_Node0_action["New cargo records are created and
populated with available car ID,
waybill number, and disposition code
information"]:::main N_InitializeNewCargowithCarWaybillData_Node0 -- Yes --> N_InitializeNewCargowithCarWaybillData_Node0_action N_InitializeNewCargowithCarWaybillData_Node0_action --> E_InitializeNewCargowithCarWaybillData S_InitializeNewCargowithCarWaybillData --> N_InitializeNewCargowithCarWaybillData_Node0 N_InitializeNewCargowithCarWaybillData_Node0 -- No --> E_InitializeNewCargowithCarWaybillData
with car-waybill data"}:::decision N_InitializeNewCargowithCarWaybillData_Node0_action["New cargo records are created and
populated with available car ID,
waybill number, and disposition code
information"]:::main N_InitializeNewCargowithCarWaybillData_Node0 -- Yes --> N_InitializeNewCargowithCarWaybillData_Node0_action N_InitializeNewCargowithCarWaybillData_Node0_action --> E_InitializeNewCargowithCarWaybillData S_InitializeNewCargowithCarWaybillData --> N_InitializeNewCargowithCarWaybillData_Node0 N_InitializeNewCargowithCarWaybillData_Node0 -- No --> E_InitializeNewCargowithCarWaybillData
File: GCX016.cbl
GIVEN:
A foreign bill record has been created or new cargo initialization is required
WHEN:
The system initializes new cargo with car-waybill data
THEN:
- New cargo records are created
- Populated with available car id, waybill number, and disposition code information
β Consolidated Acceptance Criteria
- The system processes the N7 segment → the equipment ID is extracted from the N7-01 field for further processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExtractEquipmentIDfromN701(["Start Step"])
E_ExtractEquipmentIDfromN701(["End Step"])
N_ExtractEquipmentIDfromN701_Node0{"The system processes the N7 segment"}:::decision
N_ExtractEquipmentIDfromN701_Node0_action["The equipment ID is extracted from
the N7-01 field for further
processing"]:::main N_ExtractEquipmentIDfromN701_Node0 -- Yes --> N_ExtractEquipmentIDfromN701_Node0_action N_ExtractEquipmentIDfromN701_Node0_action --> E_ExtractEquipmentIDfromN701 S_ExtractEquipmentIDfromN701 --> N_ExtractEquipmentIDfromN701_Node0 N_ExtractEquipmentIDfromN701_Node0 -- No --> E_ExtractEquipmentIDfromN701
the N7-01 field for further
processing"]:::main N_ExtractEquipmentIDfromN701_Node0 -- Yes --> N_ExtractEquipmentIDfromN701_Node0_action N_ExtractEquipmentIDfromN701_Node0_action --> E_ExtractEquipmentIDfromN701 S_ExtractEquipmentIDfromN701 --> N_ExtractEquipmentIDfromN701_Node0 N_ExtractEquipmentIDfromN701_Node0 -- No --> E_ExtractEquipmentIDfromN701
File: GCX016.cbl
GIVEN:
An N7 equipment segment is received with equipment data
WHEN:
The system processes the N7 segment
THEN:
The equipment ID is extracted from the N7-01 field for further processing
β Consolidated Acceptance Criteria
- The system needs to format the equipment ID → the GCCCARFM utility is called to format and validate the equipment identifier
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CallGCCCARFMUtilityforFormatting(["Start Step"])
E_CallGCCCARFMUtilityforFormatting(["End Step"])
N_CallGCCCARFMUtilityforFormatting_Node0{"The system needs to format the
equipment ID"}:::decision N_CallGCCCARFMUtilityforFormatting_Node0_action["The GCCCARFM utility is called to
format and validate the equipment
identifier"]:::main N_CallGCCCARFMUtilityforFormatting_Node0 -- Yes --> N_CallGCCCARFMUtilityforFormatting_Node0_action N_CallGCCCARFMUtilityforFormatting_Node0_action --> E_CallGCCCARFMUtilityforFormatting S_CallGCCCARFMUtilityforFormatting --> N_CallGCCCARFMUtilityforFormatting_Node0 N_CallGCCCARFMUtilityforFormatting_Node0 -- No --> E_CallGCCCARFMUtilityforFormatting
equipment ID"}:::decision N_CallGCCCARFMUtilityforFormatting_Node0_action["The GCCCARFM utility is called to
format and validate the equipment
identifier"]:::main N_CallGCCCARFMUtilityforFormatting_Node0 -- Yes --> N_CallGCCCARFMUtilityforFormatting_Node0_action N_CallGCCCARFMUtilityforFormatting_Node0_action --> E_CallGCCCARFMUtilityforFormatting S_CallGCCCARFMUtilityforFormatting --> N_CallGCCCARFMUtilityforFormatting_Node0 N_CallGCCCARFMUtilityforFormatting_Node0 -- No --> E_CallGCCCARFMUtilityforFormatting
File: GCX016.cbl
GIVEN:
An equipment ID has been extracted from the N7 segment
WHEN:
The system needs to format the equipment ID
THEN:
- The gcccarfm utility is called to format
- Validate the equipment identifier
β Consolidated Acceptance Criteria
- The system standardizes the equipment format → the equipment ID is formatted according to standard specifications for consistent processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_StandardizeEquipmentFormat(["Start Step"])
E_StandardizeEquipmentFormat(["End Step"])
N_StandardizeEquipmentFormat_Node0{"The system standardizes the
equipment format"}:::decision N_StandardizeEquipmentFormat_Node0_action["The equipment ID is formatted
according to standard specifications
for consistent processing"]:::main N_StandardizeEquipmentFormat_Node0 -- Yes --> N_StandardizeEquipmentFormat_Node0_action N_StandardizeEquipmentFormat_Node0_action --> E_StandardizeEquipmentFormat S_StandardizeEquipmentFormat --> N_StandardizeEquipmentFormat_Node0 N_StandardizeEquipmentFormat_Node0 -- No --> E_StandardizeEquipmentFormat
equipment format"}:::decision N_StandardizeEquipmentFormat_Node0_action["The equipment ID is formatted
according to standard specifications
for consistent processing"]:::main N_StandardizeEquipmentFormat_Node0 -- Yes --> N_StandardizeEquipmentFormat_Node0_action N_StandardizeEquipmentFormat_Node0_action --> E_StandardizeEquipmentFormat S_StandardizeEquipmentFormat --> N_StandardizeEquipmentFormat_Node0 N_StandardizeEquipmentFormat_Node0 -- No --> E_StandardizeEquipmentFormat
File: GCX016.cbl
GIVEN:
An equipment ID has been validated as correct
WHEN:
The system standardizes the equipment format
THEN:
The equipment ID is formatted according to standard specifications for consistent processing
β Consolidated Acceptance Criteria
- The system updates the cargo record → the cargo record is updated with the standardized car ID information from the N7 segment
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UpdateCargoRecordwithCarID(["Start Step"])
E_UpdateCargoRecordwithCarID(["End Step"])
N_UpdateCargoRecordwithCarID_Node0{"The system updates the cargo record"}:::decision
N_UpdateCargoRecordwithCarID_Node0_action["The cargo record is updated with
the standardized car ID information
from the N7 segment"]:::main N_UpdateCargoRecordwithCarID_Node0 -- Yes --> N_UpdateCargoRecordwithCarID_Node0_action N_UpdateCargoRecordwithCarID_Node0_action --> E_UpdateCargoRecordwithCarID S_UpdateCargoRecordwithCarID --> N_UpdateCargoRecordwithCarID_Node0 N_UpdateCargoRecordwithCarID_Node0 -- No --> E_UpdateCargoRecordwithCarID
the standardized car ID information
from the N7 segment"]:::main N_UpdateCargoRecordwithCarID_Node0 -- Yes --> N_UpdateCargoRecordwithCarID_Node0_action N_UpdateCargoRecordwithCarID_Node0_action --> E_UpdateCargoRecordwithCarID S_UpdateCargoRecordwithCarID --> N_UpdateCargoRecordwithCarID_Node0 N_UpdateCargoRecordwithCarID_Node0 -- No --> E_UpdateCargoRecordwithCarID
File: GCX016.cbl
GIVEN:
An equipment ID has been standardized and validated
WHEN:
The system updates the cargo record
THEN:
The cargo record is updated with the standardized car ID information from the N7 segment
β Consolidated Acceptance Criteria
- The system completes equipment processing → equipment information is logged for audit and tracking purposes
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogEquipmentInformation(["Start Step"])
E_LogEquipmentInformation(["End Step"])
N_LogEquipmentInformation_Node0{"The system completes equipment
processing"}:::decision N_LogEquipmentInformation_Node0_action["Equipment information is logged for
audit and tracking purposes"]:::main N_LogEquipmentInformation_Node0 -- Yes --> N_LogEquipmentInformation_Node0_action N_LogEquipmentInformation_Node0_action --> E_LogEquipmentInformation S_LogEquipmentInformation --> N_LogEquipmentInformation_Node0 N_LogEquipmentInformation_Node0 -- No --> E_LogEquipmentInformation
processing"}:::decision N_LogEquipmentInformation_Node0_action["Equipment information is logged for
audit and tracking purposes"]:::main N_LogEquipmentInformation_Node0 -- Yes --> N_LogEquipmentInformation_Node0_action N_LogEquipmentInformation_Node0_action --> E_LogEquipmentInformation S_LogEquipmentInformation --> N_LogEquipmentInformation_Node0 N_LogEquipmentInformation_Node0 -- No --> E_LogEquipmentInformation
File: GCX016.cbl
GIVEN:
A cargo record has been successfully updated with equipment information
WHEN:
The system completes equipment processing
THEN:
- Equipment information is logged for audit
- Tracking purposes
β Consolidated Acceptance Criteria
- The system determines the equipment ID is invalid → an equipment ID error is generated and the equipment update is skipped
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GenerateEquipmentIDError(["Start Step"])
E_GenerateEquipmentIDError(["End Step"])
N_GenerateEquipmentIDError_Node0{"The system determines the equipment
ID is invalid"}:::decision N_GenerateEquipmentIDError_Node0_action["An equipment ID error is generated
and the equipment update is skipped"]:::exclusion N_GenerateEquipmentIDError_Node0 -- Yes -->|Alternative| N_GenerateEquipmentIDError_Node0_action N_GenerateEquipmentIDError_Node0_action --> E_GenerateEquipmentIDError S_GenerateEquipmentIDError --> N_GenerateEquipmentIDError_Node0 N_GenerateEquipmentIDError_Node0 -- No --> E_GenerateEquipmentIDError
ID is invalid"}:::decision N_GenerateEquipmentIDError_Node0_action["An equipment ID error is generated
and the equipment update is skipped"]:::exclusion N_GenerateEquipmentIDError_Node0 -- Yes -->|Alternative| N_GenerateEquipmentIDError_Node0_action N_GenerateEquipmentIDError_Node0_action --> E_GenerateEquipmentIDError S_GenerateEquipmentIDError --> N_GenerateEquipmentIDError_Node0 N_GenerateEquipmentIDError_Node0 -- No --> E_GenerateEquipmentIDError
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
An equipment ID has failed validation checks
WHEN:
The system determines the equipment ID is invalid
THEN:
- An equipment id error is generated
- The equipment update is skipped
β Consolidated Acceptance Criteria
- The system processes the error condition → the equipment update is skipped and processing continues without updating cargo records
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SkipEquipmentUpdate(["Start Step"])
E_SkipEquipmentUpdate(["End Step"])
N_SkipEquipmentUpdate_Node0{"The system processes the error
condition"}:::decision N_SkipEquipmentUpdate_Node0_action["The equipment update is skipped and
processing continues without
updating cargo records"]:::exclusion N_SkipEquipmentUpdate_Node0 -- Yes -->|Alternative| N_SkipEquipmentUpdate_Node0_action N_SkipEquipmentUpdate_Node0_action --> E_SkipEquipmentUpdate S_SkipEquipmentUpdate --> N_SkipEquipmentUpdate_Node0 N_SkipEquipmentUpdate_Node0 -- No --> E_SkipEquipmentUpdate
condition"}:::decision N_SkipEquipmentUpdate_Node0_action["The equipment update is skipped and
processing continues without
updating cargo records"]:::exclusion N_SkipEquipmentUpdate_Node0 -- Yes -->|Alternative| N_SkipEquipmentUpdate_Node0_action N_SkipEquipmentUpdate_Node0_action --> E_SkipEquipmentUpdate S_SkipEquipmentUpdate --> N_SkipEquipmentUpdate_Node0 N_SkipEquipmentUpdate_Node0 -- No --> E_SkipEquipmentUpdate
File: GCX016.cbl
GIVEN:
An equipment ID error has been generated due to invalid equipment data
WHEN:
The system processes the error condition
THEN:
- The equipment update is skipped
- Processing continues without updating cargo records
β Consolidated Acceptance Criteria
- The system checks if the lead manifest CCN matches the saved CCN from previous processing → the system identifies whether follower manifests exist and need to be processed
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CheckforFollowerManifests(["Start Step"])
E_CheckforFollowerManifests(["End Step"])
N_CheckforFollowerManifests_Node0{"The system checks if the lead
manifest CCN matches the saved CCN
from previous processing"}:::decision N_CheckforFollowerManifests_Node0_action["The system identifies whether
follower manifests exist and need to
be processed"]:::main N_CheckforFollowerManifests_Node0 -- Yes --> N_CheckforFollowerManifests_Node0_action N_CheckforFollowerManifests_Node0_action --> E_CheckforFollowerManifests S_CheckforFollowerManifests --> N_CheckforFollowerManifests_Node0 N_CheckforFollowerManifests_Node0 -- No --> E_CheckforFollowerManifests
manifest CCN matches the saved CCN
from previous processing"}:::decision N_CheckforFollowerManifests_Node0_action["The system identifies whether
follower manifests exist and need to
be processed"]:::main N_CheckforFollowerManifests_Node0 -- Yes --> N_CheckforFollowerManifests_Node0_action N_CheckforFollowerManifests_Node0_action --> E_CheckforFollowerManifests S_CheckforFollowerManifests --> N_CheckforFollowerManifests_Node0 N_CheckforFollowerManifests_Node0 -- No --> E_CheckforFollowerManifests
File: GCX016.cbl
GIVEN:
A lead manifest is identified for processing
WHEN:
The system checks if the lead manifest CCN matches the saved CCN from previous processing
THEN:
- The system identifies whether follower manifests exist
- Need to be processed
β Consolidated Acceptance Criteria
- The system initiates follower processing → the follower end-of-database flag is reset and processing begins
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_InitializeFollowerProcessing(["Start Step"])
E_InitializeFollowerProcessing(["End Step"])
N_InitializeFollowerProcessing_Node0{"The system initiates follower
processing"}:::decision N_InitializeFollowerProcessing_Node0_action["The follower end-of-database flag
is reset and processing begins"]:::main N_InitializeFollowerProcessing_Node0 -- Yes --> N_InitializeFollowerProcessing_Node0_action N_InitializeFollowerProcessing_Node0_action --> E_InitializeFollowerProcessing S_InitializeFollowerProcessing --> N_InitializeFollowerProcessing_Node0 N_InitializeFollowerProcessing_Node0 -- No --> E_InitializeFollowerProcessing
processing"}:::decision N_InitializeFollowerProcessing_Node0_action["The follower end-of-database flag
is reset and processing begins"]:::main N_InitializeFollowerProcessing_Node0 -- Yes --> N_InitializeFollowerProcessing_Node0_action N_InitializeFollowerProcessing_Node0_action --> E_InitializeFollowerProcessing S_InitializeFollowerProcessing --> N_InitializeFollowerProcessing_Node0 N_InitializeFollowerProcessing_Node0 -- No --> E_InitializeFollowerProcessing
File: GCX016.cbl
GIVEN:
Follower manifests are found for a lead manifest
WHEN:
The system initiates follower processing
THEN:
- The follower end-of-database flag is reset
- Processing begins
β Consolidated Acceptance Criteria
- The processing transaction completes → the system determines if the processing was successful or encountered errors
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ProcessingSuccessful(["Start Step"])
E_ProcessingSuccessful(["End Step"])
N_ProcessingSuccessful_Node0{"The processing transaction
completes"}:::decision N_ProcessingSuccessful_Node0_action["The system determines if the
processing was successful or
encountered errors"]:::main N_ProcessingSuccessful_Node0 -- Yes --> N_ProcessingSuccessful_Node0_action N_ProcessingSuccessful_Node0_action --> E_ProcessingSuccessful S_ProcessingSuccessful --> N_ProcessingSuccessful_Node0 N_ProcessingSuccessful_Node0 -- No --> E_ProcessingSuccessful
completes"}:::decision N_ProcessingSuccessful_Node0_action["The system determines if the
processing was successful or
encountered errors"]:::main N_ProcessingSuccessful_Node0 -- Yes --> N_ProcessingSuccessful_Node0_action N_ProcessingSuccessful_Node0_action --> E_ProcessingSuccessful S_ProcessingSuccessful --> N_ProcessingSuccessful_Node0 N_ProcessingSuccessful_Node0 -- No --> E_ProcessingSuccessful
File: GCX016.cbl
GIVEN:
A follower manifest has been submitted for processing via GCT0161E
WHEN:
The processing transaction completes
THEN:
The system determines if the processing was successful or encountered errors
β Consolidated Acceptance Criteria
- The system continues processing → the next follower manifest in the sequence is selected for processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ContinuetoNextFollower(["Start Step"])
E_ContinuetoNextFollower(["End Step"])
N_ContinuetoNextFollower_Node0{"The system continues processing"}:::decision
N_ContinuetoNextFollower_Node0_action["The next follower manifest in the
sequence is selected for processing"]:::main N_ContinuetoNextFollower_Node0 -- Yes --> N_ContinuetoNextFollower_Node0_action N_ContinuetoNextFollower_Node0_action --> E_ContinuetoNextFollower S_ContinuetoNextFollower --> N_ContinuetoNextFollower_Node0 N_ContinuetoNextFollower_Node0 -- No --> E_ContinuetoNextFollower
sequence is selected for processing"]:::main N_ContinuetoNextFollower_Node0 -- Yes --> N_ContinuetoNextFollower_Node0_action N_ContinuetoNextFollower_Node0_action --> E_ContinuetoNextFollower S_ContinuetoNextFollower --> N_ContinuetoNextFollower_Node0 N_ContinuetoNextFollower_Node0 -- No --> E_ContinuetoNextFollower
File: GCX016.cbl
GIVEN:
A follower manifest processing attempt has completed (either successfully or with errors)
WHEN:
The system continues processing
THEN:
The next follower manifest in the sequence is selected for processing
β Consolidated Acceptance Criteria
- No more followers remain in the processing queue → the multi-manifest processing operation is marked as complete and control returns to the main processing flow
- All multi-manifest processing tasks are complete → the system completes the multi-manifest processing workflow and returns control
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CompleteMultimanifestProcessing(["Start Step"])
E_CompleteMultimanifestProcessing(["End Step"])
N_CompleteMultimanifestProcessing_Node0{"No more followers remain in the
processing queue"}:::decision N_CompleteMultimanifestProcessing_Node0_action["The multi-manifest processing
operation is marked as complete and
control returns to the main
processing flow"]:::main N_CompleteMultimanifestProcessing_Node0 -- Yes --> N_CompleteMultimanifestProcessing_Node0_action N_CompleteMultimanifestProcessing_Node0_action --> E_CompleteMultimanifestProcessing S_CompleteMultimanifestProcessing --> N_CompleteMultimanifestProcessing_Node0 N_CompleteMultimanifestProcessing_Node1{"All multi-manifest processing tasks
are complete"}:::decision N_CompleteMultimanifestProcessing_Node1_action["The system completes the
multi-manifest processing workflow
and returns control"]:::main N_CompleteMultimanifestProcessing_Node1 -- Yes --> N_CompleteMultimanifestProcessing_Node1_action N_CompleteMultimanifestProcessing_Node1_action --> E_CompleteMultimanifestProcessing N_CompleteMultimanifestProcessing_Node0 -- No --> N_CompleteMultimanifestProcessing_Node1 N_CompleteMultimanifestProcessing_Node1 -- No --> E_CompleteMultimanifestProcessing
processing queue"}:::decision N_CompleteMultimanifestProcessing_Node0_action["The multi-manifest processing
operation is marked as complete and
control returns to the main
processing flow"]:::main N_CompleteMultimanifestProcessing_Node0 -- Yes --> N_CompleteMultimanifestProcessing_Node0_action N_CompleteMultimanifestProcessing_Node0_action --> E_CompleteMultimanifestProcessing S_CompleteMultimanifestProcessing --> N_CompleteMultimanifestProcessing_Node0 N_CompleteMultimanifestProcessing_Node1{"All multi-manifest processing tasks
are complete"}:::decision N_CompleteMultimanifestProcessing_Node1_action["The system completes the
multi-manifest processing workflow
and returns control"]:::main N_CompleteMultimanifestProcessing_Node1 -- Yes --> N_CompleteMultimanifestProcessing_Node1_action N_CompleteMultimanifestProcessing_Node1_action --> E_CompleteMultimanifestProcessing N_CompleteMultimanifestProcessing_Node0 -- No --> N_CompleteMultimanifestProcessing_Node1 N_CompleteMultimanifestProcessing_Node1 -- No --> E_CompleteMultimanifestProcessing
File: GCX016.cbl
GIVEN:
All follower manifests associated with a lead manifest have been processed
WHEN:
No more followers remain in the processing queue
THEN:
- The multi-manifest processing operation is marked as complete
- Control returns to the main processing flow
File: GCX016.cbl
GIVEN:
The lead manifest status has been updated after follower processing
WHEN:
All multi-manifest processing tasks are complete
THEN:
- The system completes the multi-manifest processing workflow
- Returns control
β Consolidated Acceptance Criteria
- The system needs to create status tracking for the cargo → an empty S09A status array is created and initialized with default values
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_StatusArrayInitialization(["Start Step"])
E_StatusArrayInitialization(["End Step"])
N_StatusArrayInitialization_Node0{"The system needs to create status
tracking for the cargo"}:::decision N_StatusArrayInitialization_Node0_action["An empty S09A status array is
created and initialized with default
values"]:::main N_StatusArrayInitialization_Node0 -- Yes --> N_StatusArrayInitialization_Node0_action N_StatusArrayInitialization_Node0_action --> E_StatusArrayInitialization S_StatusArrayInitialization --> N_StatusArrayInitialization_Node0 N_StatusArrayInitialization_Node0 -- No --> E_StatusArrayInitialization
tracking for the cargo"}:::decision N_StatusArrayInitialization_Node0_action["An empty S09A status array is
created and initialized with default
values"]:::main N_StatusArrayInitialization_Node0 -- Yes --> N_StatusArrayInitialization_Node0_action N_StatusArrayInitialization_Node0_action --> E_StatusArrayInitialization S_StatusArrayInitialization --> N_StatusArrayInitialization_Node0 N_StatusArrayInitialization_Node0 -- No --> E_StatusArrayInitialization
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
A cargo record that does not have existing S09 status segments
WHEN:
The system needs to create status tracking for the cargo
THEN:
- An empty s09a status array is created
- Initialized with default values
β Consolidated Acceptance Criteria
- The system needs to load current status information → all S09 segments are fetched from GCSUSS09 IMS segment and loaded into the status array
- The system processes the fetched S09 segments → each disposition code is loaded into the S09A array with its status flags, quantities, and location information
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_StatusArrayPopulation(["Start Step"])
E_StatusArrayPopulation(["End Step"])
N_StatusArrayPopulation_Node0{"The system needs to load current
status information"}:::decision N_StatusArrayPopulation_Node0_action["All S09 segments are fetched from
GCSUSS09 IMS segment and loaded into
the status array"]:::main N_StatusArrayPopulation_Node0 -- Yes --> N_StatusArrayPopulation_Node0_action N_StatusArrayPopulation_Node0_action --> E_StatusArrayPopulation S_StatusArrayPopulation --> N_StatusArrayPopulation_Node0 N_StatusArrayPopulation_Node1{"The system processes the fetched
S09 segments"}:::decision N_StatusArrayPopulation_Node1_action["Each disposition code is loaded
into the S09A array with its status
flags, quantities, and location
information"]:::main N_StatusArrayPopulation_Node1 -- Yes --> N_StatusArrayPopulation_Node1_action N_StatusArrayPopulation_Node1_action --> E_StatusArrayPopulation N_StatusArrayPopulation_Node0 -- No --> N_StatusArrayPopulation_Node1 N_StatusArrayPopulation_Node1 -- No --> E_StatusArrayPopulation
status information"}:::decision N_StatusArrayPopulation_Node0_action["All S09 segments are fetched from
GCSUSS09 IMS segment and loaded into
the status array"]:::main N_StatusArrayPopulation_Node0 -- Yes --> N_StatusArrayPopulation_Node0_action N_StatusArrayPopulation_Node0_action --> E_StatusArrayPopulation S_StatusArrayPopulation --> N_StatusArrayPopulation_Node0 N_StatusArrayPopulation_Node1{"The system processes the fetched
S09 segments"}:::decision N_StatusArrayPopulation_Node1_action["Each disposition code is loaded
into the S09A array with its status
flags, quantities, and location
information"]:::main N_StatusArrayPopulation_Node1 -- Yes --> N_StatusArrayPopulation_Node1_action N_StatusArrayPopulation_Node1_action --> E_StatusArrayPopulation N_StatusArrayPopulation_Node0 -- No --> N_StatusArrayPopulation_Node1 N_StatusArrayPopulation_Node1 -- No --> E_StatusArrayPopulation
File: GCX016.cbl
GIVEN:
A cargo record with existing S09 status segments in the database
WHEN:
The system needs to load current status information
THEN:
- All s09 segments are fetched from gcsuss09 ims segment
- Loaded into the status array
File: GCX016.cbl
GIVEN:
S09 segments containing disposition codes, status flags, and quantity information
WHEN:
The system processes the fetched S09 segments
THEN:
Each disposition code is loaded into the S09A array with its status flags, quantities, and location information
β Consolidated Acceptance Criteria
- The system checks if the disposition code already exists in the array → if the code already exists, skip adding it; if not, add the new code to the array
- The system adds the disposition code to the array → the code is added with its properties including status flags, location information, and quantity actions
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_DispositionCodeDuplicatePrevention(["Start Step"])
E_DispositionCodeDuplicatePrevention(["End Step"])
N_DispositionCodeDuplicatePrevention_Node0{"The system checks if the
disposition code already exists in
the array"}:::decision N_DispositionCodeDuplicatePrevention_Node0_action["If the code already exists, skip
adding it if not, add the new code
to the array"]:::main N_DispositionCodeDuplicatePrevention_Node0 -- Yes --> N_DispositionCodeDuplicatePrevention_Node0_action N_DispositionCodeDuplicatePrevention_Node0_action --> E_DispositionCodeDuplicatePrevention S_DispositionCodeDuplicatePrevention --> N_DispositionCodeDuplicatePrevention_Node0 N_DispositionCodeDuplicatePrevention_Node1{"The system adds the disposition
code to the array"}:::decision N_DispositionCodeDuplicatePrevention_Node1_action["The code is added with its
properties including status flags,
location information, and quantity
actions"]:::main N_DispositionCodeDuplicatePrevention_Node1 -- Yes --> N_DispositionCodeDuplicatePrevention_Node1_action N_DispositionCodeDuplicatePrevention_Node1_action --> E_DispositionCodeDuplicatePrevention N_DispositionCodeDuplicatePrevention_Node0 -- No --> N_DispositionCodeDuplicatePrevention_Node1 N_DispositionCodeDuplicatePrevention_Node1 -- No --> E_DispositionCodeDuplicatePrevention
disposition code already exists in
the array"}:::decision N_DispositionCodeDuplicatePrevention_Node0_action["If the code already exists, skip
adding it if not, add the new code
to the array"]:::main N_DispositionCodeDuplicatePrevention_Node0 -- Yes --> N_DispositionCodeDuplicatePrevention_Node0_action N_DispositionCodeDuplicatePrevention_Node0_action --> E_DispositionCodeDuplicatePrevention S_DispositionCodeDuplicatePrevention --> N_DispositionCodeDuplicatePrevention_Node0 N_DispositionCodeDuplicatePrevention_Node1{"The system adds the disposition
code to the array"}:::decision N_DispositionCodeDuplicatePrevention_Node1_action["The code is added with its
properties including status flags,
location information, and quantity
actions"]:::main N_DispositionCodeDuplicatePrevention_Node1 -- Yes --> N_DispositionCodeDuplicatePrevention_Node1_action N_DispositionCodeDuplicatePrevention_Node1_action --> E_DispositionCodeDuplicatePrevention N_DispositionCodeDuplicatePrevention_Node0 -- No --> N_DispositionCodeDuplicatePrevention_Node1 N_DispositionCodeDuplicatePrevention_Node1 -- No --> E_DispositionCodeDuplicatePrevention
File: GCX016.cbl
GIVEN:
A new disposition code to be added to the status array
WHEN:
The system checks if the disposition code already exists in the array
THEN:
If the code already exists, skip adding it; if not, add the new code to the array
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
A new disposition code that does not exist in the current status array
WHEN:
The system adds the disposition code to the array
THEN:
The code is added with its properties including status flags, location information, and quantity actions
β Consolidated Acceptance Criteria
- The system attempts to add additional disposition codes → the system prevents array overflow and maintains data integrity by rejecting additional entries
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_StatusArrayOverflowProtection(["Start Step"])
E_StatusArrayOverflowProtection(["End Step"])
N_StatusArrayOverflowProtection_Node0{"The system attempts to add
additional disposition codes"}:::decision N_StatusArrayOverflowProtection_Node0_action["The system prevents array overflow
and maintains data integrity by
rejecting additional entries"]:::main N_StatusArrayOverflowProtection_Node0 -- Yes --> N_StatusArrayOverflowProtection_Node0_action N_StatusArrayOverflowProtection_Node0_action --> E_StatusArrayOverflowProtection S_StatusArrayOverflowProtection --> N_StatusArrayOverflowProtection_Node0 N_StatusArrayOverflowProtection_Node0 -- No --> E_StatusArrayOverflowProtection
additional disposition codes"}:::decision N_StatusArrayOverflowProtection_Node0_action["The system prevents array overflow
and maintains data integrity by
rejecting additional entries"]:::main N_StatusArrayOverflowProtection_Node0 -- Yes --> N_StatusArrayOverflowProtection_Node0_action N_StatusArrayOverflowProtection_Node0_action --> E_StatusArrayOverflowProtection S_StatusArrayOverflowProtection --> N_StatusArrayOverflowProtection_Node0 N_StatusArrayOverflowProtection_Node0 -- No --> E_StatusArrayOverflowProtection
File: GCX016.cbl
GIVEN:
A status array that is approaching or at maximum capacity
WHEN:
The system attempts to add additional disposition codes
THEN:
- The system prevents array overflow
- Maintains data integrity by rejecting additional entries
β Consolidated Acceptance Criteria
- The system needs to persist the status information to the database → the array data is moved to S09 segments with proper sequencing and key structure
- The system persists the changes to the database → the cargo records in GCCC-CARGO-ROOT IMS segment are updated with the new status information
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_StatusArrayPersistence(["Start Step"])
E_StatusArrayPersistence(["End Step"])
N_StatusArrayPersistence_Node0{"The system needs to persist the
status information to the database"}:::decision N_StatusArrayPersistence_Node0_action["The array data is moved to S09
segments with proper sequencing and
key structure"]:::main N_StatusArrayPersistence_Node0 -- Yes --> N_StatusArrayPersistence_Node0_action N_StatusArrayPersistence_Node0_action --> E_StatusArrayPersistence S_StatusArrayPersistence --> N_StatusArrayPersistence_Node0 N_StatusArrayPersistence_Node1{"The system persists the changes to
the database"}:::decision N_StatusArrayPersistence_Node1_action["The cargo records in
GCCC-CARGO-ROOT IMS segment are
updated with the new status
information"]:::main N_StatusArrayPersistence_Node1 -- Yes --> N_StatusArrayPersistence_Node1_action N_StatusArrayPersistence_Node1_action --> E_StatusArrayPersistence N_StatusArrayPersistence_Node0 -- No --> N_StatusArrayPersistence_Node1 N_StatusArrayPersistence_Node1 -- No --> E_StatusArrayPersistence
status information to the database"}:::decision N_StatusArrayPersistence_Node0_action["The array data is moved to S09
segments with proper sequencing and
key structure"]:::main N_StatusArrayPersistence_Node0 -- Yes --> N_StatusArrayPersistence_Node0_action N_StatusArrayPersistence_Node0_action --> E_StatusArrayPersistence S_StatusArrayPersistence --> N_StatusArrayPersistence_Node0 N_StatusArrayPersistence_Node1{"The system persists the changes to
the database"}:::decision N_StatusArrayPersistence_Node1_action["The cargo records in
GCCC-CARGO-ROOT IMS segment are
updated with the new status
information"]:::main N_StatusArrayPersistence_Node1 -- Yes --> N_StatusArrayPersistence_Node1_action N_StatusArrayPersistence_Node1_action --> E_StatusArrayPersistence N_StatusArrayPersistence_Node0 -- No --> N_StatusArrayPersistence_Node1 N_StatusArrayPersistence_Node1 -- No --> E_StatusArrayPersistence
File: GCX016.cbl
GIVEN:
A populated S09A status array with disposition codes and status information
WHEN:
The system needs to persist the status information to the database
THEN:
- The array data is moved to s09 segments with proper sequencing
- Key structure
File: GCX016.cbl
GIVEN:
S09 segments containing updated status information from the status array
WHEN:
The system persists the changes to the database
THEN:
The cargo records in GCCC-CARGO-ROOT IMS segment are updated with the new status information
β Consolidated Acceptance Criteria
- The system needs to format the car ID for database lookup → the GCCCARFM utility is called to format the car ID into standardized format
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_FormatCarIDUsingGCCCARFMUtility(["Start Step"])
E_FormatCarIDUsingGCCCARFMUtility(["End Step"])
N_FormatCarIDUsingGCCCARFMUtility_Node0{"The system needs to format the car
ID for database lookup"}:::decision N_FormatCarIDUsingGCCCARFMUtility_Node0_action["The GCCCARFM utility is called to
format the car ID into standardized
format"]:::main N_FormatCarIDUsingGCCCARFMUtility_Node0 -- Yes --> N_FormatCarIDUsingGCCCARFMUtility_Node0_action N_FormatCarIDUsingGCCCARFMUtility_Node0_action --> E_FormatCarIDUsingGCCCARFMUtility S_FormatCarIDUsingGCCCARFMUtility --> N_FormatCarIDUsingGCCCARFMUtility_Node0 N_FormatCarIDUsingGCCCARFMUtility_Node0 -- No --> E_FormatCarIDUsingGCCCARFMUtility
ID for database lookup"}:::decision N_FormatCarIDUsingGCCCARFMUtility_Node0_action["The GCCCARFM utility is called to
format the car ID into standardized
format"]:::main N_FormatCarIDUsingGCCCARFMUtility_Node0 -- Yes --> N_FormatCarIDUsingGCCCARFMUtility_Node0_action N_FormatCarIDUsingGCCCARFMUtility_Node0_action --> E_FormatCarIDUsingGCCCARFMUtility S_FormatCarIDUsingGCCCARFMUtility --> N_FormatCarIDUsingGCCCARFMUtility_Node0 N_FormatCarIDUsingGCCCARFMUtility_Node0 -- No --> E_FormatCarIDUsingGCCCARFMUtility
File: GCX016.cbl
GIVEN:
Car initial and car number have been extracted from equipment data
WHEN:
The system needs to format the car ID for database lookup
THEN:
The GCCCARFM utility is called to format the car ID into standardized format
β Consolidated Acceptance Criteria
- The system needs to search cargo records by car index → the car index search key is built using the car ID as the primary search criterion
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_BuildCarIndexSearchKey(["Start Step"])
E_BuildCarIndexSearchKey(["End Step"])
N_BuildCarIndexSearchKey_Node0{"The system needs to search cargo
records by car index"}:::decision N_BuildCarIndexSearchKey_Node0_action["The car index search key is built
using the car ID as the primary
search criterion"]:::main N_BuildCarIndexSearchKey_Node0 -- Yes --> N_BuildCarIndexSearchKey_Node0_action N_BuildCarIndexSearchKey_Node0_action --> E_BuildCarIndexSearchKey S_BuildCarIndexSearchKey --> N_BuildCarIndexSearchKey_Node0 N_BuildCarIndexSearchKey_Node0 -- No --> E_BuildCarIndexSearchKey
records by car index"}:::decision N_BuildCarIndexSearchKey_Node0_action["The car index search key is built
using the car ID as the primary
search criterion"]:::main N_BuildCarIndexSearchKey_Node0 -- Yes --> N_BuildCarIndexSearchKey_Node0_action N_BuildCarIndexSearchKey_Node0_action --> E_BuildCarIndexSearchKey S_BuildCarIndexSearchKey --> N_BuildCarIndexSearchKey_Node0 N_BuildCarIndexSearchKey_Node0 -- No --> E_BuildCarIndexSearchKey
File: GCX016.cbl
GIVEN:
A valid car ID has been confirmed
WHEN:
The system needs to search cargo records by car index
THEN:
The car index search key is built using the car ID as the primary search criterion
β Consolidated Acceptance Criteria
- The system searches the cargo database by car index → the system queries the GCCC-CARGO-ROOT database using the car ID index to find matching cargo records
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SearchCargoDatabasebyCarIndex(["Start Step"])
E_SearchCargoDatabasebyCarIndex(["End Step"])
N_SearchCargoDatabasebyCarIndex_Node0{"The system searches the cargo
database by car index"}:::decision N_SearchCargoDatabasebyCarIndex_Node0_action["The system queries the
GCCC-CARGO-ROOT database using the
car ID index to find matching cargo
records"]:::main N_SearchCargoDatabasebyCarIndex_Node0 -- Yes --> N_SearchCargoDatabasebyCarIndex_Node0_action N_SearchCargoDatabasebyCarIndex_Node0_action --> E_SearchCargoDatabasebyCarIndex S_SearchCargoDatabasebyCarIndex --> N_SearchCargoDatabasebyCarIndex_Node0 N_SearchCargoDatabasebyCarIndex_Node0 -- No --> E_SearchCargoDatabasebyCarIndex
database by car index"}:::decision N_SearchCargoDatabasebyCarIndex_Node0_action["The system queries the
GCCC-CARGO-ROOT database using the
car ID index to find matching cargo
records"]:::main N_SearchCargoDatabasebyCarIndex_Node0 -- Yes --> N_SearchCargoDatabasebyCarIndex_Node0_action N_SearchCargoDatabasebyCarIndex_Node0_action --> E_SearchCargoDatabasebyCarIndex S_SearchCargoDatabasebyCarIndex --> N_SearchCargoDatabasebyCarIndex_Node0 N_SearchCargoDatabasebyCarIndex_Node0 -- No --> E_SearchCargoDatabasebyCarIndex
File: GCX016.cbl
GIVEN:
A car index search key has been constructed
WHEN:
The system searches the cargo database by car index
THEN:
The system queries the GCCC-CARGO-ROOT database using the car ID index to find matching cargo records
β Consolidated Acceptance Criteria
- The system attempts partial US-CCN key matching → the system searches for cargo records using partial US-CCN key components combined with car ID information
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AttemptPartialUSCCNKeyMatching(["Start Step"])
E_AttemptPartialUSCCNKeyMatching(["End Step"])
N_AttemptPartialUSCCNKeyMatching_Node0{"The system attempts partial US-CCN
key matching"}:::decision N_AttemptPartialUSCCNKeyMatching_Node0_action["The system searches for cargo
records using partial US-CCN key
components combined with car ID
information"]:::main N_AttemptPartialUSCCNKeyMatching_Node0 -- Yes --> N_AttemptPartialUSCCNKeyMatching_Node0_action N_AttemptPartialUSCCNKeyMatching_Node0_action --> E_AttemptPartialUSCCNKeyMatching S_AttemptPartialUSCCNKeyMatching --> N_AttemptPartialUSCCNKeyMatching_Node0 N_AttemptPartialUSCCNKeyMatching_Node0 -- No --> E_AttemptPartialUSCCNKeyMatching
key matching"}:::decision N_AttemptPartialUSCCNKeyMatching_Node0_action["The system searches for cargo
records using partial US-CCN key
components combined with car ID
information"]:::main N_AttemptPartialUSCCNKeyMatching_Node0 -- Yes --> N_AttemptPartialUSCCNKeyMatching_Node0_action N_AttemptPartialUSCCNKeyMatching_Node0_action --> E_AttemptPartialUSCCNKeyMatching S_AttemptPartialUSCCNKeyMatching --> N_AttemptPartialUSCCNKeyMatching_Node0 N_AttemptPartialUSCCNKeyMatching_Node0 -- No --> E_AttemptPartialUSCCNKeyMatching
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
The exact car ID match did not yield a valid cargo record
WHEN:
The system attempts partial US-CCN key matching
THEN:
The system searches for cargo records using partial US-CCN key components combined with car ID information
β Consolidated Acceptance Criteria
- If the alternative match results → if an alternative match is found, return the matched cargo record; if no match is found, log search results and return no cargo found status
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AlternativeMatchFound(["Start Step"])
E_AlternativeMatchFound(["End Step"])
N_AlternativeMatchFound_Node0{"The system evaluates the
alternative match results"}:::decision N_AlternativeMatchFound_Node0_action["If an alternative match is found,
return the matched cargo record if
no match is found, log search
results and return no cargo found
status"]:::main N_AlternativeMatchFound_Node0 -- Yes --> N_AlternativeMatchFound_Node0_action N_AlternativeMatchFound_Node0_action --> E_AlternativeMatchFound S_AlternativeMatchFound --> N_AlternativeMatchFound_Node0 N_AlternativeMatchFound_Node0 -- No --> E_AlternativeMatchFound
alternative match results"}:::decision N_AlternativeMatchFound_Node0_action["If an alternative match is found,
return the matched cargo record if
no match is found, log search
results and return no cargo found
status"]:::main N_AlternativeMatchFound_Node0 -- Yes --> N_AlternativeMatchFound_Node0_action N_AlternativeMatchFound_Node0_action --> E_AlternativeMatchFound S_AlternativeMatchFound --> N_AlternativeMatchFound_Node0 N_AlternativeMatchFound_Node0 -- No --> E_AlternativeMatchFound
File: GCX016.cbl
GIVEN:
A broader search without US-CCN has been performed
WHEN:
The system evaluates the alternative match results
THEN:
- If an alternative match is found, return the matched cargo record; if no match is found, log search results
- Return no cargo found status
β Consolidated Acceptance Criteria
- The system logs the search results → the search attempts and results are recorded for audit purposes before returning no cargo found status
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogCarIDSearchResults(["Start Step"])
E_LogCarIDSearchResults(["End Step"])
N_LogCarIDSearchResults_Node0{"The system logs the search results"}:::decision
N_LogCarIDSearchResults_Node0_action["The search attempts and results are
recorded for audit purposes before
returning no cargo found status"]:::main N_LogCarIDSearchResults_Node0 -- Yes --> N_LogCarIDSearchResults_Node0_action N_LogCarIDSearchResults_Node0_action --> E_LogCarIDSearchResults S_LogCarIDSearchResults --> N_LogCarIDSearchResults_Node0 N_LogCarIDSearchResults_Node0 -- No --> E_LogCarIDSearchResults
recorded for audit purposes before
returning no cargo found status"]:::main N_LogCarIDSearchResults_Node0 -- Yes --> N_LogCarIDSearchResults_Node0_action N_LogCarIDSearchResults_Node0_action --> E_LogCarIDSearchResults S_LogCarIDSearchResults --> N_LogCarIDSearchResults_Node0 N_LogCarIDSearchResults_Node0 -- No --> E_LogCarIDSearchResults
File: GCX016.cbl
GIVEN:
All car ID search methods have been exhausted without finding valid cargo
WHEN:
The system logs the search results
THEN:
- The search attempts
- Results are recorded for audit purposes before returning no cargo found status
β Consolidated Acceptance Criteria
- The system completes the search process → a no cargo found status is returned to indicate that cargo lookup by car ID was unsuccessful
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ReturnNoCargoFoundStatus(["Start Step"])
E_ReturnNoCargoFoundStatus(["End Step"])
N_ReturnNoCargoFoundStatus_Node0{"The system completes the search
process"}:::decision N_ReturnNoCargoFoundStatus_Node0_action["A no cargo found status is returned
to indicate that cargo lookup by car
ID was unsuccessful"]:::main N_ReturnNoCargoFoundStatus_Node0 -- Yes --> N_ReturnNoCargoFoundStatus_Node0_action N_ReturnNoCargoFoundStatus_Node0_action --> E_ReturnNoCargoFoundStatus S_ReturnNoCargoFoundStatus --> N_ReturnNoCargoFoundStatus_Node0 N_ReturnNoCargoFoundStatus_Node0 -- No --> E_ReturnNoCargoFoundStatus
process"}:::decision N_ReturnNoCargoFoundStatus_Node0_action["A no cargo found status is returned
to indicate that cargo lookup by car
ID was unsuccessful"]:::main N_ReturnNoCargoFoundStatus_Node0 -- Yes --> N_ReturnNoCargoFoundStatus_Node0_action N_ReturnNoCargoFoundStatus_Node0_action --> E_ReturnNoCargoFoundStatus S_ReturnNoCargoFoundStatus --> N_ReturnNoCargoFoundStatus_Node0 N_ReturnNoCargoFoundStatus_Node0 -- No --> E_ReturnNoCargoFoundStatus
File: GCX016.cbl
GIVEN:
All car ID search methods have failed to locate valid cargo records
WHEN:
The system completes the search process
THEN:
A no cargo found status is returned to indicate that cargo lookup by car ID was unsuccessful
β Consolidated Acceptance Criteria
- The system completes the successful search → the matched cargo record is returned with appropriate status for continued processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ReturnMatchedCargoRecord(["Start Step"])
E_ReturnMatchedCargoRecord(["End Step"])
N_ReturnMatchedCargoRecord_Node0{"The system completes the successful
search"}:::decision N_ReturnMatchedCargoRecord_Node0_action["The matched cargo record is
returned with appropriate status for
continued processing"]:::main N_ReturnMatchedCargoRecord_Node0 -- Yes --> N_ReturnMatchedCargoRecord_Node0_action N_ReturnMatchedCargoRecord_Node0_action --> E_ReturnMatchedCargoRecord S_ReturnMatchedCargoRecord --> N_ReturnMatchedCargoRecord_Node0 N_ReturnMatchedCargoRecord_Node0 -- No --> E_ReturnMatchedCargoRecord
search"}:::decision N_ReturnMatchedCargoRecord_Node0_action["The matched cargo record is
returned with appropriate status for
continued processing"]:::main N_ReturnMatchedCargoRecord_Node0 -- Yes --> N_ReturnMatchedCargoRecord_Node0_action N_ReturnMatchedCargoRecord_Node0_action --> E_ReturnMatchedCargoRecord S_ReturnMatchedCargoRecord --> N_ReturnMatchedCargoRecord_Node0 N_ReturnMatchedCargoRecord_Node0 -- No --> E_ReturnMatchedCargoRecord
File: GCX016.cbl
GIVEN:
A valid cargo record has been found through any of the car ID search methods
WHEN:
The system completes the successful search
THEN:
The matched cargo record is returned with appropriate status for continued processing
β Consolidated Acceptance Criteria
- The system proceeds with cargo processing → the found cargo record is used for subsequent business operations and status updates
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ProceedwithFoundCargo(["Start Step"])
E_ProceedwithFoundCargo(["End Step"])
N_ProceedwithFoundCargo_Node0{"The system proceeds with cargo
processing"}:::decision N_ProceedwithFoundCargo_Node0_action["The found cargo record is used for
subsequent business operations and
status updates"]:::main N_ProceedwithFoundCargo_Node0 -- Yes --> N_ProceedwithFoundCargo_Node0_action N_ProceedwithFoundCargo_Node0_action --> E_ProceedwithFoundCargo S_ProceedwithFoundCargo --> N_ProceedwithFoundCargo_Node0 N_ProceedwithFoundCargo_Node0 -- No --> E_ProceedwithFoundCargo
processing"}:::decision N_ProceedwithFoundCargo_Node0_action["The found cargo record is used for
subsequent business operations and
status updates"]:::main N_ProceedwithFoundCargo_Node0 -- Yes --> N_ProceedwithFoundCargo_Node0_action N_ProceedwithFoundCargo_Node0_action --> E_ProceedwithFoundCargo S_ProceedwithFoundCargo --> N_ProceedwithFoundCargo_Node0 N_ProceedwithFoundCargo_Node0 -- No --> E_ProceedwithFoundCargo
File: GCX016.cbl
GIVEN:
A valid cargo record has been successfully returned from car ID search
WHEN:
The system proceeds with cargo processing
THEN:
- The found cargo record is used for subsequent business operations
- Status updates
β Consolidated Acceptance Criteria
- The system searches for cargo using exact match criteria → if an exact match is found, the corresponding cargo record is returned
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AttemptExactMatchwithFullUSCCNKey(["Start Step"])
E_AttemptExactMatchwithFullUSCCNKey(["End Step"])
N_AttemptExactMatchwithFullUSCCNKey_Node0{"The system searches for cargo using
exact match criteria"}:::decision N_AttemptExactMatchwithFullUSCCNKey_Node0_action["If an exact match is found, the
corresponding cargo record is
returned"]:::main N_AttemptExactMatchwithFullUSCCNKey_Node0 -- Yes --> N_AttemptExactMatchwithFullUSCCNKey_Node0_action N_AttemptExactMatchwithFullUSCCNKey_Node0_action --> E_AttemptExactMatchwithFullUSCCNKey S_AttemptExactMatchwithFullUSCCNKey --> N_AttemptExactMatchwithFullUSCCNKey_Node0 N_AttemptExactMatchwithFullUSCCNKey_Node0 -- No --> E_AttemptExactMatchwithFullUSCCNKey
exact match criteria"}:::decision N_AttemptExactMatchwithFullUSCCNKey_Node0_action["If an exact match is found, the
corresponding cargo record is
returned"]:::main N_AttemptExactMatchwithFullUSCCNKey_Node0 -- Yes --> N_AttemptExactMatchwithFullUSCCNKey_Node0_action N_AttemptExactMatchwithFullUSCCNKey_Node0_action --> E_AttemptExactMatchwithFullUSCCNKey S_AttemptExactMatchwithFullUSCCNKey --> N_AttemptExactMatchwithFullUSCCNKey_Node0 N_AttemptExactMatchwithFullUSCCNKey_Node0 -- No --> E_AttemptExactMatchwithFullUSCCNKey
File: GCX016.cbl
GIVEN:
A formatted car ID and complete US-CCN key are available
WHEN:
The system searches for cargo using exact match criteria
THEN:
If an exact match is found, the corresponding cargo record is returned
β Consolidated Acceptance Criteria
- The system performs partial matching without US-CCN constraints → the system searches cargo database using car ID index with relaxed criteria
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AttemptPartialMatchwithoutUSCCNConstraints(["Start Step"])
E_AttemptPartialMatchwithoutUSCCNConstraints(["End Step"])
N_AttemptPartialMatchwithoutUSCCNConstraints_Node0{"The system performs partial
matching without US-CCN constraints"}:::decision N_AttemptPartialMatchwithoutUSCCNConstraints_Node0_action["The system searches cargo database
using car ID index with relaxed
criteria"]:::main N_AttemptPartialMatchwithoutUSCCNConstraints_Node0 -- Yes --> N_AttemptPartialMatchwithoutUSCCNConstraints_Node0_action N_AttemptPartialMatchwithoutUSCCNConstraints_Node0_action --> E_AttemptPartialMatchwithoutUSCCNConstraints S_AttemptPartialMatchwithoutUSCCNConstraints --> N_AttemptPartialMatchwithoutUSCCNConstraints_Node0 N_AttemptPartialMatchwithoutUSCCNConstraints_Node0 -- No --> E_AttemptPartialMatchwithoutUSCCNConstraints
matching without US-CCN constraints"}:::decision N_AttemptPartialMatchwithoutUSCCNConstraints_Node0_action["The system searches cargo database
using car ID index with relaxed
criteria"]:::main N_AttemptPartialMatchwithoutUSCCNConstraints_Node0 -- Yes --> N_AttemptPartialMatchwithoutUSCCNConstraints_Node0_action N_AttemptPartialMatchwithoutUSCCNConstraints_Node0_action --> E_AttemptPartialMatchwithoutUSCCNConstraints S_AttemptPartialMatchwithoutUSCCNConstraints --> N_AttemptPartialMatchwithoutUSCCNConstraints_Node0 N_AttemptPartialMatchwithoutUSCCNConstraints_Node0 -- No --> E_AttemptPartialMatchwithoutUSCCNConstraints
File: GCX016.cbl
GIVEN:
No exact match was found using full US-CCN key
WHEN:
The system performs partial matching without US-CCN constraints
THEN:
The system searches cargo database using car ID index with relaxed criteria
β Consolidated Acceptance Criteria
- The system searches the cargo database using car ID index → potential cargo matches are identified based on car ID indexing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SearchCargoDatabasebyCarIDIndex(["Start Step"])
E_SearchCargoDatabasebyCarIDIndex(["End Step"])
N_SearchCargoDatabasebyCarIDIndex_Node0{"The system searches the cargo
database using car ID index"}:::decision N_SearchCargoDatabasebyCarIDIndex_Node0_action["Potential cargo matches are
identified based on car ID indexing"]:::main N_SearchCargoDatabasebyCarIDIndex_Node0 -- Yes --> N_SearchCargoDatabasebyCarIDIndex_Node0_action N_SearchCargoDatabasebyCarIDIndex_Node0_action --> E_SearchCargoDatabasebyCarIDIndex S_SearchCargoDatabasebyCarIDIndex --> N_SearchCargoDatabasebyCarIDIndex_Node0 N_SearchCargoDatabasebyCarIDIndex_Node0 -- No --> E_SearchCargoDatabasebyCarIDIndex
database using car ID index"}:::decision N_SearchCargoDatabasebyCarIDIndex_Node0_action["Potential cargo matches are
identified based on car ID indexing"]:::main N_SearchCargoDatabasebyCarIDIndex_Node0 -- Yes --> N_SearchCargoDatabasebyCarIDIndex_Node0_action N_SearchCargoDatabasebyCarIDIndex_Node0_action --> E_SearchCargoDatabasebyCarIDIndex S_SearchCargoDatabasebyCarIDIndex --> N_SearchCargoDatabasebyCarIDIndex_Node0 N_SearchCargoDatabasebyCarIDIndex_Node0 -- No --> E_SearchCargoDatabasebyCarIDIndex
File: GCX016.cbl
GIVEN:
Partial matching is required due to exact match failure
WHEN:
The system searches the cargo database using car ID index
THEN:
Potential cargo matches are identified based on car ID indexing
β Consolidated Acceptance Criteria
- The system validates the matched cargo record → if the cargo record is valid, it is accepted as a match, otherwise it is rejected
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ValidateMatchedCargoRecord(["Start Step"])
E_ValidateMatchedCargoRecord(["End Step"])
N_ValidateMatchedCargoRecord_Node0{"The system validates the matched
cargo record"}:::decision N_ValidateMatchedCargoRecord_Node0_action["If the cargo record is valid, it is
accepted as a match, otherwise it is
rejected"]:::exclusion N_ValidateMatchedCargoRecord_Node0 -- Yes -->|Alternative| N_ValidateMatchedCargoRecord_Node0_action N_ValidateMatchedCargoRecord_Node0_action --> E_ValidateMatchedCargoRecord S_ValidateMatchedCargoRecord --> N_ValidateMatchedCargoRecord_Node0 N_ValidateMatchedCargoRecord_Node0 -- No --> E_ValidateMatchedCargoRecord
cargo record"}:::decision N_ValidateMatchedCargoRecord_Node0_action["If the cargo record is valid, it is
accepted as a match, otherwise it is
rejected"]:::exclusion N_ValidateMatchedCargoRecord_Node0 -- Yes -->|Alternative| N_ValidateMatchedCargoRecord_Node0_action N_ValidateMatchedCargoRecord_Node0_action --> E_ValidateMatchedCargoRecord S_ValidateMatchedCargoRecord --> N_ValidateMatchedCargoRecord_Node0 N_ValidateMatchedCargoRecord_Node0 -- No --> E_ValidateMatchedCargoRecord
File: GCX016.cbl
GIVEN:
A partial match has been found in the cargo database
WHEN:
The system validates the matched cargo record
THEN:
If the cargo record is valid, it is accepted as a match, otherwise it is rejected
β Consolidated Acceptance Criteria
- The system logs the car ID match failure → the failure is recorded with relevant details for audit trail
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogCarIDMatchFailure(["Start Step"])
E_LogCarIDMatchFailure(["End Step"])
N_LogCarIDMatchFailure_Node0{"The system logs the car ID match
failure"}:::decision N_LogCarIDMatchFailure_Node0_action["The failure is recorded with
relevant details for audit trail"]:::main N_LogCarIDMatchFailure_Node0 -- Yes --> N_LogCarIDMatchFailure_Node0_action N_LogCarIDMatchFailure_Node0_action --> E_LogCarIDMatchFailure S_LogCarIDMatchFailure --> N_LogCarIDMatchFailure_Node0 N_LogCarIDMatchFailure_Node0 -- No --> E_LogCarIDMatchFailure
failure"}:::decision N_LogCarIDMatchFailure_Node0_action["The failure is recorded with
relevant details for audit trail"]:::main N_LogCarIDMatchFailure_Node0 -- Yes --> N_LogCarIDMatchFailure_Node0_action N_LogCarIDMatchFailure_Node0_action --> E_LogCarIDMatchFailure S_LogCarIDMatchFailure --> N_LogCarIDMatchFailure_Node0 N_LogCarIDMatchFailure_Node0 -- No --> E_LogCarIDMatchFailure
File: GCX016.cbl
GIVEN:
No valid cargo match was found using either exact or partial matching
WHEN:
The system logs the car ID match failure
THEN:
The failure is recorded with relevant details for audit trail
β Consolidated Acceptance Criteria
- The system encounters an invalid car ID format → the invalid format error is logged for data quality monitoring
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogInvalidCarIDFormatError(["Start Step"])
E_LogInvalidCarIDFormatError(["End Step"])
N_LogInvalidCarIDFormatError_Node0{"The system encounters an invalid
car ID format"}:::decision N_LogInvalidCarIDFormatError_Node0_action["The invalid format error is logged
for data quality monitoring"]:::exclusion N_LogInvalidCarIDFormatError_Node0 -- Yes -->|Alternative| N_LogInvalidCarIDFormatError_Node0_action N_LogInvalidCarIDFormatError_Node0_action --> E_LogInvalidCarIDFormatError S_LogInvalidCarIDFormatError --> N_LogInvalidCarIDFormatError_Node0 N_LogInvalidCarIDFormatError_Node0 -- No --> E_LogInvalidCarIDFormatError
car ID format"}:::decision N_LogInvalidCarIDFormatError_Node0_action["The invalid format error is logged
for data quality monitoring"]:::exclusion N_LogInvalidCarIDFormatError_Node0 -- Yes -->|Alternative| N_LogInvalidCarIDFormatError_Node0_action N_LogInvalidCarIDFormatError_Node0_action --> E_LogInvalidCarIDFormatError S_LogInvalidCarIDFormatError --> N_LogInvalidCarIDFormatError_Node0 N_LogInvalidCarIDFormatError_Node0 -- No --> E_LogInvalidCarIDFormatError
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
A car ID fails format validation
WHEN:
The system encounters an invalid car ID format
THEN:
The invalid format error is logged for data quality monitoring
β Consolidated Acceptance Criteria
- The system completes the matching process without finding valid cargo → a no match found status is returned to the calling process
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ReturnNoMatchFoundStatus(["Start Step"])
E_ReturnNoMatchFoundStatus(["End Step"])
N_ReturnNoMatchFoundStatus_Node0{"The system completes the matching
process without finding valid cargo"}:::decision N_ReturnNoMatchFoundStatus_Node0_action["A no match found status is returned
to the calling process"]:::main N_ReturnNoMatchFoundStatus_Node0 -- Yes --> N_ReturnNoMatchFoundStatus_Node0_action N_ReturnNoMatchFoundStatus_Node0_action --> E_ReturnNoMatchFoundStatus S_ReturnNoMatchFoundStatus --> N_ReturnNoMatchFoundStatus_Node0 N_ReturnNoMatchFoundStatus_Node0 -- No --> E_ReturnNoMatchFoundStatus
process without finding valid cargo"}:::decision N_ReturnNoMatchFoundStatus_Node0_action["A no match found status is returned
to the calling process"]:::main N_ReturnNoMatchFoundStatus_Node0 -- Yes --> N_ReturnNoMatchFoundStatus_Node0_action N_ReturnNoMatchFoundStatus_Node0_action --> E_ReturnNoMatchFoundStatus S_ReturnNoMatchFoundStatus --> N_ReturnNoMatchFoundStatus_Node0 N_ReturnNoMatchFoundStatus_Node0 -- No --> E_ReturnNoMatchFoundStatus
File: GCX016.cbl
GIVEN:
All matching attempts have failed or car ID format is invalid
WHEN:
The system completes the matching process without finding valid cargo
THEN:
A no match found status is returned to the calling process
β Consolidated Acceptance Criteria
- A system change is detected that requires US-CCN key updates → system initiates US-CCN renumbering process
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SystemChangeDetectedRequiringUSCCNUpdate(["Start Step"])
E_SystemChangeDetectedRequiringUSCCNUpdate(["End Step"])
N_SystemChangeDetectedRequiringUSCCNUpdate_Node0{"A system change is detected that
requires US-CCN key updates"}:::decision N_SystemChangeDetectedRequiringUSCCNUpdate_Node0_action["System initiates US-CCN renumbering
process"]:::main N_SystemChangeDetectedRequiringUSCCNUpdate_Node0 -- Yes --> N_SystemChangeDetectedRequiringUSCCNUpdate_Node0_action N_SystemChangeDetectedRequiringUSCCNUpdate_Node0_action --> E_SystemChangeDetectedRequiringUSCCNUpdate S_SystemChangeDetectedRequiringUSCCNUpdate --> N_SystemChangeDetectedRequiringUSCCNUpdate_Node0 N_SystemChangeDetectedRequiringUSCCNUpdate_Node0 -- No --> E_SystemChangeDetectedRequiringUSCCNUpdate
requires US-CCN key updates"}:::decision N_SystemChangeDetectedRequiringUSCCNUpdate_Node0_action["System initiates US-CCN renumbering
process"]:::main N_SystemChangeDetectedRequiringUSCCNUpdate_Node0 -- Yes --> N_SystemChangeDetectedRequiringUSCCNUpdate_Node0_action N_SystemChangeDetectedRequiringUSCCNUpdate_Node0_action --> E_SystemChangeDetectedRequiringUSCCNUpdate S_SystemChangeDetectedRequiringUSCCNUpdate --> N_SystemChangeDetectedRequiringUSCCNUpdate_Node0 N_SystemChangeDetectedRequiringUSCCNUpdate_Node0 -- No --> E_SystemChangeDetectedRequiringUSCCNUpdate
File: GCX016.cbl
GIVEN:
System is monitoring for changes that impact US-CCN key structure
WHEN:
A system change is detected that requires US-CCN key updates
THEN:
System initiates US-CCN renumbering process
β Consolidated Acceptance Criteria
- System searches for affected cargo records → all cargo records requiring US-CCN key changes are identified and flagged for processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IdentifyAffectedCargoRecords(["Start Step"])
E_IdentifyAffectedCargoRecords(["End Step"])
N_IdentifyAffectedCargoRecords_Node0{"System searches for affected cargo
records"}:::decision N_IdentifyAffectedCargoRecords_Node0_action["All cargo records requiring US-CCN
key changes are identified and
flagged for processing"]:::main N_IdentifyAffectedCargoRecords_Node0 -- Yes --> N_IdentifyAffectedCargoRecords_Node0_action N_IdentifyAffectedCargoRecords_Node0_action --> E_IdentifyAffectedCargoRecords S_IdentifyAffectedCargoRecords --> N_IdentifyAffectedCargoRecords_Node0 N_IdentifyAffectedCargoRecords_Node0 -- No --> E_IdentifyAffectedCargoRecords
records"}:::decision N_IdentifyAffectedCargoRecords_Node0_action["All cargo records requiring US-CCN
key changes are identified and
flagged for processing"]:::main N_IdentifyAffectedCargoRecords_Node0 -- Yes --> N_IdentifyAffectedCargoRecords_Node0_action N_IdentifyAffectedCargoRecords_Node0_action --> E_IdentifyAffectedCargoRecords S_IdentifyAffectedCargoRecords --> N_IdentifyAffectedCargoRecords_Node0 N_IdentifyAffectedCargoRecords_Node0 -- No --> E_IdentifyAffectedCargoRecords
File: GCX016.cbl
GIVEN:
System change has been detected requiring US-CCN updates
WHEN:
System searches for affected cargo records
THEN:
- All cargo records requiring us-ccn key changes are identified
- Flagged for processing
β Consolidated Acceptance Criteria
- System retrieves current US-CCN key structure from cargo records → current key structure is available for renumbering process
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RetrieveCurrentUSCCNKeyStructure(["Start Step"])
E_RetrieveCurrentUSCCNKeyStructure(["End Step"])
N_RetrieveCurrentUSCCNKeyStructure_Node0{"System retrieves current US-CCN key
structure from cargo records"}:::decision N_RetrieveCurrentUSCCNKeyStructure_Node0_action["Current key structure is available
for renumbering process"]:::main N_RetrieveCurrentUSCCNKeyStructure_Node0 -- Yes --> N_RetrieveCurrentUSCCNKeyStructure_Node0_action N_RetrieveCurrentUSCCNKeyStructure_Node0_action --> E_RetrieveCurrentUSCCNKeyStructure S_RetrieveCurrentUSCCNKeyStructure --> N_RetrieveCurrentUSCCNKeyStructure_Node0 N_RetrieveCurrentUSCCNKeyStructure_Node0 -- No --> E_RetrieveCurrentUSCCNKeyStructure
structure from cargo records"}:::decision N_RetrieveCurrentUSCCNKeyStructure_Node0_action["Current key structure is available
for renumbering process"]:::main N_RetrieveCurrentUSCCNKeyStructure_Node0 -- Yes --> N_RetrieveCurrentUSCCNKeyStructure_Node0_action N_RetrieveCurrentUSCCNKeyStructure_Node0_action --> E_RetrieveCurrentUSCCNKeyStructure S_RetrieveCurrentUSCCNKeyStructure --> N_RetrieveCurrentUSCCNKeyStructure_Node0 N_RetrieveCurrentUSCCNKeyStructure_Node0 -- No --> E_RetrieveCurrentUSCCNKeyStructure
File: GCX016.cbl
GIVEN:
Affected cargo records have been identified
WHEN:
System retrieves current US-CCN key structure from cargo records
THEN:
Current key structure is available for renumbering process
β Consolidated Acceptance Criteria
- System generates new US-CCN key sequence → new key sequence is created following system numbering standards
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GenerateNewUSCCNKeySequence(["Start Step"])
E_GenerateNewUSCCNKeySequence(["End Step"])
N_GenerateNewUSCCNKeySequence_Node0{"System generates new US-CCN key
sequence"}:::decision N_GenerateNewUSCCNKeySequence_Node0_action["New key sequence is created
following system numbering standards"]:::main N_GenerateNewUSCCNKeySequence_Node0 -- Yes --> N_GenerateNewUSCCNKeySequence_Node0_action N_GenerateNewUSCCNKeySequence_Node0_action --> E_GenerateNewUSCCNKeySequence S_GenerateNewUSCCNKeySequence --> N_GenerateNewUSCCNKeySequence_Node0 N_GenerateNewUSCCNKeySequence_Node0 -- No --> E_GenerateNewUSCCNKeySequence
sequence"}:::decision N_GenerateNewUSCCNKeySequence_Node0_action["New key sequence is created
following system numbering standards"]:::main N_GenerateNewUSCCNKeySequence_Node0 -- Yes --> N_GenerateNewUSCCNKeySequence_Node0_action N_GenerateNewUSCCNKeySequence_Node0_action --> E_GenerateNewUSCCNKeySequence S_GenerateNewUSCCNKeySequence --> N_GenerateNewUSCCNKeySequence_Node0 N_GenerateNewUSCCNKeySequence_Node0 -- No --> E_GenerateNewUSCCNKeySequence
File: GCX016.cbl
GIVEN:
Current US-CCN key structure has been retrieved
WHEN:
System generates new US-CCN key sequence
THEN:
New key sequence is created following system numbering standards
β Consolidated Acceptance Criteria
- System validates the new key format against business rules → key format is either approved for use or rejected for regeneration
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ValidateNewKeyFormat(["Start Step"])
E_ValidateNewKeyFormat(["End Step"])
N_ValidateNewKeyFormat_Node0{"System validates the new key format
against business rules"}:::decision N_ValidateNewKeyFormat_Node0_action["Key format is either approved for
use or rejected for regeneration"]:::exclusion N_ValidateNewKeyFormat_Node0 -- Yes -->|Alternative| N_ValidateNewKeyFormat_Node0_action N_ValidateNewKeyFormat_Node0_action --> E_ValidateNewKeyFormat S_ValidateNewKeyFormat --> N_ValidateNewKeyFormat_Node0 N_ValidateNewKeyFormat_Node0 -- No --> E_ValidateNewKeyFormat
against business rules"}:::decision N_ValidateNewKeyFormat_Node0_action["Key format is either approved for
use or rejected for regeneration"]:::exclusion N_ValidateNewKeyFormat_Node0 -- Yes -->|Alternative| N_ValidateNewKeyFormat_Node0_action N_ValidateNewKeyFormat_Node0_action --> E_ValidateNewKeyFormat S_ValidateNewKeyFormat --> N_ValidateNewKeyFormat_Node0 N_ValidateNewKeyFormat_Node0 -- No --> E_ValidateNewKeyFormat
File: GCX016.cbl
GIVEN:
New US-CCN key sequence has been generated
WHEN:
System validates the new key format against business rules
THEN:
Key format is either approved for use or rejected for regeneration
β Consolidated Acceptance Criteria
- System updates cargo record with new US-CCN key → cargo record contains updated US-CCN key and maintains data integrity
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UpdateCargoRecordwithNewUSCCN(["Start Step"])
E_UpdateCargoRecordwithNewUSCCN(["End Step"])
N_UpdateCargoRecordwithNewUSCCN_Node0{"System updates cargo record with
new US-CCN key"}:::decision N_UpdateCargoRecordwithNewUSCCN_Node0_action["Cargo record contains updated
US-CCN key and maintains data
integrity"]:::main N_UpdateCargoRecordwithNewUSCCN_Node0 -- Yes --> N_UpdateCargoRecordwithNewUSCCN_Node0_action N_UpdateCargoRecordwithNewUSCCN_Node0_action --> E_UpdateCargoRecordwithNewUSCCN S_UpdateCargoRecordwithNewUSCCN --> N_UpdateCargoRecordwithNewUSCCN_Node0 N_UpdateCargoRecordwithNewUSCCN_Node0 -- No --> E_UpdateCargoRecordwithNewUSCCN
new US-CCN key"}:::decision N_UpdateCargoRecordwithNewUSCCN_Node0_action["Cargo record contains updated
US-CCN key and maintains data
integrity"]:::main N_UpdateCargoRecordwithNewUSCCN_Node0 -- Yes --> N_UpdateCargoRecordwithNewUSCCN_Node0_action N_UpdateCargoRecordwithNewUSCCN_Node0_action --> E_UpdateCargoRecordwithNewUSCCN S_UpdateCargoRecordwithNewUSCCN --> N_UpdateCargoRecordwithNewUSCCN_Node0 N_UpdateCargoRecordwithNewUSCCN_Node0 -- No --> E_UpdateCargoRecordwithNewUSCCN
File: GCX016.cbl
GIVEN:
New US-CCN key format has been validated as correct
WHEN:
System updates cargo record with new US-CCN key
THEN:
- Cargo record contains updated us-ccn key
- Maintains data integrity
β Consolidated Acceptance Criteria
- System updates all related secondary records with new US-CCN key → all secondary records maintain proper referential integrity with updated US-CCN key
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UpdateRelatedSecondaryRecords(["Start Step"])
E_UpdateRelatedSecondaryRecords(["End Step"])
N_UpdateRelatedSecondaryRecords_Node0{"System updates all related
secondary records with new US-CCN
key"}:::decision N_UpdateRelatedSecondaryRecords_Node0_action["All secondary records maintain
proper referential integrity with
updated US-CCN key"]:::main N_UpdateRelatedSecondaryRecords_Node0 -- Yes --> N_UpdateRelatedSecondaryRecords_Node0_action N_UpdateRelatedSecondaryRecords_Node0_action --> E_UpdateRelatedSecondaryRecords S_UpdateRelatedSecondaryRecords --> N_UpdateRelatedSecondaryRecords_Node0 N_UpdateRelatedSecondaryRecords_Node0 -- No --> E_UpdateRelatedSecondaryRecords
secondary records with new US-CCN
key"}:::decision N_UpdateRelatedSecondaryRecords_Node0_action["All secondary records maintain
proper referential integrity with
updated US-CCN key"]:::main N_UpdateRelatedSecondaryRecords_Node0 -- Yes --> N_UpdateRelatedSecondaryRecords_Node0_action N_UpdateRelatedSecondaryRecords_Node0_action --> E_UpdateRelatedSecondaryRecords S_UpdateRelatedSecondaryRecords --> N_UpdateRelatedSecondaryRecords_Node0 N_UpdateRelatedSecondaryRecords_Node0 -- No --> E_UpdateRelatedSecondaryRecords
File: GCX016.cbl
GIVEN:
Cargo record has been updated with new US-CCN key
WHEN:
System updates all related secondary records with new US-CCN key
THEN:
All secondary records maintain proper referential integrity with updated US-CCN key
β Consolidated Acceptance Criteria
- System updates cross-reference tables with new US-CCN key mappings → cross-reference tables reflect updated US-CCN key relationships
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UpdateCrossReferenceTables(["Start Step"])
E_UpdateCrossReferenceTables(["End Step"])
N_UpdateCrossReferenceTables_Node0{"System updates cross-reference
tables with new US-CCN key mappings"}:::decision N_UpdateCrossReferenceTables_Node0_action["Cross-reference tables reflect
updated US-CCN key relationships"]:::main N_UpdateCrossReferenceTables_Node0 -- Yes --> N_UpdateCrossReferenceTables_Node0_action N_UpdateCrossReferenceTables_Node0_action --> E_UpdateCrossReferenceTables S_UpdateCrossReferenceTables --> N_UpdateCrossReferenceTables_Node0 N_UpdateCrossReferenceTables_Node0 -- No --> E_UpdateCrossReferenceTables
tables with new US-CCN key mappings"}:::decision N_UpdateCrossReferenceTables_Node0_action["Cross-reference tables reflect
updated US-CCN key relationships"]:::main N_UpdateCrossReferenceTables_Node0 -- Yes --> N_UpdateCrossReferenceTables_Node0_action N_UpdateCrossReferenceTables_Node0_action --> E_UpdateCrossReferenceTables S_UpdateCrossReferenceTables --> N_UpdateCrossReferenceTables_Node0 N_UpdateCrossReferenceTables_Node0 -- No --> E_UpdateCrossReferenceTables
File: GCX016.cbl
GIVEN:
Related secondary records have been updated
WHEN:
System updates cross-reference tables with new US-CCN key mappings
THEN:
Cross-reference tables reflect updated US-CCN key relationships
β Consolidated Acceptance Criteria
- System verifies uniqueness of new US-CCN keys → system confirms all new US-CCN keys are unique or identifies conflicts
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_VerifyKeyUniqueness(["Start Step"])
E_VerifyKeyUniqueness(["End Step"])
N_VerifyKeyUniqueness_Node0{"System verifies uniqueness of new
US-CCN keys"}:::decision N_VerifyKeyUniqueness_Node0_action["System confirms all new US-CCN keys
are unique or identifies conflicts"]:::main N_VerifyKeyUniqueness_Node0 -- Yes --> N_VerifyKeyUniqueness_Node0_action N_VerifyKeyUniqueness_Node0_action --> E_VerifyKeyUniqueness S_VerifyKeyUniqueness --> N_VerifyKeyUniqueness_Node0 N_VerifyKeyUniqueness_Node0 -- No --> E_VerifyKeyUniqueness
US-CCN keys"}:::decision N_VerifyKeyUniqueness_Node0_action["System confirms all new US-CCN keys
are unique or identifies conflicts"]:::main N_VerifyKeyUniqueness_Node0 -- Yes --> N_VerifyKeyUniqueness_Node0_action N_VerifyKeyUniqueness_Node0_action --> E_VerifyKeyUniqueness S_VerifyKeyUniqueness --> N_VerifyKeyUniqueness_Node0 N_VerifyKeyUniqueness_Node0 -- No --> E_VerifyKeyUniqueness
File: GCX016.cbl
GIVEN:
Cross-reference tables have been updated with new US-CCN keys
WHEN:
System verifies uniqueness of new US-CCN keys
THEN:
System confirms all new US-CCN keys are unique or identifies conflicts
β Consolidated Acceptance Criteria
- System checks for US-CCN key conflicts → system either proceeds with commit or initiates conflict resolution
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_KeyConflictsExist(["Start Step"])
E_KeyConflictsExist(["End Step"])
N_KeyConflictsExist_Node0{"System checks for US-CCN key
conflicts"}:::decision N_KeyConflictsExist_Node0_action["System either proceeds with commit
or initiates conflict resolution"]:::main N_KeyConflictsExist_Node0 -- Yes --> N_KeyConflictsExist_Node0_action N_KeyConflictsExist_Node0_action --> E_KeyConflictsExist S_KeyConflictsExist --> N_KeyConflictsExist_Node0 N_KeyConflictsExist_Node0 -- No --> E_KeyConflictsExist
conflicts"}:::decision N_KeyConflictsExist_Node0_action["System either proceeds with commit
or initiates conflict resolution"]:::main N_KeyConflictsExist_Node0 -- Yes --> N_KeyConflictsExist_Node0_action N_KeyConflictsExist_Node0_action --> E_KeyConflictsExist S_KeyConflictsExist --> N_KeyConflictsExist_Node0 N_KeyConflictsExist_Node0 -- No --> E_KeyConflictsExist
File: GCX016.cbl
GIVEN:
Key uniqueness verification has been completed
WHEN:
System checks for US-CCN key conflicts
THEN:
System either proceeds with commit or initiates conflict resolution
β Consolidated Acceptance Criteria
- System resolves key conflicts by regenerating new key sequences → all key conflicts are resolved and system returns to key generation process
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ResolveKeyConflicts(["Start Step"])
E_ResolveKeyConflicts(["End Step"])
N_ResolveKeyConflicts_Node0{"System resolves key conflicts by
regenerating new key sequences"}:::decision N_ResolveKeyConflicts_Node0_action["All key conflicts are resolved and
system returns to key generation
process"]:::main N_ResolveKeyConflicts_Node0 -- Yes --> N_ResolveKeyConflicts_Node0_action N_ResolveKeyConflicts_Node0_action --> E_ResolveKeyConflicts S_ResolveKeyConflicts --> N_ResolveKeyConflicts_Node0 N_ResolveKeyConflicts_Node0 -- No --> E_ResolveKeyConflicts
regenerating new key sequences"}:::decision N_ResolveKeyConflicts_Node0_action["All key conflicts are resolved and
system returns to key generation
process"]:::main N_ResolveKeyConflicts_Node0 -- Yes --> N_ResolveKeyConflicts_Node0_action N_ResolveKeyConflicts_Node0_action --> E_ResolveKeyConflicts S_ResolveKeyConflicts --> N_ResolveKeyConflicts_Node0 N_ResolveKeyConflicts_Node0 -- No --> E_ResolveKeyConflicts
File: GCX016.cbl
GIVEN:
US-CCN key conflicts have been detected
WHEN:
System resolves key conflicts by regenerating new key sequences
THEN:
- All key conflicts are resolved
- System returns to key generation process
β Consolidated Acceptance Criteria
- System commits all US-CCN key changes → all US-CCN key updates are permanently saved to the database
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CommitUSCCNKeyChanges(["Start Step"])
E_CommitUSCCNKeyChanges(["End Step"])
N_CommitUSCCNKeyChanges_Node0{"System commits all US-CCN key
changes"}:::decision N_CommitUSCCNKeyChanges_Node0_action["All US-CCN key updates are
permanently saved to the database"]:::main N_CommitUSCCNKeyChanges_Node0 -- Yes --> N_CommitUSCCNKeyChanges_Node0_action N_CommitUSCCNKeyChanges_Node0_action --> E_CommitUSCCNKeyChanges S_CommitUSCCNKeyChanges --> N_CommitUSCCNKeyChanges_Node0 N_CommitUSCCNKeyChanges_Node0 -- No --> E_CommitUSCCNKeyChanges
changes"}:::decision N_CommitUSCCNKeyChanges_Node0_action["All US-CCN key updates are
permanently saved to the database"]:::main N_CommitUSCCNKeyChanges_Node0 -- Yes --> N_CommitUSCCNKeyChanges_Node0_action N_CommitUSCCNKeyChanges_Node0_action --> E_CommitUSCCNKeyChanges S_CommitUSCCNKeyChanges --> N_CommitUSCCNKeyChanges_Node0 N_CommitUSCCNKeyChanges_Node0 -- No --> E_CommitUSCCNKeyChanges
File: GCX016.cbl
GIVEN:
No US-CCN key conflicts exist
WHEN:
System commits all US-CCN key changes
THEN:
All US-CCN key updates are permanently saved to the database
β Consolidated Acceptance Criteria
- System logs key renumbering activity → complete audit trail of US-CCN key changes is recorded
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogKeyRenumberingActivity(["Start Step"])
E_LogKeyRenumberingActivity(["End Step"])
N_LogKeyRenumberingActivity_Node0{"System logs key renumbering
activity"}:::decision N_LogKeyRenumberingActivity_Node0_action["Complete audit trail of US-CCN key
changes is recorded"]:::main N_LogKeyRenumberingActivity_Node0 -- Yes --> N_LogKeyRenumberingActivity_Node0_action N_LogKeyRenumberingActivity_Node0_action --> E_LogKeyRenumberingActivity S_LogKeyRenumberingActivity --> N_LogKeyRenumberingActivity_Node0 N_LogKeyRenumberingActivity_Node0 -- No --> E_LogKeyRenumberingActivity
activity"}:::decision N_LogKeyRenumberingActivity_Node0_action["Complete audit trail of US-CCN key
changes is recorded"]:::main N_LogKeyRenumberingActivity_Node0 -- Yes --> N_LogKeyRenumberingActivity_Node0_action N_LogKeyRenumberingActivity_Node0_action --> E_LogKeyRenumberingActivity S_LogKeyRenumberingActivity --> N_LogKeyRenumberingActivity_Node0 N_LogKeyRenumberingActivity_Node0 -- No --> E_LogKeyRenumberingActivity
File: GCX016.cbl
GIVEN:
US-CCN key changes have been committed
WHEN:
System logs key renumbering activity
THEN:
Complete audit trail of US-CCN key changes is recorded
β Consolidated Acceptance Criteria
- System notifies related systems of US-CCN key changes → all related systems are informed of key changes and can update their references
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_NotifyRelatedSystemsofKeyChanges(["Start Step"])
E_NotifyRelatedSystemsofKeyChanges(["End Step"])
N_NotifyRelatedSystemsofKeyChanges_Node0{"System notifies related systems of
US-CCN key changes"}:::decision N_NotifyRelatedSystemsofKeyChanges_Node0_action["All related systems are informed of
key changes and can update their
references"]:::main N_NotifyRelatedSystemsofKeyChanges_Node0 -- Yes --> N_NotifyRelatedSystemsofKeyChanges_Node0_action N_NotifyRelatedSystemsofKeyChanges_Node0_action --> E_NotifyRelatedSystemsofKeyChanges S_NotifyRelatedSystemsofKeyChanges --> N_NotifyRelatedSystemsofKeyChanges_Node0 N_NotifyRelatedSystemsofKeyChanges_Node0 -- No --> E_NotifyRelatedSystemsofKeyChanges
US-CCN key changes"}:::decision N_NotifyRelatedSystemsofKeyChanges_Node0_action["All related systems are informed of
key changes and can update their
references"]:::main N_NotifyRelatedSystemsofKeyChanges_Node0 -- Yes --> N_NotifyRelatedSystemsofKeyChanges_Node0_action N_NotifyRelatedSystemsofKeyChanges_Node0_action --> E_NotifyRelatedSystemsofKeyChanges S_NotifyRelatedSystemsofKeyChanges --> N_NotifyRelatedSystemsofKeyChanges_Node0 N_NotifyRelatedSystemsofKeyChanges_Node0 -- No --> E_NotifyRelatedSystemsofKeyChanges
File: GCX016.cbl
GIVEN:
Key renumbering activity has been logged
WHEN:
System notifies related systems of US-CCN key changes
THEN:
- All related systems are informed of key changes
- Can update their references
β Consolidated Acceptance Criteria
- System handles the renumbering error → error is logged and renumbering process is terminated with appropriate error status
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_HandleRenumberingErrors(["Start Step"])
E_HandleRenumberingErrors(["End Step"])
N_HandleRenumberingErrors_Node0{"System handles the renumbering
error"}:::decision N_HandleRenumberingErrors_Node0_action["Error is logged and renumbering
process is terminated with
appropriate error status"]:::exclusion N_HandleRenumberingErrors_Node0 -- Yes -->|Alternative| N_HandleRenumberingErrors_Node0_action N_HandleRenumberingErrors_Node0_action --> E_HandleRenumberingErrors S_HandleRenumberingErrors --> N_HandleRenumberingErrors_Node0 N_HandleRenumberingErrors_Node0 -- No --> E_HandleRenumberingErrors
error"}:::decision N_HandleRenumberingErrors_Node0_action["Error is logged and renumbering
process is terminated with
appropriate error status"]:::exclusion N_HandleRenumberingErrors_Node0 -- Yes -->|Alternative| N_HandleRenumberingErrors_Node0_action N_HandleRenumberingErrors_Node0_action --> E_HandleRenumberingErrors S_HandleRenumberingErrors --> N_HandleRenumberingErrors_Node0 N_HandleRenumberingErrors_Node0 -- No --> E_HandleRenumberingErrors
File: GCX016.cbl
GIVEN:
An error occurs during US-CCN renumbering process
WHEN:
System handles the renumbering error
THEN:
- Error is logged
- Renumbering process is terminated with appropriate error status
β Consolidated Acceptance Criteria
- The system is creating an audit log entry → the system shall include total quantities, released quantities, current cargo status, and any status changes in the log message
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AddCargoQuantitiesandStatus(["Start Step"])
E_AddCargoQuantitiesandStatus(["End Step"])
N_AddCargoQuantitiesandStatus_Node0{"The system is creating an audit log
entry"}:::decision N_AddCargoQuantitiesandStatus_Node0_action["The system shall include total
quantities, released quantities,
current cargo status, and any status
changes in the log message"]:::main N_AddCargoQuantitiesandStatus_Node0 -- Yes --> N_AddCargoQuantitiesandStatus_Node0_action N_AddCargoQuantitiesandStatus_Node0_action --> E_AddCargoQuantitiesandStatus S_AddCargoQuantitiesandStatus --> N_AddCargoQuantitiesandStatus_Node0 N_AddCargoQuantitiesandStatus_Node0 -- No --> E_AddCargoQuantitiesandStatus
entry"}:::decision N_AddCargoQuantitiesandStatus_Node0_action["The system shall include total
quantities, released quantities,
current cargo status, and any status
changes in the log message"]:::main N_AddCargoQuantitiesandStatus_Node0 -- Yes --> N_AddCargoQuantitiesandStatus_Node0_action N_AddCargoQuantitiesandStatus_Node0_action --> E_AddCargoQuantitiesandStatus S_AddCargoQuantitiesandStatus --> N_AddCargoQuantitiesandStatus_Node0 N_AddCargoQuantitiesandStatus_Node0 -- No --> E_AddCargoQuantitiesandStatus
File: GCX016.cbl
GIVEN:
Cargo processing involves quantity or status changes
WHEN:
The system is creating an audit log entry
THEN:
The system shall include total quantities, released quantities, current cargo status, and any status changes in the log message
β Consolidated Acceptance Criteria
- The system needs to record timing information → the system shall format and include current processing timestamp, transaction start time, and any relevant date/time information in the log message
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_FormatProcessingTimestamps(["Start Step"])
E_FormatProcessingTimestamps(["End Step"])
N_FormatProcessingTimestamps_Node0{"The system needs to record timing
information"}:::decision N_FormatProcessingTimestamps_Node0_action["The system shall format and include
current processing timestamp,
transaction start time, and any
relevant datetime information in the
log message"]:::main N_FormatProcessingTimestamps_Node0 -- Yes --> N_FormatProcessingTimestamps_Node0_action N_FormatProcessingTimestamps_Node0_action --> E_FormatProcessingTimestamps S_FormatProcessingTimestamps --> N_FormatProcessingTimestamps_Node0 N_FormatProcessingTimestamps_Node0 -- No --> E_FormatProcessingTimestamps
information"}:::decision N_FormatProcessingTimestamps_Node0_action["The system shall format and include
current processing timestamp,
transaction start time, and any
relevant datetime information in the
log message"]:::main N_FormatProcessingTimestamps_Node0 -- Yes --> N_FormatProcessingTimestamps_Node0_action N_FormatProcessingTimestamps_Node0_action --> E_FormatProcessingTimestamps S_FormatProcessingTimestamps --> N_FormatProcessingTimestamps_Node0 N_FormatProcessingTimestamps_Node0 -- No --> E_FormatProcessingTimestamps
File: GCX016.cbl
GIVEN:
A cargo processing transaction is being logged
WHEN:
The system needs to record timing information
THEN:
- The system shall format
- Include current processing timestamp, transaction start time, and any relevant date/time information in the log message
β Consolidated Acceptance Criteria
- The system needs to create complete audit trail information → the system shall add transaction type, source system, processing context, and related audit trail data to the log message
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AddTransactionAuditTrailData(["Start Step"])
E_AddTransactionAuditTrailData(["End Step"])
N_AddTransactionAuditTrailData_Node0{"The system needs to create complete
audit trail information"}:::decision N_AddTransactionAuditTrailData_Node0_action["The system shall add transaction
type, source system, processing
context, and related audit trail
data to the log message"]:::main N_AddTransactionAuditTrailData_Node0 -- Yes --> N_AddTransactionAuditTrailData_Node0_action N_AddTransactionAuditTrailData_Node0_action --> E_AddTransactionAuditTrailData S_AddTransactionAuditTrailData --> N_AddTransactionAuditTrailData_Node0 N_AddTransactionAuditTrailData_Node0 -- No --> E_AddTransactionAuditTrailData
audit trail information"}:::decision N_AddTransactionAuditTrailData_Node0_action["The system shall add transaction
type, source system, processing
context, and related audit trail
data to the log message"]:::main N_AddTransactionAuditTrailData_Node0 -- Yes --> N_AddTransactionAuditTrailData_Node0_action N_AddTransactionAuditTrailData_Node0_action --> E_AddTransactionAuditTrailData S_AddTransactionAuditTrailData --> N_AddTransactionAuditTrailData_Node0 N_AddTransactionAuditTrailData_Node0 -- No --> E_AddTransactionAuditTrailData
File: GCX016.cbl
GIVEN:
A cargo processing transaction is being executed
WHEN:
The system needs to create complete audit trail information
THEN:
The system shall add transaction type, source system, processing context, and related audit trail data to the log message
β Consolidated Acceptance Criteria
- The system is ready to transmit the log message → the system shall set appropriate message parameters including priority level, destination queue, and formatting options
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetLogMessageParameters(["Start Step"])
E_SetLogMessageParameters(["End Step"])
N_SetLogMessageParameters_Node0{"The system is ready to transmit the
log message"}:::decision N_SetLogMessageParameters_Node0_action["The system shall set appropriate
message parameters including
priority level, destination queue,
and formatting options"]:::main N_SetLogMessageParameters_Node0 -- Yes --> N_SetLogMessageParameters_Node0_action N_SetLogMessageParameters_Node0_action --> E_SetLogMessageParameters S_SetLogMessageParameters --> N_SetLogMessageParameters_Node0 N_SetLogMessageParameters_Node0 -- No --> E_SetLogMessageParameters
log message"}:::decision N_SetLogMessageParameters_Node0_action["The system shall set appropriate
message parameters including
priority level, destination queue,
and formatting options"]:::main N_SetLogMessageParameters_Node0 -- Yes --> N_SetLogMessageParameters_Node0_action N_SetLogMessageParameters_Node0_action --> E_SetLogMessageParameters S_SetLogMessageParameters --> N_SetLogMessageParameters_Node0 N_SetLogMessageParameters_Node0 -- No --> E_SetLogMessageParameters
File: GCX016.cbl
GIVEN:
A complete log message has been prepared with all required information
WHEN:
The system is ready to transmit the log message
THEN:
The system shall set appropriate message parameters including priority level, destination queue, and formatting options
β Consolidated Acceptance Criteria
- The system receives failure notification → the system shall record error information about the logging failure and continue processing
- The system processes the rejection → an error message is logged documenting the K1 comment validation failure for audit purposes
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogErrorMessage(["Start Step"])
E_LogErrorMessage(["End Step"])
N_LogErrorMessage_Node0{"The system receives failure
notification"}:::decision N_LogErrorMessage_Node0_action["The system shall record error
information about the logging
failure and continue processing"]:::main N_LogErrorMessage_Node0 -- Yes --> N_LogErrorMessage_Node0_action N_LogErrorMessage_Node0_action --> E_LogErrorMessage S_LogErrorMessage --> N_LogErrorMessage_Node0 N_LogErrorMessage_Node1{"The system processes the rejection"}:::decision N_LogErrorMessage_Node1_action["An error message is logged
documenting the K1 comment
validation failure for audit
purposes"]:::main N_LogErrorMessage_Node1 -- Yes --> N_LogErrorMessage_Node1_action N_LogErrorMessage_Node1_action --> E_LogErrorMessage N_LogErrorMessage_Node0 -- No --> N_LogErrorMessage_Node1 N_LogErrorMessage_Node1 -- No --> E_LogErrorMessage
notification"}:::decision N_LogErrorMessage_Node0_action["The system shall record error
information about the logging
failure and continue processing"]:::main N_LogErrorMessage_Node0 -- Yes --> N_LogErrorMessage_Node0_action N_LogErrorMessage_Node0_action --> E_LogErrorMessage S_LogErrorMessage --> N_LogErrorMessage_Node0 N_LogErrorMessage_Node1{"The system processes the rejection"}:::decision N_LogErrorMessage_Node1_action["An error message is logged
documenting the K1 comment
validation failure for audit
purposes"]:::main N_LogErrorMessage_Node1 -- Yes --> N_LogErrorMessage_Node1_action N_LogErrorMessage_Node1_action --> E_LogErrorMessage N_LogErrorMessage_Node0 -- No --> N_LogErrorMessage_Node1 N_LogErrorMessage_Node1 -- No --> E_LogErrorMessage
File: GCX016.cbl
GIVEN:
The GCT1051E logging transaction failed to complete successfully
WHEN:
The system receives failure notification
THEN:
- The system shall record error information about the logging failure
- Continue processing
File: GCX016.cbl
GIVEN:
A K1 comment has been rejected due to validation failure
WHEN:
The system processes the rejection
THEN:
An error message is logged documenting the K1 comment validation failure for audit purposes
β Consolidated Acceptance Criteria
- If the segment context and operational scope → the K1 segment is classified as either train-level processing or cargo-level processing based on the current processing context
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_K1SegmentType(["Start Step"])
E_K1SegmentType(["End Step"])
N_K1SegmentType_Node0{"The system evaluates the segment
context and operational scope"}:::decision N_K1SegmentType_Node0_action["The K1 segment is classified as
either train-level processing or
cargo-level processing based on the
current processing context"]:::main N_K1SegmentType_Node0 -- Yes --> N_K1SegmentType_Node0_action N_K1SegmentType_Node0_action --> E_K1SegmentType S_K1SegmentType --> N_K1SegmentType_Node0 N_K1SegmentType_Node0 -- No --> E_K1SegmentType
context and operational scope"}:::decision N_K1SegmentType_Node0_action["The K1 segment is classified as
either train-level processing or
cargo-level processing based on the
current processing context"]:::main N_K1SegmentType_Node0 -- Yes --> N_K1SegmentType_Node0_action N_K1SegmentType_Node0_action --> E_K1SegmentType S_K1SegmentType --> N_K1SegmentType_Node0 N_K1SegmentType_Node0 -- No --> E_K1SegmentType
File: GCX016.cbl
GIVEN:
A K1 segment is received for processing
WHEN:
- The system evaluates the segment context
- Operational scope
THEN:
The K1 segment is classified as either train-level processing or cargo-level processing based on the current processing context
β Consolidated Acceptance Criteria
- The system processes the K1 segment content → the free-form comment text is extracted from the K1 segment data fields
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExtractFreeFormCommentText(["Start Step"])
E_ExtractFreeFormCommentText(["End Step"])
N_ExtractFreeFormCommentText_Node0{"The system processes the K1 segment
content"}:::decision N_ExtractFreeFormCommentText_Node0_action["The free-form comment text is
extracted from the K1 segment data
fields"]:::main N_ExtractFreeFormCommentText_Node0 -- Yes --> N_ExtractFreeFormCommentText_Node0_action N_ExtractFreeFormCommentText_Node0_action --> E_ExtractFreeFormCommentText S_ExtractFreeFormCommentText --> N_ExtractFreeFormCommentText_Node0 N_ExtractFreeFormCommentText_Node0 -- No --> E_ExtractFreeFormCommentText
content"}:::decision N_ExtractFreeFormCommentText_Node0_action["The free-form comment text is
extracted from the K1 segment data
fields"]:::main N_ExtractFreeFormCommentText_Node0 -- Yes --> N_ExtractFreeFormCommentText_Node0_action N_ExtractFreeFormCommentText_Node0_action --> E_ExtractFreeFormCommentText S_ExtractFreeFormCommentText --> N_ExtractFreeFormCommentText_Node0 N_ExtractFreeFormCommentText_Node0 -- No --> E_ExtractFreeFormCommentText
File: GCX016.cbl
GIVEN:
A K1 segment has been classified for processing
WHEN:
The system processes the K1 segment content
THEN:
The free-form comment text is extracted from the K1 segment data fields
β Consolidated Acceptance Criteria
- The system validates the comment text length → the comment is accepted if it meets length requirements or rejected if it exceeds maximum allowed length
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ValidateCommentLength(["Start Step"])
E_ValidateCommentLength(["End Step"])
N_ValidateCommentLength_Node0{"The system validates the comment
text length"}:::decision N_ValidateCommentLength_Node0_action["The comment is accepted if it meets
length requirements or rejected if
it exceeds maximum allowed length"]:::exclusion N_ValidateCommentLength_Node0 -- Yes -->|Alternative| N_ValidateCommentLength_Node0_action N_ValidateCommentLength_Node0_action --> E_ValidateCommentLength S_ValidateCommentLength --> N_ValidateCommentLength_Node0 N_ValidateCommentLength_Node0 -- No --> E_ValidateCommentLength
text length"}:::decision N_ValidateCommentLength_Node0_action["The comment is accepted if it meets
length requirements or rejected if
it exceeds maximum allowed length"]:::exclusion N_ValidateCommentLength_Node0 -- Yes -->|Alternative| N_ValidateCommentLength_Node0_action N_ValidateCommentLength_Node0_action --> E_ValidateCommentLength S_ValidateCommentLength --> N_ValidateCommentLength_Node0 N_ValidateCommentLength_Node0 -- No --> E_ValidateCommentLength
File: GCX016.cbl
GIVEN:
Free-form comment text has been extracted from K1 segment
WHEN:
The system validates the comment text length
THEN:
The comment is accepted if it meets length requirements or rejected if it exceeds maximum allowed length
β Consolidated Acceptance Criteria
- The system processes the valid comment for storage → the K1 comment is stored in the comment array for later association with cargo records
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_StoreK1CommentinArray(["Start Step"])
E_StoreK1CommentinArray(["End Step"])
N_StoreK1CommentinArray_Node0{"The system processes the valid
comment for storage"}:::decision N_StoreK1CommentinArray_Node0_action["The K1 comment is stored in the
comment array for later association
with cargo records"]:::main N_StoreK1CommentinArray_Node0 -- Yes --> N_StoreK1CommentinArray_Node0_action N_StoreK1CommentinArray_Node0_action --> E_StoreK1CommentinArray S_StoreK1CommentinArray --> N_StoreK1CommentinArray_Node0 N_StoreK1CommentinArray_Node0 -- No --> E_StoreK1CommentinArray
comment for storage"}:::decision N_StoreK1CommentinArray_Node0_action["The K1 comment is stored in the
comment array for later association
with cargo records"]:::main N_StoreK1CommentinArray_Node0 -- Yes --> N_StoreK1CommentinArray_Node0_action N_StoreK1CommentinArray_Node0_action --> E_StoreK1CommentinArray S_StoreK1CommentinArray --> N_StoreK1CommentinArray_Node0 N_StoreK1CommentinArray_Node0 -- No --> E_StoreK1CommentinArray
File: GCX016.cbl
GIVEN:
A K1 comment has been validated as acceptable
WHEN:
The system processes the valid comment for storage
THEN:
The K1 comment is stored in the comment array for later association with cargo records
β Consolidated Acceptance Criteria
- The system counts the total number of K1 comments collected → the comment count is evaluated against maximum allowed limit of 4 comments per cargo
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CheckK1CommentCount(["Start Step"])
E_CheckK1CommentCount(["End Step"])
N_CheckK1CommentCount_Node0{"The system counts the total number
of K1 comments collected"}:::decision N_CheckK1CommentCount_Node0_action["The comment count is evaluated
against maximum allowed limit of 4
comments per cargo"]:::main N_CheckK1CommentCount_Node0 -- Yes --> N_CheckK1CommentCount_Node0_action N_CheckK1CommentCount_Node0_action --> E_CheckK1CommentCount S_CheckK1CommentCount --> N_CheckK1CommentCount_Node0 N_CheckK1CommentCount_Node0 -- No --> E_CheckK1CommentCount
of K1 comments collected"}:::decision N_CheckK1CommentCount_Node0_action["The comment count is evaluated
against maximum allowed limit of 4
comments per cargo"]:::main N_CheckK1CommentCount_Node0 -- Yes --> N_CheckK1CommentCount_Node0_action N_CheckK1CommentCount_Node0_action --> E_CheckK1CommentCount S_CheckK1CommentCount --> N_CheckK1CommentCount_Node0 N_CheckK1CommentCount_Node0 -- No --> E_CheckK1CommentCount
File: GCX016.cbl
GIVEN:
All K1 segments have been processed and stored in array
WHEN:
The system counts the total number of K1 comments collected
THEN:
The comment count is evaluated against maximum allowed limit of 4 comments per cargo
β Consolidated Acceptance Criteria
- If if comment count is less than or equal to 4 → comments are accepted for cargo association if count is 4 or less, or processing completes if limit exceeded
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_Count4(["Start Step"])
E_Count4(["End Step"])
N_Count4_Node0{"The system evaluates if comment
count is less than or equal to 4"}:::decision N_Count4_Node0_action["Comments are accepted for cargo
association if count is 4 or less,
or processing completes if limit
exceeded"]:::main N_Count4_Node0 -- Yes --> N_Count4_Node0_action N_Count4_Node0_action --> E_Count4 S_Count4 --> N_Count4_Node0 N_Count4_Node0 -- No --> E_Count4
count is less than or equal to 4"}:::decision N_Count4_Node0_action["Comments are accepted for cargo
association if count is 4 or less,
or processing completes if limit
exceeded"]:::main N_Count4_Node0 -- Yes --> N_Count4_Node0_action N_Count4_Node0_action --> E_Count4 S_Count4 --> N_Count4_Node0 N_Count4_Node0 -- No --> E_Count4
File: GCX016.cbl
GIVEN:
K1 comment count has been determined
WHEN:
The system evaluates if comment count is less than or equal to 4
THEN:
Comments are accepted for cargo association if count is 4 or less, or processing completes if limit exceeded
β Consolidated Acceptance Criteria
- The system processes comments for cargo association → k1 comments are added to the cargo record for inclusion in disposition code processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AddK1CommenttoCargoRecord(["Start Step"])
E_AddK1CommenttoCargoRecord(["End Step"])
N_AddK1CommenttoCargoRecord_Node0{"The system processes comments for
cargo association"}:::decision N_AddK1CommenttoCargoRecord_Node0_action["K1 comments are added to the cargo
record for inclusion in disposition
code processing"]:::main N_AddK1CommenttoCargoRecord_Node0 -- Yes --> N_AddK1CommenttoCargoRecord_Node0_action N_AddK1CommenttoCargoRecord_Node0_action --> E_AddK1CommenttoCargoRecord S_AddK1CommenttoCargoRecord --> N_AddK1CommenttoCargoRecord_Node0 N_AddK1CommenttoCargoRecord_Node0 -- No --> E_AddK1CommenttoCargoRecord
cargo association"}:::decision N_AddK1CommenttoCargoRecord_Node0_action["K1 comments are added to the cargo
record for inclusion in disposition
code processing"]:::main N_AddK1CommenttoCargoRecord_Node0 -- Yes --> N_AddK1CommenttoCargoRecord_Node0_action N_AddK1CommenttoCargoRecord_Node0_action --> E_AddK1CommenttoCargoRecord S_AddK1CommenttoCargoRecord --> N_AddK1CommenttoCargoRecord_Node0 N_AddK1CommenttoCargoRecord_Node0 -- No --> E_AddK1CommenttoCargoRecord
File: GCX016.cbl
GIVEN:
K1 comments have passed count validation (β€ 4)
WHEN:
The system processes comments for cargo association
THEN:
K1 comments are added to the cargo record for inclusion in disposition code processing
β Consolidated Acceptance Criteria
- The system processes cargo with associated K1 remarks → k1 remarks are logged with cargo identification information for audit trail
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogK1RemarkswithCargoInformation(["Start Step"])
E_LogK1RemarkswithCargoInformation(["End Step"])
N_LogK1RemarkswithCargoInformation_Node0{"The system processes cargo with
associated K1 remarks"}:::decision N_LogK1RemarkswithCargoInformation_Node0_action["K1 remarks are logged with cargo
identification information for audit
trail"]:::main N_LogK1RemarkswithCargoInformation_Node0 -- Yes --> N_LogK1RemarkswithCargoInformation_Node0_action N_LogK1RemarkswithCargoInformation_Node0_action --> E_LogK1RemarkswithCargoInformation S_LogK1RemarkswithCargoInformation --> N_LogK1RemarkswithCargoInformation_Node0 N_LogK1RemarkswithCargoInformation_Node0 -- No --> E_LogK1RemarkswithCargoInformation
associated K1 remarks"}:::decision N_LogK1RemarkswithCargoInformation_Node0_action["K1 remarks are logged with cargo
identification information for audit
trail"]:::main N_LogK1RemarkswithCargoInformation_Node0 -- Yes --> N_LogK1RemarkswithCargoInformation_Node0_action N_LogK1RemarkswithCargoInformation_Node0_action --> E_LogK1RemarkswithCargoInformation S_LogK1RemarkswithCargoInformation --> N_LogK1RemarkswithCargoInformation_Node0 N_LogK1RemarkswithCargoInformation_Node0 -- No --> E_LogK1RemarkswithCargoInformation
File: GCX016.cbl
GIVEN:
K1 comments have been added to cargo record
WHEN:
The system processes cargo with associated K1 remarks
THEN:
K1 remarks are logged with cargo identification information for audit trail
β Consolidated Acceptance Criteria
- The system processes disposition codes for the cargo → k1 remarks are associated with the relevant disposition code for customs release processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AssociateK1withDispositionCode(["Start Step"])
E_AssociateK1withDispositionCode(["End Step"])
N_AssociateK1withDispositionCode_Node0{"The system processes disposition
codes for the cargo"}:::decision N_AssociateK1withDispositionCode_Node0_action["K1 remarks are associated with the
relevant disposition code for
customs release processing"]:::main N_AssociateK1withDispositionCode_Node0 -- Yes --> N_AssociateK1withDispositionCode_Node0_action N_AssociateK1withDispositionCode_Node0_action --> E_AssociateK1withDispositionCode S_AssociateK1withDispositionCode --> N_AssociateK1withDispositionCode_Node0 N_AssociateK1withDispositionCode_Node0 -- No --> E_AssociateK1withDispositionCode
codes for the cargo"}:::decision N_AssociateK1withDispositionCode_Node0_action["K1 remarks are associated with the
relevant disposition code for
customs release processing"]:::main N_AssociateK1withDispositionCode_Node0 -- Yes --> N_AssociateK1withDispositionCode_Node0_action N_AssociateK1withDispositionCode_Node0_action --> E_AssociateK1withDispositionCode S_AssociateK1withDispositionCode --> N_AssociateK1withDispositionCode_Node0 N_AssociateK1withDispositionCode_Node0 -- No --> E_AssociateK1withDispositionCode
File: GCX016.cbl
GIVEN:
K1 remarks have been logged with cargo information
WHEN:
The system processes disposition codes for the cargo
THEN:
K1 remarks are associated with the relevant disposition code for customs release processing
β Consolidated Acceptance Criteria
- The system completes K1 processing for cargo → cargo processing log is updated to record K1 remarks inclusion in disposition code processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UpdateCargoProcessingLog(["Start Step"])
E_UpdateCargoProcessingLog(["End Step"])
N_UpdateCargoProcessingLog_Node0{"The system completes K1 processing
for cargo"}:::decision N_UpdateCargoProcessingLog_Node0_action["Cargo processing log is updated to
record K1 remarks inclusion in
disposition code processing"]:::main N_UpdateCargoProcessingLog_Node0 -- Yes --> N_UpdateCargoProcessingLog_Node0_action N_UpdateCargoProcessingLog_Node0_action --> E_UpdateCargoProcessingLog S_UpdateCargoProcessingLog --> N_UpdateCargoProcessingLog_Node0 N_UpdateCargoProcessingLog_Node0 -- No --> E_UpdateCargoProcessingLog
for cargo"}:::decision N_UpdateCargoProcessingLog_Node0_action["Cargo processing log is updated to
record K1 remarks inclusion in
disposition code processing"]:::main N_UpdateCargoProcessingLog_Node0 -- Yes --> N_UpdateCargoProcessingLog_Node0_action N_UpdateCargoProcessingLog_Node0_action --> E_UpdateCargoProcessingLog S_UpdateCargoProcessingLog --> N_UpdateCargoProcessingLog_Node0 N_UpdateCargoProcessingLog_Node0 -- No --> E_UpdateCargoProcessingLog
File: GCX016.cbl
GIVEN:
K1 remarks have been associated with disposition code
WHEN:
The system completes K1 processing for cargo
THEN:
Cargo processing log is updated to record K1 remarks inclusion in disposition code processing
β Consolidated Acceptance Criteria
- The system processes the invalid comment → the K1 comment is rejected and excluded from cargo processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RejectInvalidComment(["Start Step"])
E_RejectInvalidComment(["End Step"])
N_RejectInvalidComment_Node0{"The system processes the invalid
comment"}:::decision N_RejectInvalidComment_Node0_action["The K1 comment is rejected and
excluded from cargo processing"]:::exclusion N_RejectInvalidComment_Node0 -- Yes -->|Alternative| N_RejectInvalidComment_Node0_action N_RejectInvalidComment_Node0_action --> E_RejectInvalidComment S_RejectInvalidComment --> N_RejectInvalidComment_Node0 N_RejectInvalidComment_Node0 -- No --> E_RejectInvalidComment
comment"}:::decision N_RejectInvalidComment_Node0_action["The K1 comment is rejected and
excluded from cargo processing"]:::exclusion N_RejectInvalidComment_Node0 -- Yes -->|Alternative| N_RejectInvalidComment_Node0_action N_RejectInvalidComment_Node0_action --> E_RejectInvalidComment S_RejectInvalidComment --> N_RejectInvalidComment_Node0 N_RejectInvalidComment_Node0 -- No --> E_RejectInvalidComment
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
A K1 comment has failed validation criteria
WHEN:
The system processes the invalid comment
THEN:
- The k1 comment is rejected
- Excluded from cargo processing
β Consolidated Acceptance Criteria
- If the cargo type to determine if it is CPRS cargo → the system routes to CPRS-specific error handling if cargo is CPRS type, otherwise skips specialized error processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IsthisCPRSCargo(["Start Step"])
E_IsthisCPRSCargo(["End Step"])
N_IsthisCPRSCargo_Node0{"The system evaluates the cargo type
to determine if it is CPRS cargo"}:::decision N_IsthisCPRSCargo_Node0_action["The system routes to CPRS-specific
error handling if cargo is CPRS
type, otherwise skips specialized
error processing"]:::main N_IsthisCPRSCargo_Node0 -- Yes --> N_IsthisCPRSCargo_Node0_action N_IsthisCPRSCargo_Node0_action --> E_IsthisCPRSCargo S_IsthisCPRSCargo --> N_IsthisCPRSCargo_Node0 N_IsthisCPRSCargo_Node0 -- No --> E_IsthisCPRSCargo
to determine if it is CPRS cargo"}:::decision N_IsthisCPRSCargo_Node0_action["The system routes to CPRS-specific
error handling if cargo is CPRS
type, otherwise skips specialized
error processing"]:::main N_IsthisCPRSCargo_Node0 -- Yes --> N_IsthisCPRSCargo_Node0_action N_IsthisCPRSCargo_Node0_action --> E_IsthisCPRSCargo S_IsthisCPRSCargo --> N_IsthisCPRSCargo_Node0 N_IsthisCPRSCargo_Node0 -- No --> E_IsthisCPRSCargo
File: GCX016.cbl
GIVEN:
A cargo lookup has failed and cargo record information is available
WHEN:
The system evaluates the cargo type to determine if it is CPRS cargo
THEN:
The system routes to CPRS-specific error handling if cargo is CPRS type, otherwise skips specialized error processing
β Consolidated Acceptance Criteria
- The system needs to generate an error notification → the system creates a CPRS-specific 'cargo not found' error message and increments the error counter
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GenerateCPRSCargoNotFoundErrorMessage(["Start Step"])
E_GenerateCPRSCargoNotFoundErrorMessage(["End Step"])
N_GenerateCPRSCargoNotFoundErrorMessage_Node0{"The system needs to generate an
error notification"}:::decision N_GenerateCPRSCargoNotFoundErrorMessage_Node0_action["The system creates a CPRS-specific
cargo not found error message and
increments the error counter"]:::exclusion N_GenerateCPRSCargoNotFoundErrorMessage_Node0 -- Yes -->|Alternative| N_GenerateCPRSCargoNotFoundErrorMessage_Node0_action N_GenerateCPRSCargoNotFoundErrorMessage_Node0_action --> E_GenerateCPRSCargoNotFoundErrorMessage S_GenerateCPRSCargoNotFoundErrorMessage --> N_GenerateCPRSCargoNotFoundErrorMessage_Node0 N_GenerateCPRSCargoNotFoundErrorMessage_Node0 -- No --> E_GenerateCPRSCargoNotFoundErrorMessage
error notification"}:::decision N_GenerateCPRSCargoNotFoundErrorMessage_Node0_action["The system creates a CPRS-specific
cargo not found error message and
increments the error counter"]:::exclusion N_GenerateCPRSCargoNotFoundErrorMessage_Node0 -- Yes -->|Alternative| N_GenerateCPRSCargoNotFoundErrorMessage_Node0_action N_GenerateCPRSCargoNotFoundErrorMessage_Node0_action --> E_GenerateCPRSCargoNotFoundErrorMessage S_GenerateCPRSCargoNotFoundErrorMessage --> N_GenerateCPRSCargoNotFoundErrorMessage_Node0 N_GenerateCPRSCargoNotFoundErrorMessage_Node0 -- No --> E_GenerateCPRSCargoNotFoundErrorMessage
File: GCX016.cbl
GIVEN:
A CPRS cargo record lookup has failed
WHEN:
The system needs to generate an error notification
THEN:
- The system creates a cprs-specific 'cargo not found' error message
- Increments the error counter
β Consolidated Acceptance Criteria
- The system formats the error message content → the system creates message format 'USCS *ERROR** DC:' + disposition code + CCN key + '*NotFound*'
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_FormatErrorMessagewithCargoDetails(["Start Step"])
E_FormatErrorMessagewithCargoDetails(["End Step"])
N_FormatErrorMessagewithCargoDetails_Node0{"The system formats the error
message content"}:::decision N_FormatErrorMessagewithCargoDetails_Node0_action["The system creates message format
USCS ERROR DC: disposition code CCN
key NotFound"]:::exclusion N_FormatErrorMessagewithCargoDetails_Node0 -- Yes -->|Alternative| N_FormatErrorMessagewithCargoDetails_Node0_action N_FormatErrorMessagewithCargoDetails_Node0_action --> E_FormatErrorMessagewithCargoDetails S_FormatErrorMessagewithCargoDetails --> N_FormatErrorMessagewithCargoDetails_Node0 N_FormatErrorMessagewithCargoDetails_Node0 -- No --> E_FormatErrorMessagewithCargoDetails
message content"}:::decision N_FormatErrorMessagewithCargoDetails_Node0_action["The system creates message format
USCS ERROR DC: disposition code CCN
key NotFound"]:::exclusion N_FormatErrorMessagewithCargoDetails_Node0 -- Yes -->|Alternative| N_FormatErrorMessagewithCargoDetails_Node0_action N_FormatErrorMessagewithCargoDetails_Node0_action --> E_FormatErrorMessagewithCargoDetails S_FormatErrorMessagewithCargoDetails --> N_FormatErrorMessagewithCargoDetails_Node0 N_FormatErrorMessagewithCargoDetails_Node0 -- No --> E_FormatErrorMessagewithCargoDetails
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
A CPRS cargo not found error needs to be reported
WHEN:
The system formats the error message content
THEN:
The system creates message format 'USCS *ERROR** DC:' + disposition code + CCN key + '*NotFound*'
β Consolidated Acceptance Criteria
- Car ID and waybill information is available from the cargo record → the system includes the car identification and waybill number in the error message content
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IncludeCarIDandWaybillInformation(["Start Step"])
E_IncludeCarIDandWaybillInformation(["End Step"])
N_IncludeCarIDandWaybillInformation_Node0{"Car ID and waybill information is
available from the cargo record"}:::decision N_IncludeCarIDandWaybillInformation_Node0_action["The system includes the car
identification and waybill number in
the error message content"]:::main N_IncludeCarIDandWaybillInformation_Node0 -- Yes --> N_IncludeCarIDandWaybillInformation_Node0_action N_IncludeCarIDandWaybillInformation_Node0_action --> E_IncludeCarIDandWaybillInformation S_IncludeCarIDandWaybillInformation --> N_IncludeCarIDandWaybillInformation_Node0 N_IncludeCarIDandWaybillInformation_Node0 -- No --> E_IncludeCarIDandWaybillInformation
available from the cargo record"}:::decision N_IncludeCarIDandWaybillInformation_Node0_action["The system includes the car
identification and waybill number in
the error message content"]:::main N_IncludeCarIDandWaybillInformation_Node0 -- Yes --> N_IncludeCarIDandWaybillInformation_Node0_action N_IncludeCarIDandWaybillInformation_Node0_action --> E_IncludeCarIDandWaybillInformation S_IncludeCarIDandWaybillInformation --> N_IncludeCarIDandWaybillInformation_Node0 N_IncludeCarIDandWaybillInformation_Node0 -- No --> E_IncludeCarIDandWaybillInformation
File: GCX016.cbl
GIVEN:
A CPRS error message is being formatted
WHEN:
- Car id
- Waybill information is available from the cargo record
THEN:
- The system includes the car identification
- Waybill number in the error message content
β Consolidated Acceptance Criteria
- The system needs to classify the message for routing → the system sets the message type as 'ERROR' to ensure proper handling and routing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetErrorMessageType(["Start Step"])
E_SetErrorMessageType(["End Step"])
N_SetErrorMessageType_Node0{"The system needs to classify the
message for routing"}:::decision N_SetErrorMessageType_Node0_action["The system sets the message type as
ERROR to ensure proper handling and
routing"]:::main N_SetErrorMessageType_Node0 -- Yes --> N_SetErrorMessageType_Node0_action N_SetErrorMessageType_Node0_action --> E_SetErrorMessageType S_SetErrorMessageType --> N_SetErrorMessageType_Node0 N_SetErrorMessageType_Node0 -- No --> E_SetErrorMessageType
message for routing"}:::decision N_SetErrorMessageType_Node0_action["The system sets the message type as
ERROR to ensure proper handling and
routing"]:::main N_SetErrorMessageType_Node0 -- Yes --> N_SetErrorMessageType_Node0_action N_SetErrorMessageType_Node0_action --> E_SetErrorMessageType S_SetErrorMessageType --> N_SetErrorMessageType_Node0 N_SetErrorMessageType_Node0 -- No --> E_SetErrorMessageType
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
A CPRS cargo not found error message has been formatted
WHEN:
The system needs to classify the message for routing
THEN:
- The system sets the message type as 'error' to ensure proper handling
- Routing
β Consolidated Acceptance Criteria
- The system completes error processing → the system logs the error occurrence for audit trail and sets the cargo not found flag for downstream processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogErrorforAuditTrail(["Start Step"])
E_LogErrorforAuditTrail(["End Step"])
N_LogErrorforAuditTrail_Node0{"The system completes error
processing"}:::decision N_LogErrorforAuditTrail_Node0_action["The system logs the error
occurrence for audit trail and sets
the cargo not found flag for
downstream processing"]:::exclusion N_LogErrorforAuditTrail_Node0 -- Yes -->|Alternative| N_LogErrorforAuditTrail_Node0_action N_LogErrorforAuditTrail_Node0_action --> E_LogErrorforAuditTrail S_LogErrorforAuditTrail --> N_LogErrorforAuditTrail_Node0 N_LogErrorforAuditTrail_Node0 -- No --> E_LogErrorforAuditTrail
processing"}:::decision N_LogErrorforAuditTrail_Node0_action["The system logs the error
occurrence for audit trail and sets
the cargo not found flag for
downstream processing"]:::exclusion N_LogErrorforAuditTrail_Node0 -- Yes -->|Alternative| N_LogErrorforAuditTrail_Node0_action N_LogErrorforAuditTrail_Node0_action --> E_LogErrorforAuditTrail S_LogErrorforAuditTrail --> N_LogErrorforAuditTrail_Node0 N_LogErrorforAuditTrail_Node0 -- No --> E_LogErrorforAuditTrail
File: GCX016.cbl
GIVEN:
A CPRS error message has been routed to destinations
WHEN:
The system completes error processing
THEN:
- The system logs the error occurrence for audit trail
- Sets the cargo not found flag for downstream processing
β Consolidated Acceptance Criteria
- The system finishes error handling for current cargo → the system continues processing the next cargo record in the queue
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ContinueProcessingNextCargo(["Start Step"])
E_ContinueProcessingNextCargo(["End Step"])
N_ContinueProcessingNextCargo_Node0{"The system finishes error handling
for current cargo"}:::decision N_ContinueProcessingNextCargo_Node0_action["The system continues processing the
next cargo record in the queue"]:::exclusion N_ContinueProcessingNextCargo_Node0 -- Yes -->|Alternative| N_ContinueProcessingNextCargo_Node0_action N_ContinueProcessingNextCargo_Node0_action --> E_ContinueProcessingNextCargo S_ContinueProcessingNextCargo --> N_ContinueProcessingNextCargo_Node0 N_ContinueProcessingNextCargo_Node0 -- No --> E_ContinueProcessingNextCargo
for current cargo"}:::decision N_ContinueProcessingNextCargo_Node0_action["The system continues processing the
next cargo record in the queue"]:::exclusion N_ContinueProcessingNextCargo_Node0 -- Yes -->|Alternative| N_ContinueProcessingNextCargo_Node0_action N_ContinueProcessingNextCargo_Node0_action --> E_ContinueProcessingNextCargo S_ContinueProcessingNextCargo --> N_ContinueProcessingNextCargo_Node0 N_ContinueProcessingNextCargo_Node0 -- No --> E_ContinueProcessingNextCargo
File: GCX016.cbl
GIVEN:
CPRS error processing has been completed or skipped
WHEN:
The system finishes error handling for current cargo
THEN:
The system continues processing the next cargo record in the queue
β Consolidated Acceptance Criteria
- The cargo is determined to be non-CPRS cargo type → the system skips CPRS-specific error message generation and continues with standard processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SkipErrorGeneration(["Start Step"])
E_SkipErrorGeneration(["End Step"])
N_SkipErrorGeneration_Node0{"The cargo is determined to be
non-CPRS cargo type"}:::decision N_SkipErrorGeneration_Node0_action["The system skips CPRS-specific
error message generation and
continues with standard processing"]:::main N_SkipErrorGeneration_Node0 -- Yes --> N_SkipErrorGeneration_Node0_action N_SkipErrorGeneration_Node0_action --> E_SkipErrorGeneration S_SkipErrorGeneration --> N_SkipErrorGeneration_Node0 N_SkipErrorGeneration_Node0 -- No --> E_SkipErrorGeneration
non-CPRS cargo type"}:::decision N_SkipErrorGeneration_Node0_action["The system skips CPRS-specific
error message generation and
continues with standard processing"]:::main N_SkipErrorGeneration_Node0 -- Yes --> N_SkipErrorGeneration_Node0_action N_SkipErrorGeneration_Node0_action --> E_SkipErrorGeneration S_SkipErrorGeneration --> N_SkipErrorGeneration_Node0 N_SkipErrorGeneration_Node0 -- No --> E_SkipErrorGeneration
File: GCX016.cbl
GIVEN:
A cargo lookup has failed
WHEN:
The cargo is determined to be non-CPRS cargo type
THEN:
- The system skips cprs-specific error message generation
- Continues with standard processing
β Consolidated Acceptance Criteria
- The system checks the train status in the USCS database → the system determines if the train is properly arrived or not arrived and sets appropriate processing flags
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CheckTrainStatusinSystem(["Start Step"])
E_CheckTrainStatusinSystem(["End Step"])
N_CheckTrainStatusinSystem_Node0{"The system checks the train status
in the USCS database"}:::decision N_CheckTrainStatusinSystem_Node0_action["The system determines if the train
is properly arrived or not arrived
and sets appropriate processing
flags"]:::main N_CheckTrainStatusinSystem_Node0 -- Yes --> N_CheckTrainStatusinSystem_Node0_action N_CheckTrainStatusinSystem_Node0_action --> E_CheckTrainStatusinSystem S_CheckTrainStatusinSystem --> N_CheckTrainStatusinSystem_Node0 N_CheckTrainStatusinSystem_Node0 -- No --> E_CheckTrainStatusinSystem
in the USCS database"}:::decision N_CheckTrainStatusinSystem_Node0_action["The system determines if the train
is properly arrived or not arrived
and sets appropriate processing
flags"]:::main N_CheckTrainStatusinSystem_Node0 -- Yes --> N_CheckTrainStatusinSystem_Node0_action N_CheckTrainStatusinSystem_Node0_action --> E_CheckTrainStatusinSystem S_CheckTrainStatusinSystem --> N_CheckTrainStatusinSystem_Node0 N_CheckTrainStatusinSystem_Node0 -- No --> E_CheckTrainStatusinSystem
File: GCX016.cbl
GIVEN:
A train processing request is received with train identification information
WHEN:
The system checks the train status in the USCS database
THEN:
- The system determines if the train is properly arrived or not arrived
- Sets appropriate processing flags
β Consolidated Acceptance Criteria
- The system needs to generate a warning notification → the system creates a warning message stating 'Re-arrive train or contact USCS' with train identification details
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GenerateTrainNotArrivedWarningMessage(["Start Step"])
E_GenerateTrainNotArrivedWarningMessage(["End Step"])
N_GenerateTrainNotArrivedWarningMessage_Node0{"The system needs to generate a
warning notification"}:::decision N_GenerateTrainNotArrivedWarningMessage_Node0_action["The system creates a warning
message stating Re-arrive train or
contact USCS with train
identification details"]:::main N_GenerateTrainNotArrivedWarningMessage_Node0 -- Yes --> N_GenerateTrainNotArrivedWarningMessage_Node0_action N_GenerateTrainNotArrivedWarningMessage_Node0_action --> E_GenerateTrainNotArrivedWarningMessage S_GenerateTrainNotArrivedWarningMessage --> N_GenerateTrainNotArrivedWarningMessage_Node0 N_GenerateTrainNotArrivedWarningMessage_Node0 -- No --> E_GenerateTrainNotArrivedWarningMessage
warning notification"}:::decision N_GenerateTrainNotArrivedWarningMessage_Node0_action["The system creates a warning
message stating Re-arrive train or
contact USCS with train
identification details"]:::main N_GenerateTrainNotArrivedWarningMessage_Node0 -- Yes --> N_GenerateTrainNotArrivedWarningMessage_Node0_action N_GenerateTrainNotArrivedWarningMessage_Node0_action --> E_GenerateTrainNotArrivedWarningMessage S_GenerateTrainNotArrivedWarningMessage --> N_GenerateTrainNotArrivedWarningMessage_Node0 N_GenerateTrainNotArrivedWarningMessage_Node0 -- No --> E_GenerateTrainNotArrivedWarningMessage
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
A train is found to be not arrived in the USCS system
WHEN:
The system needs to generate a warning notification
THEN:
The system creates a warning message stating 'Re-arrive train or contact USCS' with train identification details
β Consolidated Acceptance Criteria
- The system formats the warning message → the message includes train vessel name, manifest information, and disposition code details in a structured format
- The system formats the warning message → the message includes train identification, arrival details, and cancellation context
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_FormatWarningwithTrainDetails(["Start Step"])
E_FormatWarningwithTrainDetails(["End Step"])
N_FormatWarningwithTrainDetails_Node0{"The system formats the warning
message"}:::decision N_FormatWarningwithTrainDetails_Node0_action["The message includes train vessel
name, manifest information, and
disposition code details in a
structured format"]:::main N_FormatWarningwithTrainDetails_Node0 -- Yes --> N_FormatWarningwithTrainDetails_Node0_action N_FormatWarningwithTrainDetails_Node0_action --> E_FormatWarningwithTrainDetails S_FormatWarningwithTrainDetails --> N_FormatWarningwithTrainDetails_Node0 N_FormatWarningwithTrainDetails_Node1{"The system formats the warning
message"}:::decision N_FormatWarningwithTrainDetails_Node1_action["The message includes train
identification, arrival details, and
cancellation context"]:::main N_FormatWarningwithTrainDetails_Node1 -- Yes --> N_FormatWarningwithTrainDetails_Node1_action N_FormatWarningwithTrainDetails_Node1_action --> E_FormatWarningwithTrainDetails N_FormatWarningwithTrainDetails_Node0 -- No --> N_FormatWarningwithTrainDetails_Node1 N_FormatWarningwithTrainDetails_Node1 -- No --> E_FormatWarningwithTrainDetails
message"}:::decision N_FormatWarningwithTrainDetails_Node0_action["The message includes train vessel
name, manifest information, and
disposition code details in a
structured format"]:::main N_FormatWarningwithTrainDetails_Node0 -- Yes --> N_FormatWarningwithTrainDetails_Node0_action N_FormatWarningwithTrainDetails_Node0_action --> E_FormatWarningwithTrainDetails S_FormatWarningwithTrainDetails --> N_FormatWarningwithTrainDetails_Node0 N_FormatWarningwithTrainDetails_Node1{"The system formats the warning
message"}:::decision N_FormatWarningwithTrainDetails_Node1_action["The message includes train
identification, arrival details, and
cancellation context"]:::main N_FormatWarningwithTrainDetails_Node1 -- Yes --> N_FormatWarningwithTrainDetails_Node1_action N_FormatWarningwithTrainDetails_Node1_action --> E_FormatWarningwithTrainDetails N_FormatWarningwithTrainDetails_Node0 -- No --> N_FormatWarningwithTrainDetails_Node1 N_FormatWarningwithTrainDetails_Node1 -- No --> E_FormatWarningwithTrainDetails
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
A train not arrived warning needs to be generated
WHEN:
The system formats the warning message
THEN:
The message includes train vessel name, manifest information, and disposition code details in a structured format
File: GCX016.cbl
GIVEN:
A cancellation warning message needs to be generated
WHEN:
The system formats the warning message
THEN:
The message includes train identification, arrival details, and cancellation context
β Consolidated Acceptance Criteria
- The system routes the warning message → the message is sent through the Merlin system to operational teams and logged for tracking purposes
- The system routes the warning to the operations team → the operations team receives notification of the train arrival cancellation
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RouteWarningtoOperationsTeam(["Start Step"])
E_RouteWarningtoOperationsTeam(["End Step"])
N_RouteWarningtoOperationsTeam_Node0{"The system routes the warning
message"}:::decision N_RouteWarningtoOperationsTeam_Node0_action["The message is sent through the
Merlin system to operational teams
and logged for tracking purposes"]:::main N_RouteWarningtoOperationsTeam_Node0 -- Yes --> N_RouteWarningtoOperationsTeam_Node0_action N_RouteWarningtoOperationsTeam_Node0_action --> E_RouteWarningtoOperationsTeam S_RouteWarningtoOperationsTeam --> N_RouteWarningtoOperationsTeam_Node0 N_RouteWarningtoOperationsTeam_Node1{"The system routes the warning to
the operations team"}:::decision N_RouteWarningtoOperationsTeam_Node1_action["The operations team receives
notification of the train arrival
cancellation"]:::main N_RouteWarningtoOperationsTeam_Node1 -- Yes --> N_RouteWarningtoOperationsTeam_Node1_action N_RouteWarningtoOperationsTeam_Node1_action --> E_RouteWarningtoOperationsTeam N_RouteWarningtoOperationsTeam_Node0 -- No --> N_RouteWarningtoOperationsTeam_Node1 N_RouteWarningtoOperationsTeam_Node1 -- No --> E_RouteWarningtoOperationsTeam
message"}:::decision N_RouteWarningtoOperationsTeam_Node0_action["The message is sent through the
Merlin system to operational teams
and logged for tracking purposes"]:::main N_RouteWarningtoOperationsTeam_Node0 -- Yes --> N_RouteWarningtoOperationsTeam_Node0_action N_RouteWarningtoOperationsTeam_Node0_action --> E_RouteWarningtoOperationsTeam S_RouteWarningtoOperationsTeam --> N_RouteWarningtoOperationsTeam_Node0 N_RouteWarningtoOperationsTeam_Node1{"The system routes the warning to
the operations team"}:::decision N_RouteWarningtoOperationsTeam_Node1_action["The operations team receives
notification of the train arrival
cancellation"]:::main N_RouteWarningtoOperationsTeam_Node1 -- Yes --> N_RouteWarningtoOperationsTeam_Node1_action N_RouteWarningtoOperationsTeam_Node1_action --> E_RouteWarningtoOperationsTeam N_RouteWarningtoOperationsTeam_Node0 -- No --> N_RouteWarningtoOperationsTeam_Node1 N_RouteWarningtoOperationsTeam_Node1 -- No --> E_RouteWarningtoOperationsTeam
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
A formatted train not arrived warning message is ready for distribution
WHEN:
The system routes the warning message
THEN:
- The message is sent through the merlin system to operational teams
- Logged for tracking purposes
File: GCX016.cbl
GIVEN:
A complete cancellation warning message has been prepared
WHEN:
The system routes the warning to the operations team
THEN:
The operations team receives notification of the train arrival cancellation
β Consolidated Acceptance Criteria
- The system continues with cargo processing operations → processing continues with appropriate warning flags set to indicate the train arrival issue
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ContinueProcessingwithWarningFlag(["Start Step"])
E_ContinueProcessingwithWarningFlag(["End Step"])
N_ContinueProcessingwithWarningFlag_Node0{"The system continues with cargo
processing operations"}:::decision N_ContinueProcessingwithWarningFlag_Node0_action["Processing continues with
appropriate warning flags set to
indicate the train arrival issue"]:::main N_ContinueProcessingwithWarningFlag_Node0 -- Yes --> N_ContinueProcessingwithWarningFlag_Node0_action N_ContinueProcessingwithWarningFlag_Node0_action --> E_ContinueProcessingwithWarningFlag S_ContinueProcessingwithWarningFlag --> N_ContinueProcessingwithWarningFlag_Node0 N_ContinueProcessingwithWarningFlag_Node0 -- No --> E_ContinueProcessingwithWarningFlag
processing operations"}:::decision N_ContinueProcessingwithWarningFlag_Node0_action["Processing continues with
appropriate warning flags set to
indicate the train arrival issue"]:::main N_ContinueProcessingwithWarningFlag_Node0 -- Yes --> N_ContinueProcessingwithWarningFlag_Node0_action N_ContinueProcessingwithWarningFlag_Node0_action --> E_ContinueProcessingwithWarningFlag S_ContinueProcessingwithWarningFlag --> N_ContinueProcessingwithWarningFlag_Node0 N_ContinueProcessingwithWarningFlag_Node0 -- No --> E_ContinueProcessingwithWarningFlag
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
A train not arrived warning has been generated and routed
WHEN:
The system continues with cargo processing operations
THEN:
Processing continues with appropriate warning flags set to indicate the train arrival issue
β Consolidated Acceptance Criteria
- The system processes the train request → normal cargo processing operations proceed without generating warning messages
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_NormalTrainProcessing(["Start Step"])
E_NormalTrainProcessing(["End Step"])
N_NormalTrainProcessing_Node0{"The system processes the train
request"}:::decision N_NormalTrainProcessing_Node0_action["Normal cargo processing operations
proceed without generating warning
messages"]:::main N_NormalTrainProcessing_Node0 -- Yes --> N_NormalTrainProcessing_Node0_action N_NormalTrainProcessing_Node0_action --> E_NormalTrainProcessing S_NormalTrainProcessing --> N_NormalTrainProcessing_Node0 N_NormalTrainProcessing_Node0 -- No --> E_NormalTrainProcessing
request"}:::decision N_NormalTrainProcessing_Node0_action["Normal cargo processing operations
proceed without generating warning
messages"]:::main N_NormalTrainProcessing_Node0 -- Yes --> N_NormalTrainProcessing_Node0_action N_NormalTrainProcessing_Node0_action --> E_NormalTrainProcessing S_NormalTrainProcessing --> N_NormalTrainProcessing_Node0 N_NormalTrainProcessing_Node0 -- No --> E_NormalTrainProcessing
File: GCX016.cbl
GIVEN:
A train is found to be properly arrived in the USCS system
WHEN:
The system processes the train request
THEN:
Normal cargo processing operations proceed without generating warning messages
β Consolidated Acceptance Criteria
- The system processes the V9 segment with cancellation event code → the system initiates train arrival cancellation processing workflow
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_TrainArrivalCancellationRequestReceived(["Start Step"])
E_TrainArrivalCancellationRequestReceived(["End Step"])
N_TrainArrivalCancellationRequestReceived_Node0{"The system processes the V9 segment
with cancellation event code"}:::decision N_TrainArrivalCancellationRequestReceived_Node0_action["The system initiates train arrival
cancellation processing workflow"]:::main N_TrainArrivalCancellationRequestReceived_Node0 -- Yes --> N_TrainArrivalCancellationRequestReceived_Node0_action N_TrainArrivalCancellationRequestReceived_Node0_action --> E_TrainArrivalCancellationRequestReceived S_TrainArrivalCancellationRequestReceived --> N_TrainArrivalCancellationRequestReceived_Node0 N_TrainArrivalCancellationRequestReceived_Node0 -- No --> E_TrainArrivalCancellationRequestReceived
with cancellation event code"}:::decision N_TrainArrivalCancellationRequestReceived_Node0_action["The system initiates train arrival
cancellation processing workflow"]:::main N_TrainArrivalCancellationRequestReceived_Node0 -- Yes --> N_TrainArrivalCancellationRequestReceived_Node0_action N_TrainArrivalCancellationRequestReceived_Node0_action --> E_TrainArrivalCancellationRequestReceived S_TrainArrivalCancellationRequestReceived --> N_TrainArrivalCancellationRequestReceived_Node0 N_TrainArrivalCancellationRequestReceived_Node0 -- No --> E_TrainArrivalCancellationRequestReceived
File: GCX016.cbl
GIVEN:
A train arrival cancellation request is received with event code 'COC'
WHEN:
The system processes the V9 segment with cancellation event code
THEN:
The system initiates train arrival cancellation processing workflow
β Consolidated Acceptance Criteria
- The system searches for the train using the vessel name from the manifest → the system determines if the train exists and sets appropriate processing flags
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IsTrainFoundinSystem(["Start Step"])
E_IsTrainFoundinSystem(["End Step"])
N_IsTrainFoundinSystem_Node0{"The system searches for the train
using the vessel name from the
manifest"}:::decision N_IsTrainFoundinSystem_Node0_action["The system determines if the train
exists and sets appropriate
processing flags"]:::main N_IsTrainFoundinSystem_Node0 -- Yes --> N_IsTrainFoundinSystem_Node0_action N_IsTrainFoundinSystem_Node0_action --> E_IsTrainFoundinSystem S_IsTrainFoundinSystem --> N_IsTrainFoundinSystem_Node0 N_IsTrainFoundinSystem_Node0 -- No --> E_IsTrainFoundinSystem
using the vessel name from the
manifest"}:::decision N_IsTrainFoundinSystem_Node0_action["The system determines if the train
exists and sets appropriate
processing flags"]:::main N_IsTrainFoundinSystem_Node0 -- Yes --> N_IsTrainFoundinSystem_Node0_action N_IsTrainFoundinSystem_Node0_action --> E_IsTrainFoundinSystem S_IsTrainFoundinSystem --> N_IsTrainFoundinSystem_Node0 N_IsTrainFoundinSystem_Node0 -- No --> E_IsTrainFoundinSystem
File: GCX016.cbl
GIVEN:
A train arrival cancellation request is being processed
WHEN:
The system searches for the train using the vessel name from the manifest
THEN:
- The system determines if the train exists
- Sets appropriate processing flags
β Consolidated Acceptance Criteria
- The system retrieves train information using the vessel name → the system loads train details including current status and arrival information
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RetrieveTrainInformation(["Start Step"])
E_RetrieveTrainInformation(["End Step"])
N_RetrieveTrainInformation_Node0{"The system retrieves train
information using the vessel name"}:::decision N_RetrieveTrainInformation_Node0_action["The system loads train details
including current status and arrival
information"]:::main N_RetrieveTrainInformation_Node0 -- Yes --> N_RetrieveTrainInformation_Node0_action N_RetrieveTrainInformation_Node0_action --> E_RetrieveTrainInformation S_RetrieveTrainInformation --> N_RetrieveTrainInformation_Node0 N_RetrieveTrainInformation_Node0 -- No --> E_RetrieveTrainInformation
information using the vessel name"}:::decision N_RetrieveTrainInformation_Node0_action["The system loads train details
including current status and arrival
information"]:::main N_RetrieveTrainInformation_Node0 -- Yes --> N_RetrieveTrainInformation_Node0_action N_RetrieveTrainInformation_Node0_action --> E_RetrieveTrainInformation S_RetrieveTrainInformation --> N_RetrieveTrainInformation_Node0 N_RetrieveTrainInformation_Node0 -- No --> E_RetrieveTrainInformation
File: GCX016.cbl
GIVEN:
A train exists in the system for the cancellation request
WHEN:
The system retrieves train information using the vessel name
THEN:
- The system loads train details including current status
- Arrival information
β Consolidated Acceptance Criteria
- The system examines the train's current operational status → the system determines the train's arrival status for cancellation processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CheckCurrentTrainStatus(["Start Step"])
E_CheckCurrentTrainStatus(["End Step"])
N_CheckCurrentTrainStatus_Node0{"The system examines the train s
current operational status"}:::decision N_CheckCurrentTrainStatus_Node0_action["The system determines the train s
arrival status for cancellation
processing"]:::main N_CheckCurrentTrainStatus_Node0 -- Yes --> N_CheckCurrentTrainStatus_Node0_action N_CheckCurrentTrainStatus_Node0_action --> E_CheckCurrentTrainStatus S_CheckCurrentTrainStatus --> N_CheckCurrentTrainStatus_Node0 N_CheckCurrentTrainStatus_Node0 -- No --> E_CheckCurrentTrainStatus
current operational status"}:::decision N_CheckCurrentTrainStatus_Node0_action["The system determines the train s
arrival status for cancellation
processing"]:::main N_CheckCurrentTrainStatus_Node0 -- Yes --> N_CheckCurrentTrainStatus_Node0_action N_CheckCurrentTrainStatus_Node0_action --> E_CheckCurrentTrainStatus S_CheckCurrentTrainStatus --> N_CheckCurrentTrainStatus_Node0 N_CheckCurrentTrainStatus_Node0 -- No --> E_CheckCurrentTrainStatus
File: GCX016.cbl
GIVEN:
Train information has been retrieved from the system
WHEN:
The system examines the train's current operational status
THEN:
The system determines the train's arrival status for cancellation processing
β Consolidated Acceptance Criteria
- The system checks if the train status indicates arrival has occurred → the system determines whether cancellation processing should proceed or complete
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IsTrainCurrentlyArrived(["Start Step"])
E_IsTrainCurrentlyArrived(["End Step"])
N_IsTrainCurrentlyArrived_Node0{"The system checks if the train
status indicates arrival has
occurred"}:::decision N_IsTrainCurrentlyArrived_Node0_action["The system determines whether
cancellation processing should
proceed or complete"]:::main N_IsTrainCurrentlyArrived_Node0 -- Yes --> N_IsTrainCurrentlyArrived_Node0_action N_IsTrainCurrentlyArrived_Node0_action --> E_IsTrainCurrentlyArrived S_IsTrainCurrentlyArrived --> N_IsTrainCurrentlyArrived_Node0 N_IsTrainCurrentlyArrived_Node0 -- No --> E_IsTrainCurrentlyArrived
status indicates arrival has
occurred"}:::decision N_IsTrainCurrentlyArrived_Node0_action["The system determines whether
cancellation processing should
proceed or complete"]:::main N_IsTrainCurrentlyArrived_Node0 -- Yes --> N_IsTrainCurrentlyArrived_Node0_action N_IsTrainCurrentlyArrived_Node0_action --> E_IsTrainCurrentlyArrived S_IsTrainCurrentlyArrived --> N_IsTrainCurrentlyArrived_Node0 N_IsTrainCurrentlyArrived_Node0 -- No --> E_IsTrainCurrentlyArrived
File: GCX016.cbl
GIVEN:
The train's current status has been assessed
WHEN:
The system checks if the train status indicates arrival has occurred
THEN:
The system determines whether cancellation processing should proceed or complete
β Consolidated Acceptance Criteria
- The system processes the cancellation for an arrived train → the system generates a cancellation warning message with appropriate details
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GenerateCancellationWarningMessage(["Start Step"])
E_GenerateCancellationWarningMessage(["End Step"])
N_GenerateCancellationWarningMessage_Node0{"The system processes the
cancellation for an arrived train"}:::decision N_GenerateCancellationWarningMessage_Node0_action["The system generates a cancellation
warning message with appropriate
details"]:::main N_GenerateCancellationWarningMessage_Node0 -- Yes --> N_GenerateCancellationWarningMessage_Node0_action N_GenerateCancellationWarningMessage_Node0_action --> E_GenerateCancellationWarningMessage S_GenerateCancellationWarningMessage --> N_GenerateCancellationWarningMessage_Node0 N_GenerateCancellationWarningMessage_Node0 -- No --> E_GenerateCancellationWarningMessage
cancellation for an arrived train"}:::decision N_GenerateCancellationWarningMessage_Node0_action["The system generates a cancellation
warning message with appropriate
details"]:::main N_GenerateCancellationWarningMessage_Node0 -- Yes --> N_GenerateCancellationWarningMessage_Node0_action N_GenerateCancellationWarningMessage_Node0_action --> E_GenerateCancellationWarningMessage S_GenerateCancellationWarningMessage --> N_GenerateCancellationWarningMessage_Node0 N_GenerateCancellationWarningMessage_Node0 -- No --> E_GenerateCancellationWarningMessage
File: GCX016.cbl
GIVEN:
A train is currently in arrived status and cancellation is requested
WHEN:
The system processes the cancellation for an arrived train
THEN:
The system generates a cancellation warning message with appropriate details
β Consolidated Acceptance Criteria
- The system includes the cancellation reason code → the message contains the specific reason code that triggered the cancellation
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IncludeCancellationReasonCode(["Start Step"])
E_IncludeCancellationReasonCode(["End Step"])
N_IncludeCancellationReasonCode_Node0{"The system includes the
cancellation reason code"}:::decision N_IncludeCancellationReasonCode_Node0_action["The message contains the specific
reason code that triggered the
cancellation"]:::main N_IncludeCancellationReasonCode_Node0 -- Yes --> N_IncludeCancellationReasonCode_Node0_action N_IncludeCancellationReasonCode_Node0_action --> E_IncludeCancellationReasonCode S_IncludeCancellationReasonCode --> N_IncludeCancellationReasonCode_Node0 N_IncludeCancellationReasonCode_Node0 -- No --> E_IncludeCancellationReasonCode
cancellation reason code"}:::decision N_IncludeCancellationReasonCode_Node0_action["The message contains the specific
reason code that triggered the
cancellation"]:::main N_IncludeCancellationReasonCode_Node0 -- Yes --> N_IncludeCancellationReasonCode_Node0_action N_IncludeCancellationReasonCode_Node0_action --> E_IncludeCancellationReasonCode S_IncludeCancellationReasonCode --> N_IncludeCancellationReasonCode_Node0 N_IncludeCancellationReasonCode_Node0 -- No --> E_IncludeCancellationReasonCode
File: GCX016.cbl
GIVEN:
A warning message is being formatted for train arrival cancellation
WHEN:
The system includes the cancellation reason code
THEN:
The message contains the specific reason code that triggered the cancellation
β Consolidated Acceptance Criteria
- The system adds CBP reference information → the message includes instructions to contact CBP and relevant reference numbers
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AddCBPReferenceInformation(["Start Step"])
E_AddCBPReferenceInformation(["End Step"])
N_AddCBPReferenceInformation_Node0{"The system adds CBP reference
information"}:::decision N_AddCBPReferenceInformation_Node0_action["The message includes instructions
to contact CBP and relevant
reference numbers"]:::main N_AddCBPReferenceInformation_Node0 -- Yes --> N_AddCBPReferenceInformation_Node0_action N_AddCBPReferenceInformation_Node0_action --> E_AddCBPReferenceInformation S_AddCBPReferenceInformation --> N_AddCBPReferenceInformation_Node0 N_AddCBPReferenceInformation_Node0 -- No --> E_AddCBPReferenceInformation
information"}:::decision N_AddCBPReferenceInformation_Node0_action["The message includes instructions
to contact CBP and relevant
reference numbers"]:::main N_AddCBPReferenceInformation_Node0 -- Yes --> N_AddCBPReferenceInformation_Node0_action N_AddCBPReferenceInformation_Node0_action --> E_AddCBPReferenceInformation S_AddCBPReferenceInformation --> N_AddCBPReferenceInformation_Node0 N_AddCBPReferenceInformation_Node0 -- No --> E_AddCBPReferenceInformation
File: GCX016.cbl
GIVEN:
A cancellation warning message is being prepared
WHEN:
The system adds CBP reference information
THEN:
- The message includes instructions to contact cbp
- Relevant reference numbers
β Consolidated Acceptance Criteria
- The system sends notification to manifest control → manifest control receives details of the cancelled train arrival for processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SendNotificationtoManifestControl(["Start Step"])
E_SendNotificationtoManifestControl(["End Step"])
N_SendNotificationtoManifestControl_Node0{"The system sends notification to
manifest control"}:::decision N_SendNotificationtoManifestControl_Node0_action["Manifest control receives details
of the cancelled train arrival for
processing"]:::main N_SendNotificationtoManifestControl_Node0 -- Yes --> N_SendNotificationtoManifestControl_Node0_action N_SendNotificationtoManifestControl_Node0_action --> E_SendNotificationtoManifestControl S_SendNotificationtoManifestControl --> N_SendNotificationtoManifestControl_Node0 N_SendNotificationtoManifestControl_Node0 -- No --> E_SendNotificationtoManifestControl
manifest control"}:::decision N_SendNotificationtoManifestControl_Node0_action["Manifest control receives details
of the cancelled train arrival for
processing"]:::main N_SendNotificationtoManifestControl_Node0 -- Yes --> N_SendNotificationtoManifestControl_Node0_action N_SendNotificationtoManifestControl_Node0_action --> E_SendNotificationtoManifestControl S_SendNotificationtoManifestControl --> N_SendNotificationtoManifestControl_Node0 N_SendNotificationtoManifestControl_Node0 -- No --> E_SendNotificationtoManifestControl
File: GCX016.cbl
GIVEN:
The operations team has been notified of the cancellation
WHEN:
The system sends notification to manifest control
THEN:
Manifest control receives details of the cancelled train arrival for processing
β Consolidated Acceptance Criteria
- The system updates the train status → the train status is changed to cancelled and arrival information is cleared
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UpdateTrainStatustoCancelled(["Start Step"])
E_UpdateTrainStatustoCancelled(["End Step"])
N_UpdateTrainStatustoCancelled_Node0{"The system updates the train status"}:::decision
N_UpdateTrainStatustoCancelled_Node0_action["The train status is changed to
cancelled and arrival information is
cleared"]:::main N_UpdateTrainStatustoCancelled_Node0 -- Yes --> N_UpdateTrainStatustoCancelled_Node0_action N_UpdateTrainStatustoCancelled_Node0_action --> E_UpdateTrainStatustoCancelled S_UpdateTrainStatustoCancelled --> N_UpdateTrainStatustoCancelled_Node0 N_UpdateTrainStatustoCancelled_Node0 -- No --> E_UpdateTrainStatustoCancelled
cancelled and arrival information is
cleared"]:::main N_UpdateTrainStatustoCancelled_Node0 -- Yes --> N_UpdateTrainStatustoCancelled_Node0_action N_UpdateTrainStatustoCancelled_Node0_action --> E_UpdateTrainStatustoCancelled S_UpdateTrainStatustoCancelled --> N_UpdateTrainStatustoCancelled_Node0 N_UpdateTrainStatustoCancelled_Node0 -- No --> E_UpdateTrainStatustoCancelled
File: GCX016.cbl
GIVEN:
All notifications have been sent for the train arrival cancellation
WHEN:
The system updates the train status
THEN:
- The train status is changed to cancelled
- Arrival information is cleared
β Consolidated Acceptance Criteria
- The system logs the cancellation event → a complete audit record is created with cancellation details, timestamp, and reason code
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogCancellationEvent(["Start Step"])
E_LogCancellationEvent(["End Step"])
N_LogCancellationEvent_Node0{"The system logs the cancellation
event"}:::decision N_LogCancellationEvent_Node0_action["A complete audit record is created
with cancellation details,
timestamp, and reason code"]:::main N_LogCancellationEvent_Node0 -- Yes --> N_LogCancellationEvent_Node0_action N_LogCancellationEvent_Node0_action --> E_LogCancellationEvent S_LogCancellationEvent --> N_LogCancellationEvent_Node0 N_LogCancellationEvent_Node0 -- No --> E_LogCancellationEvent
event"}:::decision N_LogCancellationEvent_Node0_action["A complete audit record is created
with cancellation details,
timestamp, and reason code"]:::main N_LogCancellationEvent_Node0 -- Yes --> N_LogCancellationEvent_Node0_action N_LogCancellationEvent_Node0_action --> E_LogCancellationEvent S_LogCancellationEvent --> N_LogCancellationEvent_Node0 N_LogCancellationEvent_Node0 -- No --> E_LogCancellationEvent
File: GCX016.cbl
GIVEN:
The train status has been updated to cancelled
WHEN:
The system logs the cancellation event
THEN:
A complete audit record is created with cancellation details, timestamp, and reason code
β Consolidated Acceptance Criteria
- The system cannot locate the train in the database → an error message is generated indicating the train was not found
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GenerateErrorMessageTrainNotFound(["Start Step"])
E_GenerateErrorMessageTrainNotFound(["End Step"])
N_GenerateErrorMessageTrainNotFound_Node0{"The system cannot locate the train
in the database"}:::decision N_GenerateErrorMessageTrainNotFound_Node0_action["An error message is generated
indicating the train was not found"]:::main N_GenerateErrorMessageTrainNotFound_Node0 -- Yes --> N_GenerateErrorMessageTrainNotFound_Node0_action N_GenerateErrorMessageTrainNotFound_Node0_action --> E_GenerateErrorMessageTrainNotFound S_GenerateErrorMessageTrainNotFound --> N_GenerateErrorMessageTrainNotFound_Node0 N_GenerateErrorMessageTrainNotFound_Node0 -- No --> E_GenerateErrorMessageTrainNotFound
in the database"}:::decision N_GenerateErrorMessageTrainNotFound_Node0_action["An error message is generated
indicating the train was not found"]:::main N_GenerateErrorMessageTrainNotFound_Node0 -- Yes --> N_GenerateErrorMessageTrainNotFound_Node0_action N_GenerateErrorMessageTrainNotFound_Node0_action --> E_GenerateErrorMessageTrainNotFound S_GenerateErrorMessageTrainNotFound --> N_GenerateErrorMessageTrainNotFound_Node0 N_GenerateErrorMessageTrainNotFound_Node0 -- No --> E_GenerateErrorMessageTrainNotFound
File: GCX016.cbl
GIVEN:
A train arrival cancellation request is received for a non-existent train
WHEN:
The system cannot locate the train in the database
THEN:
An error message is generated indicating the train was not found
β Consolidated Acceptance Criteria
- The system routes the error message → the system administrator receives the error for investigation and resolution
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RouteErrortoSystemAdministrator(["Start Step"])
E_RouteErrortoSystemAdministrator(["End Step"])
N_RouteErrortoSystemAdministrator_Node0{"The system routes the error message"}:::decision
N_RouteErrortoSystemAdministrator_Node0_action["The system administrator receives
the error for investigation and
resolution"]:::exclusion N_RouteErrortoSystemAdministrator_Node0 -- Yes -->|Alternative| N_RouteErrortoSystemAdministrator_Node0_action N_RouteErrortoSystemAdministrator_Node0_action --> E_RouteErrortoSystemAdministrator S_RouteErrortoSystemAdministrator --> N_RouteErrortoSystemAdministrator_Node0 N_RouteErrortoSystemAdministrator_Node0 -- No --> E_RouteErrortoSystemAdministrator
the error for investigation and
resolution"]:::exclusion N_RouteErrortoSystemAdministrator_Node0 -- Yes -->|Alternative| N_RouteErrortoSystemAdministrator_Node0_action N_RouteErrortoSystemAdministrator_Node0_action --> E_RouteErrortoSystemAdministrator S_RouteErrortoSystemAdministrator --> N_RouteErrortoSystemAdministrator_Node0 N_RouteErrortoSystemAdministrator_Node0 -- No --> E_RouteErrortoSystemAdministrator
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
An error has been generated for a train not found condition
WHEN:
The system routes the error message
THEN:
- The system administrator receives the error for investigation
- Resolution
β Consolidated Acceptance Criteria
- The system checks for existing S09 status segments for the cargo → the system identifies whether status segments exist or need to be created
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_DoesCargoHaveExistingS09StatusSegments(["Start Step"])
E_DoesCargoHaveExistingS09StatusSegments(["End Step"])
N_DoesCargoHaveExistingS09StatusSegments_Node0{"The system checks for existing S09
status segments for the cargo"}:::decision N_DoesCargoHaveExistingS09StatusSegments_Node0_action["The system identifies whether
status segments exist or need to be
created"]:::main N_DoesCargoHaveExistingS09StatusSegments_Node0 -- Yes --> N_DoesCargoHaveExistingS09StatusSegments_Node0_action N_DoesCargoHaveExistingS09StatusSegments_Node0_action --> E_DoesCargoHaveExistingS09StatusSegments S_DoesCargoHaveExistingS09StatusSegments --> N_DoesCargoHaveExistingS09StatusSegments_Node0 N_DoesCargoHaveExistingS09StatusSegments_Node0 -- No --> E_DoesCargoHaveExistingS09StatusSegments
status segments for the cargo"}:::decision N_DoesCargoHaveExistingS09StatusSegments_Node0_action["The system identifies whether
status segments exist or need to be
created"]:::main N_DoesCargoHaveExistingS09StatusSegments_Node0 -- Yes --> N_DoesCargoHaveExistingS09StatusSegments_Node0_action N_DoesCargoHaveExistingS09StatusSegments_Node0_action --> E_DoesCargoHaveExistingS09StatusSegments S_DoesCargoHaveExistingS09StatusSegments --> N_DoesCargoHaveExistingS09StatusSegments_Node0 N_DoesCargoHaveExistingS09StatusSegments_Node0 -- No --> E_DoesCargoHaveExistingS09StatusSegments
File: GCX016.cbl
GIVEN:
A cargo record is identified for status array creation
WHEN:
The system checks for existing S09 status segments for the cargo
THEN:
The system identifies whether status segments exist or need to be created
β Consolidated Acceptance Criteria
- The system needs to work with cargo status information → the system retrieves all existing S09 status segments for the cargo record
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RetrieveExistingS09SegmentsfromDatabase(["Start Step"])
E_RetrieveExistingS09SegmentsfromDatabase(["End Step"])
N_RetrieveExistingS09SegmentsfromDatabase_Node0{"The system needs to work with cargo
status information"}:::decision N_RetrieveExistingS09SegmentsfromDatabase_Node0_action["The system retrieves all existing
S09 status segments for the cargo
record"]:::main N_RetrieveExistingS09SegmentsfromDatabase_Node0 -- Yes --> N_RetrieveExistingS09SegmentsfromDatabase_Node0_action N_RetrieveExistingS09SegmentsfromDatabase_Node0_action --> E_RetrieveExistingS09SegmentsfromDatabase S_RetrieveExistingS09SegmentsfromDatabase --> N_RetrieveExistingS09SegmentsfromDatabase_Node0 N_RetrieveExistingS09SegmentsfromDatabase_Node0 -- No --> E_RetrieveExistingS09SegmentsfromDatabase
status information"}:::decision N_RetrieveExistingS09SegmentsfromDatabase_Node0_action["The system retrieves all existing
S09 status segments for the cargo
record"]:::main N_RetrieveExistingS09SegmentsfromDatabase_Node0 -- Yes --> N_RetrieveExistingS09SegmentsfromDatabase_Node0_action N_RetrieveExistingS09SegmentsfromDatabase_Node0_action --> E_RetrieveExistingS09SegmentsfromDatabase S_RetrieveExistingS09SegmentsfromDatabase --> N_RetrieveExistingS09SegmentsfromDatabase_Node0 N_RetrieveExistingS09SegmentsfromDatabase_Node0 -- No --> E_RetrieveExistingS09SegmentsfromDatabase
File: GCX016.cbl
GIVEN:
A cargo record has existing S09 status segments in the database
WHEN:
The system needs to work with cargo status information
THEN:
The system retrieves all existing S09 status segments for the cargo record
β Consolidated Acceptance Criteria
- The system needs to create status tracking for the cargo → the system initializes an empty status array structure
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_InitializeEmptyStatusArrayStructure(["Start Step"])
E_InitializeEmptyStatusArrayStructure(["End Step"])
N_InitializeEmptyStatusArrayStructure_Node0{"The system needs to create status
tracking for the cargo"}:::decision N_InitializeEmptyStatusArrayStructure_Node0_action["The system initializes an empty
status array structure"]:::main N_InitializeEmptyStatusArrayStructure_Node0 -- Yes --> N_InitializeEmptyStatusArrayStructure_Node0_action N_InitializeEmptyStatusArrayStructure_Node0_action --> E_InitializeEmptyStatusArrayStructure S_InitializeEmptyStatusArrayStructure --> N_InitializeEmptyStatusArrayStructure_Node0 N_InitializeEmptyStatusArrayStructure_Node0 -- No --> E_InitializeEmptyStatusArrayStructure
tracking for the cargo"}:::decision N_InitializeEmptyStatusArrayStructure_Node0_action["The system initializes an empty
status array structure"]:::main N_InitializeEmptyStatusArrayStructure_Node0 -- Yes --> N_InitializeEmptyStatusArrayStructure_Node0_action N_InitializeEmptyStatusArrayStructure_Node0_action --> E_InitializeEmptyStatusArrayStructure S_InitializeEmptyStatusArrayStructure --> N_InitializeEmptyStatusArrayStructure_Node0 N_InitializeEmptyStatusArrayStructure_Node0 -- No --> E_InitializeEmptyStatusArrayStructure
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
A cargo record does not have existing S09 status segments
WHEN:
The system needs to create status tracking for the cargo
THEN:
The system initializes an empty status array structure
β Consolidated Acceptance Criteria
- The system initializes the array structure → the array counter is set to zero to indicate no status entries exist
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetArrayCountertoZero(["Start Step"])
E_SetArrayCountertoZero(["End Step"])
N_SetArrayCountertoZero_Node0{"The system initializes the array
structure"}:::decision N_SetArrayCountertoZero_Node0_action["The array counter is set to zero to
indicate no status entries exist"]:::main N_SetArrayCountertoZero_Node0 -- Yes --> N_SetArrayCountertoZero_Node0_action N_SetArrayCountertoZero_Node0_action --> E_SetArrayCountertoZero S_SetArrayCountertoZero --> N_SetArrayCountertoZero_Node0 N_SetArrayCountertoZero_Node0 -- No --> E_SetArrayCountertoZero
structure"}:::decision N_SetArrayCountertoZero_Node0_action["The array counter is set to zero to
indicate no status entries exist"]:::main N_SetArrayCountertoZero_Node0 -- Yes --> N_SetArrayCountertoZero_Node0_action N_SetArrayCountertoZero_Node0_action --> E_SetArrayCountertoZero S_SetArrayCountertoZero --> N_SetArrayCountertoZero_Node0 N_SetArrayCountertoZero_Node0 -- No --> E_SetArrayCountertoZero
File: GCX016.cbl
GIVEN:
A new status array is being created for a cargo record
WHEN:
The system initializes the array structure
THEN:
The array counter is set to zero to indicate no status entries exist
β Consolidated Acceptance Criteria
- The system allocates memory for status tracking → s09A status array memory is allocated with proper structure
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AllocateS09AStatusArrayMemory(["Start Step"])
E_AllocateS09AStatusArrayMemory(["End Step"])
N_AllocateS09AStatusArrayMemory_Node0{"The system allocates memory for
status tracking"}:::decision N_AllocateS09AStatusArrayMemory_Node0_action["S09A status array memory is
allocated with proper structure"]:::main N_AllocateS09AStatusArrayMemory_Node0 -- Yes --> N_AllocateS09AStatusArrayMemory_Node0_action N_AllocateS09AStatusArrayMemory_Node0_action --> E_AllocateS09AStatusArrayMemory S_AllocateS09AStatusArrayMemory --> N_AllocateS09AStatusArrayMemory_Node0 N_AllocateS09AStatusArrayMemory_Node0 -- No --> E_AllocateS09AStatusArrayMemory
status tracking"}:::decision N_AllocateS09AStatusArrayMemory_Node0_action["S09A status array memory is
allocated with proper structure"]:::main N_AllocateS09AStatusArrayMemory_Node0 -- Yes --> N_AllocateS09AStatusArrayMemory_Node0_action N_AllocateS09AStatusArrayMemory_Node0_action --> E_AllocateS09AStatusArrayMemory S_AllocateS09AStatusArrayMemory --> N_AllocateS09AStatusArrayMemory_Node0 N_AllocateS09AStatusArrayMemory_Node0 -- No --> E_AllocateS09AStatusArrayMemory
File: GCX016.cbl
GIVEN:
A status array structure needs to be created
WHEN:
The system allocates memory for status tracking
THEN:
S09A status array memory is allocated with proper structure
β Consolidated Acceptance Criteria
- The system configures the array for use → default array parameters are set according to system standards
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetDefaultArrayParameters(["Start Step"])
E_SetDefaultArrayParameters(["End Step"])
N_SetDefaultArrayParameters_Node0{"The system configures the array for
use"}:::decision N_SetDefaultArrayParameters_Node0_action["Default array parameters are set
according to system standards"]:::main N_SetDefaultArrayParameters_Node0 -- Yes --> N_SetDefaultArrayParameters_Node0_action N_SetDefaultArrayParameters_Node0_action --> E_SetDefaultArrayParameters S_SetDefaultArrayParameters --> N_SetDefaultArrayParameters_Node0 N_SetDefaultArrayParameters_Node0 -- No --> E_SetDefaultArrayParameters
use"}:::decision N_SetDefaultArrayParameters_Node0_action["Default array parameters are set
according to system standards"]:::main N_SetDefaultArrayParameters_Node0 -- Yes --> N_SetDefaultArrayParameters_Node0_action N_SetDefaultArrayParameters_Node0_action --> E_SetDefaultArrayParameters S_SetDefaultArrayParameters --> N_SetDefaultArrayParameters_Node0 N_SetDefaultArrayParameters_Node0 -- No --> E_SetDefaultArrayParameters
File: GCX016.cbl
GIVEN:
A new status array has been allocated
WHEN:
The system configures the array for use
THEN:
Default array parameters are set according to system standards
β Consolidated Acceptance Criteria
- The system needs to track the array state → the array is marked as new and empty for proper processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MarkArrayasNewEmpty(["Start Step"])
E_MarkArrayasNewEmpty(["End Step"])
N_MarkArrayasNewEmpty_Node0{"The system needs to track the array
state"}:::decision N_MarkArrayasNewEmpty_Node0_action["The array is marked as new and
empty for proper processing"]:::main N_MarkArrayasNewEmpty_Node0 -- Yes --> N_MarkArrayasNewEmpty_Node0_action N_MarkArrayasNewEmpty_Node0_action --> E_MarkArrayasNewEmpty S_MarkArrayasNewEmpty --> N_MarkArrayasNewEmpty_Node0 N_MarkArrayasNewEmpty_Node0 -- No --> E_MarkArrayasNewEmpty
state"}:::decision N_MarkArrayasNewEmpty_Node0_action["The array is marked as new and
empty for proper processing"]:::main N_MarkArrayasNewEmpty_Node0 -- Yes --> N_MarkArrayasNewEmpty_Node0_action N_MarkArrayasNewEmpty_Node0_action --> E_MarkArrayasNewEmpty S_MarkArrayasNewEmpty --> N_MarkArrayasNewEmpty_Node0 N_MarkArrayasNewEmpty_Node0 -- No --> E_MarkArrayasNewEmpty
File: GCX016.cbl
GIVEN:
A status array has been created and configured
WHEN:
The system needs to track the array state
THEN:
- The array is marked as new
- Empty for proper processing
β Consolidated Acceptance Criteria
- The system prepares for disposition code processing → the array is configured to accept and process disposition codes
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_PrepareArrayforDispositionCodeProcessing(["Start Step"])
E_PrepareArrayforDispositionCodeProcessing(["End Step"])
N_PrepareArrayforDispositionCodeProcessing_Node0{"The system prepares for disposition
code processing"}:::decision N_PrepareArrayforDispositionCodeProcessing_Node0_action["The array is configured to accept
and process disposition codes"]:::main N_PrepareArrayforDispositionCodeProcessing_Node0 -- Yes --> N_PrepareArrayforDispositionCodeProcessing_Node0_action N_PrepareArrayforDispositionCodeProcessing_Node0_action --> E_PrepareArrayforDispositionCodeProcessing S_PrepareArrayforDispositionCodeProcessing --> N_PrepareArrayforDispositionCodeProcessing_Node0 N_PrepareArrayforDispositionCodeProcessing_Node0 -- No --> E_PrepareArrayforDispositionCodeProcessing
code processing"}:::decision N_PrepareArrayforDispositionCodeProcessing_Node0_action["The array is configured to accept
and process disposition codes"]:::main N_PrepareArrayforDispositionCodeProcessing_Node0 -- Yes --> N_PrepareArrayforDispositionCodeProcessing_Node0_action N_PrepareArrayforDispositionCodeProcessing_Node0_action --> E_PrepareArrayforDispositionCodeProcessing S_PrepareArrayforDispositionCodeProcessing --> N_PrepareArrayforDispositionCodeProcessing_Node0 N_PrepareArrayforDispositionCodeProcessing_Node0 -- No --> E_PrepareArrayforDispositionCodeProcessing
File: GCX016.cbl
GIVEN:
A status array has been created and marked as new
WHEN:
The system prepares for disposition code processing
THEN:
- The array is configured to accept
- Process disposition codes
β Consolidated Acceptance Criteria
- The system completes array initialization → the status array is ready for use in cargo status operations
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_StatusArrayReadyforUse(["Start Step"])
E_StatusArrayReadyforUse(["End Step"])
N_StatusArrayReadyforUse_Node0{"The system completes array
initialization"}:::decision N_StatusArrayReadyforUse_Node0_action["The status array is ready for use
in cargo status operations"]:::main N_StatusArrayReadyforUse_Node0 -- Yes --> N_StatusArrayReadyforUse_Node0_action N_StatusArrayReadyforUse_Node0_action --> E_StatusArrayReadyforUse S_StatusArrayReadyforUse --> N_StatusArrayReadyforUse_Node0 N_StatusArrayReadyforUse_Node0 -- No --> E_StatusArrayReadyforUse
initialization"}:::decision N_StatusArrayReadyforUse_Node0_action["The status array is ready for use
in cargo status operations"]:::main N_StatusArrayReadyforUse_Node0 -- Yes --> N_StatusArrayReadyforUse_Node0_action N_StatusArrayReadyforUse_Node0_action --> E_StatusArrayReadyforUse S_StatusArrayReadyforUse --> N_StatusArrayReadyforUse_Node0 N_StatusArrayReadyforUse_Node0 -- No --> E_StatusArrayReadyforUse
File: GCX016.cbl
GIVEN:
A status array has been created and prepared for disposition code processing
WHEN:
The system completes array initialization
THEN:
The status array is ready for use in cargo status operations
β Consolidated Acceptance Criteria
- The system checks if the status array has any data elements → if the array is empty or has no valid entries, skip processing and complete the operation, otherwise proceed with status array processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_StatusArrayHasData(["Start Step"])
E_StatusArrayHasData(["End Step"])
N_StatusArrayHasData_Node0{"The system checks if the status
array has any data elements"}:::decision N_StatusArrayHasData_Node0_action["If the array is empty or has no
valid entries, skip processing and
complete the operation, otherwise
proceed with status array processing"]:::main N_StatusArrayHasData_Node0 -- Yes --> N_StatusArrayHasData_Node0_action N_StatusArrayHasData_Node0_action --> E_StatusArrayHasData S_StatusArrayHasData --> N_StatusArrayHasData_Node0 N_StatusArrayHasData_Node0 -- No --> E_StatusArrayHasData
array has any data elements"}:::decision N_StatusArrayHasData_Node0_action["If the array is empty or has no
valid entries, skip processing and
complete the operation, otherwise
proceed with status array processing"]:::main N_StatusArrayHasData_Node0 -- Yes --> N_StatusArrayHasData_Node0_action N_StatusArrayHasData_Node0_action --> E_StatusArrayHasData S_StatusArrayHasData --> N_StatusArrayHasData_Node0 N_StatusArrayHasData_Node0 -- No --> E_StatusArrayHasData
File: GCX016.cbl
GIVEN:
A cargo status array (S09A-ARRAY) exists for processing
WHEN:
The system checks if the status array has any data elements
THEN:
- If the array is empty or has no valid entries, skip processing
- Complete the operation, otherwise proceed with status array processing
β Consolidated Acceptance Criteria
- Beginning the status array replacement process → set the S09 segment counter to zero to start tracking segment creation
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_InitializeS09SegmentCounter(["Start Step"])
E_InitializeS09SegmentCounter(["End Step"])
N_InitializeS09SegmentCounter_Node0{"Beginning the status array
replacement process"}:::decision N_InitializeS09SegmentCounter_Node0_action["Set the S09 segment counter to zero
to start tracking segment creation"]:::main N_InitializeS09SegmentCounter_Node0 -- Yes --> N_InitializeS09SegmentCounter_Node0_action N_InitializeS09SegmentCounter_Node0_action --> E_InitializeS09SegmentCounter S_InitializeS09SegmentCounter --> N_InitializeS09SegmentCounter_Node0 N_InitializeS09SegmentCounter_Node0 -- No --> E_InitializeS09SegmentCounter
replacement process"}:::decision N_InitializeS09SegmentCounter_Node0_action["Set the S09 segment counter to zero
to start tracking segment creation"]:::main N_InitializeS09SegmentCounter_Node0 -- Yes --> N_InitializeS09SegmentCounter_Node0_action N_InitializeS09SegmentCounter_Node0_action --> E_InitializeS09SegmentCounter S_InitializeS09SegmentCounter --> N_InitializeS09SegmentCounter_Node0 N_InitializeS09SegmentCounter_Node0 -- No --> E_InitializeS09SegmentCounter
File: GCX016.cbl
GIVEN:
The status array contains valid data elements to process
WHEN:
Beginning the status array replacement process
THEN:
Set the S09 segment counter to zero to start tracking segment creation
β Consolidated Acceptance Criteria
- Processing status array elements sequentially → continue processing if more array elements exist, otherwise proceed to update the cargo root record
- The system checks for remaining elements → if more elements exist, continue scanning, otherwise proceed to final status determination
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MoreArrayElements(["Start Step"])
E_MoreArrayElements(["End Step"])
N_MoreArrayElements_Node0{"Processing status array elements
sequentially"}:::decision N_MoreArrayElements_Node0_action["Continue processing if more array
elements exist, otherwise proceed to
update the cargo root record"]:::main N_MoreArrayElements_Node0 -- Yes --> N_MoreArrayElements_Node0_action N_MoreArrayElements_Node0_action --> E_MoreArrayElements S_MoreArrayElements --> N_MoreArrayElements_Node0 N_MoreArrayElements_Node1{"The system checks for remaining
elements"}:::decision N_MoreArrayElements_Node1_action["If more elements exist, continue
scanning, otherwise proceed to final
status determination"]:::main N_MoreArrayElements_Node1 -- Yes --> N_MoreArrayElements_Node1_action N_MoreArrayElements_Node1_action --> E_MoreArrayElements N_MoreArrayElements_Node0 -- No --> N_MoreArrayElements_Node1 N_MoreArrayElements_Node1 -- No --> E_MoreArrayElements
sequentially"}:::decision N_MoreArrayElements_Node0_action["Continue processing if more array
elements exist, otherwise proceed to
update the cargo root record"]:::main N_MoreArrayElements_Node0 -- Yes --> N_MoreArrayElements_Node0_action N_MoreArrayElements_Node0_action --> E_MoreArrayElements S_MoreArrayElements --> N_MoreArrayElements_Node0 N_MoreArrayElements_Node1{"The system checks for remaining
elements"}:::decision N_MoreArrayElements_Node1_action["If more elements exist, continue
scanning, otherwise proceed to final
status determination"]:::main N_MoreArrayElements_Node1 -- Yes --> N_MoreArrayElements_Node1_action N_MoreArrayElements_Node1_action --> E_MoreArrayElements N_MoreArrayElements_Node0 -- No --> N_MoreArrayElements_Node1 N_MoreArrayElements_Node1 -- No --> E_MoreArrayElements
File: GCX016.cbl
GIVEN:
A status array with multiple elements exists
WHEN:
Processing status array elements sequentially
THEN:
Continue processing if more array elements exist, otherwise proceed to update the cargo root record
File: GCX016.cbl
GIVEN:
Current array element has been processed
WHEN:
The system checks for remaining elements
THEN:
If more elements exist, continue scanning, otherwise proceed to final status determination
β Consolidated Acceptance Criteria
- Building an S09 segment from the array element → initialize a new S09 segment structure with the cargo CCN key and appropriate sequence number
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_BuildS09SegmentfromArrayElement(["Start Step"])
E_BuildS09SegmentfromArrayElement(["End Step"])
N_BuildS09SegmentfromArrayElement_Node0{"Building an S09 segment from the
array element"}:::decision N_BuildS09SegmentfromArrayElement_Node0_action["Initialize a new S09 segment
structure with the cargo CCN key and
appropriate sequence number"]:::main N_BuildS09SegmentfromArrayElement_Node0 -- Yes --> N_BuildS09SegmentfromArrayElement_Node0_action N_BuildS09SegmentfromArrayElement_Node0_action --> E_BuildS09SegmentfromArrayElement S_BuildS09SegmentfromArrayElement --> N_BuildS09SegmentfromArrayElement_Node0 N_BuildS09SegmentfromArrayElement_Node0 -- No --> E_BuildS09SegmentfromArrayElement
array element"}:::decision N_BuildS09SegmentfromArrayElement_Node0_action["Initialize a new S09 segment
structure with the cargo CCN key and
appropriate sequence number"]:::main N_BuildS09SegmentfromArrayElement_Node0 -- Yes --> N_BuildS09SegmentfromArrayElement_Node0_action N_BuildS09SegmentfromArrayElement_Node0_action --> E_BuildS09SegmentfromArrayElement S_BuildS09SegmentfromArrayElement --> N_BuildS09SegmentfromArrayElement_Node0 N_BuildS09SegmentfromArrayElement_Node0 -- No --> E_BuildS09SegmentfromArrayElement
File: GCX016.cbl
GIVEN:
A valid status array element with disposition information
WHEN:
Building an S09 segment from the array element
THEN:
- Initialize a new s09 segment structure with the cargo ccn key
- Appropriate sequence number
β Consolidated Acceptance Criteria
- Building the S09 segment → copy the disposition code from the array element to the S09 segment disposition code field
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetDispositionCode(["Start Step"])
E_SetDispositionCode(["End Step"])
N_SetDispositionCode_Node0{"Building the S09 segment"}:::decision
N_SetDispositionCode_Node0_action["Copy the disposition code from the
array element to the S09 segment
disposition code field"]:::main N_SetDispositionCode_Node0 -- Yes --> N_SetDispositionCode_Node0_action N_SetDispositionCode_Node0_action --> E_SetDispositionCode S_SetDispositionCode --> N_SetDispositionCode_Node0 N_SetDispositionCode_Node0 -- No --> E_SetDispositionCode
array element to the S09 segment
disposition code field"]:::main N_SetDispositionCode_Node0 -- Yes --> N_SetDispositionCode_Node0_action N_SetDispositionCode_Node0_action --> E_SetDispositionCode S_SetDispositionCode --> N_SetDispositionCode_Node0 N_SetDispositionCode_Node0 -- No --> E_SetDispositionCode
File: GCX016.cbl
GIVEN:
A status array element contains a disposition code
WHEN:
Building the S09 segment
THEN:
Copy the disposition code from the array element to the S09 segment disposition code field
β Consolidated Acceptance Criteria
- Building the S09 segment → copy the entry number from the array element to the S09 segment entry number field
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetEntryNumber(["Start Step"])
E_SetEntryNumber(["End Step"])
N_SetEntryNumber_Node0{"Building the S09 segment"}:::decision
N_SetEntryNumber_Node0_action["Copy the entry number from the
array element to the S09 segment
entry number field"]:::main N_SetEntryNumber_Node0 -- Yes --> N_SetEntryNumber_Node0_action N_SetEntryNumber_Node0_action --> E_SetEntryNumber S_SetEntryNumber --> N_SetEntryNumber_Node0 N_SetEntryNumber_Node0 -- No --> E_SetEntryNumber
array element to the S09 segment
entry number field"]:::main N_SetEntryNumber_Node0 -- Yes --> N_SetEntryNumber_Node0_action N_SetEntryNumber_Node0_action --> E_SetEntryNumber S_SetEntryNumber --> N_SetEntryNumber_Node0 N_SetEntryNumber_Node0 -- No --> E_SetEntryNumber
File: GCX016.cbl
GIVEN:
A status array element contains entry number information
WHEN:
Building the S09 segment
THEN:
Copy the entry number from the array element to the S09 segment entry number field
β Consolidated Acceptance Criteria
- Building the S09 segment → copy the date and time stamps from the array element to the S09 segment date/time fields
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetDateTimeStamps(["Start Step"])
E_SetDateTimeStamps(["End Step"])
N_SetDateTimeStamps_Node0{"Building the S09 segment"}:::decision
N_SetDateTimeStamps_Node0_action["Copy the date and time stamps from
the array element to the S09 segment
datetime fields"]:::main N_SetDateTimeStamps_Node0 -- Yes --> N_SetDateTimeStamps_Node0_action N_SetDateTimeStamps_Node0_action --> E_SetDateTimeStamps S_SetDateTimeStamps --> N_SetDateTimeStamps_Node0 N_SetDateTimeStamps_Node0 -- No --> E_SetDateTimeStamps
the array element to the S09 segment
datetime fields"]:::main N_SetDateTimeStamps_Node0 -- Yes --> N_SetDateTimeStamps_Node0_action N_SetDateTimeStamps_Node0_action --> E_SetDateTimeStamps S_SetDateTimeStamps --> N_SetDateTimeStamps_Node0 N_SetDateTimeStamps_Node0 -- No --> E_SetDateTimeStamps
File: GCX016.cbl
GIVEN:
A status array element contains date and time information
WHEN:
Building the S09 segment
THEN:
- Copy the date
- Time stamps from the array element to the s09 segment date/time fields
β Consolidated Acceptance Criteria
- Inserting the S09 segment into the database → write the S09 segment to the GCSUSS09 status segments database
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_InsertS09SegmenttoDatabase(["Start Step"])
E_InsertS09SegmenttoDatabase(["End Step"])
N_InsertS09SegmenttoDatabase_Node0{"Inserting the S09 segment into the
database"}:::decision N_InsertS09SegmenttoDatabase_Node0_action["Write the S09 segment to the
GCSUSS09 status segments database"]:::main N_InsertS09SegmenttoDatabase_Node0 -- Yes --> N_InsertS09SegmenttoDatabase_Node0_action N_InsertS09SegmenttoDatabase_Node0_action --> E_InsertS09SegmenttoDatabase S_InsertS09SegmenttoDatabase --> N_InsertS09SegmenttoDatabase_Node0 N_InsertS09SegmenttoDatabase_Node0 -- No --> E_InsertS09SegmenttoDatabase
database"}:::decision N_InsertS09SegmenttoDatabase_Node0_action["Write the S09 segment to the
GCSUSS09 status segments database"]:::main N_InsertS09SegmenttoDatabase_Node0 -- Yes --> N_InsertS09SegmenttoDatabase_Node0_action N_InsertS09SegmenttoDatabase_Node0_action --> E_InsertS09SegmenttoDatabase S_InsertS09SegmenttoDatabase --> N_InsertS09SegmenttoDatabase_Node0 N_InsertS09SegmenttoDatabase_Node0 -- No --> E_InsertS09SegmenttoDatabase
File: GCX016.cbl
GIVEN:
A complete S09 segment has been constructed from status array data
WHEN:
Inserting the S09 segment into the database
THEN:
Write the S09 segment to the GCSUSS09 status segments database
β Consolidated Acceptance Criteria
- Tracking the number of segments created → increment the segment counter by one to reflect the new segment
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IncrementSegmentCounter(["Start Step"])
E_IncrementSegmentCounter(["End Step"])
N_IncrementSegmentCounter_Node0{"Tracking the number of segments
created"}:::decision N_IncrementSegmentCounter_Node0_action["Increment the segment counter by
one to reflect the new segment"]:::main N_IncrementSegmentCounter_Node0 -- Yes --> N_IncrementSegmentCounter_Node0_action N_IncrementSegmentCounter_Node0_action --> E_IncrementSegmentCounter S_IncrementSegmentCounter --> N_IncrementSegmentCounter_Node0 N_IncrementSegmentCounter_Node0 -- No --> E_IncrementSegmentCounter
created"}:::decision N_IncrementSegmentCounter_Node0_action["Increment the segment counter by
one to reflect the new segment"]:::main N_IncrementSegmentCounter_Node0 -- Yes --> N_IncrementSegmentCounter_Node0_action N_IncrementSegmentCounter_Node0_action --> E_IncrementSegmentCounter S_IncrementSegmentCounter --> N_IncrementSegmentCounter_Node0 N_IncrementSegmentCounter_Node0 -- No --> E_IncrementSegmentCounter
File: GCX016.cbl
GIVEN:
An S09 segment has been successfully created and inserted
WHEN:
Tracking the number of segments created
THEN:
Increment the segment counter by one to reflect the new segment
β Consolidated Acceptance Criteria
- Continuing array processing → move the array pointer to the next element for subsequent processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MovetoNextArrayElement(["Start Step"])
E_MovetoNextArrayElement(["End Step"])
N_MovetoNextArrayElement_Node0{"Continuing array processing"}:::decision
N_MovetoNextArrayElement_Node0_action["Move the array pointer to the next
element for subsequent processing"]:::main N_MovetoNextArrayElement_Node0 -- Yes --> N_MovetoNextArrayElement_Node0_action N_MovetoNextArrayElement_Node0_action --> E_MovetoNextArrayElement S_MovetoNextArrayElement --> N_MovetoNextArrayElement_Node0 N_MovetoNextArrayElement_Node0 -- No --> E_MovetoNextArrayElement
element for subsequent processing"]:::main N_MovetoNextArrayElement_Node0 -- Yes --> N_MovetoNextArrayElement_Node0_action N_MovetoNextArrayElement_Node0_action --> E_MovetoNextArrayElement S_MovetoNextArrayElement --> N_MovetoNextArrayElement_Node0 N_MovetoNextArrayElement_Node0 -- No --> E_MovetoNextArrayElement
File: GCX016.cbl
GIVEN:
The current status array element has been processed
WHEN:
Continuing array processing
THEN:
Move the array pointer to the next element for subsequent processing
β Consolidated Acceptance Criteria
- Updating the cargo root record → set the status segment count in the cargo root to match the number of S09 segments created
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UpdateCargoRootwithNewStatusCount(["Start Step"])
E_UpdateCargoRootwithNewStatusCount(["End Step"])
N_UpdateCargoRootwithNewStatusCount_Node0{"Updating the cargo root record"}:::decision
N_UpdateCargoRootwithNewStatusCount_Node0_action["Set the status segment count in the
cargo root to match the number of
S09 segments created"]:::main N_UpdateCargoRootwithNewStatusCount_Node0 -- Yes --> N_UpdateCargoRootwithNewStatusCount_Node0_action N_UpdateCargoRootwithNewStatusCount_Node0_action --> E_UpdateCargoRootwithNewStatusCount S_UpdateCargoRootwithNewStatusCount --> N_UpdateCargoRootwithNewStatusCount_Node0 N_UpdateCargoRootwithNewStatusCount_Node0 -- No --> E_UpdateCargoRootwithNewStatusCount
cargo root to match the number of
S09 segments created"]:::main N_UpdateCargoRootwithNewStatusCount_Node0 -- Yes --> N_UpdateCargoRootwithNewStatusCount_Node0_action N_UpdateCargoRootwithNewStatusCount_Node0_action --> E_UpdateCargoRootwithNewStatusCount S_UpdateCargoRootwithNewStatusCount --> N_UpdateCargoRootwithNewStatusCount_Node0 N_UpdateCargoRootwithNewStatusCount_Node0 -- No --> E_UpdateCargoRootwithNewStatusCount
File: GCX016.cbl
GIVEN:
All status array elements have been processed and S09 segments created
WHEN:
Updating the cargo root record
THEN:
Set the status segment count in the cargo root to match the number of S09 segments created
β Consolidated Acceptance Criteria
- Completing the status array replacement process → create a log entry documenting the successful status array update operation
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogStatusArrayUpdate(["Start Step"])
E_LogStatusArrayUpdate(["End Step"])
N_LogStatusArrayUpdate_Node0{"Completing the status array
replacement process"}:::decision N_LogStatusArrayUpdate_Node0_action["Create a log entry documenting the
successful status array update
operation"]:::main N_LogStatusArrayUpdate_Node0 -- Yes --> N_LogStatusArrayUpdate_Node0_action N_LogStatusArrayUpdate_Node0_action --> E_LogStatusArrayUpdate S_LogStatusArrayUpdate --> N_LogStatusArrayUpdate_Node0 N_LogStatusArrayUpdate_Node0 -- No --> E_LogStatusArrayUpdate
replacement process"}:::decision N_LogStatusArrayUpdate_Node0_action["Create a log entry documenting the
successful status array update
operation"]:::main N_LogStatusArrayUpdate_Node0 -- Yes --> N_LogStatusArrayUpdate_Node0_action N_LogStatusArrayUpdate_Node0_action --> E_LogStatusArrayUpdate S_LogStatusArrayUpdate --> N_LogStatusArrayUpdate_Node0 N_LogStatusArrayUpdate_Node0 -- No --> E_LogStatusArrayUpdate
File: GCX016.cbl
GIVEN:
The cargo record and S09 segments have been successfully updated in the database
WHEN:
Completing the status array replacement process
THEN:
Create a log entry documenting the successful status array update operation
β Consolidated Acceptance Criteria
- If the manifest type → the system identifies whether it is a lead manifest with associated followers or a single manifest
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IsLeadManifest(["Start Step"])
E_IsLeadManifest(["End Step"])
N_IsLeadManifest_Node0{"The system evaluates the manifest
type"}:::decision N_IsLeadManifest_Node0_action["The system identifies whether it is
a lead manifest with associated
followers or a single manifest"]:::main N_IsLeadManifest_Node0 -- Yes --> N_IsLeadManifest_Node0_action N_IsLeadManifest_Node0_action --> E_IsLeadManifest S_IsLeadManifest --> N_IsLeadManifest_Node0 N_IsLeadManifest_Node0 -- No --> E_IsLeadManifest
type"}:::decision N_IsLeadManifest_Node0_action["The system identifies whether it is
a lead manifest with associated
followers or a single manifest"]:::main N_IsLeadManifest_Node0 -- Yes --> N_IsLeadManifest_Node0_action N_IsLeadManifest_Node0_action --> E_IsLeadManifest S_IsLeadManifest --> N_IsLeadManifest_Node0 N_IsLeadManifest_Node0 -- No --> E_IsLeadManifest
File: GCX016.cbl
GIVEN:
A manifest record is being processed
WHEN:
The system evaluates the manifest type
THEN:
The system identifies whether it is a lead manifest with associated followers or a single manifest
β Consolidated Acceptance Criteria
- The system needs to process associated follower manifests → the system retrieves the complete list of follower manifests from GCWTL-TRAIN-LIST
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GetFollowerManifestList(["Start Step"])
E_GetFollowerManifestList(["End Step"])
N_GetFollowerManifestList_Node0{"The system needs to process
associated follower manifests"}:::decision N_GetFollowerManifestList_Node0_action["The system retrieves the complete
list of follower manifests from
GCWTL-TRAIN-LIST"]:::main N_GetFollowerManifestList_Node0 -- Yes --> N_GetFollowerManifestList_Node0_action N_GetFollowerManifestList_Node0_action --> E_GetFollowerManifestList S_GetFollowerManifestList --> N_GetFollowerManifestList_Node0 N_GetFollowerManifestList_Node0 -- No --> E_GetFollowerManifestList
associated follower manifests"}:::decision N_GetFollowerManifestList_Node0_action["The system retrieves the complete
list of follower manifests from
GCWTL-TRAIN-LIST"]:::main N_GetFollowerManifestList_Node0 -- Yes --> N_GetFollowerManifestList_Node0_action N_GetFollowerManifestList_Node0_action --> E_GetFollowerManifestList S_GetFollowerManifestList --> N_GetFollowerManifestList_Node0 N_GetFollowerManifestList_Node0 -- No --> E_GetFollowerManifestList
File: GCX016.cbl
GIVEN:
A lead manifest has been identified
WHEN:
The system needs to process associated follower manifests
THEN:
The system retrieves the complete list of follower manifests from GCWTL-TRAIN-LIST
β Consolidated Acceptance Criteria
- The system is iterating through the follower manifest list → the system determines if more follower manifests are available for processing or if all have been processed
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MoreFollowersAvailable(["Start Step"])
E_MoreFollowersAvailable(["End Step"])
N_MoreFollowersAvailable_Node0{"The system is iterating through the
follower manifest list"}:::decision N_MoreFollowersAvailable_Node0_action["The system determines if more
follower manifests are available for
processing or if all have been
processed"]:::main N_MoreFollowersAvailable_Node0 -- Yes --> N_MoreFollowersAvailable_Node0_action N_MoreFollowersAvailable_Node0_action --> E_MoreFollowersAvailable S_MoreFollowersAvailable --> N_MoreFollowersAvailable_Node0 N_MoreFollowersAvailable_Node0 -- No --> E_MoreFollowersAvailable
follower manifest list"}:::decision N_MoreFollowersAvailable_Node0_action["The system determines if more
follower manifests are available for
processing or if all have been
processed"]:::main N_MoreFollowersAvailable_Node0 -- Yes --> N_MoreFollowersAvailable_Node0_action N_MoreFollowersAvailable_Node0_action --> E_MoreFollowersAvailable S_MoreFollowersAvailable --> N_MoreFollowersAvailable_Node0 N_MoreFollowersAvailable_Node0 -- No --> E_MoreFollowersAvailable
File: GCX016.cbl
GIVEN:
A list of follower manifests has been retrieved
WHEN:
The system is iterating through the follower manifest list
THEN:
The system determines if more follower manifests are available for processing or if all have been processed
β Consolidated Acceptance Criteria
- The system needs to create an EDI message for the follower → the system formats an EDI 350 message with follower-specific data and parameters
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_FormatEDI350MessageforFollower(["Start Step"])
E_FormatEDI350MessageforFollower(["End Step"])
N_FormatEDI350MessageforFollower_Node0{"The system needs to create an EDI
message for the follower"}:::decision N_FormatEDI350MessageforFollower_Node0_action["The system formats an EDI 350
message with follower-specific data
and parameters"]:::main N_FormatEDI350MessageforFollower_Node0 -- Yes --> N_FormatEDI350MessageforFollower_Node0_action N_FormatEDI350MessageforFollower_Node0_action --> E_FormatEDI350MessageforFollower S_FormatEDI350MessageforFollower --> N_FormatEDI350MessageforFollower_Node0 N_FormatEDI350MessageforFollower_Node0 -- No --> E_FormatEDI350MessageforFollower
message for the follower"}:::decision N_FormatEDI350MessageforFollower_Node0_action["The system formats an EDI 350
message with follower-specific data
and parameters"]:::main N_FormatEDI350MessageforFollower_Node0 -- Yes --> N_FormatEDI350MessageforFollower_Node0_action N_FormatEDI350MessageforFollower_Node0_action --> E_FormatEDI350MessageforFollower S_FormatEDI350MessageforFollower --> N_FormatEDI350MessageforFollower_Node0 N_FormatEDI350MessageforFollower_Node0 -- No --> E_FormatEDI350MessageforFollower
File: GCX016.cbl
GIVEN:
A follower manifest has been selected for processing
WHEN:
The system needs to create an EDI message for the follower
THEN:
- The system formats an edi 350 message with follower-specific data
- Parameters
β Consolidated Acceptance Criteria
- The system needs to prepare the message for transaction spawning → the system populates the EDI message array with the formatted follower manifest data
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_PrepareMessageArrayforFollower(["Start Step"])
E_PrepareMessageArrayforFollower(["End Step"])
N_PrepareMessageArrayforFollower_Node0{"The system needs to prepare the
message for transaction spawning"}:::decision N_PrepareMessageArrayforFollower_Node0_action["The system populates the EDI
message array with the formatted
follower manifest data"]:::main N_PrepareMessageArrayforFollower_Node0 -- Yes --> N_PrepareMessageArrayforFollower_Node0_action N_PrepareMessageArrayforFollower_Node0_action --> E_PrepareMessageArrayforFollower S_PrepareMessageArrayforFollower --> N_PrepareMessageArrayforFollower_Node0 N_PrepareMessageArrayforFollower_Node0 -- No --> E_PrepareMessageArrayforFollower
message for transaction spawning"}:::decision N_PrepareMessageArrayforFollower_Node0_action["The system populates the EDI
message array with the formatted
follower manifest data"]:::main N_PrepareMessageArrayforFollower_Node0 -- Yes --> N_PrepareMessageArrayforFollower_Node0_action N_PrepareMessageArrayforFollower_Node0_action --> E_PrepareMessageArrayforFollower S_PrepareMessageArrayforFollower --> N_PrepareMessageArrayforFollower_Node0 N_PrepareMessageArrayforFollower_Node0 -- No --> E_PrepareMessageArrayforFollower
File: GCX016.cbl
GIVEN:
An EDI 350 message has been formatted for a follower manifest
WHEN:
The system needs to prepare the message for transaction spawning
THEN:
The system populates the EDI message array with the formatted follower manifest data
β Consolidated Acceptance Criteria
- The system needs to configure processing parameters → the system sets follower-specific parameters including manifest identifiers and processing flags
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetFollowerManifestParameters(["Start Step"])
E_SetFollowerManifestParameters(["End Step"])
N_SetFollowerManifestParameters_Node0{"The system needs to configure
processing parameters"}:::decision N_SetFollowerManifestParameters_Node0_action["The system sets follower-specific
parameters including manifest
identifiers and processing flags"]:::main N_SetFollowerManifestParameters_Node0 -- Yes --> N_SetFollowerManifestParameters_Node0_action N_SetFollowerManifestParameters_Node0_action --> E_SetFollowerManifestParameters S_SetFollowerManifestParameters --> N_SetFollowerManifestParameters_Node0 N_SetFollowerManifestParameters_Node0 -- No --> E_SetFollowerManifestParameters
processing parameters"}:::decision N_SetFollowerManifestParameters_Node0_action["The system sets follower-specific
parameters including manifest
identifiers and processing flags"]:::main N_SetFollowerManifestParameters_Node0 -- Yes --> N_SetFollowerManifestParameters_Node0_action N_SetFollowerManifestParameters_Node0_action --> E_SetFollowerManifestParameters S_SetFollowerManifestParameters --> N_SetFollowerManifestParameters_Node0 N_SetFollowerManifestParameters_Node0 -- No --> E_SetFollowerManifestParameters
File: GCX016.cbl
GIVEN:
The message array has been prepared for a follower manifest
WHEN:
The system needs to configure processing parameters
THEN:
- The system sets follower-specific parameters including manifest identifiers
- Processing flags
β Consolidated Acceptance Criteria
- The system confirms successful transaction spawn → the system logs the successful follower manifest processing to the transaction log
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogFollowerProcessingSuccess(["Start Step"])
E_LogFollowerProcessingSuccess(["End Step"])
N_LogFollowerProcessingSuccess_Node0{"The system confirms successful
transaction spawn"}:::decision N_LogFollowerProcessingSuccess_Node0_action["The system logs the successful
follower manifest processing to the
transaction log"]:::main N_LogFollowerProcessingSuccess_Node0 -- Yes --> N_LogFollowerProcessingSuccess_Node0_action N_LogFollowerProcessingSuccess_Node0_action --> E_LogFollowerProcessingSuccess S_LogFollowerProcessingSuccess --> N_LogFollowerProcessingSuccess_Node0 N_LogFollowerProcessingSuccess_Node0 -- No --> E_LogFollowerProcessingSuccess
transaction spawn"}:::decision N_LogFollowerProcessingSuccess_Node0_action["The system logs the successful
follower manifest processing to the
transaction log"]:::main N_LogFollowerProcessingSuccess_Node0 -- Yes --> N_LogFollowerProcessingSuccess_Node0_action N_LogFollowerProcessingSuccess_Node0_action --> E_LogFollowerProcessingSuccess S_LogFollowerProcessingSuccess --> N_LogFollowerProcessingSuccess_Node0 N_LogFollowerProcessingSuccess_Node0 -- No --> E_LogFollowerProcessingSuccess
File: GCX016.cbl
GIVEN:
A GCT0161E transaction was successfully spawned for a follower manifest
WHEN:
The system confirms successful transaction spawn
THEN:
The system logs the successful follower manifest processing to the transaction log
β Consolidated Acceptance Criteria
- The system detects the spawn failure → the system logs the spawn error details to the transaction log for troubleshooting
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogSpawnError(["Start Step"])
E_LogSpawnError(["End Step"])
N_LogSpawnError_Node0{"The system detects the spawn
failure"}:::decision N_LogSpawnError_Node0_action["The system logs the spawn error
details to the transaction log for
troubleshooting"]:::main N_LogSpawnError_Node0 -- Yes --> N_LogSpawnError_Node0_action N_LogSpawnError_Node0_action --> E_LogSpawnError S_LogSpawnError --> N_LogSpawnError_Node0 N_LogSpawnError_Node0 -- No --> E_LogSpawnError
failure"}:::decision N_LogSpawnError_Node0_action["The system logs the spawn error
details to the transaction log for
troubleshooting"]:::main N_LogSpawnError_Node0 -- Yes --> N_LogSpawnError_Node0_action N_LogSpawnError_Node0_action --> E_LogSpawnError S_LogSpawnError --> N_LogSpawnError_Node0 N_LogSpawnError_Node0 -- No --> E_LogSpawnError
File: GCX016.cbl
GIVEN:
A GCT0161E transaction spawn failed for a follower manifest
WHEN:
The system detects the spawn failure
THEN:
The system logs the spawn error details to the transaction log for troubleshooting
β Consolidated Acceptance Criteria
- The system needs to continue with remaining followers → the system moves to the next follower manifest in the list for processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MovetoNextFollower(["Start Step"])
E_MovetoNextFollower(["End Step"])
N_MovetoNextFollower_Node0{"The system needs to continue with
remaining followers"}:::decision N_MovetoNextFollower_Node0_action["The system moves to the next
follower manifest in the list for
processing"]:::main N_MovetoNextFollower_Node0 -- Yes --> N_MovetoNextFollower_Node0_action N_MovetoNextFollower_Node0_action --> E_MovetoNextFollower S_MovetoNextFollower --> N_MovetoNextFollower_Node0 N_MovetoNextFollower_Node0 -- No --> E_MovetoNextFollower
remaining followers"}:::decision N_MovetoNextFollower_Node0_action["The system moves to the next
follower manifest in the list for
processing"]:::main N_MovetoNextFollower_Node0 -- Yes --> N_MovetoNextFollower_Node0_action N_MovetoNextFollower_Node0_action --> E_MovetoNextFollower S_MovetoNextFollower --> N_MovetoNextFollower_Node0 N_MovetoNextFollower_Node0 -- No --> E_MovetoNextFollower
File: GCX016.cbl
GIVEN:
A follower manifest has been successfully processed
WHEN:
The system needs to continue with remaining followers
THEN:
The system moves to the next follower manifest in the list for processing
β Consolidated Acceptance Criteria
- The system needs to continue processing remaining followers → the system continues with the next follower manifest without stopping the entire process
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ContinuewithNextFollower(["Start Step"])
E_ContinuewithNextFollower(["End Step"])
N_ContinuewithNextFollower_Node0{"The system needs to continue
processing remaining followers"}:::decision N_ContinuewithNextFollower_Node0_action["The system continues with the next
follower manifest without stopping
the entire process"]:::main N_ContinuewithNextFollower_Node0 -- Yes --> N_ContinuewithNextFollower_Node0_action N_ContinuewithNextFollower_Node0_action --> E_ContinuewithNextFollower S_ContinuewithNextFollower --> N_ContinuewithNextFollower_Node0 N_ContinuewithNextFollower_Node0 -- No --> E_ContinuewithNextFollower
processing remaining followers"}:::decision N_ContinuewithNextFollower_Node0_action["The system continues with the next
follower manifest without stopping
the entire process"]:::main N_ContinuewithNextFollower_Node0 -- Yes --> N_ContinuewithNextFollower_Node0_action N_ContinuewithNextFollower_Node0_action --> E_ContinuewithNextFollower S_ContinuewithNextFollower --> N_ContinuewithNextFollower_Node0 N_ContinuewithNextFollower_Node0 -- No --> E_ContinuewithNextFollower
File: GCX016.cbl
GIVEN:
A transaction spawn error has been logged for a follower manifest
WHEN:
The system needs to continue processing remaining followers
THEN:
The system continues with the next follower manifest without stopping the entire process
β Consolidated Acceptance Criteria
- No more follower manifests are available for processing → the system confirms that all follower manifests have been processed
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AllFollowersProcessed(["Start Step"])
E_AllFollowersProcessed(["End Step"])
N_AllFollowersProcessed_Node0{"No more follower manifests are
available for processing"}:::decision N_AllFollowersProcessed_Node0_action["The system confirms that all
follower manifests have been
processed"]:::main N_AllFollowersProcessed_Node0 -- Yes --> N_AllFollowersProcessed_Node0_action N_AllFollowersProcessed_Node0_action --> E_AllFollowersProcessed S_AllFollowersProcessed --> N_AllFollowersProcessed_Node0 N_AllFollowersProcessed_Node0 -- No --> E_AllFollowersProcessed
available for processing"}:::decision N_AllFollowersProcessed_Node0_action["The system confirms that all
follower manifests have been
processed"]:::main N_AllFollowersProcessed_Node0 -- Yes --> N_AllFollowersProcessed_Node0_action N_AllFollowersProcessed_Node0_action --> E_AllFollowersProcessed S_AllFollowersProcessed --> N_AllFollowersProcessed_Node0 N_AllFollowersProcessed_Node0 -- No --> E_AllFollowersProcessed
File: GCX016.cbl
GIVEN:
The system has iterated through all follower manifests in the list
WHEN:
No more follower manifests are available for processing
THEN:
The system confirms that all follower manifests have been processed
β Consolidated Acceptance Criteria
- The system needs to finalize the lead manifest processing → the system updates the lead manifest status to reflect completion of follower processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UpdateLeadManifestStatus(["Start Step"])
E_UpdateLeadManifestStatus(["End Step"])
N_UpdateLeadManifestStatus_Node0{"The system needs to finalize the
lead manifest processing"}:::decision N_UpdateLeadManifestStatus_Node0_action["The system updates the lead
manifest status to reflect
completion of follower processing"]:::main N_UpdateLeadManifestStatus_Node0 -- Yes --> N_UpdateLeadManifestStatus_Node0_action N_UpdateLeadManifestStatus_Node0_action --> E_UpdateLeadManifestStatus S_UpdateLeadManifestStatus --> N_UpdateLeadManifestStatus_Node0 N_UpdateLeadManifestStatus_Node0 -- No --> E_UpdateLeadManifestStatus
lead manifest processing"}:::decision N_UpdateLeadManifestStatus_Node0_action["The system updates the lead
manifest status to reflect
completion of follower processing"]:::main N_UpdateLeadManifestStatus_Node0 -- Yes --> N_UpdateLeadManifestStatus_Node0_action N_UpdateLeadManifestStatus_Node0_action --> E_UpdateLeadManifestStatus S_UpdateLeadManifestStatus --> N_UpdateLeadManifestStatus_Node0 N_UpdateLeadManifestStatus_Node0 -- No --> E_UpdateLeadManifestStatus
File: GCX016.cbl
GIVEN:
All follower manifests have been processed
WHEN:
The system needs to finalize the lead manifest processing
THEN:
The system updates the lead manifest status to reflect completion of follower processing
β Consolidated Acceptance Criteria
- If the manifest for multi-manifest processing → the system skips follower processing and proceeds directly to completion
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SkipSingleManifestOnly(["Start Step"])
E_SkipSingleManifestOnly(["End Step"])
N_SkipSingleManifestOnly_Node0{"The system evaluates the manifest
for multi-manifest processing"}:::decision N_SkipSingleManifestOnly_Node0_action["The system skips follower
processing and proceeds directly to
completion"]:::main N_SkipSingleManifestOnly_Node0 -- Yes --> N_SkipSingleManifestOnly_Node0_action N_SkipSingleManifestOnly_Node0_action --> E_SkipSingleManifestOnly S_SkipSingleManifestOnly --> N_SkipSingleManifestOnly_Node0 N_SkipSingleManifestOnly_Node0 -- No --> E_SkipSingleManifestOnly
for multi-manifest processing"}:::decision N_SkipSingleManifestOnly_Node0_action["The system skips follower
processing and proceeds directly to
completion"]:::main N_SkipSingleManifestOnly_Node0 -- Yes --> N_SkipSingleManifestOnly_Node0_action N_SkipSingleManifestOnly_Node0_action --> E_SkipSingleManifestOnly S_SkipSingleManifestOnly --> N_SkipSingleManifestOnly_Node0 N_SkipSingleManifestOnly_Node0 -- No --> E_SkipSingleManifestOnly
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
A manifest is not identified as a lead manifest
WHEN:
The system evaluates the manifest for multi-manifest processing
THEN:
- The system skips follower processing
- Proceeds directly to completion
β Consolidated Acceptance Criteria
- The system checks for existing S09 status segments associated with the cargo record → the system identifies whether S09 segments exist and routes processing accordingly
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_S09StatusSegmentsExist(["Start Step"])
E_S09StatusSegmentsExist(["End Step"])
N_S09StatusSegmentsExist_Node0{"The system checks for existing S09
status segments associated with the
cargo record"}:::decision N_S09StatusSegmentsExist_Node0_action["The system identifies whether S09
segments exist and routes processing
accordingly"]:::main N_S09StatusSegmentsExist_Node0 -- Yes --> N_S09StatusSegmentsExist_Node0_action N_S09StatusSegmentsExist_Node0_action --> E_S09StatusSegmentsExist S_S09StatusSegmentsExist --> N_S09StatusSegmentsExist_Node0 N_S09StatusSegmentsExist_Node0 -- No --> E_S09StatusSegmentsExist
status segments associated with the
cargo record"}:::decision N_S09StatusSegmentsExist_Node0_action["The system identifies whether S09
segments exist and routes processing
accordingly"]:::main N_S09StatusSegmentsExist_Node0 -- Yes --> N_S09StatusSegmentsExist_Node0_action N_S09StatusSegmentsExist_Node0_action --> E_S09StatusSegmentsExist S_S09StatusSegmentsExist --> N_S09StatusSegmentsExist_Node0 N_S09StatusSegmentsExist_Node0 -- No --> E_S09StatusSegmentsExist
File: GCX016.cbl
GIVEN:
A cargo record has been identified for processing
WHEN:
The system checks for existing S09 status segments associated with the cargo record
THEN:
- The system identifies whether s09 segments exist
- Routes processing accordingly
β Consolidated Acceptance Criteria
- The system needs to load existing status information → the system fetches all S09 segments associated with the cargo record from GCSUSS09 IMS segment
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_FetchExistingS09SegmentsfromDatabase(["Start Step"])
E_FetchExistingS09SegmentsfromDatabase(["End Step"])
N_FetchExistingS09SegmentsfromDatabase_Node0{"The system needs to load existing
status information"}:::decision N_FetchExistingS09SegmentsfromDatabase_Node0_action["The system fetches all S09 segments
associated with the cargo record
from GCSUSS09 IMS segment"]:::main N_FetchExistingS09SegmentsfromDatabase_Node0 -- Yes --> N_FetchExistingS09SegmentsfromDatabase_Node0_action N_FetchExistingS09SegmentsfromDatabase_Node0_action --> E_FetchExistingS09SegmentsfromDatabase S_FetchExistingS09SegmentsfromDatabase --> N_FetchExistingS09SegmentsfromDatabase_Node0 N_FetchExistingS09SegmentsfromDatabase_Node0 -- No --> E_FetchExistingS09SegmentsfromDatabase
status information"}:::decision N_FetchExistingS09SegmentsfromDatabase_Node0_action["The system fetches all S09 segments
associated with the cargo record
from GCSUSS09 IMS segment"]:::main N_FetchExistingS09SegmentsfromDatabase_Node0 -- Yes --> N_FetchExistingS09SegmentsfromDatabase_Node0_action N_FetchExistingS09SegmentsfromDatabase_Node0_action --> E_FetchExistingS09SegmentsfromDatabase S_FetchExistingS09SegmentsfromDatabase --> N_FetchExistingS09SegmentsfromDatabase_Node0 N_FetchExistingS09SegmentsfromDatabase_Node0 -- No --> E_FetchExistingS09SegmentsfromDatabase
File: GCX016.cbl
GIVEN:
S09 status segments exist for the cargo record in the database
WHEN:
The system needs to load existing status information
THEN:
The system fetches all S09 segments associated with the cargo record from GCSUSS09 IMS segment
β Consolidated Acceptance Criteria
- The system needs to create a new status array for processing → the system initializes an empty S09A status array structure
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_InitializeEmptyS09AStatusArray(["Start Step"])
E_InitializeEmptyS09AStatusArray(["End Step"])
N_InitializeEmptyS09AStatusArray_Node0{"The system needs to create a new
status array for processing"}:::decision N_InitializeEmptyS09AStatusArray_Node0_action["The system initializes an empty
S09A status array structure"]:::main N_InitializeEmptyS09AStatusArray_Node0 -- Yes --> N_InitializeEmptyS09AStatusArray_Node0_action N_InitializeEmptyS09AStatusArray_Node0_action --> E_InitializeEmptyS09AStatusArray S_InitializeEmptyS09AStatusArray --> N_InitializeEmptyS09AStatusArray_Node0 N_InitializeEmptyS09AStatusArray_Node0 -- No --> E_InitializeEmptyS09AStatusArray
status array for processing"}:::decision N_InitializeEmptyS09AStatusArray_Node0_action["The system initializes an empty
S09A status array structure"]:::main N_InitializeEmptyS09AStatusArray_Node0 -- Yes --> N_InitializeEmptyS09AStatusArray_Node0_action N_InitializeEmptyS09AStatusArray_Node0_action --> E_InitializeEmptyS09AStatusArray S_InitializeEmptyS09AStatusArray --> N_InitializeEmptyS09AStatusArray_Node0 N_InitializeEmptyS09AStatusArray_Node0 -- No --> E_InitializeEmptyS09AStatusArray
File: GCX016.cbl
GIVEN:
No S09 status segments exist for the cargo record
WHEN:
The system needs to create a new status array for processing
THEN:
The system initializes an empty S09A status array structure
β Consolidated Acceptance Criteria
- The system sets up the array structure properties → the array element count is set to zero to reflect no existing status entries
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetArrayElementCounttoZero(["Start Step"])
E_SetArrayElementCounttoZero(["End Step"])
N_SetArrayElementCounttoZero_Node0{"The system sets up the array
structure properties"}:::decision N_SetArrayElementCounttoZero_Node0_action["The array element count is set to
zero to reflect no existing status
entries"]:::main N_SetArrayElementCounttoZero_Node0 -- Yes --> N_SetArrayElementCounttoZero_Node0_action N_SetArrayElementCounttoZero_Node0_action --> E_SetArrayElementCounttoZero S_SetArrayElementCounttoZero --> N_SetArrayElementCounttoZero_Node0 N_SetArrayElementCounttoZero_Node0 -- No --> E_SetArrayElementCounttoZero
structure properties"}:::decision N_SetArrayElementCounttoZero_Node0_action["The array element count is set to
zero to reflect no existing status
entries"]:::main N_SetArrayElementCounttoZero_Node0 -- Yes --> N_SetArrayElementCounttoZero_Node0_action N_SetArrayElementCounttoZero_Node0_action --> E_SetArrayElementCounttoZero S_SetArrayElementCounttoZero --> N_SetArrayElementCounttoZero_Node0 N_SetArrayElementCounttoZero_Node0 -- No --> E_SetArrayElementCounttoZero
File: GCX016.cbl
GIVEN:
An empty S09A status array has been initialized
WHEN:
The system sets up the array structure properties
THEN:
The array element count is set to zero to reflect no existing status entries
β Consolidated Acceptance Criteria
- The system prepares the array for status processing operations → the system allocates the required memory structure for the status array
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AllocateArrayMemoryStructure(["Start Step"])
E_AllocateArrayMemoryStructure(["End Step"])
N_AllocateArrayMemoryStructure_Node0{"The system prepares the array for
status processing operations"}:::decision N_AllocateArrayMemoryStructure_Node0_action["The system allocates the required
memory structure for the status
array"]:::main N_AllocateArrayMemoryStructure_Node0 -- Yes --> N_AllocateArrayMemoryStructure_Node0_action N_AllocateArrayMemoryStructure_Node0_action --> E_AllocateArrayMemoryStructure S_AllocateArrayMemoryStructure --> N_AllocateArrayMemoryStructure_Node0 N_AllocateArrayMemoryStructure_Node0 -- No --> E_AllocateArrayMemoryStructure
status processing operations"}:::decision N_AllocateArrayMemoryStructure_Node0_action["The system allocates the required
memory structure for the status
array"]:::main N_AllocateArrayMemoryStructure_Node0 -- Yes --> N_AllocateArrayMemoryStructure_Node0_action N_AllocateArrayMemoryStructure_Node0_action --> E_AllocateArrayMemoryStructure S_AllocateArrayMemoryStructure --> N_AllocateArrayMemoryStructure_Node0 N_AllocateArrayMemoryStructure_Node0 -- No --> E_AllocateArrayMemoryStructure
File: GCX016.cbl
GIVEN:
The status array element count has been set to zero
WHEN:
The system prepares the array for status processing operations
THEN:
The system allocates the required memory structure for the status array
β Consolidated Acceptance Criteria
- The system configures the array for cargo status operations → the system sets default properties and characteristics for the status array
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetDefaultArrayProperties(["Start Step"])
E_SetDefaultArrayProperties(["End Step"])
N_SetDefaultArrayProperties_Node0{"The system configures the array for
cargo status operations"}:::decision N_SetDefaultArrayProperties_Node0_action["The system sets default properties
and characteristics for the status
array"]:::main N_SetDefaultArrayProperties_Node0 -- Yes --> N_SetDefaultArrayProperties_Node0_action N_SetDefaultArrayProperties_Node0_action --> E_SetDefaultArrayProperties S_SetDefaultArrayProperties --> N_SetDefaultArrayProperties_Node0 N_SetDefaultArrayProperties_Node0 -- No --> E_SetDefaultArrayProperties
cargo status operations"}:::decision N_SetDefaultArrayProperties_Node0_action["The system sets default properties
and characteristics for the status
array"]:::main N_SetDefaultArrayProperties_Node0 -- Yes --> N_SetDefaultArrayProperties_Node0_action N_SetDefaultArrayProperties_Node0_action --> E_SetDefaultArrayProperties S_SetDefaultArrayProperties --> N_SetDefaultArrayProperties_Node0 N_SetDefaultArrayProperties_Node0 -- No --> E_SetDefaultArrayProperties
File: GCX016.cbl
GIVEN:
The status array memory structure has been allocated
WHEN:
The system configures the array for cargo status operations
THEN:
- The system sets default properties
- Characteristics for the status array
β Consolidated Acceptance Criteria
- The system needs to track the origin of the status array → the system marks the array as newly created for processing identification
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MarkArrayasNewlyCreated(["Start Step"])
E_MarkArrayasNewlyCreated(["End Step"])
N_MarkArrayasNewlyCreated_Node0{"The system needs to track the
origin of the status array"}:::decision N_MarkArrayasNewlyCreated_Node0_action["The system marks the array as newly
created for processing
identification"]:::main N_MarkArrayasNewlyCreated_Node0 -- Yes --> N_MarkArrayasNewlyCreated_Node0_action N_MarkArrayasNewlyCreated_Node0_action --> E_MarkArrayasNewlyCreated S_MarkArrayasNewlyCreated --> N_MarkArrayasNewlyCreated_Node0 N_MarkArrayasNewlyCreated_Node0 -- No --> E_MarkArrayasNewlyCreated
origin of the status array"}:::decision N_MarkArrayasNewlyCreated_Node0_action["The system marks the array as newly
created for processing
identification"]:::main N_MarkArrayasNewlyCreated_Node0 -- Yes --> N_MarkArrayasNewlyCreated_Node0_action N_MarkArrayasNewlyCreated_Node0_action --> E_MarkArrayasNewlyCreated S_MarkArrayasNewlyCreated --> N_MarkArrayasNewlyCreated_Node0 N_MarkArrayasNewlyCreated_Node0 -- No --> E_MarkArrayasNewlyCreated
File: GCX016.cbl
GIVEN:
The status array has been initialized with default properties
WHEN:
The system needs to track the origin of the status array
THEN:
The system marks the array as newly created for processing identification
β Consolidated Acceptance Criteria
- All array setup operations have been completed → the status array is ready for cargo status processing operations
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_StatusArrayReadyforProcessing(["Start Step"])
E_StatusArrayReadyforProcessing(["End Step"])
N_StatusArrayReadyforProcessing_Node0{"All array setup operations have
been completed"}:::decision N_StatusArrayReadyforProcessing_Node0_action["The status array is ready for cargo
status processing operations"]:::main N_StatusArrayReadyforProcessing_Node0 -- Yes --> N_StatusArrayReadyforProcessing_Node0_action N_StatusArrayReadyforProcessing_Node0_action --> E_StatusArrayReadyforProcessing S_StatusArrayReadyforProcessing --> N_StatusArrayReadyforProcessing_Node0 N_StatusArrayReadyforProcessing_Node0 -- No --> E_StatusArrayReadyforProcessing
been completed"}:::decision N_StatusArrayReadyforProcessing_Node0_action["The status array is ready for cargo
status processing operations"]:::main N_StatusArrayReadyforProcessing_Node0 -- Yes --> N_StatusArrayReadyforProcessing_Node0_action N_StatusArrayReadyforProcessing_Node0_action --> E_StatusArrayReadyforProcessing S_StatusArrayReadyforProcessing --> N_StatusArrayReadyforProcessing_Node0 N_StatusArrayReadyforProcessing_Node0 -- No --> E_StatusArrayReadyforProcessing
File: GCX016.cbl
GIVEN:
The status array has been either fetched from existing segments or newly initialized
WHEN:
All array setup operations have been completed
THEN:
The status array is ready for cargo status processing operations
β Consolidated Acceptance Criteria
- The status array population process begins → the S09A array counter is set to zero to start fresh population
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_InitializeS09AArrayCountertoZero(["Start Step"])
E_InitializeS09AArrayCountertoZero(["End Step"])
N_InitializeS09AArrayCountertoZero_Node0{"The status array population process
begins"}:::decision N_InitializeS09AArrayCountertoZero_Node0_action["The S09A array counter is set to
zero to start fresh population"]:::main N_InitializeS09AArrayCountertoZero_Node0 -- Yes --> N_InitializeS09AArrayCountertoZero_Node0_action N_InitializeS09AArrayCountertoZero_Node0_action --> E_InitializeS09AArrayCountertoZero S_InitializeS09AArrayCountertoZero --> N_InitializeS09AArrayCountertoZero_Node0 N_InitializeS09AArrayCountertoZero_Node0 -- No --> E_InitializeS09AArrayCountertoZero
begins"}:::decision N_InitializeS09AArrayCountertoZero_Node0_action["The S09A array counter is set to
zero to start fresh population"]:::main N_InitializeS09AArrayCountertoZero_Node0 -- Yes --> N_InitializeS09AArrayCountertoZero_Node0_action N_InitializeS09AArrayCountertoZero_Node0_action --> E_InitializeS09AArrayCountertoZero S_InitializeS09AArrayCountertoZero --> N_InitializeS09AArrayCountertoZero_Node0 N_InitializeS09AArrayCountertoZero_Node0 -- No --> E_InitializeS09AArrayCountertoZero
File: GCX016.cbl
GIVEN:
A cargo record requires status information to be loaded
WHEN:
The status array population process begins
THEN:
The S09A array counter is set to zero to start fresh population
β Consolidated Acceptance Criteria
- The system needs to load status information → the system calls GCCUSIO to retrieve the first S09 status segment for the cargo
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CallGCCUSIOtoGetFirstS09StatusSegment(["Start Step"])
E_CallGCCUSIOtoGetFirstS09StatusSegment(["End Step"])
N_CallGCCUSIOtoGetFirstS09StatusSegment_Node0{"The system needs to load status
information"}:::decision N_CallGCCUSIOtoGetFirstS09StatusSegment_Node0_action["The system calls GCCUSIO to
retrieve the first S09 status
segment for the cargo"]:::main N_CallGCCUSIOtoGetFirstS09StatusSegment_Node0 -- Yes --> N_CallGCCUSIOtoGetFirstS09StatusSegment_Node0_action N_CallGCCUSIOtoGetFirstS09StatusSegment_Node0_action --> E_CallGCCUSIOtoGetFirstS09StatusSegment S_CallGCCUSIOtoGetFirstS09StatusSegment --> N_CallGCCUSIOtoGetFirstS09StatusSegment_Node0 N_CallGCCUSIOtoGetFirstS09StatusSegment_Node0 -- No --> E_CallGCCUSIOtoGetFirstS09StatusSegment
information"}:::decision N_CallGCCUSIOtoGetFirstS09StatusSegment_Node0_action["The system calls GCCUSIO to
retrieve the first S09 status
segment for the cargo"]:::main N_CallGCCUSIOtoGetFirstS09StatusSegment_Node0 -- Yes --> N_CallGCCUSIOtoGetFirstS09StatusSegment_Node0_action N_CallGCCUSIOtoGetFirstS09StatusSegment_Node0_action --> E_CallGCCUSIOtoGetFirstS09StatusSegment S_CallGCCUSIOtoGetFirstS09StatusSegment --> N_CallGCCUSIOtoGetFirstS09StatusSegment_Node0 N_CallGCCUSIOtoGetFirstS09StatusSegment_Node0 -- No --> E_CallGCCUSIOtoGetFirstS09StatusSegment
File: GCX016.cbl
GIVEN:
A cargo record exists in the system with potential status segments
WHEN:
The system needs to load status information
THEN:
The system calls GCCUSIO to retrieve the first S09 status segment for the cargo
β Consolidated Acceptance Criteria
- The database call completes → the system determines if a valid S09 segment was found and proceeds accordingly
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_S09SegmentFound(["Start Step"])
E_S09SegmentFound(["End Step"])
N_S09SegmentFound_Node0{"The database call completes"}:::decision
N_S09SegmentFound_Node0_action["The system determines if a valid
S09 segment was found and proceeds
accordingly"]:::main N_S09SegmentFound_Node0 -- Yes --> N_S09SegmentFound_Node0_action N_S09SegmentFound_Node0_action --> E_S09SegmentFound S_S09SegmentFound --> N_S09SegmentFound_Node0 N_S09SegmentFound_Node0 -- No --> E_S09SegmentFound
S09 segment was found and proceeds
accordingly"]:::main N_S09SegmentFound_Node0 -- Yes --> N_S09SegmentFound_Node0_action N_S09SegmentFound_Node0_action --> E_S09SegmentFound S_S09SegmentFound --> N_S09SegmentFound_Node0 N_S09SegmentFound_Node0 -- No --> E_S09SegmentFound
File: GCX016.cbl
GIVEN:
A request has been made to retrieve an S09 status segment
WHEN:
The database call completes
THEN:
- The system determines if a valid s09 segment was found
- Proceeds accordingly
β Consolidated Acceptance Criteria
- The segment needs to be processed → the system extracts status info code, entry number, quantity, released flag, location code, and status description from the segment
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExtractStatusInformationfromS09Segment(["Start Step"])
E_ExtractStatusInformationfromS09Segment(["End Step"])
N_ExtractStatusInformationfromS09Segment_Node0{"The segment needs to be processed"}:::decision
N_ExtractStatusInformationfromS09Segment_Node0_action["The system extracts status info
code, entry number, quantity,
released flag, location code, and
status description from the segment"]:::main N_ExtractStatusInformationfromS09Segment_Node0 -- Yes --> N_ExtractStatusInformationfromS09Segment_Node0_action N_ExtractStatusInformationfromS09Segment_Node0_action --> E_ExtractStatusInformationfromS09Segment S_ExtractStatusInformationfromS09Segment --> N_ExtractStatusInformationfromS09Segment_Node0 N_ExtractStatusInformationfromS09Segment_Node0 -- No --> E_ExtractStatusInformationfromS09Segment
code, entry number, quantity,
released flag, location code, and
status description from the segment"]:::main N_ExtractStatusInformationfromS09Segment_Node0 -- Yes --> N_ExtractStatusInformationfromS09Segment_Node0_action N_ExtractStatusInformationfromS09Segment_Node0_action --> E_ExtractStatusInformationfromS09Segment S_ExtractStatusInformationfromS09Segment --> N_ExtractStatusInformationfromS09Segment_Node0 N_ExtractStatusInformationfromS09Segment_Node0 -- No --> E_ExtractStatusInformationfromS09Segment
File: GCX016.cbl
GIVEN:
A valid S09 status segment has been retrieved from the database
WHEN:
The segment needs to be processed
THEN:
The system extracts status info code, entry number, quantity, released flag, location code, and status description from the segment
β Consolidated Acceptance Criteria
- The array element needs to be populated → the system stores the status info code, entry number, quantity, released flag, location code, and status description in the current S09A array element
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_PopulateS09AArrayElementwithStatusInfoCodeEntryNumberQuantityReleasedFlagLocationCodeStatusDescription(["Start Step"])
E_PopulateS09AArrayElementwithStatusInfoCodeEntryNumberQuantityReleasedFlagLocationCodeStatusDescription(["End Step"])
N_PopulateS09AArrayElementwithStatusInfoCodeEntryNumberQuantityReleasedFlagLocationCodeStatusDescription_Node0{"The array element needs to be
populated"}:::decision N_PopulateS09AArrayElementwithStatusInfoCodeEntryNumberQuantityReleasedFlagLocationCodeStatusDescription_Node0_action["The system stores the status info
code, entry number, quantity,
released flag, location code, and
status description in the current
S09A array element"]:::main N_PopulateS09AArrayElementwithStatusInfoCodeEntryNumberQuantityReleasedFlagLocationCodeStatusDescription_Node0 -- Yes --> N_PopulateS09AArrayElementwithStatusInfoCodeEntryNumberQuantityReleasedFlagLocationCodeStatusDescription_Node0_action N_PopulateS09AArrayElementwithStatusInfoCodeEntryNumberQuantityReleasedFlagLocationCodeStatusDescription_Node0_action --> E_PopulateS09AArrayElementwithStatusInfoCodeEntryNumberQuantityReleasedFlagLocationCodeStatusDescription S_PopulateS09AArrayElementwithStatusInfoCodeEntryNumberQuantityReleasedFlagLocationCodeStatusDescription --> N_PopulateS09AArrayElementwithStatusInfoCodeEntryNumberQuantityReleasedFlagLocationCodeStatusDescription_Node0 N_PopulateS09AArrayElementwithStatusInfoCodeEntryNumberQuantityReleasedFlagLocationCodeStatusDescription_Node0 -- No --> E_PopulateS09AArrayElementwithStatusInfoCodeEntryNumberQuantityReleasedFlagLocationCodeStatusDescription
populated"}:::decision N_PopulateS09AArrayElementwithStatusInfoCodeEntryNumberQuantityReleasedFlagLocationCodeStatusDescription_Node0_action["The system stores the status info
code, entry number, quantity,
released flag, location code, and
status description in the current
S09A array element"]:::main N_PopulateS09AArrayElementwithStatusInfoCodeEntryNumberQuantityReleasedFlagLocationCodeStatusDescription_Node0 -- Yes --> N_PopulateS09AArrayElementwithStatusInfoCodeEntryNumberQuantityReleasedFlagLocationCodeStatusDescription_Node0_action N_PopulateS09AArrayElementwithStatusInfoCodeEntryNumberQuantityReleasedFlagLocationCodeStatusDescription_Node0_action --> E_PopulateS09AArrayElementwithStatusInfoCodeEntryNumberQuantityReleasedFlagLocationCodeStatusDescription S_PopulateS09AArrayElementwithStatusInfoCodeEntryNumberQuantityReleasedFlagLocationCodeStatusDescription --> N_PopulateS09AArrayElementwithStatusInfoCodeEntryNumberQuantityReleasedFlagLocationCodeStatusDescription_Node0 N_PopulateS09AArrayElementwithStatusInfoCodeEntryNumberQuantityReleasedFlagLocationCodeStatusDescription_Node0 -- No --> E_PopulateS09AArrayElementwithStatusInfoCodeEntryNumberQuantityReleasedFlagLocationCodeStatusDescription
File: GCX016.cbl
GIVEN:
Status information has been extracted from an S09 segment
WHEN:
The array element needs to be populated
THEN:
The system stores the status info code, entry number, quantity, released flag, location code, and status description in the current S09A array element
β Consolidated Acceptance Criteria
- The element population is complete → the system increments the array counter by one to point to the next available array position
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IncrementArrayCounter(["Start Step"])
E_IncrementArrayCounter(["End Step"])
N_IncrementArrayCounter_Node0{"The element population is complete"}:::decision
N_IncrementArrayCounter_Node0_action["The system increments the array
counter by one to point to the next
available array position"]:::main N_IncrementArrayCounter_Node0 -- Yes --> N_IncrementArrayCounter_Node0_action N_IncrementArrayCounter_Node0_action --> E_IncrementArrayCounter S_IncrementArrayCounter --> N_IncrementArrayCounter_Node0 N_IncrementArrayCounter_Node0 -- No --> E_IncrementArrayCounter
counter by one to point to the next
available array position"]:::main N_IncrementArrayCounter_Node0 -- Yes --> N_IncrementArrayCounter_Node0_action N_IncrementArrayCounter_Node0_action --> E_IncrementArrayCounter S_IncrementArrayCounter --> N_IncrementArrayCounter_Node0 N_IncrementArrayCounter_Node0 -- No --> E_IncrementArrayCounter
File: GCX016.cbl
GIVEN:
An S09A array element has been successfully populated with status information
WHEN:
The element population is complete
THEN:
The system increments the array counter by one to point to the next available array position
β Consolidated Acceptance Criteria
- The system needs to determine if more elements can be added → the system checks if the array counter is less than the maximum limit and determines the next action
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ArrayCounterMaximumLimit(["Start Step"])
E_ArrayCounterMaximumLimit(["End Step"])
N_ArrayCounterMaximumLimit_Node0{"The system needs to determine if
more elements can be added"}:::decision N_ArrayCounterMaximumLimit_Node0_action["The system checks if the array
counter is less than the maximum
limit and determines the next action"]:::main N_ArrayCounterMaximumLimit_Node0 -- Yes --> N_ArrayCounterMaximumLimit_Node0_action N_ArrayCounterMaximumLimit_Node0_action --> E_ArrayCounterMaximumLimit S_ArrayCounterMaximumLimit --> N_ArrayCounterMaximumLimit_Node0 N_ArrayCounterMaximumLimit_Node0 -- No --> E_ArrayCounterMaximumLimit
more elements can be added"}:::decision N_ArrayCounterMaximumLimit_Node0_action["The system checks if the array
counter is less than the maximum
limit and determines the next action"]:::main N_ArrayCounterMaximumLimit_Node0 -- Yes --> N_ArrayCounterMaximumLimit_Node0_action N_ArrayCounterMaximumLimit_Node0_action --> E_ArrayCounterMaximumLimit S_ArrayCounterMaximumLimit --> N_ArrayCounterMaximumLimit_Node0 N_ArrayCounterMaximumLimit_Node0 -- No --> E_ArrayCounterMaximumLimit
File: GCX016.cbl
GIVEN:
The array counter has been incremented after populating an element
WHEN:
The system needs to determine if more elements can be added
THEN:
- The system checks if the array counter is less than the maximum limit
- Determines the next action
β Consolidated Acceptance Criteria
- Additional status segments need to be retrieved → the system calls GCCUSIO to get the next S09 status segment for the same cargo
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CallGCCUSIOtoGetNextS09StatusSegment(["Start Step"])
E_CallGCCUSIOtoGetNextS09StatusSegment(["End Step"])
N_CallGCCUSIOtoGetNextS09StatusSegment_Node0{"Additional status segments need to
be retrieved"}:::decision N_CallGCCUSIOtoGetNextS09StatusSegment_Node0_action["The system calls GCCUSIO to get the
next S09 status segment for the same
cargo"]:::main N_CallGCCUSIOtoGetNextS09StatusSegment_Node0 -- Yes --> N_CallGCCUSIOtoGetNextS09StatusSegment_Node0_action N_CallGCCUSIOtoGetNextS09StatusSegment_Node0_action --> E_CallGCCUSIOtoGetNextS09StatusSegment S_CallGCCUSIOtoGetNextS09StatusSegment --> N_CallGCCUSIOtoGetNextS09StatusSegment_Node0 N_CallGCCUSIOtoGetNextS09StatusSegment_Node0 -- No --> E_CallGCCUSIOtoGetNextS09StatusSegment
be retrieved"}:::decision N_CallGCCUSIOtoGetNextS09StatusSegment_Node0_action["The system calls GCCUSIO to get the
next S09 status segment for the same
cargo"]:::main N_CallGCCUSIOtoGetNextS09StatusSegment_Node0 -- Yes --> N_CallGCCUSIOtoGetNextS09StatusSegment_Node0_action N_CallGCCUSIOtoGetNextS09StatusSegment_Node0_action --> E_CallGCCUSIOtoGetNextS09StatusSegment S_CallGCCUSIOtoGetNextS09StatusSegment --> N_CallGCCUSIOtoGetNextS09StatusSegment_Node0 N_CallGCCUSIOtoGetNextS09StatusSegment_Node0 -- No --> E_CallGCCUSIOtoGetNextS09StatusSegment
File: GCX016.cbl
GIVEN:
The array has capacity for more elements and previous segments have been processed
WHEN:
Additional status segments need to be retrieved
THEN:
The system calls GCCUSIO to get the next S09 status segment for the same cargo
β Consolidated Acceptance Criteria
- The status array population process is complete → the system sets the total array count to reflect the number of elements populated
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetTotalArrayCount(["Start Step"])
E_SetTotalArrayCount(["End Step"])
N_SetTotalArrayCount_Node0{"The status array population process
is complete"}:::decision N_SetTotalArrayCount_Node0_action["The system sets the total array
count to reflect the number of
elements populated"]:::main N_SetTotalArrayCount_Node0 -- Yes --> N_SetTotalArrayCount_Node0_action N_SetTotalArrayCount_Node0_action --> E_SetTotalArrayCount S_SetTotalArrayCount --> N_SetTotalArrayCount_Node0 N_SetTotalArrayCount_Node0 -- No --> E_SetTotalArrayCount
is complete"}:::decision N_SetTotalArrayCount_Node0_action["The system sets the total array
count to reflect the number of
elements populated"]:::main N_SetTotalArrayCount_Node0 -- Yes --> N_SetTotalArrayCount_Node0_action N_SetTotalArrayCount_Node0_action --> E_SetTotalArrayCount S_SetTotalArrayCount --> N_SetTotalArrayCount_Node0 N_SetTotalArrayCount_Node0 -- No --> E_SetTotalArrayCount
File: GCX016.cbl
GIVEN:
All available S09 segments have been processed or no segments were found
WHEN:
The status array population process is complete
THEN:
The system sets the total array count to reflect the number of elements populated
β Consolidated Acceptance Criteria
- Additional S09 segments are available but cannot be processed → the system logs a warning about array overflow and stops further population
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ArrayOverflowLogWarning(["Start Step"])
E_ArrayOverflowLogWarning(["End Step"])
N_ArrayOverflowLogWarning_Node0{"Additional S09 segments are
available but cannot be processed"}:::decision N_ArrayOverflowLogWarning_Node0_action["The system logs a warning about
array overflow and stops further
population"]:::main N_ArrayOverflowLogWarning_Node0 -- Yes --> N_ArrayOverflowLogWarning_Node0_action N_ArrayOverflowLogWarning_Node0_action --> E_ArrayOverflowLogWarning S_ArrayOverflowLogWarning --> N_ArrayOverflowLogWarning_Node0 N_ArrayOverflowLogWarning_Node0 -- No --> E_ArrayOverflowLogWarning
available but cannot be processed"}:::decision N_ArrayOverflowLogWarning_Node0_action["The system logs a warning about
array overflow and stops further
population"]:::main N_ArrayOverflowLogWarning_Node0 -- Yes --> N_ArrayOverflowLogWarning_Node0_action N_ArrayOverflowLogWarning_Node0_action --> E_ArrayOverflowLogWarning S_ArrayOverflowLogWarning --> N_ArrayOverflowLogWarning_Node0 N_ArrayOverflowLogWarning_Node0 -- No --> E_ArrayOverflowLogWarning
File: GCX016.cbl
GIVEN:
The array counter has reached or exceeded the maximum allowed limit
WHEN:
Additional S09 segments are available but cannot be processed
THEN:
- The system logs a warning about array overflow
- Stops further population
β Consolidated Acceptance Criteria
- The population process concludes → the system marks the status array population as complete and the array is ready for use
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_StatusArrayPopulationComplete(["Start Step"])
E_StatusArrayPopulationComplete(["End Step"])
N_StatusArrayPopulationComplete_Node0{"The population process concludes"}:::decision
N_StatusArrayPopulationComplete_Node0_action["The system marks the status array
population as complete and the array
is ready for use"]:::main N_StatusArrayPopulationComplete_Node0 -- Yes --> N_StatusArrayPopulationComplete_Node0_action N_StatusArrayPopulationComplete_Node0_action --> E_StatusArrayPopulationComplete S_StatusArrayPopulationComplete --> N_StatusArrayPopulationComplete_Node0 N_StatusArrayPopulationComplete_Node0 -- No --> E_StatusArrayPopulationComplete
population as complete and the array
is ready for use"]:::main N_StatusArrayPopulationComplete_Node0 -- Yes --> N_StatusArrayPopulationComplete_Node0_action N_StatusArrayPopulationComplete_Node0_action --> E_StatusArrayPopulationComplete S_StatusArrayPopulationComplete --> N_StatusArrayPopulationComplete_Node0 N_StatusArrayPopulationComplete_Node0 -- No --> E_StatusArrayPopulationComplete
File: GCX016.cbl
GIVEN:
All available S09 segments have been processed or array limits have been reached
WHEN:
The population process concludes
THEN:
- The system marks the status array population as complete
- The array is ready for use
β Consolidated Acceptance Criteria
- The system checks if any modifications were made to the status array → if modifications exist, proceed with database update preparation, otherwise skip to next processing step
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_StatusArrayModified(["Start Step"])
E_StatusArrayModified(["End Step"])
N_StatusArrayModified_Node0{"The system checks if any
modifications were made to the
status array"}:::decision N_StatusArrayModified_Node0_action["If modifications exist, proceed
with database update preparation,
otherwise skip to next processing
step"]:::main N_StatusArrayModified_Node0 -- Yes --> N_StatusArrayModified_Node0_action N_StatusArrayModified_Node0_action --> E_StatusArrayModified S_StatusArrayModified --> N_StatusArrayModified_Node0 N_StatusArrayModified_Node0 -- No --> E_StatusArrayModified
modifications were made to the
status array"}:::decision N_StatusArrayModified_Node0_action["If modifications exist, proceed
with database update preparation,
otherwise skip to next processing
step"]:::main N_StatusArrayModified_Node0 -- Yes --> N_StatusArrayModified_Node0_action N_StatusArrayModified_Node0_action --> E_StatusArrayModified S_StatusArrayModified --> N_StatusArrayModified_Node0 N_StatusArrayModified_Node0 -- No --> E_StatusArrayModified
File: GCX016.cbl
GIVEN:
Status array processing has been completed
WHEN:
The system checks if any modifications were made to the status array
THEN:
If modifications exist, proceed with database update preparation, otherwise skip to next processing step
β Consolidated Acceptance Criteria
- The system prepares to update the S09 segment → initialize S09 segment structure and prepare for data movement from status array
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_PrepareS09SegmentUpdate(["Start Step"])
E_PrepareS09SegmentUpdate(["End Step"])
N_PrepareS09SegmentUpdate_Node0{"The system prepares to update the
S09 segment"}:::decision N_PrepareS09SegmentUpdate_Node0_action["Initialize S09 segment structure
and prepare for data movement from
status array"]:::main N_PrepareS09SegmentUpdate_Node0 -- Yes --> N_PrepareS09SegmentUpdate_Node0_action N_PrepareS09SegmentUpdate_Node0_action --> E_PrepareS09SegmentUpdate S_PrepareS09SegmentUpdate --> N_PrepareS09SegmentUpdate_Node0 N_PrepareS09SegmentUpdate_Node0 -- No --> E_PrepareS09SegmentUpdate
S09 segment"}:::decision N_PrepareS09SegmentUpdate_Node0_action["Initialize S09 segment structure
and prepare for data movement from
status array"]:::main N_PrepareS09SegmentUpdate_Node0 -- Yes --> N_PrepareS09SegmentUpdate_Node0_action N_PrepareS09SegmentUpdate_Node0_action --> E_PrepareS09SegmentUpdate S_PrepareS09SegmentUpdate --> N_PrepareS09SegmentUpdate_Node0 N_PrepareS09SegmentUpdate_Node0 -- No --> E_PrepareS09SegmentUpdate
File: GCX016.cbl
GIVEN:
Status array has been modified during processing
WHEN:
The system prepares to update the S09 segment
THEN:
- Initialize s09 segment structure
- Prepare for data movement from status array
β Consolidated Acceptance Criteria
- The system moves data from S09A array to database format → convert all status entries from array format to S09 segment structure maintaining proper sequence and occurrence numbers
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MoveS09AArrayDatatoDatabaseFormat(["Start Step"])
E_MoveS09AArrayDatatoDatabaseFormat(["End Step"])
N_MoveS09AArrayDatatoDatabaseFormat_Node0{"The system moves data from S09A
array to database format"}:::decision N_MoveS09AArrayDatatoDatabaseFormat_Node0_action["Convert all status entries from
array format to S09 segment
structure maintaining proper
sequence and occurrence numbers"]:::main N_MoveS09AArrayDatatoDatabaseFormat_Node0 -- Yes --> N_MoveS09AArrayDatatoDatabaseFormat_Node0_action N_MoveS09AArrayDatatoDatabaseFormat_Node0_action --> E_MoveS09AArrayDatatoDatabaseFormat S_MoveS09AArrayDatatoDatabaseFormat --> N_MoveS09AArrayDatatoDatabaseFormat_Node0 N_MoveS09AArrayDatatoDatabaseFormat_Node0 -- No --> E_MoveS09AArrayDatatoDatabaseFormat
array to database format"}:::decision N_MoveS09AArrayDatatoDatabaseFormat_Node0_action["Convert all status entries from
array format to S09 segment
structure maintaining proper
sequence and occurrence numbers"]:::main N_MoveS09AArrayDatatoDatabaseFormat_Node0 -- Yes --> N_MoveS09AArrayDatatoDatabaseFormat_Node0_action N_MoveS09AArrayDatatoDatabaseFormat_Node0_action --> E_MoveS09AArrayDatatoDatabaseFormat S_MoveS09AArrayDatatoDatabaseFormat --> N_MoveS09AArrayDatatoDatabaseFormat_Node0 N_MoveS09AArrayDatatoDatabaseFormat_Node0 -- No --> E_MoveS09AArrayDatatoDatabaseFormat
File: GCX016.cbl
GIVEN:
S09 segment update has been prepared
WHEN:
The system moves data from S09A array to database format
THEN:
- Convert all status entries from array format to s09 segment structure maintaining proper sequence
- Occurrence numbers
β Consolidated Acceptance Criteria
- The system calculates the number of status entries → count all non-blank status entries in the array and set the total count for database operations
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CalculateNumberofStatusEntries(["Start Step"])
E_CalculateNumberofStatusEntries(["End Step"])
N_CalculateNumberofStatusEntries_Node0{"The system calculates the number of
status entries"}:::decision N_CalculateNumberofStatusEntries_Node0_action["Count all non-blank status entries
in the array and set the total count
for database operations"]:::main N_CalculateNumberofStatusEntries_Node0 -- Yes --> N_CalculateNumberofStatusEntries_Node0_action N_CalculateNumberofStatusEntries_Node0_action --> E_CalculateNumberofStatusEntries S_CalculateNumberofStatusEntries --> N_CalculateNumberofStatusEntries_Node0 N_CalculateNumberofStatusEntries_Node0 -- No --> E_CalculateNumberofStatusEntries
status entries"}:::decision N_CalculateNumberofStatusEntries_Node0_action["Count all non-blank status entries
in the array and set the total count
for database operations"]:::main N_CalculateNumberofStatusEntries_Node0 -- Yes --> N_CalculateNumberofStatusEntries_Node0_action N_CalculateNumberofStatusEntries_Node0_action --> E_CalculateNumberofStatusEntries S_CalculateNumberofStatusEntries --> N_CalculateNumberofStatusEntries_Node0 N_CalculateNumberofStatusEntries_Node0 -- No --> E_CalculateNumberofStatusEntries
File: GCX016.cbl
GIVEN:
Status array data has been moved to database format
WHEN:
The system calculates the number of status entries
THEN:
- Count all non-blank status entries in the array
- Set the total count for database operations
β Consolidated Acceptance Criteria
- The system checks if status entries exist → if status entries exist, proceed with S09 segment replacement, otherwise proceed directly to cargo record update
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_StatusEntriesExist(["Start Step"])
E_StatusEntriesExist(["End Step"])
N_StatusEntriesExist_Node0{"The system checks if status entries
exist"}:::decision N_StatusEntriesExist_Node0_action["If status entries exist, proceed
with S09 segment replacement,
otherwise proceed directly to cargo
record update"]:::main N_StatusEntriesExist_Node0 -- Yes --> N_StatusEntriesExist_Node0_action N_StatusEntriesExist_Node0_action --> E_StatusEntriesExist S_StatusEntriesExist --> N_StatusEntriesExist_Node0 N_StatusEntriesExist_Node0 -- No --> E_StatusEntriesExist
exist"}:::decision N_StatusEntriesExist_Node0_action["If status entries exist, proceed
with S09 segment replacement,
otherwise proceed directly to cargo
record update"]:::main N_StatusEntriesExist_Node0 -- Yes --> N_StatusEntriesExist_Node0_action N_StatusEntriesExist_Node0_action --> E_StatusEntriesExist S_StatusEntriesExist --> N_StatusEntriesExist_Node0 N_StatusEntriesExist_Node0 -- No --> E_StatusEntriesExist
File: GCX016.cbl
GIVEN:
Number of status entries has been calculated
WHEN:
The system checks if status entries exist
THEN:
If status entries exist, proceed with S09 segment replacement, otherwise proceed directly to cargo record update
β Consolidated Acceptance Criteria
- The system replaces the GCSUSS09 segment → update the database with new status information maintaining proper key structure and sequence numbers
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ReplaceGCSUSS09SegmentwithUpdatedStatus(["Start Step"])
E_ReplaceGCSUSS09SegmentwithUpdatedStatus(["End Step"])
N_ReplaceGCSUSS09SegmentwithUpdatedStatus_Node0{"The system replaces the GCSUSS09
segment"}:::decision N_ReplaceGCSUSS09SegmentwithUpdatedStatus_Node0_action["Update the database with new status
information maintaining proper key
structure and sequence numbers"]:::main N_ReplaceGCSUSS09SegmentwithUpdatedStatus_Node0 -- Yes --> N_ReplaceGCSUSS09SegmentwithUpdatedStatus_Node0_action N_ReplaceGCSUSS09SegmentwithUpdatedStatus_Node0_action --> E_ReplaceGCSUSS09SegmentwithUpdatedStatus S_ReplaceGCSUSS09SegmentwithUpdatedStatus --> N_ReplaceGCSUSS09SegmentwithUpdatedStatus_Node0 N_ReplaceGCSUSS09SegmentwithUpdatedStatus_Node0 -- No --> E_ReplaceGCSUSS09SegmentwithUpdatedStatus
segment"}:::decision N_ReplaceGCSUSS09SegmentwithUpdatedStatus_Node0_action["Update the database with new status
information maintaining proper key
structure and sequence numbers"]:::main N_ReplaceGCSUSS09SegmentwithUpdatedStatus_Node0 -- Yes --> N_ReplaceGCSUSS09SegmentwithUpdatedStatus_Node0_action N_ReplaceGCSUSS09SegmentwithUpdatedStatus_Node0_action --> E_ReplaceGCSUSS09SegmentwithUpdatedStatus S_ReplaceGCSUSS09SegmentwithUpdatedStatus --> N_ReplaceGCSUSS09SegmentwithUpdatedStatus_Node0 N_ReplaceGCSUSS09SegmentwithUpdatedStatus_Node0 -- No --> E_ReplaceGCSUSS09SegmentwithUpdatedStatus
File: GCX016.cbl
GIVEN:
Status entries exist and have been formatted for database storage
WHEN:
The system replaces the GCSUSS09 segment
THEN:
- Update the database with new status information maintaining proper key structure
- Sequence numbers
β Consolidated Acceptance Criteria
- The system updates cargo root record status flags → set appropriate status flags in the cargo root record based on the final status array analysis
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UpdateCargoRootRecordStatusFlags(["Start Step"])
E_UpdateCargoRootRecordStatusFlags(["End Step"])
N_UpdateCargoRootRecordStatusFlags_Node0{"The system updates cargo root
record status flags"}:::decision N_UpdateCargoRootRecordStatusFlags_Node0_action["Set appropriate status flags in the
cargo root record based on the final
status array analysis"]:::main N_UpdateCargoRootRecordStatusFlags_Node0 -- Yes --> N_UpdateCargoRootRecordStatusFlags_Node0_action N_UpdateCargoRootRecordStatusFlags_Node0_action --> E_UpdateCargoRootRecordStatusFlags S_UpdateCargoRootRecordStatusFlags --> N_UpdateCargoRootRecordStatusFlags_Node0 N_UpdateCargoRootRecordStatusFlags_Node0 -- No --> E_UpdateCargoRootRecordStatusFlags
record status flags"}:::decision N_UpdateCargoRootRecordStatusFlags_Node0_action["Set appropriate status flags in the
cargo root record based on the final
status array analysis"]:::main N_UpdateCargoRootRecordStatusFlags_Node0 -- Yes --> N_UpdateCargoRootRecordStatusFlags_Node0_action N_UpdateCargoRootRecordStatusFlags_Node0_action --> E_UpdateCargoRootRecordStatusFlags S_UpdateCargoRootRecordStatusFlags --> N_UpdateCargoRootRecordStatusFlags_Node0 N_UpdateCargoRootRecordStatusFlags_Node0 -- No --> E_UpdateCargoRootRecordStatusFlags
File: GCX016.cbl
GIVEN:
S09 segment has been updated or no status entries exist
WHEN:
The system updates cargo root record status flags
THEN:
Set appropriate status flags in the cargo root record based on the final status array analysis
β Consolidated Acceptance Criteria
- The system replaces the GCSUSRT cargo record → update the database cargo record with all modified fields including status, quantities, and processing flags
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ReplaceGCSUSRTCargoRecord(["Start Step"])
E_ReplaceGCSUSRTCargoRecord(["End Step"])
N_ReplaceGCSUSRTCargoRecord_Node0{"The system replaces the GCSUSRT
cargo record"}:::decision N_ReplaceGCSUSRTCargoRecord_Node0_action["Update the database cargo record
with all modified fields including
status, quantities, and processing
flags"]:::main N_ReplaceGCSUSRTCargoRecord_Node0 -- Yes --> N_ReplaceGCSUSRTCargoRecord_Node0_action N_ReplaceGCSUSRTCargoRecord_Node0_action --> E_ReplaceGCSUSRTCargoRecord S_ReplaceGCSUSRTCargoRecord --> N_ReplaceGCSUSRTCargoRecord_Node0 N_ReplaceGCSUSRTCargoRecord_Node0 -- No --> E_ReplaceGCSUSRTCargoRecord
cargo record"}:::decision N_ReplaceGCSUSRTCargoRecord_Node0_action["Update the database cargo record
with all modified fields including
status, quantities, and processing
flags"]:::main N_ReplaceGCSUSRTCargoRecord_Node0 -- Yes --> N_ReplaceGCSUSRTCargoRecord_Node0_action N_ReplaceGCSUSRTCargoRecord_Node0_action --> E_ReplaceGCSUSRTCargoRecord S_ReplaceGCSUSRTCargoRecord --> N_ReplaceGCSUSRTCargoRecord_Node0 N_ReplaceGCSUSRTCargoRecord_Node0 -- No --> E_ReplaceGCSUSRTCargoRecord
File: GCX016.cbl
GIVEN:
Cargo root record status flags have been updated
WHEN:
The system replaces the GCSUSRT cargo record
THEN:
Update the database cargo record with all modified fields including status, quantities, and processing flags
β Consolidated Acceptance Criteria
- The system logs status array changes → record all status modifications, timestamps, and processing details in the audit log
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogStatusArrayChanges(["Start Step"])
E_LogStatusArrayChanges(["End Step"])
N_LogStatusArrayChanges_Node0{"The system logs status array
changes"}:::decision N_LogStatusArrayChanges_Node0_action["Record all status modifications,
timestamps, and processing details
in the audit log"]:::main N_LogStatusArrayChanges_Node0 -- Yes --> N_LogStatusArrayChanges_Node0_action N_LogStatusArrayChanges_Node0_action --> E_LogStatusArrayChanges S_LogStatusArrayChanges --> N_LogStatusArrayChanges_Node0 N_LogStatusArrayChanges_Node0 -- No --> E_LogStatusArrayChanges
changes"}:::decision N_LogStatusArrayChanges_Node0_action["Record all status modifications,
timestamps, and processing details
in the audit log"]:::main N_LogStatusArrayChanges_Node0 -- Yes --> N_LogStatusArrayChanges_Node0_action N_LogStatusArrayChanges_Node0_action --> E_LogStatusArrayChanges S_LogStatusArrayChanges --> N_LogStatusArrayChanges_Node0 N_LogStatusArrayChanges_Node0 -- No --> E_LogStatusArrayChanges
File: GCX016.cbl
GIVEN:
Database update has been successful
WHEN:
The system logs status array changes
THEN:
Record all status modifications, timestamps, and processing details in the audit log
β Consolidated Acceptance Criteria
- The system retries the database operation → attempt the database update again with appropriate retry logic and error handling
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RetryDatabaseOperation(["Start Step"])
E_RetryDatabaseOperation(["End Step"])
N_RetryDatabaseOperation_Node0{"The system retries the database
operation"}:::decision N_RetryDatabaseOperation_Node0_action["Attempt the database update again
with appropriate retry logic and
error handling"]:::main N_RetryDatabaseOperation_Node0 -- Yes --> N_RetryDatabaseOperation_Node0_action N_RetryDatabaseOperation_Node0_action --> E_RetryDatabaseOperation S_RetryDatabaseOperation --> N_RetryDatabaseOperation_Node0 N_RetryDatabaseOperation_Node0 -- No --> E_RetryDatabaseOperation
operation"}:::decision N_RetryDatabaseOperation_Node0_action["Attempt the database update again
with appropriate retry logic and
error handling"]:::main N_RetryDatabaseOperation_Node0 -- Yes --> N_RetryDatabaseOperation_Node0_action N_RetryDatabaseOperation_Node0_action --> E_RetryDatabaseOperation S_RetryDatabaseOperation --> N_RetryDatabaseOperation_Node0 N_RetryDatabaseOperation_Node0 -- No --> E_RetryDatabaseOperation
File: GCX016.cbl
GIVEN:
Database error has been handled
WHEN:
The system retries the database operation
THEN:
- Attempt the database update again with appropriate retry logic
- Error handling
β Consolidated Acceptance Criteria
- The system processes the found disposition code record → all disposition code information including counterpart codes, processing instructions, quantity actions, removal flags, and status information flags are extracted
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RetrieveDispositionCodeInformation(["Start Step"])
E_RetrieveDispositionCodeInformation(["End Step"])
N_RetrieveDispositionCodeInformation_Node0{"The system processes the found
disposition code record"}:::decision N_RetrieveDispositionCodeInformation_Node0_action["All disposition code information
including counterpart codes,
processing instructions, quantity
actions, removal flags, and status
information flags are extracted"]:::main N_RetrieveDispositionCodeInformation_Node0 -- Yes --> N_RetrieveDispositionCodeInformation_Node0_action N_RetrieveDispositionCodeInformation_Node0_action --> E_RetrieveDispositionCodeInformation S_RetrieveDispositionCodeInformation --> N_RetrieveDispositionCodeInformation_Node0 N_RetrieveDispositionCodeInformation_Node0 -- No --> E_RetrieveDispositionCodeInformation
disposition code record"}:::decision N_RetrieveDispositionCodeInformation_Node0_action["All disposition code information
including counterpart codes,
processing instructions, quantity
actions, removal flags, and status
information flags are extracted"]:::main N_RetrieveDispositionCodeInformation_Node0 -- Yes --> N_RetrieveDispositionCodeInformation_Node0_action N_RetrieveDispositionCodeInformation_Node0_action --> E_RetrieveDispositionCodeInformation S_RetrieveDispositionCodeInformation --> N_RetrieveDispositionCodeInformation_Node0 N_RetrieveDispositionCodeInformation_Node0 -- No --> E_RetrieveDispositionCodeInformation
File: GCX016.cbl
GIVEN:
The disposition code exists in the DC table
WHEN:
The system processes the found disposition code record
THEN:
All disposition code information including counterpart codes, processing instructions, quantity actions, removal flags, and status information flags are extracted
β Consolidated Acceptance Criteria
- The system processes the disposition code record → the counterpart code is extracted and stored for subsequent processing operations
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExtractCounterpartCode(["Start Step"])
E_ExtractCounterpartCode(["End Step"])
N_ExtractCounterpartCode_Node0{"The system processes the
disposition code record"}:::decision N_ExtractCounterpartCode_Node0_action["The counterpart code is extracted
and stored for subsequent processing
operations"]:::main N_ExtractCounterpartCode_Node0 -- Yes --> N_ExtractCounterpartCode_Node0_action N_ExtractCounterpartCode_Node0_action --> E_ExtractCounterpartCode S_ExtractCounterpartCode --> N_ExtractCounterpartCode_Node0 N_ExtractCounterpartCode_Node0 -- No --> E_ExtractCounterpartCode
disposition code record"}:::decision N_ExtractCounterpartCode_Node0_action["The counterpart code is extracted
and stored for subsequent processing
operations"]:::main N_ExtractCounterpartCode_Node0 -- Yes --> N_ExtractCounterpartCode_Node0_action N_ExtractCounterpartCode_Node0_action --> E_ExtractCounterpartCode S_ExtractCounterpartCode --> N_ExtractCounterpartCode_Node0 N_ExtractCounterpartCode_Node0 -- No --> E_ExtractCounterpartCode
File: GCX016.cbl
GIVEN:
Disposition code information is available from the DC table
WHEN:
The system processes the disposition code record
THEN:
- The counterpart code is extracted
- Stored for subsequent processing operations
β Consolidated Acceptance Criteria
- The system processes the disposition code information → processing instructions are extracted and made available for disposition code handling logic
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExtractProcessingInstructions(["Start Step"])
E_ExtractProcessingInstructions(["End Step"])
N_ExtractProcessingInstructions_Node0{"The system processes the
disposition code information"}:::decision N_ExtractProcessingInstructions_Node0_action["Processing instructions are
extracted and made available for
disposition code handling logic"]:::main N_ExtractProcessingInstructions_Node0 -- Yes --> N_ExtractProcessingInstructions_Node0_action N_ExtractProcessingInstructions_Node0_action --> E_ExtractProcessingInstructions S_ExtractProcessingInstructions --> N_ExtractProcessingInstructions_Node0 N_ExtractProcessingInstructions_Node0 -- No --> E_ExtractProcessingInstructions
disposition code information"}:::decision N_ExtractProcessingInstructions_Node0_action["Processing instructions are
extracted and made available for
disposition code handling logic"]:::main N_ExtractProcessingInstructions_Node0 -- Yes --> N_ExtractProcessingInstructions_Node0_action N_ExtractProcessingInstructions_Node0_action --> E_ExtractProcessingInstructions S_ExtractProcessingInstructions --> N_ExtractProcessingInstructions_Node0 N_ExtractProcessingInstructions_Node0 -- No --> E_ExtractProcessingInstructions
File: GCX016.cbl
GIVEN:
Disposition code record is retrieved from the DC table
WHEN:
The system processes the disposition code information
THEN:
- Processing instructions are extracted
- Made available for disposition code handling logic
β Consolidated Acceptance Criteria
- The system extracts quantity-related flags from the DC table record → the quantity action flag is extracted to determine whether release quantities will be added, subtracted, or remain unchanged
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExtractQuantityActionFlag(["Start Step"])
E_ExtractQuantityActionFlag(["End Step"])
N_ExtractQuantityActionFlag_Node0{"The system extracts
quantity-related flags from the DC
table record"}:::decision N_ExtractQuantityActionFlag_Node0_action["The quantity action flag is
extracted to determine whether
release quantities will be added,
subtracted, or remain unchanged"]:::main N_ExtractQuantityActionFlag_Node0 -- Yes --> N_ExtractQuantityActionFlag_Node0_action N_ExtractQuantityActionFlag_Node0_action --> E_ExtractQuantityActionFlag S_ExtractQuantityActionFlag --> N_ExtractQuantityActionFlag_Node0 N_ExtractQuantityActionFlag_Node0 -- No --> E_ExtractQuantityActionFlag
quantity-related flags from the DC
table record"}:::decision N_ExtractQuantityActionFlag_Node0_action["The quantity action flag is
extracted to determine whether
release quantities will be added,
subtracted, or remain unchanged"]:::main N_ExtractQuantityActionFlag_Node0 -- Yes --> N_ExtractQuantityActionFlag_Node0_action N_ExtractQuantityActionFlag_Node0_action --> E_ExtractQuantityActionFlag S_ExtractQuantityActionFlag --> N_ExtractQuantityActionFlag_Node0 N_ExtractQuantityActionFlag_Node0 -- No --> E_ExtractQuantityActionFlag
File: GCX016.cbl
GIVEN:
Disposition code information is being processed
WHEN:
The system extracts quantity-related flags from the DC table record
THEN:
The quantity action flag is extracted to determine whether release quantities will be added, subtracted, or remain unchanged
β Consolidated Acceptance Criteria
- The system processes removal-related information → the removal flag is extracted to determine whether existing disposition codes should be removed from cargo status
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExtractRemovalFlag(["Start Step"])
E_ExtractRemovalFlag(["End Step"])
N_ExtractRemovalFlag_Node0{"The system processes
removal-related information"}:::decision N_ExtractRemovalFlag_Node0_action["The removal flag is extracted to
determine whether existing
disposition codes should be removed
from cargo status"]:::main N_ExtractRemovalFlag_Node0 -- Yes --> N_ExtractRemovalFlag_Node0_action N_ExtractRemovalFlag_Node0_action --> E_ExtractRemovalFlag S_ExtractRemovalFlag --> N_ExtractRemovalFlag_Node0 N_ExtractRemovalFlag_Node0 -- No --> E_ExtractRemovalFlag
removal-related information"}:::decision N_ExtractRemovalFlag_Node0_action["The removal flag is extracted to
determine whether existing
disposition codes should be removed
from cargo status"]:::main N_ExtractRemovalFlag_Node0 -- Yes --> N_ExtractRemovalFlag_Node0_action N_ExtractRemovalFlag_Node0_action --> E_ExtractRemovalFlag S_ExtractRemovalFlag --> N_ExtractRemovalFlag_Node0 N_ExtractRemovalFlag_Node0 -- No --> E_ExtractRemovalFlag
File: GCX016.cbl
GIVEN:
Disposition code record is available from the DC table
WHEN:
The system processes removal-related information
THEN:
The removal flag is extracted to determine whether existing disposition codes should be removed from cargo status
β Consolidated Acceptance Criteria
- The system processes status-related flags → the status information flag is extracted to determine whether the disposition code represents informational status or actionable processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExtractStatusInformationFlag(["Start Step"])
E_ExtractStatusInformationFlag(["End Step"])
N_ExtractStatusInformationFlag_Node0{"The system processes status-related
flags"}:::decision N_ExtractStatusInformationFlag_Node0_action["The status information flag is
extracted to determine whether the
disposition code represents
informational status or actionable
processing"]:::main N_ExtractStatusInformationFlag_Node0 -- Yes --> N_ExtractStatusInformationFlag_Node0_action N_ExtractStatusInformationFlag_Node0_action --> E_ExtractStatusInformationFlag S_ExtractStatusInformationFlag --> N_ExtractStatusInformationFlag_Node0 N_ExtractStatusInformationFlag_Node0 -- No --> E_ExtractStatusInformationFlag
flags"}:::decision N_ExtractStatusInformationFlag_Node0_action["The status information flag is
extracted to determine whether the
disposition code represents
informational status or actionable
processing"]:::main N_ExtractStatusInformationFlag_Node0 -- Yes --> N_ExtractStatusInformationFlag_Node0_action N_ExtractStatusInformationFlag_Node0_action --> E_ExtractStatusInformationFlag S_ExtractStatusInformationFlag --> N_ExtractStatusInformationFlag_Node0 N_ExtractStatusInformationFlag_Node0 -- No --> E_ExtractStatusInformationFlag
File: GCX016.cbl
GIVEN:
Disposition code information is being extracted from the DC table
WHEN:
The system processes status-related flags
THEN:
The status information flag is extracted to determine whether the disposition code represents informational status or actionable processing
β Consolidated Acceptance Criteria
- The system needs to indicate lookup failure → the found flag is set to false to indicate unsuccessful disposition code processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetFoundFlagtoFalse(["Start Step"])
E_SetFoundFlagtoFalse(["End Step"])
N_SetFoundFlagtoFalse_Node0{"The system needs to indicate lookup
failure"}:::decision N_SetFoundFlagtoFalse_Node0_action["The found flag is set to false to
indicate unsuccessful disposition
code processing"]:::main N_SetFoundFlagtoFalse_Node0 -- Yes --> N_SetFoundFlagtoFalse_Node0_action N_SetFoundFlagtoFalse_Node0_action --> E_SetFoundFlagtoFalse S_SetFoundFlagtoFalse --> N_SetFoundFlagtoFalse_Node0 N_SetFoundFlagtoFalse_Node0 -- No --> E_SetFoundFlagtoFalse
failure"}:::decision N_SetFoundFlagtoFalse_Node0_action["The found flag is set to false to
indicate unsuccessful disposition
code processing"]:::main N_SetFoundFlagtoFalse_Node0 -- Yes --> N_SetFoundFlagtoFalse_Node0_action N_SetFoundFlagtoFalse_Node0_action --> E_SetFoundFlagtoFalse S_SetFoundFlagtoFalse --> N_SetFoundFlagtoFalse_Node0 N_SetFoundFlagtoFalse_Node0 -- No --> E_SetFoundFlagtoFalse
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
Disposition code lookup has failed due to code not being found in DC table
WHEN:
The system needs to indicate lookup failure
THEN:
The found flag is set to false to indicate unsuccessful disposition code processing
β Consolidated Acceptance Criteria
- The system checks the disposition code table for counterpart information → the system identifies if the disposition code has a counterpart code defined
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CheckDispositionCodeTableforCounterpartInfo(["Start Step"])
E_CheckDispositionCodeTableforCounterpartInfo(["End Step"])
N_CheckDispositionCodeTableforCounterpartInfo_Node0{"The system checks the disposition
code table for counterpart
information"}:::decision N_CheckDispositionCodeTableforCounterpartInfo_Node0_action["The system identifies if the
disposition code has a counterpart
code defined"]:::main N_CheckDispositionCodeTableforCounterpartInfo_Node0 -- Yes --> N_CheckDispositionCodeTableforCounterpartInfo_Node0_action N_CheckDispositionCodeTableforCounterpartInfo_Node0_action --> E_CheckDispositionCodeTableforCounterpartInfo S_CheckDispositionCodeTableforCounterpartInfo --> N_CheckDispositionCodeTableforCounterpartInfo_Node0 N_CheckDispositionCodeTableforCounterpartInfo_Node0 -- No --> E_CheckDispositionCodeTableforCounterpartInfo
code table for counterpart
information"}:::decision N_CheckDispositionCodeTableforCounterpartInfo_Node0_action["The system identifies if the
disposition code has a counterpart
code defined"]:::main N_CheckDispositionCodeTableforCounterpartInfo_Node0 -- Yes --> N_CheckDispositionCodeTableforCounterpartInfo_Node0_action N_CheckDispositionCodeTableforCounterpartInfo_Node0_action --> E_CheckDispositionCodeTableforCounterpartInfo S_CheckDispositionCodeTableforCounterpartInfo --> N_CheckDispositionCodeTableforCounterpartInfo_Node0 N_CheckDispositionCodeTableforCounterpartInfo_Node0 -- No --> E_CheckDispositionCodeTableforCounterpartInfo
File: GCX016.cbl
GIVEN:
A new disposition code is received for processing
WHEN:
The system checks the disposition code table for counterpart information
THEN:
The system identifies if the disposition code has a counterpart code defined
β Consolidated Acceptance Criteria
- The system searches through all entries in the cargo status array → the system identifies all occurrences of the counterpart disposition code in the array
- The system searches the status array for counterpart codes → the system identifies all matching counterpart codes that exist in the current status
- The system searches for counterpart codes in the status array → all matching counterpart codes should be identified and flagged for removal
- The system searches through all status entries in the array → the system identifies all counterpart codes that match the removal criteria for the current disposition code
- The system searches for counterpart codes in the status array using the disposition code's counterpart definition → the system identifies all matching counterpart codes that need to be removed
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SearchStatusArrayforCounterpartCodes(["Start Step"])
E_SearchStatusArrayforCounterpartCodes(["End Step"])
N_SearchStatusArrayforCounterpartCodes_Node0{"The system searches through all
entries in the cargo status array"}:::decision N_SearchStatusArrayforCounterpartCodes_Node0_action["The system identifies all
occurrences of the counterpart
disposition code in the array"]:::main N_SearchStatusArrayforCounterpartCodes_Node0 -- Yes --> N_SearchStatusArrayforCounterpartCodes_Node0_action N_SearchStatusArrayforCounterpartCodes_Node0_action --> E_SearchStatusArrayforCounterpartCodes S_SearchStatusArrayforCounterpartCodes --> N_SearchStatusArrayforCounterpartCodes_Node0 N_SearchStatusArrayforCounterpartCodes_Node1{"The system searches the status
array for counterpart codes"}:::decision N_SearchStatusArrayforCounterpartCodes_Node1_action["The system identifies all matching
counterpart codes that exist in the
current status"]:::main N_SearchStatusArrayforCounterpartCodes_Node1 -- Yes --> N_SearchStatusArrayforCounterpartCodes_Node1_action N_SearchStatusArrayforCounterpartCodes_Node1_action --> E_SearchStatusArrayforCounterpartCodes N_SearchStatusArrayforCounterpartCodes_Node0 -- No --> N_SearchStatusArrayforCounterpartCodes_Node1 N_SearchStatusArrayforCounterpartCodes_Node2{"The system searches for counterpart
codes in the status array"}:::decision N_SearchStatusArrayforCounterpartCodes_Node2_action["All matching counterpart codes
should be identified and flagged for
removal"]:::main N_SearchStatusArrayforCounterpartCodes_Node2 -- Yes --> N_SearchStatusArrayforCounterpartCodes_Node2_action N_SearchStatusArrayforCounterpartCodes_Node2_action --> E_SearchStatusArrayforCounterpartCodes N_SearchStatusArrayforCounterpartCodes_Node1 -- No --> N_SearchStatusArrayforCounterpartCodes_Node2 N_SearchStatusArrayforCounterpartCodes_Node3{"The system searches through all
status entries in the array"}:::decision N_SearchStatusArrayforCounterpartCodes_Node3_action["The system identifies all
counterpart codes that match the
removal criteria for the current
disposition code"]:::main N_SearchStatusArrayforCounterpartCodes_Node3 -- Yes --> N_SearchStatusArrayforCounterpartCodes_Node3_action N_SearchStatusArrayforCounterpartCodes_Node3_action --> E_SearchStatusArrayforCounterpartCodes N_SearchStatusArrayforCounterpartCodes_Node2 -- No --> N_SearchStatusArrayforCounterpartCodes_Node3 N_SearchStatusArrayforCounterpartCodes_Node4{"The system searches for counterpart
codes in the status array using the
disposition code s counterpart
definition"}:::decision N_SearchStatusArrayforCounterpartCodes_Node4_action["The system identifies all matching
counterpart codes that need to be
removed"]:::main N_SearchStatusArrayforCounterpartCodes_Node4 -- Yes --> N_SearchStatusArrayforCounterpartCodes_Node4_action N_SearchStatusArrayforCounterpartCodes_Node4_action --> E_SearchStatusArrayforCounterpartCodes N_SearchStatusArrayforCounterpartCodes_Node3 -- No --> N_SearchStatusArrayforCounterpartCodes_Node4 N_SearchStatusArrayforCounterpartCodes_Node4 -- No --> E_SearchStatusArrayforCounterpartCodes
entries in the cargo status array"}:::decision N_SearchStatusArrayforCounterpartCodes_Node0_action["The system identifies all
occurrences of the counterpart
disposition code in the array"]:::main N_SearchStatusArrayforCounterpartCodes_Node0 -- Yes --> N_SearchStatusArrayforCounterpartCodes_Node0_action N_SearchStatusArrayforCounterpartCodes_Node0_action --> E_SearchStatusArrayforCounterpartCodes S_SearchStatusArrayforCounterpartCodes --> N_SearchStatusArrayforCounterpartCodes_Node0 N_SearchStatusArrayforCounterpartCodes_Node1{"The system searches the status
array for counterpart codes"}:::decision N_SearchStatusArrayforCounterpartCodes_Node1_action["The system identifies all matching
counterpart codes that exist in the
current status"]:::main N_SearchStatusArrayforCounterpartCodes_Node1 -- Yes --> N_SearchStatusArrayforCounterpartCodes_Node1_action N_SearchStatusArrayforCounterpartCodes_Node1_action --> E_SearchStatusArrayforCounterpartCodes N_SearchStatusArrayforCounterpartCodes_Node0 -- No --> N_SearchStatusArrayforCounterpartCodes_Node1 N_SearchStatusArrayforCounterpartCodes_Node2{"The system searches for counterpart
codes in the status array"}:::decision N_SearchStatusArrayforCounterpartCodes_Node2_action["All matching counterpart codes
should be identified and flagged for
removal"]:::main N_SearchStatusArrayforCounterpartCodes_Node2 -- Yes --> N_SearchStatusArrayforCounterpartCodes_Node2_action N_SearchStatusArrayforCounterpartCodes_Node2_action --> E_SearchStatusArrayforCounterpartCodes N_SearchStatusArrayforCounterpartCodes_Node1 -- No --> N_SearchStatusArrayforCounterpartCodes_Node2 N_SearchStatusArrayforCounterpartCodes_Node3{"The system searches through all
status entries in the array"}:::decision N_SearchStatusArrayforCounterpartCodes_Node3_action["The system identifies all
counterpart codes that match the
removal criteria for the current
disposition code"]:::main N_SearchStatusArrayforCounterpartCodes_Node3 -- Yes --> N_SearchStatusArrayforCounterpartCodes_Node3_action N_SearchStatusArrayforCounterpartCodes_Node3_action --> E_SearchStatusArrayforCounterpartCodes N_SearchStatusArrayforCounterpartCodes_Node2 -- No --> N_SearchStatusArrayforCounterpartCodes_Node3 N_SearchStatusArrayforCounterpartCodes_Node4{"The system searches for counterpart
codes in the status array using the
disposition code s counterpart
definition"}:::decision N_SearchStatusArrayforCounterpartCodes_Node4_action["The system identifies all matching
counterpart codes that need to be
removed"]:::main N_SearchStatusArrayforCounterpartCodes_Node4 -- Yes --> N_SearchStatusArrayforCounterpartCodes_Node4_action N_SearchStatusArrayforCounterpartCodes_Node4_action --> E_SearchStatusArrayforCounterpartCodes N_SearchStatusArrayforCounterpartCodes_Node3 -- No --> N_SearchStatusArrayforCounterpartCodes_Node4 N_SearchStatusArrayforCounterpartCodes_Node4 -- No --> E_SearchStatusArrayforCounterpartCodes
File: GCX016.cbl
GIVEN:
A counterpart code exists for the current disposition code
WHEN:
The system searches through all entries in the cargo status array
THEN:
The system identifies all occurrences of the counterpart disposition code in the array
File: GCX016.cbl
GIVEN:
A release code with removal type has been identified
WHEN:
The system searches the status array for counterpart codes
THEN:
The system identifies all matching counterpart codes that exist in the current status
File: GCX016.cbl
GIVEN:
An information code with removal processing is being executed AND a status array exists for the cargo
WHEN:
The system searches for counterpart codes in the status array
THEN:
- All matching counterpart codes should be identified
- Flagged for removal
File: GCX016.cbl
GIVEN:
A disposition code requires counterpart removal and the cargo has an existing status array
WHEN:
The system searches through all status entries in the array
THEN:
The system identifies all counterpart codes that match the removal criteria for the current disposition code
File: GCX016.cbl
GIVEN:
An information code with removal flag is being processed AND a status array exists for the cargo
WHEN:
The system searches for counterpart codes in the status array using the disposition code's counterpart definition
THEN:
The system identifies all matching counterpart codes that need to be removed
β Consolidated Acceptance Criteria
- If the search results → the system either proceeds to validate matching criteria or continues without counterpart removal
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CounterpartFoundinArray(["Start Step"])
E_CounterpartFoundinArray(["End Step"])
N_CounterpartFoundinArray_Node0{"The system evaluates the search
results"}:::decision N_CounterpartFoundinArray_Node0_action["The system either proceeds to
validate matching criteria or
continues without counterpart
removal"]:::main N_CounterpartFoundinArray_Node0 -- Yes --> N_CounterpartFoundinArray_Node0_action N_CounterpartFoundinArray_Node0_action --> E_CounterpartFoundinArray S_CounterpartFoundinArray --> N_CounterpartFoundinArray_Node0 N_CounterpartFoundinArray_Node0 -- No --> E_CounterpartFoundinArray
results"}:::decision N_CounterpartFoundinArray_Node0_action["The system either proceeds to
validate matching criteria or
continues without counterpart
removal"]:::main N_CounterpartFoundinArray_Node0 -- Yes --> N_CounterpartFoundinArray_Node0_action N_CounterpartFoundinArray_Node0_action --> E_CounterpartFoundinArray S_CounterpartFoundinArray --> N_CounterpartFoundinArray_Node0 N_CounterpartFoundinArray_Node0 -- No --> E_CounterpartFoundinArray
File: GCX016.cbl
GIVEN:
The status array has been searched for counterpart codes
WHEN:
The system evaluates the search results
THEN:
The system either proceeds to validate matching criteria or continues without counterpart removal
β Consolidated Acceptance Criteria
- If special code patterns or business rules for the counterpart code → the system either removes the counterpart code or determines no removal is needed
- If special code patterns and business-specific matching rules → the match is confirmed if special pattern criteria are satisfied, otherwise the element is not removed
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SpecialCodePatternMatch(["Start Step"])
E_SpecialCodePatternMatch(["End Step"])
N_SpecialCodePatternMatch_Node0{"The system evaluates special code
patterns or business rules for the
counterpart code"}:::decision N_SpecialCodePatternMatch_Node0_action["The system either removes the
counterpart code or determines no
removal is needed"]:::main N_SpecialCodePatternMatch_Node0 -- Yes --> N_SpecialCodePatternMatch_Node0_action N_SpecialCodePatternMatch_Node0_action --> E_SpecialCodePatternMatch S_SpecialCodePatternMatch --> N_SpecialCodePatternMatch_Node0 N_SpecialCodePatternMatch_Node1{"The system evaluates special code
patterns and business-specific
matching rules"}:::decision N_SpecialCodePatternMatch_Node1_action["The match is confirmed if special
pattern criteria are satisfied,
otherwise the element is not removed"]:::main N_SpecialCodePatternMatch_Node1 -- Yes --> N_SpecialCodePatternMatch_Node1_action N_SpecialCodePatternMatch_Node1_action --> E_SpecialCodePatternMatch N_SpecialCodePatternMatch_Node0 -- No --> N_SpecialCodePatternMatch_Node1 N_SpecialCodePatternMatch_Node1 -- No --> E_SpecialCodePatternMatch
patterns or business rules for the
counterpart code"}:::decision N_SpecialCodePatternMatch_Node0_action["The system either removes the
counterpart code or determines no
removal is needed"]:::main N_SpecialCodePatternMatch_Node0 -- Yes --> N_SpecialCodePatternMatch_Node0_action N_SpecialCodePatternMatch_Node0_action --> E_SpecialCodePatternMatch S_SpecialCodePatternMatch --> N_SpecialCodePatternMatch_Node0 N_SpecialCodePatternMatch_Node1{"The system evaluates special code
patterns and business-specific
matching rules"}:::decision N_SpecialCodePatternMatch_Node1_action["The match is confirmed if special
pattern criteria are satisfied,
otherwise the element is not removed"]:::main N_SpecialCodePatternMatch_Node1 -- Yes --> N_SpecialCodePatternMatch_Node1_action N_SpecialCodePatternMatch_Node1_action --> E_SpecialCodePatternMatch N_SpecialCodePatternMatch_Node0 -- No --> N_SpecialCodePatternMatch_Node1 N_SpecialCodePatternMatch_Node1 -- No --> E_SpecialCodePatternMatch
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
The quantities do not match for counterpart removal
WHEN:
The system evaluates special code patterns or business rules for the counterpart code
THEN:
The system either removes the counterpart code or determines no removal is needed
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
Standard matching criteria (status info, entry number, quantity) do not match for a counterpart code candidate
WHEN:
- The system evaluates special code patterns
- Business-specific matching rules
THEN:
The match is confirmed if special pattern criteria are satisfied, otherwise the element is not removed
β Consolidated Acceptance Criteria
- The system initiates status information code processing → the system should begin evaluating the disposition code type and prepare for status array updates
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_StatusInformationCodeProcessingStart(["Start Step"])
E_StatusInformationCodeProcessingStart(["End Step"])
N_StatusInformationCodeProcessingStart_Node0{"The system initiates status
information code processing"}:::decision N_StatusInformationCodeProcessingStart_Node0_action["The system should begin evaluating
the disposition code type and
prepare for status array updates"]:::main N_StatusInformationCodeProcessingStart_Node0 -- Yes --> N_StatusInformationCodeProcessingStart_Node0_action N_StatusInformationCodeProcessingStart_Node0_action --> E_StatusInformationCodeProcessingStart S_StatusInformationCodeProcessingStart --> N_StatusInformationCodeProcessingStart_Node0 N_StatusInformationCodeProcessingStart_Node0 -- No --> E_StatusInformationCodeProcessingStart
information code processing"}:::decision N_StatusInformationCodeProcessingStart_Node0_action["The system should begin evaluating
the disposition code type and
prepare for status array updates"]:::main N_StatusInformationCodeProcessingStart_Node0 -- Yes --> N_StatusInformationCodeProcessingStart_Node0_action N_StatusInformationCodeProcessingStart_Node0_action --> E_StatusInformationCodeProcessingStart S_StatusInformationCodeProcessingStart --> N_StatusInformationCodeProcessingStart_Node0 N_StatusInformationCodeProcessingStart_Node0 -- No --> E_StatusInformationCodeProcessingStart
File: GCX016.cbl
GIVEN:
A disposition code is being processed for cargo status update
WHEN:
The system initiates status information code processing
THEN:
- The system should begin evaluating the disposition code type
- Prepare for status array updates
β Consolidated Acceptance Criteria
- The system retrieves information from the GCSTBRT DC table → the system should obtain the disposition code details including status information flags and processing instructions
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RetrieveDCTableInformation(["Start Step"])
E_RetrieveDCTableInformation(["End Step"])
N_RetrieveDCTableInformation_Node0{"The system retrieves information
from the GCSTBRT DC table"}:::decision N_RetrieveDCTableInformation_Node0_action["The system should obtain the
disposition code details including
status information flags and
processing instructions"]:::main N_RetrieveDCTableInformation_Node0 -- Yes --> N_RetrieveDCTableInformation_Node0_action N_RetrieveDCTableInformation_Node0_action --> E_RetrieveDCTableInformation S_RetrieveDCTableInformation --> N_RetrieveDCTableInformation_Node0 N_RetrieveDCTableInformation_Node0 -- No --> E_RetrieveDCTableInformation
from the GCSTBRT DC table"}:::decision N_RetrieveDCTableInformation_Node0_action["The system should obtain the
disposition code details including
status information flags and
processing instructions"]:::main N_RetrieveDCTableInformation_Node0 -- Yes --> N_RetrieveDCTableInformation_Node0_action N_RetrieveDCTableInformation_Node0_action --> E_RetrieveDCTableInformation S_RetrieveDCTableInformation --> N_RetrieveDCTableInformation_Node0 N_RetrieveDCTableInformation_Node0 -- No --> E_RetrieveDCTableInformation
File: GCX016.cbl
GIVEN:
A disposition code needs to be processed
WHEN:
The system retrieves information from the GCSTBRT DC table
THEN:
- The system should obtain the disposition code details including status information flags
- Processing instructions
β Consolidated Acceptance Criteria
- If whether the code is a status information type → the system should identify status information codes and route them for appropriate processing while skipping non-status codes
- The system checks if the code meets status information criteria → the system either proceeds with status information processing or routes to alternative processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IsStatusInfoCode(["Start Step"])
E_IsStatusInfoCode(["End Step"])
N_IsStatusInfoCode_Node0{"The system evaluates whether the
code is a status information type"}:::decision N_IsStatusInfoCode_Node0_action["The system should identify status
information codes and route them for
appropriate processing while
skipping non-status codes"]:::main N_IsStatusInfoCode_Node0 -- Yes --> N_IsStatusInfoCode_Node0_action N_IsStatusInfoCode_Node0_action --> E_IsStatusInfoCode S_IsStatusInfoCode --> N_IsStatusInfoCode_Node0 N_IsStatusInfoCode_Node1{"The system checks if the code meets
status information criteria"}:::decision N_IsStatusInfoCode_Node1_action["The system either proceeds with
status information processing or
routes to alternative processing"]:::main N_IsStatusInfoCode_Node1 -- Yes --> N_IsStatusInfoCode_Node1_action N_IsStatusInfoCode_Node1_action --> E_IsStatusInfoCode N_IsStatusInfoCode_Node0 -- No --> N_IsStatusInfoCode_Node1 N_IsStatusInfoCode_Node1 -- No --> E_IsStatusInfoCode
code is a status information type"}:::decision N_IsStatusInfoCode_Node0_action["The system should identify status
information codes and route them for
appropriate processing while
skipping non-status codes"]:::main N_IsStatusInfoCode_Node0 -- Yes --> N_IsStatusInfoCode_Node0_action N_IsStatusInfoCode_Node0_action --> E_IsStatusInfoCode S_IsStatusInfoCode --> N_IsStatusInfoCode_Node0 N_IsStatusInfoCode_Node1{"The system checks if the code meets
status information criteria"}:::decision N_IsStatusInfoCode_Node1_action["The system either proceeds with
status information processing or
routes to alternative processing"]:::main N_IsStatusInfoCode_Node1 -- Yes --> N_IsStatusInfoCode_Node1_action N_IsStatusInfoCode_Node1_action --> E_IsStatusInfoCode N_IsStatusInfoCode_Node0 -- No --> N_IsStatusInfoCode_Node1 N_IsStatusInfoCode_Node1 -- No --> E_IsStatusInfoCode
File: GCX016.cbl
GIVEN:
Disposition code details have been retrieved from the DC table
WHEN:
The system evaluates whether the code is a status information type
THEN:
- The system should identify status information codes
- Route them for appropriate processing while skipping non-status codes
File: GCX016.cbl
GIVEN:
A disposition code has been identified as potentially status information type
WHEN:
The system checks if the code meets status information criteria
THEN:
The system either proceeds with status information processing or routes to alternative processing
β Consolidated Acceptance Criteria
- The system checks if counterpart codes exist in the status array that should be removed → the system should identify any counterpart codes that conflict with the new status information and remove them first
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_HasCounterpartRemoval(["Start Step"])
E_HasCounterpartRemoval(["End Step"])
N_HasCounterpartRemoval_Node0{"The system checks if counterpart
codes exist in the status array that
should be removed"}:::decision N_HasCounterpartRemoval_Node0_action["The system should identify any
counterpart codes that conflict with
the new status information and
remove them first"]:::main N_HasCounterpartRemoval_Node0 -- Yes --> N_HasCounterpartRemoval_Node0_action N_HasCounterpartRemoval_Node0_action --> E_HasCounterpartRemoval S_HasCounterpartRemoval --> N_HasCounterpartRemoval_Node0 N_HasCounterpartRemoval_Node0 -- No --> E_HasCounterpartRemoval
codes exist in the status array that
should be removed"}:::decision N_HasCounterpartRemoval_Node0_action["The system should identify any
counterpart codes that conflict with
the new status information and
remove them first"]:::main N_HasCounterpartRemoval_Node0 -- Yes --> N_HasCounterpartRemoval_Node0_action N_HasCounterpartRemoval_Node0_action --> E_HasCounterpartRemoval S_HasCounterpartRemoval --> N_HasCounterpartRemoval_Node0 N_HasCounterpartRemoval_Node0 -- No --> E_HasCounterpartRemoval
File: GCX016.cbl
GIVEN:
A status information code is being processed
WHEN:
The system checks if counterpart codes exist in the status array that should be removed
THEN:
- The system should identify any counterpart codes that conflict with the new status information
- Remove them first
β Consolidated Acceptance Criteria
- The system removes counterpart codes from the S09A status array → the system should successfully remove all conflicting counterpart codes and prepare the array for the new status information
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RemoveCounterpartCodesFirst(["Start Step"])
E_RemoveCounterpartCodesFirst(["End Step"])
N_RemoveCounterpartCodesFirst_Node0{"The system removes counterpart
codes from the S09A status array"}:::decision N_RemoveCounterpartCodesFirst_Node0_action["The system should successfully
remove all conflicting counterpart
codes and prepare the array for the
new status information"]:::main N_RemoveCounterpartCodesFirst_Node0 -- Yes --> N_RemoveCounterpartCodesFirst_Node0_action N_RemoveCounterpartCodesFirst_Node0_action --> E_RemoveCounterpartCodesFirst S_RemoveCounterpartCodesFirst --> N_RemoveCounterpartCodesFirst_Node0 N_RemoveCounterpartCodesFirst_Node0 -- No --> E_RemoveCounterpartCodesFirst
codes from the S09A status array"}:::decision N_RemoveCounterpartCodesFirst_Node0_action["The system should successfully
remove all conflicting counterpart
codes and prepare the array for the
new status information"]:::main N_RemoveCounterpartCodesFirst_Node0 -- Yes --> N_RemoveCounterpartCodesFirst_Node0_action N_RemoveCounterpartCodesFirst_Node0_action --> E_RemoveCounterpartCodesFirst S_RemoveCounterpartCodesFirst --> N_RemoveCounterpartCodesFirst_Node0 N_RemoveCounterpartCodesFirst_Node0 -- No --> E_RemoveCounterpartCodesFirst
File: GCX016.cbl
GIVEN:
Counterpart codes exist in the status array that conflict with the new status information code
WHEN:
The system removes counterpart codes from the S09A status array
THEN:
- The system should successfully remove all conflicting counterpart codes
- Prepare the array for the new status information
β Consolidated Acceptance Criteria
- A duplicate status information code is found → the system should skip processing to avoid duplicate entries and continue to the next code
- The duplicate check result indicates whether the status information already exists → the system either skips processing to prevent duplication or proceeds with adding the new status information
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AlreadyExists(["Start Step"])
E_AlreadyExists(["End Step"])
N_AlreadyExists_Node0{"A duplicate status information code
is found"}:::decision N_AlreadyExists_Node0_action["The system should skip processing
to avoid duplicate entries and
continue to the next code"]:::main N_AlreadyExists_Node0 -- Yes --> N_AlreadyExists_Node0_action N_AlreadyExists_Node0_action --> E_AlreadyExists S_AlreadyExists --> N_AlreadyExists_Node0 N_AlreadyExists_Node1{"The duplicate check result
indicates whether the status
information already exists"}:::decision N_AlreadyExists_Node1_action["The system either skips processing
to prevent duplication or proceeds
with adding the new status
information"]:::main N_AlreadyExists_Node1 -- Yes --> N_AlreadyExists_Node1_action N_AlreadyExists_Node1_action --> E_AlreadyExists N_AlreadyExists_Node0 -- No --> N_AlreadyExists_Node1 N_AlreadyExists_Node1 -- No --> E_AlreadyExists
is found"}:::decision N_AlreadyExists_Node0_action["The system should skip processing
to avoid duplicate entries and
continue to the next code"]:::main N_AlreadyExists_Node0 -- Yes --> N_AlreadyExists_Node0_action N_AlreadyExists_Node0_action --> E_AlreadyExists S_AlreadyExists --> N_AlreadyExists_Node0 N_AlreadyExists_Node1{"The duplicate check result
indicates whether the status
information already exists"}:::decision N_AlreadyExists_Node1_action["The system either skips processing
to prevent duplication or proceeds
with adding the new status
information"]:::main N_AlreadyExists_Node1 -- Yes --> N_AlreadyExists_Node1_action N_AlreadyExists_Node1_action --> E_AlreadyExists N_AlreadyExists_Node0 -- No --> N_AlreadyExists_Node1 N_AlreadyExists_Node1 -- No --> E_AlreadyExists
File: GCX016.cbl
GIVEN:
The system has checked for duplicate status codes in the array
WHEN:
A duplicate status information code is found
THEN:
- The system should skip processing to avoid duplicate entries
- Continue to the next code
File: GCX016.cbl
GIVEN:
The system has checked for duplicate status information in the S09A array
WHEN:
The duplicate check result indicates whether the status information already exists
THEN:
The system either skips processing to prevent duplication or proceeds with adding the new status information
β Consolidated Acceptance Criteria
- The system determines that duplicate processing should be skipped → the system should bypass the addition process and continue to the next disposition code processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SkipProcessingNoDuplicateEntry(["Start Step"])
E_SkipProcessingNoDuplicateEntry(["End Step"])
N_SkipProcessingNoDuplicateEntry_Node0{"The system determines that
duplicate processing should be
skipped"}:::decision N_SkipProcessingNoDuplicateEntry_Node0_action["The system should bypass the
addition process and continue to the
next disposition code processing"]:::main N_SkipProcessingNoDuplicateEntry_Node0 -- Yes --> N_SkipProcessingNoDuplicateEntry_Node0_action N_SkipProcessingNoDuplicateEntry_Node0_action --> E_SkipProcessingNoDuplicateEntry S_SkipProcessingNoDuplicateEntry --> N_SkipProcessingNoDuplicateEntry_Node0 N_SkipProcessingNoDuplicateEntry_Node0 -- No --> E_SkipProcessingNoDuplicateEntry
duplicate processing should be
skipped"}:::decision N_SkipProcessingNoDuplicateEntry_Node0_action["The system should bypass the
addition process and continue to the
next disposition code processing"]:::main N_SkipProcessingNoDuplicateEntry_Node0 -- Yes --> N_SkipProcessingNoDuplicateEntry_Node0_action N_SkipProcessingNoDuplicateEntry_Node0_action --> E_SkipProcessingNoDuplicateEntry S_SkipProcessingNoDuplicateEntry --> N_SkipProcessingNoDuplicateEntry_Node0 N_SkipProcessingNoDuplicateEntry_Node0 -- No --> E_SkipProcessingNoDuplicateEntry
File: GCX016.cbl
GIVEN:
A status information code already exists in the cargo status array
WHEN:
The system determines that duplicate processing should be skipped
THEN:
- The system should bypass the addition process
- Continue to the next disposition code processing
β Consolidated Acceptance Criteria
- The system adds the new status information code to the S09A array → the system should successfully insert the status code with appropriate sequence and occurrence numbers
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AddStatusInfoCodetoArray(["Start Step"])
E_AddStatusInfoCodetoArray(["End Step"])
N_AddStatusInfoCodetoArray_Node0{"The system adds the new status
information code to the S09A array"}:::decision N_AddStatusInfoCodetoArray_Node0_action["The system should successfully
insert the status code with
appropriate sequence and occurrence
numbers"]:::main N_AddStatusInfoCodetoArray_Node0 -- Yes --> N_AddStatusInfoCodetoArray_Node0_action N_AddStatusInfoCodetoArray_Node0_action --> E_AddStatusInfoCodetoArray S_AddStatusInfoCodetoArray --> N_AddStatusInfoCodetoArray_Node0 N_AddStatusInfoCodetoArray_Node0 -- No --> E_AddStatusInfoCodetoArray
information code to the S09A array"}:::decision N_AddStatusInfoCodetoArray_Node0_action["The system should successfully
insert the status code with
appropriate sequence and occurrence
numbers"]:::main N_AddStatusInfoCodetoArray_Node0 -- Yes --> N_AddStatusInfoCodetoArray_Node0_action N_AddStatusInfoCodetoArray_Node0_action --> E_AddStatusInfoCodetoArray S_AddStatusInfoCodetoArray --> N_AddStatusInfoCodetoArray_Node0 N_AddStatusInfoCodetoArray_Node0 -- No --> E_AddStatusInfoCodetoArray
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
A status information code does not exist in the cargo status array
WHEN:
The system adds the new status information code to the S09A array
THEN:
- The system should successfully insert the status code with appropriate sequence
- Occurrence numbers
β Consolidated Acceptance Criteria
- The system sets the status information flag → the system should mark the cargo record as having received status information updates
- The code is inserted into the array → the system should set the status information flag to indicate this is informational only and not an actionable status
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetStatusInformationFlag(["Start Step"])
E_SetStatusInformationFlag(["End Step"])
N_SetStatusInformationFlag_Node0{"The system sets the status
information flag"}:::decision N_SetStatusInformationFlag_Node0_action["The system should mark the cargo
record as having received status
information updates"]:::main N_SetStatusInformationFlag_Node0 -- Yes --> N_SetStatusInformationFlag_Node0_action N_SetStatusInformationFlag_Node0_action --> E_SetStatusInformationFlag S_SetStatusInformationFlag --> N_SetStatusInformationFlag_Node0 N_SetStatusInformationFlag_Node1{"The code is inserted into the array"}:::decision N_SetStatusInformationFlag_Node1_action["The system should set the status
information flag to indicate this is
informational only and not an
actionable status"]:::main N_SetStatusInformationFlag_Node1 -- Yes --> N_SetStatusInformationFlag_Node1_action N_SetStatusInformationFlag_Node1_action --> E_SetStatusInformationFlag N_SetStatusInformationFlag_Node0 -- No --> N_SetStatusInformationFlag_Node1 N_SetStatusInformationFlag_Node1 -- No --> E_SetStatusInformationFlag
information flag"}:::decision N_SetStatusInformationFlag_Node0_action["The system should mark the cargo
record as having received status
information updates"]:::main N_SetStatusInformationFlag_Node0 -- Yes --> N_SetStatusInformationFlag_Node0_action N_SetStatusInformationFlag_Node0_action --> E_SetStatusInformationFlag S_SetStatusInformationFlag --> N_SetStatusInformationFlag_Node0 N_SetStatusInformationFlag_Node1{"The code is inserted into the array"}:::decision N_SetStatusInformationFlag_Node1_action["The system should set the status
information flag to indicate this is
informational only and not an
actionable status"]:::main N_SetStatusInformationFlag_Node1 -- Yes --> N_SetStatusInformationFlag_Node1_action N_SetStatusInformationFlag_Node1_action --> E_SetStatusInformationFlag N_SetStatusInformationFlag_Node0 -- No --> N_SetStatusInformationFlag_Node1 N_SetStatusInformationFlag_Node1 -- No --> E_SetStatusInformationFlag
File: GCX016.cbl
GIVEN:
A status information code has been added to the status array
WHEN:
The system sets the status information flag
THEN:
The system should mark the cargo record as having received status information updates
File: GCX016.cbl
GIVEN:
An informational disposition code is being added to the status array
WHEN:
The code is inserted into the array
THEN:
- The system should set the status information flag to indicate this is informational only
- Not an actionable status
β Consolidated Acceptance Criteria
- The system processes the status update → the system should maintain all original cargo quantities unchanged as status information codes are informational only
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_PreserveOriginalCargoQuantities(["Start Step"])
E_PreserveOriginalCargoQuantities(["End Step"])
N_PreserveOriginalCargoQuantities_Node0{"The system processes the status
update"}:::decision N_PreserveOriginalCargoQuantities_Node0_action["The system should maintain all
original cargo quantities unchanged
as status information codes are
informational only"]:::main N_PreserveOriginalCargoQuantities_Node0 -- Yes --> N_PreserveOriginalCargoQuantities_Node0_action N_PreserveOriginalCargoQuantities_Node0_action --> E_PreserveOriginalCargoQuantities S_PreserveOriginalCargoQuantities --> N_PreserveOriginalCargoQuantities_Node0 N_PreserveOriginalCargoQuantities_Node0 -- No --> E_PreserveOriginalCargoQuantities
update"}:::decision N_PreserveOriginalCargoQuantities_Node0_action["The system should maintain all
original cargo quantities unchanged
as status information codes are
informational only"]:::main N_PreserveOriginalCargoQuantities_Node0 -- Yes --> N_PreserveOriginalCargoQuantities_Node0_action N_PreserveOriginalCargoQuantities_Node0_action --> E_PreserveOriginalCargoQuantities S_PreserveOriginalCargoQuantities --> N_PreserveOriginalCargoQuantities_Node0 N_PreserveOriginalCargoQuantities_Node0 -- No --> E_PreserveOriginalCargoQuantities
File: GCX016.cbl
GIVEN:
A status information code is being processed
WHEN:
The system processes the status update
THEN:
The system should maintain all original cargo quantities unchanged as status information codes are informational only
β Consolidated Acceptance Criteria
- The system updates the S09A status array element → the system should populate the array element with the disposition code, sequence number, and occurrence details
- The status array element is ready for update → the element must be updated with new flag values and disposition code information
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UpdateStatusArrayElement(["Start Step"])
E_UpdateStatusArrayElement(["End Step"])
N_UpdateStatusArrayElement_Node0{"The system updates the S09A status
array element"}:::decision N_UpdateStatusArrayElement_Node0_action["The system should populate the
array element with the disposition
code, sequence number, and
occurrence details"]:::main N_UpdateStatusArrayElement_Node0 -- Yes --> N_UpdateStatusArrayElement_Node0_action N_UpdateStatusArrayElement_Node0_action --> E_UpdateStatusArrayElement S_UpdateStatusArrayElement --> N_UpdateStatusArrayElement_Node0 N_UpdateStatusArrayElement_Node1{"The status array element is ready
for update"}:::decision N_UpdateStatusArrayElement_Node1_action["The element must be updated with
new flag values and disposition code
information"]:::main N_UpdateStatusArrayElement_Node1 -- Yes --> N_UpdateStatusArrayElement_Node1_action N_UpdateStatusArrayElement_Node1_action --> E_UpdateStatusArrayElement N_UpdateStatusArrayElement_Node0 -- No --> N_UpdateStatusArrayElement_Node1 N_UpdateStatusArrayElement_Node1 -- No --> E_UpdateStatusArrayElement
array element"}:::decision N_UpdateStatusArrayElement_Node0_action["The system should populate the
array element with the disposition
code, sequence number, and
occurrence details"]:::main N_UpdateStatusArrayElement_Node0 -- Yes --> N_UpdateStatusArrayElement_Node0_action N_UpdateStatusArrayElement_Node0_action --> E_UpdateStatusArrayElement S_UpdateStatusArrayElement --> N_UpdateStatusArrayElement_Node0 N_UpdateStatusArrayElement_Node1{"The status array element is ready
for update"}:::decision N_UpdateStatusArrayElement_Node1_action["The element must be updated with
new flag values and disposition code
information"]:::main N_UpdateStatusArrayElement_Node1 -- Yes --> N_UpdateStatusArrayElement_Node1_action N_UpdateStatusArrayElement_Node1_action --> E_UpdateStatusArrayElement N_UpdateStatusArrayElement_Node0 -- No --> N_UpdateStatusArrayElement_Node1 N_UpdateStatusArrayElement_Node1 -- No --> E_UpdateStatusArrayElement
File: GCX016.cbl
GIVEN:
A status information code needs to be recorded in the status array
WHEN:
The system updates the S09A status array element
THEN:
The system should populate the array element with the disposition code, sequence number, and occurrence details
File: GCX016.cbl
GIVEN:
Flag validation has passed for a status array element
WHEN:
The status array element is ready for update
THEN:
- The element must be updated with new flag values
- Disposition code information
β Consolidated Acceptance Criteria
- The system logs the status information update → the system should record the status change with timestamp and disposition code details for audit purposes
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogStatusInformationUpdate(["Start Step"])
E_LogStatusInformationUpdate(["End Step"])
N_LogStatusInformationUpdate_Node0{"The system logs the status
information update"}:::decision N_LogStatusInformationUpdate_Node0_action["The system should record the status
change with timestamp and
disposition code details for audit
purposes"]:::main N_LogStatusInformationUpdate_Node0 -- Yes --> N_LogStatusInformationUpdate_Node0_action N_LogStatusInformationUpdate_Node0_action --> E_LogStatusInformationUpdate S_LogStatusInformationUpdate --> N_LogStatusInformationUpdate_Node0 N_LogStatusInformationUpdate_Node0 -- No --> E_LogStatusInformationUpdate
information update"}:::decision N_LogStatusInformationUpdate_Node0_action["The system should record the status
change with timestamp and
disposition code details for audit
purposes"]:::main N_LogStatusInformationUpdate_Node0 -- Yes --> N_LogStatusInformationUpdate_Node0_action N_LogStatusInformationUpdate_Node0_action --> E_LogStatusInformationUpdate S_LogStatusInformationUpdate --> N_LogStatusInformationUpdate_Node0 N_LogStatusInformationUpdate_Node0 -- No --> E_LogStatusInformationUpdate
File: GCX016.cbl
GIVEN:
A status information code has been successfully added to the cargo status array
WHEN:
The system logs the status information update
THEN:
- The system should record the status change with timestamp
- Disposition code details for audit purposes
β Consolidated Acceptance Criteria
- The system continues to the next disposition code in the sequence → the system should move to the next code processing step and maintain the processing flow
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ContinuetoNextCodeProcessing(["Start Step"])
E_ContinuetoNextCodeProcessing(["End Step"])
N_ContinuetoNextCodeProcessing_Node0{"The system continues to the next
disposition code in the sequence"}:::decision N_ContinuetoNextCodeProcessing_Node0_action["The system should move to the next
code processing step and maintain
the processing flow"]:::main N_ContinuetoNextCodeProcessing_Node0 -- Yes --> N_ContinuetoNextCodeProcessing_Node0_action N_ContinuetoNextCodeProcessing_Node0_action --> E_ContinuetoNextCodeProcessing S_ContinuetoNextCodeProcessing --> N_ContinuetoNextCodeProcessing_Node0 N_ContinuetoNextCodeProcessing_Node0 -- No --> E_ContinuetoNextCodeProcessing
disposition code in the sequence"}:::decision N_ContinuetoNextCodeProcessing_Node0_action["The system should move to the next
code processing step and maintain
the processing flow"]:::main N_ContinuetoNextCodeProcessing_Node0 -- Yes --> N_ContinuetoNextCodeProcessing_Node0_action N_ContinuetoNextCodeProcessing_Node0_action --> E_ContinuetoNextCodeProcessing S_ContinuetoNextCodeProcessing --> N_ContinuetoNextCodeProcessing_Node0 N_ContinuetoNextCodeProcessing_Node0 -- No --> E_ContinuetoNextCodeProcessing
File: GCX016.cbl
GIVEN:
Status information code processing has been completed
WHEN:
The system continues to the next disposition code in the sequence
THEN:
- The system should move to the next code processing step
- Maintain the processing flow
β Consolidated Acceptance Criteria
- The system searches the status array for an existing entry that matches the new disposition code AND entry number AND quantity → iF an exact match is found THEN skip processing the duplicate code AND log the duplicate prevention action ELSE add the new disposition code to the array AND update the array element count
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SearchArrayforExistingCode(["Start Step"])
E_SearchArrayforExistingCode(["End Step"])
N_SearchArrayforExistingCode_Node0{"The system searches the status
array for an existing entry that
matches the new disposition code AND
entry number AND quantity"}:::decision N_SearchArrayforExistingCode_Node0_action["IF an exact match is found THEN
skip processing the duplicate code
AND log the duplicate prevention
action ELSE add the new disposition
code to the array AND update the
array element count"]:::main N_SearchArrayforExistingCode_Node0 -- Yes --> N_SearchArrayforExistingCode_Node0_action N_SearchArrayforExistingCode_Node0_action --> E_SearchArrayforExistingCode S_SearchArrayforExistingCode --> N_SearchArrayforExistingCode_Node0 N_SearchArrayforExistingCode_Node0 -- No --> E_SearchArrayforExistingCode
array for an existing entry that
matches the new disposition code AND
entry number AND quantity"}:::decision N_SearchArrayforExistingCode_Node0_action["IF an exact match is found THEN
skip processing the duplicate code
AND log the duplicate prevention
action ELSE add the new disposition
code to the array AND update the
array element count"]:::main N_SearchArrayforExistingCode_Node0 -- Yes --> N_SearchArrayforExistingCode_Node0_action N_SearchArrayforExistingCode_Node0_action --> E_SearchArrayforExistingCode S_SearchArrayforExistingCode --> N_SearchArrayforExistingCode_Node0 N_SearchArrayforExistingCode_Node0 -- No --> E_SearchArrayforExistingCode
File: GCX016.cbl
GIVEN:
A new disposition code needs to be added to the S09A status array AND the array contains existing disposition code entries
WHEN:
- The system searches the status array for an existing entry that matches the new disposition code
- Entry number
- Quantity
THEN:
- If an exact match is found then skip processing the duplicate code
- Log the duplicate prevention action else add the new disposition code to the array
- Update the array element count
β Consolidated Acceptance Criteria
- The system compares the disposition code values → iF the disposition codes match THEN proceed to check entry number match ELSE continue searching the next array element
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CheckDispositionCodeMatch(["Start Step"])
E_CheckDispositionCodeMatch(["End Step"])
N_CheckDispositionCodeMatch_Node0{"The system compares the disposition
code values"}:::decision N_CheckDispositionCodeMatch_Node0_action["IF the disposition codes match THEN
proceed to check entry number match
ELSE continue searching the next
array element"]:::main N_CheckDispositionCodeMatch_Node0 -- Yes --> N_CheckDispositionCodeMatch_Node0_action N_CheckDispositionCodeMatch_Node0_action --> E_CheckDispositionCodeMatch S_CheckDispositionCodeMatch --> N_CheckDispositionCodeMatch_Node0 N_CheckDispositionCodeMatch_Node0 -- No --> E_CheckDispositionCodeMatch
code values"}:::decision N_CheckDispositionCodeMatch_Node0_action["IF the disposition codes match THEN
proceed to check entry number match
ELSE continue searching the next
array element"]:::main N_CheckDispositionCodeMatch_Node0 -- Yes --> N_CheckDispositionCodeMatch_Node0_action N_CheckDispositionCodeMatch_Node0_action --> E_CheckDispositionCodeMatch S_CheckDispositionCodeMatch --> N_CheckDispositionCodeMatch_Node0 N_CheckDispositionCodeMatch_Node0 -- No --> E_CheckDispositionCodeMatch
File: GCX016.cbl
GIVEN:
A disposition code from the status array element AND a new disposition code to be added
WHEN:
The system compares the disposition code values
THEN:
IF the disposition codes match THEN proceed to check entry number match ELSE continue searching the next array element
β Consolidated Acceptance Criteria
- The duplicate validation process confirms all three values match an existing array entry → skip adding the disposition code to the array AND proceed to log the duplicate prevention action
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SkipProcessingDuplicateExists(["Start Step"])
E_SkipProcessingDuplicateExists(["End Step"])
N_SkipProcessingDuplicateExists_Node0{"The duplicate validation process
confirms all three values match an
existing array entry"}:::decision N_SkipProcessingDuplicateExists_Node0_action["Skip adding the disposition code to
the array AND proceed to log the
duplicate prevention action"]:::main N_SkipProcessingDuplicateExists_Node0 -- Yes --> N_SkipProcessingDuplicateExists_Node0_action N_SkipProcessingDuplicateExists_Node0_action --> E_SkipProcessingDuplicateExists S_SkipProcessingDuplicateExists --> N_SkipProcessingDuplicateExists_Node0 N_SkipProcessingDuplicateExists_Node0 -- No --> E_SkipProcessingDuplicateExists
confirms all three values match an
existing array entry"}:::decision N_SkipProcessingDuplicateExists_Node0_action["Skip adding the disposition code to
the array AND proceed to log the
duplicate prevention action"]:::main N_SkipProcessingDuplicateExists_Node0 -- Yes --> N_SkipProcessingDuplicateExists_Node0_action N_SkipProcessingDuplicateExists_Node0_action --> E_SkipProcessingDuplicateExists S_SkipProcessingDuplicateExists --> N_SkipProcessingDuplicateExists_Node0 N_SkipProcessingDuplicateExists_Node0 -- No --> E_SkipProcessingDuplicateExists
File: GCX016.cbl
GIVEN:
An exact duplicate disposition code entry is found in the status array with matching disposition code AND entry number AND quantity
WHEN:
The duplicate validation process confirms all three values match an existing array entry
THEN:
- Skip adding the disposition code to the array
- Proceed to log the duplicate prevention action
β Consolidated Acceptance Criteria
- The duplicate prevention process is completed → create a log entry documenting the duplicate prevention action for audit purposes
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogDuplicatePreventionAction(["Start Step"])
E_LogDuplicatePreventionAction(["End Step"])
N_LogDuplicatePreventionAction_Node0{"The duplicate prevention process is
completed"}:::decision N_LogDuplicatePreventionAction_Node0_action["Create a log entry documenting the
duplicate prevention action for
audit purposes"]:::main N_LogDuplicatePreventionAction_Node0 -- Yes --> N_LogDuplicatePreventionAction_Node0_action N_LogDuplicatePreventionAction_Node0_action --> E_LogDuplicatePreventionAction S_LogDuplicatePreventionAction --> N_LogDuplicatePreventionAction_Node0 N_LogDuplicatePreventionAction_Node0 -- No --> E_LogDuplicatePreventionAction
completed"}:::decision N_LogDuplicatePreventionAction_Node0_action["Create a log entry documenting the
duplicate prevention action for
audit purposes"]:::main N_LogDuplicatePreventionAction_Node0 -- Yes --> N_LogDuplicatePreventionAction_Node0_action N_LogDuplicatePreventionAction_Node0_action --> E_LogDuplicatePreventionAction S_LogDuplicatePreventionAction --> N_LogDuplicatePreventionAction_Node0 N_LogDuplicatePreventionAction_Node0 -- No --> E_LogDuplicatePreventionAction
File: GCX016.cbl
GIVEN:
A duplicate disposition code entry was detected and prevented from being added to the status array
WHEN:
The duplicate prevention process is completed
THEN:
Create a log entry documenting the duplicate prevention action for audit purposes
β Consolidated Acceptance Criteria
- The system looks up the disposition code in the DC table → the system determines if the code exists and retrieves its processing attributes
- The system looks up the disposition code in the DC table → the system retrieves disposition code details and sets found flag if code exists in table
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LookupDispositionCodeinDCTable(["Start Step"])
E_LookupDispositionCodeinDCTable(["End Step"])
N_LookupDispositionCodeinDCTable_Node0{"The system looks up the disposition
code in the DC table"}:::decision N_LookupDispositionCodeinDCTable_Node0_action["The system determines if the code
exists and retrieves its processing
attributes"]:::main N_LookupDispositionCodeinDCTable_Node0 -- Yes --> N_LookupDispositionCodeinDCTable_Node0_action N_LookupDispositionCodeinDCTable_Node0_action --> E_LookupDispositionCodeinDCTable S_LookupDispositionCodeinDCTable --> N_LookupDispositionCodeinDCTable_Node0 N_LookupDispositionCodeinDCTable_Node1{"The system looks up the disposition
code in the DC table"}:::decision N_LookupDispositionCodeinDCTable_Node1_action["The system retrieves disposition
code details and sets found flag if
code exists in table"]:::main N_LookupDispositionCodeinDCTable_Node1 -- Yes --> N_LookupDispositionCodeinDCTable_Node1_action N_LookupDispositionCodeinDCTable_Node1_action --> E_LookupDispositionCodeinDCTable N_LookupDispositionCodeinDCTable_Node0 -- No --> N_LookupDispositionCodeinDCTable_Node1 N_LookupDispositionCodeinDCTable_Node1 -- No --> E_LookupDispositionCodeinDCTable
code in the DC table"}:::decision N_LookupDispositionCodeinDCTable_Node0_action["The system determines if the code
exists and retrieves its processing
attributes"]:::main N_LookupDispositionCodeinDCTable_Node0 -- Yes --> N_LookupDispositionCodeinDCTable_Node0_action N_LookupDispositionCodeinDCTable_Node0_action --> E_LookupDispositionCodeinDCTable S_LookupDispositionCodeinDCTable --> N_LookupDispositionCodeinDCTable_Node0 N_LookupDispositionCodeinDCTable_Node1{"The system looks up the disposition
code in the DC table"}:::decision N_LookupDispositionCodeinDCTable_Node1_action["The system retrieves disposition
code details and sets found flag if
code exists in table"]:::main N_LookupDispositionCodeinDCTable_Node1 -- Yes --> N_LookupDispositionCodeinDCTable_Node1_action N_LookupDispositionCodeinDCTable_Node1_action --> E_LookupDispositionCodeinDCTable N_LookupDispositionCodeinDCTable_Node0 -- No --> N_LookupDispositionCodeinDCTable_Node1 N_LookupDispositionCodeinDCTable_Node1 -- No --> E_LookupDispositionCodeinDCTable
File: GCX016.cbl
GIVEN:
A disposition code is received for processing
WHEN:
The system looks up the disposition code in the DC table
THEN:
- The system determines if the code exists
- Retrieves its processing attributes
File: GCX016.cbl
GIVEN:
A disposition code is extracted from X4 segment
WHEN:
The system looks up the disposition code in the DC table
THEN:
- The system retrieves disposition code details
- Sets found flag if code exists in table
β Consolidated Acceptance Criteria
- If the code type and actions → the system identifies if this is a release code with removal processing type
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IsReleaseCodewithRemoval(["Start Step"])
E_IsReleaseCodewithRemoval(["End Step"])
N_IsReleaseCodewithRemoval_Node0{"The system evaluates the code type
and actions"}:::decision N_IsReleaseCodewithRemoval_Node0_action["The system identifies if this is a
release code with removal processing
type"]:::main N_IsReleaseCodewithRemoval_Node0 -- Yes --> N_IsReleaseCodewithRemoval_Node0_action N_IsReleaseCodewithRemoval_Node0_action --> E_IsReleaseCodewithRemoval S_IsReleaseCodewithRemoval --> N_IsReleaseCodewithRemoval_Node0 N_IsReleaseCodewithRemoval_Node0 -- No --> E_IsReleaseCodewithRemoval
and actions"}:::decision N_IsReleaseCodewithRemoval_Node0_action["The system identifies if this is a
release code with removal processing
type"]:::main N_IsReleaseCodewithRemoval_Node0 -- Yes --> N_IsReleaseCodewithRemoval_Node0_action N_IsReleaseCodewithRemoval_Node0_action --> E_IsReleaseCodewithRemoval S_IsReleaseCodewithRemoval --> N_IsReleaseCodewithRemoval_Node0 N_IsReleaseCodewithRemoval_Node0 -- No --> E_IsReleaseCodewithRemoval
File: GCX016.cbl
GIVEN:
A disposition code has been found in the DC table
WHEN:
- The system evaluates the code type
- Actions
THEN:
The system identifies if this is a release code with removal processing type
β Consolidated Acceptance Criteria
- The system processes the removal of counterpart codes → all matching counterpart codes are removed from the status array
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RemoveMatchingCounterpartCodesfromArray(["Start Step"])
E_RemoveMatchingCounterpartCodesfromArray(["End Step"])
N_RemoveMatchingCounterpartCodesfromArray_Node0{"The system processes the removal of
counterpart codes"}:::decision N_RemoveMatchingCounterpartCodesfromArray_Node0_action["All matching counterpart codes are
removed from the status array"]:::main N_RemoveMatchingCounterpartCodesfromArray_Node0 -- Yes --> N_RemoveMatchingCounterpartCodesfromArray_Node0_action N_RemoveMatchingCounterpartCodesfromArray_Node0_action --> E_RemoveMatchingCounterpartCodesfromArray S_RemoveMatchingCounterpartCodesfromArray --> N_RemoveMatchingCounterpartCodesfromArray_Node0 N_RemoveMatchingCounterpartCodesfromArray_Node0 -- No --> E_RemoveMatchingCounterpartCodesfromArray
counterpart codes"}:::decision N_RemoveMatchingCounterpartCodesfromArray_Node0_action["All matching counterpart codes are
removed from the status array"]:::main N_RemoveMatchingCounterpartCodesfromArray_Node0 -- Yes --> N_RemoveMatchingCounterpartCodesfromArray_Node0_action N_RemoveMatchingCounterpartCodesfromArray_Node0_action --> E_RemoveMatchingCounterpartCodesfromArray S_RemoveMatchingCounterpartCodesfromArray --> N_RemoveMatchingCounterpartCodesfromArray_Node0 N_RemoveMatchingCounterpartCodesfromArray_Node0 -- No --> E_RemoveMatchingCounterpartCodesfromArray
File: GCX016.cbl
GIVEN:
Counterpart codes have been found in the status array
WHEN:
The system processes the removal of counterpart codes
THEN:
All matching counterpart codes are removed from the status array
β Consolidated Acceptance Criteria
- The system compacts the array structure → the status array is reorganized without empty positions and maintains proper sequencing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CompactStatusArrayAfterRemoval(["Start Step"])
E_CompactStatusArrayAfterRemoval(["End Step"])
N_CompactStatusArrayAfterRemoval_Node0{"The system compacts the array
structure"}:::decision N_CompactStatusArrayAfterRemoval_Node0_action["The status array is reorganized
without empty positions and
maintains proper sequencing"]:::main N_CompactStatusArrayAfterRemoval_Node0 -- Yes --> N_CompactStatusArrayAfterRemoval_Node0_action N_CompactStatusArrayAfterRemoval_Node0_action --> E_CompactStatusArrayAfterRemoval S_CompactStatusArrayAfterRemoval --> N_CompactStatusArrayAfterRemoval_Node0 N_CompactStatusArrayAfterRemoval_Node0 -- No --> E_CompactStatusArrayAfterRemoval
structure"}:::decision N_CompactStatusArrayAfterRemoval_Node0_action["The status array is reorganized
without empty positions and
maintains proper sequencing"]:::main N_CompactStatusArrayAfterRemoval_Node0 -- Yes --> N_CompactStatusArrayAfterRemoval_Node0_action N_CompactStatusArrayAfterRemoval_Node0_action --> E_CompactStatusArrayAfterRemoval S_CompactStatusArrayAfterRemoval --> N_CompactStatusArrayAfterRemoval_Node0 N_CompactStatusArrayAfterRemoval_Node0 -- No --> E_CompactStatusArrayAfterRemoval
File: GCX016.cbl
GIVEN:
Counterpart codes have been removed from the status array
WHEN:
The system compacts the array structure
THEN:
- The status array is reorganized without empty positions
- Maintains proper sequencing
β Consolidated Acceptance Criteria
- The system adds the new release status code → the release disposition code is added to the status array with appropriate sequencing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AddNewReleaseStatusCodetoArray(["Start Step"])
E_AddNewReleaseStatusCodetoArray(["End Step"])
N_AddNewReleaseStatusCodetoArray_Node0{"The system adds the new release
status code"}:::decision N_AddNewReleaseStatusCodetoArray_Node0_action["The release disposition code is
added to the status array with
appropriate sequencing"]:::main N_AddNewReleaseStatusCodetoArray_Node0 -- Yes --> N_AddNewReleaseStatusCodetoArray_Node0_action N_AddNewReleaseStatusCodetoArray_Node0_action --> E_AddNewReleaseStatusCodetoArray S_AddNewReleaseStatusCodetoArray --> N_AddNewReleaseStatusCodetoArray_Node0 N_AddNewReleaseStatusCodetoArray_Node0 -- No --> E_AddNewReleaseStatusCodetoArray
status code"}:::decision N_AddNewReleaseStatusCodetoArray_Node0_action["The release disposition code is
added to the status array with
appropriate sequencing"]:::main N_AddNewReleaseStatusCodetoArray_Node0 -- Yes --> N_AddNewReleaseStatusCodetoArray_Node0_action N_AddNewReleaseStatusCodetoArray_Node0_action --> E_AddNewReleaseStatusCodetoArray S_AddNewReleaseStatusCodetoArray --> N_AddNewReleaseStatusCodetoArray_Node0 N_AddNewReleaseStatusCodetoArray_Node0 -- No --> E_AddNewReleaseStatusCodetoArray
File: GCX016.cbl
GIVEN:
Counterpart codes have been removed and the array has been compacted
WHEN:
The system adds the new release status code
THEN:
The release disposition code is added to the status array with appropriate sequencing
β Consolidated Acceptance Criteria
- The system sets the release flag in the status element → the status element is marked as released for cargo processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetReleasedFlaginStatusElement(["Start Step"])
E_SetReleasedFlaginStatusElement(["End Step"])
N_SetReleasedFlaginStatusElement_Node0{"The system sets the release flag in
the status element"}:::decision N_SetReleasedFlaginStatusElement_Node0_action["The status element is marked as
released for cargo processing"]:::main N_SetReleasedFlaginStatusElement_Node0 -- Yes --> N_SetReleasedFlaginStatusElement_Node0_action N_SetReleasedFlaginStatusElement_Node0_action --> E_SetReleasedFlaginStatusElement S_SetReleasedFlaginStatusElement --> N_SetReleasedFlaginStatusElement_Node0 N_SetReleasedFlaginStatusElement_Node0 -- No --> E_SetReleasedFlaginStatusElement
the status element"}:::decision N_SetReleasedFlaginStatusElement_Node0_action["The status element is marked as
released for cargo processing"]:::main N_SetReleasedFlaginStatusElement_Node0 -- Yes --> N_SetReleasedFlaginStatusElement_Node0_action N_SetReleasedFlaginStatusElement_Node0_action --> E_SetReleasedFlaginStatusElement S_SetReleasedFlaginStatusElement --> N_SetReleasedFlaginStatusElement_Node0 N_SetReleasedFlaginStatusElement_Node0 -- No --> E_SetReleasedFlaginStatusElement
File: GCX016.cbl
GIVEN:
A release status code has been added to the array
WHEN:
The system sets the release flag in the status element
THEN:
The status element is marked as released for cargo processing
β Consolidated Acceptance Criteria
- The system processes location information inclusion → location details are included in the release status element
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IncludeLocationInformationifAvailable(["Start Step"])
E_IncludeLocationInformationifAvailable(["End Step"])
N_IncludeLocationInformationifAvailable_Node0{"The system processes location
information inclusion"}:::decision N_IncludeLocationInformationifAvailable_Node0_action["Location details are included in
the release status element"]:::main N_IncludeLocationInformationifAvailable_Node0 -- Yes --> N_IncludeLocationInformationifAvailable_Node0_action N_IncludeLocationInformationifAvailable_Node0_action --> E_IncludeLocationInformationifAvailable S_IncludeLocationInformationifAvailable --> N_IncludeLocationInformationifAvailable_Node0 N_IncludeLocationInformationifAvailable_Node0 -- No --> E_IncludeLocationInformationifAvailable
information inclusion"}:::decision N_IncludeLocationInformationifAvailable_Node0_action["Location details are included in
the release status element"]:::main N_IncludeLocationInformationifAvailable_Node0 -- Yes --> N_IncludeLocationInformationifAvailable_Node0_action N_IncludeLocationInformationifAvailable_Node0_action --> E_IncludeLocationInformationifAvailable S_IncludeLocationInformationifAvailable --> N_IncludeLocationInformationifAvailable_Node0 N_IncludeLocationInformationifAvailable_Node0 -- No --> E_IncludeLocationInformationifAvailable
File: GCX016.cbl
GIVEN:
A release status code has been added and location information is available
WHEN:
The system processes location information inclusion
THEN:
Location details are included in the release status element
β Consolidated Acceptance Criteria
- The system determines if quantity action is required → quantity action flags are set if the release code impacts cargo release quantities
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetQuantityActionifRequired(["Start Step"])
E_SetQuantityActionifRequired(["End Step"])
N_SetQuantityActionifRequired_Node0{"The system determines if quantity
action is required"}:::decision N_SetQuantityActionifRequired_Node0_action["Quantity action flags are set if
the release code impacts cargo
release quantities"]:::main N_SetQuantityActionifRequired_Node0 -- Yes --> N_SetQuantityActionifRequired_Node0_action N_SetQuantityActionifRequired_Node0_action --> E_SetQuantityActionifRequired S_SetQuantityActionifRequired --> N_SetQuantityActionifRequired_Node0 N_SetQuantityActionifRequired_Node0 -- No --> E_SetQuantityActionifRequired
action is required"}:::decision N_SetQuantityActionifRequired_Node0_action["Quantity action flags are set if
the release code impacts cargo
release quantities"]:::main N_SetQuantityActionifRequired_Node0 -- Yes --> N_SetQuantityActionifRequired_Node0_action N_SetQuantityActionifRequired_Node0_action --> E_SetQuantityActionifRequired S_SetQuantityActionifRequired --> N_SetQuantityActionifRequired_Node0 N_SetQuantityActionifRequired_Node0 -- No --> E_SetQuantityActionifRequired
File: GCX016.cbl
GIVEN:
A release status code has been processed with location information
WHEN:
The system determines if quantity action is required
THEN:
Quantity action flags are set if the release code impacts cargo release quantities
β Consolidated Acceptance Criteria
- The system updates the status array in memory → all changes to the status array are committed and available for further processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UpdateStatusArrayinMemory(["Start Step"])
E_UpdateStatusArrayinMemory(["End Step"])
N_UpdateStatusArrayinMemory_Node0{"The system updates the status array
in memory"}:::decision N_UpdateStatusArrayinMemory_Node0_action["All changes to the status array are
committed and available for further
processing"]:::main N_UpdateStatusArrayinMemory_Node0 -- Yes --> N_UpdateStatusArrayinMemory_Node0_action N_UpdateStatusArrayinMemory_Node0_action --> E_UpdateStatusArrayinMemory S_UpdateStatusArrayinMemory --> N_UpdateStatusArrayinMemory_Node0 N_UpdateStatusArrayinMemory_Node0 -- No --> E_UpdateStatusArrayinMemory
in memory"}:::decision N_UpdateStatusArrayinMemory_Node0_action["All changes to the status array are
committed and available for further
processing"]:::main N_UpdateStatusArrayinMemory_Node0 -- Yes --> N_UpdateStatusArrayinMemory_Node0_action N_UpdateStatusArrayinMemory_Node0_action --> E_UpdateStatusArrayinMemory S_UpdateStatusArrayinMemory --> N_UpdateStatusArrayinMemory_Node0 N_UpdateStatusArrayinMemory_Node0 -- No --> E_UpdateStatusArrayinMemory
File: GCX016.cbl
GIVEN:
All release code processing has been completed
WHEN:
The system updates the status array in memory
THEN:
- All changes to the status array are committed
- Available for further processing
β Consolidated Acceptance Criteria
- The system logs the disposition code processing → processing details are recorded for audit trail and system tracking
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogDispositionCodeProcessing(["Start Step"])
E_LogDispositionCodeProcessing(["End Step"])
N_LogDispositionCodeProcessing_Node0{"The system logs the disposition
code processing"}:::decision N_LogDispositionCodeProcessing_Node0_action["Processing details are recorded for
audit trail and system tracking"]:::main N_LogDispositionCodeProcessing_Node0 -- Yes --> N_LogDispositionCodeProcessing_Node0_action N_LogDispositionCodeProcessing_Node0_action --> E_LogDispositionCodeProcessing S_LogDispositionCodeProcessing --> N_LogDispositionCodeProcessing_Node0 N_LogDispositionCodeProcessing_Node0 -- No --> E_LogDispositionCodeProcessing
code processing"}:::decision N_LogDispositionCodeProcessing_Node0_action["Processing details are recorded for
audit trail and system tracking"]:::main N_LogDispositionCodeProcessing_Node0 -- Yes --> N_LogDispositionCodeProcessing_Node0_action N_LogDispositionCodeProcessing_Node0_action --> E_LogDispositionCodeProcessing S_LogDispositionCodeProcessing --> N_LogDispositionCodeProcessing_Node0 N_LogDispositionCodeProcessing_Node0 -- No --> E_LogDispositionCodeProcessing
File: GCX016.cbl
GIVEN:
Status array has been updated in memory
WHEN:
The system logs the disposition code processing
THEN:
- Processing details are recorded for audit trail
- System tracking
β Consolidated Acceptance Criteria
- The disposition code is not found in the DC table → an error is generated indicating the code is not valid for processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GenerateErrorCodeNotFound(["Start Step"])
E_GenerateErrorCodeNotFound(["End Step"])
N_GenerateErrorCodeNotFound_Node0{"The disposition code is not found
in the DC table"}:::decision N_GenerateErrorCodeNotFound_Node0_action["An error is generated indicating
the code is not valid for processing"]:::main N_GenerateErrorCodeNotFound_Node0 -- Yes --> N_GenerateErrorCodeNotFound_Node0_action N_GenerateErrorCodeNotFound_Node0_action --> E_GenerateErrorCodeNotFound S_GenerateErrorCodeNotFound --> N_GenerateErrorCodeNotFound_Node0 N_GenerateErrorCodeNotFound_Node0 -- No --> E_GenerateErrorCodeNotFound
in the DC table"}:::decision N_GenerateErrorCodeNotFound_Node0_action["An error is generated indicating
the code is not valid for processing"]:::main N_GenerateErrorCodeNotFound_Node0 -- Yes --> N_GenerateErrorCodeNotFound_Node0_action N_GenerateErrorCodeNotFound_Node0_action --> E_GenerateErrorCodeNotFound S_GenerateErrorCodeNotFound --> N_GenerateErrorCodeNotFound_Node0 N_GenerateErrorCodeNotFound_Node0 -- No --> E_GenerateErrorCodeNotFound
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
A disposition code has been submitted for processing
WHEN:
The disposition code is not found in the DC table
THEN:
An error is generated indicating the code is not valid for processing
β Consolidated Acceptance Criteria
- The code is not a release code with removal type → the system skips release with removal processing and continues to next processing step
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SkipProcessingNotReleasewithRemoval(["Start Step"])
E_SkipProcessingNotReleasewithRemoval(["End Step"])
N_SkipProcessingNotReleasewithRemoval_Node0{"The code is not a release code with
removal type"}:::decision N_SkipProcessingNotReleasewithRemoval_Node0_action["The system skips release with
removal processing and continues to
next processing step"]:::main N_SkipProcessingNotReleasewithRemoval_Node0 -- Yes --> N_SkipProcessingNotReleasewithRemoval_Node0_action N_SkipProcessingNotReleasewithRemoval_Node0_action --> E_SkipProcessingNotReleasewithRemoval S_SkipProcessingNotReleasewithRemoval --> N_SkipProcessingNotReleasewithRemoval_Node0 N_SkipProcessingNotReleasewithRemoval_Node0 -- No --> E_SkipProcessingNotReleasewithRemoval
removal type"}:::decision N_SkipProcessingNotReleasewithRemoval_Node0_action["The system skips release with
removal processing and continues to
next processing step"]:::main N_SkipProcessingNotReleasewithRemoval_Node0 -- Yes --> N_SkipProcessingNotReleasewithRemoval_Node0_action N_SkipProcessingNotReleasewithRemoval_Node0_action --> E_SkipProcessingNotReleasewithRemoval S_SkipProcessingNotReleasewithRemoval --> N_SkipProcessingNotReleasewithRemoval_Node0 N_SkipProcessingNotReleasewithRemoval_Node0 -- No --> E_SkipProcessingNotReleasewithRemoval
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
A disposition code has been found in the DC table
WHEN:
The code is not a release code with removal type
THEN:
- The system skips release with removal processing
- Continues to next processing step
β Consolidated Acceptance Criteria
- The disposition code is classified as an information code with removal type → the system should identify it as requiring information code with removal processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_InformationCodewithRemovalProcessingStart(["Start Step"])
E_InformationCodewithRemovalProcessingStart(["End Step"])
N_InformationCodewithRemovalProcessingStart_Node0{"The disposition code is classified
as an information code with removal
type"}:::decision N_InformationCodewithRemovalProcessingStart_Node0_action["The system should identify it as
requiring information code with
removal processing"]:::main N_InformationCodewithRemovalProcessingStart_Node0 -- Yes --> N_InformationCodewithRemovalProcessingStart_Node0_action N_InformationCodewithRemovalProcessingStart_Node0_action --> E_InformationCodewithRemovalProcessingStart S_InformationCodewithRemovalProcessingStart --> N_InformationCodewithRemovalProcessingStart_Node0 N_InformationCodewithRemovalProcessingStart_Node0 -- No --> E_InformationCodewithRemovalProcessingStart
as an information code with removal
type"}:::decision N_InformationCodewithRemovalProcessingStart_Node0_action["The system should identify it as
requiring information code with
removal processing"]:::main N_InformationCodewithRemovalProcessingStart_Node0 -- Yes --> N_InformationCodewithRemovalProcessingStart_Node0_action N_InformationCodewithRemovalProcessingStart_Node0_action --> E_InformationCodewithRemovalProcessingStart S_InformationCodewithRemovalProcessingStart --> N_InformationCodewithRemovalProcessingStart_Node0 N_InformationCodewithRemovalProcessingStart_Node0 -- No --> E_InformationCodewithRemovalProcessingStart
File: GCX016.cbl
GIVEN:
A disposition code is received for processing
WHEN:
The disposition code is classified as an information code with removal type
THEN:
The system should identify it as requiring information code with removal processing
β Consolidated Acceptance Criteria
- The array contains gaps where codes were removed → the system should compact the array by moving remaining elements to fill gaps and maintain sequential order
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CompactStatusArrayElements(["Start Step"])
E_CompactStatusArrayElements(["End Step"])
N_CompactStatusArrayElements_Node0{"The array contains gaps where codes
were removed"}:::decision N_CompactStatusArrayElements_Node0_action["The system should compact the array
by moving remaining elements to fill
gaps and maintain sequential order"]:::main N_CompactStatusArrayElements_Node0 -- Yes --> N_CompactStatusArrayElements_Node0_action N_CompactStatusArrayElements_Node0_action --> E_CompactStatusArrayElements S_CompactStatusArrayElements --> N_CompactStatusArrayElements_Node0 N_CompactStatusArrayElements_Node0 -- No --> E_CompactStatusArrayElements
were removed"}:::decision N_CompactStatusArrayElements_Node0_action["The system should compact the array
by moving remaining elements to fill
gaps and maintain sequential order"]:::main N_CompactStatusArrayElements_Node0 -- Yes --> N_CompactStatusArrayElements_Node0_action N_CompactStatusArrayElements_Node0_action --> E_CompactStatusArrayElements S_CompactStatusArrayElements --> N_CompactStatusArrayElements_Node0 N_CompactStatusArrayElements_Node0 -- No --> E_CompactStatusArrayElements
File: GCX016.cbl
GIVEN:
Counterpart codes have been removed from the status array
WHEN:
The array contains gaps where codes were removed
THEN:
- The system should compact the array by moving remaining elements to fill gaps
- Maintain sequential order
β Consolidated Acceptance Criteria
- Adding the new informational status code to the array → the system should insert the information code with appropriate status information flag set
- The system adds the new information disposition code to the status array → the new informational status is recorded in the cargo status history
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AddNewInformationalStatusCode(["Start Step"])
E_AddNewInformationalStatusCode(["End Step"])
N_AddNewInformationalStatusCode_Node0{"Adding the new informational status
code to the array"}:::decision N_AddNewInformationalStatusCode_Node0_action["The system should insert the
information code with appropriate
status information flag set"]:::main N_AddNewInformationalStatusCode_Node0 -- Yes --> N_AddNewInformationalStatusCode_Node0_action N_AddNewInformationalStatusCode_Node0_action --> E_AddNewInformationalStatusCode S_AddNewInformationalStatusCode --> N_AddNewInformationalStatusCode_Node0 N_AddNewInformationalStatusCode_Node1{"The system adds the new information
disposition code to the status array"}:::decision N_AddNewInformationalStatusCode_Node1_action["The new informational status is
recorded in the cargo status history"]:::main N_AddNewInformationalStatusCode_Node1 -- Yes --> N_AddNewInformationalStatusCode_Node1_action N_AddNewInformationalStatusCode_Node1_action --> E_AddNewInformationalStatusCode N_AddNewInformationalStatusCode_Node0 -- No --> N_AddNewInformationalStatusCode_Node1 N_AddNewInformationalStatusCode_Node1 -- No --> E_AddNewInformationalStatusCode
code to the array"}:::decision N_AddNewInformationalStatusCode_Node0_action["The system should insert the
information code with appropriate
status information flag set"]:::main N_AddNewInformationalStatusCode_Node0 -- Yes --> N_AddNewInformationalStatusCode_Node0_action N_AddNewInformationalStatusCode_Node0_action --> E_AddNewInformationalStatusCode S_AddNewInformationalStatusCode --> N_AddNewInformationalStatusCode_Node0 N_AddNewInformationalStatusCode_Node1{"The system adds the new information
disposition code to the status array"}:::decision N_AddNewInformationalStatusCode_Node1_action["The new informational status is
recorded in the cargo status history"]:::main N_AddNewInformationalStatusCode_Node1 -- Yes --> N_AddNewInformationalStatusCode_Node1_action N_AddNewInformationalStatusCode_Node1_action --> E_AddNewInformationalStatusCode N_AddNewInformationalStatusCode_Node0 -- No --> N_AddNewInformationalStatusCode_Node1 N_AddNewInformationalStatusCode_Node1 -- No --> E_AddNewInformationalStatusCode
File: GCX016.cbl
GIVEN:
Counterpart codes have been processed AND the status array has been compacted
WHEN:
Adding the new informational status code to the array
THEN:
The system should insert the information code with appropriate status information flag set
File: GCX016.cbl
GIVEN:
Counterpart codes have been removed and the status array has been compacted
WHEN:
The system adds the new information disposition code to the status array
THEN:
The new informational status is recorded in the cargo status history
β Consolidated Acceptance Criteria
- The same information code already exists in the status array → the system should skip adding the duplicate entry and maintain the existing code
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CheckforExistingInformationCode(["Start Step"])
E_CheckforExistingInformationCode(["End Step"])
N_CheckforExistingInformationCode_Node0{"The same information code already
exists in the status array"}:::decision N_CheckforExistingInformationCode_Node0_action["The system should skip adding the
duplicate entry and maintain the
existing code"]:::main N_CheckforExistingInformationCode_Node0 -- Yes --> N_CheckforExistingInformationCode_Node0_action N_CheckforExistingInformationCode_Node0_action --> E_CheckforExistingInformationCode S_CheckforExistingInformationCode --> N_CheckforExistingInformationCode_Node0 N_CheckforExistingInformationCode_Node0 -- No --> E_CheckforExistingInformationCode
exists in the status array"}:::decision N_CheckforExistingInformationCode_Node0_action["The system should skip adding the
duplicate entry and maintain the
existing code"]:::main N_CheckforExistingInformationCode_Node0 -- Yes --> N_CheckforExistingInformationCode_Node0_action N_CheckforExistingInformationCode_Node0_action --> E_CheckforExistingInformationCode S_CheckforExistingInformationCode --> N_CheckforExistingInformationCode_Node0 N_CheckforExistingInformationCode_Node0 -- No --> E_CheckforExistingInformationCode
File: GCX016.cbl
GIVEN:
A new informational status code is being added to the cargo status array
WHEN:
The same information code already exists in the status array
THEN:
- The system should skip adding the duplicate entry
- Maintain the existing code
β Consolidated Acceptance Criteria
- Status analysis is performed → each array element is examined sequentially until all elements are processed
- The system performs status transition analysis → each array element is examined sequentially for status code analysis
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ScanS09AStatusArray(["Start Step"])
E_ScanS09AStatusArray(["End Step"])
N_ScanS09AStatusArray_Node0{"Status analysis is performed"}:::decision
N_ScanS09AStatusArray_Node0_action["Each array element is examined
sequentially until all elements are
processed"]:::main N_ScanS09AStatusArray_Node0 -- Yes --> N_ScanS09AStatusArray_Node0_action N_ScanS09AStatusArray_Node0_action --> E_ScanS09AStatusArray S_ScanS09AStatusArray --> N_ScanS09AStatusArray_Node0 N_ScanS09AStatusArray_Node1{"The system performs status
transition analysis"}:::decision N_ScanS09AStatusArray_Node1_action["Each array element is examined
sequentially for status code
analysis"]:::main N_ScanS09AStatusArray_Node1 -- Yes --> N_ScanS09AStatusArray_Node1_action N_ScanS09AStatusArray_Node1_action --> E_ScanS09AStatusArray N_ScanS09AStatusArray_Node0 -- No --> N_ScanS09AStatusArray_Node1 N_ScanS09AStatusArray_Node1 -- No --> E_ScanS09AStatusArray
sequentially until all elements are
processed"]:::main N_ScanS09AStatusArray_Node0 -- Yes --> N_ScanS09AStatusArray_Node0_action N_ScanS09AStatusArray_Node0_action --> E_ScanS09AStatusArray S_ScanS09AStatusArray --> N_ScanS09AStatusArray_Node0 N_ScanS09AStatusArray_Node1{"The system performs status
transition analysis"}:::decision N_ScanS09AStatusArray_Node1_action["Each array element is examined
sequentially for status code
analysis"]:::main N_ScanS09AStatusArray_Node1 -- Yes --> N_ScanS09AStatusArray_Node1_action N_ScanS09AStatusArray_Node1_action --> E_ScanS09AStatusArray N_ScanS09AStatusArray_Node0 -- No --> N_ScanS09AStatusArray_Node1 N_ScanS09AStatusArray_Node1 -- No --> E_ScanS09AStatusArray
File: GCX016.cbl
GIVEN:
The S09A status array contains status entries for a cargo record
WHEN:
Status analysis is performed
THEN:
Each array element is examined sequentially until all elements are processed
File: GCX016.cbl
GIVEN:
The S09A status array contains cargo status entries
WHEN:
The system performs status transition analysis
THEN:
Each array element is examined sequentially for status code analysis
β Consolidated Acceptance Criteria
- If the disposition code → the code is classified as hold, release, PTT, proceed, arrival, export, or FDA hold type
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_EvaluateDispositionCodeType(["Start Step"])
E_EvaluateDispositionCodeType(["End Step"])
N_EvaluateDispositionCodeType_Node0{"The system evaluates the
disposition code"}:::decision N_EvaluateDispositionCodeType_Node0_action["The code is classified as hold,
release, PTT, proceed, arrival,
export, or FDA hold type"]:::main N_EvaluateDispositionCodeType_Node0 -- Yes --> N_EvaluateDispositionCodeType_Node0_action N_EvaluateDispositionCodeType_Node0_action --> E_EvaluateDispositionCodeType S_EvaluateDispositionCodeType --> N_EvaluateDispositionCodeType_Node0 N_EvaluateDispositionCodeType_Node0 -- No --> E_EvaluateDispositionCodeType
disposition code"}:::decision N_EvaluateDispositionCodeType_Node0_action["The code is classified as hold,
release, PTT, proceed, arrival,
export, or FDA hold type"]:::main N_EvaluateDispositionCodeType_Node0 -- Yes --> N_EvaluateDispositionCodeType_Node0_action N_EvaluateDispositionCodeType_Node0_action --> E_EvaluateDispositionCodeType S_EvaluateDispositionCodeType --> N_EvaluateDispositionCodeType_Node0 N_EvaluateDispositionCodeType_Node0 -- No --> E_EvaluateDispositionCodeType
File: GCX016.cbl
GIVEN:
A status code is found in the S09A array
WHEN:
The system evaluates the disposition code
THEN:
The code is classified as hold, release, PTT, proceed, arrival, export, or FDA hold type
β Consolidated Acceptance Criteria
- Final status determination is performed → the cargo status is set to 'PTT' (Proceed to Transfer) for continued processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetFinalStatusPTT(["Start Step"])
E_SetFinalStatusPTT(["End Step"])
N_SetFinalStatusPTT_Node0{"Final status determination is
performed"}:::decision N_SetFinalStatusPTT_Node0_action["The cargo status is set to PTT
Proceed to Transfer for continued
processing"]:::main N_SetFinalStatusPTT_Node0 -- Yes --> N_SetFinalStatusPTT_Node0_action N_SetFinalStatusPTT_Node0_action --> E_SetFinalStatusPTT S_SetFinalStatusPTT --> N_SetFinalStatusPTT_Node0 N_SetFinalStatusPTT_Node0 -- No --> E_SetFinalStatusPTT
performed"}:::decision N_SetFinalStatusPTT_Node0_action["The cargo status is set to PTT
Proceed to Transfer for continued
processing"]:::main N_SetFinalStatusPTT_Node0 -- Yes --> N_SetFinalStatusPTT_Node0_action N_SetFinalStatusPTT_Node0_action --> E_SetFinalStatusPTT S_SetFinalStatusPTT --> N_SetFinalStatusPTT_Node0 N_SetFinalStatusPTT_Node0 -- No --> E_SetFinalStatusPTT
File: GCX016.cbl
GIVEN:
Status analysis shows cargo has active PTT conditions with no holds or releases
WHEN:
Final status determination is performed
THEN:
The cargo status is set to 'PTT' (Proceed to Transfer) for continued processing
β Consolidated Acceptance Criteria
- Final status determination is performed → the cargo status is set to either 'Arrived' or 'Export' based on the specific condition identified
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetFinalStatusArrivedExport(["Start Step"])
E_SetFinalStatusArrivedExport(["End Step"])
N_SetFinalStatusArrivedExport_Node0{"Final status determination is
performed"}:::decision N_SetFinalStatusArrivedExport_Node0_action["The cargo status is set to either
Arrived or Export based on the
specific condition identified"]:::main N_SetFinalStatusArrivedExport_Node0 -- Yes --> N_SetFinalStatusArrivedExport_Node0_action N_SetFinalStatusArrivedExport_Node0_action --> E_SetFinalStatusArrivedExport S_SetFinalStatusArrivedExport --> N_SetFinalStatusArrivedExport_Node0 N_SetFinalStatusArrivedExport_Node0 -- No --> E_SetFinalStatusArrivedExport
performed"}:::decision N_SetFinalStatusArrivedExport_Node0_action["The cargo status is set to either
Arrived or Export based on the
specific condition identified"]:::main N_SetFinalStatusArrivedExport_Node0 -- Yes --> N_SetFinalStatusArrivedExport_Node0_action N_SetFinalStatusArrivedExport_Node0_action --> E_SetFinalStatusArrivedExport S_SetFinalStatusArrivedExport --> N_SetFinalStatusArrivedExport_Node0 N_SetFinalStatusArrivedExport_Node0 -- No --> E_SetFinalStatusArrivedExport
File: GCX016.cbl
GIVEN:
Status analysis shows cargo has active arrival or export conditions with no holds, releases, PTT, or proceed status
WHEN:
Final status determination is performed
THEN:
The cargo status is set to either 'Arrived' or 'Export' based on the specific condition identified
β Consolidated Acceptance Criteria
- If the disposition code type → the auto release flag is set and the status array is re-evaluated to determine the final cargo release status
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ARLAutoReleaseCode(["Start Step"])
E_ARLAutoReleaseCode(["End Step"])
N_ARLAutoReleaseCode_Node0{"The system evaluates the
disposition code type"}:::decision N_ARLAutoReleaseCode_Node0_action["The auto release flag is set and
the status array is re-evaluated to
determine the final cargo release
status"]:::main N_ARLAutoReleaseCode_Node0 -- Yes --> N_ARLAutoReleaseCode_Node0_action N_ARLAutoReleaseCode_Node0_action --> E_ARLAutoReleaseCode S_ARLAutoReleaseCode --> N_ARLAutoReleaseCode_Node0 N_ARLAutoReleaseCode_Node0 -- No --> E_ARLAutoReleaseCode
disposition code type"}:::decision N_ARLAutoReleaseCode_Node0_action["The auto release flag is set and
the status array is re-evaluated to
determine the final cargo release
status"]:::main N_ARLAutoReleaseCode_Node0 -- Yes --> N_ARLAutoReleaseCode_Node0_action N_ARLAutoReleaseCode_Node0_action --> E_ARLAutoReleaseCode S_ARLAutoReleaseCode --> N_ARLAutoReleaseCode_Node0 N_ARLAutoReleaseCode_Node0 -- No --> E_ARLAutoReleaseCode
File: GCX016.cbl
GIVEN:
A disposition code of type ARL (Auto Release) is being processed
WHEN:
The system evaluates the disposition code type
THEN:
- The auto release flag is set
- The status array is re-evaluated to determine the final cargo release status
β Consolidated Acceptance Criteria
- If the disposition code type → the manual release flag is set and CPRS manual release processing is initiated
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MRLManualReleaseCode(["Start Step"])
E_MRLManualReleaseCode(["End Step"])
N_MRLManualReleaseCode_Node0{"The system evaluates the
disposition code type"}:::decision N_MRLManualReleaseCode_Node0_action["The manual release flag is set and
CPRS manual release processing is
initiated"]:::main N_MRLManualReleaseCode_Node0 -- Yes --> N_MRLManualReleaseCode_Node0_action N_MRLManualReleaseCode_Node0_action --> E_MRLManualReleaseCode S_MRLManualReleaseCode --> N_MRLManualReleaseCode_Node0 N_MRLManualReleaseCode_Node0 -- No --> E_MRLManualReleaseCode
disposition code type"}:::decision N_MRLManualReleaseCode_Node0_action["The manual release flag is set and
CPRS manual release processing is
initiated"]:::main N_MRLManualReleaseCode_Node0 -- Yes --> N_MRLManualReleaseCode_Node0_action N_MRLManualReleaseCode_Node0_action --> E_MRLManualReleaseCode S_MRLManualReleaseCode --> N_MRLManualReleaseCode_Node0 N_MRLManualReleaseCode_Node0 -- No --> E_MRLManualReleaseCode
File: GCX016.cbl
GIVEN:
A disposition code of type MRL (Manual Release) is being processed
WHEN:
The system evaluates the disposition code type
THEN:
- The manual release flag is set
- Cprs manual release processing is initiated
β Consolidated Acceptance Criteria
- If the disposition code type → the removal flag is set, counterpart codes are removed from the status array, and the code is added to the status array
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RemovalCodeType(["Start Step"])
E_RemovalCodeType(["End Step"])
N_RemovalCodeType_Node0{"The system evaluates the
disposition code type"}:::decision N_RemovalCodeType_Node0_action["The removal flag is set,
counterpart codes are removed from
the status array, and the code is
added to the status array"]:::main N_RemovalCodeType_Node0 -- Yes --> N_RemovalCodeType_Node0_action N_RemovalCodeType_Node0_action --> E_RemovalCodeType S_RemovalCodeType --> N_RemovalCodeType_Node0 N_RemovalCodeType_Node0 -- No --> E_RemovalCodeType
disposition code type"}:::decision N_RemovalCodeType_Node0_action["The removal flag is set,
counterpart codes are removed from
the status array, and the code is
added to the status array"]:::main N_RemovalCodeType_Node0 -- Yes --> N_RemovalCodeType_Node0_action N_RemovalCodeType_Node0_action --> E_RemovalCodeType S_RemovalCodeType --> N_RemovalCodeType_Node0 N_RemovalCodeType_Node0 -- No --> E_RemovalCodeType
File: GCX016.cbl
GIVEN:
A disposition code of removal type is being processed
WHEN:
The system evaluates the disposition code type
THEN:
The removal flag is set, counterpart codes are removed from the status array, and the code is added to the status array
β Consolidated Acceptance Criteria
- If the disposition code type → the hold flag is set, location information is added, and the code is added to the status array
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_HoldCodeType(["Start Step"])
E_HoldCodeType(["End Step"])
N_HoldCodeType_Node0{"The system evaluates the
disposition code type"}:::decision N_HoldCodeType_Node0_action["The hold flag is set, location
information is added, and the code
is added to the status array"]:::main N_HoldCodeType_Node0 -- Yes --> N_HoldCodeType_Node0_action N_HoldCodeType_Node0_action --> E_HoldCodeType S_HoldCodeType --> N_HoldCodeType_Node0 N_HoldCodeType_Node0 -- No --> E_HoldCodeType
disposition code type"}:::decision N_HoldCodeType_Node0_action["The hold flag is set, location
information is added, and the code
is added to the status array"]:::main N_HoldCodeType_Node0 -- Yes --> N_HoldCodeType_Node0_action N_HoldCodeType_Node0_action --> E_HoldCodeType S_HoldCodeType --> N_HoldCodeType_Node0 N_HoldCodeType_Node0 -- No --> E_HoldCodeType
File: GCX016.cbl
GIVEN:
A disposition code of hold type is being processed
WHEN:
The system evaluates the disposition code type
THEN:
The hold flag is set, location information is added, and the code is added to the status array
β Consolidated Acceptance Criteria
- If the disposition code type → the release flag is set, released status is applied, and the code is added to the status array
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ReleaseCodeType(["Start Step"])
E_ReleaseCodeType(["End Step"])
N_ReleaseCodeType_Node0{"The system evaluates the
disposition code type"}:::decision N_ReleaseCodeType_Node0_action["The release flag is set, released
status is applied, and the code is
added to the status array"]:::main N_ReleaseCodeType_Node0 -- Yes --> N_ReleaseCodeType_Node0_action N_ReleaseCodeType_Node0_action --> E_ReleaseCodeType S_ReleaseCodeType --> N_ReleaseCodeType_Node0 N_ReleaseCodeType_Node0 -- No --> E_ReleaseCodeType
disposition code type"}:::decision N_ReleaseCodeType_Node0_action["The release flag is set, released
status is applied, and the code is
added to the status array"]:::main N_ReleaseCodeType_Node0 -- Yes --> N_ReleaseCodeType_Node0_action N_ReleaseCodeType_Node0_action --> E_ReleaseCodeType S_ReleaseCodeType --> N_ReleaseCodeType_Node0 N_ReleaseCodeType_Node0 -- No --> E_ReleaseCodeType
File: GCX016.cbl
GIVEN:
A disposition code of release type is being processed
WHEN:
The system evaluates the disposition code type
THEN:
The release flag is set, released status is applied, and the code is added to the status array
β Consolidated Acceptance Criteria
- If the disposition code type → the information flag is set, status information is added, and the code is added to the status array
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_StatusInformationCode(["Start Step"])
E_StatusInformationCode(["End Step"])
N_StatusInformationCode_Node0{"The system evaluates the
disposition code type"}:::decision N_StatusInformationCode_Node0_action["The information flag is set, status
information is added, and the code
is added to the status array"]:::main N_StatusInformationCode_Node0 -- Yes --> N_StatusInformationCode_Node0_action N_StatusInformationCode_Node0_action --> E_StatusInformationCode S_StatusInformationCode --> N_StatusInformationCode_Node0 N_StatusInformationCode_Node0 -- No --> E_StatusInformationCode
disposition code type"}:::decision N_StatusInformationCode_Node0_action["The information flag is set, status
information is added, and the code
is added to the status array"]:::main N_StatusInformationCode_Node0 -- Yes --> N_StatusInformationCode_Node0_action N_StatusInformationCode_Node0_action --> E_StatusInformationCode S_StatusInformationCode --> N_StatusInformationCode_Node0 N_StatusInformationCode_Node0 -- No --> E_StatusInformationCode
File: GCX016.cbl
GIVEN:
A disposition code of status information type is being processed
WHEN:
The system evaluates the disposition code type
THEN:
The information flag is set, status information is added, and the code is added to the status array
β Consolidated Acceptance Criteria
- If the disposition code type → the code is added directly to the status array without additional flag setting or special processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_StandardDispositionCode(["Start Step"])
E_StandardDispositionCode(["End Step"])
N_StandardDispositionCode_Node0{"The system evaluates the
disposition code type"}:::decision N_StandardDispositionCode_Node0_action["The code is added directly to the
status array without additional flag
setting or special processing"]:::main N_StandardDispositionCode_Node0 -- Yes --> N_StandardDispositionCode_Node0_action N_StandardDispositionCode_Node0_action --> E_StandardDispositionCode S_StandardDispositionCode --> N_StandardDispositionCode_Node0 N_StandardDispositionCode_Node0 -- No --> E_StandardDispositionCode
disposition code type"}:::decision N_StandardDispositionCode_Node0_action["The code is added directly to the
status array without additional flag
setting or special processing"]:::main N_StandardDispositionCode_Node0 -- Yes --> N_StandardDispositionCode_Node0_action N_StandardDispositionCode_Node0_action --> E_StandardDispositionCode S_StandardDispositionCode --> N_StandardDispositionCode_Node0 N_StandardDispositionCode_Node0 -- No --> E_StandardDispositionCode
File: GCX016.cbl
GIVEN:
A standard disposition code is being processed
WHEN:
The system evaluates the disposition code type
THEN:
The code is added directly to the status array without additional flag setting or special processing
β Consolidated Acceptance Criteria
- The system checks the array capacity → if the array is full, the addition is skipped; if not full, the code is added to the array
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ArrayFull(["Start Step"])
E_ArrayFull(["End Step"])
N_ArrayFull_Node0{"The system checks the array
capacity"}:::decision N_ArrayFull_Node0_action["If the array is full, the addition
is skipped if not full, the code is
added to the array"]:::main N_ArrayFull_Node0 -- Yes --> N_ArrayFull_Node0_action N_ArrayFull_Node0_action --> E_ArrayFull S_ArrayFull --> N_ArrayFull_Node0 N_ArrayFull_Node0 -- No --> E_ArrayFull
capacity"}:::decision N_ArrayFull_Node0_action["If the array is full, the addition
is skipped if not full, the code is
added to the array"]:::main N_ArrayFull_Node0 -- Yes --> N_ArrayFull_Node0_action N_ArrayFull_Node0_action --> E_ArrayFull S_ArrayFull --> N_ArrayFull_Node0 N_ArrayFull_Node0 -- No --> E_ArrayFull
File: GCX016.cbl
GIVEN:
A disposition code needs to be added to the status array
WHEN:
The system checks the array capacity
THEN:
If the array is full, the addition is skipped; if not full, the code is added to the array
β Consolidated Acceptance Criteria
- Hold status is present in the status array → system checks hold location and sets appropriate hold classification flag
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CheckHoldLocation(["Start Step"])
E_CheckHoldLocation(["End Step"])
N_CheckHoldLocation_Node0{"Hold status is present in the
status array"}:::decision N_CheckHoldLocation_Node0_action["System checks hold location and
sets appropriate hold classification
flag"]:::main N_CheckHoldLocation_Node0 -- Yes --> N_CheckHoldLocation_Node0_action N_CheckHoldLocation_Node0_action --> E_CheckHoldLocation S_CheckHoldLocation --> N_CheckHoldLocation_Node0 N_CheckHoldLocation_Node0 -- No --> E_CheckHoldLocation
status array"}:::decision N_CheckHoldLocation_Node0_action["System checks hold location and
sets appropriate hold classification
flag"]:::main N_CheckHoldLocation_Node0 -- Yes --> N_CheckHoldLocation_Node0_action N_CheckHoldLocation_Node0_action --> E_CheckHoldLocation S_CheckHoldLocation --> N_CheckHoldLocation_Node0 N_CheckHoldLocation_Node0 -- No --> E_CheckHoldLocation
File: GCX016.cbl
GIVEN:
Cargo status array has been analyzed for hold conditions
WHEN:
Hold status is present in the status array
THEN:
- System checks hold location
- Sets appropriate hold classification flag
β Consolidated Acceptance Criteria
- Released quantity is greater than or equal to total cargo quantity → system classifies as full release
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CheckReleaseQuantities(["Start Step"])
E_CheckReleaseQuantities(["End Step"])
N_CheckReleaseQuantities_Node0{"Released quantity is greater than
or equal to total cargo quantity"}:::decision N_CheckReleaseQuantities_Node0_action["System classifies as full release"]:::main N_CheckReleaseQuantities_Node0 -- Yes --> N_CheckReleaseQuantities_Node0_action N_CheckReleaseQuantities_Node0_action --> E_CheckReleaseQuantities S_CheckReleaseQuantities --> N_CheckReleaseQuantities_Node0 N_CheckReleaseQuantities_Node0 -- No --> E_CheckReleaseQuantities
or equal to total cargo quantity"}:::decision N_CheckReleaseQuantities_Node0_action["System classifies as full release"]:::main N_CheckReleaseQuantities_Node0 -- Yes --> N_CheckReleaseQuantities_Node0_action N_CheckReleaseQuantities_Node0_action --> E_CheckReleaseQuantities S_CheckReleaseQuantities --> N_CheckReleaseQuantities_Node0 N_CheckReleaseQuantities_Node0 -- No --> E_CheckReleaseQuantities
File: GCX016.cbl
GIVEN:
Release status is present in cargo status array
WHEN:
Released quantity is greater than or equal to total cargo quantity
THEN:
System classifies as full release
β Consolidated Acceptance Criteria
- Cargo meets all PTT eligibility criteria → system sets PTT status flag for the cargo
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetPTTStatus(["Start Step"])
E_SetPTTStatus(["End Step"])
N_SetPTTStatus_Node0{"Cargo meets all PTT eligibility
criteria"}:::decision N_SetPTTStatus_Node0_action["System sets PTT status flag for the
cargo"]:::main N_SetPTTStatus_Node0 -- Yes --> N_SetPTTStatus_Node0_action N_SetPTTStatus_Node0_action --> E_SetPTTStatus S_SetPTTStatus --> N_SetPTTStatus_Node0 N_SetPTTStatus_Node0 -- No --> E_SetPTTStatus
criteria"}:::decision N_SetPTTStatus_Node0_action["System sets PTT status flag for the
cargo"]:::main N_SetPTTStatus_Node0 -- Yes --> N_SetPTTStatus_Node0_action N_SetPTTStatus_Node0_action --> E_SetPTTStatus S_SetPTTStatus --> N_SetPTTStatus_Node0 N_SetPTTStatus_Node0 -- No --> E_SetPTTStatus
File: GCX016.cbl
GIVEN:
PTT quantities have been validated successfully
WHEN:
Cargo meets all PTT eligibility criteria
THEN:
System sets PTT status flag for the cargo
β Consolidated Acceptance Criteria
- Cargo is eligible for proceed status → system sets proceed status flag and assigns border arrival date
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetProceedwithBorderDate(["Start Step"])
E_SetProceedwithBorderDate(["End Step"])
N_SetProceedwithBorderDate_Node0{"Cargo is eligible for proceed
status"}:::decision N_SetProceedwithBorderDate_Node0_action["System sets proceed status flag and
assigns border arrival date"]:::main N_SetProceedwithBorderDate_Node0 -- Yes --> N_SetProceedwithBorderDate_Node0_action N_SetProceedwithBorderDate_Node0_action --> E_SetProceedwithBorderDate S_SetProceedwithBorderDate --> N_SetProceedwithBorderDate_Node0 N_SetProceedwithBorderDate_Node0 -- No --> E_SetProceedwithBorderDate
status"}:::decision N_SetProceedwithBorderDate_Node0_action["System sets proceed status flag and
assigns border arrival date"]:::main N_SetProceedwithBorderDate_Node0 -- Yes --> N_SetProceedwithBorderDate_Node0_action N_SetProceedwithBorderDate_Node0_action --> E_SetProceedwithBorderDate S_SetProceedwithBorderDate --> N_SetProceedwithBorderDate_Node0 N_SetProceedwithBorderDate_Node0 -- No --> E_SetProceedwithBorderDate
File: GCX016.cbl
GIVEN:
Proceed status is detected in cargo status array
WHEN:
Cargo is eligible for proceed status
THEN:
- System sets proceed status flag
- Assigns border arrival date
β Consolidated Acceptance Criteria
- Cargo conditions indicate manual intervention is required for release → system identifies manual release requirement
- The system checks for manual release requirements → if manual release conditions are met, set manual release flag to true
- The cargo has a manual release flag set (WS-MRL-FOUND is true) → the system clears the destination index and processes Canadian manifest coordination
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ManualReleaseRequired(["Start Step"])
E_ManualReleaseRequired(["End Step"])
N_ManualReleaseRequired_Node0{"Cargo conditions indicate manual
intervention is required for release"}:::decision N_ManualReleaseRequired_Node0_action["System identifies manual release
requirement"]:::main N_ManualReleaseRequired_Node0 -- Yes --> N_ManualReleaseRequired_Node0_action N_ManualReleaseRequired_Node0_action --> E_ManualReleaseRequired S_ManualReleaseRequired --> N_ManualReleaseRequired_Node0 N_ManualReleaseRequired_Node1{"The system checks for manual
release requirements"}:::decision N_ManualReleaseRequired_Node1_action["If manual release conditions are
met, set manual release flag to true"]:::main N_ManualReleaseRequired_Node1 -- Yes --> N_ManualReleaseRequired_Node1_action N_ManualReleaseRequired_Node1_action --> E_ManualReleaseRequired N_ManualReleaseRequired_Node0 -- No --> N_ManualReleaseRequired_Node1 N_ManualReleaseRequired_Node2{"The cargo has a manual release flag
set WS-MRL-FOUND is true"}:::decision N_ManualReleaseRequired_Node2_action["The system clears the destination
index and processes Canadian
manifest coordination"]:::main N_ManualReleaseRequired_Node2 -- Yes --> N_ManualReleaseRequired_Node2_action N_ManualReleaseRequired_Node2_action --> E_ManualReleaseRequired N_ManualReleaseRequired_Node1 -- No --> N_ManualReleaseRequired_Node2 N_ManualReleaseRequired_Node2 -- No --> E_ManualReleaseRequired
intervention is required for release"}:::decision N_ManualReleaseRequired_Node0_action["System identifies manual release
requirement"]:::main N_ManualReleaseRequired_Node0 -- Yes --> N_ManualReleaseRequired_Node0_action N_ManualReleaseRequired_Node0_action --> E_ManualReleaseRequired S_ManualReleaseRequired --> N_ManualReleaseRequired_Node0 N_ManualReleaseRequired_Node1{"The system checks for manual
release requirements"}:::decision N_ManualReleaseRequired_Node1_action["If manual release conditions are
met, set manual release flag to true"]:::main N_ManualReleaseRequired_Node1 -- Yes --> N_ManualReleaseRequired_Node1_action N_ManualReleaseRequired_Node1_action --> E_ManualReleaseRequired N_ManualReleaseRequired_Node0 -- No --> N_ManualReleaseRequired_Node1 N_ManualReleaseRequired_Node2{"The cargo has a manual release flag
set WS-MRL-FOUND is true"}:::decision N_ManualReleaseRequired_Node2_action["The system clears the destination
index and processes Canadian
manifest coordination"]:::main N_ManualReleaseRequired_Node2 -- Yes --> N_ManualReleaseRequired_Node2_action N_ManualReleaseRequired_Node2_action --> E_ManualReleaseRequired N_ManualReleaseRequired_Node1 -- No --> N_ManualReleaseRequired_Node2 N_ManualReleaseRequired_Node2 -- No --> E_ManualReleaseRequired
File: GCX016.cbl
GIVEN:
All status flags have been combined and analyzed
WHEN:
Cargo conditions indicate manual intervention is required for release
THEN:
System identifies manual release requirement
File: GCX016.cbl
GIVEN:
Final cargo state analysis is complete
WHEN:
The system checks for manual release requirements
THEN:
If manual release conditions are met, set manual release flag to true
File: GCX016.cbl
GIVEN:
A cargo record is being processed for status transition
WHEN:
The cargo has a manual release flag set (WS-MRL-FOUND is true)
THEN:
- The system clears the destination index
- Processes canadian manifest coordination
β Consolidated Acceptance Criteria
- Cargo requires manual release processing → system sets manual release flag for the cargo
- The system processes manual release requirements → the manual release flag is set to true
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetManualReleaseFlag(["Start Step"])
E_SetManualReleaseFlag(["End Step"])
N_SetManualReleaseFlag_Node0{"Cargo requires manual release
processing"}:::decision N_SetManualReleaseFlag_Node0_action["System sets manual release flag for
the cargo"]:::main N_SetManualReleaseFlag_Node0 -- Yes --> N_SetManualReleaseFlag_Node0_action N_SetManualReleaseFlag_Node0_action --> E_SetManualReleaseFlag S_SetManualReleaseFlag --> N_SetManualReleaseFlag_Node0 N_SetManualReleaseFlag_Node1{"The system processes manual release
requirements"}:::decision N_SetManualReleaseFlag_Node1_action["The manual release flag is set to
true"]:::main N_SetManualReleaseFlag_Node1 -- Yes --> N_SetManualReleaseFlag_Node1_action N_SetManualReleaseFlag_Node1_action --> E_SetManualReleaseFlag N_SetManualReleaseFlag_Node0 -- No --> N_SetManualReleaseFlag_Node1 N_SetManualReleaseFlag_Node1 -- No --> E_SetManualReleaseFlag
processing"}:::decision N_SetManualReleaseFlag_Node0_action["System sets manual release flag for
the cargo"]:::main N_SetManualReleaseFlag_Node0 -- Yes --> N_SetManualReleaseFlag_Node0_action N_SetManualReleaseFlag_Node0_action --> E_SetManualReleaseFlag S_SetManualReleaseFlag --> N_SetManualReleaseFlag_Node0 N_SetManualReleaseFlag_Node1{"The system processes manual release
requirements"}:::decision N_SetManualReleaseFlag_Node1_action["The manual release flag is set to
true"]:::main N_SetManualReleaseFlag_Node1 -- Yes --> N_SetManualReleaseFlag_Node1_action N_SetManualReleaseFlag_Node1_action --> E_SetManualReleaseFlag N_SetManualReleaseFlag_Node0 -- No --> N_SetManualReleaseFlag_Node1 N_SetManualReleaseFlag_Node1 -- No --> E_SetManualReleaseFlag
File: GCX016.cbl
GIVEN:
Manual release requirement has been determined
WHEN:
Cargo requires manual release processing
THEN:
System sets manual release flag for the cargo
File: GCX016.cbl
GIVEN:
Manual release conditions have been identified
WHEN:
The system processes manual release requirements
THEN:
The manual release flag is set to true
β Consolidated Acceptance Criteria
- System detects cargo has been unreleased from previous release status → system identifies unrelease condition
- The system checks for unrelease conditions → if previous release status has been removed, unrelease condition is detected
- Unrelease conditions are detected in the cargo status → the system generates unrelease notification and restores the previous cargo status
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UnreleaseDetected(["Start Step"])
E_UnreleaseDetected(["End Step"])
N_UnreleaseDetected_Node0{"System detects cargo has been
unreleased from previous release
status"}:::decision N_UnreleaseDetected_Node0_action["System identifies unrelease
condition"]:::main N_UnreleaseDetected_Node0 -- Yes --> N_UnreleaseDetected_Node0_action N_UnreleaseDetected_Node0_action --> E_UnreleaseDetected S_UnreleaseDetected --> N_UnreleaseDetected_Node0 N_UnreleaseDetected_Node1{"The system checks for unrelease
conditions"}:::decision N_UnreleaseDetected_Node1_action["If previous release status has been
removed, unrelease condition is
detected"]:::main N_UnreleaseDetected_Node1 -- Yes --> N_UnreleaseDetected_Node1_action N_UnreleaseDetected_Node1_action --> E_UnreleaseDetected N_UnreleaseDetected_Node0 -- No --> N_UnreleaseDetected_Node1 N_UnreleaseDetected_Node2{"Unrelease conditions are detected
in the cargo status"}:::decision N_UnreleaseDetected_Node2_action["The system generates unrelease
notification and restores the
previous cargo status"]:::main N_UnreleaseDetected_Node2 -- Yes --> N_UnreleaseDetected_Node2_action N_UnreleaseDetected_Node2_action --> E_UnreleaseDetected N_UnreleaseDetected_Node1 -- No --> N_UnreleaseDetected_Node2 N_UnreleaseDetected_Node2 -- No --> E_UnreleaseDetected
unreleased from previous release
status"}:::decision N_UnreleaseDetected_Node0_action["System identifies unrelease
condition"]:::main N_UnreleaseDetected_Node0 -- Yes --> N_UnreleaseDetected_Node0_action N_UnreleaseDetected_Node0_action --> E_UnreleaseDetected S_UnreleaseDetected --> N_UnreleaseDetected_Node0 N_UnreleaseDetected_Node1{"The system checks for unrelease
conditions"}:::decision N_UnreleaseDetected_Node1_action["If previous release status has been
removed, unrelease condition is
detected"]:::main N_UnreleaseDetected_Node1 -- Yes --> N_UnreleaseDetected_Node1_action N_UnreleaseDetected_Node1_action --> E_UnreleaseDetected N_UnreleaseDetected_Node0 -- No --> N_UnreleaseDetected_Node1 N_UnreleaseDetected_Node2{"Unrelease conditions are detected
in the cargo status"}:::decision N_UnreleaseDetected_Node2_action["The system generates unrelease
notification and restores the
previous cargo status"]:::main N_UnreleaseDetected_Node2 -- Yes --> N_UnreleaseDetected_Node2_action N_UnreleaseDetected_Node2_action --> E_UnreleaseDetected N_UnreleaseDetected_Node1 -- No --> N_UnreleaseDetected_Node2 N_UnreleaseDetected_Node2 -- No --> E_UnreleaseDetected
File: GCX016.cbl
GIVEN:
Manual release processing has been evaluated
WHEN:
System detects cargo has been unreleased from previous release status
THEN:
System identifies unrelease condition
File: GCX016.cbl
GIVEN:
Cargo status transition analysis is complete
WHEN:
The system checks for unrelease conditions
THEN:
If previous release status has been removed, unrelease condition is detected
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
A cargo record has completed export status processing or is not in export status
WHEN:
Unrelease conditions are detected in the cargo status
THEN:
- The system generates unrelease notification
- Restores the previous cargo status
β Consolidated Acceptance Criteria
- Cargo release status needs to be reversed → system sets unrelease status flag for the cargo
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetUnreleaseStatus(["Start Step"])
E_SetUnreleaseStatus(["End Step"])
N_SetUnreleaseStatus_Node0{"Cargo release status needs to be
reversed"}:::decision N_SetUnreleaseStatus_Node0_action["System sets unrelease status flag
for the cargo"]:::main N_SetUnreleaseStatus_Node0 -- Yes --> N_SetUnreleaseStatus_Node0_action N_SetUnreleaseStatus_Node0_action --> E_SetUnreleaseStatus S_SetUnreleaseStatus --> N_SetUnreleaseStatus_Node0 N_SetUnreleaseStatus_Node0 -- No --> E_SetUnreleaseStatus
reversed"}:::decision N_SetUnreleaseStatus_Node0_action["System sets unrelease status flag
for the cargo"]:::main N_SetUnreleaseStatus_Node0 -- Yes --> N_SetUnreleaseStatus_Node0_action N_SetUnreleaseStatus_Node0_action --> E_SetUnreleaseStatus S_SetUnreleaseStatus --> N_SetUnreleaseStatus_Node0 N_SetUnreleaseStatus_Node0 -- No --> E_SetUnreleaseStatus
File: GCX016.cbl
GIVEN:
Unrelease condition has been detected
WHEN:
Cargo release status needs to be reversed
THEN:
System sets unrelease status flag for the cargo
β Consolidated Acceptance Criteria
- Conflicting or multiple status conditions exist for the same cargo → system applies business rule priority hierarchy to determine final status precedence
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ApplyBusinessRulesPriority(["Start Step"])
E_ApplyBusinessRulesPriority(["End Step"])
N_ApplyBusinessRulesPriority_Node0{"Conflicting or multiple status
conditions exist for the same cargo"}:::decision N_ApplyBusinessRulesPriority_Node0_action["System applies business rule
priority hierarchy to determine
final status precedence"]:::main N_ApplyBusinessRulesPriority_Node0 -- Yes --> N_ApplyBusinessRulesPriority_Node0_action N_ApplyBusinessRulesPriority_Node0_action --> E_ApplyBusinessRulesPriority S_ApplyBusinessRulesPriority --> N_ApplyBusinessRulesPriority_Node0 N_ApplyBusinessRulesPriority_Node0 -- No --> E_ApplyBusinessRulesPriority
conditions exist for the same cargo"}:::decision N_ApplyBusinessRulesPriority_Node0_action["System applies business rule
priority hierarchy to determine
final status precedence"]:::main N_ApplyBusinessRulesPriority_Node0 -- Yes --> N_ApplyBusinessRulesPriority_Node0_action N_ApplyBusinessRulesPriority_Node0_action --> E_ApplyBusinessRulesPriority S_ApplyBusinessRulesPriority --> N_ApplyBusinessRulesPriority_Node0 N_ApplyBusinessRulesPriority_Node0 -- No --> E_ApplyBusinessRulesPriority
File: GCX016.cbl
GIVEN:
Multiple status flags and conditions have been identified
WHEN:
Conflicting or multiple status conditions exist for the same cargo
THEN:
System applies business rule priority hierarchy to determine final status precedence
β Consolidated Acceptance Criteria
- Final status determination is required → system sets the definitive cargo status based on highest priority applicable condition
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetFinalCargoStatus(["Start Step"])
E_SetFinalCargoStatus(["End Step"])
N_SetFinalCargoStatus_Node0{"Final status determination is
required"}:::decision N_SetFinalCargoStatus_Node0_action["System sets the definitive cargo
status based on highest priority
applicable condition"]:::main N_SetFinalCargoStatus_Node0 -- Yes --> N_SetFinalCargoStatus_Node0_action N_SetFinalCargoStatus_Node0_action --> E_SetFinalCargoStatus S_SetFinalCargoStatus --> N_SetFinalCargoStatus_Node0 N_SetFinalCargoStatus_Node0 -- No --> E_SetFinalCargoStatus
required"}:::decision N_SetFinalCargoStatus_Node0_action["System sets the definitive cargo
status based on highest priority
applicable condition"]:::main N_SetFinalCargoStatus_Node0 -- Yes --> N_SetFinalCargoStatus_Node0_action N_SetFinalCargoStatus_Node0_action --> E_SetFinalCargoStatus S_SetFinalCargoStatus --> N_SetFinalCargoStatus_Node0 N_SetFinalCargoStatus_Node0 -- No --> E_SetFinalCargoStatus
File: GCX016.cbl
GIVEN:
All status conditions have been analyzed and business rule priorities applied
WHEN:
Final status determination is required
THEN:
System sets the definitive cargo status based on highest priority applicable condition
β Consolidated Acceptance Criteria
- The system processes the status array to determine hold conditions → all disposition codes in the array are evaluated and hold/release flags are set based on code analysis
- The system processes each status entry to identify hold codes and their associated locations → hold flags are populated based on the disposition codes found and their location indicators
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AnalyzeS09AStatusArray(["Start Step"])
E_AnalyzeS09AStatusArray(["End Step"])
N_AnalyzeS09AStatusArray_Node0{"The system processes the status
array to determine hold conditions"}:::decision N_AnalyzeS09AStatusArray_Node0_action["All disposition codes in the array
are evaluated and holdrelease flags
are set based on code analysis"]:::main N_AnalyzeS09AStatusArray_Node0 -- Yes --> N_AnalyzeS09AStatusArray_Node0_action N_AnalyzeS09AStatusArray_Node0_action --> E_AnalyzeS09AStatusArray S_AnalyzeS09AStatusArray --> N_AnalyzeS09AStatusArray_Node0 N_AnalyzeS09AStatusArray_Node1{"The system processes each status
entry to identify hold codes and
their associated locations"}:::decision N_AnalyzeS09AStatusArray_Node1_action["Hold flags are populated based on
the disposition codes found and
their location indicators"]:::main N_AnalyzeS09AStatusArray_Node1 -- Yes --> N_AnalyzeS09AStatusArray_Node1_action N_AnalyzeS09AStatusArray_Node1_action --> E_AnalyzeS09AStatusArray N_AnalyzeS09AStatusArray_Node0 -- No --> N_AnalyzeS09AStatusArray_Node1 N_AnalyzeS09AStatusArray_Node1 -- No --> E_AnalyzeS09AStatusArray
array to determine hold conditions"}:::decision N_AnalyzeS09AStatusArray_Node0_action["All disposition codes in the array
are evaluated and holdrelease flags
are set based on code analysis"]:::main N_AnalyzeS09AStatusArray_Node0 -- Yes --> N_AnalyzeS09AStatusArray_Node0_action N_AnalyzeS09AStatusArray_Node0_action --> E_AnalyzeS09AStatusArray S_AnalyzeS09AStatusArray --> N_AnalyzeS09AStatusArray_Node0 N_AnalyzeS09AStatusArray_Node1{"The system processes each status
entry to identify hold codes and
their associated locations"}:::decision N_AnalyzeS09AStatusArray_Node1_action["Hold flags are populated based on
the disposition codes found and
their location indicators"]:::main N_AnalyzeS09AStatusArray_Node1 -- Yes --> N_AnalyzeS09AStatusArray_Node1_action N_AnalyzeS09AStatusArray_Node1_action --> E_AnalyzeS09AStatusArray N_AnalyzeS09AStatusArray_Node0 -- No --> N_AnalyzeS09AStatusArray_Node1 N_AnalyzeS09AStatusArray_Node1 -- No --> E_AnalyzeS09AStatusArray
File: GCX016.cbl
GIVEN:
A cargo record exists with S09A status array containing disposition codes
WHEN:
The system processes the status array to determine hold conditions
THEN:
- All disposition codes in the array are evaluated
- Hold/release flags are set based on code analysis
File: GCX016.cbl
GIVEN:
A cargo record with S09A status array containing multiple disposition code entries
WHEN:
- The system processes each status entry to identify hold codes
- Their associated locations
THEN:
- Hold flags are populated based on the disposition codes found
- Their location indicators
β Consolidated Acceptance Criteria
- If the disposition code to determine hold location → the hold location is identified as either border hold or destination hold based on the specific disposition code
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IdentifyHoldLocationCode(["Start Step"])
E_IdentifyHoldLocationCode(["End Step"])
N_IdentifyHoldLocationCode_Node0{"The system evaluates the
disposition code to determine hold
location"}:::decision N_IdentifyHoldLocationCode_Node0_action["The hold location is identified as
either border hold or destination
hold based on the specific
disposition code"]:::main N_IdentifyHoldLocationCode_Node0 -- Yes --> N_IdentifyHoldLocationCode_Node0_action N_IdentifyHoldLocationCode_Node0_action --> E_IdentifyHoldLocationCode S_IdentifyHoldLocationCode --> N_IdentifyHoldLocationCode_Node0 N_IdentifyHoldLocationCode_Node0 -- No --> E_IdentifyHoldLocationCode
disposition code to determine hold
location"}:::decision N_IdentifyHoldLocationCode_Node0_action["The hold location is identified as
either border hold or destination
hold based on the specific
disposition code"]:::main N_IdentifyHoldLocationCode_Node0 -- Yes --> N_IdentifyHoldLocationCode_Node0_action N_IdentifyHoldLocationCode_Node0_action --> E_IdentifyHoldLocationCode S_IdentifyHoldLocationCode --> N_IdentifyHoldLocationCode_Node0 N_IdentifyHoldLocationCode_Node0 -- No --> E_IdentifyHoldLocationCode
File: GCX016.cbl
GIVEN:
A hold disposition code is found in the cargo status array
WHEN:
The system evaluates the disposition code to determine hold location
THEN:
The hold location is identified as either border hold or destination hold based on the specific disposition code
β Consolidated Acceptance Criteria
- The system processes multiple hold locations → both border hold and destination hold flags are set to true indicating cargo is held at multiple locations
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetCombinedHoldStatus(["Start Step"])
E_SetCombinedHoldStatus(["End Step"])
N_SetCombinedHoldStatus_Node0{"The system processes multiple hold
locations"}:::decision N_SetCombinedHoldStatus_Node0_action["Both border hold and destination
hold flags are set to true
indicating cargo is held at multiple
locations"]:::main N_SetCombinedHoldStatus_Node0 -- Yes --> N_SetCombinedHoldStatus_Node0_action N_SetCombinedHoldStatus_Node0_action --> E_SetCombinedHoldStatus S_SetCombinedHoldStatus --> N_SetCombinedHoldStatus_Node0 N_SetCombinedHoldStatus_Node0 -- No --> E_SetCombinedHoldStatus
locations"}:::decision N_SetCombinedHoldStatus_Node0_action["Both border hold and destination
hold flags are set to true
indicating cargo is held at multiple
locations"]:::main N_SetCombinedHoldStatus_Node0 -- Yes --> N_SetCombinedHoldStatus_Node0_action N_SetCombinedHoldStatus_Node0_action --> E_SetCombinedHoldStatus S_SetCombinedHoldStatus --> N_SetCombinedHoldStatus_Node0 N_SetCombinedHoldStatus_Node0 -- No --> E_SetCombinedHoldStatus
File: GCX016.cbl
GIVEN:
Both border hold and destination hold disposition codes are found in the status array
WHEN:
The system processes multiple hold locations
THEN:
- Both border hold
- Destination hold flags are set to true indicating cargo is held at multiple locations
β Consolidated Acceptance Criteria
- If the priority between conflicting hold and release codes → the release code overrides the hold code and the cargo hold status is cleared if release has higher priority
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_EvaluateReleasevsHoldPriority(["Start Step"])
E_EvaluateReleasevsHoldPriority(["End Step"])
N_EvaluateReleasevsHoldPriority_Node0{"The system evaluates the priority
between conflicting hold and release
codes"}:::decision N_EvaluateReleasevsHoldPriority_Node0_action["The release code overrides the hold
code and the cargo hold status is
cleared if release has higher
priority"]:::main N_EvaluateReleasevsHoldPriority_Node0 -- Yes --> N_EvaluateReleasevsHoldPriority_Node0_action N_EvaluateReleasevsHoldPriority_Node0_action --> E_EvaluateReleasevsHoldPriority S_EvaluateReleasevsHoldPriority --> N_EvaluateReleasevsHoldPriority_Node0 N_EvaluateReleasevsHoldPriority_Node0 -- No --> E_EvaluateReleasevsHoldPriority
between conflicting hold and release
codes"}:::decision N_EvaluateReleasevsHoldPriority_Node0_action["The release code overrides the hold
code and the cargo hold status is
cleared if release has higher
priority"]:::main N_EvaluateReleasevsHoldPriority_Node0 -- Yes --> N_EvaluateReleasevsHoldPriority_Node0_action N_EvaluateReleasevsHoldPriority_Node0_action --> E_EvaluateReleasevsHoldPriority S_EvaluateReleasevsHoldPriority --> N_EvaluateReleasevsHoldPriority_Node0 N_EvaluateReleasevsHoldPriority_Node0 -- No --> E_EvaluateReleasevsHoldPriority
File: GCX016.cbl
GIVEN:
Both hold and release disposition codes exist for the same cargo in the status array
WHEN:
- The system evaluates the priority between conflicting hold
- Release codes
THEN:
- The release code overrides the hold code
- The cargo hold status is cleared if release has higher priority
β Consolidated Acceptance Criteria
- The system processes the release override condition → all hold flags are set to false and the cargo hold status is cleared
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ClearHoldStatus(["Start Step"])
E_ClearHoldStatus(["End Step"])
N_ClearHoldStatus_Node0{"The system processes the release
override condition"}:::decision N_ClearHoldStatus_Node0_action["All hold flags are set to false and
the cargo hold status is cleared"]:::main N_ClearHoldStatus_Node0 -- Yes --> N_ClearHoldStatus_Node0_action N_ClearHoldStatus_Node0_action --> E_ClearHoldStatus S_ClearHoldStatus --> N_ClearHoldStatus_Node0 N_ClearHoldStatus_Node0 -- No --> E_ClearHoldStatus
override condition"}:::decision N_ClearHoldStatus_Node0_action["All hold flags are set to false and
the cargo hold status is cleared"]:::main N_ClearHoldStatus_Node0 -- Yes --> N_ClearHoldStatus_Node0_action N_ClearHoldStatus_Node0_action --> E_ClearHoldStatus S_ClearHoldStatus --> N_ClearHoldStatus_Node0 N_ClearHoldStatus_Node0 -- No --> E_ClearHoldStatus
File: GCX016.cbl
GIVEN:
A release disposition code has higher priority than an existing hold code
WHEN:
The system processes the release override condition
THEN:
- All hold flags are set to false
- The cargo hold status is cleared
β Consolidated Acceptance Criteria
- The system processes the hold priority condition → the existing hold flags remain unchanged and hold status is maintained
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MaintainHoldStatus(["Start Step"])
E_MaintainHoldStatus(["End Step"])
N_MaintainHoldStatus_Node0{"The system processes the hold
priority condition"}:::decision N_MaintainHoldStatus_Node0_action["The existing hold flags remain
unchanged and hold status is
maintained"]:::main N_MaintainHoldStatus_Node0 -- Yes --> N_MaintainHoldStatus_Node0_action N_MaintainHoldStatus_Node0_action --> E_MaintainHoldStatus S_MaintainHoldStatus --> N_MaintainHoldStatus_Node0 N_MaintainHoldStatus_Node0 -- No --> E_MaintainHoldStatus
priority condition"}:::decision N_MaintainHoldStatus_Node0_action["The existing hold flags remain
unchanged and hold status is
maintained"]:::main N_MaintainHoldStatus_Node0 -- Yes --> N_MaintainHoldStatus_Node0_action N_MaintainHoldStatus_Node0_action --> E_MaintainHoldStatus S_MaintainHoldStatus --> N_MaintainHoldStatus_Node0 N_MaintainHoldStatus_Node0 -- No --> E_MaintainHoldStatus
File: GCX016.cbl
GIVEN:
A hold disposition code has higher priority than a release code
WHEN:
The system processes the hold priority condition
THEN:
- The existing hold flags remain unchanged
- Hold status is maintained
β Consolidated Acceptance Criteria
- The system processes the FDA hold code → the FDA destination hold flag is set to true and FDA hold status is established at destination
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetFDADestinationHold(["Start Step"])
E_SetFDADestinationHold(["End Step"])
N_SetFDADestinationHold_Node0{"The system processes the FDA hold
code"}:::decision N_SetFDADestinationHold_Node0_action["The FDA destination hold flag is
set to true and FDA hold status is
established at destination"]:::main N_SetFDADestinationHold_Node0 -- Yes --> N_SetFDADestinationHold_Node0_action N_SetFDADestinationHold_Node0_action --> E_SetFDADestinationHold S_SetFDADestinationHold --> N_SetFDADestinationHold_Node0 N_SetFDADestinationHold_Node0 -- No --> E_SetFDADestinationHold
code"}:::decision N_SetFDADestinationHold_Node0_action["The FDA destination hold flag is
set to true and FDA hold status is
established at destination"]:::main N_SetFDADestinationHold_Node0 -- Yes --> N_SetFDADestinationHold_Node0_action N_SetFDADestinationHold_Node0_action --> E_SetFDADestinationHold S_SetFDADestinationHold --> N_SetFDADestinationHold_Node0 N_SetFDADestinationHold_Node0 -- No --> E_SetFDADestinationHold
File: GCX016.cbl
GIVEN:
An FDA-specific hold disposition code is found in the status array
WHEN:
The system processes the FDA hold code
THEN:
- The fda destination hold flag is set to true
- Fda hold status is established at destination
β Consolidated Acceptance Criteria
- The system determines the final hold status classification → the cargo is classified as either no hold, border hold only, destination hold only, or combined hold at both locations
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_DetermineFinalHoldLocation(["Start Step"])
E_DetermineFinalHoldLocation(["End Step"])
N_DetermineFinalHoldLocation_Node0{"The system determines the final
hold status classification"}:::decision N_DetermineFinalHoldLocation_Node0_action["The cargo is classified as either
no hold, border hold only,
destination hold only, or combined
hold at both locations"]:::main N_DetermineFinalHoldLocation_Node0 -- Yes --> N_DetermineFinalHoldLocation_Node0_action N_DetermineFinalHoldLocation_Node0_action --> E_DetermineFinalHoldLocation S_DetermineFinalHoldLocation --> N_DetermineFinalHoldLocation_Node0 N_DetermineFinalHoldLocation_Node0 -- No --> E_DetermineFinalHoldLocation
hold status classification"}:::decision N_DetermineFinalHoldLocation_Node0_action["The cargo is classified as either
no hold, border hold only,
destination hold only, or combined
hold at both locations"]:::main N_DetermineFinalHoldLocation_Node0 -- Yes --> N_DetermineFinalHoldLocation_Node0_action N_DetermineFinalHoldLocation_Node0_action --> E_DetermineFinalHoldLocation S_DetermineFinalHoldLocation --> N_DetermineFinalHoldLocation_Node0 N_DetermineFinalHoldLocation_Node0 -- No --> E_DetermineFinalHoldLocation
File: GCX016.cbl
GIVEN:
All disposition codes have been processed and hold/release flags have been evaluated
WHEN:
The system determines the final hold status classification
THEN:
The cargo is classified as either no hold, border hold only, destination hold only, or combined hold at both locations
β Consolidated Acceptance Criteria
- The disposition code contains quantity action instructions → the system initiates release quantity calculation process
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_StartReleaseQuantityCalculation(["Start Step"])
E_StartReleaseQuantityCalculation(["End Step"])
N_StartReleaseQuantityCalculation_Node0{"The disposition code contains
quantity action instructions"}:::decision N_StartReleaseQuantityCalculation_Node0_action["The system initiates release
quantity calculation process"]:::main N_StartReleaseQuantityCalculation_Node0 -- Yes --> N_StartReleaseQuantityCalculation_Node0_action N_StartReleaseQuantityCalculation_Node0_action --> E_StartReleaseQuantityCalculation S_StartReleaseQuantityCalculation --> N_StartReleaseQuantityCalculation_Node0 N_StartReleaseQuantityCalculation_Node0 -- No --> E_StartReleaseQuantityCalculation
quantity action instructions"}:::decision N_StartReleaseQuantityCalculation_Node0_action["The system initiates release
quantity calculation process"]:::main N_StartReleaseQuantityCalculation_Node0 -- Yes --> N_StartReleaseQuantityCalculation_Node0_action N_StartReleaseQuantityCalculation_Node0_action --> E_StartReleaseQuantityCalculation S_StartReleaseQuantityCalculation --> N_StartReleaseQuantityCalculation_Node0 N_StartReleaseQuantityCalculation_Node0 -- No --> E_StartReleaseQuantityCalculation
File: GCX016.cbl
GIVEN:
A cargo record exists with current release quantity and a disposition code is being processed
WHEN:
The disposition code contains quantity action instructions
THEN:
The system initiates release quantity calculation process
β Consolidated Acceptance Criteria
- Quantity action processing is required → the system retrieves the current release quantity from the cargo status array
- The system requires current release quantity information → the system retrieves the current release quantity from the cargo record for calculation purposes
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GetCurrentReleaseQuantity(["Start Step"])
E_GetCurrentReleaseQuantity(["End Step"])
N_GetCurrentReleaseQuantity_Node0{"Quantity action processing is
required"}:::decision N_GetCurrentReleaseQuantity_Node0_action["The system retrieves the current
release quantity from the cargo
status array"]:::main N_GetCurrentReleaseQuantity_Node0 -- Yes --> N_GetCurrentReleaseQuantity_Node0_action N_GetCurrentReleaseQuantity_Node0_action --> E_GetCurrentReleaseQuantity S_GetCurrentReleaseQuantity --> N_GetCurrentReleaseQuantity_Node0 N_GetCurrentReleaseQuantity_Node1{"The system requires current release
quantity information"}:::decision N_GetCurrentReleaseQuantity_Node1_action["The system retrieves the current
release quantity from the cargo
record for calculation purposes"]:::main N_GetCurrentReleaseQuantity_Node1 -- Yes --> N_GetCurrentReleaseQuantity_Node1_action N_GetCurrentReleaseQuantity_Node1_action --> E_GetCurrentReleaseQuantity N_GetCurrentReleaseQuantity_Node0 -- No --> N_GetCurrentReleaseQuantity_Node1 N_GetCurrentReleaseQuantity_Node1 -- No --> E_GetCurrentReleaseQuantity
required"}:::decision N_GetCurrentReleaseQuantity_Node0_action["The system retrieves the current
release quantity from the cargo
status array"]:::main N_GetCurrentReleaseQuantity_Node0 -- Yes --> N_GetCurrentReleaseQuantity_Node0_action N_GetCurrentReleaseQuantity_Node0_action --> E_GetCurrentReleaseQuantity S_GetCurrentReleaseQuantity --> N_GetCurrentReleaseQuantity_Node0 N_GetCurrentReleaseQuantity_Node1{"The system requires current release
quantity information"}:::decision N_GetCurrentReleaseQuantity_Node1_action["The system retrieves the current
release quantity from the cargo
record for calculation purposes"]:::main N_GetCurrentReleaseQuantity_Node1 -- Yes --> N_GetCurrentReleaseQuantity_Node1_action N_GetCurrentReleaseQuantity_Node1_action --> E_GetCurrentReleaseQuantity N_GetCurrentReleaseQuantity_Node0 -- No --> N_GetCurrentReleaseQuantity_Node1 N_GetCurrentReleaseQuantity_Node1 -- No --> E_GetCurrentReleaseQuantity
File: GCX016.cbl
GIVEN:
A cargo record with existing release quantity information
WHEN:
Quantity action processing is required
THEN:
The system retrieves the current release quantity from the cargo status array
File: GCX016.cbl
GIVEN:
A quantity action operation (ADD or SUBTRACT) needs to be processed
WHEN:
The system requires current release quantity information
THEN:
The system retrieves the current release quantity from the cargo record for calculation purposes
β Consolidated Acceptance Criteria
- The quantity action type is determined to be addition → the system adds the disposition code quantity to the current release quantity
- The system processes the quantity action for cargo release → the system adds the X4-05 quantity to the current cargo release quantity
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AddQuantitytoReleaseAmount(["Start Step"])
E_AddQuantitytoReleaseAmount(["End Step"])
N_AddQuantitytoReleaseAmount_Node0{"The quantity action type is
determined to be addition"}:::decision N_AddQuantitytoReleaseAmount_Node0_action["The system adds the disposition
code quantity to the current release
quantity"]:::main N_AddQuantitytoReleaseAmount_Node0 -- Yes --> N_AddQuantitytoReleaseAmount_Node0_action N_AddQuantitytoReleaseAmount_Node0_action --> E_AddQuantitytoReleaseAmount S_AddQuantitytoReleaseAmount --> N_AddQuantitytoReleaseAmount_Node0 N_AddQuantitytoReleaseAmount_Node1{"The system processes the quantity
action for cargo release"}:::decision N_AddQuantitytoReleaseAmount_Node1_action["The system adds the X4-05 quantity
to the current cargo release
quantity"]:::main N_AddQuantitytoReleaseAmount_Node1 -- Yes --> N_AddQuantitytoReleaseAmount_Node1_action N_AddQuantitytoReleaseAmount_Node1_action --> E_AddQuantitytoReleaseAmount N_AddQuantitytoReleaseAmount_Node0 -- No --> N_AddQuantitytoReleaseAmount_Node1 N_AddQuantitytoReleaseAmount_Node1 -- No --> E_AddQuantitytoReleaseAmount
determined to be addition"}:::decision N_AddQuantitytoReleaseAmount_Node0_action["The system adds the disposition
code quantity to the current release
quantity"]:::main N_AddQuantitytoReleaseAmount_Node0 -- Yes --> N_AddQuantitytoReleaseAmount_Node0_action N_AddQuantitytoReleaseAmount_Node0_action --> E_AddQuantitytoReleaseAmount S_AddQuantitytoReleaseAmount --> N_AddQuantitytoReleaseAmount_Node0 N_AddQuantitytoReleaseAmount_Node1{"The system processes the quantity
action for cargo release"}:::decision N_AddQuantitytoReleaseAmount_Node1_action["The system adds the X4-05 quantity
to the current cargo release
quantity"]:::main N_AddQuantitytoReleaseAmount_Node1 -- Yes --> N_AddQuantitytoReleaseAmount_Node1_action N_AddQuantitytoReleaseAmount_Node1_action --> E_AddQuantitytoReleaseAmount N_AddQuantitytoReleaseAmount_Node0 -- No --> N_AddQuantitytoReleaseAmount_Node1 N_AddQuantitytoReleaseAmount_Node1 -- No --> E_AddQuantitytoReleaseAmount
File: GCX016.cbl
GIVEN:
Current release quantity and disposition code quantity with ADD_QUANTITY action
WHEN:
The quantity action type is determined to be addition
THEN:
The system adds the disposition code quantity to the current release quantity
File: GCX016.cbl
GIVEN:
A disposition code with quantity action 'A' (ADD) and a quantity value from X4-05 EDI segment
WHEN:
The system processes the quantity action for cargo release
THEN:
The system adds the X4-05 quantity to the current cargo release quantity
β Consolidated Acceptance Criteria
- The quantity action type is determined to be subtraction → the system subtracts the disposition code quantity from the current release quantity
- The system processes the quantity action for cargo release → the system subtracts the X4-05 quantity from the current cargo release quantity
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SubtractQuantityfromReleaseAmount(["Start Step"])
E_SubtractQuantityfromReleaseAmount(["End Step"])
N_SubtractQuantityfromReleaseAmount_Node0{"The quantity action type is
determined to be subtraction"}:::decision N_SubtractQuantityfromReleaseAmount_Node0_action["The system subtracts the
disposition code quantity from the
current release quantity"]:::main N_SubtractQuantityfromReleaseAmount_Node0 -- Yes --> N_SubtractQuantityfromReleaseAmount_Node0_action N_SubtractQuantityfromReleaseAmount_Node0_action --> E_SubtractQuantityfromReleaseAmount S_SubtractQuantityfromReleaseAmount --> N_SubtractQuantityfromReleaseAmount_Node0 N_SubtractQuantityfromReleaseAmount_Node1{"The system processes the quantity
action for cargo release"}:::decision N_SubtractQuantityfromReleaseAmount_Node1_action["The system subtracts the X4-05
quantity from the current cargo
release quantity"]:::main N_SubtractQuantityfromReleaseAmount_Node1 -- Yes --> N_SubtractQuantityfromReleaseAmount_Node1_action N_SubtractQuantityfromReleaseAmount_Node1_action --> E_SubtractQuantityfromReleaseAmount N_SubtractQuantityfromReleaseAmount_Node0 -- No --> N_SubtractQuantityfromReleaseAmount_Node1 N_SubtractQuantityfromReleaseAmount_Node1 -- No --> E_SubtractQuantityfromReleaseAmount
determined to be subtraction"}:::decision N_SubtractQuantityfromReleaseAmount_Node0_action["The system subtracts the
disposition code quantity from the
current release quantity"]:::main N_SubtractQuantityfromReleaseAmount_Node0 -- Yes --> N_SubtractQuantityfromReleaseAmount_Node0_action N_SubtractQuantityfromReleaseAmount_Node0_action --> E_SubtractQuantityfromReleaseAmount S_SubtractQuantityfromReleaseAmount --> N_SubtractQuantityfromReleaseAmount_Node0 N_SubtractQuantityfromReleaseAmount_Node1{"The system processes the quantity
action for cargo release"}:::decision N_SubtractQuantityfromReleaseAmount_Node1_action["The system subtracts the X4-05
quantity from the current cargo
release quantity"]:::main N_SubtractQuantityfromReleaseAmount_Node1 -- Yes --> N_SubtractQuantityfromReleaseAmount_Node1_action N_SubtractQuantityfromReleaseAmount_Node1_action --> E_SubtractQuantityfromReleaseAmount N_SubtractQuantityfromReleaseAmount_Node0 -- No --> N_SubtractQuantityfromReleaseAmount_Node1 N_SubtractQuantityfromReleaseAmount_Node1 -- No --> E_SubtractQuantityfromReleaseAmount
File: GCX016.cbl
GIVEN:
Current release quantity and disposition code quantity with SUBTRACT_QUANTITY action
WHEN:
The quantity action type is determined to be subtraction
THEN:
The system subtracts the disposition code quantity from the current release quantity
File: GCX016.cbl
GIVEN:
A disposition code with quantity action 'S' (SUBTRACT) and a quantity value from X4-05 EDI segment
WHEN:
The system processes the quantity action for cargo release
THEN:
The system subtracts the X4-05 quantity from the current cargo release quantity
β Consolidated Acceptance Criteria
- The result of the subtraction would be negative → the system identifies that the result would be negative and requires correction
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ResultWouldBeNegative(["Start Step"])
E_ResultWouldBeNegative(["End Step"])
N_ResultWouldBeNegative_Node0{"The result of the subtraction would
be negative"}:::decision N_ResultWouldBeNegative_Node0_action["The system identifies that the
result would be negative and
requires correction"]:::main N_ResultWouldBeNegative_Node0 -- Yes --> N_ResultWouldBeNegative_Node0_action N_ResultWouldBeNegative_Node0_action --> E_ResultWouldBeNegative S_ResultWouldBeNegative --> N_ResultWouldBeNegative_Node0 N_ResultWouldBeNegative_Node0 -- No --> E_ResultWouldBeNegative
be negative"}:::decision N_ResultWouldBeNegative_Node0_action["The system identifies that the
result would be negative and
requires correction"]:::main N_ResultWouldBeNegative_Node0 -- Yes --> N_ResultWouldBeNegative_Node0_action N_ResultWouldBeNegative_Node0_action --> E_ResultWouldBeNegative S_ResultWouldBeNegative --> N_ResultWouldBeNegative_Node0 N_ResultWouldBeNegative_Node0 -- No --> E_ResultWouldBeNegative
File: GCX016.cbl
GIVEN:
A subtraction operation has been performed on release quantity
WHEN:
The result of the subtraction would be negative
THEN:
- The system identifies that the result would be negative
- Requires correction
β Consolidated Acceptance Criteria
- The release quantity has been calculated and updated → the system validates the release quantity against the total cargo quantity
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ValidateAgainstTotalCargoQuantity(["Start Step"])
E_ValidateAgainstTotalCargoQuantity(["End Step"])
N_ValidateAgainstTotalCargoQuantity_Node0{"The release quantity has been
calculated and updated"}:::decision N_ValidateAgainstTotalCargoQuantity_Node0_action["The system validates the release
quantity against the total cargo
quantity"]:::main N_ValidateAgainstTotalCargoQuantity_Node0 -- Yes --> N_ValidateAgainstTotalCargoQuantity_Node0_action N_ValidateAgainstTotalCargoQuantity_Node0_action --> E_ValidateAgainstTotalCargoQuantity S_ValidateAgainstTotalCargoQuantity --> N_ValidateAgainstTotalCargoQuantity_Node0 N_ValidateAgainstTotalCargoQuantity_Node0 -- No --> E_ValidateAgainstTotalCargoQuantity
calculated and updated"}:::decision N_ValidateAgainstTotalCargoQuantity_Node0_action["The system validates the release
quantity against the total cargo
quantity"]:::main N_ValidateAgainstTotalCargoQuantity_Node0 -- Yes --> N_ValidateAgainstTotalCargoQuantity_Node0_action N_ValidateAgainstTotalCargoQuantity_Node0_action --> E_ValidateAgainstTotalCargoQuantity S_ValidateAgainstTotalCargoQuantity --> N_ValidateAgainstTotalCargoQuantity_Node0 N_ValidateAgainstTotalCargoQuantity_Node0 -- No --> E_ValidateAgainstTotalCargoQuantity
File: GCX016.cbl
GIVEN:
An updated release quantity and total cargo quantity
WHEN:
- The release quantity has been calculated
- Updated
THEN:
The system validates the release quantity against the total cargo quantity
β Consolidated Acceptance Criteria
- The system detects excessive release quantity condition → the system caps the release quantity to equal the total cargo quantity
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CapReleaseQuantityatTotal(["Start Step"])
E_CapReleaseQuantityatTotal(["End Step"])
N_CapReleaseQuantityatTotal_Node0{"The system detects excessive
release quantity condition"}:::decision N_CapReleaseQuantityatTotal_Node0_action["The system caps the release
quantity to equal the total cargo
quantity"]:::main N_CapReleaseQuantityatTotal_Node0 -- Yes --> N_CapReleaseQuantityatTotal_Node0_action N_CapReleaseQuantityatTotal_Node0_action --> E_CapReleaseQuantityatTotal S_CapReleaseQuantityatTotal --> N_CapReleaseQuantityatTotal_Node0 N_CapReleaseQuantityatTotal_Node0 -- No --> E_CapReleaseQuantityatTotal
release quantity condition"}:::decision N_CapReleaseQuantityatTotal_Node0_action["The system caps the release
quantity to equal the total cargo
quantity"]:::main N_CapReleaseQuantityatTotal_Node0 -- Yes --> N_CapReleaseQuantityatTotal_Node0_action N_CapReleaseQuantityatTotal_Node0_action --> E_CapReleaseQuantityatTotal S_CapReleaseQuantityatTotal --> N_CapReleaseQuantityatTotal_Node0 N_CapReleaseQuantityatTotal_Node0 -- No --> E_CapReleaseQuantityatTotal
File: GCX016.cbl
GIVEN:
A release quantity that exceeds the total cargo quantity
WHEN:
The system detects excessive release quantity condition
THEN:
The system caps the release quantity to equal the total cargo quantity
β Consolidated Acceptance Criteria
- All quantity validations and calculations are complete → the system stores the updated release quantity in the cargo status array
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_StoreUpdatedReleaseQuantityinStatusArray(["Start Step"])
E_StoreUpdatedReleaseQuantityinStatusArray(["End Step"])
N_StoreUpdatedReleaseQuantityinStatusArray_Node0{"All quantity validations and
calculations are complete"}:::decision N_StoreUpdatedReleaseQuantityinStatusArray_Node0_action["The system stores the updated
release quantity in the cargo status
array"]:::main N_StoreUpdatedReleaseQuantityinStatusArray_Node0 -- Yes --> N_StoreUpdatedReleaseQuantityinStatusArray_Node0_action N_StoreUpdatedReleaseQuantityinStatusArray_Node0_action --> E_StoreUpdatedReleaseQuantityinStatusArray S_StoreUpdatedReleaseQuantityinStatusArray --> N_StoreUpdatedReleaseQuantityinStatusArray_Node0 N_StoreUpdatedReleaseQuantityinStatusArray_Node0 -- No --> E_StoreUpdatedReleaseQuantityinStatusArray
calculations are complete"}:::decision N_StoreUpdatedReleaseQuantityinStatusArray_Node0_action["The system stores the updated
release quantity in the cargo status
array"]:::main N_StoreUpdatedReleaseQuantityinStatusArray_Node0 -- Yes --> N_StoreUpdatedReleaseQuantityinStatusArray_Node0_action N_StoreUpdatedReleaseQuantityinStatusArray_Node0_action --> E_StoreUpdatedReleaseQuantityinStatusArray S_StoreUpdatedReleaseQuantityinStatusArray --> N_StoreUpdatedReleaseQuantityinStatusArray_Node0 N_StoreUpdatedReleaseQuantityinStatusArray_Node0 -- No --> E_StoreUpdatedReleaseQuantityinStatusArray
File: GCX016.cbl
GIVEN:
A final validated release quantity that complies with all business rules
WHEN:
- All quantity validations
- Calculations are complete
THEN:
The system stores the updated release quantity in the cargo status array
β Consolidated Acceptance Criteria
- The release quantity has been successfully stored in the status array → the system completes the release quantity calculation process
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_EndReleaseQuantityCalculation(["Start Step"])
E_EndReleaseQuantityCalculation(["End Step"])
N_EndReleaseQuantityCalculation_Node0{"The release quantity has been
successfully stored in the status
array"}:::decision N_EndReleaseQuantityCalculation_Node0_action["The system completes the release
quantity calculation process"]:::main N_EndReleaseQuantityCalculation_Node0 -- Yes --> N_EndReleaseQuantityCalculation_Node0_action N_EndReleaseQuantityCalculation_Node0_action --> E_EndReleaseQuantityCalculation S_EndReleaseQuantityCalculation --> N_EndReleaseQuantityCalculation_Node0 N_EndReleaseQuantityCalculation_Node0 -- No --> E_EndReleaseQuantityCalculation
successfully stored in the status
array"}:::decision N_EndReleaseQuantityCalculation_Node0_action["The system completes the release
quantity calculation process"]:::main N_EndReleaseQuantityCalculation_Node0 -- Yes --> N_EndReleaseQuantityCalculation_Node0_action N_EndReleaseQuantityCalculation_Node0_action --> E_EndReleaseQuantityCalculation S_EndReleaseQuantityCalculation --> N_EndReleaseQuantityCalculation_Node0 N_EndReleaseQuantityCalculation_Node0 -- No --> E_EndReleaseQuantityCalculation
File: GCX016.cbl
GIVEN:
All release quantity calculations and validations are complete
WHEN:
The release quantity has been successfully stored in the status array
THEN:
The system completes the release quantity calculation process
β Consolidated Acceptance Criteria
- The system analyzes the status array for border hold indicators → the system sets border hold flag to true if border hold disposition codes are found in the array
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_BorderHoldDetected(["Start Step"])
E_BorderHoldDetected(["End Step"])
N_BorderHoldDetected_Node0{"The system analyzes the status
array for border hold indicators"}:::decision N_BorderHoldDetected_Node0_action["The system sets border hold flag to
true if border hold disposition
codes are found in the array"]:::main N_BorderHoldDetected_Node0 -- Yes --> N_BorderHoldDetected_Node0_action N_BorderHoldDetected_Node0_action --> E_BorderHoldDetected S_BorderHoldDetected --> N_BorderHoldDetected_Node0 N_BorderHoldDetected_Node0 -- No --> E_BorderHoldDetected
array for border hold indicators"}:::decision N_BorderHoldDetected_Node0_action["The system sets border hold flag to
true if border hold disposition
codes are found in the array"]:::main N_BorderHoldDetected_Node0 -- Yes --> N_BorderHoldDetected_Node0_action N_BorderHoldDetected_Node0_action --> E_BorderHoldDetected S_BorderHoldDetected --> N_BorderHoldDetected_Node0 N_BorderHoldDetected_Node0 -- No --> E_BorderHoldDetected
File: GCX016.cbl
GIVEN:
A cargo record with S09A status array containing disposition codes
WHEN:
The system analyzes the status array for border hold indicators
THEN:
The system sets border hold flag to true if border hold disposition codes are found in the array
β Consolidated Acceptance Criteria
- The system analyzes the status array for destination hold indicators → the system sets destination hold flag to true if destination hold disposition codes are found in the array
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_DestinationHoldDetected(["Start Step"])
E_DestinationHoldDetected(["End Step"])
N_DestinationHoldDetected_Node0{"The system analyzes the status
array for destination hold
indicators"}:::decision N_DestinationHoldDetected_Node0_action["The system sets destination hold
flag to true if destination hold
disposition codes are found in the
array"]:::main N_DestinationHoldDetected_Node0 -- Yes --> N_DestinationHoldDetected_Node0_action N_DestinationHoldDetected_Node0_action --> E_DestinationHoldDetected S_DestinationHoldDetected --> N_DestinationHoldDetected_Node0 N_DestinationHoldDetected_Node0 -- No --> E_DestinationHoldDetected
array for destination hold
indicators"}:::decision N_DestinationHoldDetected_Node0_action["The system sets destination hold
flag to true if destination hold
disposition codes are found in the
array"]:::main N_DestinationHoldDetected_Node0 -- Yes --> N_DestinationHoldDetected_Node0_action N_DestinationHoldDetected_Node0_action --> E_DestinationHoldDetected S_DestinationHoldDetected --> N_DestinationHoldDetected_Node0 N_DestinationHoldDetected_Node0 -- No --> E_DestinationHoldDetected
File: GCX016.cbl
GIVEN:
A cargo record with S09A status array containing disposition codes
WHEN:
The system analyzes the status array for destination hold indicators
THEN:
The system sets destination hold flag to true if destination hold disposition codes are found in the array
β Consolidated Acceptance Criteria
- Both border hold flag and destination hold flag are set to true → the system sets hold location to 'Both' indicating cargo is held at both border and destination
- Both border hold flag and destination hold flag are set to true → the cargo hold status is set to indicate holds at both border and destination locations
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_BothBorderandDestinationHolds(["Start Step"])
E_BothBorderandDestinationHolds(["End Step"])
N_BothBorderandDestinationHolds_Node0{"Both border hold flag and
destination hold flag are set to
true"}:::decision N_BothBorderandDestinationHolds_Node0_action["The system sets hold location to
Both indicating cargo is held at
both border and destination"]:::main N_BothBorderandDestinationHolds_Node0 -- Yes --> N_BothBorderandDestinationHolds_Node0_action N_BothBorderandDestinationHolds_Node0_action --> E_BothBorderandDestinationHolds S_BothBorderandDestinationHolds --> N_BothBorderandDestinationHolds_Node0 N_BothBorderandDestinationHolds_Node1{"Both border hold flag and
destination hold flag are set to
true"}:::decision N_BothBorderandDestinationHolds_Node1_action["The cargo hold status is set to
indicate holds at both border and
destination locations"]:::main N_BothBorderandDestinationHolds_Node1 -- Yes --> N_BothBorderandDestinationHolds_Node1_action N_BothBorderandDestinationHolds_Node1_action --> E_BothBorderandDestinationHolds N_BothBorderandDestinationHolds_Node0 -- No --> N_BothBorderandDestinationHolds_Node1 N_BothBorderandDestinationHolds_Node1 -- No --> E_BothBorderandDestinationHolds
destination hold flag are set to
true"}:::decision N_BothBorderandDestinationHolds_Node0_action["The system sets hold location to
Both indicating cargo is held at
both border and destination"]:::main N_BothBorderandDestinationHolds_Node0 -- Yes --> N_BothBorderandDestinationHolds_Node0_action N_BothBorderandDestinationHolds_Node0_action --> E_BothBorderandDestinationHolds S_BothBorderandDestinationHolds --> N_BothBorderandDestinationHolds_Node0 N_BothBorderandDestinationHolds_Node1{"Both border hold flag and
destination hold flag are set to
true"}:::decision N_BothBorderandDestinationHolds_Node1_action["The cargo hold status is set to
indicate holds at both border and
destination locations"]:::main N_BothBorderandDestinationHolds_Node1 -- Yes --> N_BothBorderandDestinationHolds_Node1_action N_BothBorderandDestinationHolds_Node1_action --> E_BothBorderandDestinationHolds N_BothBorderandDestinationHolds_Node0 -- No --> N_BothBorderandDestinationHolds_Node1 N_BothBorderandDestinationHolds_Node1 -- No --> E_BothBorderandDestinationHolds
File: GCX016.cbl
GIVEN:
A cargo record with border hold flag and destination hold flag both evaluated
WHEN:
- Both border hold flag
- Destination hold flag are set to true
THEN:
- The system sets hold location to 'both' indicating cargo is held at both border
- Destination
File: GCX016.cbl
GIVEN:
A cargo record with border hold flag and destination hold flag both evaluated
WHEN:
- Both border hold flag
- Destination hold flag are set to true
THEN:
- The cargo hold status is set to indicate holds at both border
- Destination locations
β Consolidated Acceptance Criteria
- The border hold flag is true and destination hold flag is false → the system sets hold location to 'Border'
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetHoldLocationBorder(["Start Step"])
E_SetHoldLocationBorder(["End Step"])
N_SetHoldLocationBorder_Node0{"The border hold flag is true and
destination hold flag is false"}:::decision N_SetHoldLocationBorder_Node0_action["The system sets hold location to
Border"]:::main N_SetHoldLocationBorder_Node0 -- Yes --> N_SetHoldLocationBorder_Node0_action N_SetHoldLocationBorder_Node0_action --> E_SetHoldLocationBorder S_SetHoldLocationBorder --> N_SetHoldLocationBorder_Node0 N_SetHoldLocationBorder_Node0 -- No --> E_SetHoldLocationBorder
destination hold flag is false"}:::decision N_SetHoldLocationBorder_Node0_action["The system sets hold location to
Border"]:::main N_SetHoldLocationBorder_Node0 -- Yes --> N_SetHoldLocationBorder_Node0_action N_SetHoldLocationBorder_Node0_action --> E_SetHoldLocationBorder S_SetHoldLocationBorder --> N_SetHoldLocationBorder_Node0 N_SetHoldLocationBorder_Node0 -- No --> E_SetHoldLocationBorder
File: GCX016.cbl
GIVEN:
A cargo record with border hold detected and no destination hold
WHEN:
- The border hold flag is true
- Destination hold flag is false
THEN:
The system sets hold location to 'Border'
β Consolidated Acceptance Criteria
- The destination hold flag is true and border hold flag is false → the system sets hold location to 'Destination'
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetHoldLocationDestination(["Start Step"])
E_SetHoldLocationDestination(["End Step"])
N_SetHoldLocationDestination_Node0{"The destination hold flag is true
and border hold flag is false"}:::decision N_SetHoldLocationDestination_Node0_action["The system sets hold location to
Destination"]:::main N_SetHoldLocationDestination_Node0 -- Yes --> N_SetHoldLocationDestination_Node0_action N_SetHoldLocationDestination_Node0_action --> E_SetHoldLocationDestination S_SetHoldLocationDestination --> N_SetHoldLocationDestination_Node0 N_SetHoldLocationDestination_Node0 -- No --> E_SetHoldLocationDestination
and border hold flag is false"}:::decision N_SetHoldLocationDestination_Node0_action["The system sets hold location to
Destination"]:::main N_SetHoldLocationDestination_Node0 -- Yes --> N_SetHoldLocationDestination_Node0_action N_SetHoldLocationDestination_Node0_action --> E_SetHoldLocationDestination S_SetHoldLocationDestination --> N_SetHoldLocationDestination_Node0 N_SetHoldLocationDestination_Node0 -- No --> E_SetHoldLocationDestination
File: GCX016.cbl
GIVEN:
A cargo record with destination hold detected and no border hold
WHEN:
- The destination hold flag is true
- Border hold flag is false
THEN:
The system sets hold location to 'Destination'
β Consolidated Acceptance Criteria
- Both border hold flag and destination hold flag are true → the system sets hold location to 'Both'
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetHoldLocationBoth(["Start Step"])
E_SetHoldLocationBoth(["End Step"])
N_SetHoldLocationBoth_Node0{"Both border hold flag and
destination hold flag are true"}:::decision N_SetHoldLocationBoth_Node0_action["The system sets hold location to
Both"]:::main N_SetHoldLocationBoth_Node0 -- Yes --> N_SetHoldLocationBoth_Node0_action N_SetHoldLocationBoth_Node0_action --> E_SetHoldLocationBoth S_SetHoldLocationBoth --> N_SetHoldLocationBoth_Node0 N_SetHoldLocationBoth_Node0 -- No --> E_SetHoldLocationBoth
destination hold flag are true"}:::decision N_SetHoldLocationBoth_Node0_action["The system sets hold location to
Both"]:::main N_SetHoldLocationBoth_Node0 -- Yes --> N_SetHoldLocationBoth_Node0_action N_SetHoldLocationBoth_Node0_action --> E_SetHoldLocationBoth S_SetHoldLocationBoth --> N_SetHoldLocationBoth_Node0 N_SetHoldLocationBoth_Node0 -- No --> E_SetHoldLocationBoth
File: GCX016.cbl
GIVEN:
A cargo record with both border and destination holds detected
WHEN:
- Both border hold flag
- Destination hold flag are true
THEN:
The system sets hold location to 'Both'
β Consolidated Acceptance Criteria
- The system checks the cargo's current physical location → the system returns true if cargo is currently at border location, false otherwise
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CargoatBorder(["Start Step"])
E_CargoatBorder(["End Step"])
N_CargoatBorder_Node0{"The system checks the cargo s
current physical location"}:::decision N_CargoatBorder_Node0_action["The system returns true if cargo is
currently at border location, false
otherwise"]:::main N_CargoatBorder_Node0 -- Yes --> N_CargoatBorder_Node0_action N_CargoatBorder_Node0_action --> E_CargoatBorder S_CargoatBorder --> N_CargoatBorder_Node0 N_CargoatBorder_Node0 -- No --> E_CargoatBorder
current physical location"}:::decision N_CargoatBorder_Node0_action["The system returns true if cargo is
currently at border location, false
otherwise"]:::main N_CargoatBorder_Node0 -- Yes --> N_CargoatBorder_Node0_action N_CargoatBorder_Node0_action --> E_CargoatBorder S_CargoatBorder --> N_CargoatBorder_Node0 N_CargoatBorder_Node0 -- No --> E_CargoatBorder
File: GCX016.cbl
GIVEN:
A cargo record with current location information available
WHEN:
The system checks the cargo's current physical location
THEN:
The system returns true if cargo is currently at border location, false otherwise
β Consolidated Acceptance Criteria
- The cargo is physically at border and has hold conditions → the system assigns priority to border hold message processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_PriorityBorderHoldMessage(["Start Step"])
E_PriorityBorderHoldMessage(["End Step"])
N_PriorityBorderHoldMessage_Node0{"The cargo is physically at border
and has hold conditions"}:::decision N_PriorityBorderHoldMessage_Node0_action["The system assigns priority to
border hold message processing"]:::main N_PriorityBorderHoldMessage_Node0 -- Yes --> N_PriorityBorderHoldMessage_Node0_action N_PriorityBorderHoldMessage_Node0_action --> E_PriorityBorderHoldMessage S_PriorityBorderHoldMessage --> N_PriorityBorderHoldMessage_Node0 N_PriorityBorderHoldMessage_Node0 -- No --> E_PriorityBorderHoldMessage
and has hold conditions"}:::decision N_PriorityBorderHoldMessage_Node0_action["The system assigns priority to
border hold message processing"]:::main N_PriorityBorderHoldMessage_Node0 -- Yes --> N_PriorityBorderHoldMessage_Node0_action N_PriorityBorderHoldMessage_Node0_action --> E_PriorityBorderHoldMessage S_PriorityBorderHoldMessage --> N_PriorityBorderHoldMessage_Node0 N_PriorityBorderHoldMessage_Node0 -- No --> E_PriorityBorderHoldMessage
File: GCX016.cbl
GIVEN:
A cargo record with holds detected and cargo currently at border location
WHEN:
- The cargo is physically at border
- Has hold conditions
THEN:
The system assigns priority to border hold message processing
β Consolidated Acceptance Criteria
- The cargo is physically at destination and has hold conditions → the system assigns priority to destination hold message processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_PriorityDestinationHoldMessage(["Start Step"])
E_PriorityDestinationHoldMessage(["End Step"])
N_PriorityDestinationHoldMessage_Node0{"The cargo is physically at
destination and has hold conditions"}:::decision N_PriorityDestinationHoldMessage_Node0_action["The system assigns priority to
destination hold message processing"]:::main N_PriorityDestinationHoldMessage_Node0 -- Yes --> N_PriorityDestinationHoldMessage_Node0_action N_PriorityDestinationHoldMessage_Node0_action --> E_PriorityDestinationHoldMessage S_PriorityDestinationHoldMessage --> N_PriorityDestinationHoldMessage_Node0 N_PriorityDestinationHoldMessage_Node0 -- No --> E_PriorityDestinationHoldMessage
destination and has hold conditions"}:::decision N_PriorityDestinationHoldMessage_Node0_action["The system assigns priority to
destination hold message processing"]:::main N_PriorityDestinationHoldMessage_Node0 -- Yes --> N_PriorityDestinationHoldMessage_Node0_action N_PriorityDestinationHoldMessage_Node0_action --> E_PriorityDestinationHoldMessage S_PriorityDestinationHoldMessage --> N_PriorityDestinationHoldMessage_Node0 N_PriorityDestinationHoldMessage_Node0 -- No --> E_PriorityDestinationHoldMessage
File: GCX016.cbl
GIVEN:
A cargo record with holds detected and cargo currently at destination location
WHEN:
- The cargo is physically at destination
- Has hold conditions
THEN:
The system assigns priority to destination hold message processing
β Consolidated Acceptance Criteria
- The hold location equals 'Border' → the system routes the hold message to border processing workflow
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RoutetoBorderProcessing(["Start Step"])
E_RoutetoBorderProcessing(["End Step"])
N_RoutetoBorderProcessing_Node0{"The hold location equals Border"}:::decision
N_RoutetoBorderProcessing_Node0_action["The system routes the hold message
to border processing workflow"]:::main N_RoutetoBorderProcessing_Node0 -- Yes --> N_RoutetoBorderProcessing_Node0_action N_RoutetoBorderProcessing_Node0_action --> E_RoutetoBorderProcessing S_RoutetoBorderProcessing --> N_RoutetoBorderProcessing_Node0 N_RoutetoBorderProcessing_Node0 -- No --> E_RoutetoBorderProcessing
to border processing workflow"]:::main N_RoutetoBorderProcessing_Node0 -- Yes --> N_RoutetoBorderProcessing_Node0_action N_RoutetoBorderProcessing_Node0_action --> E_RoutetoBorderProcessing S_RoutetoBorderProcessing --> N_RoutetoBorderProcessing_Node0 N_RoutetoBorderProcessing_Node0 -- No --> E_RoutetoBorderProcessing
File: GCX016.cbl
GIVEN:
A cargo record with hold location determined as 'Border'
WHEN:
The hold location equals 'Border'
THEN:
The system routes the hold message to border processing workflow
β Consolidated Acceptance Criteria
- The hold location equals 'Destination' → the system routes the hold message to destination processing workflow
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RoutetoDestinationProcessing(["Start Step"])
E_RoutetoDestinationProcessing(["End Step"])
N_RoutetoDestinationProcessing_Node0{"The hold location equals
Destination"}:::decision N_RoutetoDestinationProcessing_Node0_action["The system routes the hold message
to destination processing workflow"]:::main N_RoutetoDestinationProcessing_Node0 -- Yes --> N_RoutetoDestinationProcessing_Node0_action N_RoutetoDestinationProcessing_Node0_action --> E_RoutetoDestinationProcessing S_RoutetoDestinationProcessing --> N_RoutetoDestinationProcessing_Node0 N_RoutetoDestinationProcessing_Node0 -- No --> E_RoutetoDestinationProcessing
Destination"}:::decision N_RoutetoDestinationProcessing_Node0_action["The system routes the hold message
to destination processing workflow"]:::main N_RoutetoDestinationProcessing_Node0 -- Yes --> N_RoutetoDestinationProcessing_Node0_action N_RoutetoDestinationProcessing_Node0_action --> E_RoutetoDestinationProcessing S_RoutetoDestinationProcessing --> N_RoutetoDestinationProcessing_Node0 N_RoutetoDestinationProcessing_Node0 -- No --> E_RoutetoDestinationProcessing
File: GCX016.cbl
GIVEN:
A cargo record with hold location determined as 'Destination'
WHEN:
The hold location equals 'Destination'
THEN:
The system routes the hold message to destination processing workflow
β Consolidated Acceptance Criteria
- The hold location equals 'Both' → the system routes the hold message to both border and destination processing workflows
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RoutetoBothBorderandDestination(["Start Step"])
E_RoutetoBothBorderandDestination(["End Step"])
N_RoutetoBothBorderandDestination_Node0{"The hold location equals Both"}:::decision
N_RoutetoBothBorderandDestination_Node0_action["The system routes the hold message
to both border and destination
processing workflows"]:::main N_RoutetoBothBorderandDestination_Node0 -- Yes --> N_RoutetoBothBorderandDestination_Node0_action N_RoutetoBothBorderandDestination_Node0_action --> E_RoutetoBothBorderandDestination S_RoutetoBothBorderandDestination --> N_RoutetoBothBorderandDestination_Node0 N_RoutetoBothBorderandDestination_Node0 -- No --> E_RoutetoBothBorderandDestination
to both border and destination
processing workflows"]:::main N_RoutetoBothBorderandDestination_Node0 -- Yes --> N_RoutetoBothBorderandDestination_Node0_action N_RoutetoBothBorderandDestination_Node0_action --> E_RoutetoBothBorderandDestination S_RoutetoBothBorderandDestination --> N_RoutetoBothBorderandDestination_Node0 N_RoutetoBothBorderandDestination_Node0 -- No --> E_RoutetoBothBorderandDestination
File: GCX016.cbl
GIVEN:
A cargo record with hold location determined as 'Both'
WHEN:
The hold location equals 'Both'
THEN:
- The system routes the hold message to both border
- Destination processing workflows
β Consolidated Acceptance Criteria
- The disposition code is not found in the system tables → the system sets error flag indicating code not found and prepares for error handling
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_DispositionCodeFoundinSystemTables(["Start Step"])
E_DispositionCodeFoundinSystemTables(["End Step"])
N_DispositionCodeFoundinSystemTables_Node0{"The disposition code is not found
in the system tables"}:::decision N_DispositionCodeFoundinSystemTables_Node0_action["The system sets error flag
indicating code not found and
prepares for error handling"]:::main N_DispositionCodeFoundinSystemTables_Node0 -- Yes --> N_DispositionCodeFoundinSystemTables_Node0_action N_DispositionCodeFoundinSystemTables_Node0_action --> E_DispositionCodeFoundinSystemTables S_DispositionCodeFoundinSystemTables --> N_DispositionCodeFoundinSystemTables_Node0 N_DispositionCodeFoundinSystemTables_Node0 -- No --> E_DispositionCodeFoundinSystemTables
in the system tables"}:::decision N_DispositionCodeFoundinSystemTables_Node0_action["The system sets error flag
indicating code not found and
prepares for error handling"]:::main N_DispositionCodeFoundinSystemTables_Node0 -- Yes --> N_DispositionCodeFoundinSystemTables_Node0_action N_DispositionCodeFoundinSystemTables_Node0_action --> E_DispositionCodeFoundinSystemTables S_DispositionCodeFoundinSystemTables --> N_DispositionCodeFoundinSystemTables_Node0 N_DispositionCodeFoundinSystemTables_Node0 -- No --> E_DispositionCodeFoundinSystemTables
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
A disposition code lookup has been performed against the DC table
WHEN:
The disposition code is not found in the system tables
THEN:
- The system sets error flag indicating code not found
- Prepares for error handling
β Consolidated Acceptance Criteria
- The system validates the disposition code successfully → the system retrieves counterpart code information and processing instructions for normal processing flow
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ProceedwithValidDispositionCode(["Start Step"])
E_ProceedwithValidDispositionCode(["End Step"])
N_ProceedwithValidDispositionCode_Node0{"The system validates the
disposition code successfully"}:::decision N_ProceedwithValidDispositionCode_Node0_action["The system retrieves counterpart
code information and processing
instructions for normal processing
flow"]:::main N_ProceedwithValidDispositionCode_Node0 -- Yes --> N_ProceedwithValidDispositionCode_Node0_action N_ProceedwithValidDispositionCode_Node0_action --> E_ProceedwithValidDispositionCode S_ProceedwithValidDispositionCode --> N_ProceedwithValidDispositionCode_Node0 N_ProceedwithValidDispositionCode_Node0 -- No --> E_ProceedwithValidDispositionCode
disposition code successfully"}:::decision N_ProceedwithValidDispositionCode_Node0_action["The system retrieves counterpart
code information and processing
instructions for normal processing
flow"]:::main N_ProceedwithValidDispositionCode_Node0 -- Yes --> N_ProceedwithValidDispositionCode_Node0_action N_ProceedwithValidDispositionCode_Node0_action --> E_ProceedwithValidDispositionCode S_ProceedwithValidDispositionCode --> N_ProceedwithValidDispositionCode_Node0 N_ProceedwithValidDispositionCode_Node0 -- No --> E_ProceedwithValidDispositionCode
File: GCX016.cbl
GIVEN:
A disposition code has been found in the DC table
WHEN:
The system validates the disposition code successfully
THEN:
- The system retrieves counterpart code information
- Processing instructions for normal processing flow
β Consolidated Acceptance Criteria
- The system needs to record the error for audit purposes → the system logs the disposition code error details including the invalid code and context information
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogDispositionCodeErrorDetails(["Start Step"])
E_LogDispositionCodeErrorDetails(["End Step"])
N_LogDispositionCodeErrorDetails_Node0{"The system needs to record the
error for audit purposes"}:::decision N_LogDispositionCodeErrorDetails_Node0_action["The system logs the disposition
code error details including the
invalid code and context information"]:::exclusion N_LogDispositionCodeErrorDetails_Node0 -- Yes -->|Alternative| N_LogDispositionCodeErrorDetails_Node0_action N_LogDispositionCodeErrorDetails_Node0_action --> E_LogDispositionCodeErrorDetails S_LogDispositionCodeErrorDetails --> N_LogDispositionCodeErrorDetails_Node0 N_LogDispositionCodeErrorDetails_Node0 -- No --> E_LogDispositionCodeErrorDetails
error for audit purposes"}:::decision N_LogDispositionCodeErrorDetails_Node0_action["The system logs the disposition
code error details including the
invalid code and context information"]:::exclusion N_LogDispositionCodeErrorDetails_Node0 -- Yes -->|Alternative| N_LogDispositionCodeErrorDetails_Node0_action N_LogDispositionCodeErrorDetails_Node0_action --> E_LogDispositionCodeErrorDetails S_LogDispositionCodeErrorDetails --> N_LogDispositionCodeErrorDetails_Node0 N_LogDispositionCodeErrorDetails_Node0 -- No --> E_LogDispositionCodeErrorDetails
File: GCX016.cbl
GIVEN:
An invalid disposition code error has been detected and message generated
WHEN:
The system needs to record the error for audit purposes
THEN:
- The system logs the disposition code error details including the invalid code
- Context information
β Consolidated Acceptance Criteria
- The system needs to continue with the overall processing workflow → the system continues processing while maintaining the error status for downstream handling
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ContinueProcessingwithErrorStatus(["Start Step"])
E_ContinueProcessingwithErrorStatus(["End Step"])
N_ContinueProcessingwithErrorStatus_Node0{"The system needs to continue with
the overall processing workflow"}:::decision N_ContinueProcessingwithErrorStatus_Node0_action["The system continues processing
while maintaining the error status
for downstream handling"]:::main N_ContinueProcessingwithErrorStatus_Node0 -- Yes --> N_ContinueProcessingwithErrorStatus_Node0_action N_ContinueProcessingwithErrorStatus_Node0_action --> E_ContinueProcessingwithErrorStatus S_ContinueProcessingwithErrorStatus --> N_ContinueProcessingwithErrorStatus_Node0 N_ContinueProcessingwithErrorStatus_Node0 -- No --> E_ContinueProcessingwithErrorStatus
the overall processing workflow"}:::decision N_ContinueProcessingwithErrorStatus_Node0_action["The system continues processing
while maintaining the error status
for downstream handling"]:::main N_ContinueProcessingwithErrorStatus_Node0 -- Yes --> N_ContinueProcessingwithErrorStatus_Node0_action N_ContinueProcessingwithErrorStatus_Node0_action --> E_ContinueProcessingwithErrorStatus S_ContinueProcessingwithErrorStatus --> N_ContinueProcessingwithErrorStatus_Node0 N_ContinueProcessingwithErrorStatus_Node0 -- No --> E_ContinueProcessingwithErrorStatus
File: GCX016.cbl
GIVEN:
A disposition code error has been logged and flagged
WHEN:
The system needs to continue with the overall processing workflow
THEN:
The system continues processing while maintaining the error status for downstream handling
β Consolidated Acceptance Criteria
- The array count is compared against the maximum allowed limit → if array count is less than maximum limit, proceed to space calculation, otherwise trigger overflow protection
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ArrayCountMaximumLimit(["Start Step"])
E_ArrayCountMaximumLimit(["End Step"])
N_ArrayCountMaximumLimit_Node0{"The array count is compared against
the maximum allowed limit"}:::decision N_ArrayCountMaximumLimit_Node0_action["If array count is less than maximum
limit, proceed to space calculation,
otherwise trigger overflow
protection"]:::main N_ArrayCountMaximumLimit_Node0 -- Yes --> N_ArrayCountMaximumLimit_Node0_action N_ArrayCountMaximumLimit_Node0_action --> E_ArrayCountMaximumLimit S_ArrayCountMaximumLimit --> N_ArrayCountMaximumLimit_Node0 N_ArrayCountMaximumLimit_Node0 -- No --> E_ArrayCountMaximumLimit
the maximum allowed limit"}:::decision N_ArrayCountMaximumLimit_Node0_action["If array count is less than maximum
limit, proceed to space calculation,
otherwise trigger overflow
protection"]:::main N_ArrayCountMaximumLimit_Node0 -- Yes --> N_ArrayCountMaximumLimit_Node0_action N_ArrayCountMaximumLimit_Node0_action --> E_ArrayCountMaximumLimit S_ArrayCountMaximumLimit --> N_ArrayCountMaximumLimit_Node0 N_ArrayCountMaximumLimit_Node0 -- No --> E_ArrayCountMaximumLimit
File: GCX016.cbl
GIVEN:
The current array count has been determined
WHEN:
The array count is compared against the maximum allowed limit
THEN:
If array count is less than maximum limit, proceed to space calculation, otherwise trigger overflow protection
β Consolidated Acceptance Criteria
- The system calculates available space for new disposition code entry → the remaining capacity is determined based on maximum limit minus current count
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CalculateAvailableSpace(["Start Step"])
E_CalculateAvailableSpace(["End Step"])
N_CalculateAvailableSpace_Node0{"The system calculates available
space for new disposition code entry"}:::decision N_CalculateAvailableSpace_Node0_action["The remaining capacity is
determined based on maximum limit
minus current count"]:::main N_CalculateAvailableSpace_Node0 -- Yes --> N_CalculateAvailableSpace_Node0_action N_CalculateAvailableSpace_Node0_action --> E_CalculateAvailableSpace S_CalculateAvailableSpace --> N_CalculateAvailableSpace_Node0 N_CalculateAvailableSpace_Node0 -- No --> E_CalculateAvailableSpace
space for new disposition code entry"}:::decision N_CalculateAvailableSpace_Node0_action["The remaining capacity is
determined based on maximum limit
minus current count"]:::main N_CalculateAvailableSpace_Node0 -- Yes --> N_CalculateAvailableSpace_Node0_action N_CalculateAvailableSpace_Node0_action --> E_CalculateAvailableSpace S_CalculateAvailableSpace --> N_CalculateAvailableSpace_Node0 N_CalculateAvailableSpace_Node0 -- No --> E_CalculateAvailableSpace
File: GCX016.cbl
GIVEN:
The array count is below maximum limit
WHEN:
The system calculates available space for new disposition code entry
THEN:
The remaining capacity is determined based on maximum limit minus current count
β Consolidated Acceptance Criteria
- The system checks if space is available for the new disposition code → if space is available, proceed to add code, otherwise trigger overflow warning
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SpaceAvailableforNewCode(["Start Step"])
E_SpaceAvailableforNewCode(["End Step"])
N_SpaceAvailableforNewCode_Node0{"The system checks if space is
available for the new disposition
code"}:::decision N_SpaceAvailableforNewCode_Node0_action["If space is available, proceed to
add code, otherwise trigger overflow
warning"]:::main N_SpaceAvailableforNewCode_Node0 -- Yes --> N_SpaceAvailableforNewCode_Node0_action N_SpaceAvailableforNewCode_Node0_action --> E_SpaceAvailableforNewCode S_SpaceAvailableforNewCode --> N_SpaceAvailableforNewCode_Node0 N_SpaceAvailableforNewCode_Node0 -- No --> E_SpaceAvailableforNewCode
available for the new disposition
code"}:::decision N_SpaceAvailableforNewCode_Node0_action["If space is available, proceed to
add code, otherwise trigger overflow
warning"]:::main N_SpaceAvailableforNewCode_Node0 -- Yes --> N_SpaceAvailableforNewCode_Node0_action N_SpaceAvailableforNewCode_Node0_action --> E_SpaceAvailableforNewCode S_SpaceAvailableforNewCode --> N_SpaceAvailableforNewCode_Node0 N_SpaceAvailableforNewCode_Node0 -- No --> E_SpaceAvailableforNewCode
File: GCX016.cbl
GIVEN:
Available space has been calculated
WHEN:
The system checks if space is available for the new disposition code
THEN:
If space is available, proceed to add code, otherwise trigger overflow warning
β Consolidated Acceptance Criteria
- An overflow condition is detected → a warning message is logged indicating array overflow condition
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogArrayOverflowWarning(["Start Step"])
E_LogArrayOverflowWarning(["End Step"])
N_LogArrayOverflowWarning_Node0{"An overflow condition is detected"}:::decision
N_LogArrayOverflowWarning_Node0_action["A warning message is logged
indicating array overflow condition"]:::main N_LogArrayOverflowWarning_Node0 -- Yes --> N_LogArrayOverflowWarning_Node0_action N_LogArrayOverflowWarning_Node0_action --> E_LogArrayOverflowWarning S_LogArrayOverflowWarning --> N_LogArrayOverflowWarning_Node0 N_LogArrayOverflowWarning_Node0 -- No --> E_LogArrayOverflowWarning
indicating array overflow condition"]:::main N_LogArrayOverflowWarning_Node0 -- Yes --> N_LogArrayOverflowWarning_Node0_action N_LogArrayOverflowWarning_Node0_action --> E_LogArrayOverflowWarning S_LogArrayOverflowWarning --> N_LogArrayOverflowWarning_Node0 N_LogArrayOverflowWarning_Node0 -- No --> E_LogArrayOverflowWarning
File: GCX016.cbl
GIVEN:
The status array has reached maximum capacity or insufficient space exists
WHEN:
An overflow condition is detected
THEN:
A warning message is logged indicating array overflow condition
β Consolidated Acceptance Criteria
- The system attempts to add a new disposition code → the addition operation is skipped to prevent array corruption
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SkipAddingNewCode(["Start Step"])
E_SkipAddingNewCode(["End Step"])
N_SkipAddingNewCode_Node0{"The system attempts to add a new
disposition code"}:::decision N_SkipAddingNewCode_Node0_action["The addition operation is skipped
to prevent array corruption"]:::main N_SkipAddingNewCode_Node0 -- Yes --> N_SkipAddingNewCode_Node0_action N_SkipAddingNewCode_Node0_action --> E_SkipAddingNewCode S_SkipAddingNewCode --> N_SkipAddingNewCode_Node0 N_SkipAddingNewCode_Node0 -- No --> E_SkipAddingNewCode
disposition code"}:::decision N_SkipAddingNewCode_Node0_action["The addition operation is skipped
to prevent array corruption"]:::main N_SkipAddingNewCode_Node0 -- Yes --> N_SkipAddingNewCode_Node0_action N_SkipAddingNewCode_Node0_action --> E_SkipAddingNewCode S_SkipAddingNewCode --> N_SkipAddingNewCode_Node0 N_SkipAddingNewCode_Node0 -- No --> E_SkipAddingNewCode
File: GCX016.cbl
GIVEN:
Array overflow warning has been logged
WHEN:
The system attempts to add a new disposition code
THEN:
The addition operation is skipped to prevent array corruption
β Consolidated Acceptance Criteria
- The overflow flag is set → the flag indicates that subsequent processing should handle overflow condition
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetOverflowFlag(["Start Step"])
E_SetOverflowFlag(["End Step"])
N_SetOverflowFlag_Node0{"The overflow flag is set"}:::decision
N_SetOverflowFlag_Node0_action["The flag indicates that subsequent
processing should handle overflow
condition"]:::main N_SetOverflowFlag_Node0 -- Yes --> N_SetOverflowFlag_Node0_action N_SetOverflowFlag_Node0_action --> E_SetOverflowFlag S_SetOverflowFlag --> N_SetOverflowFlag_Node0 N_SetOverflowFlag_Node0 -- No --> E_SetOverflowFlag
processing should handle overflow
condition"]:::main N_SetOverflowFlag_Node0 -- Yes --> N_SetOverflowFlag_Node0_action N_SetOverflowFlag_Node0_action --> E_SetOverflowFlag S_SetOverflowFlag --> N_SetOverflowFlag_Node0 N_SetOverflowFlag_Node0 -- No --> E_SetOverflowFlag
File: GCX016.cbl
GIVEN:
An error message has been generated for array overflow
WHEN:
The overflow flag is set
THEN:
The flag indicates that subsequent processing should handle overflow condition
β Consolidated Acceptance Criteria
- Processing continues → the system proceeds using only the existing disposition codes in the array
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ContinuewithExistingCodes(["Start Step"])
E_ContinuewithExistingCodes(["End Step"])
N_ContinuewithExistingCodes_Node0{"Processing continues"}:::decision
N_ContinuewithExistingCodes_Node0_action["The system proceeds using only the
existing disposition codes in the
array"]:::main N_ContinuewithExistingCodes_Node0 -- Yes --> N_ContinuewithExistingCodes_Node0_action N_ContinuewithExistingCodes_Node0_action --> E_ContinuewithExistingCodes S_ContinuewithExistingCodes --> N_ContinuewithExistingCodes_Node0 N_ContinuewithExistingCodes_Node0 -- No --> E_ContinuewithExistingCodes
existing disposition codes in the
array"]:::main N_ContinuewithExistingCodes_Node0 -- Yes --> N_ContinuewithExistingCodes_Node0_action N_ContinuewithExistingCodes_Node0_action --> E_ContinuewithExistingCodes S_ContinuewithExistingCodes --> N_ContinuewithExistingCodes_Node0 N_ContinuewithExistingCodes_Node0 -- No --> E_ContinuewithExistingCodes
File: GCX016.cbl
GIVEN:
Overflow flag has been set and new code addition was skipped
WHEN:
Processing continues
THEN:
The system proceeds using only the existing disposition codes in the array
β Consolidated Acceptance Criteria
- The system accesses the current status array S09A → if the status array is empty, skip duplicate detection and proceed directly to add the new code
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_StatusArrayEmpty(["Start Step"])
E_StatusArrayEmpty(["End Step"])
N_StatusArrayEmpty_Node0{"The system accesses the current
status array S09A"}:::decision N_StatusArrayEmpty_Node0_action["If the status array is empty, skip
duplicate detection and proceed
directly to add the new code"]:::main N_StatusArrayEmpty_Node0 -- Yes --> N_StatusArrayEmpty_Node0_action N_StatusArrayEmpty_Node0_action --> E_StatusArrayEmpty S_StatusArrayEmpty --> N_StatusArrayEmpty_Node0 N_StatusArrayEmpty_Node0 -- No --> E_StatusArrayEmpty
status array S09A"}:::decision N_StatusArrayEmpty_Node0_action["If the status array is empty, skip
duplicate detection and proceed
directly to add the new code"]:::main N_StatusArrayEmpty_Node0 -- Yes --> N_StatusArrayEmpty_Node0_action N_StatusArrayEmpty_Node0_action --> E_StatusArrayEmpty S_StatusArrayEmpty --> N_StatusArrayEmpty_Node0 N_StatusArrayEmpty_Node0 -- No --> E_StatusArrayEmpty
File: GCX016.cbl
GIVEN:
A new disposition code needs to be processed for cargo
WHEN:
The system accesses the current status array S09A
THEN:
- If the status array is empty, skip duplicate detection
- Proceed directly to add the new code
β Consolidated Acceptance Criteria
- The system has confirmed all matching criteria are met → skip processing of the disposition code to prevent duplicate entries and maintain data integrity
- The system attempts to add the same status information again → the system skips the processing to prevent duplicate entries and continues to the next disposition code
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SkipProcessingPreventDuplicate(["Start Step"])
E_SkipProcessingPreventDuplicate(["End Step"])
N_SkipProcessingPreventDuplicate_Node0{"The system has confirmed all
matching criteria are met"}:::decision N_SkipProcessingPreventDuplicate_Node0_action["Skip processing of the disposition
code to prevent duplicate entries
and maintain data integrity"]:::main N_SkipProcessingPreventDuplicate_Node0 -- Yes --> N_SkipProcessingPreventDuplicate_Node0_action N_SkipProcessingPreventDuplicate_Node0_action --> E_SkipProcessingPreventDuplicate S_SkipProcessingPreventDuplicate --> N_SkipProcessingPreventDuplicate_Node0 N_SkipProcessingPreventDuplicate_Node1{"The system attempts to add the same
status information again"}:::decision N_SkipProcessingPreventDuplicate_Node1_action["The system skips the processing to
prevent duplicate entries and
continues to the next disposition
code"]:::main N_SkipProcessingPreventDuplicate_Node1 -- Yes --> N_SkipProcessingPreventDuplicate_Node1_action N_SkipProcessingPreventDuplicate_Node1_action --> E_SkipProcessingPreventDuplicate N_SkipProcessingPreventDuplicate_Node0 -- No --> N_SkipProcessingPreventDuplicate_Node1 N_SkipProcessingPreventDuplicate_Node1 -- No --> E_SkipProcessingPreventDuplicate
matching criteria are met"}:::decision N_SkipProcessingPreventDuplicate_Node0_action["Skip processing of the disposition
code to prevent duplicate entries
and maintain data integrity"]:::main N_SkipProcessingPreventDuplicate_Node0 -- Yes --> N_SkipProcessingPreventDuplicate_Node0_action N_SkipProcessingPreventDuplicate_Node0_action --> E_SkipProcessingPreventDuplicate S_SkipProcessingPreventDuplicate --> N_SkipProcessingPreventDuplicate_Node0 N_SkipProcessingPreventDuplicate_Node1{"The system attempts to add the same
status information again"}:::decision N_SkipProcessingPreventDuplicate_Node1_action["The system skips the processing to
prevent duplicate entries and
continues to the next disposition
code"]:::main N_SkipProcessingPreventDuplicate_Node1 -- Yes --> N_SkipProcessingPreventDuplicate_Node1_action N_SkipProcessingPreventDuplicate_Node1_action --> E_SkipProcessingPreventDuplicate N_SkipProcessingPreventDuplicate_Node0 -- No --> N_SkipProcessingPreventDuplicate_Node1 N_SkipProcessingPreventDuplicate_Node1 -- No --> E_SkipProcessingPreventDuplicate
File: GCX016.cbl
GIVEN:
A disposition code that completely matches an existing array element (code, entry number, and quantity)
WHEN:
The system has confirmed all matching criteria are met
THEN:
- Skip processing of the disposition code to prevent duplicate entries
- Maintain data integrity
File: GCX016.cbl
GIVEN:
A status information code already exists in the S09A array
WHEN:
The system attempts to add the same status information again
THEN:
- The system skips the processing to prevent duplicate entries
- Continues to the next disposition code
β Consolidated Acceptance Criteria
- The system has completed duplicate detection without finding a complete match → add the new disposition code with its associated entry number and quantity to the status array
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AddNewCodetoArray(["Start Step"])
E_AddNewCodetoArray(["End Step"])
N_AddNewCodetoArray_Node0{"The system has completed duplicate
detection without finding a complete
match"}:::decision N_AddNewCodetoArray_Node0_action["Add the new disposition code with
its associated entry number and
quantity to the status array"]:::main N_AddNewCodetoArray_Node0 -- Yes --> N_AddNewCodetoArray_Node0_action N_AddNewCodetoArray_Node0_action --> E_AddNewCodetoArray S_AddNewCodetoArray --> N_AddNewCodetoArray_Node0 N_AddNewCodetoArray_Node0 -- No --> E_AddNewCodetoArray
detection without finding a complete
match"}:::decision N_AddNewCodetoArray_Node0_action["Add the new disposition code with
its associated entry number and
quantity to the status array"]:::main N_AddNewCodetoArray_Node0 -- Yes --> N_AddNewCodetoArray_Node0_action N_AddNewCodetoArray_Node0_action --> E_AddNewCodetoArray S_AddNewCodetoArray --> N_AddNewCodetoArray_Node0 N_AddNewCodetoArray_Node0 -- No --> E_AddNewCodetoArray
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
A disposition code that does not exist in the status array or does not completely match existing entries
WHEN:
The system has completed duplicate detection without finding a complete match
THEN:
- Add the new disposition code with its associated entry number
- Quantity to the status array
β Consolidated Acceptance Criteria
- The system validates the disposition code against the DC disposition code table → if the code is found and marked as ARL type, continue processing, otherwise skip auto release processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ValidateARLDispositionCode(["Start Step"])
E_ValidateARLDispositionCode(["End Step"])
N_ValidateARLDispositionCode_Node0{"The system validates the
disposition code against the DC
disposition code table"}:::decision N_ValidateARLDispositionCode_Node0_action["If the code is found and marked as
ARL type, continue processing,
otherwise skip auto release
processing"]:::main N_ValidateARLDispositionCode_Node0 -- Yes --> N_ValidateARLDispositionCode_Node0_action N_ValidateARLDispositionCode_Node0_action --> E_ValidateARLDispositionCode S_ValidateARLDispositionCode --> N_ValidateARLDispositionCode_Node0 N_ValidateARLDispositionCode_Node0 -- No --> E_ValidateARLDispositionCode
disposition code against the DC
disposition code table"}:::decision N_ValidateARLDispositionCode_Node0_action["If the code is found and marked as
ARL type, continue processing,
otherwise skip auto release
processing"]:::main N_ValidateARLDispositionCode_Node0 -- Yes --> N_ValidateARLDispositionCode_Node0_action N_ValidateARLDispositionCode_Node0_action --> E_ValidateARLDispositionCode S_ValidateARLDispositionCode --> N_ValidateARLDispositionCode_Node0 N_ValidateARLDispositionCode_Node0 -- No --> E_ValidateARLDispositionCode
File: GCX016.cbl
GIVEN:
An ARL auto release request is received with a disposition code
WHEN:
The system validates the disposition code against the DC disposition code table
THEN:
- If the code is found
- Marked as arl type, continue processing, otherwise skip auto release processing
β Consolidated Acceptance Criteria
- The system needs to access current cargo status information → retrieve the S09A status array from GCSUSS09 segments for the cargo record
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AccessCurrentCargoStatusArrayS09A(["Start Step"])
E_AccessCurrentCargoStatusArrayS09A(["End Step"])
N_AccessCurrentCargoStatusArrayS09A_Node0{"The system needs to access current
cargo status information"}:::decision N_AccessCurrentCargoStatusArrayS09A_Node0_action["Retrieve the S09A status array from
GCSUSS09 segments for the cargo
record"]:::main N_AccessCurrentCargoStatusArrayS09A_Node0 -- Yes --> N_AccessCurrentCargoStatusArrayS09A_Node0_action N_AccessCurrentCargoStatusArrayS09A_Node0_action --> E_AccessCurrentCargoStatusArrayS09A S_AccessCurrentCargoStatusArrayS09A --> N_AccessCurrentCargoStatusArrayS09A_Node0 N_AccessCurrentCargoStatusArrayS09A_Node0 -- No --> E_AccessCurrentCargoStatusArrayS09A
cargo status information"}:::decision N_AccessCurrentCargoStatusArrayS09A_Node0_action["Retrieve the S09A status array from
GCSUSS09 segments for the cargo
record"]:::main N_AccessCurrentCargoStatusArrayS09A_Node0 -- Yes --> N_AccessCurrentCargoStatusArrayS09A_Node0_action N_AccessCurrentCargoStatusArrayS09A_Node0_action --> E_AccessCurrentCargoStatusArrayS09A S_AccessCurrentCargoStatusArrayS09A --> N_AccessCurrentCargoStatusArrayS09A_Node0 N_AccessCurrentCargoStatusArrayS09A_Node0 -- No --> E_AccessCurrentCargoStatusArrayS09A
File: GCX016.cbl
GIVEN:
A valid ARL disposition code has been validated
WHEN:
The system needs to access current cargo status information
THEN:
Retrieve the S09A status array from GCSUSS09 segments for the cargo record
β Consolidated Acceptance Criteria
- The system prepares to re-evaluate the array for auto release → create a backup copy of the current array state to preserve original status information
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_PreserveCurrentArrayState(["Start Step"])
E_PreserveCurrentArrayState(["End Step"])
N_PreserveCurrentArrayState_Node0{"The system prepares to re-evaluate
the array for auto release"}:::decision N_PreserveCurrentArrayState_Node0_action["Create a backup copy of the current
array state to preserve original
status information"]:::main N_PreserveCurrentArrayState_Node0 -- Yes --> N_PreserveCurrentArrayState_Node0_action N_PreserveCurrentArrayState_Node0_action --> E_PreserveCurrentArrayState S_PreserveCurrentArrayState --> N_PreserveCurrentArrayState_Node0 N_PreserveCurrentArrayState_Node0 -- No --> E_PreserveCurrentArrayState
the array for auto release"}:::decision N_PreserveCurrentArrayState_Node0_action["Create a backup copy of the current
array state to preserve original
status information"]:::main N_PreserveCurrentArrayState_Node0 -- Yes --> N_PreserveCurrentArrayState_Node0_action N_PreserveCurrentArrayState_Node0_action --> E_PreserveCurrentArrayState S_PreserveCurrentArrayState --> N_PreserveCurrentArrayState_Node0 N_PreserveCurrentArrayState_Node0 -- No --> E_PreserveCurrentArrayState
File: GCX016.cbl
GIVEN:
The current cargo status array S09A has been accessed
WHEN:
The system prepares to re-evaluate the array for auto release
THEN:
Create a backup copy of the current array state to preserve original status information
β Consolidated Acceptance Criteria
- The system re-analyzes existing disposition codes in the S09A array → evaluate each existing disposition code for hold, release, and status conditions without inserting new ARL codes
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ReanalyzeExistingDispositionCodes(["Start Step"])
E_ReanalyzeExistingDispositionCodes(["End Step"])
N_ReanalyzeExistingDispositionCodes_Node0{"The system re-analyzes existing
disposition codes in the S09A array"}:::decision N_ReanalyzeExistingDispositionCodes_Node0_action["Evaluate each existing disposition
code for hold, release, and status
conditions without inserting new ARL
codes"]:::main N_ReanalyzeExistingDispositionCodes_Node0 -- Yes --> N_ReanalyzeExistingDispositionCodes_Node0_action N_ReanalyzeExistingDispositionCodes_Node0_action --> E_ReanalyzeExistingDispositionCodes S_ReanalyzeExistingDispositionCodes --> N_ReanalyzeExistingDispositionCodes_Node0 N_ReanalyzeExistingDispositionCodes_Node0 -- No --> E_ReanalyzeExistingDispositionCodes
disposition codes in the S09A array"}:::decision N_ReanalyzeExistingDispositionCodes_Node0_action["Evaluate each existing disposition
code for hold, release, and status
conditions without inserting new ARL
codes"]:::main N_ReanalyzeExistingDispositionCodes_Node0 -- Yes --> N_ReanalyzeExistingDispositionCodes_Node0_action N_ReanalyzeExistingDispositionCodes_Node0_action --> E_ReanalyzeExistingDispositionCodes S_ReanalyzeExistingDispositionCodes --> N_ReanalyzeExistingDispositionCodes_Node0 N_ReanalyzeExistingDispositionCodes_Node0 -- No --> E_ReanalyzeExistingDispositionCodes
File: GCX016.cbl
GIVEN:
The current array state has been preserved
WHEN:
The system re-analyzes existing disposition codes in the S09A array
THEN:
Evaluate each existing disposition code for hold, release, and status conditions without inserting new ARL codes
β Consolidated Acceptance Criteria
- If hold status at border location → if any border hold codes are found in the status array, mark cargo as held at border and prevent auto release
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_EvaluateHoldStatusatBorder(["Start Step"])
E_EvaluateHoldStatusatBorder(["End Step"])
N_EvaluateHoldStatusatBorder_Node0{"The system evaluates hold status at
border location"}:::decision N_EvaluateHoldStatusatBorder_Node0_action["If any border hold codes are found
in the status array, mark cargo as
held at border and prevent auto
release"]:::main N_EvaluateHoldStatusatBorder_Node0 -- Yes --> N_EvaluateHoldStatusatBorder_Node0_action N_EvaluateHoldStatusatBorder_Node0_action --> E_EvaluateHoldStatusatBorder S_EvaluateHoldStatusatBorder --> N_EvaluateHoldStatusatBorder_Node0 N_EvaluateHoldStatusatBorder_Node0 -- No --> E_EvaluateHoldStatusatBorder
border location"}:::decision N_EvaluateHoldStatusatBorder_Node0_action["If any border hold codes are found
in the status array, mark cargo as
held at border and prevent auto
release"]:::main N_EvaluateHoldStatusatBorder_Node0 -- Yes --> N_EvaluateHoldStatusatBorder_Node0_action N_EvaluateHoldStatusatBorder_Node0_action --> E_EvaluateHoldStatusatBorder S_EvaluateHoldStatusatBorder --> N_EvaluateHoldStatusatBorder_Node0 N_EvaluateHoldStatusatBorder_Node0 -- No --> E_EvaluateHoldStatusatBorder
File: GCX016.cbl
GIVEN:
Existing disposition codes have been re-analyzed
WHEN:
The system evaluates hold status at border location
THEN:
- If any border hold codes are found in the status array, mark cargo as held at border
- Prevent auto release
β Consolidated Acceptance Criteria
- If hold status at destination location → if any destination hold codes are found in the status array, mark cargo as held at destination and prevent auto release
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_EvaluateHoldStatusatDestination(["Start Step"])
E_EvaluateHoldStatusatDestination(["End Step"])
N_EvaluateHoldStatusatDestination_Node0{"The system evaluates hold status at
destination location"}:::decision N_EvaluateHoldStatusatDestination_Node0_action["If any destination hold codes are
found in the status array, mark
cargo as held at destination and
prevent auto release"]:::main N_EvaluateHoldStatusatDestination_Node0 -- Yes --> N_EvaluateHoldStatusatDestination_Node0_action N_EvaluateHoldStatusatDestination_Node0_action --> E_EvaluateHoldStatusatDestination S_EvaluateHoldStatusatDestination --> N_EvaluateHoldStatusatDestination_Node0 N_EvaluateHoldStatusatDestination_Node0 -- No --> E_EvaluateHoldStatusatDestination
destination location"}:::decision N_EvaluateHoldStatusatDestination_Node0_action["If any destination hold codes are
found in the status array, mark
cargo as held at destination and
prevent auto release"]:::main N_EvaluateHoldStatusatDestination_Node0 -- Yes --> N_EvaluateHoldStatusatDestination_Node0_action N_EvaluateHoldStatusatDestination_Node0_action --> E_EvaluateHoldStatusatDestination S_EvaluateHoldStatusatDestination --> N_EvaluateHoldStatusatDestination_Node0 N_EvaluateHoldStatusatDestination_Node0 -- No --> E_EvaluateHoldStatusatDestination
File: GCX016.cbl
GIVEN:
Border hold status has been evaluated
WHEN:
The system evaluates hold status at destination location
THEN:
- If any destination hold codes are found in the status array, mark cargo as held at destination
- Prevent auto release
β Consolidated Acceptance Criteria
- The system checks for PTT permit to transfer status → if cargo has valid PTT status and meets quantity thresholds, allow auto release consideration, otherwise maintain current status
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CheckPTTPermittoTransferStatus(["Start Step"])
E_CheckPTTPermittoTransferStatus(["End Step"])
N_CheckPTTPermittoTransferStatus_Node0{"The system checks for PTT permit to
transfer status"}:::decision N_CheckPTTPermittoTransferStatus_Node0_action["If cargo has valid PTT status and
meets quantity thresholds, allow
auto release consideration,
otherwise maintain current status"]:::main N_CheckPTTPermittoTransferStatus_Node0 -- Yes --> N_CheckPTTPermittoTransferStatus_Node0_action N_CheckPTTPermittoTransferStatus_Node0_action --> E_CheckPTTPermittoTransferStatus S_CheckPTTPermittoTransferStatus --> N_CheckPTTPermittoTransferStatus_Node0 N_CheckPTTPermittoTransferStatus_Node0 -- No --> E_CheckPTTPermittoTransferStatus
transfer status"}:::decision N_CheckPTTPermittoTransferStatus_Node0_action["If cargo has valid PTT status and
meets quantity thresholds, allow
auto release consideration,
otherwise maintain current status"]:::main N_CheckPTTPermittoTransferStatus_Node0 -- Yes --> N_CheckPTTPermittoTransferStatus_Node0_action N_CheckPTTPermittoTransferStatus_Node0_action --> E_CheckPTTPermittoTransferStatus S_CheckPTTPermittoTransferStatus --> N_CheckPTTPermittoTransferStatus_Node0 N_CheckPTTPermittoTransferStatus_Node0 -- No --> E_CheckPTTPermittoTransferStatus
File: GCX016.cbl
GIVEN:
Hold status at both border and destination has been evaluated
WHEN:
The system checks for PTT permit to transfer status
THEN:
- If cargo has valid ptt status
- Meets quantity thresholds, allow auto release consideration, otherwise maintain current status
β Consolidated Acceptance Criteria
- The system determines overall auto release eligibility → if no holds exist AND PTT status is valid AND quantities are appropriate, approve auto release, otherwise deny auto release
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AllReleaseConditionsMet(["Start Step"])
E_AllReleaseConditionsMet(["End Step"])
N_AllReleaseConditionsMet_Node0{"The system determines overall auto
release eligibility"}:::decision N_AllReleaseConditionsMet_Node0_action["If no holds exist AND PTT status is
valid AND quantities are
appropriate, approve auto release,
otherwise deny auto release"]:::main N_AllReleaseConditionsMet_Node0 -- Yes --> N_AllReleaseConditionsMet_Node0_action N_AllReleaseConditionsMet_Node0_action --> E_AllReleaseConditionsMet S_AllReleaseConditionsMet --> N_AllReleaseConditionsMet_Node0 N_AllReleaseConditionsMet_Node0 -- No --> E_AllReleaseConditionsMet
release eligibility"}:::decision N_AllReleaseConditionsMet_Node0_action["If no holds exist AND PTT status is
valid AND quantities are
appropriate, approve auto release,
otherwise deny auto release"]:::main N_AllReleaseConditionsMet_Node0 -- Yes --> N_AllReleaseConditionsMet_Node0_action N_AllReleaseConditionsMet_Node0_action --> E_AllReleaseConditionsMet S_AllReleaseConditionsMet --> N_AllReleaseConditionsMet_Node0 N_AllReleaseConditionsMet_Node0 -- No --> E_AllReleaseConditionsMet
File: GCX016.cbl
GIVEN:
All individual release conditions have been evaluated (holds, PTT, quantities)
WHEN:
The system determines overall auto release eligibility
THEN:
- If no holds exist
- Ptt status is valid
- Quantities are appropriate, approve auto release, otherwise deny auto release
β Consolidated Acceptance Criteria
- The system triggers release processing → initiate standard cargo release procedures including broker notifications and system updates
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_TriggerReleaseProcessing(["Start Step"])
E_TriggerReleaseProcessing(["End Step"])
N_TriggerReleaseProcessing_Node0{"The system triggers release
processing"}:::decision N_TriggerReleaseProcessing_Node0_action["Initiate standard cargo release
procedures including broker
notifications and system updates"]:::main N_TriggerReleaseProcessing_Node0 -- Yes --> N_TriggerReleaseProcessing_Node0_action N_TriggerReleaseProcessing_Node0_action --> E_TriggerReleaseProcessing S_TriggerReleaseProcessing --> N_TriggerReleaseProcessing_Node0 N_TriggerReleaseProcessing_Node0 -- No --> E_TriggerReleaseProcessing
processing"}:::decision N_TriggerReleaseProcessing_Node0_action["Initiate standard cargo release
procedures including broker
notifications and system updates"]:::main N_TriggerReleaseProcessing_Node0 -- Yes --> N_TriggerReleaseProcessing_Node0_action N_TriggerReleaseProcessing_Node0_action --> E_TriggerReleaseProcessing S_TriggerReleaseProcessing --> N_TriggerReleaseProcessing_Node0 N_TriggerReleaseProcessing_Node0 -- No --> E_TriggerReleaseProcessing
File: GCX016.cbl
GIVEN:
Cargo status flags have been updated for auto release
WHEN:
The system triggers release processing
THEN:
- Initiate standard cargo release procedures including broker notifications
- System updates
β Consolidated Acceptance Criteria
- The system logs the auto release decision → record auto release approval with timestamp, conditions evaluated, and decision rationale in system logs
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogAutoReleaseDecision(["Start Step"])
E_LogAutoReleaseDecision(["End Step"])
N_LogAutoReleaseDecision_Node0{"The system logs the auto release
decision"}:::decision N_LogAutoReleaseDecision_Node0_action["Record auto release approval with
timestamp, conditions evaluated, and
decision rationale in system logs"]:::main N_LogAutoReleaseDecision_Node0 -- Yes --> N_LogAutoReleaseDecision_Node0_action N_LogAutoReleaseDecision_Node0_action --> E_LogAutoReleaseDecision S_LogAutoReleaseDecision --> N_LogAutoReleaseDecision_Node0 N_LogAutoReleaseDecision_Node0 -- No --> E_LogAutoReleaseDecision
decision"}:::decision N_LogAutoReleaseDecision_Node0_action["Record auto release approval with
timestamp, conditions evaluated, and
decision rationale in system logs"]:::main N_LogAutoReleaseDecision_Node0 -- Yes --> N_LogAutoReleaseDecision_Node0_action N_LogAutoReleaseDecision_Node0_action --> E_LogAutoReleaseDecision S_LogAutoReleaseDecision --> N_LogAutoReleaseDecision_Node0 N_LogAutoReleaseDecision_Node0 -- No --> E_LogAutoReleaseDecision
File: GCX016.cbl
GIVEN:
Release processing has been triggered
WHEN:
The system logs the auto release decision
THEN:
Record auto release approval with timestamp, conditions evaluated, and decision rationale in system logs
β Consolidated Acceptance Criteria
- The system maintains current hold status → preserve existing hold conditions and status array without modification, preventing auto release
- The system updates hold status flags → maintain the current hold status without modification
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MaintainCurrentHoldStatus(["Start Step"])
E_MaintainCurrentHoldStatus(["End Step"])
N_MaintainCurrentHoldStatus_Node0{"The system maintains current hold
status"}:::decision N_MaintainCurrentHoldStatus_Node0_action["Preserve existing hold conditions
and status array without
modification, preventing auto
release"]:::main N_MaintainCurrentHoldStatus_Node0 -- Yes --> N_MaintainCurrentHoldStatus_Node0_action N_MaintainCurrentHoldStatus_Node0_action --> E_MaintainCurrentHoldStatus S_MaintainCurrentHoldStatus --> N_MaintainCurrentHoldStatus_Node0 N_MaintainCurrentHoldStatus_Node1{"The system updates hold status
flags"}:::decision N_MaintainCurrentHoldStatus_Node1_action["Maintain the current hold status
without modification"]:::main N_MaintainCurrentHoldStatus_Node1 -- Yes --> N_MaintainCurrentHoldStatus_Node1_action N_MaintainCurrentHoldStatus_Node1_action --> E_MaintainCurrentHoldStatus N_MaintainCurrentHoldStatus_Node0 -- No --> N_MaintainCurrentHoldStatus_Node1 N_MaintainCurrentHoldStatus_Node1 -- No --> E_MaintainCurrentHoldStatus
status"}:::decision N_MaintainCurrentHoldStatus_Node0_action["Preserve existing hold conditions
and status array without
modification, preventing auto
release"]:::main N_MaintainCurrentHoldStatus_Node0 -- Yes --> N_MaintainCurrentHoldStatus_Node0_action N_MaintainCurrentHoldStatus_Node0_action --> E_MaintainCurrentHoldStatus S_MaintainCurrentHoldStatus --> N_MaintainCurrentHoldStatus_Node0 N_MaintainCurrentHoldStatus_Node1{"The system updates hold status
flags"}:::decision N_MaintainCurrentHoldStatus_Node1_action["Maintain the current hold status
without modification"]:::main N_MaintainCurrentHoldStatus_Node1 -- Yes --> N_MaintainCurrentHoldStatus_Node1_action N_MaintainCurrentHoldStatus_Node1_action --> E_MaintainCurrentHoldStatus N_MaintainCurrentHoldStatus_Node0 -- No --> N_MaintainCurrentHoldStatus_Node1 N_MaintainCurrentHoldStatus_Node1 -- No --> E_MaintainCurrentHoldStatus
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
Auto release conditions are not met (holds exist, PTT invalid, or quantity issues)
WHEN:
The system maintains current hold status
THEN:
- Preserve existing hold conditions
- Status array without modification, preventing auto release
File: GCX016.cbl
GIVEN:
A cargo record with no release status and existing hold conditions
WHEN:
The system updates hold status flags
THEN:
Maintain the current hold status without modification
β Consolidated Acceptance Criteria
- The system logs the auto release denial → record auto release denial with timestamp, specific blocking conditions (holds, PTT, quantities), and maintain audit trail
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogAutoReleaseDenial(["Start Step"])
E_LogAutoReleaseDenial(["End Step"])
N_LogAutoReleaseDenial_Node0{"The system logs the auto release
denial"}:::decision N_LogAutoReleaseDenial_Node0_action["Record auto release denial with
timestamp, specific blocking
conditions holds, PTT, quantities,
and maintain audit trail"]:::main N_LogAutoReleaseDenial_Node0 -- Yes --> N_LogAutoReleaseDenial_Node0_action N_LogAutoReleaseDenial_Node0_action --> E_LogAutoReleaseDenial S_LogAutoReleaseDenial --> N_LogAutoReleaseDenial_Node0 N_LogAutoReleaseDenial_Node0 -- No --> E_LogAutoReleaseDenial
denial"}:::decision N_LogAutoReleaseDenial_Node0_action["Record auto release denial with
timestamp, specific blocking
conditions holds, PTT, quantities,
and maintain audit trail"]:::main N_LogAutoReleaseDenial_Node0 -- Yes --> N_LogAutoReleaseDenial_Node0_action N_LogAutoReleaseDenial_Node0_action --> E_LogAutoReleaseDenial S_LogAutoReleaseDenial --> N_LogAutoReleaseDenial_Node0 N_LogAutoReleaseDenial_Node0 -- No --> E_LogAutoReleaseDenial
File: GCX016.cbl
GIVEN:
Auto release has been denied due to unmet conditions
WHEN:
The system logs the auto release denial
THEN:
Record auto release denial with timestamp, specific blocking conditions (holds, PTT, quantities), and maintain audit trail
β Consolidated Acceptance Criteria
- The system validates the disposition code against the DC table → if MRL code is found and valid, processing continues; otherwise, an error is generated
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ValidateMRLDispositionCode(["Start Step"])
E_ValidateMRLDispositionCode(["End Step"])
N_ValidateMRLDispositionCode_Node0{"The system validates the
disposition code against the DC
table"}:::decision N_ValidateMRLDispositionCode_Node0_action["If MRL code is found and valid,
processing continues otherwise, an
error is generated"]:::main N_ValidateMRLDispositionCode_Node0 -- Yes --> N_ValidateMRLDispositionCode_Node0_action N_ValidateMRLDispositionCode_Node0_action --> E_ValidateMRLDispositionCode S_ValidateMRLDispositionCode --> N_ValidateMRLDispositionCode_Node0 N_ValidateMRLDispositionCode_Node0 -- No --> E_ValidateMRLDispositionCode
disposition code against the DC
table"}:::decision N_ValidateMRLDispositionCode_Node0_action["If MRL code is found and valid,
processing continues otherwise, an
error is generated"]:::main N_ValidateMRLDispositionCode_Node0 -- Yes --> N_ValidateMRLDispositionCode_Node0_action N_ValidateMRLDispositionCode_Node0_action --> E_ValidateMRLDispositionCode S_ValidateMRLDispositionCode --> N_ValidateMRLDispositionCode_Node0 N_ValidateMRLDispositionCode_Node0 -- No --> E_ValidateMRLDispositionCode
File: GCX016.cbl
GIVEN:
A CPRS cargo manual release request with MRL disposition code
WHEN:
The system validates the disposition code against the DC table
THEN:
- If mrl code is found
- Valid, processing continues; otherwise, an error is generated
β Consolidated Acceptance Criteria
- The system processes the Canadian manifest coordination → a specialized log message is generated to GCX105 system documenting the cross-border cargo release
- The system processes the Canadian manifest coordination → generate Canadian log message with cargo release details including car ID, waybill, and release information
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GenerateCanadianLogMessage(["Start Step"])
E_GenerateCanadianLogMessage(["End Step"])
N_GenerateCanadianLogMessage_Node0{"The system processes the Canadian
manifest coordination"}:::decision N_GenerateCanadianLogMessage_Node0_action["A specialized log message is
generated to GCX105 system
documenting the cross-border cargo
release"]:::main N_GenerateCanadianLogMessage_Node0 -- Yes --> N_GenerateCanadianLogMessage_Node0_action N_GenerateCanadianLogMessage_Node0_action --> E_GenerateCanadianLogMessage S_GenerateCanadianLogMessage --> N_GenerateCanadianLogMessage_Node0 N_GenerateCanadianLogMessage_Node1{"The system processes the Canadian
manifest coordination"}:::decision N_GenerateCanadianLogMessage_Node1_action["Generate Canadian log message with
cargo release details including car
ID, waybill, and release information"]:::main N_GenerateCanadianLogMessage_Node1 -- Yes --> N_GenerateCanadianLogMessage_Node1_action N_GenerateCanadianLogMessage_Node1_action --> E_GenerateCanadianLogMessage N_GenerateCanadianLogMessage_Node0 -- No --> N_GenerateCanadianLogMessage_Node1 N_GenerateCanadianLogMessage_Node1 -- No --> E_GenerateCanadianLogMessage
manifest coordination"}:::decision N_GenerateCanadianLogMessage_Node0_action["A specialized log message is
generated to GCX105 system
documenting the cross-border cargo
release"]:::main N_GenerateCanadianLogMessage_Node0 -- Yes --> N_GenerateCanadianLogMessage_Node0_action N_GenerateCanadianLogMessage_Node0_action --> E_GenerateCanadianLogMessage S_GenerateCanadianLogMessage --> N_GenerateCanadianLogMessage_Node0 N_GenerateCanadianLogMessage_Node1{"The system processes the Canadian
manifest coordination"}:::decision N_GenerateCanadianLogMessage_Node1_action["Generate Canadian log message with
cargo release details including car
ID, waybill, and release information"]:::main N_GenerateCanadianLogMessage_Node1 -- Yes --> N_GenerateCanadianLogMessage_Node1_action N_GenerateCanadianLogMessage_Node1_action --> E_GenerateCanadianLogMessage N_GenerateCanadianLogMessage_Node0 -- No --> N_GenerateCanadianLogMessage_Node1 N_GenerateCanadianLogMessage_Node1 -- No --> E_GenerateCanadianLogMessage
File: GCX016.cbl
GIVEN:
Released CPRS cargo with corresponding Canadian manifest records found
WHEN:
The system processes the Canadian manifest coordination
THEN:
A specialized log message is generated to GCX105 system documenting the cross-border cargo release
File: GCX016.cbl
GIVEN:
Canadian manifest match is found for the released cargo
WHEN:
The system processes the Canadian manifest coordination
THEN:
Generate Canadian log message with cargo release details including car ID, waybill, and release information
β Consolidated Acceptance Criteria
- The system updates the status array → the status array is updated to reflect the release without adding MRL as a new disposition code entry
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UpdateStatusArraywithoutNewCode(["Start Step"])
E_UpdateStatusArraywithoutNewCode(["End Step"])
N_UpdateStatusArraywithoutNewCode_Node0{"The system updates the status array"}:::decision
N_UpdateStatusArraywithoutNewCode_Node0_action["The status array is updated to
reflect the release without adding
MRL as a new disposition code entry"]:::main N_UpdateStatusArraywithoutNewCode_Node0 -- Yes --> N_UpdateStatusArraywithoutNewCode_Node0_action N_UpdateStatusArraywithoutNewCode_Node0_action --> E_UpdateStatusArraywithoutNewCode S_UpdateStatusArraywithoutNewCode --> N_UpdateStatusArraywithoutNewCode_Node0 N_UpdateStatusArraywithoutNewCode_Node0 -- No --> E_UpdateStatusArraywithoutNewCode
reflect the release without adding
MRL as a new disposition code entry"]:::main N_UpdateStatusArraywithoutNewCode_Node0 -- Yes --> N_UpdateStatusArraywithoutNewCode_Node0_action N_UpdateStatusArraywithoutNewCode_Node0_action --> E_UpdateStatusArraywithoutNewCode S_UpdateStatusArraywithoutNewCode --> N_UpdateStatusArraywithoutNewCode_Node0 N_UpdateStatusArraywithoutNewCode_Node0 -- No --> E_UpdateStatusArraywithoutNewCode
File: GCX016.cbl
GIVEN:
CPRS cargo processed for manual release with or without Canadian manifest coordination
WHEN:
The system updates the status array
THEN:
The status array is updated to reflect the release without adding MRL as a new disposition code entry
β Consolidated Acceptance Criteria
- The system generates audit logs → special CPRS manual release logging is created with cargo details, release information, and processing timestamps
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GenerateSpecialCPRSLogging(["Start Step"])
E_GenerateSpecialCPRSLogging(["End Step"])
N_GenerateSpecialCPRSLogging_Node0{"The system generates audit logs"}:::decision
N_GenerateSpecialCPRSLogging_Node0_action["Special CPRS manual release logging
is created with cargo details,
release information, and processing
timestamps"]:::main N_GenerateSpecialCPRSLogging_Node0 -- Yes --> N_GenerateSpecialCPRSLogging_Node0_action N_GenerateSpecialCPRSLogging_Node0_action --> E_GenerateSpecialCPRSLogging S_GenerateSpecialCPRSLogging --> N_GenerateSpecialCPRSLogging_Node0 N_GenerateSpecialCPRSLogging_Node0 -- No --> E_GenerateSpecialCPRSLogging
is created with cargo details,
release information, and processing
timestamps"]:::main N_GenerateSpecialCPRSLogging_Node0 -- Yes --> N_GenerateSpecialCPRSLogging_Node0_action N_GenerateSpecialCPRSLogging_Node0_action --> E_GenerateSpecialCPRSLogging S_GenerateSpecialCPRSLogging --> N_GenerateSpecialCPRSLogging_Node0 N_GenerateSpecialCPRSLogging_Node0 -- No --> E_GenerateSpecialCPRSLogging
File: GCX016.cbl
GIVEN:
CPRS cargo with updated status array after manual release processing
WHEN:
The system generates audit logs
THEN:
Special CPRS manual release logging is created with cargo details, release information, and processing timestamps
β Consolidated Acceptance Criteria
- The system sends notifications → manual release notifications are sent to configured recipients with cargo details and release confirmation
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SendManualReleaseNotification(["Start Step"])
E_SendManualReleaseNotification(["End Step"])
N_SendManualReleaseNotification_Node0{"The system sends notifications"}:::decision
N_SendManualReleaseNotification_Node0_action["Manual release notifications are
sent to configured recipients with
cargo details and release
confirmation"]:::main N_SendManualReleaseNotification_Node0 -- Yes --> N_SendManualReleaseNotification_Node0_action N_SendManualReleaseNotification_Node0_action --> E_SendManualReleaseNotification S_SendManualReleaseNotification --> N_SendManualReleaseNotification_Node0 N_SendManualReleaseNotification_Node0 -- No --> E_SendManualReleaseNotification
sent to configured recipients with
cargo details and release
confirmation"]:::main N_SendManualReleaseNotification_Node0 -- Yes --> N_SendManualReleaseNotification_Node0_action N_SendManualReleaseNotification_Node0_action --> E_SendManualReleaseNotification S_SendManualReleaseNotification --> N_SendManualReleaseNotification_Node0 N_SendManualReleaseNotification_Node0 -- No --> E_SendManualReleaseNotification
File: GCX016.cbl
GIVEN:
CPRS cargo with completed manual release processing and audit logging
WHEN:
The system sends notifications
THEN:
- Manual release notifications are sent to configured recipients with cargo details
- Release confirmation
β Consolidated Acceptance Criteria
- The system validates the cargo type → the request is rejected with an error message indicating manual release is only available for CPRS cargo
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RejectNotCPRSCargo(["Start Step"])
E_RejectNotCPRSCargo(["End Step"])
N_RejectNotCPRSCargo_Node0{"The system validates the cargo type"}:::decision
N_RejectNotCPRSCargo_Node0_action["The request is rejected with an
error message indicating manual
release is only available for CPRS
cargo"]:::exclusion N_RejectNotCPRSCargo_Node0 -- Yes -->|Alternative| N_RejectNotCPRSCargo_Node0_action N_RejectNotCPRSCargo_Node0_action --> E_RejectNotCPRSCargo S_RejectNotCPRSCargo --> N_RejectNotCPRSCargo_Node0 N_RejectNotCPRSCargo_Node0 -- No --> E_RejectNotCPRSCargo
error message indicating manual
release is only available for CPRS
cargo"]:::exclusion N_RejectNotCPRSCargo_Node0 -- Yes -->|Alternative| N_RejectNotCPRSCargo_Node0_action N_RejectNotCPRSCargo_Node0_action --> E_RejectNotCPRSCargo S_RejectNotCPRSCargo --> N_RejectNotCPRSCargo_Node0 N_RejectNotCPRSCargo_Node0 -- No --> E_RejectNotCPRSCargo
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
A manual release request for cargo that is not CPRS type
WHEN:
The system validates the cargo type
THEN:
The request is rejected with an error message indicating manual release is only available for CPRS cargo
β Consolidated Acceptance Criteria
- If the hold status → the request is rejected with an error message indicating cargo must be held to qualify for manual release
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RejectCargoNotHeld(["Start Step"])
E_RejectCargoNotHeld(["End Step"])
N_RejectCargoNotHeld_Node0{"The system evaluates the hold
status"}:::decision N_RejectCargoNotHeld_Node0_action["The request is rejected with an
error message indicating cargo must
be held to qualify for manual
release"]:::exclusion N_RejectCargoNotHeld_Node0 -- Yes -->|Alternative| N_RejectCargoNotHeld_Node0_action N_RejectCargoNotHeld_Node0_action --> E_RejectCargoNotHeld S_RejectCargoNotHeld --> N_RejectCargoNotHeld_Node0 N_RejectCargoNotHeld_Node0 -- No --> E_RejectCargoNotHeld
status"}:::decision N_RejectCargoNotHeld_Node0_action["The request is rejected with an
error message indicating cargo must
be held to qualify for manual
release"]:::exclusion N_RejectCargoNotHeld_Node0 -- Yes -->|Alternative| N_RejectCargoNotHeld_Node0_action N_RejectCargoNotHeld_Node0_action --> E_RejectCargoNotHeld S_RejectCargoNotHeld --> N_RejectCargoNotHeld_Node0 N_RejectCargoNotHeld_Node0 -- No --> E_RejectCargoNotHeld
File: GCX016.cbl
GIVEN:
CPRS cargo with valid MRL disposition code but no active hold status
WHEN:
The system evaluates the hold status
THEN:
The request is rejected with an error message indicating cargo must be held to qualify for manual release
β Consolidated Acceptance Criteria
- The system searches for matching codes in the array AND finds a code that matches the entry number AND matches the quantity AND matches the status information → the system marks the code for removal AND removes the code from the array AND compacts the remaining array elements
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RemoveCodefromArray(["Start Step"])
E_RemoveCodefromArray(["End Step"])
N_RemoveCodefromArray_Node0{"The system searches for matching
codes in the array AND finds a code
that matches the entry number AND
matches the quantity AND matches the
status information"}:::decision N_RemoveCodefromArray_Node0_action["The system marks the code for
removal AND removes the code from
the array AND compacts the remaining
array elements"]:::main N_RemoveCodefromArray_Node0 -- Yes --> N_RemoveCodefromArray_Node0_action N_RemoveCodefromArray_Node0_action --> E_RemoveCodefromArray S_RemoveCodefromArray --> N_RemoveCodefromArray_Node0 N_RemoveCodefromArray_Node0 -- No --> E_RemoveCodefromArray
codes in the array AND finds a code
that matches the entry number AND
matches the quantity AND matches the
status information"}:::decision N_RemoveCodefromArray_Node0_action["The system marks the code for
removal AND removes the code from
the array AND compacts the remaining
array elements"]:::main N_RemoveCodefromArray_Node0 -- Yes --> N_RemoveCodefromArray_Node0_action N_RemoveCodefromArray_Node0_action --> E_RemoveCodefromArray S_RemoveCodefromArray --> N_RemoveCodefromArray_Node0 N_RemoveCodefromArray_Node0 -- No --> E_RemoveCodefromArray
File: GCX016.cbl
GIVEN:
A disposition code needs to be removed from the cargo status array AND the S09A status array contains existing disposition codes
WHEN:
- The system searches for matching codes in the array
- Finds a code that matches the entry number
- Matches the quantity
- Matches the status information
THEN:
- The system marks the code for removal
- Removes the code from the array
- Compacts the remaining array elements
β Consolidated Acceptance Criteria
- The system needs to identify related codes for removal → the system identifies counterpart codes based on the disposition code table configuration
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IdentifyCounterpartCodes(["Start Step"])
E_IdentifyCounterpartCodes(["End Step"])
N_IdentifyCounterpartCodes_Node0{"The system needs to identify
related codes for removal"}:::decision N_IdentifyCounterpartCodes_Node0_action["The system identifies counterpart
codes based on the disposition code
table configuration"]:::main N_IdentifyCounterpartCodes_Node0 -- Yes --> N_IdentifyCounterpartCodes_Node0_action N_IdentifyCounterpartCodes_Node0_action --> E_IdentifyCounterpartCodes S_IdentifyCounterpartCodes --> N_IdentifyCounterpartCodes_Node0 N_IdentifyCounterpartCodes_Node0 -- No --> E_IdentifyCounterpartCodes
related codes for removal"}:::decision N_IdentifyCounterpartCodes_Node0_action["The system identifies counterpart
codes based on the disposition code
table configuration"]:::main N_IdentifyCounterpartCodes_Node0 -- Yes --> N_IdentifyCounterpartCodes_Node0_action N_IdentifyCounterpartCodes_Node0_action --> E_IdentifyCounterpartCodes S_IdentifyCounterpartCodes --> N_IdentifyCounterpartCodes_Node0 N_IdentifyCounterpartCodes_Node0 -- No --> E_IdentifyCounterpartCodes
File: GCX016.cbl
GIVEN:
A disposition code removal request is being processed
WHEN:
The system needs to identify related codes for removal
THEN:
The system identifies counterpart codes based on the disposition code table configuration
β Consolidated Acceptance Criteria
- The system compares the entry numbers → the code is eligible for removal IF the entry numbers match OR no entry number validation is required
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MatchesEntryNumber(["Start Step"])
E_MatchesEntryNumber(["End Step"])
N_MatchesEntryNumber_Node0{"The system compares the entry
numbers"}:::decision N_MatchesEntryNumber_Node0_action["The code is eligible for removal IF
the entry numbers match OR no entry
number validation is required"]:::main N_MatchesEntryNumber_Node0 -- Yes --> N_MatchesEntryNumber_Node0_action N_MatchesEntryNumber_Node0_action --> E_MatchesEntryNumber S_MatchesEntryNumber --> N_MatchesEntryNumber_Node0 N_MatchesEntryNumber_Node0 -- No --> E_MatchesEntryNumber
numbers"}:::decision N_MatchesEntryNumber_Node0_action["The code is eligible for removal IF
the entry numbers match OR no entry
number validation is required"]:::main N_MatchesEntryNumber_Node0 -- Yes --> N_MatchesEntryNumber_Node0_action N_MatchesEntryNumber_Node0_action --> E_MatchesEntryNumber S_MatchesEntryNumber --> N_MatchesEntryNumber_Node0 N_MatchesEntryNumber_Node0 -- No --> E_MatchesEntryNumber
File: GCX016.cbl
GIVEN:
A disposition code is found in the status array AND entry number matching is required
WHEN:
The system compares the entry numbers
THEN:
The code is eligible for removal IF the entry numbers match OR no entry number validation is required
β Consolidated Acceptance Criteria
- The system compares the quantities → the code is eligible for removal IF the quantities match OR no quantity validation is required
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MatchesQuantity(["Start Step"])
E_MatchesQuantity(["End Step"])
N_MatchesQuantity_Node0{"The system compares the quantities"}:::decision
N_MatchesQuantity_Node0_action["The code is eligible for removal IF
the quantities match OR no quantity
validation is required"]:::main N_MatchesQuantity_Node0 -- Yes --> N_MatchesQuantity_Node0_action N_MatchesQuantity_Node0_action --> E_MatchesQuantity S_MatchesQuantity --> N_MatchesQuantity_Node0 N_MatchesQuantity_Node0 -- No --> E_MatchesQuantity
the quantities match OR no quantity
validation is required"]:::main N_MatchesQuantity_Node0 -- Yes --> N_MatchesQuantity_Node0_action N_MatchesQuantity_Node0_action --> E_MatchesQuantity S_MatchesQuantity --> N_MatchesQuantity_Node0 N_MatchesQuantity_Node0 -- No --> E_MatchesQuantity
File: GCX016.cbl
GIVEN:
A disposition code is found in the status array AND quantity matching is required
WHEN:
The system compares the quantities
THEN:
The code is eligible for removal IF the quantities match OR no quantity validation is required
β Consolidated Acceptance Criteria
- The system compares the status information → the code is eligible for removal IF the status information matches OR no status information validation is required
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MatchesStatusInfo(["Start Step"])
E_MatchesStatusInfo(["End Step"])
N_MatchesStatusInfo_Node0{"The system compares the status
information"}:::decision N_MatchesStatusInfo_Node0_action["The code is eligible for removal IF
the status information matches OR no
status information validation is
required"]:::main N_MatchesStatusInfo_Node0 -- Yes --> N_MatchesStatusInfo_Node0_action N_MatchesStatusInfo_Node0_action --> E_MatchesStatusInfo S_MatchesStatusInfo --> N_MatchesStatusInfo_Node0 N_MatchesStatusInfo_Node0 -- No --> E_MatchesStatusInfo
information"}:::decision N_MatchesStatusInfo_Node0_action["The code is eligible for removal IF
the status information matches OR no
status information validation is
required"]:::main N_MatchesStatusInfo_Node0 -- Yes --> N_MatchesStatusInfo_Node0_action N_MatchesStatusInfo_Node0_action --> E_MatchesStatusInfo S_MatchesStatusInfo --> N_MatchesStatusInfo_Node0 N_MatchesStatusInfo_Node0 -- No --> E_MatchesStatusInfo
File: GCX016.cbl
GIVEN:
A disposition code is found in the status array AND status information matching is required
WHEN:
The system compares the status information
THEN:
The code is eligible for removal IF the status information matches OR no status information validation is required
β Consolidated Acceptance Criteria
- The removal processing is complete → the system logs the removal activity including the codes removed AND the cargo identifier AND the timestamp
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogRemovalActivity(["Start Step"])
E_LogRemovalActivity(["End Step"])
N_LogRemovalActivity_Node0{"The removal processing is complete"}:::decision
N_LogRemovalActivity_Node0_action["The system logs the removal
activity including the codes removed
AND the cargo identifier AND the
timestamp"]:::main N_LogRemovalActivity_Node0 -- Yes --> N_LogRemovalActivity_Node0_action N_LogRemovalActivity_Node0_action --> E_LogRemovalActivity S_LogRemovalActivity --> N_LogRemovalActivity_Node0 N_LogRemovalActivity_Node0 -- No --> E_LogRemovalActivity
activity including the codes removed
AND the cargo identifier AND the
timestamp"]:::main N_LogRemovalActivity_Node0 -- Yes --> N_LogRemovalActivity_Node0_action N_LogRemovalActivity_Node0_action --> E_LogRemovalActivity S_LogRemovalActivity --> N_LogRemovalActivity_Node0 N_LogRemovalActivity_Node0 -- No --> E_LogRemovalActivity
File: GCX016.cbl
GIVEN:
Disposition codes have been successfully removed from the cargo status
WHEN:
The removal processing is complete
THEN:
- The system logs the removal activity including the codes removed
- The cargo identifier
- The timestamp
β Consolidated Acceptance Criteria
- If the disposition code configuration → the system identifies whether counterpart removal is required based on the disposition code type
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_DispositionCodeHasCounterpartRemoval(["Start Step"])
E_DispositionCodeHasCounterpartRemoval(["End Step"])
N_DispositionCodeHasCounterpartRemoval_Node0{"The system evaluates the
disposition code configuration"}:::decision N_DispositionCodeHasCounterpartRemoval_Node0_action["The system identifies whether
counterpart removal is required
based on the disposition code type"]:::main N_DispositionCodeHasCounterpartRemoval_Node0 -- Yes --> N_DispositionCodeHasCounterpartRemoval_Node0_action N_DispositionCodeHasCounterpartRemoval_Node0_action --> E_DispositionCodeHasCounterpartRemoval S_DispositionCodeHasCounterpartRemoval --> N_DispositionCodeHasCounterpartRemoval_Node0 N_DispositionCodeHasCounterpartRemoval_Node0 -- No --> E_DispositionCodeHasCounterpartRemoval
disposition code configuration"}:::decision N_DispositionCodeHasCounterpartRemoval_Node0_action["The system identifies whether
counterpart removal is required
based on the disposition code type"]:::main N_DispositionCodeHasCounterpartRemoval_Node0 -- Yes --> N_DispositionCodeHasCounterpartRemoval_Node0_action N_DispositionCodeHasCounterpartRemoval_Node0_action --> E_DispositionCodeHasCounterpartRemoval S_DispositionCodeHasCounterpartRemoval --> N_DispositionCodeHasCounterpartRemoval_Node0 N_DispositionCodeHasCounterpartRemoval_Node0 -- No --> E_DispositionCodeHasCounterpartRemoval
File: GCX016.cbl
GIVEN:
A disposition code is being processed for cargo release
WHEN:
The system evaluates the disposition code configuration
THEN:
The system identifies whether counterpart removal is required based on the disposition code type
β Consolidated Acceptance Criteria
- The search process completes → the system determines whether any counterpart codes were found that require removal
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CounterpartCodeFound(["Start Step"])
E_CounterpartCodeFound(["End Step"])
N_CounterpartCodeFound_Node0{"The search process completes"}:::decision
N_CounterpartCodeFound_Node0_action["The system determines whether any
counterpart codes were found that
require removal"]:::main N_CounterpartCodeFound_Node0 -- Yes --> N_CounterpartCodeFound_Node0_action N_CounterpartCodeFound_Node0_action --> E_CounterpartCodeFound S_CounterpartCodeFound --> N_CounterpartCodeFound_Node0 N_CounterpartCodeFound_Node0 -- No --> E_CounterpartCodeFound
counterpart codes were found that
require removal"]:::main N_CounterpartCodeFound_Node0 -- Yes --> N_CounterpartCodeFound_Node0_action N_CounterpartCodeFound_Node0_action --> E_CounterpartCodeFound S_CounterpartCodeFound --> N_CounterpartCodeFound_Node0 N_CounterpartCodeFound_Node0 -- No --> E_CounterpartCodeFound
File: GCX016.cbl
GIVEN:
The system has searched the status array for counterpart codes
WHEN:
The search process completes
THEN:
The system determines whether any counterpart codes were found that require removal
β Consolidated Acceptance Criteria
- The system performs array compaction → the system shifts remaining status entries to fill gaps and maintains proper array structure
- The system compacts the array by moving remaining entries to fill the gaps → the status array maintains proper sequence without empty slots and preserves data integrity
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CompactStatusArray(["Start Step"])
E_CompactStatusArray(["End Step"])
N_CompactStatusArray_Node0{"The system performs array
compaction"}:::decision N_CompactStatusArray_Node0_action["The system shifts remaining status
entries to fill gaps and maintains
proper array structure"]:::main N_CompactStatusArray_Node0 -- Yes --> N_CompactStatusArray_Node0_action N_CompactStatusArray_Node0_action --> E_CompactStatusArray S_CompactStatusArray --> N_CompactStatusArray_Node0 N_CompactStatusArray_Node1{"The system compacts the array by
moving remaining entries to fill the
gaps"}:::decision N_CompactStatusArray_Node1_action["The status array maintains proper
sequence without empty slots and
preserves data integrity"]:::main N_CompactStatusArray_Node1 -- Yes --> N_CompactStatusArray_Node1_action N_CompactStatusArray_Node1_action --> E_CompactStatusArray N_CompactStatusArray_Node0 -- No --> N_CompactStatusArray_Node1 N_CompactStatusArray_Node1 -- No --> E_CompactStatusArray
compaction"}:::decision N_CompactStatusArray_Node0_action["The system shifts remaining status
entries to fill gaps and maintains
proper array structure"]:::main N_CompactStatusArray_Node0 -- Yes --> N_CompactStatusArray_Node0_action N_CompactStatusArray_Node0_action --> E_CompactStatusArray S_CompactStatusArray --> N_CompactStatusArray_Node0 N_CompactStatusArray_Node1{"The system compacts the array by
moving remaining entries to fill the
gaps"}:::decision N_CompactStatusArray_Node1_action["The status array maintains proper
sequence without empty slots and
preserves data integrity"]:::main N_CompactStatusArray_Node1 -- Yes --> N_CompactStatusArray_Node1_action N_CompactStatusArray_Node1_action --> E_CompactStatusArray N_CompactStatusArray_Node0 -- No --> N_CompactStatusArray_Node1 N_CompactStatusArray_Node1 -- No --> E_CompactStatusArray
File: GCX016.cbl
GIVEN:
Counterpart codes have been removed from the status array creating gaps
WHEN:
The system performs array compaction
THEN:
- The system shifts remaining status entries to fill gaps
- Maintains proper array structure
File: GCX016.cbl
GIVEN:
Counterpart codes have been removed from the status array creating gaps
WHEN:
The system compacts the array by moving remaining entries to fill the gaps
THEN:
- The status array maintains proper sequence without empty slots
- Preserves data integrity
β Consolidated Acceptance Criteria
- The system checks for remaining counterpart codes in the array → the system determines whether additional counterpart codes exist that need to be removed
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MoreCounterpartCodes(["Start Step"])
E_MoreCounterpartCodes(["End Step"])
N_MoreCounterpartCodes_Node0{"The system checks for remaining
counterpart codes in the array"}:::decision N_MoreCounterpartCodes_Node0_action["The system determines whether
additional counterpart codes exist
that need to be removed"]:::main N_MoreCounterpartCodes_Node0 -- Yes --> N_MoreCounterpartCodes_Node0_action N_MoreCounterpartCodes_Node0_action --> E_MoreCounterpartCodes S_MoreCounterpartCodes --> N_MoreCounterpartCodes_Node0 N_MoreCounterpartCodes_Node0 -- No --> E_MoreCounterpartCodes
counterpart codes in the array"}:::decision N_MoreCounterpartCodes_Node0_action["The system determines whether
additional counterpart codes exist
that need to be removed"]:::main N_MoreCounterpartCodes_Node0 -- Yes --> N_MoreCounterpartCodes_Node0_action N_MoreCounterpartCodes_Node0_action --> E_MoreCounterpartCodes S_MoreCounterpartCodes --> N_MoreCounterpartCodes_Node0 N_MoreCounterpartCodes_Node0 -- No --> E_MoreCounterpartCodes
File: GCX016.cbl
GIVEN:
One or more counterpart codes have been processed for removal
WHEN:
The system checks for remaining counterpart codes in the array
THEN:
The system determines whether additional counterpart codes exist that need to be removed
β Consolidated Acceptance Criteria
- The system adds the release status code → the system inserts the new disposition code into the next available position in the status array
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AddReleaseStatusCode(["Start Step"])
E_AddReleaseStatusCode(["End Step"])
N_AddReleaseStatusCode_Node0{"The system adds the release status
code"}:::decision N_AddReleaseStatusCode_Node0_action["The system inserts the new
disposition code into the next
available position in the status
array"]:::main N_AddReleaseStatusCode_Node0 -- Yes --> N_AddReleaseStatusCode_Node0_action N_AddReleaseStatusCode_Node0_action --> E_AddReleaseStatusCode S_AddReleaseStatusCode --> N_AddReleaseStatusCode_Node0 N_AddReleaseStatusCode_Node0 -- No --> E_AddReleaseStatusCode
code"}:::decision N_AddReleaseStatusCode_Node0_action["The system inserts the new
disposition code into the next
available position in the status
array"]:::main N_AddReleaseStatusCode_Node0 -- Yes --> N_AddReleaseStatusCode_Node0_action N_AddReleaseStatusCode_Node0_action --> E_AddReleaseStatusCode S_AddReleaseStatusCode --> N_AddReleaseStatusCode_Node0 N_AddReleaseStatusCode_Node0 -- No --> E_AddReleaseStatusCode
File: GCX016.cbl
GIVEN:
Counterpart codes have been removed or no counterpart removal was required
WHEN:
The system adds the release status code
THEN:
The system inserts the new disposition code into the next available position in the status array
β Consolidated Acceptance Criteria
- If the quantity impact configuration for the disposition code → the system determines whether release quantities should be updated based on the disposition code type
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ReleaseAffectsQuantities(["Start Step"])
E_ReleaseAffectsQuantities(["End Step"])
N_ReleaseAffectsQuantities_Node0{"The system evaluates the quantity
impact configuration for the
disposition code"}:::decision N_ReleaseAffectsQuantities_Node0_action["The system determines whether
release quantities should be updated
based on the disposition code type"]:::main N_ReleaseAffectsQuantities_Node0 -- Yes --> N_ReleaseAffectsQuantities_Node0_action N_ReleaseAffectsQuantities_Node0_action --> E_ReleaseAffectsQuantities S_ReleaseAffectsQuantities --> N_ReleaseAffectsQuantities_Node0 N_ReleaseAffectsQuantities_Node0 -- No --> E_ReleaseAffectsQuantities
impact configuration for the
disposition code"}:::decision N_ReleaseAffectsQuantities_Node0_action["The system determines whether
release quantities should be updated
based on the disposition code type"]:::main N_ReleaseAffectsQuantities_Node0 -- Yes --> N_ReleaseAffectsQuantities_Node0_action N_ReleaseAffectsQuantities_Node0_action --> E_ReleaseAffectsQuantities S_ReleaseAffectsQuantities --> N_ReleaseAffectsQuantities_Node0 N_ReleaseAffectsQuantities_Node0 -- No --> E_ReleaseAffectsQuantities
File: GCX016.cbl
GIVEN:
A release disposition code has been added to the status array
WHEN:
The system evaluates the quantity impact configuration for the disposition code
THEN:
The system determines whether release quantities should be updated based on the disposition code type
β Consolidated Acceptance Criteria
- The system processes the quantity update → the system adds or subtracts the specified quantity from the current release quantity ensuring the result is not negative
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UpdateReleaseQuantities(["Start Step"])
E_UpdateReleaseQuantities(["End Step"])
N_UpdateReleaseQuantities_Node0{"The system processes the quantity
update"}:::decision N_UpdateReleaseQuantities_Node0_action["The system adds or subtracts the
specified quantity from the current
release quantity ensuring the result
is not negative"]:::main N_UpdateReleaseQuantities_Node0 -- Yes --> N_UpdateReleaseQuantities_Node0_action N_UpdateReleaseQuantities_Node0_action --> E_UpdateReleaseQuantities S_UpdateReleaseQuantities --> N_UpdateReleaseQuantities_Node0 N_UpdateReleaseQuantities_Node0 -- No --> E_UpdateReleaseQuantities
update"}:::decision N_UpdateReleaseQuantities_Node0_action["The system adds or subtracts the
specified quantity from the current
release quantity ensuring the result
is not negative"]:::main N_UpdateReleaseQuantities_Node0 -- Yes --> N_UpdateReleaseQuantities_Node0_action N_UpdateReleaseQuantities_Node0_action --> E_UpdateReleaseQuantities S_UpdateReleaseQuantities --> N_UpdateReleaseQuantities_Node0 N_UpdateReleaseQuantities_Node0 -- No --> E_UpdateReleaseQuantities
File: GCX016.cbl
GIVEN:
A release disposition code affects quantities and quantity information is available
WHEN:
The system processes the quantity update
THEN:
The system adds or subtracts the specified quantity from the current release quantity ensuring the result is not negative
β Consolidated Acceptance Criteria
- The system sets the release flags → the system marks the status entry with released flag and any additional release indicators required by the disposition code
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetReleasedFlaginStatusArray(["Start Step"])
E_SetReleasedFlaginStatusArray(["End Step"])
N_SetReleasedFlaginStatusArray_Node0{"The system sets the release flags"}:::decision
N_SetReleasedFlaginStatusArray_Node0_action["The system marks the status entry
with released flag and any
additional release indicators
required by the disposition code"]:::main N_SetReleasedFlaginStatusArray_Node0 -- Yes --> N_SetReleasedFlaginStatusArray_Node0_action N_SetReleasedFlaginStatusArray_Node0_action --> E_SetReleasedFlaginStatusArray S_SetReleasedFlaginStatusArray --> N_SetReleasedFlaginStatusArray_Node0 N_SetReleasedFlaginStatusArray_Node0 -- No --> E_SetReleasedFlaginStatusArray
with released flag and any
additional release indicators
required by the disposition code"]:::main N_SetReleasedFlaginStatusArray_Node0 -- Yes --> N_SetReleasedFlaginStatusArray_Node0_action N_SetReleasedFlaginStatusArray_Node0_action --> E_SetReleasedFlaginStatusArray S_SetReleasedFlaginStatusArray --> N_SetReleasedFlaginStatusArray_Node0 N_SetReleasedFlaginStatusArray_Node0 -- No --> E_SetReleasedFlaginStatusArray
File: GCX016.cbl
GIVEN:
A release disposition code has been added to the status array
WHEN:
The system sets the release flags
THEN:
- The system marks the status entry with released flag
- Any additional release indicators required by the disposition code
β Consolidated Acceptance Criteria
- Location information is available for the release → the system records the location code and related geographic information in the status entry
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MarkLocationInformation(["Start Step"])
E_MarkLocationInformation(["End Step"])
N_MarkLocationInformation_Node0{"Location information is available
for the release"}:::decision N_MarkLocationInformation_Node0_action["The system records the location
code and related geographic
information in the status entry"]:::main N_MarkLocationInformation_Node0 -- Yes --> N_MarkLocationInformation_Node0_action N_MarkLocationInformation_Node0_action --> E_MarkLocationInformation S_MarkLocationInformation --> N_MarkLocationInformation_Node0 N_MarkLocationInformation_Node0 -- No --> E_MarkLocationInformation
for the release"}:::decision N_MarkLocationInformation_Node0_action["The system records the location
code and related geographic
information in the status entry"]:::main N_MarkLocationInformation_Node0 -- Yes --> N_MarkLocationInformation_Node0_action N_MarkLocationInformation_Node0_action --> E_MarkLocationInformation S_MarkLocationInformation --> N_MarkLocationInformation_Node0 N_MarkLocationInformation_Node0 -- No --> E_MarkLocationInformation
File: GCX016.cbl
GIVEN:
A release status has been added with release flags set
WHEN:
Location information is available for the release
THEN:
- The system records the location code
- Related geographic information in the status entry
β Consolidated Acceptance Criteria
- The system processes the release request → the system proceeds directly to adding the release status code without searching for or removing counterpart codes
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SkipCounterpartRemoval(["Start Step"])
E_SkipCounterpartRemoval(["End Step"])
N_SkipCounterpartRemoval_Node0{"The system processes the release
request"}:::decision N_SkipCounterpartRemoval_Node0_action["The system proceeds directly to
adding the release status code
without searching for or removing
counterpart codes"]:::main N_SkipCounterpartRemoval_Node0 -- Yes --> N_SkipCounterpartRemoval_Node0_action N_SkipCounterpartRemoval_Node0_action --> E_SkipCounterpartRemoval S_SkipCounterpartRemoval --> N_SkipCounterpartRemoval_Node0 N_SkipCounterpartRemoval_Node0 -- No --> E_SkipCounterpartRemoval
request"}:::decision N_SkipCounterpartRemoval_Node0_action["The system proceeds directly to
adding the release status code
without searching for or removing
counterpart codes"]:::main N_SkipCounterpartRemoval_Node0 -- Yes --> N_SkipCounterpartRemoval_Node0_action N_SkipCounterpartRemoval_Node0_action --> E_SkipCounterpartRemoval S_SkipCounterpartRemoval --> N_SkipCounterpartRemoval_Node0 N_SkipCounterpartRemoval_Node0 -- No --> E_SkipCounterpartRemoval
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
A disposition code does not require counterpart removal
WHEN:
The system processes the release request
THEN:
The system proceeds directly to adding the release status code without searching for or removing counterpart codes
β Consolidated Acceptance Criteria
- The system finalizes the update process → the system confirms successful completion and the status array reflects the new release status with any counterpart codes removed
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_StatusArrayUpdatedSuccessfully(["Start Step"])
E_StatusArrayUpdatedSuccessfully(["End Step"])
N_StatusArrayUpdatedSuccessfully_Node0{"The system finalizes the update
process"}:::decision N_StatusArrayUpdatedSuccessfully_Node0_action["The system confirms successful
completion and the status array
reflects the new release status with
any counterpart codes removed"]:::main N_StatusArrayUpdatedSuccessfully_Node0 -- Yes --> N_StatusArrayUpdatedSuccessfully_Node0_action N_StatusArrayUpdatedSuccessfully_Node0_action --> E_StatusArrayUpdatedSuccessfully S_StatusArrayUpdatedSuccessfully --> N_StatusArrayUpdatedSuccessfully_Node0 N_StatusArrayUpdatedSuccessfully_Node0 -- No --> E_StatusArrayUpdatedSuccessfully
process"}:::decision N_StatusArrayUpdatedSuccessfully_Node0_action["The system confirms successful
completion and the status array
reflects the new release status with
any counterpart codes removed"]:::main N_StatusArrayUpdatedSuccessfully_Node0 -- Yes --> N_StatusArrayUpdatedSuccessfully_Node0_action N_StatusArrayUpdatedSuccessfully_Node0_action --> E_StatusArrayUpdatedSuccessfully S_StatusArrayUpdatedSuccessfully --> N_StatusArrayUpdatedSuccessfully_Node0 N_StatusArrayUpdatedSuccessfully_Node0 -- No --> E_StatusArrayUpdatedSuccessfully
File: GCX016.cbl
GIVEN:
All required status array modifications have been completed
WHEN:
The system finalizes the update process
THEN:
- The system confirms successful completion
- The status array reflects the new release status with any counterpart codes removed
β Consolidated Acceptance Criteria
- The system removes all matching counterpart codes from the status array → the conflicting disposition codes are eliminated from the cargo status
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RemoveMatchingCounterpartCodes(["Start Step"])
E_RemoveMatchingCounterpartCodes(["End Step"])
N_RemoveMatchingCounterpartCodes_Node0{"The system removes all matching
counterpart codes from the status
array"}:::decision N_RemoveMatchingCounterpartCodes_Node0_action["The conflicting disposition codes
are eliminated from the cargo status"]:::main N_RemoveMatchingCounterpartCodes_Node0 -- Yes --> N_RemoveMatchingCounterpartCodes_Node0_action N_RemoveMatchingCounterpartCodes_Node0_action --> E_RemoveMatchingCounterpartCodes S_RemoveMatchingCounterpartCodes --> N_RemoveMatchingCounterpartCodes_Node0 N_RemoveMatchingCounterpartCodes_Node0 -- No --> E_RemoveMatchingCounterpartCodes
counterpart codes from the status
array"}:::decision N_RemoveMatchingCounterpartCodes_Node0_action["The conflicting disposition codes
are eliminated from the cargo status"]:::main N_RemoveMatchingCounterpartCodes_Node0 -- Yes --> N_RemoveMatchingCounterpartCodes_Node0_action N_RemoveMatchingCounterpartCodes_Node0_action --> E_RemoveMatchingCounterpartCodes S_RemoveMatchingCounterpartCodes --> N_RemoveMatchingCounterpartCodes_Node0 N_RemoveMatchingCounterpartCodes_Node0 -- No --> E_RemoveMatchingCounterpartCodes
File: GCX016.cbl
GIVEN:
Counterpart codes are found in the status array AND an information code with removal flag is being processed
WHEN:
The system removes all matching counterpart codes from the status array
THEN:
The conflicting disposition codes are eliminated from the cargo status
β Consolidated Acceptance Criteria
- The system sets the information status flag for the new entry → the disposition code is marked as informational and will not affect cargo quantities or release processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetInformationStatusFlag(["Start Step"])
E_SetInformationStatusFlag(["End Step"])
N_SetInformationStatusFlag_Node0{"The system sets the information
status flag for the new entry"}:::decision N_SetInformationStatusFlag_Node0_action["The disposition code is marked as
informational and will not affect
cargo quantities or release
processing"]:::main N_SetInformationStatusFlag_Node0 -- Yes --> N_SetInformationStatusFlag_Node0_action N_SetInformationStatusFlag_Node0_action --> E_SetInformationStatusFlag S_SetInformationStatusFlag --> N_SetInformationStatusFlag_Node0 N_SetInformationStatusFlag_Node0 -- No --> E_SetInformationStatusFlag
status flag for the new entry"}:::decision N_SetInformationStatusFlag_Node0_action["The disposition code is marked as
informational and will not affect
cargo quantities or release
processing"]:::main N_SetInformationStatusFlag_Node0 -- Yes --> N_SetInformationStatusFlag_Node0_action N_SetInformationStatusFlag_Node0_action --> E_SetInformationStatusFlag S_SetInformationStatusFlag --> N_SetInformationStatusFlag_Node0 N_SetInformationStatusFlag_Node0 -- No --> E_SetInformationStatusFlag
File: GCX016.cbl
GIVEN:
An information disposition code has been added to the status array
WHEN:
The system sets the information status flag for the new entry
THEN:
- The disposition code is marked as informational
- Will not affect cargo quantities or release processing
β Consolidated Acceptance Criteria
- The system updates the cargo status with the information code → the cargo release quantities and total quantities remain unchanged as information codes are for status tracking only
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_PreserveCargoQuantities(["Start Step"])
E_PreserveCargoQuantities(["End Step"])
N_PreserveCargoQuantities_Node0{"The system updates the cargo status
with the information code"}:::decision N_PreserveCargoQuantities_Node0_action["The cargo release quantities and
total quantities remain unchanged as
information codes are for status
tracking only"]:::main N_PreserveCargoQuantities_Node0 -- Yes --> N_PreserveCargoQuantities_Node0_action N_PreserveCargoQuantities_Node0_action --> E_PreserveCargoQuantities S_PreserveCargoQuantities --> N_PreserveCargoQuantities_Node0 N_PreserveCargoQuantities_Node0 -- No --> E_PreserveCargoQuantities
with the information code"}:::decision N_PreserveCargoQuantities_Node0_action["The cargo release quantities and
total quantities remain unchanged as
information codes are for status
tracking only"]:::main N_PreserveCargoQuantities_Node0 -- Yes --> N_PreserveCargoQuantities_Node0_action N_PreserveCargoQuantities_Node0_action --> E_PreserveCargoQuantities S_PreserveCargoQuantities --> N_PreserveCargoQuantities_Node0 N_PreserveCargoQuantities_Node0 -- No --> E_PreserveCargoQuantities
File: GCX016.cbl
GIVEN:
An information disposition code is being processed
WHEN:
The system updates the cargo status with the information code
THEN:
- The cargo release quantities
- Total quantities remain unchanged as information codes are for status tracking only
β Consolidated Acceptance Criteria
- The system logs the status change activity → the audit trail captures both the removal of counterpart codes and addition of the information code with timestamps and user information
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogStatusChangeInformation(["Start Step"])
E_LogStatusChangeInformation(["End Step"])
N_LogStatusChangeInformation_Node0{"The system logs the status change
activity"}:::decision N_LogStatusChangeInformation_Node0_action["The audit trail captures both the
removal of counterpart codes and
addition of the information code
with timestamps and user information"]:::main N_LogStatusChangeInformation_Node0 -- Yes --> N_LogStatusChangeInformation_Node0_action N_LogStatusChangeInformation_Node0_action --> E_LogStatusChangeInformation S_LogStatusChangeInformation --> N_LogStatusChangeInformation_Node0 N_LogStatusChangeInformation_Node0 -- No --> E_LogStatusChangeInformation
activity"}:::decision N_LogStatusChangeInformation_Node0_action["The audit trail captures both the
removal of counterpart codes and
addition of the information code
with timestamps and user information"]:::main N_LogStatusChangeInformation_Node0 -- Yes --> N_LogStatusChangeInformation_Node0_action N_LogStatusChangeInformation_Node0_action --> E_LogStatusChangeInformation S_LogStatusChangeInformation --> N_LogStatusChangeInformation_Node0 N_LogStatusChangeInformation_Node0 -- No --> E_LogStatusChangeInformation
File: GCX016.cbl
GIVEN:
Counterpart codes have been removed AND an information code has been added to the cargo status
WHEN:
The system logs the status change activity
THEN:
- The audit trail captures both the removal of counterpart codes
- Addition of the information code with timestamps
- User information
β Consolidated Acceptance Criteria
- The system checks the current array size against processing requirements → the current array size is determined and made available for capacity validation
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CheckCurrentArraySize(["Start Step"])
E_CheckCurrentArraySize(["End Step"])
N_CheckCurrentArraySize_Node0{"The system checks the current array
size against processing requirements"}:::decision N_CheckCurrentArraySize_Node0_action["The current array size is
determined and made available for
capacity validation"]:::main N_CheckCurrentArraySize_Node0 -- Yes --> N_CheckCurrentArraySize_Node0_action N_CheckCurrentArraySize_Node0_action --> E_CheckCurrentArraySize S_CheckCurrentArraySize --> N_CheckCurrentArraySize_Node0 N_CheckCurrentArraySize_Node0 -- No --> E_CheckCurrentArraySize
size against processing requirements"}:::decision N_CheckCurrentArraySize_Node0_action["The current array size is
determined and made available for
capacity validation"]:::main N_CheckCurrentArraySize_Node0 -- Yes --> N_CheckCurrentArraySize_Node0_action N_CheckCurrentArraySize_Node0_action --> E_CheckCurrentArraySize S_CheckCurrentArraySize --> N_CheckCurrentArraySize_Node0 N_CheckCurrentArraySize_Node0 -- No --> E_CheckCurrentArraySize
File: GCX016.cbl
GIVEN:
A status array processing request is received and the system needs to add a new disposition code
WHEN:
The system checks the current array size against processing requirements
THEN:
- The current array size is determined
- Made available for capacity validation
β Consolidated Acceptance Criteria
- If if there is capacity for additional status entries → if current array size is less than maximum limit, allow new code addition, otherwise prevent array overflow
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ArraySizeMaximum(["Start Step"])
E_ArraySizeMaximum(["End Step"])
N_ArraySizeMaximum_Node0{"The system evaluates if there is
capacity for additional status
entries"}:::decision N_ArraySizeMaximum_Node0_action["If current array size is less than
maximum limit, allow new code
addition, otherwise prevent array
overflow"]:::main N_ArraySizeMaximum_Node0 -- Yes --> N_ArraySizeMaximum_Node0_action N_ArraySizeMaximum_Node0_action --> E_ArraySizeMaximum S_ArraySizeMaximum --> N_ArraySizeMaximum_Node0 N_ArraySizeMaximum_Node0 -- No --> E_ArraySizeMaximum
capacity for additional status
entries"}:::decision N_ArraySizeMaximum_Node0_action["If current array size is less than
maximum limit, allow new code
addition, otherwise prevent array
overflow"]:::main N_ArraySizeMaximum_Node0 -- Yes --> N_ArraySizeMaximum_Node0_action N_ArraySizeMaximum_Node0_action --> E_ArraySizeMaximum S_ArraySizeMaximum --> N_ArraySizeMaximum_Node0 N_ArraySizeMaximum_Node0 -- No --> E_ArraySizeMaximum
File: GCX016.cbl
GIVEN:
The current array size and maximum array limit are known
WHEN:
The system evaluates if there is capacity for additional status entries
THEN:
If current array size is less than maximum limit, allow new code addition, otherwise prevent array overflow
β Consolidated Acceptance Criteria
- A new disposition code needs to be added to the array → the system allows the disposition code to be processed and added to the status array
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AllowNewCodeAddition(["Start Step"])
E_AllowNewCodeAddition(["End Step"])
N_AllowNewCodeAddition_Node0{"A new disposition code needs to be
added to the array"}:::decision N_AllowNewCodeAddition_Node0_action["The system allows the disposition
code to be processed and added to
the status array"]:::main N_AllowNewCodeAddition_Node0 -- Yes --> N_AllowNewCodeAddition_Node0_action N_AllowNewCodeAddition_Node0_action --> E_AllowNewCodeAddition S_AllowNewCodeAddition --> N_AllowNewCodeAddition_Node0 N_AllowNewCodeAddition_Node0 -- No --> E_AllowNewCodeAddition
added to the array"}:::decision N_AllowNewCodeAddition_Node0_action["The system allows the disposition
code to be processed and added to
the status array"]:::main N_AllowNewCodeAddition_Node0 -- Yes --> N_AllowNewCodeAddition_Node0_action N_AllowNewCodeAddition_Node0_action --> E_AllowNewCodeAddition S_AllowNewCodeAddition --> N_AllowNewCodeAddition_Node0 N_AllowNewCodeAddition_Node0 -- No --> E_AllowNewCodeAddition
File: GCX016.cbl
GIVEN:
The status array has capacity available (current size is less than maximum limit)
WHEN:
A new disposition code needs to be added to the array
THEN:
- The system allows the disposition code to be processed
- Added to the status array
β Consolidated Acceptance Criteria
- The system needs to notify operators of the capacity issue → a warning message is logged indicating the status array overflow condition
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogOverflowWarning(["Start Step"])
E_LogOverflowWarning(["End Step"])
N_LogOverflowWarning_Node0{"The system needs to notify
operators of the capacity issue"}:::decision N_LogOverflowWarning_Node0_action["A warning message is logged
indicating the status array overflow
condition"]:::main N_LogOverflowWarning_Node0 -- Yes --> N_LogOverflowWarning_Node0_action N_LogOverflowWarning_Node0_action --> E_LogOverflowWarning S_LogOverflowWarning --> N_LogOverflowWarning_Node0 N_LogOverflowWarning_Node0 -- No --> E_LogOverflowWarning
operators of the capacity issue"}:::decision N_LogOverflowWarning_Node0_action["A warning message is logged
indicating the status array overflow
condition"]:::main N_LogOverflowWarning_Node0 -- Yes --> N_LogOverflowWarning_Node0_action N_LogOverflowWarning_Node0_action --> E_LogOverflowWarning S_LogOverflowWarning --> N_LogOverflowWarning_Node0 N_LogOverflowWarning_Node0 -- No --> E_LogOverflowWarning
File: GCX016.cbl
GIVEN:
An array overflow condition has been prevented
WHEN:
The system needs to notify operators of the capacity issue
THEN:
A warning message is logged indicating the status array overflow condition
β Consolidated Acceptance Criteria
- The disposition code processing is executed → the disposition code is processed according to business rules and cargo status is updated appropriately
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ProcessDispositionCode(["Start Step"])
E_ProcessDispositionCode(["End Step"])
N_ProcessDispositionCode_Node0{"The disposition code processing is
executed"}:::decision N_ProcessDispositionCode_Node0_action["The disposition code is processed
according to business rules and
cargo status is updated
appropriately"]:::main N_ProcessDispositionCode_Node0 -- Yes --> N_ProcessDispositionCode_Node0_action N_ProcessDispositionCode_Node0_action --> E_ProcessDispositionCode S_ProcessDispositionCode --> N_ProcessDispositionCode_Node0 N_ProcessDispositionCode_Node0 -- No --> E_ProcessDispositionCode
executed"}:::decision N_ProcessDispositionCode_Node0_action["The disposition code is processed
according to business rules and
cargo status is updated
appropriately"]:::main N_ProcessDispositionCode_Node0 -- Yes --> N_ProcessDispositionCode_Node0_action N_ProcessDispositionCode_Node0_action --> E_ProcessDispositionCode S_ProcessDispositionCode --> N_ProcessDispositionCode_Node0 N_ProcessDispositionCode_Node0 -- No --> E_ProcessDispositionCode
File: GCX016.cbl
GIVEN:
New code addition has been authorized and array capacity is available
WHEN:
The disposition code processing is executed
THEN:
- The disposition code is processed according to business rules
- Cargo status is updated appropriately
β Consolidated Acceptance Criteria
- The disposition code addition request is finalized → the code addition is rejected and no changes are made to the status array
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RejectCodeAddition(["Start Step"])
E_RejectCodeAddition(["End Step"])
N_RejectCodeAddition_Node0{"The disposition code addition
request is finalized"}:::decision N_RejectCodeAddition_Node0_action["The code addition is rejected and
no changes are made to the status
array"]:::exclusion N_RejectCodeAddition_Node0 -- Yes -->|Alternative| N_RejectCodeAddition_Node0_action N_RejectCodeAddition_Node0_action --> E_RejectCodeAddition S_RejectCodeAddition --> N_RejectCodeAddition_Node0 N_RejectCodeAddition_Node0 -- No --> E_RejectCodeAddition
request is finalized"}:::decision N_RejectCodeAddition_Node0_action["The code addition is rejected and
no changes are made to the status
array"]:::exclusion N_RejectCodeAddition_Node0 -- Yes -->|Alternative| N_RejectCodeAddition_Node0_action N_RejectCodeAddition_Node0_action --> E_RejectCodeAddition S_RejectCodeAddition --> N_RejectCodeAddition_Node0 N_RejectCodeAddition_Node0 -- No --> E_RejectCodeAddition
File: GCX016.cbl
GIVEN:
An error status has been returned due to array overflow conditions
WHEN:
The disposition code addition request is finalized
THEN:
- The code addition is rejected
- No changes are made to the status array
β Consolidated Acceptance Criteria
- The system processes the quantity action for cargo release → the system does not modify the current cargo release quantity
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_NoQuantityChangeRequired(["Start Step"])
E_NoQuantityChangeRequired(["End Step"])
N_NoQuantityChangeRequired_Node0{"The system processes the quantity
action for cargo release"}:::decision N_NoQuantityChangeRequired_Node0_action["The system does not modify the
current cargo release quantity"]:::main N_NoQuantityChangeRequired_Node0 -- Yes --> N_NoQuantityChangeRequired_Node0_action N_NoQuantityChangeRequired_Node0_action --> E_NoQuantityChangeRequired S_NoQuantityChangeRequired --> N_NoQuantityChangeRequired_Node0 N_NoQuantityChangeRequired_Node0 -- No --> E_NoQuantityChangeRequired
action for cargo release"}:::decision N_NoQuantityChangeRequired_Node0_action["The system does not modify the
current cargo release quantity"]:::main N_NoQuantityChangeRequired_Node0 -- Yes --> N_NoQuantityChangeRequired_Node0_action N_NoQuantityChangeRequired_Node0_action --> E_NoQuantityChangeRequired S_NoQuantityChangeRequired --> N_NoQuantityChangeRequired_Node0 N_NoQuantityChangeRequired_Node0 -- No --> E_NoQuantityChangeRequired
File: GCX016.cbl
GIVEN:
A disposition code with quantity action that is neither 'A' (ADD) nor 'S' (SUBTRACT)
WHEN:
The system processes the quantity action for cargo release
THEN:
The system does not modify the current cargo release quantity
β Consolidated Acceptance Criteria
- The system completes the quantity update processing → the system logs the quantity action details in the processing message for audit trail
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogQuantityActioninMessage(["Start Step"])
E_LogQuantityActioninMessage(["End Step"])
N_LogQuantityActioninMessage_Node0{"The system completes the quantity
update processing"}:::decision N_LogQuantityActioninMessage_Node0_action["The system logs the quantity action
details in the processing message
for audit trail"]:::main N_LogQuantityActioninMessage_Node0 -- Yes --> N_LogQuantityActioninMessage_Node0_action N_LogQuantityActioninMessage_Node0_action --> E_LogQuantityActioninMessage S_LogQuantityActioninMessage --> N_LogQuantityActioninMessage_Node0 N_LogQuantityActioninMessage_Node0 -- No --> E_LogQuantityActioninMessage
update processing"}:::decision N_LogQuantityActioninMessage_Node0_action["The system logs the quantity action
details in the processing message
for audit trail"]:::main N_LogQuantityActioninMessage_Node0 -- Yes --> N_LogQuantityActioninMessage_Node0_action N_LogQuantityActioninMessage_Node0_action --> E_LogQuantityActioninMessage S_LogQuantityActioninMessage --> N_LogQuantityActioninMessage_Node0 N_LogQuantityActioninMessage_Node0 -- No --> E_LogQuantityActioninMessage
File: GCX016.cbl
GIVEN:
A processed quantity action that modified cargo release quantities
WHEN:
The system completes the quantity update processing
THEN:
The system logs the quantity action details in the processing message for audit trail
β Consolidated Acceptance Criteria
- The system prepares user notification messages → the system formats the quantity action details for clear display showing before and after quantities
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_FormatQuantityActionDisplay(["Start Step"])
E_FormatQuantityActionDisplay(["End Step"])
N_FormatQuantityActionDisplay_Node0{"The system prepares user
notification messages"}:::decision N_FormatQuantityActionDisplay_Node0_action["The system formats the quantity
action details for clear display
showing before and after quantities"]:::main N_FormatQuantityActionDisplay_Node0 -- Yes --> N_FormatQuantityActionDisplay_Node0_action N_FormatQuantityActionDisplay_Node0_action --> E_FormatQuantityActionDisplay S_FormatQuantityActionDisplay --> N_FormatQuantityActionDisplay_Node0 N_FormatQuantityActionDisplay_Node0 -- No --> E_FormatQuantityActionDisplay
notification messages"}:::decision N_FormatQuantityActionDisplay_Node0_action["The system formats the quantity
action details for clear display
showing before and after quantities"]:::main N_FormatQuantityActionDisplay_Node0 -- Yes --> N_FormatQuantityActionDisplay_Node0_action N_FormatQuantityActionDisplay_Node0_action --> E_FormatQuantityActionDisplay S_FormatQuantityActionDisplay --> N_FormatQuantityActionDisplay_Node0 N_FormatQuantityActionDisplay_Node0 -- No --> E_FormatQuantityActionDisplay
File: GCX016.cbl
GIVEN:
A completed quantity action with updated release quantities
WHEN:
The system prepares user notification messages
THEN:
- The system formats the quantity action details for clear display showing before
- After quantities
β Consolidated Acceptance Criteria
- The system determines that hold cargo messaging is needed → the hold message generation process is initiated
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_HoldMessageGenerationRequired(["Start Step"])
E_HoldMessageGenerationRequired(["End Step"])
N_HoldMessageGenerationRequired_Node0{"The system determines that hold
cargo messaging is needed"}:::decision N_HoldMessageGenerationRequired_Node0_action["The hold message generation process
is initiated"]:::main N_HoldMessageGenerationRequired_Node0 -- Yes --> N_HoldMessageGenerationRequired_Node0_action N_HoldMessageGenerationRequired_Node0_action --> E_HoldMessageGenerationRequired S_HoldMessageGenerationRequired --> N_HoldMessageGenerationRequired_Node0 N_HoldMessageGenerationRequired_Node0 -- No --> E_HoldMessageGenerationRequired
cargo messaging is needed"}:::decision N_HoldMessageGenerationRequired_Node0_action["The hold message generation process
is initiated"]:::main N_HoldMessageGenerationRequired_Node0 -- Yes --> N_HoldMessageGenerationRequired_Node0_action N_HoldMessageGenerationRequired_Node0_action --> E_HoldMessageGenerationRequired S_HoldMessageGenerationRequired --> N_HoldMessageGenerationRequired_Node0 N_HoldMessageGenerationRequired_Node0 -- No --> E_HoldMessageGenerationRequired
File: GCX016.cbl
GIVEN:
A cargo record requires hold message generation
WHEN:
The system determines that hold cargo messaging is needed
THEN:
The hold message generation process is initiated
β Consolidated Acceptance Criteria
- The system analyzes the status array for hold flags and location indicators → hold status flags and location requirements are identified from the array
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AnalyzeCargoStatusArray(["Start Step"])
E_AnalyzeCargoStatusArray(["End Step"])
N_AnalyzeCargoStatusArray_Node0{"The system analyzes the status
array for hold flags and location
indicators"}:::decision N_AnalyzeCargoStatusArray_Node0_action["Hold status flags and location
requirements are identified from the
array"]:::main N_AnalyzeCargoStatusArray_Node0 -- Yes --> N_AnalyzeCargoStatusArray_Node0_action N_AnalyzeCargoStatusArray_Node0_action --> E_AnalyzeCargoStatusArray S_AnalyzeCargoStatusArray --> N_AnalyzeCargoStatusArray_Node0 N_AnalyzeCargoStatusArray_Node0 -- No --> E_AnalyzeCargoStatusArray
array for hold flags and location
indicators"}:::decision N_AnalyzeCargoStatusArray_Node0_action["Hold status flags and location
requirements are identified from the
array"]:::main N_AnalyzeCargoStatusArray_Node0 -- Yes --> N_AnalyzeCargoStatusArray_Node0_action N_AnalyzeCargoStatusArray_Node0_action --> E_AnalyzeCargoStatusArray S_AnalyzeCargoStatusArray --> N_AnalyzeCargoStatusArray_Node0 N_AnalyzeCargoStatusArray_Node0 -- No --> E_AnalyzeCargoStatusArray
File: GCX016.cbl
GIVEN:
A cargo record with populated S09A status array exists
WHEN:
- The system analyzes the status array for hold flags
- Location indicators
THEN:
- Hold status flags
- Location requirements are identified from the array
β Consolidated Acceptance Criteria
- If hold location flags in the status array → the system identifies hold location as border, destination, or both locations
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CargoHoldLocation(["Start Step"])
E_CargoHoldLocation(["End Step"])
N_CargoHoldLocation_Node0{"The system evaluates hold location
flags in the status array"}:::decision N_CargoHoldLocation_Node0_action["The system identifies hold location
as border, destination, or both
locations"]:::main N_CargoHoldLocation_Node0 -- Yes --> N_CargoHoldLocation_Node0_action N_CargoHoldLocation_Node0_action --> E_CargoHoldLocation S_CargoHoldLocation --> N_CargoHoldLocation_Node0 N_CargoHoldLocation_Node0 -- No --> E_CargoHoldLocation
flags in the status array"}:::decision N_CargoHoldLocation_Node0_action["The system identifies hold location
as border, destination, or both
locations"]:::main N_CargoHoldLocation_Node0 -- Yes --> N_CargoHoldLocation_Node0_action N_CargoHoldLocation_Node0_action --> E_CargoHoldLocation S_CargoHoldLocation --> N_CargoHoldLocation_Node0 N_CargoHoldLocation_Node0 -- No --> E_CargoHoldLocation
File: GCX016.cbl
GIVEN:
Cargo status array has been analyzed for hold conditions
WHEN:
The system evaluates hold location flags in the status array
THEN:
The system identifies hold location as border, destination, or both locations
β Consolidated Acceptance Criteria
- The system processes border hold requirements → border hold processing is initiated and border location details are prepared
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_DetermineBorderHold(["Start Step"])
E_DetermineBorderHold(["End Step"])
N_DetermineBorderHold_Node0{"The system processes border hold
requirements"}:::decision N_DetermineBorderHold_Node0_action["Border hold processing is initiated
and border location details are
prepared"]:::main N_DetermineBorderHold_Node0 -- Yes --> N_DetermineBorderHold_Node0_action N_DetermineBorderHold_Node0_action --> E_DetermineBorderHold S_DetermineBorderHold --> N_DetermineBorderHold_Node0 N_DetermineBorderHold_Node0 -- No --> E_DetermineBorderHold
requirements"}:::decision N_DetermineBorderHold_Node0_action["Border hold processing is initiated
and border location details are
prepared"]:::main N_DetermineBorderHold_Node0 -- Yes --> N_DetermineBorderHold_Node0_action N_DetermineBorderHold_Node0_action --> E_DetermineBorderHold S_DetermineBorderHold --> N_DetermineBorderHold_Node0 N_DetermineBorderHold_Node0 -- No --> E_DetermineBorderHold
File: GCX016.cbl
GIVEN:
Cargo status indicates border hold condition
WHEN:
The system processes border hold requirements
THEN:
- Border hold processing is initiated
- Border location details are prepared
β Consolidated Acceptance Criteria
- The system processes destination hold requirements → destination hold processing is initiated and destination location details are prepared
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_DetermineDestinationHold(["Start Step"])
E_DetermineDestinationHold(["End Step"])
N_DetermineDestinationHold_Node0{"The system processes destination
hold requirements"}:::decision N_DetermineDestinationHold_Node0_action["Destination hold processing is
initiated and destination location
details are prepared"]:::main N_DetermineDestinationHold_Node0 -- Yes --> N_DetermineDestinationHold_Node0_action N_DetermineDestinationHold_Node0_action --> E_DetermineDestinationHold S_DetermineDestinationHold --> N_DetermineDestinationHold_Node0 N_DetermineDestinationHold_Node0 -- No --> E_DetermineDestinationHold
hold requirements"}:::decision N_DetermineDestinationHold_Node0_action["Destination hold processing is
initiated and destination location
details are prepared"]:::main N_DetermineDestinationHold_Node0 -- Yes --> N_DetermineDestinationHold_Node0_action N_DetermineDestinationHold_Node0_action --> E_DetermineDestinationHold S_DetermineDestinationHold --> N_DetermineDestinationHold_Node0 N_DetermineDestinationHold_Node0 -- No --> E_DetermineDestinationHold
File: GCX016.cbl
GIVEN:
Cargo status indicates destination hold condition
WHEN:
The system processes destination hold requirements
THEN:
- Destination hold processing is initiated
- Destination location details are prepared
β Consolidated Acceptance Criteria
- The system needs border location information for message formatting → border station details and location information are retrieved from location tables
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GetBorderLocationDetails(["Start Step"])
E_GetBorderLocationDetails(["End Step"])
N_GetBorderLocationDetails_Node0{"The system needs border location
information for message formatting"}:::decision N_GetBorderLocationDetails_Node0_action["Border station details and location
information are retrieved from
location tables"]:::main N_GetBorderLocationDetails_Node0 -- Yes --> N_GetBorderLocationDetails_Node0_action N_GetBorderLocationDetails_Node0_action --> E_GetBorderLocationDetails S_GetBorderLocationDetails --> N_GetBorderLocationDetails_Node0 N_GetBorderLocationDetails_Node0 -- No --> E_GetBorderLocationDetails
information for message formatting"}:::decision N_GetBorderLocationDetails_Node0_action["Border station details and location
information are retrieved from
location tables"]:::main N_GetBorderLocationDetails_Node0 -- Yes --> N_GetBorderLocationDetails_Node0_action N_GetBorderLocationDetails_Node0_action --> E_GetBorderLocationDetails S_GetBorderLocationDetails --> N_GetBorderLocationDetails_Node0 N_GetBorderLocationDetails_Node0 -- No --> E_GetBorderLocationDetails
File: GCX016.cbl
GIVEN:
Border hold processing is required
WHEN:
The system needs border location information for message formatting
THEN:
- Border station details
- Location information are retrieved from location tables
β Consolidated Acceptance Criteria
- The system needs destination location information for message formatting → destination station details and location information are retrieved from location tables
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GetDestinationLocationDetails(["Start Step"])
E_GetDestinationLocationDetails(["End Step"])
N_GetDestinationLocationDetails_Node0{"The system needs destination
location information for message
formatting"}:::decision N_GetDestinationLocationDetails_Node0_action["Destination station details and
location information are retrieved
from location tables"]:::main N_GetDestinationLocationDetails_Node0 -- Yes --> N_GetDestinationLocationDetails_Node0_action N_GetDestinationLocationDetails_Node0_action --> E_GetDestinationLocationDetails S_GetDestinationLocationDetails --> N_GetDestinationLocationDetails_Node0 N_GetDestinationLocationDetails_Node0 -- No --> E_GetDestinationLocationDetails
location information for message
formatting"}:::decision N_GetDestinationLocationDetails_Node0_action["Destination station details and
location information are retrieved
from location tables"]:::main N_GetDestinationLocationDetails_Node0 -- Yes --> N_GetDestinationLocationDetails_Node0_action N_GetDestinationLocationDetails_Node0_action --> E_GetDestinationLocationDetails S_GetDestinationLocationDetails --> N_GetDestinationLocationDetails_Node0 N_GetDestinationLocationDetails_Node0 -- No --> E_GetDestinationLocationDetails
File: GCX016.cbl
GIVEN:
Destination hold processing is required
WHEN:
The system needs destination location information for message formatting
THEN:
- Destination station details
- Location information are retrieved from location tables
β Consolidated Acceptance Criteria
- The system formats the hold message with location information → hold message is formatted with appropriate location details and station information
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_FormatHoldMessagewithLocation(["Start Step"])
E_FormatHoldMessagewithLocation(["End Step"])
N_FormatHoldMessagewithLocation_Node0{"The system formats the hold message
with location information"}:::decision N_FormatHoldMessagewithLocation_Node0_action["Hold message is formatted with
appropriate location details and
station information"]:::main N_FormatHoldMessagewithLocation_Node0 -- Yes --> N_FormatHoldMessagewithLocation_Node0_action N_FormatHoldMessagewithLocation_Node0_action --> E_FormatHoldMessagewithLocation S_FormatHoldMessagewithLocation --> N_FormatHoldMessagewithLocation_Node0 N_FormatHoldMessagewithLocation_Node0 -- No --> E_FormatHoldMessagewithLocation
with location information"}:::decision N_FormatHoldMessagewithLocation_Node0_action["Hold message is formatted with
appropriate location details and
station information"]:::main N_FormatHoldMessagewithLocation_Node0 -- Yes --> N_FormatHoldMessagewithLocation_Node0_action N_FormatHoldMessagewithLocation_Node0_action --> E_FormatHoldMessagewithLocation S_FormatHoldMessagewithLocation --> N_FormatHoldMessagewithLocation_Node0 N_FormatHoldMessagewithLocation_Node0 -- No --> E_FormatHoldMessagewithLocation
File: GCX016.cbl
GIVEN:
Location details have been retrieved for border or destination holds
WHEN:
The system formats the hold message with location information
THEN:
- Hold message is formatted with appropriate location details
- Station information
β Consolidated Acceptance Criteria
- The system adds cargo information to the message → car ID, waybill number, and cargo identifiers are included in the hold message
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AddCargoInformation(["Start Step"])
E_AddCargoInformation(["End Step"])
N_AddCargoInformation_Node0{"The system adds cargo information
to the message"}:::decision N_AddCargoInformation_Node0_action["Car ID, waybill number, and cargo
identifiers are included in the hold
message"]:::main N_AddCargoInformation_Node0 -- Yes --> N_AddCargoInformation_Node0_action N_AddCargoInformation_Node0_action --> E_AddCargoInformation S_AddCargoInformation --> N_AddCargoInformation_Node0 N_AddCargoInformation_Node0 -- No --> E_AddCargoInformation
to the message"}:::decision N_AddCargoInformation_Node0_action["Car ID, waybill number, and cargo
identifiers are included in the hold
message"]:::main N_AddCargoInformation_Node0 -- Yes --> N_AddCargoInformation_Node0_action N_AddCargoInformation_Node0_action --> E_AddCargoInformation S_AddCargoInformation --> N_AddCargoInformation_Node0 N_AddCargoInformation_Node0 -- No --> E_AddCargoInformation
File: GCX016.cbl
GIVEN:
Hold message with disposition code details exists
WHEN:
The system adds cargo information to the message
THEN:
Car ID, waybill number, and cargo identifiers are included in the hold message
β Consolidated Acceptance Criteria
- The system determines the specific message type needed → message type is identified as border hold, destination hold, or combined hold message
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MessageTypeRequired(["Start Step"])
E_MessageTypeRequired(["End Step"])
N_MessageTypeRequired_Node0{"The system determines the specific
message type needed"}:::decision N_MessageTypeRequired_Node0_action["Message type is identified as
border hold, destination hold, or
combined hold message"]:::main N_MessageTypeRequired_Node0 -- Yes --> N_MessageTypeRequired_Node0_action N_MessageTypeRequired_Node0_action --> E_MessageTypeRequired S_MessageTypeRequired --> N_MessageTypeRequired_Node0 N_MessageTypeRequired_Node0 -- No --> E_MessageTypeRequired
message type needed"}:::decision N_MessageTypeRequired_Node0_action["Message type is identified as
border hold, destination hold, or
combined hold message"]:::main N_MessageTypeRequired_Node0 -- Yes --> N_MessageTypeRequired_Node0_action N_MessageTypeRequired_Node0_action --> E_MessageTypeRequired S_MessageTypeRequired --> N_MessageTypeRequired_Node0 N_MessageTypeRequired_Node0 -- No --> E_MessageTypeRequired
File: GCX016.cbl
GIVEN:
Hold message has been formatted with all required information
WHEN:
The system determines the specific message type needed
THEN:
Message type is identified as border hold, destination hold, or combined hold message
β Consolidated Acceptance Criteria
- The system generates the border hold message → border-specific hold message is created with border location details
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GenerateBorderHoldMessage(["Start Step"])
E_GenerateBorderHoldMessage(["End Step"])
N_GenerateBorderHoldMessage_Node0{"The system generates the border
hold message"}:::decision N_GenerateBorderHoldMessage_Node0_action["Border-specific hold message is
created with border location details"]:::main N_GenerateBorderHoldMessage_Node0 -- Yes --> N_GenerateBorderHoldMessage_Node0_action N_GenerateBorderHoldMessage_Node0_action --> E_GenerateBorderHoldMessage S_GenerateBorderHoldMessage --> N_GenerateBorderHoldMessage_Node0 N_GenerateBorderHoldMessage_Node0 -- No --> E_GenerateBorderHoldMessage
hold message"}:::decision N_GenerateBorderHoldMessage_Node0_action["Border-specific hold message is
created with border location details"]:::main N_GenerateBorderHoldMessage_Node0 -- Yes --> N_GenerateBorderHoldMessage_Node0_action N_GenerateBorderHoldMessage_Node0_action --> E_GenerateBorderHoldMessage S_GenerateBorderHoldMessage --> N_GenerateBorderHoldMessage_Node0 N_GenerateBorderHoldMessage_Node0 -- No --> E_GenerateBorderHoldMessage
File: GCX016.cbl
GIVEN:
Message type is determined as border hold
WHEN:
The system generates the border hold message
THEN:
Border-specific hold message is created with border location details
β Consolidated Acceptance Criteria
- The system generates the destination hold message → destination-specific hold message is created with destination location details
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GenerateDestinationHoldMessage(["Start Step"])
E_GenerateDestinationHoldMessage(["End Step"])
N_GenerateDestinationHoldMessage_Node0{"The system generates the
destination hold message"}:::decision N_GenerateDestinationHoldMessage_Node0_action["Destination-specific hold message
is created with destination location
details"]:::main N_GenerateDestinationHoldMessage_Node0 -- Yes --> N_GenerateDestinationHoldMessage_Node0_action N_GenerateDestinationHoldMessage_Node0_action --> E_GenerateDestinationHoldMessage S_GenerateDestinationHoldMessage --> N_GenerateDestinationHoldMessage_Node0 N_GenerateDestinationHoldMessage_Node0 -- No --> E_GenerateDestinationHoldMessage
destination hold message"}:::decision N_GenerateDestinationHoldMessage_Node0_action["Destination-specific hold message
is created with destination location
details"]:::main N_GenerateDestinationHoldMessage_Node0 -- Yes --> N_GenerateDestinationHoldMessage_Node0_action N_GenerateDestinationHoldMessage_Node0_action --> E_GenerateDestinationHoldMessage S_GenerateDestinationHoldMessage --> N_GenerateDestinationHoldMessage_Node0 N_GenerateDestinationHoldMessage_Node0 -- No --> E_GenerateDestinationHoldMessage
File: GCX016.cbl
GIVEN:
Message type is determined as destination hold
WHEN:
The system generates the destination hold message
THEN:
Destination-specific hold message is created with destination location details
β Consolidated Acceptance Criteria
- The system routes the message to appropriate recipients → hold message is sent to relevant users, brokers, and notification systems
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RouteMessagetoAppropriateUsers(["Start Step"])
E_RouteMessagetoAppropriateUsers(["End Step"])
N_RouteMessagetoAppropriateUsers_Node0{"The system routes the message to
appropriate recipients"}:::decision N_RouteMessagetoAppropriateUsers_Node0_action["Hold message is sent to relevant
users, brokers, and notification
systems"]:::main N_RouteMessagetoAppropriateUsers_Node0 -- Yes --> N_RouteMessagetoAppropriateUsers_Node0_action N_RouteMessagetoAppropriateUsers_Node0_action --> E_RouteMessagetoAppropriateUsers S_RouteMessagetoAppropriateUsers --> N_RouteMessagetoAppropriateUsers_Node0 N_RouteMessagetoAppropriateUsers_Node0 -- No --> E_RouteMessagetoAppropriateUsers
appropriate recipients"}:::decision N_RouteMessagetoAppropriateUsers_Node0_action["Hold message is sent to relevant
users, brokers, and notification
systems"]:::main N_RouteMessagetoAppropriateUsers_Node0 -- Yes --> N_RouteMessagetoAppropriateUsers_Node0_action N_RouteMessagetoAppropriateUsers_Node0_action --> E_RouteMessagetoAppropriateUsers S_RouteMessagetoAppropriateUsers --> N_RouteMessagetoAppropriateUsers_Node0 N_RouteMessagetoAppropriateUsers_Node0 -- No --> E_RouteMessagetoAppropriateUsers
File: GCX016.cbl
GIVEN:
Hold message has been generated (border or destination)
WHEN:
The system routes the message to appropriate recipients
THEN:
Hold message is sent to relevant users, brokers, and notification systems
β Consolidated Acceptance Criteria
- The system logs the hold message details → hold message information is recorded in system logs with timestamp and recipient details
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogHoldMessageDetails(["Start Step"])
E_LogHoldMessageDetails(["End Step"])
N_LogHoldMessageDetails_Node0{"The system logs the hold message
details"}:::decision N_LogHoldMessageDetails_Node0_action["Hold message information is
recorded in system logs with
timestamp and recipient details"]:::main N_LogHoldMessageDetails_Node0 -- Yes --> N_LogHoldMessageDetails_Node0_action N_LogHoldMessageDetails_Node0_action --> E_LogHoldMessageDetails S_LogHoldMessageDetails --> N_LogHoldMessageDetails_Node0 N_LogHoldMessageDetails_Node0 -- No --> E_LogHoldMessageDetails
details"}:::decision N_LogHoldMessageDetails_Node0_action["Hold message information is
recorded in system logs with
timestamp and recipient details"]:::main N_LogHoldMessageDetails_Node0 -- Yes --> N_LogHoldMessageDetails_Node0_action N_LogHoldMessageDetails_Node0_action --> E_LogHoldMessageDetails S_LogHoldMessageDetails --> N_LogHoldMessageDetails_Node0 N_LogHoldMessageDetails_Node0 -- No --> E_LogHoldMessageDetails
File: GCX016.cbl
GIVEN:
Hold message has been routed to appropriate users
WHEN:
The system logs the hold message details
THEN:
- Hold message information is recorded in system logs with timestamp
- Recipient details
β Consolidated Acceptance Criteria
- The hold message generation process completes → system returns successful completion status and control to the calling process
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_HoldMessageGenerationComplete(["Start Step"])
E_HoldMessageGenerationComplete(["End Step"])
N_HoldMessageGenerationComplete_Node0{"The hold message generation process
completes"}:::decision N_HoldMessageGenerationComplete_Node0_action["System returns successful
completion status and control to the
calling process"]:::main N_HoldMessageGenerationComplete_Node0 -- Yes --> N_HoldMessageGenerationComplete_Node0_action N_HoldMessageGenerationComplete_Node0_action --> E_HoldMessageGenerationComplete S_HoldMessageGenerationComplete --> N_HoldMessageGenerationComplete_Node0 N_HoldMessageGenerationComplete_Node0 -- No --> E_HoldMessageGenerationComplete
completes"}:::decision N_HoldMessageGenerationComplete_Node0_action["System returns successful
completion status and control to the
calling process"]:::main N_HoldMessageGenerationComplete_Node0 -- Yes --> N_HoldMessageGenerationComplete_Node0_action N_HoldMessageGenerationComplete_Node0_action --> E_HoldMessageGenerationComplete S_HoldMessageGenerationComplete --> N_HoldMessageGenerationComplete_Node0 N_HoldMessageGenerationComplete_Node0 -- No --> E_HoldMessageGenerationComplete
File: GCX016.cbl
GIVEN:
Hold message has been generated, routed, and logged
WHEN:
The hold message generation process completes
THEN:
- System returns successful completion status
- Control to the calling process
β Consolidated Acceptance Criteria
- The system checks for status code presence → if status code is not spaces and not low-values, proceed with analysis, otherwise skip to next element
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_StatusCodeFound(["Start Step"])
E_StatusCodeFound(["End Step"])
N_StatusCodeFound_Node0{"The system checks for status code
presence"}:::decision N_StatusCodeFound_Node0_action["If status code is not spaces and
not low-values, proceed with
analysis, otherwise skip to next
element"]:::main N_StatusCodeFound_Node0 -- Yes --> N_StatusCodeFound_Node0_action N_StatusCodeFound_Node0_action --> E_StatusCodeFound S_StatusCodeFound --> N_StatusCodeFound_Node0 N_StatusCodeFound_Node0 -- No --> E_StatusCodeFound
presence"}:::decision N_StatusCodeFound_Node0_action["If status code is not spaces and
not low-values, proceed with
analysis, otherwise skip to next
element"]:::main N_StatusCodeFound_Node0 -- Yes --> N_StatusCodeFound_Node0_action N_StatusCodeFound_Node0_action --> E_StatusCodeFound S_StatusCodeFound --> N_StatusCodeFound_Node0 N_StatusCodeFound_Node0 -- No --> E_StatusCodeFound
File: GCX016.cbl
GIVEN:
An S09A array element is being examined
WHEN:
The system checks for status code presence
THEN:
- If status code is not spaces
- Not low-values, proceed with analysis, otherwise skip to next element
β Consolidated Acceptance Criteria
- The system analyzes the disposition code → the code is categorized as hold, release, PTT, proceed, arrival, export, or FDA hold type
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AnalyzeDispositionCodeType(["Start Step"])
E_AnalyzeDispositionCodeType(["End Step"])
N_AnalyzeDispositionCodeType_Node0{"The system analyzes the disposition
code"}:::decision N_AnalyzeDispositionCodeType_Node0_action["The code is categorized as hold,
release, PTT, proceed, arrival,
export, or FDA hold type"]:::main N_AnalyzeDispositionCodeType_Node0 -- Yes --> N_AnalyzeDispositionCodeType_Node0_action N_AnalyzeDispositionCodeType_Node0_action --> E_AnalyzeDispositionCodeType S_AnalyzeDispositionCodeType --> N_AnalyzeDispositionCodeType_Node0 N_AnalyzeDispositionCodeType_Node0 -- No --> E_AnalyzeDispositionCodeType
code"}:::decision N_AnalyzeDispositionCodeType_Node0_action["The code is categorized as hold,
release, PTT, proceed, arrival,
export, or FDA hold type"]:::main N_AnalyzeDispositionCodeType_Node0 -- Yes --> N_AnalyzeDispositionCodeType_Node0_action N_AnalyzeDispositionCodeType_Node0_action --> E_AnalyzeDispositionCodeType S_AnalyzeDispositionCodeType --> N_AnalyzeDispositionCodeType_Node0 N_AnalyzeDispositionCodeType_Node0 -- No --> E_AnalyzeDispositionCodeType
File: GCX016.cbl
GIVEN:
A valid status code exists in the array element
WHEN:
The system analyzes the disposition code
THEN:
The code is categorized as hold, release, PTT, proceed, arrival, export, or FDA hold type
β Consolidated Acceptance Criteria
- The system processes the release quantity → the released quantity is added to the total released quantity counter
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CalculateReleasedQuantity(["Start Step"])
E_CalculateReleasedQuantity(["End Step"])
N_CalculateReleasedQuantity_Node0{"The system processes the release
quantity"}:::decision N_CalculateReleasedQuantity_Node0_action["The released quantity is added to
the total released quantity counter"]:::main N_CalculateReleasedQuantity_Node0 -- Yes --> N_CalculateReleasedQuantity_Node0_action N_CalculateReleasedQuantity_Node0_action --> E_CalculateReleasedQuantity S_CalculateReleasedQuantity --> N_CalculateReleasedQuantity_Node0 N_CalculateReleasedQuantity_Node0 -- No --> E_CalculateReleasedQuantity
quantity"}:::decision N_CalculateReleasedQuantity_Node0_action["The released quantity is added to
the total released quantity counter"]:::main N_CalculateReleasedQuantity_Node0 -- Yes --> N_CalculateReleasedQuantity_Node0_action N_CalculateReleasedQuantity_Node0_action --> E_CalculateReleasedQuantity S_CalculateReleasedQuantity --> N_CalculateReleasedQuantity_Node0 N_CalculateReleasedQuantity_Node0 -- No --> E_CalculateReleasedQuantity
File: GCX016.cbl
GIVEN:
A release status code with associated quantity exists
WHEN:
The system processes the release quantity
THEN:
The released quantity is added to the total released quantity counter
β Consolidated Acceptance Criteria
- The system validates PTT quantity requirements → the PTT quantity is verified against business rules and thresholds
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ValidatePTTQuantity(["Start Step"])
E_ValidatePTTQuantity(["End Step"])
N_ValidatePTTQuantity_Node0{"The system validates PTT quantity
requirements"}:::decision N_ValidatePTTQuantity_Node0_action["The PTT quantity is verified
against business rules and
thresholds"]:::main N_ValidatePTTQuantity_Node0 -- Yes --> N_ValidatePTTQuantity_Node0_action N_ValidatePTTQuantity_Node0_action --> E_ValidatePTTQuantity S_ValidatePTTQuantity --> N_ValidatePTTQuantity_Node0 N_ValidatePTTQuantity_Node0 -- No --> E_ValidatePTTQuantity
requirements"}:::decision N_ValidatePTTQuantity_Node0_action["The PTT quantity is verified
against business rules and
thresholds"]:::main N_ValidatePTTQuantity_Node0 -- Yes --> N_ValidatePTTQuantity_Node0_action N_ValidatePTTQuantity_Node0_action --> E_ValidatePTTQuantity S_ValidatePTTQuantity --> N_ValidatePTTQuantity_Node0 N_ValidatePTTQuantity_Node0 -- No --> E_ValidatePTTQuantity
File: GCX016.cbl
GIVEN:
A PTT status code with associated quantity exists
WHEN:
The system validates PTT quantity requirements
THEN:
- The ptt quantity is verified against business rules
- Thresholds
β Consolidated Acceptance Criteria
- The system sets border arrival information → the border arrival date is recorded from the status code date information
- The system sets the border arrival date → the border arrival date is established based on current cargo arrival status and timing information
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetBorderArrivalDate(["Start Step"])
E_SetBorderArrivalDate(["End Step"])
N_SetBorderArrivalDate_Node0{"The system sets border arrival
information"}:::decision N_SetBorderArrivalDate_Node0_action["The border arrival date is recorded
from the status code date
information"]:::main N_SetBorderArrivalDate_Node0 -- Yes --> N_SetBorderArrivalDate_Node0_action N_SetBorderArrivalDate_Node0_action --> E_SetBorderArrivalDate S_SetBorderArrivalDate --> N_SetBorderArrivalDate_Node0 N_SetBorderArrivalDate_Node1{"The system sets the border arrival
date"}:::decision N_SetBorderArrivalDate_Node1_action["The border arrival date is
established based on current cargo
arrival status and timing
information"]:::main N_SetBorderArrivalDate_Node1 -- Yes --> N_SetBorderArrivalDate_Node1_action N_SetBorderArrivalDate_Node1_action --> E_SetBorderArrivalDate N_SetBorderArrivalDate_Node0 -- No --> N_SetBorderArrivalDate_Node1 N_SetBorderArrivalDate_Node1 -- No --> E_SetBorderArrivalDate
information"}:::decision N_SetBorderArrivalDate_Node0_action["The border arrival date is recorded
from the status code date
information"]:::main N_SetBorderArrivalDate_Node0 -- Yes --> N_SetBorderArrivalDate_Node0_action N_SetBorderArrivalDate_Node0_action --> E_SetBorderArrivalDate S_SetBorderArrivalDate --> N_SetBorderArrivalDate_Node0 N_SetBorderArrivalDate_Node1{"The system sets the border arrival
date"}:::decision N_SetBorderArrivalDate_Node1_action["The border arrival date is
established based on current cargo
arrival status and timing
information"]:::main N_SetBorderArrivalDate_Node1 -- Yes --> N_SetBorderArrivalDate_Node1_action N_SetBorderArrivalDate_Node1_action --> E_SetBorderArrivalDate N_SetBorderArrivalDate_Node0 -- No --> N_SetBorderArrivalDate_Node1 N_SetBorderArrivalDate_Node1 -- No --> E_SetBorderArrivalDate
File: GCX016.cbl
GIVEN:
A proceed status code has been processed
WHEN:
The system sets border arrival information
THEN:
The border arrival date is recorded from the status code date information
File: GCX016.cbl
GIVEN:
New destination index parameters are being calculated AND border arrival information is available
WHEN:
The system sets the border arrival date
THEN:
- The border arrival date is established based on current cargo arrival status
- Timing information
β Consolidated Acceptance Criteria
- The system processes the FDA hold code → the FDA hold flag is set to true for destination location
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetFDAHoldFlagatDestination(["Start Step"])
E_SetFDAHoldFlagatDestination(["End Step"])
N_SetFDAHoldFlagatDestination_Node0{"The system processes the FDA hold
code"}:::decision N_SetFDAHoldFlagatDestination_Node0_action["The FDA hold flag is set to true
for destination location"]:::main N_SetFDAHoldFlagatDestination_Node0 -- Yes --> N_SetFDAHoldFlagatDestination_Node0_action N_SetFDAHoldFlagatDestination_Node0_action --> E_SetFDAHoldFlagatDestination S_SetFDAHoldFlagatDestination --> N_SetFDAHoldFlagatDestination_Node0 N_SetFDAHoldFlagatDestination_Node0 -- No --> E_SetFDAHoldFlagatDestination
code"}:::decision N_SetFDAHoldFlagatDestination_Node0_action["The FDA hold flag is set to true
for destination location"]:::main N_SetFDAHoldFlagatDestination_Node0 -- Yes --> N_SetFDAHoldFlagatDestination_Node0_action N_SetFDAHoldFlagatDestination_Node0_action --> E_SetFDAHoldFlagatDestination S_SetFDAHoldFlagatDestination --> N_SetFDAHoldFlagatDestination_Node0 N_SetFDAHoldFlagatDestination_Node0 -- No --> E_SetFDAHoldFlagatDestination
File: GCX016.cbl
GIVEN:
An FDA hold disposition code has been identified
WHEN:
The system processes the FDA hold code
THEN:
The FDA hold flag is set to true for destination location
β Consolidated Acceptance Criteria
- The system continues array scanning → processing moves to the next array element for analysis
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ContinueArrayScan(["Start Step"])
E_ContinueArrayScan(["End Step"])
N_ContinueArrayScan_Node0{"The system continues array scanning"}:::decision
N_ContinueArrayScan_Node0_action["Processing moves to the next array
element for analysis"]:::main N_ContinueArrayScan_Node0 -- Yes --> N_ContinueArrayScan_Node0_action N_ContinueArrayScan_Node0_action --> E_ContinueArrayScan S_ContinueArrayScan --> N_ContinueArrayScan_Node0 N_ContinueArrayScan_Node0 -- No --> E_ContinueArrayScan
element for analysis"]:::main N_ContinueArrayScan_Node0 -- Yes --> N_ContinueArrayScan_Node0_action N_ContinueArrayScan_Node0_action --> E_ContinueArrayScan S_ContinueArrayScan --> N_ContinueArrayScan_Node0 N_ContinueArrayScan_Node0 -- No --> E_ContinueArrayScan
File: GCX016.cbl
GIVEN:
Current array element processing is complete
WHEN:
The system continues array scanning
THEN:
Processing moves to the next array element for analysis
β Consolidated Acceptance Criteria
- The system compares released quantity to total quantity → if released quantity is less than total quantity, partial release status is identified
- The remaining quantity is greater than zero → the cargo is marked as partially released
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_PartialRelease(["Start Step"])
E_PartialRelease(["End Step"])
N_PartialRelease_Node0{"The system compares released
quantity to total quantity"}:::decision N_PartialRelease_Node0_action["If released quantity is less than
total quantity, partial release
status is identified"]:::main N_PartialRelease_Node0 -- Yes --> N_PartialRelease_Node0_action N_PartialRelease_Node0_action --> E_PartialRelease S_PartialRelease --> N_PartialRelease_Node0 N_PartialRelease_Node1{"The remaining quantity is greater
than zero"}:::decision N_PartialRelease_Node1_action["The cargo is marked as partially
released"]:::main N_PartialRelease_Node1 -- Yes --> N_PartialRelease_Node1_action N_PartialRelease_Node1_action --> E_PartialRelease N_PartialRelease_Node0 -- No --> N_PartialRelease_Node1 N_PartialRelease_Node1 -- No --> E_PartialRelease
quantity to total quantity"}:::decision N_PartialRelease_Node0_action["If released quantity is less than
total quantity, partial release
status is identified"]:::main N_PartialRelease_Node0 -- Yes --> N_PartialRelease_Node0_action N_PartialRelease_Node0_action --> E_PartialRelease S_PartialRelease --> N_PartialRelease_Node0 N_PartialRelease_Node1{"The remaining quantity is greater
than zero"}:::decision N_PartialRelease_Node1_action["The cargo is marked as partially
released"]:::main N_PartialRelease_Node1 -- Yes --> N_PartialRelease_Node1_action N_PartialRelease_Node1_action --> E_PartialRelease N_PartialRelease_Node0 -- No --> N_PartialRelease_Node1 N_PartialRelease_Node1 -- No --> E_PartialRelease
File: GCX016.cbl
GIVEN:
Release quantities and total quantities are available
WHEN:
The system compares released quantity to total quantity
THEN:
If released quantity is less than total quantity, partial release status is identified
File: GCX016.cbl
GIVEN:
A valid remaining quantity exists for a cargo record
WHEN:
The remaining quantity is greater than zero
THEN:
The cargo is marked as partially released
β Consolidated Acceptance Criteria
- The system processes partial release conditions → hold on piece count status is set to indicate remaining quantity is held
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetHoldonPieceCountStatus(["Start Step"])
E_SetHoldonPieceCountStatus(["End Step"])
N_SetHoldonPieceCountStatus_Node0{"The system processes partial
release conditions"}:::decision N_SetHoldonPieceCountStatus_Node0_action["Hold on piece count status is set
to indicate remaining quantity is
held"]:::main N_SetHoldonPieceCountStatus_Node0 -- Yes --> N_SetHoldonPieceCountStatus_Node0_action N_SetHoldonPieceCountStatus_Node0_action --> E_SetHoldonPieceCountStatus S_SetHoldonPieceCountStatus --> N_SetHoldonPieceCountStatus_Node0 N_SetHoldonPieceCountStatus_Node0 -- No --> E_SetHoldonPieceCountStatus
release conditions"}:::decision N_SetHoldonPieceCountStatus_Node0_action["Hold on piece count status is set
to indicate remaining quantity is
held"]:::main N_SetHoldonPieceCountStatus_Node0 -- Yes --> N_SetHoldonPieceCountStatus_Node0_action N_SetHoldonPieceCountStatus_Node0_action --> E_SetHoldonPieceCountStatus S_SetHoldonPieceCountStatus --> N_SetHoldonPieceCountStatus_Node0 N_SetHoldonPieceCountStatus_Node0 -- No --> E_SetHoldonPieceCountStatus
File: GCX016.cbl
GIVEN:
Partial release status has been identified
WHEN:
The system processes partial release conditions
THEN:
Hold on piece count status is set to indicate remaining quantity is held
β Consolidated Acceptance Criteria
- The system compares released quantity to total quantity → if released quantity equals or exceeds total quantity, full release status is identified
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_FullRelease(["Start Step"])
E_FullRelease(["End Step"])
N_FullRelease_Node0{"The system compares released
quantity to total quantity"}:::decision N_FullRelease_Node0_action["If released quantity equals or
exceeds total quantity, full release
status is identified"]:::main N_FullRelease_Node0 -- Yes --> N_FullRelease_Node0_action N_FullRelease_Node0_action --> E_FullRelease S_FullRelease --> N_FullRelease_Node0 N_FullRelease_Node0 -- No --> E_FullRelease
quantity to total quantity"}:::decision N_FullRelease_Node0_action["If released quantity equals or
exceeds total quantity, full release
status is identified"]:::main N_FullRelease_Node0 -- Yes --> N_FullRelease_Node0_action N_FullRelease_Node0_action --> E_FullRelease S_FullRelease --> N_FullRelease_Node0 N_FullRelease_Node0 -- No --> E_FullRelease
File: GCX016.cbl
GIVEN:
Release quantities and total quantities are available
WHEN:
The system compares released quantity to total quantity
THEN:
If released quantity equals or exceeds total quantity, full release status is identified
β Consolidated Acceptance Criteria
- The system processes unrelease conditions → the unrelease notification flag is set to trigger appropriate notifications
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetUnreleaseNotificationFlag(["Start Step"])
E_SetUnreleaseNotificationFlag(["End Step"])
N_SetUnreleaseNotificationFlag_Node0{"The system processes unrelease
conditions"}:::decision N_SetUnreleaseNotificationFlag_Node0_action["The unrelease notification flag is
set to trigger appropriate
notifications"]:::main N_SetUnreleaseNotificationFlag_Node0 -- Yes --> N_SetUnreleaseNotificationFlag_Node0_action N_SetUnreleaseNotificationFlag_Node0_action --> E_SetUnreleaseNotificationFlag S_SetUnreleaseNotificationFlag --> N_SetUnreleaseNotificationFlag_Node0 N_SetUnreleaseNotificationFlag_Node0 -- No --> E_SetUnreleaseNotificationFlag
conditions"}:::decision N_SetUnreleaseNotificationFlag_Node0_action["The unrelease notification flag is
set to trigger appropriate
notifications"]:::main N_SetUnreleaseNotificationFlag_Node0 -- Yes --> N_SetUnreleaseNotificationFlag_Node0_action N_SetUnreleaseNotificationFlag_Node0_action --> E_SetUnreleaseNotificationFlag S_SetUnreleaseNotificationFlag --> N_SetUnreleaseNotificationFlag_Node0 N_SetUnreleaseNotificationFlag_Node0 -- No --> E_SetUnreleaseNotificationFlag
File: GCX016.cbl
GIVEN:
Unrelease condition has been detected
WHEN:
The system processes unrelease conditions
THEN:
The unrelease notification flag is set to trigger appropriate notifications
β Consolidated Acceptance Criteria
- The system checks age calculation requirements → if business rules require age calculation, proceed with Julian date calculation
- Age calculation is required for the cargo → the system calculates cargo age using Julian date conversion and re-establishes the destination index
- If cargo processing requirements → processing branches to age calculation if required, or continues to destination index re-establishment if not required
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AgeCalculationRequired(["Start Step"])
E_AgeCalculationRequired(["End Step"])
N_AgeCalculationRequired_Node0{"The system checks age calculation
requirements"}:::decision N_AgeCalculationRequired_Node0_action["If business rules require age
calculation, proceed with Julian
date calculation"]:::main N_AgeCalculationRequired_Node0 -- Yes --> N_AgeCalculationRequired_Node0_action N_AgeCalculationRequired_Node0_action --> E_AgeCalculationRequired S_AgeCalculationRequired --> N_AgeCalculationRequired_Node0 N_AgeCalculationRequired_Node1{"Age calculation is required for the
cargo"}:::decision N_AgeCalculationRequired_Node1_action["The system calculates cargo age
using Julian date conversion and
re-establishes the destination index"]:::main N_AgeCalculationRequired_Node1 -- Yes --> N_AgeCalculationRequired_Node1_action N_AgeCalculationRequired_Node1_action --> E_AgeCalculationRequired N_AgeCalculationRequired_Node0 -- No --> N_AgeCalculationRequired_Node1 N_AgeCalculationRequired_Node2{"The system evaluates cargo
processing requirements"}:::decision N_AgeCalculationRequired_Node2_action["Processing branches to age
calculation if required, or
continues to destination index
re-establishment if not required"]:::main N_AgeCalculationRequired_Node2 -- Yes --> N_AgeCalculationRequired_Node2_action N_AgeCalculationRequired_Node2_action --> E_AgeCalculationRequired N_AgeCalculationRequired_Node1 -- No --> N_AgeCalculationRequired_Node2 N_AgeCalculationRequired_Node2 -- No --> E_AgeCalculationRequired
requirements"}:::decision N_AgeCalculationRequired_Node0_action["If business rules require age
calculation, proceed with Julian
date calculation"]:::main N_AgeCalculationRequired_Node0 -- Yes --> N_AgeCalculationRequired_Node0_action N_AgeCalculationRequired_Node0_action --> E_AgeCalculationRequired S_AgeCalculationRequired --> N_AgeCalculationRequired_Node0 N_AgeCalculationRequired_Node1{"Age calculation is required for the
cargo"}:::decision N_AgeCalculationRequired_Node1_action["The system calculates cargo age
using Julian date conversion and
re-establishes the destination index"]:::main N_AgeCalculationRequired_Node1 -- Yes --> N_AgeCalculationRequired_Node1_action N_AgeCalculationRequired_Node1_action --> E_AgeCalculationRequired N_AgeCalculationRequired_Node0 -- No --> N_AgeCalculationRequired_Node1 N_AgeCalculationRequired_Node2{"The system evaluates cargo
processing requirements"}:::decision N_AgeCalculationRequired_Node2_action["Processing branches to age
calculation if required, or
continues to destination index
re-establishment if not required"]:::main N_AgeCalculationRequired_Node2 -- Yes --> N_AgeCalculationRequired_Node2_action N_AgeCalculationRequired_Node2_action --> E_AgeCalculationRequired N_AgeCalculationRequired_Node1 -- No --> N_AgeCalculationRequired_Node2 N_AgeCalculationRequired_Node2 -- No --> E_AgeCalculationRequired
File: GCX016.cbl
GIVEN:
Cargo status analysis is nearing completion
WHEN:
The system checks age calculation requirements
THEN:
If business rules require age calculation, proceed with Julian date calculation
File: GCX016.cbl
GIVEN:
A cargo record has completed unrelease processing or no unrelease was detected
WHEN:
Age calculation is required for the cargo
THEN:
- The system calculates cargo age using julian date conversion
- Re-establishes the destination index
File: GCX016.cbl
GIVEN:
Cargo status information has been restored
WHEN:
The system evaluates cargo processing requirements
THEN:
Processing branches to age calculation if required, or continues to destination index re-establishment if not required
β Consolidated Acceptance Criteria
- The system calculates cargo age → cargo age is computed using Julian date conversion and current date comparison
- Age calculation is required for cargo processing → the system calculates cargo age using Julian date conversion methods
- The system needs to determine cargo age → the system calculates cargo age using Julian date format
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CalculateCargoAgeusingJulianDate(["Start Step"])
E_CalculateCargoAgeusingJulianDate(["End Step"])
N_CalculateCargoAgeusingJulianDate_Node0{"The system calculates cargo age"}:::decision
N_CalculateCargoAgeusingJulianDate_Node0_action["Cargo age is computed using Julian
date conversion and current date
comparison"]:::main N_CalculateCargoAgeusingJulianDate_Node0 -- Yes --> N_CalculateCargoAgeusingJulianDate_Node0_action N_CalculateCargoAgeusingJulianDate_Node0_action --> E_CalculateCargoAgeusingJulianDate S_CalculateCargoAgeusingJulianDate --> N_CalculateCargoAgeusingJulianDate_Node0 N_CalculateCargoAgeusingJulianDate_Node1{"Age calculation is required for
cargo processing"}:::decision N_CalculateCargoAgeusingJulianDate_Node1_action["The system calculates cargo age
using Julian date conversion methods"]:::main N_CalculateCargoAgeusingJulianDate_Node1 -- Yes --> N_CalculateCargoAgeusingJulianDate_Node1_action N_CalculateCargoAgeusingJulianDate_Node1_action --> E_CalculateCargoAgeusingJulianDate N_CalculateCargoAgeusingJulianDate_Node0 -- No --> N_CalculateCargoAgeusingJulianDate_Node1 N_CalculateCargoAgeusingJulianDate_Node2{"The system needs to determine cargo
age"}:::decision N_CalculateCargoAgeusingJulianDate_Node2_action["The system calculates cargo age
using Julian date format"]:::main N_CalculateCargoAgeusingJulianDate_Node2 -- Yes --> N_CalculateCargoAgeusingJulianDate_Node2_action N_CalculateCargoAgeusingJulianDate_Node2_action --> E_CalculateCargoAgeusingJulianDate N_CalculateCargoAgeusingJulianDate_Node1 -- No --> N_CalculateCargoAgeusingJulianDate_Node2 N_CalculateCargoAgeusingJulianDate_Node2 -- No --> E_CalculateCargoAgeusingJulianDate
date conversion and current date
comparison"]:::main N_CalculateCargoAgeusingJulianDate_Node0 -- Yes --> N_CalculateCargoAgeusingJulianDate_Node0_action N_CalculateCargoAgeusingJulianDate_Node0_action --> E_CalculateCargoAgeusingJulianDate S_CalculateCargoAgeusingJulianDate --> N_CalculateCargoAgeusingJulianDate_Node0 N_CalculateCargoAgeusingJulianDate_Node1{"Age calculation is required for
cargo processing"}:::decision N_CalculateCargoAgeusingJulianDate_Node1_action["The system calculates cargo age
using Julian date conversion methods"]:::main N_CalculateCargoAgeusingJulianDate_Node1 -- Yes --> N_CalculateCargoAgeusingJulianDate_Node1_action N_CalculateCargoAgeusingJulianDate_Node1_action --> E_CalculateCargoAgeusingJulianDate N_CalculateCargoAgeusingJulianDate_Node0 -- No --> N_CalculateCargoAgeusingJulianDate_Node1 N_CalculateCargoAgeusingJulianDate_Node2{"The system needs to determine cargo
age"}:::decision N_CalculateCargoAgeusingJulianDate_Node2_action["The system calculates cargo age
using Julian date format"]:::main N_CalculateCargoAgeusingJulianDate_Node2 -- Yes --> N_CalculateCargoAgeusingJulianDate_Node2_action N_CalculateCargoAgeusingJulianDate_Node2_action --> E_CalculateCargoAgeusingJulianDate N_CalculateCargoAgeusingJulianDate_Node1 -- No --> N_CalculateCargoAgeusingJulianDate_Node2 N_CalculateCargoAgeusingJulianDate_Node2 -- No --> E_CalculateCargoAgeusingJulianDate
File: GCX016.cbl
GIVEN:
Age calculation is required and cargo dates are available
WHEN:
The system calculates cargo age
THEN:
- Cargo age is computed using julian date conversion
- Current date comparison
File: GCX016.cbl
GIVEN:
A cargo record requiring age calculation
WHEN:
Age calculation is required for cargo processing
THEN:
The system calculates cargo age using Julian date conversion methods
File: GCX016.cbl
GIVEN:
A cargo record requires age calculation for processing decisions
WHEN:
The system needs to determine cargo age
THEN:
The system calculates cargo age using Julian date format
β Consolidated Acceptance Criteria
- The system sets final status flags → all relevant status flags are set to reflect the final cargo state
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetFinalStatusFlags(["Start Step"])
E_SetFinalStatusFlags(["End Step"])
N_SetFinalStatusFlags_Node0{"The system sets final status flags"}:::decision
N_SetFinalStatusFlags_Node0_action["All relevant status flags are set
to reflect the final cargo state"]:::main N_SetFinalStatusFlags_Node0 -- Yes --> N_SetFinalStatusFlags_Node0_action N_SetFinalStatusFlags_Node0_action --> E_SetFinalStatusFlags S_SetFinalStatusFlags --> N_SetFinalStatusFlags_Node0 N_SetFinalStatusFlags_Node0 -- No --> E_SetFinalStatusFlags
to reflect the final cargo state"]:::main N_SetFinalStatusFlags_Node0 -- Yes --> N_SetFinalStatusFlags_Node0_action N_SetFinalStatusFlags_Node0_action --> E_SetFinalStatusFlags S_SetFinalStatusFlags --> N_SetFinalStatusFlags_Node0 N_SetFinalStatusFlags_Node0 -- No --> E_SetFinalStatusFlags
File: GCX016.cbl
GIVEN:
All status analysis and calculations are complete
WHEN:
The system sets final status flags
THEN:
All relevant status flags are set to reflect the final cargo state
β Consolidated Acceptance Criteria
- The system finalizes status transition analysis → the analysis is marked complete and results are available for further processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_StatusTransitionAnalysisComplete(["Start Step"])
E_StatusTransitionAnalysisComplete(["End Step"])
N_StatusTransitionAnalysisComplete_Node0{"The system finalizes status
transition analysis"}:::decision N_StatusTransitionAnalysisComplete_Node0_action["The analysis is marked complete and
results are available for further
processing"]:::main N_StatusTransitionAnalysisComplete_Node0 -- Yes --> N_StatusTransitionAnalysisComplete_Node0_action N_StatusTransitionAnalysisComplete_Node0_action --> E_StatusTransitionAnalysisComplete S_StatusTransitionAnalysisComplete --> N_StatusTransitionAnalysisComplete_Node0 N_StatusTransitionAnalysisComplete_Node0 -- No --> E_StatusTransitionAnalysisComplete
transition analysis"}:::decision N_StatusTransitionAnalysisComplete_Node0_action["The analysis is marked complete and
results are available for further
processing"]:::main N_StatusTransitionAnalysisComplete_Node0 -- Yes --> N_StatusTransitionAnalysisComplete_Node0_action N_StatusTransitionAnalysisComplete_Node0_action --> E_StatusTransitionAnalysisComplete S_StatusTransitionAnalysisComplete --> N_StatusTransitionAnalysisComplete_Node0 N_StatusTransitionAnalysisComplete_Node0 -- No --> E_StatusTransitionAnalysisComplete
File: GCX016.cbl
GIVEN:
All status analysis steps have been completed
WHEN:
The system finalizes status transition analysis
THEN:
- The analysis is marked complete
- Results are available for further processing
β Consolidated Acceptance Criteria
- FDA hold flag is present at destination location → the system sets cargo status to FDA hold with status code 66
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetFDAHoldStatuswithCode66(["Start Step"])
E_SetFDAHoldStatuswithCode66(["End Step"])
N_SetFDAHoldStatuswithCode66_Node0{"FDA hold flag is present at
destination location"}:::decision N_SetFDAHoldStatuswithCode66_Node0_action["The system sets cargo status to FDA
hold with status code 66"]:::main N_SetFDAHoldStatuswithCode66_Node0 -- Yes --> N_SetFDAHoldStatuswithCode66_Node0_action N_SetFDAHoldStatuswithCode66_Node0_action --> E_SetFDAHoldStatuswithCode66 S_SetFDAHoldStatuswithCode66 --> N_SetFDAHoldStatuswithCode66_Node0 N_SetFDAHoldStatuswithCode66_Node0 -- No --> E_SetFDAHoldStatuswithCode66
destination location"}:::decision N_SetFDAHoldStatuswithCode66_Node0_action["The system sets cargo status to FDA
hold with status code 66"]:::main N_SetFDAHoldStatuswithCode66_Node0 -- Yes --> N_SetFDAHoldStatuswithCode66_Node0_action N_SetFDAHoldStatuswithCode66_Node0_action --> E_SetFDAHoldStatuswithCode66 S_SetFDAHoldStatuswithCode66 --> N_SetFDAHoldStatuswithCode66_Node0 N_SetFDAHoldStatuswithCode66_Node0 -- No --> E_SetFDAHoldStatuswithCode66
File: GCX016.cbl
GIVEN:
A cargo record is being evaluated for status assignment
WHEN:
FDA hold flag is present at destination location
THEN:
The system sets cargo status to FDA hold with status code 66
β Consolidated Acceptance Criteria
- Full release conditions are met → the system processes full release and clears the destination index
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ProcessFullRelease(["Start Step"])
E_ProcessFullRelease(["End Step"])
N_ProcessFullRelease_Node0{"Full release conditions are met"}:::decision
N_ProcessFullRelease_Node0_action["The system processes full release
and clears the destination index"]:::main N_ProcessFullRelease_Node0 -- Yes --> N_ProcessFullRelease_Node0_action N_ProcessFullRelease_Node0_action --> E_ProcessFullRelease S_ProcessFullRelease --> N_ProcessFullRelease_Node0 N_ProcessFullRelease_Node0 -- No --> E_ProcessFullRelease
and clears the destination index"]:::main N_ProcessFullRelease_Node0 -- Yes --> N_ProcessFullRelease_Node0_action N_ProcessFullRelease_Node0_action --> E_ProcessFullRelease S_ProcessFullRelease --> N_ProcessFullRelease_Node0 N_ProcessFullRelease_Node0 -- No --> E_ProcessFullRelease
File: GCX016.cbl
GIVEN:
A cargo record with released quantity equal to total quantity
WHEN:
Full release conditions are met
THEN:
- The system processes full release
- Clears the destination index
β Consolidated Acceptance Criteria
- Proceed status flag is present in the cargo evaluation → the system sets proceed status and updates the border arrival date
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetProceedStatus(["Start Step"])
E_SetProceedStatus(["End Step"])
N_SetProceedStatus_Node0{"Proceed status flag is present in
the cargo evaluation"}:::decision N_SetProceedStatus_Node0_action["The system sets proceed status and
updates the border arrival date"]:::main N_SetProceedStatus_Node0 -- Yes --> N_SetProceedStatus_Node0_action N_SetProceedStatus_Node0_action --> E_SetProceedStatus S_SetProceedStatus --> N_SetProceedStatus_Node0 N_SetProceedStatus_Node0 -- No --> E_SetProceedStatus
the cargo evaluation"}:::decision N_SetProceedStatus_Node0_action["The system sets proceed status and
updates the border arrival date"]:::main N_SetProceedStatus_Node0 -- Yes --> N_SetProceedStatus_Node0_action N_SetProceedStatus_Node0_action --> E_SetProceedStatus S_SetProceedStatus --> N_SetProceedStatus_Node0 N_SetProceedStatus_Node0 -- No --> E_SetProceedStatus
File: GCX016.cbl
GIVEN:
A cargo record being evaluated for proceed status
WHEN:
Proceed status flag is present in the cargo evaluation
THEN:
- The system sets proceed status
- Updates the border arrival date
β Consolidated Acceptance Criteria
- Unrelease scenario processing is required → the system processes the unrelease scenario and generates unrelease notifications
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ProcessUnreleaseScenario(["Start Step"])
E_ProcessUnreleaseScenario(["End Step"])
N_ProcessUnreleaseScenario_Node0{"Unrelease scenario processing is
required"}:::decision N_ProcessUnreleaseScenario_Node0_action["The system processes the unrelease
scenario and generates unrelease
notifications"]:::main N_ProcessUnreleaseScenario_Node0 -- Yes --> N_ProcessUnreleaseScenario_Node0_action N_ProcessUnreleaseScenario_Node0_action --> E_ProcessUnreleaseScenario S_ProcessUnreleaseScenario --> N_ProcessUnreleaseScenario_Node0 N_ProcessUnreleaseScenario_Node0 -- No --> E_ProcessUnreleaseScenario
required"}:::decision N_ProcessUnreleaseScenario_Node0_action["The system processes the unrelease
scenario and generates unrelease
notifications"]:::main N_ProcessUnreleaseScenario_Node0 -- Yes --> N_ProcessUnreleaseScenario_Node0_action N_ProcessUnreleaseScenario_Node0_action --> E_ProcessUnreleaseScenario S_ProcessUnreleaseScenario --> N_ProcessUnreleaseScenario_Node0 N_ProcessUnreleaseScenario_Node0 -- No --> E_ProcessUnreleaseScenario
File: GCX016.cbl
GIVEN:
A cargo record with cancel release status detected
WHEN:
Unrelease scenario processing is required
THEN:
- The system processes the unrelease scenario
- Generates unrelease notifications
β Consolidated Acceptance Criteria
- The system prepares to process disposition codes that may affect quantities → the system stores PTT quantity information including release quantities and quantity thresholds for later validation
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_StorePTTQuantityInformation(["Start Step"])
E_StorePTTQuantityInformation(["End Step"])
N_StorePTTQuantityInformation_Node0{"The system prepares to process
disposition codes that may affect
quantities"}:::decision N_StorePTTQuantityInformation_Node0_action["The system stores PTT quantity
information including release
quantities and quantity thresholds
for later validation"]:::main N_StorePTTQuantityInformation_Node0 -- Yes --> N_StorePTTQuantityInformation_Node0_action N_StorePTTQuantityInformation_Node0_action --> E_StorePTTQuantityInformation S_StorePTTQuantityInformation --> N_StorePTTQuantityInformation_Node0 N_StorePTTQuantityInformation_Node0 -- No --> E_StorePTTQuantityInformation
disposition codes that may affect
quantities"}:::decision N_StorePTTQuantityInformation_Node0_action["The system stores PTT quantity
information including release
quantities and quantity thresholds
for later validation"]:::main N_StorePTTQuantityInformation_Node0 -- Yes --> N_StorePTTQuantityInformation_Node0_action N_StorePTTQuantityInformation_Node0_action --> E_StorePTTQuantityInformation S_StorePTTQuantityInformation --> N_StorePTTQuantityInformation_Node0 N_StorePTTQuantityInformation_Node0 -- No --> E_StorePTTQuantityInformation
File: GCX016.cbl
GIVEN:
A cargo record with PTT status and associated quantity information
WHEN:
The system prepares to process disposition codes that may affect quantities
THEN:
- The system stores ptt quantity information including release quantities
- Quantity thresholds for later validation
β Consolidated Acceptance Criteria
- The system processes the new disposition codes → the system applies the disposition codes and updates the cargo status array while preserving the ability to restore PTT status
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ProcessNewDispositionCodes(["Start Step"])
E_ProcessNewDispositionCodes(["End Step"])
N_ProcessNewDispositionCodes_Node0{"The system processes the new
disposition codes"}:::decision N_ProcessNewDispositionCodes_Node0_action["The system applies the disposition
codes and updates the cargo status
array while preserving the ability
to restore PTT status"]:::main N_ProcessNewDispositionCodes_Node0 -- Yes --> N_ProcessNewDispositionCodes_Node0_action N_ProcessNewDispositionCodes_Node0_action --> E_ProcessNewDispositionCodes S_ProcessNewDispositionCodes --> N_ProcessNewDispositionCodes_Node0 N_ProcessNewDispositionCodes_Node0 -- No --> E_ProcessNewDispositionCodes
disposition codes"}:::decision N_ProcessNewDispositionCodes_Node0_action["The system applies the disposition
codes and updates the cargo status
array while preserving the ability
to restore PTT status"]:::main N_ProcessNewDispositionCodes_Node0 -- Yes --> N_ProcessNewDispositionCodes_Node0_action N_ProcessNewDispositionCodes_Node0_action --> E_ProcessNewDispositionCodes S_ProcessNewDispositionCodes --> N_ProcessNewDispositionCodes_Node0 N_ProcessNewDispositionCodes_Node0 -- No --> E_ProcessNewDispositionCodes
File: GCX016.cbl
GIVEN:
A cargo record with saved PTT status information and new disposition codes to process
WHEN:
The system processes the new disposition codes
THEN:
- The system applies the disposition codes
- Updates the cargo status array while preserving the ability to restore ptt status
β Consolidated Acceptance Criteria
- The system analyzes the changes made to the status array → the system determines whether the PTT status is still valid based on the new status conditions
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AnalyzeStatusArrayChanges(["Start Step"])
E_AnalyzeStatusArrayChanges(["End Step"])
N_AnalyzeStatusArrayChanges_Node0{"The system analyzes the changes
made to the status array"}:::decision N_AnalyzeStatusArrayChanges_Node0_action["The system determines whether the
PTT status is still valid based on
the new status conditions"]:::main N_AnalyzeStatusArrayChanges_Node0 -- Yes --> N_AnalyzeStatusArrayChanges_Node0_action N_AnalyzeStatusArrayChanges_Node0_action --> E_AnalyzeStatusArrayChanges S_AnalyzeStatusArrayChanges --> N_AnalyzeStatusArrayChanges_Node0 N_AnalyzeStatusArrayChanges_Node0 -- No --> E_AnalyzeStatusArrayChanges
made to the status array"}:::decision N_AnalyzeStatusArrayChanges_Node0_action["The system determines whether the
PTT status is still valid based on
the new status conditions"]:::main N_AnalyzeStatusArrayChanges_Node0 -- Yes --> N_AnalyzeStatusArrayChanges_Node0_action N_AnalyzeStatusArrayChanges_Node0_action --> E_AnalyzeStatusArrayChanges S_AnalyzeStatusArrayChanges --> N_AnalyzeStatusArrayChanges_Node0 N_AnalyzeStatusArrayChanges_Node0 -- No --> E_AnalyzeStatusArrayChanges
File: GCX016.cbl
GIVEN:
A cargo record with processed disposition codes and updated status array
WHEN:
The system analyzes the changes made to the status array
THEN:
The system determines whether the PTT status is still valid based on the new status conditions
β Consolidated Acceptance Criteria
- If whether PTT status remains valid after the changes → the system decides to either continue with PTT status validation or clear PTT status based on validity conditions
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_PTTStillValid(["Start Step"])
E_PTTStillValid(["End Step"])
N_PTTStillValid_Node0{"The system evaluates whether PTT
status remains valid after the
changes"}:::decision N_PTTStillValid_Node0_action["The system decides to either
continue with PTT status validation
or clear PTT status based on
validity conditions"]:::main N_PTTStillValid_Node0 -- Yes --> N_PTTStillValid_Node0_action N_PTTStillValid_Node0_action --> E_PTTStillValid S_PTTStillValid --> N_PTTStillValid_Node0 N_PTTStillValid_Node0 -- No --> E_PTTStillValid
status remains valid after the
changes"}:::decision N_PTTStillValid_Node0_action["The system decides to either
continue with PTT status validation
or clear PTT status based on
validity conditions"]:::main N_PTTStillValid_Node0 -- Yes --> N_PTTStillValid_Node0_action N_PTTStillValid_Node0_action --> E_PTTStillValid S_PTTStillValid --> N_PTTStillValid_Node0 N_PTTStillValid_Node0 -- No --> E_PTTStillValid
File: GCX016.cbl
GIVEN:
A cargo record with processed disposition codes and analyzed status changes
WHEN:
The system evaluates whether PTT status remains valid after the changes
THEN:
The system decides to either continue with PTT status validation or clear PTT status based on validity conditions
β Consolidated Acceptance Criteria
- If if quantity validation is needed for PTT status maintenance → the system either proceeds with quantity validation or directly restores PTT status based on validation requirements
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_QuantityValidationRequired(["Start Step"])
E_QuantityValidationRequired(["End Step"])
N_QuantityValidationRequired_Node0{"The system evaluates if quantity
validation is needed for PTT status
maintenance"}:::decision N_QuantityValidationRequired_Node0_action["The system either proceeds with
quantity validation or directly
restores PTT status based on
validation requirements"]:::main N_QuantityValidationRequired_Node0 -- Yes --> N_QuantityValidationRequired_Node0_action N_QuantityValidationRequired_Node0_action --> E_QuantityValidationRequired S_QuantityValidationRequired --> N_QuantityValidationRequired_Node0 N_QuantityValidationRequired_Node0 -- No --> E_QuantityValidationRequired
validation is needed for PTT status
maintenance"}:::decision N_QuantityValidationRequired_Node0_action["The system either proceeds with
quantity validation or directly
restores PTT status based on
validation requirements"]:::main N_QuantityValidationRequired_Node0 -- Yes --> N_QuantityValidationRequired_Node0_action N_QuantityValidationRequired_Node0_action --> E_QuantityValidationRequired S_QuantityValidationRequired --> N_QuantityValidationRequired_Node0 N_QuantityValidationRequired_Node0 -- No --> E_QuantityValidationRequired
File: GCX016.cbl
GIVEN:
A cargo record with valid PTT status after disposition code processing
WHEN:
The system evaluates if quantity validation is needed for PTT status maintenance
THEN:
The system either proceeds with quantity validation or directly restores PTT status based on validation requirements
β Consolidated Acceptance Criteria
- The system determines PTT status should be maintained without changes → the system preserves the current PTT status and proceeds with restoration process
- The system processes PTT status maintenance → the system preserves PTT status and calculates remaining PTT quantities for future processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MaintainPTTStatus(["Start Step"])
E_MaintainPTTStatus(["End Step"])
N_MaintainPTTStatus_Node0{"The system determines PTT status
should be maintained without changes"}:::decision N_MaintainPTTStatus_Node0_action["The system preserves the current
PTT status and proceeds with
restoration process"]:::main N_MaintainPTTStatus_Node0 -- Yes --> N_MaintainPTTStatus_Node0_action N_MaintainPTTStatus_Node0_action --> E_MaintainPTTStatus S_MaintainPTTStatus --> N_MaintainPTTStatus_Node0 N_MaintainPTTStatus_Node1{"The system processes PTT status
maintenance"}:::decision N_MaintainPTTStatus_Node1_action["The system preserves PTT status and
calculates remaining PTT quantities
for future processing"]:::main N_MaintainPTTStatus_Node1 -- Yes --> N_MaintainPTTStatus_Node1_action N_MaintainPTTStatus_Node1_action --> E_MaintainPTTStatus N_MaintainPTTStatus_Node0 -- No --> N_MaintainPTTStatus_Node1 N_MaintainPTTStatus_Node1 -- No --> E_MaintainPTTStatus
should be maintained without changes"}:::decision N_MaintainPTTStatus_Node0_action["The system preserves the current
PTT status and proceeds with
restoration process"]:::main N_MaintainPTTStatus_Node0 -- Yes --> N_MaintainPTTStatus_Node0_action N_MaintainPTTStatus_Node0_action --> E_MaintainPTTStatus S_MaintainPTTStatus --> N_MaintainPTTStatus_Node0 N_MaintainPTTStatus_Node1{"The system processes PTT status
maintenance"}:::decision N_MaintainPTTStatus_Node1_action["The system preserves PTT status and
calculates remaining PTT quantities
for future processing"]:::main N_MaintainPTTStatus_Node1 -- Yes --> N_MaintainPTTStatus_Node1_action N_MaintainPTTStatus_Node1_action --> E_MaintainPTTStatus N_MaintainPTTStatus_Node0 -- No --> N_MaintainPTTStatus_Node1 N_MaintainPTTStatus_Node1 -- No --> E_MaintainPTTStatus
File: GCX016.cbl
GIVEN:
A cargo record with validated quantities that match PTT requirements
WHEN:
The system determines PTT status should be maintained without changes
THEN:
- The system preserves the current ptt status
- Proceeds with restoration process
File: GCX016.cbl
GIVEN:
Released quantity is less than total quantity indicating partial release
WHEN:
The system processes PTT status maintenance
THEN:
- The system preserves ptt status
- Calculates remaining ptt quantities for future processing
β Consolidated Acceptance Criteria
- The system determines PTT status should be adjusted rather than cleared → the system modifies PTT quantities and status to reflect partial release conditions while maintaining PTT designation
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AdjustPTTforPartialRelease(["Start Step"])
E_AdjustPTTforPartialRelease(["End Step"])
N_AdjustPTTforPartialRelease_Node0{"The system determines PTT status
should be adjusted rather than
cleared"}:::decision N_AdjustPTTforPartialRelease_Node0_action["The system modifies PTT quantities
and status to reflect partial
release conditions while maintaining
PTT designation"]:::main N_AdjustPTTforPartialRelease_Node0 -- Yes --> N_AdjustPTTforPartialRelease_Node0_action N_AdjustPTTforPartialRelease_Node0_action --> E_AdjustPTTforPartialRelease S_AdjustPTTforPartialRelease --> N_AdjustPTTforPartialRelease_Node0 N_AdjustPTTforPartialRelease_Node0 -- No --> E_AdjustPTTforPartialRelease
should be adjusted rather than
cleared"}:::decision N_AdjustPTTforPartialRelease_Node0_action["The system modifies PTT quantities
and status to reflect partial
release conditions while maintaining
PTT designation"]:::main N_AdjustPTTforPartialRelease_Node0 -- Yes --> N_AdjustPTTforPartialRelease_Node0_action N_AdjustPTTforPartialRelease_Node0_action --> E_AdjustPTTforPartialRelease S_AdjustPTTforPartialRelease --> N_AdjustPTTforPartialRelease_Node0 N_AdjustPTTforPartialRelease_Node0 -- No --> E_AdjustPTTforPartialRelease
File: GCX016.cbl
GIVEN:
A cargo record with quantities that don't fully match PTT requirements due to partial releases
WHEN:
The system determines PTT status should be adjusted rather than cleared
THEN:
- The system modifies ptt quantities
- Status to reflect partial release conditions while maintaining ptt designation
β Consolidated Acceptance Criteria
- The system restores the PTT status to the cargo record → the system applies the saved or adjusted PTT status information to the current cargo status
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RestoreSavedPTTStatus(["Start Step"])
E_RestoreSavedPTTStatus(["End Step"])
N_RestoreSavedPTTStatus_Node0{"The system restores the PTT status
to the cargo record"}:::decision N_RestoreSavedPTTStatus_Node0_action["The system applies the saved or
adjusted PTT status information to
the current cargo status"]:::main N_RestoreSavedPTTStatus_Node0 -- Yes --> N_RestoreSavedPTTStatus_Node0_action N_RestoreSavedPTTStatus_Node0_action --> E_RestoreSavedPTTStatus S_RestoreSavedPTTStatus --> N_RestoreSavedPTTStatus_Node0 N_RestoreSavedPTTStatus_Node0 -- No --> E_RestoreSavedPTTStatus
to the cargo record"}:::decision N_RestoreSavedPTTStatus_Node0_action["The system applies the saved or
adjusted PTT status information to
the current cargo status"]:::main N_RestoreSavedPTTStatus_Node0 -- Yes --> N_RestoreSavedPTTStatus_Node0_action N_RestoreSavedPTTStatus_Node0_action --> E_RestoreSavedPTTStatus S_RestoreSavedPTTStatus --> N_RestoreSavedPTTStatus_Node0 N_RestoreSavedPTTStatus_Node0 -- No --> E_RestoreSavedPTTStatus
File: GCX016.cbl
GIVEN:
A cargo record with saved PTT status information and completed validation process
WHEN:
The system restores the PTT status to the cargo record
THEN:
The system applies the saved or adjusted PTT status information to the current cargo status
β Consolidated Acceptance Criteria
- The system updates PTT quantity information → the system applies the final PTT quantity values including any adjustments made during the preservation process
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UpdatePTTQuantity(["Start Step"])
E_UpdatePTTQuantity(["End Step"])
N_UpdatePTTQuantity_Node0{"The system updates PTT quantity
information"}:::decision N_UpdatePTTQuantity_Node0_action["The system applies the final PTT
quantity values including any
adjustments made during the
preservation process"]:::main N_UpdatePTTQuantity_Node0 -- Yes --> N_UpdatePTTQuantity_Node0_action N_UpdatePTTQuantity_Node0_action --> E_UpdatePTTQuantity S_UpdatePTTQuantity --> N_UpdatePTTQuantity_Node0 N_UpdatePTTQuantity_Node0 -- No --> E_UpdatePTTQuantity
information"}:::decision N_UpdatePTTQuantity_Node0_action["The system applies the final PTT
quantity values including any
adjustments made during the
preservation process"]:::main N_UpdatePTTQuantity_Node0 -- Yes --> N_UpdatePTTQuantity_Node0_action N_UpdatePTTQuantity_Node0_action --> E_UpdatePTTQuantity S_UpdatePTTQuantity --> N_UpdatePTTQuantity_Node0 N_UpdatePTTQuantity_Node0 -- No --> E_UpdatePTTQuantity
File: GCX016.cbl
GIVEN:
A cargo record with restored PTT status
WHEN:
The system updates PTT quantity information
THEN:
The system applies the final PTT quantity values including any adjustments made during the preservation process
β Consolidated Acceptance Criteria
- The system clears PTT status from the cargo record → the system removes all PTT-related status information and quantities from the cargo record
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ClearPTTStatus(["Start Step"])
E_ClearPTTStatus(["End Step"])
N_ClearPTTStatus_Node0{"The system clears PTT status from
the cargo record"}:::decision N_ClearPTTStatus_Node0_action["The system removes all PTT-related
status information and quantities
from the cargo record"]:::main N_ClearPTTStatus_Node0 -- Yes --> N_ClearPTTStatus_Node0_action N_ClearPTTStatus_Node0_action --> E_ClearPTTStatus S_ClearPTTStatus --> N_ClearPTTStatus_Node0 N_ClearPTTStatus_Node0 -- No --> E_ClearPTTStatus
the cargo record"}:::decision N_ClearPTTStatus_Node0_action["The system removes all PTT-related
status information and quantities
from the cargo record"]:::main N_ClearPTTStatus_Node0 -- Yes --> N_ClearPTTStatus_Node0_action N_ClearPTTStatus_Node0_action --> E_ClearPTTStatus S_ClearPTTStatus --> N_ClearPTTStatus_Node0 N_ClearPTTStatus_Node0 -- No --> E_ClearPTTStatus
File: GCX016.cbl
GIVEN:
A cargo record where PTT status is determined to be invalid after disposition code processing
WHEN:
The system clears PTT status from the cargo record
THEN:
- The system removes all ptt-related status information
- Quantities from the cargo record
β Consolidated Acceptance Criteria
- The system calculates remaining quantity → the remaining quantity equals total quantity minus released quantity
- The system calculates remaining quantities → subtract released quantity from total quantity to determine remaining held quantity
- The system processes quantity calculations for release determination → the remaining quantity is calculated as total quantity minus released quantity
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CalculateRemainingQuantity(["Start Step"])
E_CalculateRemainingQuantity(["End Step"])
N_CalculateRemainingQuantity_Node0{"The system calculates remaining
quantity"}:::decision N_CalculateRemainingQuantity_Node0_action["The remaining quantity equals total
quantity minus released quantity"]:::main N_CalculateRemainingQuantity_Node0 -- Yes --> N_CalculateRemainingQuantity_Node0_action N_CalculateRemainingQuantity_Node0_action --> E_CalculateRemainingQuantity S_CalculateRemainingQuantity --> N_CalculateRemainingQuantity_Node0 N_CalculateRemainingQuantity_Node1{"The system calculates remaining
quantities"}:::decision N_CalculateRemainingQuantity_Node1_action["Subtract released quantity from
total quantity to determine
remaining held quantity"]:::main N_CalculateRemainingQuantity_Node1 -- Yes --> N_CalculateRemainingQuantity_Node1_action N_CalculateRemainingQuantity_Node1_action --> E_CalculateRemainingQuantity N_CalculateRemainingQuantity_Node0 -- No --> N_CalculateRemainingQuantity_Node1 N_CalculateRemainingQuantity_Node2{"The system processes quantity
calculations for release
determination"}:::decision N_CalculateRemainingQuantity_Node2_action["The remaining quantity is
calculated as total quantity minus
released quantity"]:::main N_CalculateRemainingQuantity_Node2 -- Yes --> N_CalculateRemainingQuantity_Node2_action N_CalculateRemainingQuantity_Node2_action --> E_CalculateRemainingQuantity N_CalculateRemainingQuantity_Node1 -- No --> N_CalculateRemainingQuantity_Node2 N_CalculateRemainingQuantity_Node2 -- No --> E_CalculateRemainingQuantity
quantity"}:::decision N_CalculateRemainingQuantity_Node0_action["The remaining quantity equals total
quantity minus released quantity"]:::main N_CalculateRemainingQuantity_Node0 -- Yes --> N_CalculateRemainingQuantity_Node0_action N_CalculateRemainingQuantity_Node0_action --> E_CalculateRemainingQuantity S_CalculateRemainingQuantity --> N_CalculateRemainingQuantity_Node0 N_CalculateRemainingQuantity_Node1{"The system calculates remaining
quantities"}:::decision N_CalculateRemainingQuantity_Node1_action["Subtract released quantity from
total quantity to determine
remaining held quantity"]:::main N_CalculateRemainingQuantity_Node1 -- Yes --> N_CalculateRemainingQuantity_Node1_action N_CalculateRemainingQuantity_Node1_action --> E_CalculateRemainingQuantity N_CalculateRemainingQuantity_Node0 -- No --> N_CalculateRemainingQuantity_Node1 N_CalculateRemainingQuantity_Node2{"The system processes quantity
calculations for release
determination"}:::decision N_CalculateRemainingQuantity_Node2_action["The remaining quantity is
calculated as total quantity minus
released quantity"]:::main N_CalculateRemainingQuantity_Node2 -- Yes --> N_CalculateRemainingQuantity_Node2_action N_CalculateRemainingQuantity_Node2_action --> E_CalculateRemainingQuantity N_CalculateRemainingQuantity_Node1 -- No --> N_CalculateRemainingQuantity_Node2 N_CalculateRemainingQuantity_Node2 -- No --> E_CalculateRemainingQuantity
File: GCX016.cbl
GIVEN:
Cargo has been identified as partially released with released quantity less than total quantity
WHEN:
The system calculates remaining quantity
THEN:
The remaining quantity equals total quantity minus released quantity
File: GCX016.cbl
GIVEN:
A cargo record with partial release status and known total and released quantities
WHEN:
The system calculates remaining quantities
THEN:
Subtract released quantity from total quantity to determine remaining held quantity
File: GCX016.cbl
GIVEN:
A cargo record exists with total quantity and released quantity values
WHEN:
The system processes quantity calculations for release determination
THEN:
The remaining quantity is calculated as total quantity minus released quantity
β Consolidated Acceptance Criteria
- The system updates cargo status → the cargo status is set to partial release with appropriate status description
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UpdateCargoStatustoPartialRelease(["Start Step"])
E_UpdateCargoStatustoPartialRelease(["End Step"])
N_UpdateCargoStatustoPartialRelease_Node0{"The system updates cargo status"}:::decision
N_UpdateCargoStatustoPartialRelease_Node0_action["The cargo status is set to partial
release with appropriate status
description"]:::main N_UpdateCargoStatustoPartialRelease_Node0 -- Yes --> N_UpdateCargoStatustoPartialRelease_Node0_action N_UpdateCargoStatustoPartialRelease_Node0_action --> E_UpdateCargoStatustoPartialRelease S_UpdateCargoStatustoPartialRelease --> N_UpdateCargoStatustoPartialRelease_Node0 N_UpdateCargoStatustoPartialRelease_Node0 -- No --> E_UpdateCargoStatustoPartialRelease
release with appropriate status
description"]:::main N_UpdateCargoStatustoPartialRelease_Node0 -- Yes --> N_UpdateCargoStatustoPartialRelease_Node0_action N_UpdateCargoStatustoPartialRelease_Node0_action --> E_UpdateCargoStatustoPartialRelease S_UpdateCargoStatustoPartialRelease --> N_UpdateCargoStatustoPartialRelease_Node0 N_UpdateCargoStatustoPartialRelease_Node0 -- No --> E_UpdateCargoStatustoPartialRelease
File: GCX016.cbl
GIVEN:
Cargo has been determined to be in partial release state with hold on piece counts
WHEN:
The system updates cargo status
THEN:
The cargo status is set to partial release with appropriate status description
β Consolidated Acceptance Criteria
- The system updates cargo status for partial release → the existing PTT status is preserved and not overwritten by partial release processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_PreservePTTStatusifExists(["Start Step"])
E_PreservePTTStatusifExists(["End Step"])
N_PreservePTTStatusifExists_Node0{"The system updates cargo status for
partial release"}:::decision N_PreservePTTStatusifExists_Node0_action["The existing PTT status is
preserved and not overwritten by
partial release processing"]:::main N_PreservePTTStatusifExists_Node0 -- Yes --> N_PreservePTTStatusifExists_Node0_action N_PreservePTTStatusifExists_Node0_action --> E_PreservePTTStatusifExists S_PreservePTTStatusifExists --> N_PreservePTTStatusifExists_Node0 N_PreservePTTStatusifExists_Node0 -- No --> E_PreservePTTStatusifExists
partial release"}:::decision N_PreservePTTStatusifExists_Node0_action["The existing PTT status is
preserved and not overwritten by
partial release processing"]:::main N_PreservePTTStatusifExists_Node0 -- Yes --> N_PreservePTTStatusifExists_Node0_action N_PreservePTTStatusifExists_Node0_action --> E_PreservePTTStatusifExists S_PreservePTTStatusifExists --> N_PreservePTTStatusifExists_Node0 N_PreservePTTStatusifExists_Node0 -- No --> E_PreservePTTStatusifExists
File: GCX016.cbl
GIVEN:
Cargo has existing PTT status and is being processed for partial release
WHEN:
The system updates cargo status for partial release
THEN:
- The existing ptt status is preserved
- Not overwritten by partial release processing
β Consolidated Acceptance Criteria
- The system updates the status array → the status array includes partial release flags, hold indicators, and quantity information
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UpdateStatusArraywithPartialReleaseFlag(["Start Step"])
E_UpdateStatusArraywithPartialReleaseFlag(["End Step"])
N_UpdateStatusArraywithPartialReleaseFlag_Node0{"The system updates the status array"}:::decision
N_UpdateStatusArraywithPartialReleaseFlag_Node0_action["The status array includes partial
release flags, hold indicators, and
quantity information"]:::main N_UpdateStatusArraywithPartialReleaseFlag_Node0 -- Yes --> N_UpdateStatusArraywithPartialReleaseFlag_Node0_action N_UpdateStatusArraywithPartialReleaseFlag_Node0_action --> E_UpdateStatusArraywithPartialReleaseFlag S_UpdateStatusArraywithPartialReleaseFlag --> N_UpdateStatusArraywithPartialReleaseFlag_Node0 N_UpdateStatusArraywithPartialReleaseFlag_Node0 -- No --> E_UpdateStatusArraywithPartialReleaseFlag
release flags, hold indicators, and
quantity information"]:::main N_UpdateStatusArraywithPartialReleaseFlag_Node0 -- Yes --> N_UpdateStatusArraywithPartialReleaseFlag_Node0_action N_UpdateStatusArraywithPartialReleaseFlag_Node0_action --> E_UpdateStatusArraywithPartialReleaseFlag S_UpdateStatusArraywithPartialReleaseFlag --> N_UpdateStatusArraywithPartialReleaseFlag_Node0 N_UpdateStatusArraywithPartialReleaseFlag_Node0 -- No --> E_UpdateStatusArraywithPartialReleaseFlag
File: GCX016.cbl
GIVEN:
Cargo is in partial release state with calculated remaining quantities
WHEN:
The system updates the status array
THEN:
The status array includes partial release flags, hold indicators, and quantity information
β Consolidated Acceptance Criteria
- The system determines hold location → the hold location is set to either border or destination based on cargo routing and processing requirements
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetHoldLocationBorderorDestination(["Start Step"])
E_SetHoldLocationBorderorDestination(["End Step"])
N_SetHoldLocationBorderorDestination_Node0{"The system determines hold location"}:::decision
N_SetHoldLocationBorderorDestination_Node0_action["The hold location is set to either
border or destination based on cargo
routing and processing requirements"]:::main N_SetHoldLocationBorderorDestination_Node0 -- Yes --> N_SetHoldLocationBorderorDestination_Node0_action N_SetHoldLocationBorderorDestination_Node0_action --> E_SetHoldLocationBorderorDestination S_SetHoldLocationBorderorDestination --> N_SetHoldLocationBorderorDestination_Node0 N_SetHoldLocationBorderorDestination_Node0 -- No --> E_SetHoldLocationBorderorDestination
border or destination based on cargo
routing and processing requirements"]:::main N_SetHoldLocationBorderorDestination_Node0 -- Yes --> N_SetHoldLocationBorderorDestination_Node0_action N_SetHoldLocationBorderorDestination_Node0_action --> E_SetHoldLocationBorderorDestination S_SetHoldLocationBorderorDestination --> N_SetHoldLocationBorderorDestination_Node0 N_SetHoldLocationBorderorDestination_Node0 -- No --> E_SetHoldLocationBorderorDestination
File: GCX016.cbl
GIVEN:
Cargo is in partial release state requiring hold location assignment
WHEN:
The system determines hold location
THEN:
- The hold location is set to either border or destination based on cargo routing
- Processing requirements
β Consolidated Acceptance Criteria
- If destination index requirements → the system determines whether to maintain or clear destination index based on cargo status and routing needs
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_DestinationIndexRequired(["Start Step"])
E_DestinationIndexRequired(["End Step"])
N_DestinationIndexRequired_Node0{"The system evaluates destination
index requirements"}:::decision N_DestinationIndexRequired_Node0_action["The system determines whether to
maintain or clear destination index
based on cargo status and routing
needs"]:::main N_DestinationIndexRequired_Node0 -- Yes --> N_DestinationIndexRequired_Node0_action N_DestinationIndexRequired_Node0_action --> E_DestinationIndexRequired S_DestinationIndexRequired --> N_DestinationIndexRequired_Node0 N_DestinationIndexRequired_Node0 -- No --> E_DestinationIndexRequired
index requirements"}:::decision N_DestinationIndexRequired_Node0_action["The system determines whether to
maintain or clear destination index
based on cargo status and routing
needs"]:::main N_DestinationIndexRequired_Node0 -- Yes --> N_DestinationIndexRequired_Node0_action N_DestinationIndexRequired_Node0_action --> E_DestinationIndexRequired S_DestinationIndexRequired --> N_DestinationIndexRequired_Node0 N_DestinationIndexRequired_Node0 -- No --> E_DestinationIndexRequired
File: GCX016.cbl
GIVEN:
Cargo is being processed for partial release with determined hold location
WHEN:
The system evaluates destination index requirements
THEN:
- The system determines whether to maintain or clear destination index based on cargo status
- Routing needs
β Consolidated Acceptance Criteria
- The system processes destination index requirements → the destination index is maintained to ensure proper routing and processing continuation
- The system maintains destination routing information → the destination index is preserved to ensure proper cargo routing despite partial hold status
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MaintainDestinationIndex(["Start Step"])
E_MaintainDestinationIndex(["End Step"])
N_MaintainDestinationIndex_Node0{"The system processes destination
index requirements"}:::decision N_MaintainDestinationIndex_Node0_action["The destination index is maintained
to ensure proper routing and
processing continuation"]:::main N_MaintainDestinationIndex_Node0 -- Yes --> N_MaintainDestinationIndex_Node0_action N_MaintainDestinationIndex_Node0_action --> E_MaintainDestinationIndex S_MaintainDestinationIndex --> N_MaintainDestinationIndex_Node0 N_MaintainDestinationIndex_Node1{"The system maintains destination
routing information"}:::decision N_MaintainDestinationIndex_Node1_action["The destination index is preserved
to ensure proper cargo routing
despite partial hold status"]:::main N_MaintainDestinationIndex_Node1 -- Yes --> N_MaintainDestinationIndex_Node1_action N_MaintainDestinationIndex_Node1_action --> E_MaintainDestinationIndex N_MaintainDestinationIndex_Node0 -- No --> N_MaintainDestinationIndex_Node1 N_MaintainDestinationIndex_Node1 -- No --> E_MaintainDestinationIndex
index requirements"}:::decision N_MaintainDestinationIndex_Node0_action["The destination index is maintained
to ensure proper routing and
processing continuation"]:::main N_MaintainDestinationIndex_Node0 -- Yes --> N_MaintainDestinationIndex_Node0_action N_MaintainDestinationIndex_Node0_action --> E_MaintainDestinationIndex S_MaintainDestinationIndex --> N_MaintainDestinationIndex_Node0 N_MaintainDestinationIndex_Node1{"The system maintains destination
routing information"}:::decision N_MaintainDestinationIndex_Node1_action["The destination index is preserved
to ensure proper cargo routing
despite partial hold status"]:::main N_MaintainDestinationIndex_Node1 -- Yes --> N_MaintainDestinationIndex_Node1_action N_MaintainDestinationIndex_Node1_action --> E_MaintainDestinationIndex N_MaintainDestinationIndex_Node0 -- No --> N_MaintainDestinationIndex_Node1 N_MaintainDestinationIndex_Node1 -- No --> E_MaintainDestinationIndex
File: GCX016.cbl
GIVEN:
Cargo in partial release state requires continued destination processing
WHEN:
The system processes destination index requirements
THEN:
- The destination index is maintained to ensure proper routing
- Processing continuation
File: GCX016.cbl
GIVEN:
Cargo has partial release hold status and logging is complete
WHEN:
The system maintains destination routing information
THEN:
The destination index is preserved to ensure proper cargo routing despite partial hold status
β Consolidated Acceptance Criteria
- The system updates the cargo record → the cargo record is updated with partial release status, quantities, hold information, and destination index settings
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UpdateCargoRecordwithPartialStatus(["Start Step"])
E_UpdateCargoRecordwithPartialStatus(["End Step"])
N_UpdateCargoRecordwithPartialStatus_Node0{"The system updates the cargo record"}:::decision
N_UpdateCargoRecordwithPartialStatus_Node0_action["The cargo record is updated with
partial release status, quantities,
hold information, and destination
index settings"]:::main N_UpdateCargoRecordwithPartialStatus_Node0 -- Yes --> N_UpdateCargoRecordwithPartialStatus_Node0_action N_UpdateCargoRecordwithPartialStatus_Node0_action --> E_UpdateCargoRecordwithPartialStatus S_UpdateCargoRecordwithPartialStatus --> N_UpdateCargoRecordwithPartialStatus_Node0 N_UpdateCargoRecordwithPartialStatus_Node0 -- No --> E_UpdateCargoRecordwithPartialStatus
partial release status, quantities,
hold information, and destination
index settings"]:::main N_UpdateCargoRecordwithPartialStatus_Node0 -- Yes --> N_UpdateCargoRecordwithPartialStatus_Node0_action N_UpdateCargoRecordwithPartialStatus_Node0_action --> E_UpdateCargoRecordwithPartialStatus S_UpdateCargoRecordwithPartialStatus --> N_UpdateCargoRecordwithPartialStatus_Node0 N_UpdateCargoRecordwithPartialStatus_Node0 -- No --> E_UpdateCargoRecordwithPartialStatus
File: GCX016.cbl
GIVEN:
All partial release processing has been completed with status determinations
WHEN:
The system updates the cargo record
THEN:
The cargo record is updated with partial release status, quantities, hold information, and destination index settings
β Consolidated Acceptance Criteria
- The system generates notifications → appropriate notifications are sent to brokers, customs, and other stakeholders regarding partial release and remaining holds
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GeneratePartialReleaseNotification(["Start Step"])
E_GeneratePartialReleaseNotification(["End Step"])
N_GeneratePartialReleaseNotification_Node0{"The system generates notifications"}:::decision
N_GeneratePartialReleaseNotification_Node0_action["Appropriate notifications are sent
to brokers, customs, and other
stakeholders regarding partial
release and remaining holds"]:::main N_GeneratePartialReleaseNotification_Node0 -- Yes --> N_GeneratePartialReleaseNotification_Node0_action N_GeneratePartialReleaseNotification_Node0_action --> E_GeneratePartialReleaseNotification S_GeneratePartialReleaseNotification --> N_GeneratePartialReleaseNotification_Node0 N_GeneratePartialReleaseNotification_Node0 -- No --> E_GeneratePartialReleaseNotification
to brokers, customs, and other
stakeholders regarding partial
release and remaining holds"]:::main N_GeneratePartialReleaseNotification_Node0 -- Yes --> N_GeneratePartialReleaseNotification_Node0_action N_GeneratePartialReleaseNotification_Node0_action --> E_GeneratePartialReleaseNotification S_GeneratePartialReleaseNotification --> N_GeneratePartialReleaseNotification_Node0 N_GeneratePartialReleaseNotification_Node0 -- No --> E_GeneratePartialReleaseNotification
File: GCX016.cbl
GIVEN:
Cargo record has been updated with partial release status
WHEN:
The system generates notifications
THEN:
- Appropriate notifications are sent to brokers, customs, and other stakeholders regarding partial release
- Remaining holds
β Consolidated Acceptance Criteria
- The system logs the transaction → transaction log entries are created with partial release details, quantities, status changes, and processing timestamps
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogPartialReleaseTransaction(["Start Step"])
E_LogPartialReleaseTransaction(["End Step"])
N_LogPartialReleaseTransaction_Node0{"The system logs the transaction"}:::decision
N_LogPartialReleaseTransaction_Node0_action["Transaction log entries are created
with partial release details,
quantities, status changes, and
processing timestamps"]:::main N_LogPartialReleaseTransaction_Node0 -- Yes --> N_LogPartialReleaseTransaction_Node0_action N_LogPartialReleaseTransaction_Node0_action --> E_LogPartialReleaseTransaction S_LogPartialReleaseTransaction --> N_LogPartialReleaseTransaction_Node0 N_LogPartialReleaseTransaction_Node0 -- No --> E_LogPartialReleaseTransaction
with partial release details,
quantities, status changes, and
processing timestamps"]:::main N_LogPartialReleaseTransaction_Node0 -- Yes --> N_LogPartialReleaseTransaction_Node0_action N_LogPartialReleaseTransaction_Node0_action --> E_LogPartialReleaseTransaction S_LogPartialReleaseTransaction --> N_LogPartialReleaseTransaction_Node0 N_LogPartialReleaseTransaction_Node0 -- No --> E_LogPartialReleaseTransaction
File: GCX016.cbl
GIVEN:
Partial release processing has been completed with notifications sent
WHEN:
The system logs the transaction
THEN:
Transaction log entries are created with partial release details, quantities, status changes, and processing timestamps
β Consolidated Acceptance Criteria
- The system processes a new disposition code message for this cargo → the system detects that this cargo was previously released and flags it for unrelease processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_PreviouslyReleasedCargoDetected(["Start Step"])
E_PreviouslyReleasedCargoDetected(["End Step"])
N_PreviouslyReleasedCargoDetected_Node0{"The system processes a new
disposition code message for this
cargo"}:::decision N_PreviouslyReleasedCargoDetected_Node0_action["The system detects that this cargo
was previously released and flags it
for unrelease processing"]:::main N_PreviouslyReleasedCargoDetected_Node0 -- Yes --> N_PreviouslyReleasedCargoDetected_Node0_action N_PreviouslyReleasedCargoDetected_Node0_action --> E_PreviouslyReleasedCargoDetected S_PreviouslyReleasedCargoDetected --> N_PreviouslyReleasedCargoDetected_Node0 N_PreviouslyReleasedCargoDetected_Node0 -- No --> E_PreviouslyReleasedCargoDetected
disposition code message for this
cargo"}:::decision N_PreviouslyReleasedCargoDetected_Node0_action["The system detects that this cargo
was previously released and flags it
for unrelease processing"]:::main N_PreviouslyReleasedCargoDetected_Node0 -- Yes --> N_PreviouslyReleasedCargoDetected_Node0_action N_PreviouslyReleasedCargoDetected_Node0_action --> E_PreviouslyReleasedCargoDetected S_PreviouslyReleasedCargoDetected --> N_PreviouslyReleasedCargoDetected_Node0 N_PreviouslyReleasedCargoDetected_Node0 -- No --> E_PreviouslyReleasedCargoDetected
File: GCX016.cbl
GIVEN:
A cargo record exists in the system with historical release status
WHEN:
The system processes a new disposition code message for this cargo
THEN:
- The system detects that this cargo was previously released
- Flags it for unrelease processing
β Consolidated Acceptance Criteria
- The system analyzes the status array for release and hold conditions → the system identifies current status flags including release quantities, hold statuses, and disposition codes
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CheckCurrentStatusArray(["Start Step"])
E_CheckCurrentStatusArray(["End Step"])
N_CheckCurrentStatusArray_Node0{"The system analyzes the status
array for release and hold
conditions"}:::decision N_CheckCurrentStatusArray_Node0_action["The system identifies current
status flags including release
quantities, hold statuses, and
disposition codes"]:::main N_CheckCurrentStatusArray_Node0 -- Yes --> N_CheckCurrentStatusArray_Node0_action N_CheckCurrentStatusArray_Node0_action --> E_CheckCurrentStatusArray S_CheckCurrentStatusArray --> N_CheckCurrentStatusArray_Node0 N_CheckCurrentStatusArray_Node0 -- No --> E_CheckCurrentStatusArray
array for release and hold
conditions"}:::decision N_CheckCurrentStatusArray_Node0_action["The system identifies current
status flags including release
quantities, hold statuses, and
disposition codes"]:::main N_CheckCurrentStatusArray_Node0 -- Yes --> N_CheckCurrentStatusArray_Node0_action N_CheckCurrentStatusArray_Node0_action --> E_CheckCurrentStatusArray S_CheckCurrentStatusArray --> N_CheckCurrentStatusArray_Node0 N_CheckCurrentStatusArray_Node0 -- No --> E_CheckCurrentStatusArray
File: GCX016.cbl
GIVEN:
A cargo record has a populated status array with current disposition codes
WHEN:
- The system analyzes the status array for release
- Hold conditions
THEN:
The system identifies current status flags including release quantities, hold statuses, and disposition codes
β Consolidated Acceptance Criteria
- The system looks up the disposition code in the DC table to determine its action type → the system identifies whether the code requires removal of release status, addition of hold status, or other status changes
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AnalyzeDispositionCodes(["Start Step"])
E_AnalyzeDispositionCodes(["End Step"])
N_AnalyzeDispositionCodes_Node0{"The system looks up the disposition
code in the DC table to determine
its action type"}:::decision N_AnalyzeDispositionCodes_Node0_action["The system identifies whether the
code requires removal of release
status, addition of hold status, or
other status changes"]:::main N_AnalyzeDispositionCodes_Node0 -- Yes --> N_AnalyzeDispositionCodes_Node0_action N_AnalyzeDispositionCodes_Node0_action --> E_AnalyzeDispositionCodes S_AnalyzeDispositionCodes --> N_AnalyzeDispositionCodes_Node0 N_AnalyzeDispositionCodes_Node0 -- No --> E_AnalyzeDispositionCodes
code in the DC table to determine
its action type"}:::decision N_AnalyzeDispositionCodes_Node0_action["The system identifies whether the
code requires removal of release
status, addition of hold status, or
other status changes"]:::main N_AnalyzeDispositionCodes_Node0 -- Yes --> N_AnalyzeDispositionCodes_Node0_action N_AnalyzeDispositionCodes_Node0_action --> E_AnalyzeDispositionCodes S_AnalyzeDispositionCodes --> N_AnalyzeDispositionCodes_Node0 N_AnalyzeDispositionCodes_Node0 -- No --> E_AnalyzeDispositionCodes
File: GCX016.cbl
GIVEN:
A disposition code is received in an X4 segment message
WHEN:
The system looks up the disposition code in the DC table to determine its action type
THEN:
The system identifies whether the code requires removal of release status, addition of hold status, or other status changes
β Consolidated Acceptance Criteria
- The disposition code action type is 'DC Remove+Release', 'DC Removal', or adds a hold status to previously released cargo → the system determines that unrelease processing is required and proceeds with status change logic
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UnreleaseConditionFound(["Start Step"])
E_UnreleaseConditionFound(["End Step"])
N_UnreleaseConditionFound_Node0{"The disposition code action type is
DC RemoveRelease , DC Removal , or
adds a hold status to previously
released cargo"}:::decision N_UnreleaseConditionFound_Node0_action["The system determines that
unrelease processing is required and
proceeds with status change logic"]:::main N_UnreleaseConditionFound_Node0 -- Yes --> N_UnreleaseConditionFound_Node0_action N_UnreleaseConditionFound_Node0_action --> E_UnreleaseConditionFound S_UnreleaseConditionFound --> N_UnreleaseConditionFound_Node0 N_UnreleaseConditionFound_Node0 -- No --> E_UnreleaseConditionFound
DC RemoveRelease , DC Removal , or
adds a hold status to previously
released cargo"}:::decision N_UnreleaseConditionFound_Node0_action["The system determines that
unrelease processing is required and
proceeds with status change logic"]:::main N_UnreleaseConditionFound_Node0 -- Yes --> N_UnreleaseConditionFound_Node0_action N_UnreleaseConditionFound_Node0_action --> E_UnreleaseConditionFound S_UnreleaseConditionFound --> N_UnreleaseConditionFound_Node0 N_UnreleaseConditionFound_Node0 -- No --> E_UnreleaseConditionFound
File: GCX016.cbl
GIVEN:
A disposition code has been analyzed and its action type determined
WHEN:
The disposition code action type is 'DC Remove+Release', 'DC Removal', or adds a hold status to previously released cargo
THEN:
- The system determines that unrelease processing is required
- Proceeds with status change logic
β Consolidated Acceptance Criteria
- A disposition code will remove release status or add hold conditions that override the release → the system detects this as an unrelease condition and prepares to update the cargo status accordingly
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_DetectStatusChangefromReleasedtoUnreleased(["Start Step"])
E_DetectStatusChangefromReleasedtoUnreleased(["End Step"])
N_DetectStatusChangefromReleasedtoUnreleased_Node0{"A disposition code will remove
release status or add hold
conditions that override the release"}:::decision N_DetectStatusChangefromReleasedtoUnreleased_Node0_action["The system detects this as an
unrelease condition and prepares to
update the cargo status accordingly"]:::main N_DetectStatusChangefromReleasedtoUnreleased_Node0 -- Yes --> N_DetectStatusChangefromReleasedtoUnreleased_Node0_action N_DetectStatusChangefromReleasedtoUnreleased_Node0_action --> E_DetectStatusChangefromReleasedtoUnreleased S_DetectStatusChangefromReleasedtoUnreleased --> N_DetectStatusChangefromReleasedtoUnreleased_Node0 N_DetectStatusChangefromReleasedtoUnreleased_Node0 -- No --> E_DetectStatusChangefromReleasedtoUnreleased
release status or add hold
conditions that override the release"}:::decision N_DetectStatusChangefromReleasedtoUnreleased_Node0_action["The system detects this as an
unrelease condition and prepares to
update the cargo status accordingly"]:::main N_DetectStatusChangefromReleasedtoUnreleased_Node0 -- Yes --> N_DetectStatusChangefromReleasedtoUnreleased_Node0_action N_DetectStatusChangefromReleasedtoUnreleased_Node0_action --> E_DetectStatusChangefromReleasedtoUnreleased S_DetectStatusChangefromReleasedtoUnreleased --> N_DetectStatusChangefromReleasedtoUnreleased_Node0 N_DetectStatusChangefromReleasedtoUnreleased_Node0 -- No --> E_DetectStatusChangefromReleasedtoUnreleased
File: GCX016.cbl
GIVEN:
Cargo currently has release status flags set and release quantities greater than zero
WHEN:
A disposition code will remove release status or add hold conditions that override the release
THEN:
- The system detects this as an unrelease condition
- Prepares to update the cargo status accordingly
β Consolidated Acceptance Criteria
- The system saves the current cargo status description and release quantities → the previous status information is stored for comparison and logging purposes
- The system prepares to update cargo status → save the current cargo status information for potential restoration
- Manual release processing begins → current cargo status is saved to temporary storage for potential restoration
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SaveCurrentCargoStatus(["Start Step"])
E_SaveCurrentCargoStatus(["End Step"])
N_SaveCurrentCargoStatus_Node0{"The system saves the current cargo
status description and release
quantities"}:::decision N_SaveCurrentCargoStatus_Node0_action["The previous status information is
stored for comparison and logging
purposes"]:::main N_SaveCurrentCargoStatus_Node0 -- Yes --> N_SaveCurrentCargoStatus_Node0_action N_SaveCurrentCargoStatus_Node0_action --> E_SaveCurrentCargoStatus S_SaveCurrentCargoStatus --> N_SaveCurrentCargoStatus_Node0 N_SaveCurrentCargoStatus_Node1{"The system prepares to update cargo
status"}:::decision N_SaveCurrentCargoStatus_Node1_action["Save the current cargo status
information for potential
restoration"]:::main N_SaveCurrentCargoStatus_Node1 -- Yes --> N_SaveCurrentCargoStatus_Node1_action N_SaveCurrentCargoStatus_Node1_action --> E_SaveCurrentCargoStatus N_SaveCurrentCargoStatus_Node0 -- No --> N_SaveCurrentCargoStatus_Node1 N_SaveCurrentCargoStatus_Node2{"Manual release processing begins"}:::decision N_SaveCurrentCargoStatus_Node2_action["Current cargo status is saved to
temporary storage for potential
restoration"]:::main N_SaveCurrentCargoStatus_Node2 -- Yes --> N_SaveCurrentCargoStatus_Node2_action N_SaveCurrentCargoStatus_Node2_action --> E_SaveCurrentCargoStatus N_SaveCurrentCargoStatus_Node1 -- No --> N_SaveCurrentCargoStatus_Node2 N_SaveCurrentCargoStatus_Node2 -- No --> E_SaveCurrentCargoStatus
status description and release
quantities"}:::decision N_SaveCurrentCargoStatus_Node0_action["The previous status information is
stored for comparison and logging
purposes"]:::main N_SaveCurrentCargoStatus_Node0 -- Yes --> N_SaveCurrentCargoStatus_Node0_action N_SaveCurrentCargoStatus_Node0_action --> E_SaveCurrentCargoStatus S_SaveCurrentCargoStatus --> N_SaveCurrentCargoStatus_Node0 N_SaveCurrentCargoStatus_Node1{"The system prepares to update cargo
status"}:::decision N_SaveCurrentCargoStatus_Node1_action["Save the current cargo status
information for potential
restoration"]:::main N_SaveCurrentCargoStatus_Node1 -- Yes --> N_SaveCurrentCargoStatus_Node1_action N_SaveCurrentCargoStatus_Node1_action --> E_SaveCurrentCargoStatus N_SaveCurrentCargoStatus_Node0 -- No --> N_SaveCurrentCargoStatus_Node1 N_SaveCurrentCargoStatus_Node2{"Manual release processing begins"}:::decision N_SaveCurrentCargoStatus_Node2_action["Current cargo status is saved to
temporary storage for potential
restoration"]:::main N_SaveCurrentCargoStatus_Node2 -- Yes --> N_SaveCurrentCargoStatus_Node2_action N_SaveCurrentCargoStatus_Node2_action --> E_SaveCurrentCargoStatus N_SaveCurrentCargoStatus_Node1 -- No --> N_SaveCurrentCargoStatus_Node2 N_SaveCurrentCargoStatus_Node2 -- No --> E_SaveCurrentCargoStatus
File: GCX016.cbl
GIVEN:
Cargo is about to be unreleased and current status needs to be preserved
WHEN:
- The system saves the current cargo status description
- Release quantities
THEN:
- The previous status information is stored for comparison
- Logging purposes
File: GCX016.cbl
GIVEN:
Destination index has been cleared for manual release
WHEN:
The system prepares to update cargo status
THEN:
Save the current cargo status information for potential restoration
File: GCX016.cbl
GIVEN:
A cargo record with existing status information
WHEN:
Manual release processing begins
THEN:
Current cargo status is saved to temporary storage for potential restoration
β Consolidated Acceptance Criteria
- The system processes the disposition code and determines its placement in the status array → the new disposition code is added to the status array with appropriate sequence and occurrence numbers
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UpdateStatusArraywithUnreleaseCode(["Start Step"])
E_UpdateStatusArraywithUnreleaseCode(["End Step"])
N_UpdateStatusArraywithUnreleaseCode_Node0{"The system processes the
disposition code and determines its
placement in the status array"}:::decision N_UpdateStatusArraywithUnreleaseCode_Node0_action["The new disposition code is added
to the status array with appropriate
sequence and occurrence numbers"]:::main N_UpdateStatusArraywithUnreleaseCode_Node0 -- Yes --> N_UpdateStatusArraywithUnreleaseCode_Node0_action N_UpdateStatusArraywithUnreleaseCode_Node0_action --> E_UpdateStatusArraywithUnreleaseCode S_UpdateStatusArraywithUnreleaseCode --> N_UpdateStatusArraywithUnreleaseCode_Node0 N_UpdateStatusArraywithUnreleaseCode_Node0 -- No --> E_UpdateStatusArraywithUnreleaseCode
disposition code and determines its
placement in the status array"}:::decision N_UpdateStatusArraywithUnreleaseCode_Node0_action["The new disposition code is added
to the status array with appropriate
sequence and occurrence numbers"]:::main N_UpdateStatusArraywithUnreleaseCode_Node0 -- Yes --> N_UpdateStatusArraywithUnreleaseCode_Node0_action N_UpdateStatusArraywithUnreleaseCode_Node0_action --> E_UpdateStatusArraywithUnreleaseCode S_UpdateStatusArraywithUnreleaseCode --> N_UpdateStatusArraywithUnreleaseCode_Node0 N_UpdateStatusArraywithUnreleaseCode_Node0 -- No --> E_UpdateStatusArraywithUnreleaseCode
File: GCX016.cbl
GIVEN:
An unrelease disposition code needs to be added to the cargo status array
WHEN:
- The system processes the disposition code
- Determines its placement in the status array
THEN:
- The new disposition code is added to the status array with appropriate sequence
- Occurrence numbers
β Consolidated Acceptance Criteria
- An unrelease disposition code requires removal of release status → the system clears release flags, resets release quantities, and removes release-related status codes from the array
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RemoveReleaseStatusFlags(["Start Step"])
E_RemoveReleaseStatusFlags(["End Step"])
N_RemoveReleaseStatusFlags_Node0{"An unrelease disposition code
requires removal of release status"}:::decision N_RemoveReleaseStatusFlags_Node0_action["The system clears release flags,
resets release quantities, and
removes release-related status codes
from the array"]:::main N_RemoveReleaseStatusFlags_Node0 -- Yes --> N_RemoveReleaseStatusFlags_Node0_action N_RemoveReleaseStatusFlags_Node0_action --> E_RemoveReleaseStatusFlags S_RemoveReleaseStatusFlags --> N_RemoveReleaseStatusFlags_Node0 N_RemoveReleaseStatusFlags_Node0 -- No --> E_RemoveReleaseStatusFlags
requires removal of release status"}:::decision N_RemoveReleaseStatusFlags_Node0_action["The system clears release flags,
resets release quantities, and
removes release-related status codes
from the array"]:::main N_RemoveReleaseStatusFlags_Node0 -- Yes --> N_RemoveReleaseStatusFlags_Node0_action N_RemoveReleaseStatusFlags_Node0_action --> E_RemoveReleaseStatusFlags S_RemoveReleaseStatusFlags --> N_RemoveReleaseStatusFlags_Node0 N_RemoveReleaseStatusFlags_Node0 -- No --> E_RemoveReleaseStatusFlags
File: GCX016.cbl
GIVEN:
Cargo has existing release status flags and release quantities set
WHEN:
An unrelease disposition code requires removal of release status
THEN:
The system clears release flags, resets release quantities, and removes release-related status codes from the array
β Consolidated Acceptance Criteria
- The disposition code indicates a hold condition or the cargo's previous state included hold requirements → the system applies the appropriate hold status based on the cargo's location and disposition requirements
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RestoreHoldStatusifApplicable(["Start Step"])
E_RestoreHoldStatusifApplicable(["End Step"])
N_RestoreHoldStatusifApplicable_Node0{"The disposition code indicates a
hold condition or the cargo s
previous state included hold
requirements"}:::decision N_RestoreHoldStatusifApplicable_Node0_action["The system applies the appropriate
hold status based on the cargo s
location and disposition
requirements"]:::main N_RestoreHoldStatusifApplicable_Node0 -- Yes --> N_RestoreHoldStatusifApplicable_Node0_action N_RestoreHoldStatusifApplicable_Node0_action --> E_RestoreHoldStatusifApplicable S_RestoreHoldStatusifApplicable --> N_RestoreHoldStatusifApplicable_Node0 N_RestoreHoldStatusifApplicable_Node0 -- No --> E_RestoreHoldStatusifApplicable
hold condition or the cargo s
previous state included hold
requirements"}:::decision N_RestoreHoldStatusifApplicable_Node0_action["The system applies the appropriate
hold status based on the cargo s
location and disposition
requirements"]:::main N_RestoreHoldStatusifApplicable_Node0 -- Yes --> N_RestoreHoldStatusifApplicable_Node0_action N_RestoreHoldStatusifApplicable_Node0_action --> E_RestoreHoldStatusifApplicable S_RestoreHoldStatusifApplicable --> N_RestoreHoldStatusifApplicable_Node0 N_RestoreHoldStatusifApplicable_Node0 -- No --> E_RestoreHoldStatusifApplicable
File: GCX016.cbl
GIVEN:
Cargo is being unreleased and may require hold status to be applied
WHEN:
The disposition code indicates a hold condition or the cargo's previous state included hold requirements
THEN:
- The system applies the appropriate hold status based on the cargo's location
- Disposition requirements
β Consolidated Acceptance Criteria
- The system prepares notification messages for the unrelease action → the system generates Merlin messages containing cargo details, unrelease reason, and new status information for distribution to appropriate users
- The system formats the unrelease notification message → the system creates message with cargo details, disposition codes, and unrelease information
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GenerateUnreleaseNotificationMessage(["Start Step"])
E_GenerateUnreleaseNotificationMessage(["End Step"])
N_GenerateUnreleaseNotificationMessage_Node0{"The system prepares notification
messages for the unrelease action"}:::decision N_GenerateUnreleaseNotificationMessage_Node0_action["The system generates Merlin
messages containing cargo details,
unrelease reason, and new status
information for distribution to
appropriate users"]:::main N_GenerateUnreleaseNotificationMessage_Node0 -- Yes --> N_GenerateUnreleaseNotificationMessage_Node0_action N_GenerateUnreleaseNotificationMessage_Node0_action --> E_GenerateUnreleaseNotificationMessage S_GenerateUnreleaseNotificationMessage --> N_GenerateUnreleaseNotificationMessage_Node0 N_GenerateUnreleaseNotificationMessage_Node1{"The system formats the unrelease
notification message"}:::decision N_GenerateUnreleaseNotificationMessage_Node1_action["The system creates message with
cargo details, disposition codes,
and unrelease information"]:::main N_GenerateUnreleaseNotificationMessage_Node1 -- Yes --> N_GenerateUnreleaseNotificationMessage_Node1_action N_GenerateUnreleaseNotificationMessage_Node1_action --> E_GenerateUnreleaseNotificationMessage N_GenerateUnreleaseNotificationMessage_Node0 -- No --> N_GenerateUnreleaseNotificationMessage_Node1 N_GenerateUnreleaseNotificationMessage_Node1 -- No --> E_GenerateUnreleaseNotificationMessage
messages for the unrelease action"}:::decision N_GenerateUnreleaseNotificationMessage_Node0_action["The system generates Merlin
messages containing cargo details,
unrelease reason, and new status
information for distribution to
appropriate users"]:::main N_GenerateUnreleaseNotificationMessage_Node0 -- Yes --> N_GenerateUnreleaseNotificationMessage_Node0_action N_GenerateUnreleaseNotificationMessage_Node0_action --> E_GenerateUnreleaseNotificationMessage S_GenerateUnreleaseNotificationMessage --> N_GenerateUnreleaseNotificationMessage_Node0 N_GenerateUnreleaseNotificationMessage_Node1{"The system formats the unrelease
notification message"}:::decision N_GenerateUnreleaseNotificationMessage_Node1_action["The system creates message with
cargo details, disposition codes,
and unrelease information"]:::main N_GenerateUnreleaseNotificationMessage_Node1 -- Yes --> N_GenerateUnreleaseNotificationMessage_Node1_action N_GenerateUnreleaseNotificationMessage_Node1_action --> E_GenerateUnreleaseNotificationMessage N_GenerateUnreleaseNotificationMessage_Node0 -- No --> N_GenerateUnreleaseNotificationMessage_Node1 N_GenerateUnreleaseNotificationMessage_Node1 -- No --> E_GenerateUnreleaseNotificationMessage
File: GCX016.cbl
GIVEN:
Cargo has been successfully unreleased and status updated
WHEN:
The system prepares notification messages for the unrelease action
THEN:
The system generates Merlin messages containing cargo details, unrelease reason, and new status information for distribution to appropriate users
File: GCX016.cbl
GIVEN:
Cargo unrelease detected AND notification recipients identified
WHEN:
The system formats the unrelease notification message
THEN:
The system creates message with cargo details, disposition codes, and unrelease information
β Consolidated Acceptance Criteria
- The cargo requires notification to external systems for equipment or container processing → the system calls GCCIIS integration services to notify external systems of the status change from released to unreleased
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CallIntegrationServicesforStatusChange(["Start Step"])
E_CallIntegrationServicesforStatusChange(["End Step"])
N_CallIntegrationServicesforStatusChange_Node0{"The cargo requires notification to
external systems for equipment or
container processing"}:::decision N_CallIntegrationServicesforStatusChange_Node0_action["The system calls GCCIIS integration
services to notify external systems
of the status change from released
to unreleased"]:::main N_CallIntegrationServicesforStatusChange_Node0 -- Yes --> N_CallIntegrationServicesforStatusChange_Node0_action N_CallIntegrationServicesforStatusChange_Node0_action --> E_CallIntegrationServicesforStatusChange S_CallIntegrationServicesforStatusChange --> N_CallIntegrationServicesforStatusChange_Node0 N_CallIntegrationServicesforStatusChange_Node0 -- No --> E_CallIntegrationServicesforStatusChange
external systems for equipment or
container processing"}:::decision N_CallIntegrationServicesforStatusChange_Node0_action["The system calls GCCIIS integration
services to notify external systems
of the status change from released
to unreleased"]:::main N_CallIntegrationServicesforStatusChange_Node0 -- Yes --> N_CallIntegrationServicesforStatusChange_Node0_action N_CallIntegrationServicesforStatusChange_Node0_action --> E_CallIntegrationServicesforStatusChange S_CallIntegrationServicesforStatusChange --> N_CallIntegrationServicesforStatusChange_Node0 N_CallIntegrationServicesforStatusChange_Node0 -- No --> E_CallIntegrationServicesforStatusChange
File: GCX016.cbl
GIVEN:
Cargo has been unreleased and database updated successfully
WHEN:
The cargo requires notification to external systems for equipment or container processing
THEN:
The system calls GCCIIS integration services to notify external systems of the status change from released to unreleased
β Consolidated Acceptance Criteria
- The system logs the transaction details for audit purposes → the system calls GCT1051E to log the unrelease transaction with cargo details, disposition codes, and status changes
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogUnreleaseTransaction(["Start Step"])
E_LogUnreleaseTransaction(["End Step"])
N_LogUnreleaseTransaction_Node0{"The system logs the transaction
details for audit purposes"}:::decision N_LogUnreleaseTransaction_Node0_action["The system calls GCT1051E to log
the unrelease transaction with cargo
details, disposition codes, and
status changes"]:::main N_LogUnreleaseTransaction_Node0 -- Yes --> N_LogUnreleaseTransaction_Node0_action N_LogUnreleaseTransaction_Node0_action --> E_LogUnreleaseTransaction S_LogUnreleaseTransaction --> N_LogUnreleaseTransaction_Node0 N_LogUnreleaseTransaction_Node0 -- No --> E_LogUnreleaseTransaction
details for audit purposes"}:::decision N_LogUnreleaseTransaction_Node0_action["The system calls GCT1051E to log
the unrelease transaction with cargo
details, disposition codes, and
status changes"]:::main N_LogUnreleaseTransaction_Node0 -- Yes --> N_LogUnreleaseTransaction_Node0_action N_LogUnreleaseTransaction_Node0_action --> E_LogUnreleaseTransaction S_LogUnreleaseTransaction --> N_LogUnreleaseTransaction_Node0 N_LogUnreleaseTransaction_Node0 -- No --> E_LogUnreleaseTransaction
File: GCX016.cbl
GIVEN:
Cargo unrelease processing has been completed successfully
WHEN:
The system logs the transaction details for audit purposes
THEN:
The system calls GCT1051E to log the unrelease transaction with cargo details, disposition codes, and status changes
β Consolidated Acceptance Criteria
- If the number of matching records → the system should process each Canadian record individually if multiple records exist, or proceed with single record processing if only one record is found
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MultipleCanadianRecords(["Start Step"])
E_MultipleCanadianRecords(["End Step"])
N_MultipleCanadianRecords_Node0{"The system evaluates the number of
matching records"}:::decision N_MultipleCanadianRecords_Node0_action["The system should process each
Canadian record individually if
multiple records exist, or proceed
with single record processing if
only one record is found"]:::main N_MultipleCanadianRecords_Node0 -- Yes --> N_MultipleCanadianRecords_Node0_action N_MultipleCanadianRecords_Node0_action --> E_MultipleCanadianRecords S_MultipleCanadianRecords --> N_MultipleCanadianRecords_Node0 N_MultipleCanadianRecords_Node0 -- No --> E_MultipleCanadianRecords
matching records"}:::decision N_MultipleCanadianRecords_Node0_action["The system should process each
Canadian record individually if
multiple records exist, or proceed
with single record processing if
only one record is found"]:::main N_MultipleCanadianRecords_Node0 -- Yes --> N_MultipleCanadianRecords_Node0_action N_MultipleCanadianRecords_Node0_action --> E_MultipleCanadianRecords S_MultipleCanadianRecords --> N_MultipleCanadianRecords_Node0 N_MultipleCanadianRecords_Node0 -- No --> E_MultipleCanadianRecords
File: GCX016.cbl
GIVEN:
Canadian cargo records have been found for the equipment ID
WHEN:
The system evaluates the number of matching records
THEN:
The system should process each Canadian record individually if multiple records exist, or proceed with single record processing if only one record is found
β Consolidated Acceptance Criteria
- The system processes cross-border coordination → the system should iterate through each Canadian record and apply validation and coordination logic to each record separately
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ProcessEachCanadianRecord(["Start Step"])
E_ProcessEachCanadianRecord(["End Step"])
N_ProcessEachCanadianRecord_Node0{"The system processes cross-border
coordination"}:::decision N_ProcessEachCanadianRecord_Node0_action["The system should iterate through
each Canadian record and apply
validation and coordination logic to
each record separately"]:::main N_ProcessEachCanadianRecord_Node0 -- Yes --> N_ProcessEachCanadianRecord_Node0_action N_ProcessEachCanadianRecord_Node0_action --> E_ProcessEachCanadianRecord S_ProcessEachCanadianRecord --> N_ProcessEachCanadianRecord_Node0 N_ProcessEachCanadianRecord_Node0 -- No --> E_ProcessEachCanadianRecord
coordination"}:::decision N_ProcessEachCanadianRecord_Node0_action["The system should iterate through
each Canadian record and apply
validation and coordination logic to
each record separately"]:::main N_ProcessEachCanadianRecord_Node0 -- Yes --> N_ProcessEachCanadianRecord_Node0_action N_ProcessEachCanadianRecord_Node0_action --> E_ProcessEachCanadianRecord S_ProcessEachCanadianRecord --> N_ProcessEachCanadianRecord_Node0 N_ProcessEachCanadianRecord_Node0 -- No --> E_ProcessEachCanadianRecord
File: GCX016.cbl
GIVEN:
Multiple Canadian cargo records have been identified for the same equipment ID
WHEN:
The system processes cross-border coordination
THEN:
- The system should iterate through each canadian record
- Apply validation
- Coordination logic to each record separately
β Consolidated Acceptance Criteria
- The system updates Canadian cargo status → the system should update the Canadian CCN status to reflect the cross-border coordination with US cargo release
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UpdateCanadianCCNStatus(["Start Step"])
E_UpdateCanadianCCNStatus(["End Step"])
N_UpdateCanadianCCNStatus_Node0{"The system updates Canadian cargo
status"}:::decision N_UpdateCanadianCCNStatus_Node0_action["The system should update the
Canadian CCN status to reflect the
cross-border coordination with US
cargo release"]:::main N_UpdateCanadianCCNStatus_Node0 -- Yes --> N_UpdateCanadianCCNStatus_Node0_action N_UpdateCanadianCCNStatus_Node0_action --> E_UpdateCanadianCCNStatus S_UpdateCanadianCCNStatus --> N_UpdateCanadianCCNStatus_Node0 N_UpdateCanadianCCNStatus_Node0 -- No --> E_UpdateCanadianCCNStatus
status"}:::decision N_UpdateCanadianCCNStatus_Node0_action["The system should update the
Canadian CCN status to reflect the
cross-border coordination with US
cargo release"]:::main N_UpdateCanadianCCNStatus_Node0 -- Yes --> N_UpdateCanadianCCNStatus_Node0_action N_UpdateCanadianCCNStatus_Node0_action --> E_UpdateCanadianCCNStatus S_UpdateCanadianCCNStatus --> N_UpdateCanadianCCNStatus_Node0 N_UpdateCanadianCCNStatus_Node0 -- No --> E_UpdateCanadianCCNStatus
File: GCX016.cbl
GIVEN:
Cross-border log message has been created for valid Canadian cargo
WHEN:
The system updates Canadian cargo status
THEN:
The system should update the Canadian CCN status to reflect the cross-border coordination with US cargo release
β Consolidated Acceptance Criteria
- The system coordinates release status between systems → the system should ensure release status consistency between US and Canadian cargo records for the same equipment
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CoordinateReleaseStatus(["Start Step"])
E_CoordinateReleaseStatus(["End Step"])
N_CoordinateReleaseStatus_Node0{"The system coordinates release
status between systems"}:::decision N_CoordinateReleaseStatus_Node0_action["The system should ensure release
status consistency between US and
Canadian cargo records for the same
equipment"]:::main N_CoordinateReleaseStatus_Node0 -- Yes --> N_CoordinateReleaseStatus_Node0_action N_CoordinateReleaseStatus_Node0_action --> E_CoordinateReleaseStatus S_CoordinateReleaseStatus --> N_CoordinateReleaseStatus_Node0 N_CoordinateReleaseStatus_Node0 -- No --> E_CoordinateReleaseStatus
status between systems"}:::decision N_CoordinateReleaseStatus_Node0_action["The system should ensure release
status consistency between US and
Canadian cargo records for the same
equipment"]:::main N_CoordinateReleaseStatus_Node0 -- Yes --> N_CoordinateReleaseStatus_Node0_action N_CoordinateReleaseStatus_Node0_action --> E_CoordinateReleaseStatus S_CoordinateReleaseStatus --> N_CoordinateReleaseStatus_Node0 N_CoordinateReleaseStatus_Node0 -- No --> E_CoordinateReleaseStatus
File: GCX016.cbl
GIVEN:
Canadian CCN status has been updated for cross-border coordination
WHEN:
The system coordinates release status between systems
THEN:
- The system should ensure release status consistency between us
- Canadian cargo records for the same equipment
β Consolidated Acceptance Criteria
- The system determines cross-border coordination is not applicable → the system should skip all cross-border coordination activities and proceed to completion
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SkipCrossBorderCoordination(["Start Step"])
E_SkipCrossBorderCoordination(["End Step"])
N_SkipCrossBorderCoordination_Node0{"The system determines cross-border
coordination is not applicable"}:::decision N_SkipCrossBorderCoordination_Node0_action["The system should skip all
cross-border coordination activities
and proceed to completion"]:::main N_SkipCrossBorderCoordination_Node0 -- Yes --> N_SkipCrossBorderCoordination_Node0_action N_SkipCrossBorderCoordination_Node0_action --> E_SkipCrossBorderCoordination S_SkipCrossBorderCoordination --> N_SkipCrossBorderCoordination_Node0 N_SkipCrossBorderCoordination_Node0 -- No --> E_SkipCrossBorderCoordination
coordination is not applicable"}:::decision N_SkipCrossBorderCoordination_Node0_action["The system should skip all
cross-border coordination activities
and proceed to completion"]:::main N_SkipCrossBorderCoordination_Node0 -- Yes --> N_SkipCrossBorderCoordination_Node0_action N_SkipCrossBorderCoordination_Node0_action --> E_SkipCrossBorderCoordination S_SkipCrossBorderCoordination --> N_SkipCrossBorderCoordination_Node0 N_SkipCrossBorderCoordination_Node0 -- No --> E_SkipCrossBorderCoordination
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
US cargo is not in released status or no valid Canadian cargo matches are found
WHEN:
The system determines cross-border coordination is not applicable
THEN:
- The system should skip all cross-border coordination activities
- Proceed to completion
β Consolidated Acceptance Criteria
- The system processes the status change → the existing destination index is cleared to prepare for re-establishment
- The cargo status has changed requiring destination index re-establishment → the system clears the existing destination index from the cargo record
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ClearExistingDestinationIndex(["Start Step"])
E_ClearExistingDestinationIndex(["End Step"])
N_ClearExistingDestinationIndex_Node0{"The system processes the status
change"}:::decision N_ClearExistingDestinationIndex_Node0_action["The existing destination index is
cleared to prepare for
re-establishment"]:::main N_ClearExistingDestinationIndex_Node0 -- Yes --> N_ClearExistingDestinationIndex_Node0_action N_ClearExistingDestinationIndex_Node0_action --> E_ClearExistingDestinationIndex S_ClearExistingDestinationIndex --> N_ClearExistingDestinationIndex_Node0 N_ClearExistingDestinationIndex_Node1{"The cargo status has changed
requiring destination index
re-establishment"}:::decision N_ClearExistingDestinationIndex_Node1_action["The system clears the existing
destination index from the cargo
record"]:::main N_ClearExistingDestinationIndex_Node1 -- Yes --> N_ClearExistingDestinationIndex_Node1_action N_ClearExistingDestinationIndex_Node1_action --> E_ClearExistingDestinationIndex N_ClearExistingDestinationIndex_Node0 -- No --> N_ClearExistingDestinationIndex_Node1 N_ClearExistingDestinationIndex_Node1 -- No --> E_ClearExistingDestinationIndex
change"}:::decision N_ClearExistingDestinationIndex_Node0_action["The existing destination index is
cleared to prepare for
re-establishment"]:::main N_ClearExistingDestinationIndex_Node0 -- Yes --> N_ClearExistingDestinationIndex_Node0_action N_ClearExistingDestinationIndex_Node0_action --> E_ClearExistingDestinationIndex S_ClearExistingDestinationIndex --> N_ClearExistingDestinationIndex_Node0 N_ClearExistingDestinationIndex_Node1{"The cargo status has changed
requiring destination index
re-establishment"}:::decision N_ClearExistingDestinationIndex_Node1_action["The system clears the existing
destination index from the cargo
record"]:::main N_ClearExistingDestinationIndex_Node1 -- Yes --> N_ClearExistingDestinationIndex_Node1_action N_ClearExistingDestinationIndex_Node1_action --> E_ClearExistingDestinationIndex N_ClearExistingDestinationIndex_Node0 -- No --> N_ClearExistingDestinationIndex_Node1 N_ClearExistingDestinationIndex_Node1 -- No --> E_ClearExistingDestinationIndex
File: GCX016.cbl
GIVEN:
A cargo record has an existing destination index AND a cargo status change has been detected
WHEN:
The system processes the status change
THEN:
The existing destination index is cleared to prepare for re-establishment
File: GCX016.cbl
GIVEN:
A cargo record exists with current destination index information
WHEN:
The cargo status has changed requiring destination index re-establishment
THEN:
The system clears the existing destination index from the cargo record
β Consolidated Acceptance Criteria
- If the status change type (arrival, export, bond change, or release) → the system determines if destination index re-establishment is required based on business rules for each status change type
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ReestablishmentRequired(["Start Step"])
E_ReestablishmentRequired(["End Step"])
N_ReestablishmentRequired_Node0{"The system evaluates the status
change type arrival, export, bond
change, or release"}:::decision N_ReestablishmentRequired_Node0_action["The system determines if
destination index re-establishment
is required based on business rules
for each status change type"]:::main N_ReestablishmentRequired_Node0 -- Yes --> N_ReestablishmentRequired_Node0_action N_ReestablishmentRequired_Node0_action --> E_ReestablishmentRequired S_ReestablishmentRequired --> N_ReestablishmentRequired_Node0 N_ReestablishmentRequired_Node0 -- No --> E_ReestablishmentRequired
change type arrival, export, bond
change, or release"}:::decision N_ReestablishmentRequired_Node0_action["The system determines if
destination index re-establishment
is required based on business rules
for each status change type"]:::main N_ReestablishmentRequired_Node0 -- Yes --> N_ReestablishmentRequired_Node0_action N_ReestablishmentRequired_Node0_action --> E_ReestablishmentRequired S_ReestablishmentRequired --> N_ReestablishmentRequired_Node0 N_ReestablishmentRequired_Node0 -- No --> E_ReestablishmentRequired
File: GCX016.cbl
GIVEN:
A cargo status change has occurred
WHEN:
The system evaluates the status change type (arrival, export, bond change, or release)
THEN:
The system determines if destination index re-establishment is required based on business rules for each status change type
β Consolidated Acceptance Criteria
- The system calculates new index parameters → new destination index parameters are calculated based on current cargo status, location, and bond information
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CalculateNewIndexParameters(["Start Step"])
E_CalculateNewIndexParameters(["End Step"])
N_CalculateNewIndexParameters_Node0{"The system calculates new index
parameters"}:::decision N_CalculateNewIndexParameters_Node0_action["New destination index parameters
are calculated based on current
cargo status, location, and bond
information"]:::main N_CalculateNewIndexParameters_Node0 -- Yes --> N_CalculateNewIndexParameters_Node0_action N_CalculateNewIndexParameters_Node0_action --> E_CalculateNewIndexParameters S_CalculateNewIndexParameters --> N_CalculateNewIndexParameters_Node0 N_CalculateNewIndexParameters_Node0 -- No --> E_CalculateNewIndexParameters
parameters"}:::decision N_CalculateNewIndexParameters_Node0_action["New destination index parameters
are calculated based on current
cargo status, location, and bond
information"]:::main N_CalculateNewIndexParameters_Node0 -- Yes --> N_CalculateNewIndexParameters_Node0_action N_CalculateNewIndexParameters_Node0_action --> E_CalculateNewIndexParameters S_CalculateNewIndexParameters --> N_CalculateNewIndexParameters_Node0 N_CalculateNewIndexParameters_Node0 -- No --> E_CalculateNewIndexParameters
File: GCX016.cbl
GIVEN:
Destination index re-establishment is required AND cargo status information is available
WHEN:
The system calculates new index parameters
THEN:
New destination index parameters are calculated based on current cargo status, location, and bond information
β Consolidated Acceptance Criteria
- The system updates bond dates → bond dates are updated based on current bond status and regulatory requirements
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UpdateBondDates(["Start Step"])
E_UpdateBondDates(["End Step"])
N_UpdateBondDates_Node0{"The system updates bond dates"}:::decision
N_UpdateBondDates_Node0_action["Bond dates are updated based on
current bond status and regulatory
requirements"]:::main N_UpdateBondDates_Node0 -- Yes --> N_UpdateBondDates_Node0_action N_UpdateBondDates_Node0_action --> E_UpdateBondDates S_UpdateBondDates --> N_UpdateBondDates_Node0 N_UpdateBondDates_Node0 -- No --> E_UpdateBondDates
current bond status and regulatory
requirements"]:::main N_UpdateBondDates_Node0 -- Yes --> N_UpdateBondDates_Node0_action N_UpdateBondDates_Node0_action --> E_UpdateBondDates S_UpdateBondDates --> N_UpdateBondDates_Node0 N_UpdateBondDates_Node0 -- No --> E_UpdateBondDates
File: GCX016.cbl
GIVEN:
New destination index parameters are being calculated AND bond information is available
WHEN:
The system updates bond dates
THEN:
- Bond dates are updated based on current bond status
- Regulatory requirements
β Consolidated Acceptance Criteria
- The system creates the new RT076 destination index → a new RT076 destination index record is created with the calculated parameters
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CreateNewRT076DestinationIndex(["Start Step"])
E_CreateNewRT076DestinationIndex(["End Step"])
N_CreateNewRT076DestinationIndex_Node0{"The system creates the new RT076
destination index"}:::decision N_CreateNewRT076DestinationIndex_Node0_action["A new RT076 destination index
record is created with the
calculated parameters"]:::main N_CreateNewRT076DestinationIndex_Node0 -- Yes --> N_CreateNewRT076DestinationIndex_Node0_action N_CreateNewRT076DestinationIndex_Node0_action --> E_CreateNewRT076DestinationIndex S_CreateNewRT076DestinationIndex --> N_CreateNewRT076DestinationIndex_Node0 N_CreateNewRT076DestinationIndex_Node0 -- No --> E_CreateNewRT076DestinationIndex
destination index"}:::decision N_CreateNewRT076DestinationIndex_Node0_action["A new RT076 destination index
record is created with the
calculated parameters"]:::main N_CreateNewRT076DestinationIndex_Node0 -- Yes --> N_CreateNewRT076DestinationIndex_Node0_action N_CreateNewRT076DestinationIndex_Node0_action --> E_CreateNewRT076DestinationIndex S_CreateNewRT076DestinationIndex --> N_CreateNewRT076DestinationIndex_Node0 N_CreateNewRT076DestinationIndex_Node0 -- No --> E_CreateNewRT076DestinationIndex
File: GCX016.cbl
GIVEN:
All destination index parameters have been calculated AND validated
WHEN:
The system creates the new RT076 destination index
THEN:
A new RT076 destination index record is created with the calculated parameters
β Consolidated Acceptance Criteria
- The system validates the creation result → the system confirms whether the destination index was successfully created or if an error occurred
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IndexCreationSuccessful(["Start Step"])
E_IndexCreationSuccessful(["End Step"])
N_IndexCreationSuccessful_Node0{"The system validates the creation
result"}:::decision N_IndexCreationSuccessful_Node0_action["The system confirms whether the
destination index was successfully
created or if an error occurred"]:::main N_IndexCreationSuccessful_Node0 -- Yes --> N_IndexCreationSuccessful_Node0_action N_IndexCreationSuccessful_Node0_action --> E_IndexCreationSuccessful S_IndexCreationSuccessful --> N_IndexCreationSuccessful_Node0 N_IndexCreationSuccessful_Node0 -- No --> E_IndexCreationSuccessful
result"}:::decision N_IndexCreationSuccessful_Node0_action["The system confirms whether the
destination index was successfully
created or if an error occurred"]:::main N_IndexCreationSuccessful_Node0 -- Yes --> N_IndexCreationSuccessful_Node0_action N_IndexCreationSuccessful_Node0_action --> E_IndexCreationSuccessful S_IndexCreationSuccessful --> N_IndexCreationSuccessful_Node0 N_IndexCreationSuccessful_Node0 -- No --> E_IndexCreationSuccessful
File: GCX016.cbl
GIVEN:
A new RT076 destination index creation has been attempted
WHEN:
The system validates the creation result
THEN:
The system confirms whether the destination index was successfully created or if an error occurred
β Consolidated Acceptance Criteria
- The system updates the cargo record → the cargo record is updated to reference the new destination index
- The system finalizes the cargo record update → the system updates the cargo record with the new destination index information and any coordination results
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UpdateCargoRecordwithNewIndex(["Start Step"])
E_UpdateCargoRecordwithNewIndex(["End Step"])
N_UpdateCargoRecordwithNewIndex_Node0{"The system updates the cargo record"}:::decision
N_UpdateCargoRecordwithNewIndex_Node0_action["The cargo record is updated to
reference the new destination index"]:::main N_UpdateCargoRecordwithNewIndex_Node0 -- Yes --> N_UpdateCargoRecordwithNewIndex_Node0_action N_UpdateCargoRecordwithNewIndex_Node0_action --> E_UpdateCargoRecordwithNewIndex S_UpdateCargoRecordwithNewIndex --> N_UpdateCargoRecordwithNewIndex_Node0 N_UpdateCargoRecordwithNewIndex_Node1{"The system finalizes the cargo
record update"}:::decision N_UpdateCargoRecordwithNewIndex_Node1_action["The system updates the cargo record
with the new destination index
information and any coordination
results"]:::main N_UpdateCargoRecordwithNewIndex_Node1 -- Yes --> N_UpdateCargoRecordwithNewIndex_Node1_action N_UpdateCargoRecordwithNewIndex_Node1_action --> E_UpdateCargoRecordwithNewIndex N_UpdateCargoRecordwithNewIndex_Node0 -- No --> N_UpdateCargoRecordwithNewIndex_Node1 N_UpdateCargoRecordwithNewIndex_Node1 -- No --> E_UpdateCargoRecordwithNewIndex
reference the new destination index"]:::main N_UpdateCargoRecordwithNewIndex_Node0 -- Yes --> N_UpdateCargoRecordwithNewIndex_Node0_action N_UpdateCargoRecordwithNewIndex_Node0_action --> E_UpdateCargoRecordwithNewIndex S_UpdateCargoRecordwithNewIndex --> N_UpdateCargoRecordwithNewIndex_Node0 N_UpdateCargoRecordwithNewIndex_Node1{"The system finalizes the cargo
record update"}:::decision N_UpdateCargoRecordwithNewIndex_Node1_action["The system updates the cargo record
with the new destination index
information and any coordination
results"]:::main N_UpdateCargoRecordwithNewIndex_Node1 -- Yes --> N_UpdateCargoRecordwithNewIndex_Node1_action N_UpdateCargoRecordwithNewIndex_Node1_action --> E_UpdateCargoRecordwithNewIndex N_UpdateCargoRecordwithNewIndex_Node0 -- No --> N_UpdateCargoRecordwithNewIndex_Node1 N_UpdateCargoRecordwithNewIndex_Node1 -- No --> E_UpdateCargoRecordwithNewIndex
File: GCX016.cbl
GIVEN:
A new destination index has been successfully created
WHEN:
The system updates the cargo record
THEN:
The cargo record is updated to reference the new destination index
File: GCX016.cbl
GIVEN:
Destination index has been re-established AND any required cross-border coordination has been completed
WHEN:
The system finalizes the cargo record update
THEN:
- The system updates the cargo record with the new destination index information
- Any coordination results
β Consolidated Acceptance Criteria
- The system logs the activity → the destination index re-establishment activity is logged with relevant cargo and index information
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogIndexReestablishment(["Start Step"])
E_LogIndexReestablishment(["End Step"])
N_LogIndexReestablishment_Node0{"The system logs the activity"}:::decision
N_LogIndexReestablishment_Node0_action["The destination index
re-establishment activity is logged
with relevant cargo and index
information"]:::main N_LogIndexReestablishment_Node0 -- Yes --> N_LogIndexReestablishment_Node0_action N_LogIndexReestablishment_Node0_action --> E_LogIndexReestablishment S_LogIndexReestablishment --> N_LogIndexReestablishment_Node0 N_LogIndexReestablishment_Node0 -- No --> E_LogIndexReestablishment
re-establishment activity is logged
with relevant cargo and index
information"]:::main N_LogIndexReestablishment_Node0 -- Yes --> N_LogIndexReestablishment_Node0_action N_LogIndexReestablishment_Node0_action --> E_LogIndexReestablishment S_LogIndexReestablishment --> N_LogIndexReestablishment_Node0 N_LogIndexReestablishment_Node0 -- No --> E_LogIndexReestablishment
File: GCX016.cbl
GIVEN:
A destination index has been re-established AND cargo record has been updated
WHEN:
The system logs the activity
THEN:
- The destination index re-establishment activity is logged with relevant cargo
- Index information
β Consolidated Acceptance Criteria
- The system handles the creation error → the error is processed appropriately and the system continues with error handling procedures
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_HandleIndexCreationError(["Start Step"])
E_HandleIndexCreationError(["End Step"])
N_HandleIndexCreationError_Node0{"The system handles the creation
error"}:::decision N_HandleIndexCreationError_Node0_action["The error is processed
appropriately and the system
continues with error handling
procedures"]:::exclusion N_HandleIndexCreationError_Node0 -- Yes -->|Alternative| N_HandleIndexCreationError_Node0_action N_HandleIndexCreationError_Node0_action --> E_HandleIndexCreationError S_HandleIndexCreationError --> N_HandleIndexCreationError_Node0 N_HandleIndexCreationError_Node0 -- No --> E_HandleIndexCreationError
error"}:::decision N_HandleIndexCreationError_Node0_action["The error is processed
appropriately and the system
continues with error handling
procedures"]:::exclusion N_HandleIndexCreationError_Node0 -- Yes -->|Alternative| N_HandleIndexCreationError_Node0_action N_HandleIndexCreationError_Node0_action --> E_HandleIndexCreationError S_HandleIndexCreationError --> N_HandleIndexCreationError_Node0 N_HandleIndexCreationError_Node0 -- No --> E_HandleIndexCreationError
File: GCX016.cbl
GIVEN:
Destination index creation has failed
WHEN:
The system handles the creation error
THEN:
- The error is processed appropriately
- The system continues with error handling procedures
β Consolidated Acceptance Criteria
- If re-establishment requirements → the destination index re-establishment process is skipped and processing continues
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SkipIndexReestablishment(["Start Step"])
E_SkipIndexReestablishment(["End Step"])
N_SkipIndexReestablishment_Node0{"The system evaluates
re-establishment requirements"}:::decision N_SkipIndexReestablishment_Node0_action["The destination index
re-establishment process is skipped
and processing continues"]:::main N_SkipIndexReestablishment_Node0 -- Yes --> N_SkipIndexReestablishment_Node0_action N_SkipIndexReestablishment_Node0_action --> E_SkipIndexReestablishment S_SkipIndexReestablishment --> N_SkipIndexReestablishment_Node0 N_SkipIndexReestablishment_Node0 -- No --> E_SkipIndexReestablishment
re-establishment requirements"}:::decision N_SkipIndexReestablishment_Node0_action["The destination index
re-establishment process is skipped
and processing continues"]:::main N_SkipIndexReestablishment_Node0 -- Yes --> N_SkipIndexReestablishment_Node0_action N_SkipIndexReestablishment_Node0_action --> E_SkipIndexReestablishment S_SkipIndexReestablishment --> N_SkipIndexReestablishment_Node0 N_SkipIndexReestablishment_Node0 -- No --> E_SkipIndexReestablishment
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
A cargo status change has occurred AND destination index re-establishment is not required
WHEN:
The system evaluates re-establishment requirements
THEN:
- The destination index re-establishment process is skipped
- Processing continues
β Consolidated Acceptance Criteria
- No counterpart code exists for the disposition code → counterpart processing is bypassed and the system proceeds to complete processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_NoCounterpartProcessingNeeded(["Start Step"])
E_NoCounterpartProcessingNeeded(["End Step"])
N_NoCounterpartProcessingNeeded_Node0{"No counterpart code exists for the
disposition code"}:::decision N_NoCounterpartProcessingNeeded_Node0_action["Counterpart processing is bypassed
and the system proceeds to complete
processing"]:::main N_NoCounterpartProcessingNeeded_Node0 -- Yes --> N_NoCounterpartProcessingNeeded_Node0_action N_NoCounterpartProcessingNeeded_Node0_action --> E_NoCounterpartProcessingNeeded S_NoCounterpartProcessingNeeded --> N_NoCounterpartProcessingNeeded_Node0 N_NoCounterpartProcessingNeeded_Node0 -- No --> E_NoCounterpartProcessingNeeded
disposition code"}:::decision N_NoCounterpartProcessingNeeded_Node0_action["Counterpart processing is bypassed
and the system proceeds to complete
processing"]:::main N_NoCounterpartProcessingNeeded_Node0 -- Yes --> N_NoCounterpartProcessingNeeded_Node0_action N_NoCounterpartProcessingNeeded_Node0_action --> E_NoCounterpartProcessingNeeded S_NoCounterpartProcessingNeeded --> N_NoCounterpartProcessingNeeded_Node0 N_NoCounterpartProcessingNeeded_Node0 -- No --> E_NoCounterpartProcessingNeeded
File: GCX016.cbl
GIVEN:
A disposition code has been looked up in the DC table
WHEN:
No counterpart code exists for the disposition code
THEN:
- Counterpart processing is bypassed
- The system proceeds to complete processing
β Consolidated Acceptance Criteria
- FDA hold status processing is initiated → the system begins evaluation of FDA hold requirements
- FDA hold status processing is initiated → the system begins evaluation of FDA hold requirements
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_FDAHoldStatusProcessingStart(["Start Step"])
E_FDAHoldStatusProcessingStart(["End Step"])
N_FDAHoldStatusProcessingStart_Node0{"FDA hold status processing is
initiated"}:::decision N_FDAHoldStatusProcessingStart_Node0_action["The system begins evaluation of FDA
hold requirements"]:::main N_FDAHoldStatusProcessingStart_Node0 -- Yes --> N_FDAHoldStatusProcessingStart_Node0_action N_FDAHoldStatusProcessingStart_Node0_action --> E_FDAHoldStatusProcessingStart S_FDAHoldStatusProcessingStart --> N_FDAHoldStatusProcessingStart_Node0 N_FDAHoldStatusProcessingStart_Node1{"FDA hold status processing is
initiated"}:::decision N_FDAHoldStatusProcessingStart_Node1_action["The system begins evaluation of FDA
hold requirements"]:::main N_FDAHoldStatusProcessingStart_Node1 -- Yes --> N_FDAHoldStatusProcessingStart_Node1_action N_FDAHoldStatusProcessingStart_Node1_action --> E_FDAHoldStatusProcessingStart N_FDAHoldStatusProcessingStart_Node0 -- No --> N_FDAHoldStatusProcessingStart_Node1 N_FDAHoldStatusProcessingStart_Node1 -- No --> E_FDAHoldStatusProcessingStart
initiated"}:::decision N_FDAHoldStatusProcessingStart_Node0_action["The system begins evaluation of FDA
hold requirements"]:::main N_FDAHoldStatusProcessingStart_Node0 -- Yes --> N_FDAHoldStatusProcessingStart_Node0_action N_FDAHoldStatusProcessingStart_Node0_action --> E_FDAHoldStatusProcessingStart S_FDAHoldStatusProcessingStart --> N_FDAHoldStatusProcessingStart_Node0 N_FDAHoldStatusProcessingStart_Node1{"FDA hold status processing is
initiated"}:::decision N_FDAHoldStatusProcessingStart_Node1_action["The system begins evaluation of FDA
hold requirements"]:::main N_FDAHoldStatusProcessingStart_Node1 -- Yes --> N_FDAHoldStatusProcessingStart_Node1_action N_FDAHoldStatusProcessingStart_Node1_action --> E_FDAHoldStatusProcessingStart N_FDAHoldStatusProcessingStart_Node0 -- No --> N_FDAHoldStatusProcessingStart_Node1 N_FDAHoldStatusProcessingStart_Node1 -- No --> E_FDAHoldStatusProcessingStart
File: GCX016.cbl
GIVEN:
A cargo record exists in the system
WHEN:
FDA hold status processing is initiated
THEN:
The system begins evaluation of FDA hold requirements
File: GCX016.cbl
GIVEN:
A cargo record exists in the system
WHEN:
FDA hold status processing is initiated
THEN:
The system begins evaluation of FDA hold requirements
β Consolidated Acceptance Criteria
- The system checks for FDA hold conditions → the system identifies whether FDA regulatory hold requirements exist for the cargo
- System evaluates cargo for FDA hold requirements → system identifies whether FDA hold conditions exist for the cargo
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CheckforFDAHoldConditions(["Start Step"])
E_CheckforFDAHoldConditions(["End Step"])
N_CheckforFDAHoldConditions_Node0{"The system checks for FDA hold
conditions"}:::decision N_CheckforFDAHoldConditions_Node0_action["The system identifies whether FDA
regulatory hold requirements exist
for the cargo"]:::main N_CheckforFDAHoldConditions_Node0 -- Yes --> N_CheckforFDAHoldConditions_Node0_action N_CheckforFDAHoldConditions_Node0_action --> E_CheckforFDAHoldConditions S_CheckforFDAHoldConditions --> N_CheckforFDAHoldConditions_Node0 N_CheckforFDAHoldConditions_Node1{"System evaluates cargo for FDA hold
requirements"}:::decision N_CheckforFDAHoldConditions_Node1_action["System identifies whether FDA hold
conditions exist for the cargo"]:::main N_CheckforFDAHoldConditions_Node1 -- Yes --> N_CheckforFDAHoldConditions_Node1_action N_CheckforFDAHoldConditions_Node1_action --> E_CheckforFDAHoldConditions N_CheckforFDAHoldConditions_Node0 -- No --> N_CheckforFDAHoldConditions_Node1 N_CheckforFDAHoldConditions_Node1 -- No --> E_CheckforFDAHoldConditions
conditions"}:::decision N_CheckforFDAHoldConditions_Node0_action["The system identifies whether FDA
regulatory hold requirements exist
for the cargo"]:::main N_CheckforFDAHoldConditions_Node0 -- Yes --> N_CheckforFDAHoldConditions_Node0_action N_CheckforFDAHoldConditions_Node0_action --> E_CheckforFDAHoldConditions S_CheckforFDAHoldConditions --> N_CheckforFDAHoldConditions_Node0 N_CheckforFDAHoldConditions_Node1{"System evaluates cargo for FDA hold
requirements"}:::decision N_CheckforFDAHoldConditions_Node1_action["System identifies whether FDA hold
conditions exist for the cargo"]:::main N_CheckforFDAHoldConditions_Node1 -- Yes --> N_CheckforFDAHoldConditions_Node1_action N_CheckforFDAHoldConditions_Node1_action --> E_CheckforFDAHoldConditions N_CheckforFDAHoldConditions_Node0 -- No --> N_CheckforFDAHoldConditions_Node1 N_CheckforFDAHoldConditions_Node1 -- No --> E_CheckforFDAHoldConditions
File: GCX016.cbl
GIVEN:
Cargo status analysis is complete
WHEN:
The system checks for FDA hold conditions
THEN:
The system identifies whether FDA regulatory hold requirements exist for the cargo
File: GCX016.cbl
GIVEN:
Cargo status analysis has been completed
WHEN:
System evaluates cargo for FDA hold requirements
THEN:
System identifies whether FDA hold conditions exist for the cargo
β Consolidated Acceptance Criteria
- If if FDA hold is required at destination → the system either sets FDA hold status code or continues with standard processing
- System determines the appropriate hold location → system decides whether FDA hold is required at destination or can proceed with other status processing
- The system determines if FDA hold is required at destination → if FDA hold is required, set FDA hold status code, otherwise continue with other status processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_FDAHoldRequiredatDestination(["Start Step"])
E_FDAHoldRequiredatDestination(["End Step"])
N_FDAHoldRequiredatDestination_Node0{"The system evaluates if FDA hold is
required at destination"}:::decision N_FDAHoldRequiredatDestination_Node0_action["The system either sets FDA hold
status code or continues with
standard processing"]:::main N_FDAHoldRequiredatDestination_Node0 -- Yes --> N_FDAHoldRequiredatDestination_Node0_action N_FDAHoldRequiredatDestination_Node0_action --> E_FDAHoldRequiredatDestination S_FDAHoldRequiredatDestination --> N_FDAHoldRequiredatDestination_Node0 N_FDAHoldRequiredatDestination_Node1{"System determines the appropriate
hold location"}:::decision N_FDAHoldRequiredatDestination_Node1_action["System decides whether FDA hold is
required at destination or can
proceed with other status processing"]:::main N_FDAHoldRequiredatDestination_Node1 -- Yes --> N_FDAHoldRequiredatDestination_Node1_action N_FDAHoldRequiredatDestination_Node1_action --> E_FDAHoldRequiredatDestination N_FDAHoldRequiredatDestination_Node0 -- No --> N_FDAHoldRequiredatDestination_Node1 N_FDAHoldRequiredatDestination_Node2{"The system determines if FDA hold
is required at destination"}:::decision N_FDAHoldRequiredatDestination_Node2_action["If FDA hold is required, set FDA
hold status code, otherwise continue
with other status processing"]:::main N_FDAHoldRequiredatDestination_Node2 -- Yes --> N_FDAHoldRequiredatDestination_Node2_action N_FDAHoldRequiredatDestination_Node2_action --> E_FDAHoldRequiredatDestination N_FDAHoldRequiredatDestination_Node1 -- No --> N_FDAHoldRequiredatDestination_Node2 N_FDAHoldRequiredatDestination_Node2 -- No --> E_FDAHoldRequiredatDestination
required at destination"}:::decision N_FDAHoldRequiredatDestination_Node0_action["The system either sets FDA hold
status code or continues with
standard processing"]:::main N_FDAHoldRequiredatDestination_Node0 -- Yes --> N_FDAHoldRequiredatDestination_Node0_action N_FDAHoldRequiredatDestination_Node0_action --> E_FDAHoldRequiredatDestination S_FDAHoldRequiredatDestination --> N_FDAHoldRequiredatDestination_Node0 N_FDAHoldRequiredatDestination_Node1{"System determines the appropriate
hold location"}:::decision N_FDAHoldRequiredatDestination_Node1_action["System decides whether FDA hold is
required at destination or can
proceed with other status processing"]:::main N_FDAHoldRequiredatDestination_Node1 -- Yes --> N_FDAHoldRequiredatDestination_Node1_action N_FDAHoldRequiredatDestination_Node1_action --> E_FDAHoldRequiredatDestination N_FDAHoldRequiredatDestination_Node0 -- No --> N_FDAHoldRequiredatDestination_Node1 N_FDAHoldRequiredatDestination_Node2{"The system determines if FDA hold
is required at destination"}:::decision N_FDAHoldRequiredatDestination_Node2_action["If FDA hold is required, set FDA
hold status code, otherwise continue
with other status processing"]:::main N_FDAHoldRequiredatDestination_Node2 -- Yes --> N_FDAHoldRequiredatDestination_Node2_action N_FDAHoldRequiredatDestination_Node2_action --> E_FDAHoldRequiredatDestination N_FDAHoldRequiredatDestination_Node1 -- No --> N_FDAHoldRequiredatDestination_Node2 N_FDAHoldRequiredatDestination_Node2 -- No --> E_FDAHoldRequiredatDestination
File: GCX016.cbl
GIVEN:
FDA hold conditions have been checked
WHEN:
The system evaluates if FDA hold is required at destination
THEN:
The system either sets FDA hold status code or continues with standard processing
File: GCX016.cbl
GIVEN:
FDA hold conditions have been identified for cargo
WHEN:
System determines the appropriate hold location
THEN:
System decides whether FDA hold is required at destination or can proceed with other status processing
File: GCX016.cbl
GIVEN:
FDA hold conditions have been evaluated
WHEN:
The system determines if FDA hold is required at destination
THEN:
If FDA hold is required, set FDA hold status code, otherwise continue with other status processing
β Consolidated Acceptance Criteria
- The system sets FDA hold status code → the cargo is assigned the FDA-specific hold status code
- The system sets FDA hold status code → the appropriate FDA-specific status code is assigned to the cargo
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetFDAHoldStatusCode(["Start Step"])
E_SetFDAHoldStatusCode(["End Step"])
N_SetFDAHoldStatusCode_Node0{"The system sets FDA hold status
code"}:::decision N_SetFDAHoldStatusCode_Node0_action["The cargo is assigned the
FDA-specific hold status code"]:::main N_SetFDAHoldStatusCode_Node0 -- Yes --> N_SetFDAHoldStatusCode_Node0_action N_SetFDAHoldStatusCode_Node0_action --> E_SetFDAHoldStatusCode S_SetFDAHoldStatusCode --> N_SetFDAHoldStatusCode_Node0 N_SetFDAHoldStatusCode_Node1{"The system sets FDA hold status
code"}:::decision N_SetFDAHoldStatusCode_Node1_action["The appropriate FDA-specific status
code is assigned to the cargo"]:::main N_SetFDAHoldStatusCode_Node1 -- Yes --> N_SetFDAHoldStatusCode_Node1_action N_SetFDAHoldStatusCode_Node1_action --> E_SetFDAHoldStatusCode N_SetFDAHoldStatusCode_Node0 -- No --> N_SetFDAHoldStatusCode_Node1 N_SetFDAHoldStatusCode_Node1 -- No --> E_SetFDAHoldStatusCode
code"}:::decision N_SetFDAHoldStatusCode_Node0_action["The cargo is assigned the
FDA-specific hold status code"]:::main N_SetFDAHoldStatusCode_Node0 -- Yes --> N_SetFDAHoldStatusCode_Node0_action N_SetFDAHoldStatusCode_Node0_action --> E_SetFDAHoldStatusCode S_SetFDAHoldStatusCode --> N_SetFDAHoldStatusCode_Node0 N_SetFDAHoldStatusCode_Node1{"The system sets FDA hold status
code"}:::decision N_SetFDAHoldStatusCode_Node1_action["The appropriate FDA-specific status
code is assigned to the cargo"]:::main N_SetFDAHoldStatusCode_Node1 -- Yes --> N_SetFDAHoldStatusCode_Node1_action N_SetFDAHoldStatusCode_Node1_action --> E_SetFDAHoldStatusCode N_SetFDAHoldStatusCode_Node0 -- No --> N_SetFDAHoldStatusCode_Node1 N_SetFDAHoldStatusCode_Node1 -- No --> E_SetFDAHoldStatusCode
File: GCX016.cbl
GIVEN:
FDA hold is required at destination
WHEN:
The system sets FDA hold status code
THEN:
The cargo is assigned the FDA-specific hold status code
File: GCX016.cbl
GIVEN:
FDA hold is required at destination
WHEN:
The system sets FDA hold status code
THEN:
The appropriate FDA-specific status code is assigned to the cargo
β Consolidated Acceptance Criteria
- The system updates cargo status to FDA hold → the cargo status is changed to FDA hold status
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UpdateCargoStatustoFDAHold(["Start Step"])
E_UpdateCargoStatustoFDAHold(["End Step"])
N_UpdateCargoStatustoFDAHold_Node0{"The system updates cargo status to
FDA hold"}:::decision N_UpdateCargoStatustoFDAHold_Node0_action["The cargo status is changed to FDA
hold status"]:::main N_UpdateCargoStatustoFDAHold_Node0 -- Yes --> N_UpdateCargoStatustoFDAHold_Node0_action N_UpdateCargoStatustoFDAHold_Node0_action --> E_UpdateCargoStatustoFDAHold S_UpdateCargoStatustoFDAHold --> N_UpdateCargoStatustoFDAHold_Node0 N_UpdateCargoStatustoFDAHold_Node0 -- No --> E_UpdateCargoStatustoFDAHold
FDA hold"}:::decision N_UpdateCargoStatustoFDAHold_Node0_action["The cargo status is changed to FDA
hold status"]:::main N_UpdateCargoStatustoFDAHold_Node0 -- Yes --> N_UpdateCargoStatustoFDAHold_Node0_action N_UpdateCargoStatustoFDAHold_Node0_action --> E_UpdateCargoStatustoFDAHold S_UpdateCargoStatustoFDAHold --> N_UpdateCargoStatustoFDAHold_Node0 N_UpdateCargoStatustoFDAHold_Node0 -- No --> E_UpdateCargoStatustoFDAHold
File: GCX016.cbl
GIVEN:
FDA hold status code has been set
WHEN:
The system updates cargo status to FDA hold
THEN:
The cargo status is changed to FDA hold status
β Consolidated Acceptance Criteria
- The system sets destination hold location → the hold location is designated as the destination location
- System determines hold enforcement location → system sets the destination as the hold location for FDA regulatory compliance
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetDestinationHoldLocation(["Start Step"])
E_SetDestinationHoldLocation(["End Step"])
N_SetDestinationHoldLocation_Node0{"The system sets destination hold
location"}:::decision N_SetDestinationHoldLocation_Node0_action["The hold location is designated as
the destination location"]:::main N_SetDestinationHoldLocation_Node0 -- Yes --> N_SetDestinationHoldLocation_Node0_action N_SetDestinationHoldLocation_Node0_action --> E_SetDestinationHoldLocation S_SetDestinationHoldLocation --> N_SetDestinationHoldLocation_Node0 N_SetDestinationHoldLocation_Node1{"System determines hold enforcement
location"}:::decision N_SetDestinationHoldLocation_Node1_action["System sets the destination as the
hold location for FDA regulatory
compliance"]:::main N_SetDestinationHoldLocation_Node1 -- Yes --> N_SetDestinationHoldLocation_Node1_action N_SetDestinationHoldLocation_Node1_action --> E_SetDestinationHoldLocation N_SetDestinationHoldLocation_Node0 -- No --> N_SetDestinationHoldLocation_Node1 N_SetDestinationHoldLocation_Node1 -- No --> E_SetDestinationHoldLocation
location"}:::decision N_SetDestinationHoldLocation_Node0_action["The hold location is designated as
the destination location"]:::main N_SetDestinationHoldLocation_Node0 -- Yes --> N_SetDestinationHoldLocation_Node0_action N_SetDestinationHoldLocation_Node0_action --> E_SetDestinationHoldLocation S_SetDestinationHoldLocation --> N_SetDestinationHoldLocation_Node0 N_SetDestinationHoldLocation_Node1{"System determines hold enforcement
location"}:::decision N_SetDestinationHoldLocation_Node1_action["System sets the destination as the
hold location for FDA regulatory
compliance"]:::main N_SetDestinationHoldLocation_Node1 -- Yes --> N_SetDestinationHoldLocation_Node1_action N_SetDestinationHoldLocation_Node1_action --> E_SetDestinationHoldLocation N_SetDestinationHoldLocation_Node0 -- No --> N_SetDestinationHoldLocation_Node1 N_SetDestinationHoldLocation_Node1 -- No --> E_SetDestinationHoldLocation
File: GCX016.cbl
GIVEN:
Cargo status has been updated to FDA hold
WHEN:
The system sets destination hold location
THEN:
The hold location is designated as the destination location
File: GCX016.cbl
GIVEN:
FDA-specific status code has been applied to cargo
WHEN:
System determines hold enforcement location
THEN:
System sets the destination as the hold location for FDA regulatory compliance
β Consolidated Acceptance Criteria
- The system applies FDA-specific status description → the cargo record contains FDA-specific status description indicating regulatory hold
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ApplyFDASpecificStatusDescription(["Start Step"])
E_ApplyFDASpecificStatusDescription(["End Step"])
N_ApplyFDASpecificStatusDescription_Node0{"The system applies FDA-specific
status description"}:::decision N_ApplyFDASpecificStatusDescription_Node0_action["The cargo record contains
FDA-specific status description
indicating regulatory hold"]:::main N_ApplyFDASpecificStatusDescription_Node0 -- Yes --> N_ApplyFDASpecificStatusDescription_Node0_action N_ApplyFDASpecificStatusDescription_Node0_action --> E_ApplyFDASpecificStatusDescription S_ApplyFDASpecificStatusDescription --> N_ApplyFDASpecificStatusDescription_Node0 N_ApplyFDASpecificStatusDescription_Node0 -- No --> E_ApplyFDASpecificStatusDescription
status description"}:::decision N_ApplyFDASpecificStatusDescription_Node0_action["The cargo record contains
FDA-specific status description
indicating regulatory hold"]:::main N_ApplyFDASpecificStatusDescription_Node0 -- Yes --> N_ApplyFDASpecificStatusDescription_Node0_action N_ApplyFDASpecificStatusDescription_Node0_action --> E_ApplyFDASpecificStatusDescription S_ApplyFDASpecificStatusDescription --> N_ApplyFDASpecificStatusDescription_Node0 N_ApplyFDASpecificStatusDescription_Node0 -- No --> E_ApplyFDASpecificStatusDescription
File: GCX016.cbl
GIVEN:
Destination hold location has been set
WHEN:
The system applies FDA-specific status description
THEN:
The cargo record contains FDA-specific status description indicating regulatory hold
β Consolidated Acceptance Criteria
- The system preserves current release quantities → existing release quantities remain unchanged during FDA hold application
- System processes quantity information during FDA hold application → system preserves current release quantities without modification
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_PreserveCurrentReleaseQuantities(["Start Step"])
E_PreserveCurrentReleaseQuantities(["End Step"])
N_PreserveCurrentReleaseQuantities_Node0{"The system preserves current
release quantities"}:::decision N_PreserveCurrentReleaseQuantities_Node0_action["Existing release quantities remain
unchanged during FDA hold
application"]:::main N_PreserveCurrentReleaseQuantities_Node0 -- Yes --> N_PreserveCurrentReleaseQuantities_Node0_action N_PreserveCurrentReleaseQuantities_Node0_action --> E_PreserveCurrentReleaseQuantities S_PreserveCurrentReleaseQuantities --> N_PreserveCurrentReleaseQuantities_Node0 N_PreserveCurrentReleaseQuantities_Node1{"System processes quantity
information during FDA hold
application"}:::decision N_PreserveCurrentReleaseQuantities_Node1_action["System preserves current release
quantities without modification"]:::main N_PreserveCurrentReleaseQuantities_Node1 -- Yes --> N_PreserveCurrentReleaseQuantities_Node1_action N_PreserveCurrentReleaseQuantities_Node1_action --> E_PreserveCurrentReleaseQuantities N_PreserveCurrentReleaseQuantities_Node0 -- No --> N_PreserveCurrentReleaseQuantities_Node1 N_PreserveCurrentReleaseQuantities_Node1 -- No --> E_PreserveCurrentReleaseQuantities
release quantities"}:::decision N_PreserveCurrentReleaseQuantities_Node0_action["Existing release quantities remain
unchanged during FDA hold
application"]:::main N_PreserveCurrentReleaseQuantities_Node0 -- Yes --> N_PreserveCurrentReleaseQuantities_Node0_action N_PreserveCurrentReleaseQuantities_Node0_action --> E_PreserveCurrentReleaseQuantities S_PreserveCurrentReleaseQuantities --> N_PreserveCurrentReleaseQuantities_Node0 N_PreserveCurrentReleaseQuantities_Node1{"System processes quantity
information during FDA hold
application"}:::decision N_PreserveCurrentReleaseQuantities_Node1_action["System preserves current release
quantities without modification"]:::main N_PreserveCurrentReleaseQuantities_Node1 -- Yes --> N_PreserveCurrentReleaseQuantities_Node1_action N_PreserveCurrentReleaseQuantities_Node1_action --> E_PreserveCurrentReleaseQuantities N_PreserveCurrentReleaseQuantities_Node0 -- No --> N_PreserveCurrentReleaseQuantities_Node1 N_PreserveCurrentReleaseQuantities_Node1 -- No --> E_PreserveCurrentReleaseQuantities
File: GCX016.cbl
GIVEN:
FDA-specific status description has been applied
WHEN:
The system preserves current release quantities
THEN:
Existing release quantities remain unchanged during FDA hold application
File: GCX016.cbl
GIVEN:
Cargo status description has been updated for FDA hold
WHEN:
System processes quantity information during FDA hold application
THEN:
System preserves current release quantities without modification
β Consolidated Acceptance Criteria
- The system updates status array with FDA code → the status array contains the FDA hold code entry
- System updates cargo status tracking → system updates the status array with FDA code information
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UpdateStatusArraywithFDACode(["Start Step"])
E_UpdateStatusArraywithFDACode(["End Step"])
N_UpdateStatusArraywithFDACode_Node0{"The system updates status array
with FDA code"}:::decision N_UpdateStatusArraywithFDACode_Node0_action["The status array contains the FDA
hold code entry"]:::main N_UpdateStatusArraywithFDACode_Node0 -- Yes --> N_UpdateStatusArraywithFDACode_Node0_action N_UpdateStatusArraywithFDACode_Node0_action --> E_UpdateStatusArraywithFDACode S_UpdateStatusArraywithFDACode --> N_UpdateStatusArraywithFDACode_Node0 N_UpdateStatusArraywithFDACode_Node1{"System updates cargo status
tracking"}:::decision N_UpdateStatusArraywithFDACode_Node1_action["System updates the status array
with FDA code information"]:::main N_UpdateStatusArraywithFDACode_Node1 -- Yes --> N_UpdateStatusArraywithFDACode_Node1_action N_UpdateStatusArraywithFDACode_Node1_action --> E_UpdateStatusArraywithFDACode N_UpdateStatusArraywithFDACode_Node0 -- No --> N_UpdateStatusArraywithFDACode_Node1 N_UpdateStatusArraywithFDACode_Node1 -- No --> E_UpdateStatusArraywithFDACode
with FDA code"}:::decision N_UpdateStatusArraywithFDACode_Node0_action["The status array contains the FDA
hold code entry"]:::main N_UpdateStatusArraywithFDACode_Node0 -- Yes --> N_UpdateStatusArraywithFDACode_Node0_action N_UpdateStatusArraywithFDACode_Node0_action --> E_UpdateStatusArraywithFDACode S_UpdateStatusArraywithFDACode --> N_UpdateStatusArraywithFDACode_Node0 N_UpdateStatusArraywithFDACode_Node1{"System updates cargo status
tracking"}:::decision N_UpdateStatusArraywithFDACode_Node1_action["System updates the status array
with FDA code information"]:::main N_UpdateStatusArraywithFDACode_Node1 -- Yes --> N_UpdateStatusArraywithFDACode_Node1_action N_UpdateStatusArraywithFDACode_Node1_action --> E_UpdateStatusArraywithFDACode N_UpdateStatusArraywithFDACode_Node0 -- No --> N_UpdateStatusArraywithFDACode_Node1 N_UpdateStatusArraywithFDACode_Node1 -- No --> E_UpdateStatusArraywithFDACode
File: GCX016.cbl
GIVEN:
Current release quantities have been preserved
WHEN:
The system updates status array with FDA code
THEN:
The status array contains the FDA hold code entry
File: GCX016.cbl
GIVEN:
FDA code processing has been completed (primary and secondary if applicable)
WHEN:
System updates cargo status tracking
THEN:
System updates the status array with FDA code information
β Consolidated Acceptance Criteria
- The system sets hold location as destination → the hold location field is set to destination location
- The system sets hold location as destination → the hold location is designated as destination
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetHoldLocationasDestination(["Start Step"])
E_SetHoldLocationasDestination(["End Step"])
N_SetHoldLocationasDestination_Node0{"The system sets hold location as
destination"}:::decision N_SetHoldLocationasDestination_Node0_action["The hold location field is set to
destination location"]:::main N_SetHoldLocationasDestination_Node0 -- Yes --> N_SetHoldLocationasDestination_Node0_action N_SetHoldLocationasDestination_Node0_action --> E_SetHoldLocationasDestination S_SetHoldLocationasDestination --> N_SetHoldLocationasDestination_Node0 N_SetHoldLocationasDestination_Node1{"The system sets hold location as
destination"}:::decision N_SetHoldLocationasDestination_Node1_action["The hold location is designated as
destination"]:::main N_SetHoldLocationasDestination_Node1 -- Yes --> N_SetHoldLocationasDestination_Node1_action N_SetHoldLocationasDestination_Node1_action --> E_SetHoldLocationasDestination N_SetHoldLocationasDestination_Node0 -- No --> N_SetHoldLocationasDestination_Node1 N_SetHoldLocationasDestination_Node1 -- No --> E_SetHoldLocationasDestination
destination"}:::decision N_SetHoldLocationasDestination_Node0_action["The hold location field is set to
destination location"]:::main N_SetHoldLocationasDestination_Node0 -- Yes --> N_SetHoldLocationasDestination_Node0_action N_SetHoldLocationasDestination_Node0_action --> E_SetHoldLocationasDestination S_SetHoldLocationasDestination --> N_SetHoldLocationasDestination_Node0 N_SetHoldLocationasDestination_Node1{"The system sets hold location as
destination"}:::decision N_SetHoldLocationasDestination_Node1_action["The hold location is designated as
destination"]:::main N_SetHoldLocationasDestination_Node1 -- Yes --> N_SetHoldLocationasDestination_Node1_action N_SetHoldLocationasDestination_Node1_action --> E_SetHoldLocationasDestination N_SetHoldLocationasDestination_Node0 -- No --> N_SetHoldLocationasDestination_Node1 N_SetHoldLocationasDestination_Node1 -- No --> E_SetHoldLocationasDestination
File: GCX016.cbl
GIVEN:
Status array has been updated with FDA code
WHEN:
The system sets hold location as destination
THEN:
The hold location field is set to destination location
File: GCX016.cbl
GIVEN:
FDA-specific status code has been applied
WHEN:
The system sets hold location as destination
THEN:
The hold location is designated as destination
β Consolidated Acceptance Criteria
- The system updates cargo record with FDA status → the cargo record in the database reflects FDA hold status and related information
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UpdateCargoRecordwithFDAStatus(["Start Step"])
E_UpdateCargoRecordwithFDAStatus(["End Step"])
N_UpdateCargoRecordwithFDAStatus_Node0{"The system updates cargo record
with FDA status"}:::decision N_UpdateCargoRecordwithFDAStatus_Node0_action["The cargo record in the database
reflects FDA hold status and related
information"]:::main N_UpdateCargoRecordwithFDAStatus_Node0 -- Yes --> N_UpdateCargoRecordwithFDAStatus_Node0_action N_UpdateCargoRecordwithFDAStatus_Node0_action --> E_UpdateCargoRecordwithFDAStatus S_UpdateCargoRecordwithFDAStatus --> N_UpdateCargoRecordwithFDAStatus_Node0 N_UpdateCargoRecordwithFDAStatus_Node0 -- No --> E_UpdateCargoRecordwithFDAStatus
with FDA status"}:::decision N_UpdateCargoRecordwithFDAStatus_Node0_action["The cargo record in the database
reflects FDA hold status and related
information"]:::main N_UpdateCargoRecordwithFDAStatus_Node0 -- Yes --> N_UpdateCargoRecordwithFDAStatus_Node0_action N_UpdateCargoRecordwithFDAStatus_Node0_action --> E_UpdateCargoRecordwithFDAStatus S_UpdateCargoRecordwithFDAStatus --> N_UpdateCargoRecordwithFDAStatus_Node0 N_UpdateCargoRecordwithFDAStatus_Node0 -- No --> E_UpdateCargoRecordwithFDAStatus
File: GCX016.cbl
GIVEN:
FDA hold notification has been generated
WHEN:
The system updates cargo record with FDA status
THEN:
- The cargo record in the database reflects fda hold status
- Related information
β Consolidated Acceptance Criteria
- The system continues with standard processing → normal cargo processing workflow proceeds without FDA hold restrictions
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ContinuewithStandardProcessing(["Start Step"])
E_ContinuewithStandardProcessing(["End Step"])
N_ContinuewithStandardProcessing_Node0{"The system continues with standard
processing"}:::decision N_ContinuewithStandardProcessing_Node0_action["Normal cargo processing workflow
proceeds without FDA hold
restrictions"]:::main N_ContinuewithStandardProcessing_Node0 -- Yes --> N_ContinuewithStandardProcessing_Node0_action N_ContinuewithStandardProcessing_Node0_action --> E_ContinuewithStandardProcessing S_ContinuewithStandardProcessing --> N_ContinuewithStandardProcessing_Node0 N_ContinuewithStandardProcessing_Node0 -- No --> E_ContinuewithStandardProcessing
processing"}:::decision N_ContinuewithStandardProcessing_Node0_action["Normal cargo processing workflow
proceeds without FDA hold
restrictions"]:::main N_ContinuewithStandardProcessing_Node0 -- Yes --> N_ContinuewithStandardProcessing_Node0_action N_ContinuewithStandardProcessing_Node0_action --> E_ContinuewithStandardProcessing S_ContinuewithStandardProcessing --> N_ContinuewithStandardProcessing_Node0 N_ContinuewithStandardProcessing_Node0 -- No --> E_ContinuewithStandardProcessing
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
Cargo status analysis is not complete OR FDA hold is not required at destination
WHEN:
The system continues with standard processing
THEN:
Normal cargo processing workflow proceeds without FDA hold restrictions
β Consolidated Acceptance Criteria
- The system checks the proceed flag in the S09A status array → if proceed flag is set to true, continue with proceed status processing, otherwise skip proceed processing and continue with next status processing step
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ProceedFlagSetinStatusArray(["Start Step"])
E_ProceedFlagSetinStatusArray(["End Step"])
N_ProceedFlagSetinStatusArray_Node0{"The system checks the proceed flag
in the S09A status array"}:::decision N_ProceedFlagSetinStatusArray_Node0_action["If proceed flag is set to true,
continue with proceed status
processing, otherwise skip proceed
processing and continue with next
status processing step"]:::main N_ProceedFlagSetinStatusArray_Node0 -- Yes --> N_ProceedFlagSetinStatusArray_Node0_action N_ProceedFlagSetinStatusArray_Node0_action --> E_ProceedFlagSetinStatusArray S_ProceedFlagSetinStatusArray --> N_ProceedFlagSetinStatusArray_Node0 N_ProceedFlagSetinStatusArray_Node0 -- No --> E_ProceedFlagSetinStatusArray
in the S09A status array"}:::decision N_ProceedFlagSetinStatusArray_Node0_action["If proceed flag is set to true,
continue with proceed status
processing, otherwise skip proceed
processing and continue with next
status processing step"]:::main N_ProceedFlagSetinStatusArray_Node0 -- Yes --> N_ProceedFlagSetinStatusArray_Node0_action N_ProceedFlagSetinStatusArray_Node0_action --> E_ProceedFlagSetinStatusArray S_ProceedFlagSetinStatusArray --> N_ProceedFlagSetinStatusArray_Node0 N_ProceedFlagSetinStatusArray_Node0 -- No --> E_ProceedFlagSetinStatusArray
File: GCX016.cbl
GIVEN:
A cargo record has completed status analysis and status array contains various status flags
WHEN:
The system checks the proceed flag in the S09A status array
THEN:
- If proceed flag is set to true, continue with proceed status processing, otherwise skip proceed processing
- Continue with next status processing step
β Consolidated Acceptance Criteria
- The system checks for availability of border date in the message or cargo data → if border date is available and valid, use the provided border date, otherwise use current system date as border arrival date
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_BorderDateAvailable(["Start Step"])
E_BorderDateAvailable(["End Step"])
N_BorderDateAvailable_Node0{"The system checks for availability
of border date in the message or
cargo data"}:::decision N_BorderDateAvailable_Node0_action["If border date is available and
valid, use the provided border date,
otherwise use current system date as
border arrival date"]:::main N_BorderDateAvailable_Node0 -- Yes --> N_BorderDateAvailable_Node0_action N_BorderDateAvailable_Node0_action --> E_BorderDateAvailable S_BorderDateAvailable --> N_BorderDateAvailable_Node0 N_BorderDateAvailable_Node0 -- No --> E_BorderDateAvailable
of border date in the message or
cargo data"}:::decision N_BorderDateAvailable_Node0_action["If border date is available and
valid, use the provided border date,
otherwise use current system date as
border arrival date"]:::main N_BorderDateAvailable_Node0 -- Yes --> N_BorderDateAvailable_Node0_action N_BorderDateAvailable_Node0_action --> E_BorderDateAvailable S_BorderDateAvailable --> N_BorderDateAvailable_Node0 N_BorderDateAvailable_Node0 -- No --> E_BorderDateAvailable
File: GCX016.cbl
GIVEN:
Proceed status flag has been set and border arrival date update is required
WHEN:
The system checks for availability of border date in the message or cargo data
THEN:
- If border date is available
- Valid, use the provided border date, otherwise use current system date as border arrival date
β Consolidated Acceptance Criteria
- The system needs to update border arrival date → assign current system date as the border arrival date for the cargo record
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UseCurrentSystemDate(["Start Step"])
E_UseCurrentSystemDate(["End Step"])
N_UseCurrentSystemDate_Node0{"The system needs to update border
arrival date"}:::decision N_UseCurrentSystemDate_Node0_action["Assign current system date as the
border arrival date for the cargo
record"]:::main N_UseCurrentSystemDate_Node0 -- Yes --> N_UseCurrentSystemDate_Node0_action N_UseCurrentSystemDate_Node0_action --> E_UseCurrentSystemDate S_UseCurrentSystemDate --> N_UseCurrentSystemDate_Node0 N_UseCurrentSystemDate_Node0 -- No --> E_UseCurrentSystemDate
arrival date"}:::decision N_UseCurrentSystemDate_Node0_action["Assign current system date as the
border arrival date for the cargo
record"]:::main N_UseCurrentSystemDate_Node0 -- Yes --> N_UseCurrentSystemDate_Node0_action N_UseCurrentSystemDate_Node0_action --> E_UseCurrentSystemDate S_UseCurrentSystemDate --> N_UseCurrentSystemDate_Node0 N_UseCurrentSystemDate_Node0 -- No --> E_UseCurrentSystemDate
File: GCX016.cbl
GIVEN:
Proceed status processing is active and no border date is available in message data
WHEN:
The system needs to update border arrival date
THEN:
Assign current system date as the border arrival date for the cargo record
β Consolidated Acceptance Criteria
- The system updates border arrival date → use the provided border date from the message as the border arrival date for the cargo record
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UseProvidedBorderDate(["Start Step"])
E_UseProvidedBorderDate(["End Step"])
N_UseProvidedBorderDate_Node0{"The system updates border arrival
date"}:::decision N_UseProvidedBorderDate_Node0_action["Use the provided border date from
the message as the border arrival
date for the cargo record"]:::main N_UseProvidedBorderDate_Node0 -- Yes --> N_UseProvidedBorderDate_Node0_action N_UseProvidedBorderDate_Node0_action --> E_UseProvidedBorderDate S_UseProvidedBorderDate --> N_UseProvidedBorderDate_Node0 N_UseProvidedBorderDate_Node0 -- No --> E_UseProvidedBorderDate
date"}:::decision N_UseProvidedBorderDate_Node0_action["Use the provided border date from
the message as the border arrival
date for the cargo record"]:::main N_UseProvidedBorderDate_Node0 -- Yes --> N_UseProvidedBorderDate_Node0_action N_UseProvidedBorderDate_Node0_action --> E_UseProvidedBorderDate S_UseProvidedBorderDate --> N_UseProvidedBorderDate_Node0 N_UseProvidedBorderDate_Node0 -- No --> E_UseProvidedBorderDate
File: GCX016.cbl
GIVEN:
Proceed status processing is active and border date is available in message data
WHEN:
The system updates border arrival date
THEN:
Use the provided border date from the message as the border arrival date for the cargo record
β Consolidated Acceptance Criteria
- The system processes hold status flag clearing → clear all active hold status flags in the cargo status array and processing variables
- The system processes hold status flag updates → all hold status flags are cleared to remove cargo restrictions
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ClearHoldStatusFlags(["Start Step"])
E_ClearHoldStatusFlags(["End Step"])
N_ClearHoldStatusFlags_Node0{"The system processes hold status
flag clearing"}:::decision N_ClearHoldStatusFlags_Node0_action["Clear all active hold status flags
in the cargo status array and
processing variables"]:::main N_ClearHoldStatusFlags_Node0 -- Yes --> N_ClearHoldStatusFlags_Node0_action N_ClearHoldStatusFlags_Node0_action --> E_ClearHoldStatusFlags S_ClearHoldStatusFlags --> N_ClearHoldStatusFlags_Node0 N_ClearHoldStatusFlags_Node1{"The system processes hold status
flag updates"}:::decision N_ClearHoldStatusFlags_Node1_action["All hold status flags are cleared
to remove cargo restrictions"]:::main N_ClearHoldStatusFlags_Node1 -- Yes --> N_ClearHoldStatusFlags_Node1_action N_ClearHoldStatusFlags_Node1_action --> E_ClearHoldStatusFlags N_ClearHoldStatusFlags_Node0 -- No --> N_ClearHoldStatusFlags_Node1 N_ClearHoldStatusFlags_Node1 -- No --> E_ClearHoldStatusFlags
flag clearing"}:::decision N_ClearHoldStatusFlags_Node0_action["Clear all active hold status flags
in the cargo status array and
processing variables"]:::main N_ClearHoldStatusFlags_Node0 -- Yes --> N_ClearHoldStatusFlags_Node0_action N_ClearHoldStatusFlags_Node0_action --> E_ClearHoldStatusFlags S_ClearHoldStatusFlags --> N_ClearHoldStatusFlags_Node0 N_ClearHoldStatusFlags_Node1{"The system processes hold status
flag updates"}:::decision N_ClearHoldStatusFlags_Node1_action["All hold status flags are cleared
to remove cargo restrictions"]:::main N_ClearHoldStatusFlags_Node1 -- Yes --> N_ClearHoldStatusFlags_Node1_action N_ClearHoldStatusFlags_Node1_action --> E_ClearHoldStatusFlags N_ClearHoldStatusFlags_Node0 -- No --> N_ClearHoldStatusFlags_Node1 N_ClearHoldStatusFlags_Node1 -- No --> E_ClearHoldStatusFlags
File: GCX016.cbl
GIVEN:
Border arrival date has been updated and proceed status is being applied
WHEN:
The system processes hold status flag clearing
THEN:
- Clear all active hold status flags in the cargo status array
- Processing variables
File: GCX016.cbl
GIVEN:
Cargo that has been set to released status with release date
WHEN:
The system processes hold status flag updates
THEN:
All hold status flags are cleared to remove cargo restrictions
β Consolidated Acceptance Criteria
- If cargo location against destination → if cargo is at destination, proceed with export status setting; otherwise skip export processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CargoCurrentlyatDestination(["Start Step"])
E_CargoCurrentlyatDestination(["End Step"])
N_CargoCurrentlyatDestination_Node0{"The system evaluates cargo location
against destination"}:::decision N_CargoCurrentlyatDestination_Node0_action["If cargo is at destination, proceed
with export status setting otherwise
skip export processing"]:::main N_CargoCurrentlyatDestination_Node0 -- Yes --> N_CargoCurrentlyatDestination_Node0_action N_CargoCurrentlyatDestination_Node0_action --> E_CargoCurrentlyatDestination S_CargoCurrentlyatDestination --> N_CargoCurrentlyatDestination_Node0 N_CargoCurrentlyatDestination_Node0 -- No --> E_CargoCurrentlyatDestination
against destination"}:::decision N_CargoCurrentlyatDestination_Node0_action["If cargo is at destination, proceed
with export status setting otherwise
skip export processing"]:::main N_CargoCurrentlyatDestination_Node0 -- Yes --> N_CargoCurrentlyatDestination_Node0_action N_CargoCurrentlyatDestination_Node0_action --> E_CargoCurrentlyatDestination S_CargoCurrentlyatDestination --> N_CargoCurrentlyatDestination_Node0 N_CargoCurrentlyatDestination_Node0 -- No --> E_CargoCurrentlyatDestination
File: GCX016.cbl
GIVEN:
Cargo status has been checked and export flag is active
WHEN:
The system evaluates cargo location against destination
THEN:
If cargo is at destination, proceed with export status setting; otherwise skip export processing
β Consolidated Acceptance Criteria
- The system updates cargo export information → the current date is assigned as the cargo export date
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UpdateCargoExportDate(["Start Step"])
E_UpdateCargoExportDate(["End Step"])
N_UpdateCargoExportDate_Node0{"The system updates cargo export
information"}:::decision N_UpdateCargoExportDate_Node0_action["The current date is assigned as the
cargo export date"]:::main N_UpdateCargoExportDate_Node0 -- Yes --> N_UpdateCargoExportDate_Node0_action N_UpdateCargoExportDate_Node0_action --> E_UpdateCargoExportDate S_UpdateCargoExportDate --> N_UpdateCargoExportDate_Node0 N_UpdateCargoExportDate_Node0 -- No --> E_UpdateCargoExportDate
information"}:::decision N_UpdateCargoExportDate_Node0_action["The current date is assigned as the
cargo export date"]:::main N_UpdateCargoExportDate_Node0 -- Yes --> N_UpdateCargoExportDate_Node0_action N_UpdateCargoExportDate_Node0_action --> E_UpdateCargoExportDate S_UpdateCargoExportDate --> N_UpdateCargoExportDate_Node0 N_UpdateCargoExportDate_Node0 -- No --> E_UpdateCargoExportDate
File: GCX016.cbl
GIVEN:
Cargo export status has been set and destination index cleared
WHEN:
The system updates cargo export information
THEN:
The current date is assigned as the cargo export date
β Consolidated Acceptance Criteria
- The system processes location code cleanup → the destination location code is removed from the cargo record
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RemoveDestinationLocationCode(["Start Step"])
E_RemoveDestinationLocationCode(["End Step"])
N_RemoveDestinationLocationCode_Node0{"The system processes location code
cleanup"}:::decision N_RemoveDestinationLocationCode_Node0_action["The destination location code is
removed from the cargo record"]:::main N_RemoveDestinationLocationCode_Node0 -- Yes --> N_RemoveDestinationLocationCode_Node0_action N_RemoveDestinationLocationCode_Node0_action --> E_RemoveDestinationLocationCode S_RemoveDestinationLocationCode --> N_RemoveDestinationLocationCode_Node0 N_RemoveDestinationLocationCode_Node0 -- No --> E_RemoveDestinationLocationCode
cleanup"}:::decision N_RemoveDestinationLocationCode_Node0_action["The destination location code is
removed from the cargo record"]:::main N_RemoveDestinationLocationCode_Node0 -- Yes --> N_RemoveDestinationLocationCode_Node0_action N_RemoveDestinationLocationCode_Node0_action --> E_RemoveDestinationLocationCode S_RemoveDestinationLocationCode --> N_RemoveDestinationLocationCode_Node0 N_RemoveDestinationLocationCode_Node0 -- No --> E_RemoveDestinationLocationCode
File: GCX016.cbl
GIVEN:
Cargo export date has been updated
WHEN:
The system processes location code cleanup
THEN:
The destination location code is removed from the cargo record
β Consolidated Acceptance Criteria
- The system finalizes export processing → the export processing complete flag is set for the cargo record
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetExportProcessingCompleteFlag(["Start Step"])
E_SetExportProcessingCompleteFlag(["End Step"])
N_SetExportProcessingCompleteFlag_Node0{"The system finalizes export
processing"}:::decision N_SetExportProcessingCompleteFlag_Node0_action["The export processing complete flag
is set for the cargo record"]:::main N_SetExportProcessingCompleteFlag_Node0 -- Yes --> N_SetExportProcessingCompleteFlag_Node0_action N_SetExportProcessingCompleteFlag_Node0_action --> E_SetExportProcessingCompleteFlag S_SetExportProcessingCompleteFlag --> N_SetExportProcessingCompleteFlag_Node0 N_SetExportProcessingCompleteFlag_Node0 -- No --> E_SetExportProcessingCompleteFlag
processing"}:::decision N_SetExportProcessingCompleteFlag_Node0_action["The export processing complete flag
is set for the cargo record"]:::main N_SetExportProcessingCompleteFlag_Node0 -- Yes --> N_SetExportProcessingCompleteFlag_Node0_action N_SetExportProcessingCompleteFlag_Node0_action --> E_SetExportProcessingCompleteFlag S_SetExportProcessingCompleteFlag --> N_SetExportProcessingCompleteFlag_Node0 N_SetExportProcessingCompleteFlag_Node0 -- No --> E_SetExportProcessingCompleteFlag
File: GCX016.cbl
GIVEN:
Destination location code has been removed from cargo
WHEN:
The system finalizes export processing
THEN:
The export processing complete flag is set for the cargo record
β Consolidated Acceptance Criteria
- The system validates arrival status exists for cancellation → the system confirms arrival status is present OR returns invalid arrival status error if no arrival status exists
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ValidateArrivalStatusExists(["Start Step"])
E_ValidateArrivalStatusExists(["End Step"])
N_ValidateArrivalStatusExists_Node0{"The system validates arrival status
exists for cancellation"}:::decision N_ValidateArrivalStatusExists_Node0_action["The system confirms arrival status
is present OR returns invalid
arrival status error if no arrival
status exists"]:::main N_ValidateArrivalStatusExists_Node0 -- Yes --> N_ValidateArrivalStatusExists_Node0_action N_ValidateArrivalStatusExists_Node0_action --> E_ValidateArrivalStatusExists S_ValidateArrivalStatusExists --> N_ValidateArrivalStatusExists_Node0 N_ValidateArrivalStatusExists_Node0 -- No --> E_ValidateArrivalStatusExists
exists for cancellation"}:::decision N_ValidateArrivalStatusExists_Node0_action["The system confirms arrival status
is present OR returns invalid
arrival status error if no arrival
status exists"]:::main N_ValidateArrivalStatusExists_Node0 -- Yes --> N_ValidateArrivalStatusExists_Node0_action N_ValidateArrivalStatusExists_Node0_action --> E_ValidateArrivalStatusExists S_ValidateArrivalStatusExists --> N_ValidateArrivalStatusExists_Node0 N_ValidateArrivalStatusExists_Node0 -- No --> E_ValidateArrivalStatusExists
File: GCX016.cbl
GIVEN:
A cargo record with current status information
WHEN:
The system validates arrival status exists for cancellation
THEN:
The system confirms arrival status is present OR returns invalid arrival status error if no arrival status exists
β Consolidated Acceptance Criteria
- The system checks for previous bond date availability → the system returns YES if previous bond start date exists OR returns NO if no previous bond date is available
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_PreviousBondDateAvailable(["Start Step"])
E_PreviousBondDateAvailable(["End Step"])
N_PreviousBondDateAvailable_Node0{"The system checks for previous bond
date availability"}:::decision N_PreviousBondDateAvailable_Node0_action["The system returns YES if previous
bond start date exists OR returns NO
if no previous bond date is
available"]:::main N_PreviousBondDateAvailable_Node0 -- Yes --> N_PreviousBondDateAvailable_Node0_action N_PreviousBondDateAvailable_Node0_action --> E_PreviousBondDateAvailable S_PreviousBondDateAvailable --> N_PreviousBondDateAvailable_Node0 N_PreviousBondDateAvailable_Node0 -- No --> E_PreviousBondDateAvailable
date availability"}:::decision N_PreviousBondDateAvailable_Node0_action["The system returns YES if previous
bond start date exists OR returns NO
if no previous bond date is
available"]:::main N_PreviousBondDateAvailable_Node0 -- Yes --> N_PreviousBondDateAvailable_Node0_action N_PreviousBondDateAvailable_Node0_action --> E_PreviousBondDateAvailable S_PreviousBondDateAvailable --> N_PreviousBondDateAvailable_Node0 N_PreviousBondDateAvailable_Node0 -- No --> E_PreviousBondDateAvailable
File: GCX016.cbl
GIVEN:
A cargo record requiring arrival cancellation with arrival status validated
WHEN:
The system checks for previous bond date availability
THEN:
The system returns YES if previous bond start date exists OR returns NO if no previous bond date is available
β Consolidated Acceptance Criteria
- The system retrieves previous bond start date from bond date history → the system successfully retrieves and loads the previous bond start date for restoration
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RetrievePreviousBondStartDate(["Start Step"])
E_RetrievePreviousBondStartDate(["End Step"])
N_RetrievePreviousBondStartDate_Node0{"The system retrieves previous bond
start date from bond date history"}:::decision N_RetrievePreviousBondStartDate_Node0_action["The system successfully retrieves
and loads the previous bond start
date for restoration"]:::main N_RetrievePreviousBondStartDate_Node0 -- Yes --> N_RetrievePreviousBondStartDate_Node0_action N_RetrievePreviousBondStartDate_Node0_action --> E_RetrievePreviousBondStartDate S_RetrievePreviousBondStartDate --> N_RetrievePreviousBondStartDate_Node0 N_RetrievePreviousBondStartDate_Node0 -- No --> E_RetrievePreviousBondStartDate
start date from bond date history"}:::decision N_RetrievePreviousBondStartDate_Node0_action["The system successfully retrieves
and loads the previous bond start
date for restoration"]:::main N_RetrievePreviousBondStartDate_Node0 -- Yes --> N_RetrievePreviousBondStartDate_Node0_action N_RetrievePreviousBondStartDate_Node0_action --> E_RetrievePreviousBondStartDate S_RetrievePreviousBondStartDate --> N_RetrievePreviousBondStartDate_Node0 N_RetrievePreviousBondStartDate_Node0 -- No --> E_RetrievePreviousBondStartDate
File: GCX016.cbl
GIVEN:
A cargo record with confirmed previous bond date availability
WHEN:
The system retrieves previous bond start date from bond date history
THEN:
- The system successfully retrieves
- Loads the previous bond start date for restoration
β Consolidated Acceptance Criteria
- The system clears current arrival status → the system removes arrival status flags and arrival-related information from the cargo record
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ClearCurrentArrivalStatus(["Start Step"])
E_ClearCurrentArrivalStatus(["End Step"])
N_ClearCurrentArrivalStatus_Node0{"The system clears current arrival
status"}:::decision N_ClearCurrentArrivalStatus_Node0_action["The system removes arrival status
flags and arrival-related
information from the cargo record"]:::main N_ClearCurrentArrivalStatus_Node0 -- Yes --> N_ClearCurrentArrivalStatus_Node0_action N_ClearCurrentArrivalStatus_Node0_action --> E_ClearCurrentArrivalStatus S_ClearCurrentArrivalStatus --> N_ClearCurrentArrivalStatus_Node0 N_ClearCurrentArrivalStatus_Node0 -- No --> E_ClearCurrentArrivalStatus
status"}:::decision N_ClearCurrentArrivalStatus_Node0_action["The system removes arrival status
flags and arrival-related
information from the cargo record"]:::main N_ClearCurrentArrivalStatus_Node0 -- Yes --> N_ClearCurrentArrivalStatus_Node0_action N_ClearCurrentArrivalStatus_Node0_action --> E_ClearCurrentArrivalStatus S_ClearCurrentArrivalStatus --> N_ClearCurrentArrivalStatus_Node0 N_ClearCurrentArrivalStatus_Node0 -- No --> E_ClearCurrentArrivalStatus
File: GCX016.cbl
GIVEN:
A cargo record with validated arrival status and retrieved previous bond date
WHEN:
The system clears current arrival status
THEN:
- The system removes arrival status flags
- Arrival-related information from the cargo record
β Consolidated Acceptance Criteria
- If if destination index should be cleared → the system clears destination index if cargo status requires it OR leaves destination index unchanged if not required
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ClearDestinationIndexifRequired(["Start Step"])
E_ClearDestinationIndexifRequired(["End Step"])
N_ClearDestinationIndexifRequired_Node0{"The system evaluates if destination
index should be cleared"}:::decision N_ClearDestinationIndexifRequired_Node0_action["The system clears destination index
if cargo status requires it OR
leaves destination index unchanged
if not required"]:::main N_ClearDestinationIndexifRequired_Node0 -- Yes --> N_ClearDestinationIndexifRequired_Node0_action N_ClearDestinationIndexifRequired_Node0_action --> E_ClearDestinationIndexifRequired S_ClearDestinationIndexifRequired --> N_ClearDestinationIndexifRequired_Node0 N_ClearDestinationIndexifRequired_Node0 -- No --> E_ClearDestinationIndexifRequired
index should be cleared"}:::decision N_ClearDestinationIndexifRequired_Node0_action["The system clears destination index
if cargo status requires it OR
leaves destination index unchanged
if not required"]:::main N_ClearDestinationIndexifRequired_Node0 -- Yes --> N_ClearDestinationIndexifRequired_Node0_action N_ClearDestinationIndexifRequired_Node0_action --> E_ClearDestinationIndexifRequired S_ClearDestinationIndexifRequired --> N_ClearDestinationIndexifRequired_Node0 N_ClearDestinationIndexifRequired_Node0 -- No --> E_ClearDestinationIndexifRequired
File: GCX016.cbl
GIVEN:
A cargo record with updated status after arrival cancellation
WHEN:
The system evaluates if destination index should be cleared
THEN:
The system clears destination index if cargo status requires it OR leaves destination index unchanged if not required
β Consolidated Acceptance Criteria
- The system generates arrival cancellation message → the system creates a formatted arrival cancellation message with cargo details and cancellation information
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GenerateArrivalCancellationMessage(["Start Step"])
E_GenerateArrivalCancellationMessage(["End Step"])
N_GenerateArrivalCancellationMessage_Node0{"The system generates arrival
cancellation message"}:::decision N_GenerateArrivalCancellationMessage_Node0_action["The system creates a formatted
arrival cancellation message with
cargo details and cancellation
information"]:::main N_GenerateArrivalCancellationMessage_Node0 -- Yes --> N_GenerateArrivalCancellationMessage_Node0_action N_GenerateArrivalCancellationMessage_Node0_action --> E_GenerateArrivalCancellationMessage S_GenerateArrivalCancellationMessage --> N_GenerateArrivalCancellationMessage_Node0 N_GenerateArrivalCancellationMessage_Node0 -- No --> E_GenerateArrivalCancellationMessage
cancellation message"}:::decision N_GenerateArrivalCancellationMessage_Node0_action["The system creates a formatted
arrival cancellation message with
cargo details and cancellation
information"]:::main N_GenerateArrivalCancellationMessage_Node0 -- Yes --> N_GenerateArrivalCancellationMessage_Node0_action N_GenerateArrivalCancellationMessage_Node0_action --> E_GenerateArrivalCancellationMessage S_GenerateArrivalCancellationMessage --> N_GenerateArrivalCancellationMessage_Node0 N_GenerateArrivalCancellationMessage_Node0 -- No --> E_GenerateArrivalCancellationMessage
File: GCX016.cbl
GIVEN:
A cargo record with processed arrival cancellation and updated status
WHEN:
The system generates arrival cancellation message
THEN:
- The system creates a formatted arrival cancellation message with cargo details
- Cancellation information
β Consolidated Acceptance Criteria
- The system updates status array with cancellation code → the system adds the arrival cancellation disposition code to the cargo status array
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UpdateStatusArraywithCancellationCode(["Start Step"])
E_UpdateStatusArraywithCancellationCode(["End Step"])
N_UpdateStatusArraywithCancellationCode_Node0{"The system updates status array
with cancellation code"}:::decision N_UpdateStatusArraywithCancellationCode_Node0_action["The system adds the arrival
cancellation disposition code to the
cargo status array"]:::main N_UpdateStatusArraywithCancellationCode_Node0 -- Yes --> N_UpdateStatusArraywithCancellationCode_Node0_action N_UpdateStatusArraywithCancellationCode_Node0_action --> E_UpdateStatusArraywithCancellationCode S_UpdateStatusArraywithCancellationCode --> N_UpdateStatusArraywithCancellationCode_Node0 N_UpdateStatusArraywithCancellationCode_Node0 -- No --> E_UpdateStatusArraywithCancellationCode
with cancellation code"}:::decision N_UpdateStatusArraywithCancellationCode_Node0_action["The system adds the arrival
cancellation disposition code to the
cargo status array"]:::main N_UpdateStatusArraywithCancellationCode_Node0 -- Yes --> N_UpdateStatusArraywithCancellationCode_Node0_action N_UpdateStatusArraywithCancellationCode_Node0_action --> E_UpdateStatusArraywithCancellationCode S_UpdateStatusArraywithCancellationCode --> N_UpdateStatusArraywithCancellationCode_Node0 N_UpdateStatusArraywithCancellationCode_Node0 -- No --> E_UpdateStatusArraywithCancellationCode
File: GCX016.cbl
GIVEN:
A cargo record with generated arrival cancellation message
WHEN:
The system updates status array with cancellation code
THEN:
The system adds the arrival cancellation disposition code to the cargo status array
β Consolidated Acceptance Criteria
- The system sends notification to customs → the system transmits arrival cancellation notification to appropriate customs systems and authorities
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SendNotificationtoCustoms(["Start Step"])
E_SendNotificationtoCustoms(["End Step"])
N_SendNotificationtoCustoms_Node0{"The system sends notification to
customs"}:::decision N_SendNotificationtoCustoms_Node0_action["The system transmits arrival
cancellation notification to
appropriate customs systems and
authorities"]:::main N_SendNotificationtoCustoms_Node0 -- Yes --> N_SendNotificationtoCustoms_Node0_action N_SendNotificationtoCustoms_Node0_action --> E_SendNotificationtoCustoms S_SendNotificationtoCustoms --> N_SendNotificationtoCustoms_Node0 N_SendNotificationtoCustoms_Node0 -- No --> E_SendNotificationtoCustoms
customs"}:::decision N_SendNotificationtoCustoms_Node0_action["The system transmits arrival
cancellation notification to
appropriate customs systems and
authorities"]:::main N_SendNotificationtoCustoms_Node0 -- Yes --> N_SendNotificationtoCustoms_Node0_action N_SendNotificationtoCustoms_Node0_action --> E_SendNotificationtoCustoms S_SendNotificationtoCustoms --> N_SendNotificationtoCustoms_Node0 N_SendNotificationtoCustoms_Node0 -- No --> E_SendNotificationtoCustoms
File: GCX016.cbl
GIVEN:
A cargo record with logged cancellation transaction
WHEN:
The system sends notification to customs
THEN:
- The system transmits arrival cancellation notification to appropriate customs systems
- Authorities
β Consolidated Acceptance Criteria
- No previous bond date is available for restoration → the system generates error condition indicating no previous bond date available and completes cancellation process without bond date restoration
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ErrorNoPreviousBondDate(["Start Step"])
E_ErrorNoPreviousBondDate(["End Step"])
N_ErrorNoPreviousBondDate_Node0{"No previous bond date is available
for restoration"}:::decision N_ErrorNoPreviousBondDate_Node0_action["The system generates error
condition indicating no previous
bond date available and completes
cancellation process without bond
date restoration"]:::main N_ErrorNoPreviousBondDate_Node0 -- Yes --> N_ErrorNoPreviousBondDate_Node0_action N_ErrorNoPreviousBondDate_Node0_action --> E_ErrorNoPreviousBondDate S_ErrorNoPreviousBondDate --> N_ErrorNoPreviousBondDate_Node0 N_ErrorNoPreviousBondDate_Node0 -- No --> E_ErrorNoPreviousBondDate
for restoration"}:::decision N_ErrorNoPreviousBondDate_Node0_action["The system generates error
condition indicating no previous
bond date available and completes
cancellation process without bond
date restoration"]:::main N_ErrorNoPreviousBondDate_Node0 -- Yes --> N_ErrorNoPreviousBondDate_Node0_action N_ErrorNoPreviousBondDate_Node0_action --> E_ErrorNoPreviousBondDate S_ErrorNoPreviousBondDate --> N_ErrorNoPreviousBondDate_Node0 N_ErrorNoPreviousBondDate_Node0 -- No --> E_ErrorNoPreviousBondDate
File: GCX016.cbl
GIVEN:
A cargo record requiring arrival cancellation
WHEN:
No previous bond date is available for restoration
THEN:
- The system generates error condition indicating no previous bond date available
- Completes cancellation process without bond date restoration
β Consolidated Acceptance Criteria
- The cargo does not have valid arrival status for cancellation → the system generates error condition indicating invalid arrival status and completes cancellation process without status changes
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ErrorInvalidArrivalStatus(["Start Step"])
E_ErrorInvalidArrivalStatus(["End Step"])
N_ErrorInvalidArrivalStatus_Node0{"The cargo does not have valid
arrival status for cancellation"}:::decision N_ErrorInvalidArrivalStatus_Node0_action["The system generates error
condition indicating invalid arrival
status and completes cancellation
process without status changes"]:::main N_ErrorInvalidArrivalStatus_Node0 -- Yes --> N_ErrorInvalidArrivalStatus_Node0_action N_ErrorInvalidArrivalStatus_Node0_action --> E_ErrorInvalidArrivalStatus S_ErrorInvalidArrivalStatus --> N_ErrorInvalidArrivalStatus_Node0 N_ErrorInvalidArrivalStatus_Node0 -- No --> E_ErrorInvalidArrivalStatus
arrival status for cancellation"}:::decision N_ErrorInvalidArrivalStatus_Node0_action["The system generates error
condition indicating invalid arrival
status and completes cancellation
process without status changes"]:::main N_ErrorInvalidArrivalStatus_Node0 -- Yes --> N_ErrorInvalidArrivalStatus_Node0_action N_ErrorInvalidArrivalStatus_Node0_action --> E_ErrorInvalidArrivalStatus S_ErrorInvalidArrivalStatus --> N_ErrorInvalidArrivalStatus_Node0 N_ErrorInvalidArrivalStatus_Node0 -- No --> E_ErrorInvalidArrivalStatus
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
A cargo record with arrival cancellation request
WHEN:
The cargo does not have valid arrival status for cancellation
THEN:
- The system generates error condition indicating invalid arrival status
- Completes cancellation process without status changes
β Consolidated Acceptance Criteria
- The system checks the current cargo status for export indicators → the system validates that export status exists and is valid for cancellation processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ValidateExportStatusExists(["Start Step"])
E_ValidateExportStatusExists(["End Step"])
N_ValidateExportStatusExists_Node0{"The system checks the current cargo
status for export indicators"}:::decision N_ValidateExportStatusExists_Node0_action["The system validates that export
status exists and is valid for
cancellation processing"]:::main N_ValidateExportStatusExists_Node0 -- Yes --> N_ValidateExportStatusExists_Node0_action N_ValidateExportStatusExists_Node0_action --> E_ValidateExportStatusExists S_ValidateExportStatusExists --> N_ValidateExportStatusExists_Node0 N_ValidateExportStatusExists_Node0 -- No --> E_ValidateExportStatusExists
status for export indicators"}:::decision N_ValidateExportStatusExists_Node0_action["The system validates that export
status exists and is valid for
cancellation processing"]:::main N_ValidateExportStatusExists_Node0 -- Yes --> N_ValidateExportStatusExists_Node0_action N_ValidateExportStatusExists_Node0_action --> E_ValidateExportStatusExists S_ValidateExportStatusExists --> N_ValidateExportStatusExists_Node0 N_ValidateExportStatusExists_Node0 -- No --> E_ValidateExportStatusExists
File: GCX016.cbl
GIVEN:
An export cancellation request is received for cargo
WHEN:
The system checks the current cargo status for export indicators
THEN:
- The system validates that export status exists
- Is valid for cancellation processing
β Consolidated Acceptance Criteria
- Export cancellation processing begins → the system clears the export status flag from the cargo record
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ClearExportStatusFlag(["Start Step"])
E_ClearExportStatusFlag(["End Step"])
N_ClearExportStatusFlag_Node0{"Export cancellation processing
begins"}:::decision N_ClearExportStatusFlag_Node0_action["The system clears the export status
flag from the cargo record"]:::main N_ClearExportStatusFlag_Node0 -- Yes --> N_ClearExportStatusFlag_Node0_action N_ClearExportStatusFlag_Node0_action --> E_ClearExportStatusFlag S_ClearExportStatusFlag --> N_ClearExportStatusFlag_Node0 N_ClearExportStatusFlag_Node0 -- No --> E_ClearExportStatusFlag
begins"}:::decision N_ClearExportStatusFlag_Node0_action["The system clears the export status
flag from the cargo record"]:::main N_ClearExportStatusFlag_Node0 -- Yes --> N_ClearExportStatusFlag_Node0_action N_ClearExportStatusFlag_Node0_action --> E_ClearExportStatusFlag S_ClearExportStatusFlag --> N_ClearExportStatusFlag_Node0 N_ClearExportStatusFlag_Node0 -- No --> E_ClearExportStatusFlag
File: GCX016.cbl
GIVEN:
Cargo has a valid export status that needs to be cancelled
WHEN:
Export cancellation processing begins
THEN:
The system clears the export status flag from the cargo record
β Consolidated Acceptance Criteria
- The system calculates cargo age from the bond start date to current date → a valid age calculation is produced for destination index determination
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CalculateCargoAgefromBondStartDate(["Start Step"])
E_CalculateCargoAgefromBondStartDate(["End Step"])
N_CalculateCargoAgefromBondStartDate_Node0{"The system calculates cargo age
from the bond start date to current
date"}:::decision N_CalculateCargoAgefromBondStartDate_Node0_action["A valid age calculation is produced
for destination index determination"]:::main N_CalculateCargoAgefromBondStartDate_Node0 -- Yes --> N_CalculateCargoAgefromBondStartDate_Node0_action N_CalculateCargoAgefromBondStartDate_Node0_action --> E_CalculateCargoAgefromBondStartDate S_CalculateCargoAgefromBondStartDate --> N_CalculateCargoAgefromBondStartDate_Node0 N_CalculateCargoAgefromBondStartDate_Node0 -- No --> E_CalculateCargoAgefromBondStartDate
from the bond start date to current
date"}:::decision N_CalculateCargoAgefromBondStartDate_Node0_action["A valid age calculation is produced
for destination index determination"]:::main N_CalculateCargoAgefromBondStartDate_Node0 -- Yes --> N_CalculateCargoAgefromBondStartDate_Node0_action N_CalculateCargoAgefromBondStartDate_Node0_action --> E_CalculateCargoAgefromBondStartDate S_CalculateCargoAgefromBondStartDate --> N_CalculateCargoAgefromBondStartDate_Node0 N_CalculateCargoAgefromBondStartDate_Node0 -- No --> E_CalculateCargoAgefromBondStartDate
File: GCX016.cbl
GIVEN:
Bond date has been restored for cargo
WHEN:
The system calculates cargo age from the bond start date to current date
THEN:
A valid age calculation is produced for destination index determination
β Consolidated Acceptance Criteria
- The system validates the age calculation result → the age calculation is confirmed as valid and within business rules or flagged as invalid
- The calculated age value is evaluated → if age is valid and within business parameters, use calculated value, otherwise log error and use default
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AgeCalculationValid(["Start Step"])
E_AgeCalculationValid(["End Step"])
N_AgeCalculationValid_Node0{"The system validates the age
calculation result"}:::decision N_AgeCalculationValid_Node0_action["The age calculation is confirmed as
valid and within business rules or
flagged as invalid"]:::main N_AgeCalculationValid_Node0 -- Yes --> N_AgeCalculationValid_Node0_action N_AgeCalculationValid_Node0_action --> E_AgeCalculationValid S_AgeCalculationValid --> N_AgeCalculationValid_Node0 N_AgeCalculationValid_Node1{"The calculated age value is
evaluated"}:::decision N_AgeCalculationValid_Node1_action["If age is valid and within business
parameters, use calculated value,
otherwise log error and use default"]:::main N_AgeCalculationValid_Node1 -- Yes --> N_AgeCalculationValid_Node1_action N_AgeCalculationValid_Node1_action --> E_AgeCalculationValid N_AgeCalculationValid_Node0 -- No --> N_AgeCalculationValid_Node1 N_AgeCalculationValid_Node1 -- No --> E_AgeCalculationValid
calculation result"}:::decision N_AgeCalculationValid_Node0_action["The age calculation is confirmed as
valid and within business rules or
flagged as invalid"]:::main N_AgeCalculationValid_Node0 -- Yes --> N_AgeCalculationValid_Node0_action N_AgeCalculationValid_Node0_action --> E_AgeCalculationValid S_AgeCalculationValid --> N_AgeCalculationValid_Node0 N_AgeCalculationValid_Node1{"The calculated age value is
evaluated"}:::decision N_AgeCalculationValid_Node1_action["If age is valid and within business
parameters, use calculated value,
otherwise log error and use default"]:::main N_AgeCalculationValid_Node1 -- Yes --> N_AgeCalculationValid_Node1_action N_AgeCalculationValid_Node1_action --> E_AgeCalculationValid N_AgeCalculationValid_Node0 -- No --> N_AgeCalculationValid_Node1 N_AgeCalculationValid_Node1 -- No --> E_AgeCalculationValid
File: GCX016.cbl
GIVEN:
Cargo age has been calculated from bond start date
WHEN:
The system validates the age calculation result
THEN:
- The age calculation is confirmed as valid
- Within business rules or flagged as invalid
File: GCX016.cbl
GIVEN:
An age calculation has been performed
WHEN:
The calculated age value is evaluated
THEN:
- If age is valid
- Within business parameters, use calculated value, otherwise log error
- Use default
β Consolidated Acceptance Criteria
- The system processes destination index re-establishment → the RT076 destination index is re-established with the calculated age information
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ReestablishDestinationIndexRT076(["Start Step"])
E_ReestablishDestinationIndexRT076(["End Step"])
N_ReestablishDestinationIndexRT076_Node0{"The system processes destination
index re-establishment"}:::decision N_ReestablishDestinationIndexRT076_Node0_action["The RT076 destination index is
re-established with the calculated
age information"]:::main N_ReestablishDestinationIndexRT076_Node0 -- Yes --> N_ReestablishDestinationIndexRT076_Node0_action N_ReestablishDestinationIndexRT076_Node0_action --> E_ReestablishDestinationIndexRT076 S_ReestablishDestinationIndexRT076 --> N_ReestablishDestinationIndexRT076_Node0 N_ReestablishDestinationIndexRT076_Node0 -- No --> E_ReestablishDestinationIndexRT076
index re-establishment"}:::decision N_ReestablishDestinationIndexRT076_Node0_action["The RT076 destination index is
re-established with the calculated
age information"]:::main N_ReestablishDestinationIndexRT076_Node0 -- Yes --> N_ReestablishDestinationIndexRT076_Node0_action N_ReestablishDestinationIndexRT076_Node0_action --> E_ReestablishDestinationIndexRT076 S_ReestablishDestinationIndexRT076 --> N_ReestablishDestinationIndexRT076_Node0 N_ReestablishDestinationIndexRT076_Node0 -- No --> E_ReestablishDestinationIndexRT076
File: GCX016.cbl
GIVEN:
Cargo age calculation is valid
WHEN:
The system processes destination index re-establishment
THEN:
The RT076 destination index is re-established with the calculated age information
β Consolidated Acceptance Criteria
- The system sets the destination index with calculated age → the destination index is updated with the age-based information for proper cargo tracking
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetDestinationIndexwithAge(["Start Step"])
E_SetDestinationIndexwithAge(["End Step"])
N_SetDestinationIndexwithAge_Node0{"The system sets the destination
index with calculated age"}:::decision N_SetDestinationIndexwithAge_Node0_action["The destination index is updated
with the age-based information for
proper cargo tracking"]:::main N_SetDestinationIndexwithAge_Node0 -- Yes --> N_SetDestinationIndexwithAge_Node0_action N_SetDestinationIndexwithAge_Node0_action --> E_SetDestinationIndexwithAge S_SetDestinationIndexwithAge --> N_SetDestinationIndexwithAge_Node0 N_SetDestinationIndexwithAge_Node0 -- No --> E_SetDestinationIndexwithAge
index with calculated age"}:::decision N_SetDestinationIndexwithAge_Node0_action["The destination index is updated
with the age-based information for
proper cargo tracking"]:::main N_SetDestinationIndexwithAge_Node0 -- Yes --> N_SetDestinationIndexwithAge_Node0_action N_SetDestinationIndexwithAge_Node0_action --> E_SetDestinationIndexwithAge S_SetDestinationIndexwithAge --> N_SetDestinationIndexwithAge_Node0 N_SetDestinationIndexwithAge_Node0 -- No --> E_SetDestinationIndexwithAge
File: GCX016.cbl
GIVEN:
Destination index RT076 is being re-established
WHEN:
The system sets the destination index with calculated age
THEN:
The destination index is updated with the age-based information for proper cargo tracking
β Consolidated Acceptance Criteria
- The system generates export cancellation message → a notification message is created documenting the export cancellation and status change
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GenerateExportCancellationMessage(["Start Step"])
E_GenerateExportCancellationMessage(["End Step"])
N_GenerateExportCancellationMessage_Node0{"The system generates export
cancellation message"}:::decision N_GenerateExportCancellationMessage_Node0_action["A notification message is created
documenting the export cancellation
and status change"]:::main N_GenerateExportCancellationMessage_Node0 -- Yes --> N_GenerateExportCancellationMessage_Node0_action N_GenerateExportCancellationMessage_Node0_action --> E_GenerateExportCancellationMessage S_GenerateExportCancellationMessage --> N_GenerateExportCancellationMessage_Node0 N_GenerateExportCancellationMessage_Node0 -- No --> E_GenerateExportCancellationMessage
cancellation message"}:::decision N_GenerateExportCancellationMessage_Node0_action["A notification message is created
documenting the export cancellation
and status change"]:::main N_GenerateExportCancellationMessage_Node0 -- Yes --> N_GenerateExportCancellationMessage_Node0_action N_GenerateExportCancellationMessage_Node0_action --> E_GenerateExportCancellationMessage S_GenerateExportCancellationMessage --> N_GenerateExportCancellationMessage_Node0 N_GenerateExportCancellationMessage_Node0 -- No --> E_GenerateExportCancellationMessage
File: GCX016.cbl
GIVEN:
Cargo record status has been updated for export cancellation
WHEN:
The system generates export cancellation message
THEN:
- A notification message is created documenting the export cancellation
- Status change
β Consolidated Acceptance Criteria
- The system logs the status change → an audit trail entry is created documenting the export cancellation, previous status, and new status
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogStatusChangeforAudit(["Start Step"])
E_LogStatusChangeforAudit(["End Step"])
N_LogStatusChangeforAudit_Node0{"The system logs the status change"}:::decision
N_LogStatusChangeforAudit_Node0_action["An audit trail entry is created
documenting the export cancellation,
previous status, and new status"]:::main N_LogStatusChangeforAudit_Node0 -- Yes --> N_LogStatusChangeforAudit_Node0_action N_LogStatusChangeforAudit_Node0_action --> E_LogStatusChangeforAudit S_LogStatusChangeforAudit --> N_LogStatusChangeforAudit_Node0 N_LogStatusChangeforAudit_Node0 -- No --> E_LogStatusChangeforAudit
documenting the export cancellation,
previous status, and new status"]:::main N_LogStatusChangeforAudit_Node0 -- Yes --> N_LogStatusChangeforAudit_Node0_action N_LogStatusChangeforAudit_Node0_action --> E_LogStatusChangeforAudit S_LogStatusChangeforAudit --> N_LogStatusChangeforAudit_Node0 N_LogStatusChangeforAudit_Node0 -- No --> E_LogStatusChangeforAudit
File: GCX016.cbl
GIVEN:
Export cancellation message has been generated
WHEN:
The system logs the status change
THEN:
An audit trail entry is created documenting the export cancellation, previous status, and new status
β Consolidated Acceptance Criteria
- The cargo does not have a valid export status for cancellation → the system generates an error indicating invalid export status and terminates cancellation processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ErrorInvalidExportStatus(["Start Step"])
E_ErrorInvalidExportStatus(["End Step"])
N_ErrorInvalidExportStatus_Node0{"The cargo does not have a valid
export status for cancellation"}:::decision N_ErrorInvalidExportStatus_Node0_action["The system generates an error
indicating invalid export status and
terminates cancellation processing"]:::main N_ErrorInvalidExportStatus_Node0 -- Yes --> N_ErrorInvalidExportStatus_Node0_action N_ErrorInvalidExportStatus_Node0_action --> E_ErrorInvalidExportStatus S_ErrorInvalidExportStatus --> N_ErrorInvalidExportStatus_Node0 N_ErrorInvalidExportStatus_Node0 -- No --> E_ErrorInvalidExportStatus
export status for cancellation"}:::decision N_ErrorInvalidExportStatus_Node0_action["The system generates an error
indicating invalid export status and
terminates cancellation processing"]:::main N_ErrorInvalidExportStatus_Node0 -- Yes --> N_ErrorInvalidExportStatus_Node0_action N_ErrorInvalidExportStatus_Node0_action --> E_ErrorInvalidExportStatus S_ErrorInvalidExportStatus --> N_ErrorInvalidExportStatus_Node0 N_ErrorInvalidExportStatus_Node0 -- No --> E_ErrorInvalidExportStatus
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
An export cancellation request is received
WHEN:
The cargo does not have a valid export status for cancellation
THEN:
- The system generates an error indicating invalid export status
- Terminates cancellation processing
β Consolidated Acceptance Criteria
- The cargo age calculation from bond start date fails or produces invalid results → the system generates an error indicating age calculation failure and terminates destination index processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ErrorAgeCalculationFailed(["Start Step"])
E_ErrorAgeCalculationFailed(["End Step"])
N_ErrorAgeCalculationFailed_Node0{"The cargo age calculation from bond
start date fails or produces invalid
results"}:::decision N_ErrorAgeCalculationFailed_Node0_action["The system generates an error
indicating age calculation failure
and terminates destination index
processing"]:::exclusion N_ErrorAgeCalculationFailed_Node0 -- Yes -->|Alternative| N_ErrorAgeCalculationFailed_Node0_action N_ErrorAgeCalculationFailed_Node0_action --> E_ErrorAgeCalculationFailed S_ErrorAgeCalculationFailed --> N_ErrorAgeCalculationFailed_Node0 N_ErrorAgeCalculationFailed_Node0 -- No --> E_ErrorAgeCalculationFailed
start date fails or produces invalid
results"}:::decision N_ErrorAgeCalculationFailed_Node0_action["The system generates an error
indicating age calculation failure
and terminates destination index
processing"]:::exclusion N_ErrorAgeCalculationFailed_Node0 -- Yes -->|Alternative| N_ErrorAgeCalculationFailed_Node0_action N_ErrorAgeCalculationFailed_Node0_action --> E_ErrorAgeCalculationFailed S_ErrorAgeCalculationFailed --> N_ErrorAgeCalculationFailed_Node0 N_ErrorAgeCalculationFailed_Node0 -- No --> E_ErrorAgeCalculationFailed
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
Bond date has been restored for export cancellation
WHEN:
The cargo age calculation from bond start date fails or produces invalid results
THEN:
- The system generates an error indicating age calculation failure
- Terminates destination index processing
β Consolidated Acceptance Criteria
- The system searches through the array to find matching elements → the system identifies whether the target element exists in the array and marks its position for removal
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ElementFoundinArray(["Start Step"])
E_ElementFoundinArray(["End Step"])
N_ElementFoundinArray_Node0{"The system searches through the
array to find matching elements"}:::decision N_ElementFoundinArray_Node0_action["The system identifies whether the
target element exists in the array
and marks its position for removal"]:::main N_ElementFoundinArray_Node0 -- Yes --> N_ElementFoundinArray_Node0_action N_ElementFoundinArray_Node0_action --> E_ElementFoundinArray S_ElementFoundinArray --> N_ElementFoundinArray_Node0 N_ElementFoundinArray_Node0 -- No --> E_ElementFoundinArray
array to find matching elements"}:::decision N_ElementFoundinArray_Node0_action["The system identifies whether the
target element exists in the array
and marks its position for removal"]:::main N_ElementFoundinArray_Node0 -- Yes --> N_ElementFoundinArray_Node0_action N_ElementFoundinArray_Node0_action --> E_ElementFoundinArray S_ElementFoundinArray --> N_ElementFoundinArray_Node0 N_ElementFoundinArray_Node0 -- No --> E_ElementFoundinArray
File: GCX016.cbl
GIVEN:
A status array contains multiple elements and a specific element needs to be removed
WHEN:
The system searches through the array to find matching elements
THEN:
- The system identifies whether the target element exists in the array
- Marks its position for removal
β Consolidated Acceptance Criteria
- The system needs to track the element's location → the system records the array index position of the found element
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IdentifyElementPosition(["Start Step"])
E_IdentifyElementPosition(["End Step"])
N_IdentifyElementPosition_Node0{"The system needs to track the
element s location"}:::decision N_IdentifyElementPosition_Node0_action["The system records the array index
position of the found element"]:::main N_IdentifyElementPosition_Node0 -- Yes --> N_IdentifyElementPosition_Node0_action N_IdentifyElementPosition_Node0_action --> E_IdentifyElementPosition S_IdentifyElementPosition --> N_IdentifyElementPosition_Node0 N_IdentifyElementPosition_Node0 -- No --> E_IdentifyElementPosition
element s location"}:::decision N_IdentifyElementPosition_Node0_action["The system records the array index
position of the found element"]:::main N_IdentifyElementPosition_Node0 -- Yes --> N_IdentifyElementPosition_Node0_action N_IdentifyElementPosition_Node0_action --> E_IdentifyElementPosition S_IdentifyElementPosition --> N_IdentifyElementPosition_Node0 N_IdentifyElementPosition_Node0 -- No --> E_IdentifyElementPosition
File: GCX016.cbl
GIVEN:
An element has been found in the status array
WHEN:
The system needs to track the element's location
THEN:
The system records the array index position of the found element
β Consolidated Acceptance Criteria
- The element needs to be removed from the array → the system marks the element for removal while preserving array structure temporarily
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MarkElementforRemoval(["Start Step"])
E_MarkElementforRemoval(["End Step"])
N_MarkElementforRemoval_Node0{"The element needs to be removed
from the array"}:::decision N_MarkElementforRemoval_Node0_action["The system marks the element for
removal while preserving array
structure temporarily"]:::main N_MarkElementforRemoval_Node0 -- Yes --> N_MarkElementforRemoval_Node0_action N_MarkElementforRemoval_Node0_action --> E_MarkElementforRemoval S_MarkElementforRemoval --> N_MarkElementforRemoval_Node0 N_MarkElementforRemoval_Node0 -- No --> E_MarkElementforRemoval
from the array"}:::decision N_MarkElementforRemoval_Node0_action["The system marks the element for
removal while preserving array
structure temporarily"]:::main N_MarkElementforRemoval_Node0 -- Yes --> N_MarkElementforRemoval_Node0_action N_MarkElementforRemoval_Node0_action --> E_MarkElementforRemoval S_MarkElementforRemoval --> N_MarkElementforRemoval_Node0 N_MarkElementforRemoval_Node0 -- No --> E_MarkElementforRemoval
File: GCX016.cbl
GIVEN:
An element position has been identified in the status array
WHEN:
The element needs to be removed from the array
THEN:
The system marks the element for removal while preserving array structure temporarily
β Consolidated Acceptance Criteria
- Array compaction is required → the system shifts all remaining elements upward to eliminate gaps and maintain array continuity
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ShiftRemainingElementsUp(["Start Step"])
E_ShiftRemainingElementsUp(["End Step"])
N_ShiftRemainingElementsUp_Node0{"Array compaction is required"}:::decision
N_ShiftRemainingElementsUp_Node0_action["The system shifts all remaining
elements upward to eliminate gaps
and maintain array continuity"]:::main N_ShiftRemainingElementsUp_Node0 -- Yes --> N_ShiftRemainingElementsUp_Node0_action N_ShiftRemainingElementsUp_Node0_action --> E_ShiftRemainingElementsUp S_ShiftRemainingElementsUp --> N_ShiftRemainingElementsUp_Node0 N_ShiftRemainingElementsUp_Node0 -- No --> E_ShiftRemainingElementsUp
elements upward to eliminate gaps
and maintain array continuity"]:::main N_ShiftRemainingElementsUp_Node0 -- Yes --> N_ShiftRemainingElementsUp_Node0_action N_ShiftRemainingElementsUp_Node0_action --> E_ShiftRemainingElementsUp S_ShiftRemainingElementsUp --> N_ShiftRemainingElementsUp_Node0 N_ShiftRemainingElementsUp_Node0 -- No --> E_ShiftRemainingElementsUp
File: GCX016.cbl
GIVEN:
Elements have been marked for removal from the status array
WHEN:
Array compaction is required
THEN:
- The system shifts all remaining elements upward to eliminate gaps
- Maintain array continuity
β Consolidated Acceptance Criteria
- Array counter needs to be updated → the system decrements the array counter by the number of elements removed
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_DecrementArrayCounter(["Start Step"])
E_DecrementArrayCounter(["End Step"])
N_DecrementArrayCounter_Node0{"Array counter needs to be updated"}:::decision
N_DecrementArrayCounter_Node0_action["The system decrements the array
counter by the number of elements
removed"]:::main N_DecrementArrayCounter_Node0 -- Yes --> N_DecrementArrayCounter_Node0_action N_DecrementArrayCounter_Node0_action --> E_DecrementArrayCounter S_DecrementArrayCounter --> N_DecrementArrayCounter_Node0 N_DecrementArrayCounter_Node0 -- No --> E_DecrementArrayCounter
counter by the number of elements
removed"]:::main N_DecrementArrayCounter_Node0 -- Yes --> N_DecrementArrayCounter_Node0_action N_DecrementArrayCounter_Node0_action --> E_DecrementArrayCounter S_DecrementArrayCounter --> N_DecrementArrayCounter_Node0 N_DecrementArrayCounter_Node0 -- No --> E_DecrementArrayCounter
File: GCX016.cbl
GIVEN:
Elements have been removed from the status array
WHEN:
Array counter needs to be updated
THEN:
The system decrements the array counter by the number of elements removed
β Consolidated Acceptance Criteria
- Empty positions exist at the end of the array → the system clears all unused array positions to initialize them to empty state
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ClearEmptyArrayPositions(["Start Step"])
E_ClearEmptyArrayPositions(["End Step"])
N_ClearEmptyArrayPositions_Node0{"Empty positions exist at the end of
the array"}:::decision N_ClearEmptyArrayPositions_Node0_action["The system clears all unused array
positions to initialize them to
empty state"]:::main N_ClearEmptyArrayPositions_Node0 -- Yes --> N_ClearEmptyArrayPositions_Node0_action N_ClearEmptyArrayPositions_Node0_action --> E_ClearEmptyArrayPositions S_ClearEmptyArrayPositions --> N_ClearEmptyArrayPositions_Node0 N_ClearEmptyArrayPositions_Node0 -- No --> E_ClearEmptyArrayPositions
the array"}:::decision N_ClearEmptyArrayPositions_Node0_action["The system clears all unused array
positions to initialize them to
empty state"]:::main N_ClearEmptyArrayPositions_Node0 -- Yes --> N_ClearEmptyArrayPositions_Node0_action N_ClearEmptyArrayPositions_Node0_action --> E_ClearEmptyArrayPositions S_ClearEmptyArrayPositions --> N_ClearEmptyArrayPositions_Node0 N_ClearEmptyArrayPositions_Node0 -- No --> E_ClearEmptyArrayPositions
File: GCX016.cbl
GIVEN:
Array elements have been shifted and counter updated
WHEN:
Empty positions exist at the end of the array
THEN:
The system clears all unused array positions to initialize them to empty state
β Consolidated Acceptance Criteria
- The system needs to verify completion → the system checks if all elements have been properly shifted and all empty positions cleared
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ArrayCompactionComplete(["Start Step"])
E_ArrayCompactionComplete(["End Step"])
N_ArrayCompactionComplete_Node0{"The system needs to verify
completion"}:::decision N_ArrayCompactionComplete_Node0_action["The system checks if all elements
have been properly shifted and all
empty positions cleared"]:::main N_ArrayCompactionComplete_Node0 -- Yes --> N_ArrayCompactionComplete_Node0_action N_ArrayCompactionComplete_Node0_action --> E_ArrayCompactionComplete S_ArrayCompactionComplete --> N_ArrayCompactionComplete_Node0 N_ArrayCompactionComplete_Node0 -- No --> E_ArrayCompactionComplete
completion"}:::decision N_ArrayCompactionComplete_Node0_action["The system checks if all elements
have been properly shifted and all
empty positions cleared"]:::main N_ArrayCompactionComplete_Node0 -- Yes --> N_ArrayCompactionComplete_Node0_action N_ArrayCompactionComplete_Node0_action --> E_ArrayCompactionComplete S_ArrayCompactionComplete --> N_ArrayCompactionComplete_Node0 N_ArrayCompactionComplete_Node0 -- No --> E_ArrayCompactionComplete
File: GCX016.cbl
GIVEN:
Array compaction operations are in progress
WHEN:
The system needs to verify completion
THEN:
- The system checks if all elements have been properly shifted
- All empty positions cleared
β Consolidated Acceptance Criteria
- Final status update is required → the system updates array metadata and status indicators to reflect the current state
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UpdateArrayStatus(["Start Step"])
E_UpdateArrayStatus(["End Step"])
N_UpdateArrayStatus_Node0{"Final status update is required"}:::decision
N_UpdateArrayStatus_Node0_action["The system updates array metadata
and status indicators to reflect the
current state"]:::main N_UpdateArrayStatus_Node0 -- Yes --> N_UpdateArrayStatus_Node0_action N_UpdateArrayStatus_Node0_action --> E_UpdateArrayStatus S_UpdateArrayStatus --> N_UpdateArrayStatus_Node0 N_UpdateArrayStatus_Node0 -- No --> E_UpdateArrayStatus
and status indicators to reflect the
current state"]:::main N_UpdateArrayStatus_Node0 -- Yes --> N_UpdateArrayStatus_Node0_action N_UpdateArrayStatus_Node0_action --> E_UpdateArrayStatus S_UpdateArrayStatus --> N_UpdateArrayStatus_Node0 N_UpdateArrayStatus_Node0 -- No --> E_UpdateArrayStatus
File: GCX016.cbl
GIVEN:
Array compaction has been completed successfully
WHEN:
Final status update is required
THEN:
- The system updates array metadata
- Status indicators to reflect the current state
β Consolidated Acceptance Criteria
- No matching elements are found in the array → the system completes the operation without making changes and indicates no elements were removed
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_NoElementsFoundtoRemove(["Start Step"])
E_NoElementsFoundtoRemove(["End Step"])
N_NoElementsFoundtoRemove_Node0{"No matching elements are found in
the array"}:::decision N_NoElementsFoundtoRemove_Node0_action["The system completes the operation
without making changes and indicates
no elements were removed"]:::main N_NoElementsFoundtoRemove_Node0 -- Yes --> N_NoElementsFoundtoRemove_Node0_action N_NoElementsFoundtoRemove_Node0_action --> E_NoElementsFoundtoRemove S_NoElementsFoundtoRemove --> N_NoElementsFoundtoRemove_Node0 N_NoElementsFoundtoRemove_Node0 -- No --> E_NoElementsFoundtoRemove
the array"}:::decision N_NoElementsFoundtoRemove_Node0_action["The system completes the operation
without making changes and indicates
no elements were removed"]:::main N_NoElementsFoundtoRemove_Node0 -- Yes --> N_NoElementsFoundtoRemove_Node0_action N_NoElementsFoundtoRemove_Node0_action --> E_NoElementsFoundtoRemove S_NoElementsFoundtoRemove --> N_NoElementsFoundtoRemove_Node0 N_NoElementsFoundtoRemove_Node0 -- No --> E_NoElementsFoundtoRemove
File: GCX016.cbl
GIVEN:
A request to remove elements from the status array has been made
WHEN:
No matching elements are found in the array
THEN:
- The system completes the operation without making changes
- Indicates no elements were removed
β Consolidated Acceptance Criteria
- The disposition code type is a release code → the released flag must be set to 'Y' in the status array element
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ReleaseCodeProcessing(["Start Step"])
E_ReleaseCodeProcessing(["End Step"])
N_ReleaseCodeProcessing_Node0{"The disposition code type is a
release code"}:::decision N_ReleaseCodeProcessing_Node0_action["The released flag must be set to Y
in the status array element"]:::main N_ReleaseCodeProcessing_Node0 -- Yes --> N_ReleaseCodeProcessing_Node0_action N_ReleaseCodeProcessing_Node0_action --> E_ReleaseCodeProcessing S_ReleaseCodeProcessing --> N_ReleaseCodeProcessing_Node0 N_ReleaseCodeProcessing_Node0 -- No --> E_ReleaseCodeProcessing
release code"}:::decision N_ReleaseCodeProcessing_Node0_action["The released flag must be set to Y
in the status array element"]:::main N_ReleaseCodeProcessing_Node0 -- Yes --> N_ReleaseCodeProcessing_Node0_action N_ReleaseCodeProcessing_Node0_action --> E_ReleaseCodeProcessing S_ReleaseCodeProcessing --> N_ReleaseCodeProcessing_Node0 N_ReleaseCodeProcessing_Node0 -- No --> E_ReleaseCodeProcessing
File: GCX016.cbl
GIVEN:
A status array element is being processed
WHEN:
The disposition code type is a release code
THEN:
The released flag must be set to 'Y' in the status array element
β Consolidated Acceptance Criteria
- The disposition code type is a hold code → the released flag must be set to 'N' in the status array element
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_HoldCodeProcessing(["Start Step"])
E_HoldCodeProcessing(["End Step"])
N_HoldCodeProcessing_Node0{"The disposition code type is a hold
code"}:::decision N_HoldCodeProcessing_Node0_action["The released flag must be set to N
in the status array element"]:::main N_HoldCodeProcessing_Node0 -- Yes --> N_HoldCodeProcessing_Node0_action N_HoldCodeProcessing_Node0_action --> E_HoldCodeProcessing S_HoldCodeProcessing --> N_HoldCodeProcessing_Node0 N_HoldCodeProcessing_Node0 -- No --> E_HoldCodeProcessing
code"}:::decision N_HoldCodeProcessing_Node0_action["The released flag must be set to N
in the status array element"]:::main N_HoldCodeProcessing_Node0 -- Yes --> N_HoldCodeProcessing_Node0_action N_HoldCodeProcessing_Node0_action --> E_HoldCodeProcessing S_HoldCodeProcessing --> N_HoldCodeProcessing_Node0 N_HoldCodeProcessing_Node0 -- No --> E_HoldCodeProcessing
File: GCX016.cbl
GIVEN:
A status array element is being processed
WHEN:
The disposition code type is a hold code
THEN:
The released flag must be set to 'N' in the status array element
β Consolidated Acceptance Criteria
- The disposition code type is an information code → the existing released flag value must be preserved without change
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_InformationCodeProcessing(["Start Step"])
E_InformationCodeProcessing(["End Step"])
N_InformationCodeProcessing_Node0{"The disposition code type is an
information code"}:::decision N_InformationCodeProcessing_Node0_action["The existing released flag value
must be preserved without change"]:::main N_InformationCodeProcessing_Node0 -- Yes --> N_InformationCodeProcessing_Node0_action N_InformationCodeProcessing_Node0_action --> E_InformationCodeProcessing S_InformationCodeProcessing --> N_InformationCodeProcessing_Node0 N_InformationCodeProcessing_Node0 -- No --> E_InformationCodeProcessing
information code"}:::decision N_InformationCodeProcessing_Node0_action["The existing released flag value
must be preserved without change"]:::main N_InformationCodeProcessing_Node0 -- Yes --> N_InformationCodeProcessing_Node0_action N_InformationCodeProcessing_Node0_action --> E_InformationCodeProcessing S_InformationCodeProcessing --> N_InformationCodeProcessing_Node0 N_InformationCodeProcessing_Node0 -- No --> E_InformationCodeProcessing
File: GCX016.cbl
GIVEN:
A status array element is being processed
WHEN:
The disposition code type is an information code
THEN:
The existing released flag value must be preserved without change
β Consolidated Acceptance Criteria
- If if a released flag is required → if required, set released flag to 'Y', otherwise preserve existing flag value
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ReleasedFlagRequired(["Start Step"])
E_ReleasedFlagRequired(["End Step"])
N_ReleasedFlagRequired_Node0{"The system evaluates if a released
flag is required"}:::decision N_ReleasedFlagRequired_Node0_action["If required, set released flag to Y
, otherwise preserve existing flag
value"]:::main N_ReleasedFlagRequired_Node0 -- Yes --> N_ReleasedFlagRequired_Node0_action N_ReleasedFlagRequired_Node0_action --> E_ReleasedFlagRequired S_ReleasedFlagRequired --> N_ReleasedFlagRequired_Node0 N_ReleasedFlagRequired_Node0 -- No --> E_ReleasedFlagRequired
flag is required"}:::decision N_ReleasedFlagRequired_Node0_action["If required, set released flag to Y
, otherwise preserve existing flag
value"]:::main N_ReleasedFlagRequired_Node0 -- Yes --> N_ReleasedFlagRequired_Node0_action N_ReleasedFlagRequired_Node0_action --> E_ReleasedFlagRequired S_ReleasedFlagRequired --> N_ReleasedFlagRequired_Node0 N_ReleasedFlagRequired_Node0 -- No --> E_ReleasedFlagRequired
File: GCX016.cbl
GIVEN:
A disposition code is being processed for a status array element
WHEN:
The system evaluates if a released flag is required
THEN:
If required, set released flag to 'Y', otherwise preserve existing flag value
β Consolidated Acceptance Criteria
- Quantity action is required → the system must process and update the release quantities for the cargo
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ProcessReleaseQuantities(["Start Step"])
E_ProcessReleaseQuantities(["End Step"])
N_ProcessReleaseQuantities_Node0{"Quantity action is required"}:::decision
N_ProcessReleaseQuantities_Node0_action["The system must process and update
the release quantities for the cargo"]:::main N_ProcessReleaseQuantities_Node0 -- Yes --> N_ProcessReleaseQuantities_Node0_action N_ProcessReleaseQuantities_Node0_action --> E_ProcessReleaseQuantities S_ProcessReleaseQuantities --> N_ProcessReleaseQuantities_Node0 N_ProcessReleaseQuantities_Node0 -- No --> E_ProcessReleaseQuantities
the release quantities for the cargo"]:::main N_ProcessReleaseQuantities_Node0 -- Yes --> N_ProcessReleaseQuantities_Node0_action N_ProcessReleaseQuantities_Node0_action --> E_ProcessReleaseQuantities S_ProcessReleaseQuantities --> N_ProcessReleaseQuantities_Node0 N_ProcessReleaseQuantities_Node0 -- No --> E_ProcessReleaseQuantities
File: GCX016.cbl
GIVEN:
A disposition code with quantity impact is being processed
WHEN:
Quantity action is required
THEN:
- The system must process
- Update the release quantities for the cargo
β Consolidated Acceptance Criteria
- Flag validation is performed → all flags must be in a consistent and valid state, otherwise an error condition is raised
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ValidateFlagConsistency(["Start Step"])
E_ValidateFlagConsistency(["End Step"])
N_ValidateFlagConsistency_Node0{"Flag validation is performed"}:::decision
N_ValidateFlagConsistency_Node0_action["All flags must be in a consistent
and valid state, otherwise an error
condition is raised"]:::main N_ValidateFlagConsistency_Node0 -- Yes --> N_ValidateFlagConsistency_Node0_action N_ValidateFlagConsistency_Node0_action --> E_ValidateFlagConsistency S_ValidateFlagConsistency --> N_ValidateFlagConsistency_Node0 N_ValidateFlagConsistency_Node0 -- No --> E_ValidateFlagConsistency
and valid state, otherwise an error
condition is raised"]:::main N_ValidateFlagConsistency_Node0 -- Yes --> N_ValidateFlagConsistency_Node0_action N_ValidateFlagConsistency_Node0_action --> E_ValidateFlagConsistency S_ValidateFlagConsistency --> N_ValidateFlagConsistency_Node0 N_ValidateFlagConsistency_Node0 -- No --> E_ValidateFlagConsistency
File: GCX016.cbl
GIVEN:
A status array element has been processed with flag changes
WHEN:
Flag validation is performed
THEN:
- All flags must be in a consistent
- Valid state, otherwise an error condition is raised
β Consolidated Acceptance Criteria
- Flag changes have been applied → all flag changes must be logged with appropriate audit information
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogFlagChange(["Start Step"])
E_LogFlagChange(["End Step"])
N_LogFlagChange_Node0{"Flag changes have been applied"}:::decision
N_LogFlagChange_Node0_action["All flag changes must be logged
with appropriate audit information"]:::main N_LogFlagChange_Node0 -- Yes --> N_LogFlagChange_Node0_action N_LogFlagChange_Node0_action --> E_LogFlagChange S_LogFlagChange --> N_LogFlagChange_Node0 N_LogFlagChange_Node0 -- No --> E_LogFlagChange
with appropriate audit information"]:::main N_LogFlagChange_Node0 -- Yes --> N_LogFlagChange_Node0_action N_LogFlagChange_Node0_action --> E_LogFlagChange S_LogFlagChange --> N_LogFlagChange_Node0 N_LogFlagChange_Node0 -- No --> E_LogFlagChange
File: GCX016.cbl
GIVEN:
A status array element has been successfully updated
WHEN:
Flag changes have been applied
THEN:
All flag changes must be logged with appropriate audit information
β Consolidated Acceptance Criteria
- The validation fails due to invalid flag state → an error condition must be raised and appropriate error handling must be invoked
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ErrorInvalidFlagState(["Start Step"])
E_ErrorInvalidFlagState(["End Step"])
N_ErrorInvalidFlagState_Node0{"The validation fails due to invalid
flag state"}:::decision N_ErrorInvalidFlagState_Node0_action["An error condition must be raised
and appropriate error handling must
be invoked"]:::exclusion N_ErrorInvalidFlagState_Node0 -- Yes -->|Alternative| N_ErrorInvalidFlagState_Node0_action N_ErrorInvalidFlagState_Node0_action --> E_ErrorInvalidFlagState S_ErrorInvalidFlagState --> N_ErrorInvalidFlagState_Node0 N_ErrorInvalidFlagState_Node0 -- No --> E_ErrorInvalidFlagState
flag state"}:::decision N_ErrorInvalidFlagState_Node0_action["An error condition must be raised
and appropriate error handling must
be invoked"]:::exclusion N_ErrorInvalidFlagState_Node0 -- Yes -->|Alternative| N_ErrorInvalidFlagState_Node0_action N_ErrorInvalidFlagState_Node0_action --> E_ErrorInvalidFlagState S_ErrorInvalidFlagState --> N_ErrorInvalidFlagState_Node0 N_ErrorInvalidFlagState_Node0 -- No --> E_ErrorInvalidFlagState
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
Flag validation is performed on a status array element
WHEN:
The validation fails due to invalid flag state
THEN:
- An error condition must be raised
- Appropriate error handling must be invoked
β Consolidated Acceptance Criteria
- If the disposition code type against the DC-STATUS-INFO flag → the system determines if the code should be processed as status information only
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CheckDCSTATUSINFOFlag(["Start Step"])
E_CheckDCSTATUSINFOFlag(["End Step"])
N_CheckDCSTATUSINFOFlag_Node0{"The system evaluates the
disposition code type against the
DC-STATUS-INFO flag"}:::decision N_CheckDCSTATUSINFOFlag_Node0_action["The system determines if the code
should be processed as status
information only"]:::main N_CheckDCSTATUSINFOFlag_Node0 -- Yes --> N_CheckDCSTATUSINFOFlag_Node0_action N_CheckDCSTATUSINFOFlag_Node0_action --> E_CheckDCSTATUSINFOFlag S_CheckDCSTATUSINFOFlag --> N_CheckDCSTATUSINFOFlag_Node0 N_CheckDCSTATUSINFOFlag_Node0 -- No --> E_CheckDCSTATUSINFOFlag
disposition code type against the
DC-STATUS-INFO flag"}:::decision N_CheckDCSTATUSINFOFlag_Node0_action["The system determines if the code
should be processed as status
information only"]:::main N_CheckDCSTATUSINFOFlag_Node0 -- Yes --> N_CheckDCSTATUSINFOFlag_Node0_action N_CheckDCSTATUSINFOFlag_Node0_action --> E_CheckDCSTATUSINFOFlag S_CheckDCSTATUSINFOFlag --> N_CheckDCSTATUSINFOFlag_Node0 N_CheckDCSTATUSINFOFlag_Node0 -- No --> E_CheckDCSTATUSINFOFlag
File: GCX016.cbl
GIVEN:
A disposition code is being processed in the cargo system
WHEN:
The system evaluates the disposition code type against the DC-STATUS-INFO flag
THEN:
The system determines if the code should be processed as status information only
β Consolidated Acceptance Criteria
- The system searches the S09A array for existing identical status information entries → the system identifies whether the status information already exists to prevent duplication
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CheckforDuplicateinS09AArray(["Start Step"])
E_CheckforDuplicateinS09AArray(["End Step"])
N_CheckforDuplicateinS09AArray_Node0{"The system searches the S09A array
for existing identical status
information entries"}:::decision N_CheckforDuplicateinS09AArray_Node0_action["The system identifies whether the
status information already exists to
prevent duplication"]:::main N_CheckforDuplicateinS09AArray_Node0 -- Yes --> N_CheckforDuplicateinS09AArray_Node0_action N_CheckforDuplicateinS09AArray_Node0_action --> E_CheckforDuplicateinS09AArray S_CheckforDuplicateinS09AArray --> N_CheckforDuplicateinS09AArray_Node0 N_CheckforDuplicateinS09AArray_Node0 -- No --> E_CheckforDuplicateinS09AArray
for existing identical status
information entries"}:::decision N_CheckforDuplicateinS09AArray_Node0_action["The system identifies whether the
status information already exists to
prevent duplication"]:::main N_CheckforDuplicateinS09AArray_Node0 -- Yes --> N_CheckforDuplicateinS09AArray_Node0_action N_CheckforDuplicateinS09AArray_Node0_action --> E_CheckforDuplicateinS09AArray S_CheckforDuplicateinS09AArray --> N_CheckforDuplicateinS09AArray_Node0 N_CheckforDuplicateinS09AArray_Node0 -- No --> E_CheckforDuplicateinS09AArray
File: GCX016.cbl
GIVEN:
A status information code is ready to be added to the cargo status array
WHEN:
The system searches the S09A array for existing identical status information entries
THEN:
The system identifies whether the status information already exists to prevent duplication
β Consolidated Acceptance Criteria
- The system processes the status information for addition → the system adds the status information to the next available position in the S09A array
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AddStatusInfotoS09AArray(["Start Step"])
E_AddStatusInfotoS09AArray(["End Step"])
N_AddStatusInfotoS09AArray_Node0{"The system processes the status
information for addition"}:::decision N_AddStatusInfotoS09AArray_Node0_action["The system adds the status
information to the next available
position in the S09A array"]:::main N_AddStatusInfotoS09AArray_Node0 -- Yes --> N_AddStatusInfotoS09AArray_Node0_action N_AddStatusInfotoS09AArray_Node0_action --> E_AddStatusInfotoS09AArray S_AddStatusInfotoS09AArray --> N_AddStatusInfotoS09AArray_Node0 N_AddStatusInfotoS09AArray_Node0 -- No --> E_AddStatusInfotoS09AArray
information for addition"}:::decision N_AddStatusInfotoS09AArray_Node0_action["The system adds the status
information to the next available
position in the S09A array"]:::main N_AddStatusInfotoS09AArray_Node0 -- Yes --> N_AddStatusInfotoS09AArray_Node0_action N_AddStatusInfotoS09AArray_Node0_action --> E_AddStatusInfotoS09AArray S_AddStatusInfotoS09AArray --> N_AddStatusInfotoS09AArray_Node0 N_AddStatusInfotoS09AArray_Node0 -- No --> E_AddStatusInfotoS09AArray
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
A valid status information code does not exist in the S09A array
WHEN:
The system processes the status information for addition
THEN:
The system adds the status information to the next available position in the S09A array
β Consolidated Acceptance Criteria
- The system sets the status information fields → the system populates the disposition code, description, and informational flags for the status entry
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetStatusInformationFields(["Start Step"])
E_SetStatusInformationFields(["End Step"])
N_SetStatusInformationFields_Node0{"The system sets the status
information fields"}:::decision N_SetStatusInformationFields_Node0_action["The system populates the
disposition code, description, and
informational flags for the status
entry"]:::main N_SetStatusInformationFields_Node0 -- Yes --> N_SetStatusInformationFields_Node0_action N_SetStatusInformationFields_Node0_action --> E_SetStatusInformationFields S_SetStatusInformationFields --> N_SetStatusInformationFields_Node0 N_SetStatusInformationFields_Node0 -- No --> E_SetStatusInformationFields
information fields"}:::decision N_SetStatusInformationFields_Node0_action["The system populates the
disposition code, description, and
informational flags for the status
entry"]:::main N_SetStatusInformationFields_Node0 -- Yes --> N_SetStatusInformationFields_Node0_action N_SetStatusInformationFields_Node0_action --> E_SetStatusInformationFields S_SetStatusInformationFields --> N_SetStatusInformationFields_Node0 N_SetStatusInformationFields_Node0 -- No --> E_SetStatusInformationFields
File: GCX016.cbl
GIVEN:
A status information entry is being added to the S09A array
WHEN:
The system sets the status information fields
THEN:
The system populates the disposition code, description, and informational flags for the status entry
β Consolidated Acceptance Criteria
- The system sets the DC-STATUS-INFO-CD field → the system assigns the current disposition code value to the status information code field
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetDCSTATUSINFOCD(["Start Step"])
E_SetDCSTATUSINFOCD(["End Step"])
N_SetDCSTATUSINFOCD_Node0{"The system sets the
DC-STATUS-INFO-CD field"}:::decision N_SetDCSTATUSINFOCD_Node0_action["The system assigns the current
disposition code value to the status
information code field"]:::main N_SetDCSTATUSINFOCD_Node0 -- Yes --> N_SetDCSTATUSINFOCD_Node0_action N_SetDCSTATUSINFOCD_Node0_action --> E_SetDCSTATUSINFOCD S_SetDCSTATUSINFOCD --> N_SetDCSTATUSINFOCD_Node0 N_SetDCSTATUSINFOCD_Node0 -- No --> E_SetDCSTATUSINFOCD
DC-STATUS-INFO-CD field"}:::decision N_SetDCSTATUSINFOCD_Node0_action["The system assigns the current
disposition code value to the status
information code field"]:::main N_SetDCSTATUSINFOCD_Node0 -- Yes --> N_SetDCSTATUSINFOCD_Node0_action N_SetDCSTATUSINFOCD_Node0_action --> E_SetDCSTATUSINFOCD S_SetDCSTATUSINFOCD --> N_SetDCSTATUSINFOCD_Node0 N_SetDCSTATUSINFOCD_Node0 -- No --> E_SetDCSTATUSINFOCD
File: GCX016.cbl
GIVEN:
A status information entry is being populated in the S09A array
WHEN:
The system sets the DC-STATUS-INFO-CD field
THEN:
The system assigns the current disposition code value to the status information code field
β Consolidated Acceptance Criteria
- The system sets the DC-STATUS-INFO-DESC field → the system assigns the disposition code description to the status information description field
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetDCSTATUSINFODESC(["Start Step"])
E_SetDCSTATUSINFODESC(["End Step"])
N_SetDCSTATUSINFODESC_Node0{"The system sets the
DC-STATUS-INFO-DESC field"}:::decision N_SetDCSTATUSINFODESC_Node0_action["The system assigns the disposition
code description to the status
information description field"]:::main N_SetDCSTATUSINFODESC_Node0 -- Yes --> N_SetDCSTATUSINFODESC_Node0_action N_SetDCSTATUSINFODESC_Node0_action --> E_SetDCSTATUSINFODESC S_SetDCSTATUSINFODESC --> N_SetDCSTATUSINFODESC_Node0 N_SetDCSTATUSINFODESC_Node0 -- No --> E_SetDCSTATUSINFODESC
DC-STATUS-INFO-DESC field"}:::decision N_SetDCSTATUSINFODESC_Node0_action["The system assigns the disposition
code description to the status
information description field"]:::main N_SetDCSTATUSINFODESC_Node0 -- Yes --> N_SetDCSTATUSINFODESC_Node0_action N_SetDCSTATUSINFODESC_Node0_action --> E_SetDCSTATUSINFODESC S_SetDCSTATUSINFODESC --> N_SetDCSTATUSINFODESC_Node0 N_SetDCSTATUSINFODESC_Node0 -- No --> E_SetDCSTATUSINFODESC
File: GCX016.cbl
GIVEN:
A status information entry is being populated in the S09A array
WHEN:
The system sets the DC-STATUS-INFO-DESC field
THEN:
The system assigns the disposition code description to the status information description field
β Consolidated Acceptance Criteria
- The system marks the entry as informational only → the system sets the appropriate flag to indicate this status does not trigger cargo actions
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MarkasInformationalOnly(["Start Step"])
E_MarkasInformationalOnly(["End Step"])
N_MarkasInformationalOnly_Node0{"The system marks the entry as
informational only"}:::decision N_MarkasInformationalOnly_Node0_action["The system sets the appropriate
flag to indicate this status does
not trigger cargo actions"]:::main N_MarkasInformationalOnly_Node0 -- Yes --> N_MarkasInformationalOnly_Node0_action N_MarkasInformationalOnly_Node0_action --> E_MarkasInformationalOnly S_MarkasInformationalOnly --> N_MarkasInformationalOnly_Node0 N_MarkasInformationalOnly_Node0 -- No --> E_MarkasInformationalOnly
informational only"}:::decision N_MarkasInformationalOnly_Node0_action["The system sets the appropriate
flag to indicate this status does
not trigger cargo actions"]:::main N_MarkasInformationalOnly_Node0 -- Yes --> N_MarkasInformationalOnly_Node0_action N_MarkasInformationalOnly_Node0_action --> E_MarkasInformationalOnly S_MarkasInformationalOnly --> N_MarkasInformationalOnly_Node0 N_MarkasInformationalOnly_Node0 -- No --> E_MarkasInformationalOnly
File: GCX016.cbl
GIVEN:
A status information entry is being configured in the S09A array
WHEN:
The system marks the entry as informational only
THEN:
The system sets the appropriate flag to indicate this status does not trigger cargo actions
β Consolidated Acceptance Criteria
- If quantity impact requirements → the system ensures the status information does not modify cargo release quantities or total quantities
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_DoNotAffectQuantities(["Start Step"])
E_DoNotAffectQuantities(["End Step"])
N_DoNotAffectQuantities_Node0{"The system evaluates quantity
impact requirements"}:::decision N_DoNotAffectQuantities_Node0_action["The system ensures the status
information does not modify cargo
release quantities or total
quantities"]:::main N_DoNotAffectQuantities_Node0 -- Yes --> N_DoNotAffectQuantities_Node0_action N_DoNotAffectQuantities_Node0_action --> E_DoNotAffectQuantities S_DoNotAffectQuantities --> N_DoNotAffectQuantities_Node0 N_DoNotAffectQuantities_Node0 -- No --> E_DoNotAffectQuantities
impact requirements"}:::decision N_DoNotAffectQuantities_Node0_action["The system ensures the status
information does not modify cargo
release quantities or total
quantities"]:::main N_DoNotAffectQuantities_Node0 -- Yes --> N_DoNotAffectQuantities_Node0_action N_DoNotAffectQuantities_Node0_action --> E_DoNotAffectQuantities S_DoNotAffectQuantities --> N_DoNotAffectQuantities_Node0 N_DoNotAffectQuantities_Node0 -- No --> E_DoNotAffectQuantities
File: GCX016.cbl
GIVEN:
A status information code is being processed
WHEN:
The system evaluates quantity impact requirements
THEN:
The system ensures the status information does not modify cargo release quantities or total quantities
β Consolidated Acceptance Criteria
- The system performs logging operations → the system creates an audit log entry documenting the status information addition with relevant details
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogStatusInformationAdded(["Start Step"])
E_LogStatusInformationAdded(["End Step"])
N_LogStatusInformationAdded_Node0{"The system performs logging
operations"}:::decision N_LogStatusInformationAdded_Node0_action["The system creates an audit log
entry documenting the status
information addition with relevant
details"]:::main N_LogStatusInformationAdded_Node0 -- Yes --> N_LogStatusInformationAdded_Node0_action N_LogStatusInformationAdded_Node0_action --> E_LogStatusInformationAdded S_LogStatusInformationAdded --> N_LogStatusInformationAdded_Node0 N_LogStatusInformationAdded_Node0 -- No --> E_LogStatusInformationAdded
operations"}:::decision N_LogStatusInformationAdded_Node0_action["The system creates an audit log
entry documenting the status
information addition with relevant
details"]:::main N_LogStatusInformationAdded_Node0 -- Yes --> N_LogStatusInformationAdded_Node0_action N_LogStatusInformationAdded_Node0_action --> E_LogStatusInformationAdded S_LogStatusInformationAdded --> N_LogStatusInformationAdded_Node0 N_LogStatusInformationAdded_Node0 -- No --> E_LogStatusInformationAdded
File: GCX016.cbl
GIVEN:
A status information entry has been successfully added to the cargo status array
WHEN:
The system performs logging operations
THEN:
The system creates an audit log entry documenting the status information addition with relevant details
β Consolidated Acceptance Criteria
- The system scans through all status entries in the array for border hold codes → the border hold flag is set to true if any border hold disposition codes are found, otherwise it remains false
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_BorderHoldCodeFound(["Start Step"])
E_BorderHoldCodeFound(["End Step"])
N_BorderHoldCodeFound_Node0{"The system scans through all status
entries in the array for border hold
codes"}:::decision N_BorderHoldCodeFound_Node0_action["The border hold flag is set to true
if any border hold disposition codes
are found, otherwise it remains
false"]:::main N_BorderHoldCodeFound_Node0 -- Yes --> N_BorderHoldCodeFound_Node0_action N_BorderHoldCodeFound_Node0_action --> E_BorderHoldCodeFound S_BorderHoldCodeFound --> N_BorderHoldCodeFound_Node0 N_BorderHoldCodeFound_Node0 -- No --> E_BorderHoldCodeFound
entries in the array for border hold
codes"}:::decision N_BorderHoldCodeFound_Node0_action["The border hold flag is set to true
if any border hold disposition codes
are found, otherwise it remains
false"]:::main N_BorderHoldCodeFound_Node0 -- Yes --> N_BorderHoldCodeFound_Node0_action N_BorderHoldCodeFound_Node0_action --> E_BorderHoldCodeFound S_BorderHoldCodeFound --> N_BorderHoldCodeFound_Node0 N_BorderHoldCodeFound_Node0 -- No --> E_BorderHoldCodeFound
File: GCX016.cbl
GIVEN:
A cargo record with populated S09A status array containing disposition codes
WHEN:
The system scans through all status entries in the array for border hold codes
THEN:
The border hold flag is set to true if any border hold disposition codes are found, otherwise it remains false
β Consolidated Acceptance Criteria
- The system scans through all status entries in the array for destination hold codes → the destination hold flag is set to true if any destination hold disposition codes are found, otherwise it remains false
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_DestinationHoldCodeFound(["Start Step"])
E_DestinationHoldCodeFound(["End Step"])
N_DestinationHoldCodeFound_Node0{"The system scans through all status
entries in the array for destination
hold codes"}:::decision N_DestinationHoldCodeFound_Node0_action["The destination hold flag is set to
true if any destination hold
disposition codes are found,
otherwise it remains false"]:::main N_DestinationHoldCodeFound_Node0 -- Yes --> N_DestinationHoldCodeFound_Node0_action N_DestinationHoldCodeFound_Node0_action --> E_DestinationHoldCodeFound S_DestinationHoldCodeFound --> N_DestinationHoldCodeFound_Node0 N_DestinationHoldCodeFound_Node0 -- No --> E_DestinationHoldCodeFound
entries in the array for destination
hold codes"}:::decision N_DestinationHoldCodeFound_Node0_action["The destination hold flag is set to
true if any destination hold
disposition codes are found,
otherwise it remains false"]:::main N_DestinationHoldCodeFound_Node0 -- Yes --> N_DestinationHoldCodeFound_Node0_action N_DestinationHoldCodeFound_Node0_action --> E_DestinationHoldCodeFound S_DestinationHoldCodeFound --> N_DestinationHoldCodeFound_Node0 N_DestinationHoldCodeFound_Node0 -- No --> E_DestinationHoldCodeFound
File: GCX016.cbl
GIVEN:
A cargo record with populated S09A status array containing disposition codes
WHEN:
The system scans through all status entries in the array for destination hold codes
THEN:
The destination hold flag is set to true if any destination hold disposition codes are found, otherwise it remains false
β Consolidated Acceptance Criteria
- If hold location flags and finds only border hold is active → the cargo hold status is set to border hold only
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_OnlyBorderHold(["Start Step"])
E_OnlyBorderHold(["End Step"])
N_OnlyBorderHold_Node0{"The system evaluates hold location
flags and finds only border hold is
active"}:::decision N_OnlyBorderHold_Node0_action["The cargo hold status is set to
border hold only"]:::main N_OnlyBorderHold_Node0 -- Yes --> N_OnlyBorderHold_Node0_action N_OnlyBorderHold_Node0_action --> E_OnlyBorderHold S_OnlyBorderHold --> N_OnlyBorderHold_Node0 N_OnlyBorderHold_Node0 -- No --> E_OnlyBorderHold
flags and finds only border hold is
active"}:::decision N_OnlyBorderHold_Node0_action["The cargo hold status is set to
border hold only"]:::main N_OnlyBorderHold_Node0 -- Yes --> N_OnlyBorderHold_Node0_action N_OnlyBorderHold_Node0_action --> E_OnlyBorderHold S_OnlyBorderHold --> N_OnlyBorderHold_Node0 N_OnlyBorderHold_Node0 -- No --> E_OnlyBorderHold
File: GCX016.cbl
GIVEN:
A cargo record with border hold flag set to true and destination hold flag set to false
WHEN:
- The system evaluates hold location flags
- Finds only border hold is active
THEN:
The cargo hold status is set to border hold only
β Consolidated Acceptance Criteria
- If hold location flags and finds only destination hold is active → the cargo hold status is set to destination hold only
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_OnlyDestinationHold(["Start Step"])
E_OnlyDestinationHold(["End Step"])
N_OnlyDestinationHold_Node0{"The system evaluates hold location
flags and finds only destination
hold is active"}:::decision N_OnlyDestinationHold_Node0_action["The cargo hold status is set to
destination hold only"]:::main N_OnlyDestinationHold_Node0 -- Yes --> N_OnlyDestinationHold_Node0_action N_OnlyDestinationHold_Node0_action --> E_OnlyDestinationHold S_OnlyDestinationHold --> N_OnlyDestinationHold_Node0 N_OnlyDestinationHold_Node0 -- No --> E_OnlyDestinationHold
flags and finds only destination
hold is active"}:::decision N_OnlyDestinationHold_Node0_action["The cargo hold status is set to
destination hold only"]:::main N_OnlyDestinationHold_Node0 -- Yes --> N_OnlyDestinationHold_Node0_action N_OnlyDestinationHold_Node0_action --> E_OnlyDestinationHold S_OnlyDestinationHold --> N_OnlyDestinationHold_Node0 N_OnlyDestinationHold_Node0 -- No --> E_OnlyDestinationHold
File: GCX016.cbl
GIVEN:
A cargo record with destination hold flag set to true and border hold flag set to false
WHEN:
- The system evaluates hold location flags
- Finds only destination hold is active
THEN:
The cargo hold status is set to destination hold only
β Consolidated Acceptance Criteria
- If hold location flags and finds no active holds → the cargo hold status is set to indicate no holds are active
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetNoHoldStatus(["Start Step"])
E_SetNoHoldStatus(["End Step"])
N_SetNoHoldStatus_Node0{"The system evaluates hold location
flags and finds no active holds"}:::decision N_SetNoHoldStatus_Node0_action["The cargo hold status is set to
indicate no holds are active"]:::main N_SetNoHoldStatus_Node0 -- Yes --> N_SetNoHoldStatus_Node0_action N_SetNoHoldStatus_Node0_action --> E_SetNoHoldStatus S_SetNoHoldStatus --> N_SetNoHoldStatus_Node0 N_SetNoHoldStatus_Node0 -- No --> E_SetNoHoldStatus
flags and finds no active holds"}:::decision N_SetNoHoldStatus_Node0_action["The cargo hold status is set to
indicate no holds are active"]:::main N_SetNoHoldStatus_Node0 -- Yes --> N_SetNoHoldStatus_Node0_action N_SetNoHoldStatus_Node0_action --> E_SetNoHoldStatus S_SetNoHoldStatus --> N_SetNoHoldStatus_Node0 N_SetNoHoldStatus_Node0 -- No --> E_SetNoHoldStatus
File: GCX016.cbl
GIVEN:
A cargo record with both border hold flag and destination hold flag set to false
WHEN:
- The system evaluates hold location flags
- Finds no active holds
THEN:
The cargo hold status is set to indicate no holds are active
β Consolidated Acceptance Criteria
- The cargo status changes from released to unreleased state → the system generates unrelease notifications and detects status change requirements
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CargoPreviouslyReleasedbutNowUnreleased(["Start Step"])
E_CargoPreviouslyReleasedbutNowUnreleased(["End Step"])
N_CargoPreviouslyReleasedbutNowUnreleased_Node0{"The cargo status changes from
released to unreleased state"}:::decision N_CargoPreviouslyReleasedbutNowUnreleased_Node0_action["The system generates unrelease
notifications and detects status
change requirements"]:::main N_CargoPreviouslyReleasedbutNowUnreleased_Node0 -- Yes --> N_CargoPreviouslyReleasedbutNowUnreleased_Node0_action N_CargoPreviouslyReleasedbutNowUnreleased_Node0_action --> E_CargoPreviouslyReleasedbutNowUnreleased S_CargoPreviouslyReleasedbutNowUnreleased --> N_CargoPreviouslyReleasedbutNowUnreleased_Node0 N_CargoPreviouslyReleasedbutNowUnreleased_Node0 -- No --> E_CargoPreviouslyReleasedbutNowUnreleased
released to unreleased state"}:::decision N_CargoPreviouslyReleasedbutNowUnreleased_Node0_action["The system generates unrelease
notifications and detects status
change requirements"]:::main N_CargoPreviouslyReleasedbutNowUnreleased_Node0 -- Yes --> N_CargoPreviouslyReleasedbutNowUnreleased_Node0_action N_CargoPreviouslyReleasedbutNowUnreleased_Node0_action --> E_CargoPreviouslyReleasedbutNowUnreleased S_CargoPreviouslyReleasedbutNowUnreleased --> N_CargoPreviouslyReleasedbutNowUnreleased_Node0 N_CargoPreviouslyReleasedbutNowUnreleased_Node0 -- No --> E_CargoPreviouslyReleasedbutNowUnreleased
File: GCX016.cbl
GIVEN:
A cargo record that was previously in released status
WHEN:
The cargo status changes from released to unreleased state
THEN:
- The system generates unrelease notifications
- Detects status change requirements
β Consolidated Acceptance Criteria
- The cargo requires arrival status based on location and movement conditions → the system sets arrival status and updates the border arrival date
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ArrivalStatusRequired(["Start Step"])
E_ArrivalStatusRequired(["End Step"])
N_ArrivalStatusRequired_Node0{"The cargo requires arrival status
based on location and movement
conditions"}:::decision N_ArrivalStatusRequired_Node0_action["The system sets arrival status and
updates the border arrival date"]:::main N_ArrivalStatusRequired_Node0 -- Yes --> N_ArrivalStatusRequired_Node0_action N_ArrivalStatusRequired_Node0_action --> E_ArrivalStatusRequired S_ArrivalStatusRequired --> N_ArrivalStatusRequired_Node0 N_ArrivalStatusRequired_Node0 -- No --> E_ArrivalStatusRequired
based on location and movement
conditions"}:::decision N_ArrivalStatusRequired_Node0_action["The system sets arrival status and
updates the border arrival date"]:::main N_ArrivalStatusRequired_Node0 -- Yes --> N_ArrivalStatusRequired_Node0_action N_ArrivalStatusRequired_Node0_action --> E_ArrivalStatusRequired S_ArrivalStatusRequired --> N_ArrivalStatusRequired_Node0 N_ArrivalStatusRequired_Node0 -- No --> E_ArrivalStatusRequired
File: GCX016.cbl
GIVEN:
A cargo record being processed for status transition
WHEN:
- The cargo requires arrival status based on location
- Movement conditions
THEN:
- The system sets arrival status
- Updates the border arrival date
β Consolidated Acceptance Criteria
- The cargo meets export status requirements based on disposition codes and location → the system sets export status and clears the destination index
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExportStatusRequired(["Start Step"])
E_ExportStatusRequired(["End Step"])
N_ExportStatusRequired_Node0{"The cargo meets export status
requirements based on disposition
codes and location"}:::decision N_ExportStatusRequired_Node0_action["The system sets export status and
clears the destination index"]:::main N_ExportStatusRequired_Node0 -- Yes --> N_ExportStatusRequired_Node0_action N_ExportStatusRequired_Node0_action --> E_ExportStatusRequired S_ExportStatusRequired --> N_ExportStatusRequired_Node0 N_ExportStatusRequired_Node0 -- No --> E_ExportStatusRequired
requirements based on disposition
codes and location"}:::decision N_ExportStatusRequired_Node0_action["The system sets export status and
clears the destination index"]:::main N_ExportStatusRequired_Node0 -- Yes --> N_ExportStatusRequired_Node0_action N_ExportStatusRequired_Node0_action --> E_ExportStatusRequired S_ExportStatusRequired --> N_ExportStatusRequired_Node0 N_ExportStatusRequired_Node0 -- No --> E_ExportStatusRequired
File: GCX016.cbl
GIVEN:
A cargo record being evaluated for export processing
WHEN:
- The cargo meets export status requirements based on disposition codes
- Location
THEN:
- The system sets export status
- Clears the destination index
β Consolidated Acceptance Criteria
- The system needs to determine the appropriate hold location → the system determines border versus destination hold and sets appropriate hold status
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_HoldLocationDeterminationRequired(["Start Step"])
E_HoldLocationDeterminationRequired(["End Step"])
N_HoldLocationDeterminationRequired_Node0{"The system needs to determine the
appropriate hold location"}:::decision N_HoldLocationDeterminationRequired_Node0_action["The system determines border versus
destination hold and sets
appropriate hold status"]:::main N_HoldLocationDeterminationRequired_Node0 -- Yes --> N_HoldLocationDeterminationRequired_Node0_action N_HoldLocationDeterminationRequired_Node0_action --> E_HoldLocationDeterminationRequired S_HoldLocationDeterminationRequired --> N_HoldLocationDeterminationRequired_Node0 N_HoldLocationDeterminationRequired_Node0 -- No --> E_HoldLocationDeterminationRequired
appropriate hold location"}:::decision N_HoldLocationDeterminationRequired_Node0_action["The system determines border versus
destination hold and sets
appropriate hold status"]:::main N_HoldLocationDeterminationRequired_Node0 -- Yes --> N_HoldLocationDeterminationRequired_Node0_action N_HoldLocationDeterminationRequired_Node0_action --> E_HoldLocationDeterminationRequired S_HoldLocationDeterminationRequired --> N_HoldLocationDeterminationRequired_Node0 N_HoldLocationDeterminationRequired_Node0 -- No --> E_HoldLocationDeterminationRequired
File: GCX016.cbl
GIVEN:
A cargo record with hold requirements
WHEN:
The system needs to determine the appropriate hold location
THEN:
- The system determines border versus destination hold
- Sets appropriate hold status
β Consolidated Acceptance Criteria
- The cargo status transition requires destination index re-establishment → the system calculates cargo age using Julian dates, re-establishes RT076 destination index, and updates bond date management
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_DestinationIndexReestablishmentRequired(["Start Step"])
E_DestinationIndexReestablishmentRequired(["End Step"])
N_DestinationIndexReestablishmentRequired_Node0{"The cargo status transition
requires destination index
re-establishment"}:::decision N_DestinationIndexReestablishmentRequired_Node0_action["The system calculates cargo age
using Julian dates, re-establishes
RT076 destination index, and updates
bond date management"]:::main N_DestinationIndexReestablishmentRequired_Node0 -- Yes --> N_DestinationIndexReestablishmentRequired_Node0_action N_DestinationIndexReestablishmentRequired_Node0_action --> E_DestinationIndexReestablishmentRequired S_DestinationIndexReestablishmentRequired --> N_DestinationIndexReestablishmentRequired_Node0 N_DestinationIndexReestablishmentRequired_Node0 -- No --> E_DestinationIndexReestablishmentRequired
requires destination index
re-establishment"}:::decision N_DestinationIndexReestablishmentRequired_Node0_action["The system calculates cargo age
using Julian dates, re-establishes
RT076 destination index, and updates
bond date management"]:::main N_DestinationIndexReestablishmentRequired_Node0 -- Yes --> N_DestinationIndexReestablishmentRequired_Node0_action N_DestinationIndexReestablishmentRequired_Node0_action --> E_DestinationIndexReestablishmentRequired S_DestinationIndexReestablishmentRequired --> N_DestinationIndexReestablishmentRequired_Node0 N_DestinationIndexReestablishmentRequired_Node0 -- No --> E_DestinationIndexReestablishmentRequired
File: GCX016.cbl
GIVEN:
A cargo record requiring destination index updates
WHEN:
The cargo status transition requires destination index re-establishment
THEN:
The system calculates cargo age using Julian dates, re-establishes RT076 destination index, and updates bond date management
β Consolidated Acceptance Criteria
- The system checks the cargo type in the CCN key → if cargo type is CPRS, proceed with manual release validation, otherwise reject the manual release request
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IsCargoCPRSType(["Start Step"])
E_IsCargoCPRSType(["End Step"])
N_IsCargoCPRSType_Node0{"The system checks the cargo type in
the CCN key"}:::decision N_IsCargoCPRSType_Node0_action["If cargo type is CPRS, proceed with
manual release validation, otherwise
reject the manual release request"]:::exclusion N_IsCargoCPRSType_Node0 -- Yes -->|Alternative| N_IsCargoCPRSType_Node0_action N_IsCargoCPRSType_Node0_action --> E_IsCargoCPRSType S_IsCargoCPRSType --> N_IsCargoCPRSType_Node0 N_IsCargoCPRSType_Node0 -- No --> E_IsCargoCPRSType
the CCN key"}:::decision N_IsCargoCPRSType_Node0_action["If cargo type is CPRS, proceed with
manual release validation, otherwise
reject the manual release request"]:::exclusion N_IsCargoCPRSType_Node0 -- Yes -->|Alternative| N_IsCargoCPRSType_Node0_action N_IsCargoCPRSType_Node0_action --> E_IsCargoCPRSType S_IsCargoCPRSType --> N_IsCargoCPRSType_Node0 N_IsCargoCPRSType_Node0 -- No --> E_IsCargoCPRSType
File: GCX016.cbl
GIVEN:
A manual release request is received for cargo
WHEN:
The system checks the cargo type in the CCN key
THEN:
If cargo type is CPRS, proceed with manual release validation, otherwise reject the manual release request
β Consolidated Acceptance Criteria
- The system validates the manual release authority → if authorized, allow manual release processing, otherwise reject the request
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ValidateManualReleaseAuthority(["Start Step"])
E_ValidateManualReleaseAuthority(["End Step"])
N_ValidateManualReleaseAuthority_Node0{"The system validates the manual
release authority"}:::decision N_ValidateManualReleaseAuthority_Node0_action["If authorized, allow manual release
processing, otherwise reject the
request"]:::exclusion N_ValidateManualReleaseAuthority_Node0 -- Yes -->|Alternative| N_ValidateManualReleaseAuthority_Node0_action N_ValidateManualReleaseAuthority_Node0_action --> E_ValidateManualReleaseAuthority S_ValidateManualReleaseAuthority --> N_ValidateManualReleaseAuthority_Node0 N_ValidateManualReleaseAuthority_Node0 -- No --> E_ValidateManualReleaseAuthority
release authority"}:::decision N_ValidateManualReleaseAuthority_Node0_action["If authorized, allow manual release
processing, otherwise reject the
request"]:::exclusion N_ValidateManualReleaseAuthority_Node0 -- Yes -->|Alternative| N_ValidateManualReleaseAuthority_Node0_action N_ValidateManualReleaseAuthority_Node0_action --> E_ValidateManualReleaseAuthority S_ValidateManualReleaseAuthority --> N_ValidateManualReleaseAuthority_Node0 N_ValidateManualReleaseAuthority_Node0 -- No --> E_ValidateManualReleaseAuthority
File: GCX016.cbl
GIVEN:
A CPRS cargo requires manual release
WHEN:
The system validates the manual release authority
THEN:
If authorized, allow manual release processing, otherwise reject the request
β Consolidated Acceptance Criteria
- The system applies manual release processing → update cargo status to manual release (MRL) and set manual release indicators
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UpdateCargotoManualReleaseStatus(["Start Step"])
E_UpdateCargotoManualReleaseStatus(["End Step"])
N_UpdateCargotoManualReleaseStatus_Node0{"The system applies manual release
processing"}:::decision N_UpdateCargotoManualReleaseStatus_Node0_action["Update cargo status to manual
release MRL and set manual release
indicators"]:::main N_UpdateCargotoManualReleaseStatus_Node0 -- Yes --> N_UpdateCargotoManualReleaseStatus_Node0_action N_UpdateCargotoManualReleaseStatus_Node0_action --> E_UpdateCargotoManualReleaseStatus S_UpdateCargotoManualReleaseStatus --> N_UpdateCargotoManualReleaseStatus_Node0 N_UpdateCargotoManualReleaseStatus_Node0 -- No --> E_UpdateCargotoManualReleaseStatus
processing"}:::decision N_UpdateCargotoManualReleaseStatus_Node0_action["Update cargo status to manual
release MRL and set manual release
indicators"]:::main N_UpdateCargotoManualReleaseStatus_Node0 -- Yes --> N_UpdateCargotoManualReleaseStatus_Node0_action N_UpdateCargotoManualReleaseStatus_Node0_action --> E_UpdateCargotoManualReleaseStatus S_UpdateCargotoManualReleaseStatus --> N_UpdateCargotoManualReleaseStatus_Node0 N_UpdateCargotoManualReleaseStatus_Node0 -- No --> E_UpdateCargotoManualReleaseStatus
File: GCX016.cbl
GIVEN:
Current cargo status has been saved
WHEN:
The system applies manual release processing
THEN:
Update cargo status to manual release (MRL) and set manual release indicators
β Consolidated Acceptance Criteria
- The system searches for Canadian manifest coordination → search Canadian manifest records using car ID and waybill number to find matching records
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SearchforCanadianManifestMatch(["Start Step"])
E_SearchforCanadianManifestMatch(["End Step"])
N_SearchforCanadianManifestMatch_Node0{"The system searches for Canadian
manifest coordination"}:::decision N_SearchforCanadianManifestMatch_Node0_action["Search Canadian manifest records
using car ID and waybill number to
find matching records"]:::main N_SearchforCanadianManifestMatch_Node0 -- Yes --> N_SearchforCanadianManifestMatch_Node0_action N_SearchforCanadianManifestMatch_Node0_action --> E_SearchforCanadianManifestMatch S_SearchforCanadianManifestMatch --> N_SearchforCanadianManifestMatch_Node0 N_SearchforCanadianManifestMatch_Node0 -- No --> E_SearchforCanadianManifestMatch
manifest coordination"}:::decision N_SearchforCanadianManifestMatch_Node0_action["Search Canadian manifest records
using car ID and waybill number to
find matching records"]:::main N_SearchforCanadianManifestMatch_Node0 -- Yes --> N_SearchforCanadianManifestMatch_Node0_action N_SearchforCanadianManifestMatch_Node0_action --> E_SearchforCanadianManifestMatch S_SearchforCanadianManifestMatch --> N_SearchforCanadianManifestMatch_Node0 N_SearchforCanadianManifestMatch_Node0 -- No --> E_SearchforCanadianManifestMatch
File: GCX016.cbl
GIVEN:
Cargo has been updated to manual release status
WHEN:
The system searches for Canadian manifest coordination
THEN:
- Search canadian manifest records using car id
- Waybill number to find matching records
β Consolidated Acceptance Criteria
- The system finalizes manual release processing → restore the preserved cargo status information while maintaining manual release indicators
- The system needs to restore cargo status information → previously saved cargo status information is restored to the cargo record
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RestoreCargoStatusInformation(["Start Step"])
E_RestoreCargoStatusInformation(["End Step"])
N_RestoreCargoStatusInformation_Node0{"The system finalizes manual release
processing"}:::decision N_RestoreCargoStatusInformation_Node0_action["Restore the preserved cargo status
information while maintaining manual
release indicators"]:::main N_RestoreCargoStatusInformation_Node0 -- Yes --> N_RestoreCargoStatusInformation_Node0_action N_RestoreCargoStatusInformation_Node0_action --> E_RestoreCargoStatusInformation S_RestoreCargoStatusInformation --> N_RestoreCargoStatusInformation_Node0 N_RestoreCargoStatusInformation_Node1{"The system needs to restore cargo
status information"}:::decision N_RestoreCargoStatusInformation_Node1_action["Previously saved cargo status
information is restored to the cargo
record"]:::main N_RestoreCargoStatusInformation_Node1 -- Yes --> N_RestoreCargoStatusInformation_Node1_action N_RestoreCargoStatusInformation_Node1_action --> E_RestoreCargoStatusInformation N_RestoreCargoStatusInformation_Node0 -- No --> N_RestoreCargoStatusInformation_Node1 N_RestoreCargoStatusInformation_Node1 -- No --> E_RestoreCargoStatusInformation
processing"}:::decision N_RestoreCargoStatusInformation_Node0_action["Restore the preserved cargo status
information while maintaining manual
release indicators"]:::main N_RestoreCargoStatusInformation_Node0 -- Yes --> N_RestoreCargoStatusInformation_Node0_action N_RestoreCargoStatusInformation_Node0_action --> E_RestoreCargoStatusInformation S_RestoreCargoStatusInformation --> N_RestoreCargoStatusInformation_Node0 N_RestoreCargoStatusInformation_Node1{"The system needs to restore cargo
status information"}:::decision N_RestoreCargoStatusInformation_Node1_action["Previously saved cargo status
information is restored to the cargo
record"]:::main N_RestoreCargoStatusInformation_Node1 -- Yes --> N_RestoreCargoStatusInformation_Node1_action N_RestoreCargoStatusInformation_Node1_action --> E_RestoreCargoStatusInformation N_RestoreCargoStatusInformation_Node0 -- No --> N_RestoreCargoStatusInformation_Node1 N_RestoreCargoStatusInformation_Node1 -- No --> E_RestoreCargoStatusInformation
File: GCX016.cbl
GIVEN:
Canadian manifest processing is complete or no Canadian manifest was found
WHEN:
The system finalizes manual release processing
THEN:
Restore the preserved cargo status information while maintaining manual release indicators
File: GCX016.cbl
GIVEN:
Canadian manifest processing is complete or no Canadian manifest was found
WHEN:
The system needs to restore cargo status information
THEN:
Previously saved cargo status information is restored to the cargo record
β Consolidated Acceptance Criteria
- The system completes manual release processing → generate manual release notification messages to inform relevant parties of the cargo release
- The system completes manual release processing → notification messages are generated and sent to appropriate recipients regarding the manual release
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GenerateManualReleaseNotification(["Start Step"])
E_GenerateManualReleaseNotification(["End Step"])
N_GenerateManualReleaseNotification_Node0{"The system completes manual release
processing"}:::decision N_GenerateManualReleaseNotification_Node0_action["Generate manual release
notification messages to inform
relevant parties of the cargo
release"]:::main N_GenerateManualReleaseNotification_Node0 -- Yes --> N_GenerateManualReleaseNotification_Node0_action N_GenerateManualReleaseNotification_Node0_action --> E_GenerateManualReleaseNotification S_GenerateManualReleaseNotification --> N_GenerateManualReleaseNotification_Node0 N_GenerateManualReleaseNotification_Node1{"The system completes manual release
processing"}:::decision N_GenerateManualReleaseNotification_Node1_action["Notification messages are generated
and sent to appropriate recipients
regarding the manual release"]:::main N_GenerateManualReleaseNotification_Node1 -- Yes --> N_GenerateManualReleaseNotification_Node1_action N_GenerateManualReleaseNotification_Node1_action --> E_GenerateManualReleaseNotification N_GenerateManualReleaseNotification_Node0 -- No --> N_GenerateManualReleaseNotification_Node1 N_GenerateManualReleaseNotification_Node1 -- No --> E_GenerateManualReleaseNotification
processing"}:::decision N_GenerateManualReleaseNotification_Node0_action["Generate manual release
notification messages to inform
relevant parties of the cargo
release"]:::main N_GenerateManualReleaseNotification_Node0 -- Yes --> N_GenerateManualReleaseNotification_Node0_action N_GenerateManualReleaseNotification_Node0_action --> E_GenerateManualReleaseNotification S_GenerateManualReleaseNotification --> N_GenerateManualReleaseNotification_Node0 N_GenerateManualReleaseNotification_Node1{"The system completes manual release
processing"}:::decision N_GenerateManualReleaseNotification_Node1_action["Notification messages are generated
and sent to appropriate recipients
regarding the manual release"]:::main N_GenerateManualReleaseNotification_Node1 -- Yes --> N_GenerateManualReleaseNotification_Node1_action N_GenerateManualReleaseNotification_Node1_action --> E_GenerateManualReleaseNotification N_GenerateManualReleaseNotification_Node0 -- No --> N_GenerateManualReleaseNotification_Node1 N_GenerateManualReleaseNotification_Node1 -- No --> E_GenerateManualReleaseNotification
File: GCX016.cbl
GIVEN:
Cargo status information has been restored
WHEN:
The system completes manual release processing
THEN:
Generate manual release notification messages to inform relevant parties of the cargo release
File: GCX016.cbl
GIVEN:
Cargo record has been updated with manual release status
WHEN:
The system completes manual release processing
THEN:
- Notification messages are generated
- Sent to appropriate recipients regarding the manual release
β Consolidated Acceptance Criteria
- All manual release processing steps are completed successfully → confirm manual release completion and return success status
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ManualReleaseComplete(["Start Step"])
E_ManualReleaseComplete(["End Step"])
N_ManualReleaseComplete_Node0{"All manual release processing steps
are completed successfully"}:::decision N_ManualReleaseComplete_Node0_action["Confirm manual release completion
and return success status"]:::main N_ManualReleaseComplete_Node0 -- Yes --> N_ManualReleaseComplete_Node0_action N_ManualReleaseComplete_Node0_action --> E_ManualReleaseComplete S_ManualReleaseComplete --> N_ManualReleaseComplete_Node0 N_ManualReleaseComplete_Node0 -- No --> E_ManualReleaseComplete
are completed successfully"}:::decision N_ManualReleaseComplete_Node0_action["Confirm manual release completion
and return success status"]:::main N_ManualReleaseComplete_Node0 -- Yes --> N_ManualReleaseComplete_Node0_action N_ManualReleaseComplete_Node0_action --> E_ManualReleaseComplete S_ManualReleaseComplete --> N_ManualReleaseComplete_Node0 N_ManualReleaseComplete_Node0 -- No --> E_ManualReleaseComplete
File: GCX016.cbl
GIVEN:
Cargo record has been updated in database
WHEN:
All manual release processing steps are completed successfully
THEN:
- Confirm manual release completion
- Return success status
β Consolidated Acceptance Criteria
- The system determines manual release cannot be processed → reject the manual release request and return appropriate error status without modifying cargo
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ManualReleaseRejected(["Start Step"])
E_ManualReleaseRejected(["End Step"])
N_ManualReleaseRejected_Node0{"The system determines manual
release cannot be processed"}:::decision N_ManualReleaseRejected_Node0_action["Reject the manual release request
and return appropriate error status
without modifying cargo"]:::exclusion N_ManualReleaseRejected_Node0 -- Yes -->|Alternative| N_ManualReleaseRejected_Node0_action N_ManualReleaseRejected_Node0_action --> E_ManualReleaseRejected S_ManualReleaseRejected --> N_ManualReleaseRejected_Node0 N_ManualReleaseRejected_Node0 -- No --> E_ManualReleaseRejected
release cannot be processed"}:::decision N_ManualReleaseRejected_Node0_action["Reject the manual release request
and return appropriate error status
without modifying cargo"]:::exclusion N_ManualReleaseRejected_Node0 -- Yes -->|Alternative| N_ManualReleaseRejected_Node0_action N_ManualReleaseRejected_Node0_action --> E_ManualReleaseRejected S_ManualReleaseRejected --> N_ManualReleaseRejected_Node0 N_ManualReleaseRejected_Node0 -- No --> E_ManualReleaseRejected
File: GCX016.cbl
GIVEN:
Manual release request fails validation or authorization
WHEN:
The system determines manual release cannot be processed
THEN:
- Reject the manual release request
- Return appropriate error status without modifying cargo
β Consolidated Acceptance Criteria
- The system retrieves Canadian cargo records by waybill → only active Canadian cargo records are returned, excluding deleted records and new bond created records
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RetrieveCanadianCargoRecords(["Start Step"])
E_RetrieveCanadianCargoRecords(["End Step"])
N_RetrieveCanadianCargoRecords_Node0{"The system retrieves Canadian cargo
records by waybill"}:::decision N_RetrieveCanadianCargoRecords_Node0_action["Only active Canadian cargo records
are returned, excluding deleted
records and new bond created records"]:::main N_RetrieveCanadianCargoRecords_Node0 -- Yes --> N_RetrieveCanadianCargoRecords_Node0_action N_RetrieveCanadianCargoRecords_Node0_action --> E_RetrieveCanadianCargoRecords S_RetrieveCanadianCargoRecords --> N_RetrieveCanadianCargoRecords_Node0 N_RetrieveCanadianCargoRecords_Node0 -- No --> E_RetrieveCanadianCargoRecords
records by waybill"}:::decision N_RetrieveCanadianCargoRecords_Node0_action["Only active Canadian cargo records
are returned, excluding deleted
records and new bond created records"]:::main N_RetrieveCanadianCargoRecords_Node0 -- Yes --> N_RetrieveCanadianCargoRecords_Node0_action N_RetrieveCanadianCargoRecords_Node0_action --> E_RetrieveCanadianCargoRecords S_RetrieveCanadianCargoRecords --> N_RetrieveCanadianCargoRecords_Node0 N_RetrieveCanadianCargoRecords_Node0 -- No --> E_RetrieveCanadianCargoRecords
File: GCX016.cbl
GIVEN:
A search for Canadian manifests has been initiated
WHEN:
The system retrieves Canadian cargo records by waybill
THEN:
- Only active canadian cargo records are returned, excluding deleted records
- New bond created records
β Consolidated Acceptance Criteria
- The system validates matching criteria between US and Canadian cargo → a match is confirmed if Canadian cargo exists and meets validation criteria, otherwise no match is found
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MatchingCanadianManifestFound(["Start Step"])
E_MatchingCanadianManifestFound(["End Step"])
N_MatchingCanadianManifestFound_Node0{"The system validates matching
criteria between US and Canadian
cargo"}:::decision N_MatchingCanadianManifestFound_Node0_action["A match is confirmed if Canadian
cargo exists and meets validation
criteria, otherwise no match is
found"]:::main N_MatchingCanadianManifestFound_Node0 -- Yes --> N_MatchingCanadianManifestFound_Node0_action N_MatchingCanadianManifestFound_Node0_action --> E_MatchingCanadianManifestFound S_MatchingCanadianManifestFound --> N_MatchingCanadianManifestFound_Node0 N_MatchingCanadianManifestFound_Node0 -- No --> E_MatchingCanadianManifestFound
criteria between US and Canadian
cargo"}:::decision N_MatchingCanadianManifestFound_Node0_action["A match is confirmed if Canadian
cargo exists and meets validation
criteria, otherwise no match is
found"]:::main N_MatchingCanadianManifestFound_Node0 -- Yes --> N_MatchingCanadianManifestFound_Node0_action N_MatchingCanadianManifestFound_Node0_action --> E_MatchingCanadianManifestFound S_MatchingCanadianManifestFound --> N_MatchingCanadianManifestFound_Node0 N_MatchingCanadianManifestFound_Node0 -- No --> E_MatchingCanadianManifestFound
File: GCX016.cbl
GIVEN:
Canadian cargo records have been retrieved from the database
WHEN:
- The system validates matching criteria between us
- Canadian cargo
THEN:
- A match is confirmed if canadian cargo exists
- Meets validation criteria, otherwise no match is found
β Consolidated Acceptance Criteria
- The system creates an audit trail for the Canadian system → a complete audit record is generated documenting the cross-border cargo coordination, including timestamps, cargo details, and system integration information
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CreateAuditTrailforCanadianSystem(["Start Step"])
E_CreateAuditTrailforCanadianSystem(["End Step"])
N_CreateAuditTrailforCanadianSystem_Node0{"The system creates an audit trail
for the Canadian system"}:::decision N_CreateAuditTrailforCanadianSystem_Node0_action["A complete audit record is
generated documenting the
cross-border cargo coordination,
including timestamps, cargo details,
and system integration information"]:::main N_CreateAuditTrailforCanadianSystem_Node0 -- Yes --> N_CreateAuditTrailforCanadianSystem_Node0_action N_CreateAuditTrailforCanadianSystem_Node0_action --> E_CreateAuditTrailforCanadianSystem S_CreateAuditTrailforCanadianSystem --> N_CreateAuditTrailforCanadianSystem_Node0 N_CreateAuditTrailforCanadianSystem_Node0 -- No --> E_CreateAuditTrailforCanadianSystem
for the Canadian system"}:::decision N_CreateAuditTrailforCanadianSystem_Node0_action["A complete audit record is
generated documenting the
cross-border cargo coordination,
including timestamps, cargo details,
and system integration information"]:::main N_CreateAuditTrailforCanadianSystem_Node0 -- Yes --> N_CreateAuditTrailforCanadianSystem_Node0_action N_CreateAuditTrailforCanadianSystem_Node0_action --> E_CreateAuditTrailforCanadianSystem S_CreateAuditTrailforCanadianSystem --> N_CreateAuditTrailforCanadianSystem_Node0 N_CreateAuditTrailforCanadianSystem_Node0 -- No --> E_CreateAuditTrailforCanadianSystem
File: GCX016.cbl
GIVEN:
Canadian manifest status has been updated for cross-border coordination
WHEN:
The system creates an audit trail for the Canadian system
THEN:
A complete audit record is generated documenting the cross-border cargo coordination, including timestamps, cargo details, and system integration information
β Consolidated Acceptance Criteria
- The system initiates Canadian manifest search process → the equipment ID is extracted from the US cargo record for database query purposes
- The system needs to coordinate with Canadian cargo systems → the equipment ID (car initial and car number) is extracted from the US cargo record for cross-reference lookup
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExtractEquipmentIDfromUSCargo(["Start Step"])
E_ExtractEquipmentIDfromUSCargo(["End Step"])
N_ExtractEquipmentIDfromUSCargo_Node0{"The system initiates Canadian
manifest search process"}:::decision N_ExtractEquipmentIDfromUSCargo_Node0_action["The equipment ID is extracted from
the US cargo record for database
query purposes"]:::main N_ExtractEquipmentIDfromUSCargo_Node0 -- Yes --> N_ExtractEquipmentIDfromUSCargo_Node0_action N_ExtractEquipmentIDfromUSCargo_Node0_action --> E_ExtractEquipmentIDfromUSCargo S_ExtractEquipmentIDfromUSCargo --> N_ExtractEquipmentIDfromUSCargo_Node0 N_ExtractEquipmentIDfromUSCargo_Node1{"The system needs to coordinate with
Canadian cargo systems"}:::decision N_ExtractEquipmentIDfromUSCargo_Node1_action["The equipment ID car initial and
car number is extracted from the US
cargo record for cross-reference
lookup"]:::main N_ExtractEquipmentIDfromUSCargo_Node1 -- Yes --> N_ExtractEquipmentIDfromUSCargo_Node1_action N_ExtractEquipmentIDfromUSCargo_Node1_action --> E_ExtractEquipmentIDfromUSCargo N_ExtractEquipmentIDfromUSCargo_Node0 -- No --> N_ExtractEquipmentIDfromUSCargo_Node1 N_ExtractEquipmentIDfromUSCargo_Node1 -- No --> E_ExtractEquipmentIDfromUSCargo
manifest search process"}:::decision N_ExtractEquipmentIDfromUSCargo_Node0_action["The equipment ID is extracted from
the US cargo record for database
query purposes"]:::main N_ExtractEquipmentIDfromUSCargo_Node0 -- Yes --> N_ExtractEquipmentIDfromUSCargo_Node0_action N_ExtractEquipmentIDfromUSCargo_Node0_action --> E_ExtractEquipmentIDfromUSCargo S_ExtractEquipmentIDfromUSCargo --> N_ExtractEquipmentIDfromUSCargo_Node0 N_ExtractEquipmentIDfromUSCargo_Node1{"The system needs to coordinate with
Canadian cargo systems"}:::decision N_ExtractEquipmentIDfromUSCargo_Node1_action["The equipment ID car initial and
car number is extracted from the US
cargo record for cross-reference
lookup"]:::main N_ExtractEquipmentIDfromUSCargo_Node1 -- Yes --> N_ExtractEquipmentIDfromUSCargo_Node1_action N_ExtractEquipmentIDfromUSCargo_Node1_action --> E_ExtractEquipmentIDfromUSCargo N_ExtractEquipmentIDfromUSCargo_Node0 -- No --> N_ExtractEquipmentIDfromUSCargo_Node1 N_ExtractEquipmentIDfromUSCargo_Node1 -- No --> E_ExtractEquipmentIDfromUSCargo
File: GCX016.cbl
GIVEN:
A US cargo record exists with equipment information
WHEN:
The system initiates Canadian manifest search process
THEN:
The equipment ID is extracted from the US cargo record for database query purposes
File: GCX016.cbl
GIVEN:
A US cargo release request is being processed
WHEN:
The system needs to coordinate with Canadian cargo systems
THEN:
- The equipment id (car initial
- Car number) is extracted from the us cargo record for cross-reference lookup
β Consolidated Acceptance Criteria
- The system queries the Canadian cargo database → all Canadian cargo records matching the equipment ID are retrieved from the database
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_QueryCanadianCargoDatabase(["Start Step"])
E_QueryCanadianCargoDatabase(["End Step"])
N_QueryCanadianCargoDatabase_Node0{"The system queries the Canadian
cargo database"}:::decision N_QueryCanadianCargoDatabase_Node0_action["All Canadian cargo records matching
the equipment ID are retrieved from
the database"]:::main N_QueryCanadianCargoDatabase_Node0 -- Yes --> N_QueryCanadianCargoDatabase_Node0_action N_QueryCanadianCargoDatabase_Node0_action --> E_QueryCanadianCargoDatabase S_QueryCanadianCargoDatabase --> N_QueryCanadianCargoDatabase_Node0 N_QueryCanadianCargoDatabase_Node0 -- No --> E_QueryCanadianCargoDatabase
cargo database"}:::decision N_QueryCanadianCargoDatabase_Node0_action["All Canadian cargo records matching
the equipment ID are retrieved from
the database"]:::main N_QueryCanadianCargoDatabase_Node0 -- Yes --> N_QueryCanadianCargoDatabase_Node0_action N_QueryCanadianCargoDatabase_Node0_action --> E_QueryCanadianCargoDatabase S_QueryCanadianCargoDatabase --> N_QueryCanadianCargoDatabase_Node0 N_QueryCanadianCargoDatabase_Node0 -- No --> E_QueryCanadianCargoDatabase
File: GCX016.cbl
GIVEN:
An equipment ID has been extracted from US cargo record
WHEN:
The system queries the Canadian cargo database
THEN:
All Canadian cargo records matching the equipment ID are retrieved from the database
β Consolidated Acceptance Criteria
- If the query results → if Canadian records are found, proceed to record validation, otherwise check for more equipment IDs to process
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CanadianRecordFound(["Start Step"])
E_CanadianRecordFound(["End Step"])
N_CanadianRecordFound_Node0{"The system evaluates the query
results"}:::decision N_CanadianRecordFound_Node0_action["If Canadian records are found,
proceed to record validation,
otherwise check for more equipment
IDs to process"]:::main N_CanadianRecordFound_Node0 -- Yes --> N_CanadianRecordFound_Node0_action N_CanadianRecordFound_Node0_action --> E_CanadianRecordFound S_CanadianRecordFound --> N_CanadianRecordFound_Node0 N_CanadianRecordFound_Node0 -- No --> E_CanadianRecordFound
results"}:::decision N_CanadianRecordFound_Node0_action["If Canadian records are found,
proceed to record validation,
otherwise check for more equipment
IDs to process"]:::main N_CanadianRecordFound_Node0 -- Yes --> N_CanadianRecordFound_Node0_action N_CanadianRecordFound_Node0_action --> E_CanadianRecordFound S_CanadianRecordFound --> N_CanadianRecordFound_Node0 N_CanadianRecordFound_Node0 -- No --> E_CanadianRecordFound
File: GCX016.cbl
GIVEN:
A query has been executed against the Canadian cargo database
WHEN:
The system evaluates the query results
THEN:
If Canadian records are found, proceed to record validation, otherwise check for more equipment IDs to process
β Consolidated Acceptance Criteria
- The system validates each record's status → record status is checked against valid status criteria for further processing eligibility
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ValidateRecordStatus(["Start Step"])
E_ValidateRecordStatus(["End Step"])
N_ValidateRecordStatus_Node0{"The system validates each record s
status"}:::decision N_ValidateRecordStatus_Node0_action["Record status is checked against
valid status criteria for further
processing eligibility"]:::main N_ValidateRecordStatus_Node0 -- Yes --> N_ValidateRecordStatus_Node0_action N_ValidateRecordStatus_Node0_action --> E_ValidateRecordStatus S_ValidateRecordStatus --> N_ValidateRecordStatus_Node0 N_ValidateRecordStatus_Node0 -- No --> E_ValidateRecordStatus
status"}:::decision N_ValidateRecordStatus_Node0_action["Record status is checked against
valid status criteria for further
processing eligibility"]:::main N_ValidateRecordStatus_Node0 -- Yes --> N_ValidateRecordStatus_Node0_action N_ValidateRecordStatus_Node0_action --> E_ValidateRecordStatus S_ValidateRecordStatus --> N_ValidateRecordStatus_Node0 N_ValidateRecordStatus_Node0 -- No --> E_ValidateRecordStatus
File: GCX016.cbl
GIVEN:
Canadian cargo records have been found for the equipment ID
WHEN:
The system validates each record's status
THEN:
Record status is checked against valid status criteria for further processing eligibility
β Consolidated Acceptance Criteria
- The system determines record validity → if record status is valid, proceed to usability check, otherwise skip to next equipment ID processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RecordStatusValid(["Start Step"])
E_RecordStatusValid(["End Step"])
N_RecordStatusValid_Node0{"The system determines record
validity"}:::decision N_RecordStatusValid_Node0_action["If record status is valid, proceed
to usability check, otherwise skip
to next equipment ID processing"]:::main N_RecordStatusValid_Node0 -- Yes --> N_RecordStatusValid_Node0_action N_RecordStatusValid_Node0_action --> E_RecordStatusValid S_RecordStatusValid --> N_RecordStatusValid_Node0 N_RecordStatusValid_Node0 -- No --> E_RecordStatusValid
validity"}:::decision N_RecordStatusValid_Node0_action["If record status is valid, proceed
to usability check, otherwise skip
to next equipment ID processing"]:::main N_RecordStatusValid_Node0 -- Yes --> N_RecordStatusValid_Node0_action N_RecordStatusValid_Node0_action --> E_RecordStatusValid S_RecordStatusValid --> N_RecordStatusValid_Node0 N_RecordStatusValid_Node0 -- No --> E_RecordStatusValid
File: GCX016.cbl
GIVEN:
A Canadian cargo record status has been validated
WHEN:
The system determines record validity
THEN:
If record status is valid, proceed to usability check, otherwise skip to next equipment ID processing
β Consolidated Acceptance Criteria
- The system checks record usability criteria → record is evaluated against usability requirements including deletion status and bond creation flags
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CheckRecordUsability(["Start Step"])
E_CheckRecordUsability(["End Step"])
N_CheckRecordUsability_Node0{"The system checks record usability
criteria"}:::decision N_CheckRecordUsability_Node0_action["Record is evaluated against
usability requirements including
deletion status and bond creation
flags"]:::main N_CheckRecordUsability_Node0 -- Yes --> N_CheckRecordUsability_Node0_action N_CheckRecordUsability_Node0_action --> E_CheckRecordUsability S_CheckRecordUsability --> N_CheckRecordUsability_Node0 N_CheckRecordUsability_Node0 -- No --> E_CheckRecordUsability
criteria"}:::decision N_CheckRecordUsability_Node0_action["Record is evaluated against
usability requirements including
deletion status and bond creation
flags"]:::main N_CheckRecordUsability_Node0 -- Yes --> N_CheckRecordUsability_Node0_action N_CheckRecordUsability_Node0_action --> E_CheckRecordUsability S_CheckRecordUsability --> N_CheckRecordUsability_Node0 N_CheckRecordUsability_Node0 -- No --> E_CheckRecordUsability
File: GCX016.cbl
GIVEN:
A Canadian cargo record has valid status
WHEN:
The system checks record usability criteria
THEN:
- Record is evaluated against usability requirements including deletion status
- Bond creation flags
β Consolidated Acceptance Criteria
- If usability criteria → if record is usable, add to matching records list, otherwise proceed to check for more equipment IDs
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RecordUsable(["Start Step"])
E_RecordUsable(["End Step"])
N_RecordUsable_Node0{"The system evaluates usability
criteria"}:::decision N_RecordUsable_Node0_action["If record is usable, add to
matching records list, otherwise
proceed to check for more equipment
IDs"]:::main N_RecordUsable_Node0 -- Yes --> N_RecordUsable_Node0_action N_RecordUsable_Node0_action --> E_RecordUsable S_RecordUsable --> N_RecordUsable_Node0 N_RecordUsable_Node0 -- No --> E_RecordUsable
criteria"}:::decision N_RecordUsable_Node0_action["If record is usable, add to
matching records list, otherwise
proceed to check for more equipment
IDs"]:::main N_RecordUsable_Node0 -- Yes --> N_RecordUsable_Node0_action N_RecordUsable_Node0_action --> E_RecordUsable S_RecordUsable --> N_RecordUsable_Node0 N_RecordUsable_Node0 -- No --> E_RecordUsable
File: GCX016.cbl
GIVEN:
A Canadian cargo record has been checked for usability
WHEN:
The system evaluates usability criteria
THEN:
If record is usable, add to matching records list, otherwise proceed to check for more equipment IDs
β Consolidated Acceptance Criteria
- The system processes the matching record → the Canadian cargo record is added to the collection of matching manifests for further processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AddtoMatchingRecordsList(["Start Step"])
E_AddtoMatchingRecordsList(["End Step"])
N_AddtoMatchingRecordsList_Node0{"The system processes the matching
record"}:::decision N_AddtoMatchingRecordsList_Node0_action["The Canadian cargo record is added
to the collection of matching
manifests for further processing"]:::main N_AddtoMatchingRecordsList_Node0 -- Yes --> N_AddtoMatchingRecordsList_Node0_action N_AddtoMatchingRecordsList_Node0_action --> E_AddtoMatchingRecordsList S_AddtoMatchingRecordsList --> N_AddtoMatchingRecordsList_Node0 N_AddtoMatchingRecordsList_Node0 -- No --> E_AddtoMatchingRecordsList
record"}:::decision N_AddtoMatchingRecordsList_Node0_action["The Canadian cargo record is added
to the collection of matching
manifests for further processing"]:::main N_AddtoMatchingRecordsList_Node0 -- Yes --> N_AddtoMatchingRecordsList_Node0_action N_AddtoMatchingRecordsList_Node0_action --> E_AddtoMatchingRecordsList S_AddtoMatchingRecordsList --> N_AddtoMatchingRecordsList_Node0 N_AddtoMatchingRecordsList_Node0 -- No --> E_AddtoMatchingRecordsList
File: GCX016.cbl
GIVEN:
A Canadian cargo record is determined to be valid and usable
WHEN:
The system processes the matching record
THEN:
The Canadian cargo record is added to the collection of matching manifests for further processing
β Consolidated Acceptance Criteria
- The system checks for additional equipment IDs to process → if more equipment IDs exist, return to equipment ID extraction, otherwise proceed to return matching results
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MoreEquipmentIDs(["Start Step"])
E_MoreEquipmentIDs(["End Step"])
N_MoreEquipmentIDs_Node0{"The system checks for additional
equipment IDs to process"}:::decision N_MoreEquipmentIDs_Node0_action["If more equipment IDs exist, return
to equipment ID extraction,
otherwise proceed to return matching
results"]:::main N_MoreEquipmentIDs_Node0 -- Yes --> N_MoreEquipmentIDs_Node0_action N_MoreEquipmentIDs_Node0_action --> E_MoreEquipmentIDs S_MoreEquipmentIDs --> N_MoreEquipmentIDs_Node0 N_MoreEquipmentIDs_Node0 -- No --> E_MoreEquipmentIDs
equipment IDs to process"}:::decision N_MoreEquipmentIDs_Node0_action["If more equipment IDs exist, return
to equipment ID extraction,
otherwise proceed to return matching
results"]:::main N_MoreEquipmentIDs_Node0 -- Yes --> N_MoreEquipmentIDs_Node0_action N_MoreEquipmentIDs_Node0_action --> E_MoreEquipmentIDs S_MoreEquipmentIDs --> N_MoreEquipmentIDs_Node0 N_MoreEquipmentIDs_Node0 -- No --> E_MoreEquipmentIDs
File: GCX016.cbl
GIVEN:
Processing has completed for current equipment ID
WHEN:
The system checks for additional equipment IDs to process
THEN:
If more equipment IDs exist, return to equipment ID extraction, otherwise proceed to return matching results
β Consolidated Acceptance Criteria
- The system completes the search process → all matching Canadian cargo records are returned for cross-border cargo coordination
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ReturnMatchingCanadianManifests(["Start Step"])
E_ReturnMatchingCanadianManifests(["End Step"])
N_ReturnMatchingCanadianManifests_Node0{"The system completes the search
process"}:::decision N_ReturnMatchingCanadianManifests_Node0_action["All matching Canadian cargo records
are returned for cross-border cargo
coordination"]:::main N_ReturnMatchingCanadianManifests_Node0 -- Yes --> N_ReturnMatchingCanadianManifests_Node0_action N_ReturnMatchingCanadianManifests_Node0_action --> E_ReturnMatchingCanadianManifests S_ReturnMatchingCanadianManifests --> N_ReturnMatchingCanadianManifests_Node0 N_ReturnMatchingCanadianManifests_Node0 -- No --> E_ReturnMatchingCanadianManifests
process"}:::decision N_ReturnMatchingCanadianManifests_Node0_action["All matching Canadian cargo records
are returned for cross-border cargo
coordination"]:::main N_ReturnMatchingCanadianManifests_Node0 -- Yes --> N_ReturnMatchingCanadianManifests_Node0_action N_ReturnMatchingCanadianManifests_Node0_action --> E_ReturnMatchingCanadianManifests S_ReturnMatchingCanadianManifests --> N_ReturnMatchingCanadianManifests_Node0 N_ReturnMatchingCanadianManifests_Node0 -- No --> E_ReturnMatchingCanadianManifests
File: GCX016.cbl
GIVEN:
All equipment IDs have been processed for Canadian manifest matching
WHEN:
The system completes the search process
THEN:
All matching Canadian cargo records are returned for cross-border cargo coordination
β Consolidated Acceptance Criteria
- The system completes the database search → an empty result set is prepared for return to indicate no matching Canadian manifests were found
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_NoMatchingRecordsFound(["Start Step"])
E_NoMatchingRecordsFound(["End Step"])
N_NoMatchingRecordsFound_Node0{"The system completes the database
search"}:::decision N_NoMatchingRecordsFound_Node0_action["An empty result set is prepared for
return to indicate no matching
Canadian manifests were found"]:::main N_NoMatchingRecordsFound_Node0 -- Yes --> N_NoMatchingRecordsFound_Node0_action N_NoMatchingRecordsFound_Node0_action --> E_NoMatchingRecordsFound S_NoMatchingRecordsFound --> N_NoMatchingRecordsFound_Node0 N_NoMatchingRecordsFound_Node0 -- No --> E_NoMatchingRecordsFound
search"}:::decision N_NoMatchingRecordsFound_Node0_action["An empty result set is prepared for
return to indicate no matching
Canadian manifests were found"]:::main N_NoMatchingRecordsFound_Node0 -- Yes --> N_NoMatchingRecordsFound_Node0_action N_NoMatchingRecordsFound_Node0_action --> E_NoMatchingRecordsFound S_NoMatchingRecordsFound --> N_NoMatchingRecordsFound_Node0 N_NoMatchingRecordsFound_Node0 -- No --> E_NoMatchingRecordsFound
File: GCX016.cbl
GIVEN:
No Canadian cargo records are found for any equipment ID
WHEN:
The system completes the database search
THEN:
An empty result set is prepared for return to indicate no matching Canadian manifests were found
β Consolidated Acceptance Criteria
- The system prepares the search parameters → the equipment ID is formatted according to database requirements
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_FormatEquipmentIDforSearch(["Start Step"])
E_FormatEquipmentIDforSearch(["End Step"])
N_FormatEquipmentIDforSearch_Node0{"The system prepares the search
parameters"}:::decision N_FormatEquipmentIDforSearch_Node0_action["The equipment ID is formatted
according to database requirements"]:::main N_FormatEquipmentIDforSearch_Node0 -- Yes --> N_FormatEquipmentIDforSearch_Node0_action N_FormatEquipmentIDforSearch_Node0_action --> E_FormatEquipmentIDforSearch S_FormatEquipmentIDforSearch --> N_FormatEquipmentIDforSearch_Node0 N_FormatEquipmentIDforSearch_Node0 -- No --> E_FormatEquipmentIDforSearch
parameters"}:::decision N_FormatEquipmentIDforSearch_Node0_action["The equipment ID is formatted
according to database requirements"]:::main N_FormatEquipmentIDforSearch_Node0 -- Yes --> N_FormatEquipmentIDforSearch_Node0_action N_FormatEquipmentIDforSearch_Node0_action --> E_FormatEquipmentIDforSearch S_FormatEquipmentIDforSearch --> N_FormatEquipmentIDforSearch_Node0 N_FormatEquipmentIDforSearch_Node0 -- No --> E_FormatEquipmentIDforSearch
File: GCX016.cbl
GIVEN:
An equipment ID needs to be used for Canadian cargo database search
WHEN:
The system prepares the search parameters
THEN:
The equipment ID is formatted according to database requirements
β Consolidated Acceptance Criteria
- The system executes the database query → the database is searched using equipment ID index for optimal performance
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExecuteDatabaseQuerywithEquipmentIDIndex(["Start Step"])
E_ExecuteDatabaseQuerywithEquipmentIDIndex(["End Step"])
N_ExecuteDatabaseQuerywithEquipmentIDIndex_Node0{"The system executes the database
query"}:::decision N_ExecuteDatabaseQuerywithEquipmentIDIndex_Node0_action["The database is searched using
equipment ID index for optimal
performance"]:::main N_ExecuteDatabaseQuerywithEquipmentIDIndex_Node0 -- Yes --> N_ExecuteDatabaseQuerywithEquipmentIDIndex_Node0_action N_ExecuteDatabaseQuerywithEquipmentIDIndex_Node0_action --> E_ExecuteDatabaseQuerywithEquipmentIDIndex S_ExecuteDatabaseQuerywithEquipmentIDIndex --> N_ExecuteDatabaseQuerywithEquipmentIDIndex_Node0 N_ExecuteDatabaseQuerywithEquipmentIDIndex_Node0 -- No --> E_ExecuteDatabaseQuerywithEquipmentIDIndex
query"}:::decision N_ExecuteDatabaseQuerywithEquipmentIDIndex_Node0_action["The database is searched using
equipment ID index for optimal
performance"]:::main N_ExecuteDatabaseQuerywithEquipmentIDIndex_Node0 -- Yes --> N_ExecuteDatabaseQuerywithEquipmentIDIndex_Node0_action N_ExecuteDatabaseQuerywithEquipmentIDIndex_Node0_action --> E_ExecuteDatabaseQuerywithEquipmentIDIndex S_ExecuteDatabaseQuerywithEquipmentIDIndex --> N_ExecuteDatabaseQuerywithEquipmentIDIndex_Node0 N_ExecuteDatabaseQuerywithEquipmentIDIndex_Node0 -- No --> E_ExecuteDatabaseQuerywithEquipmentIDIndex
File: GCX016.cbl
GIVEN:
A formatted equipment ID is available for search
WHEN:
The system executes the database query
THEN:
The database is searched using equipment ID index for optimal performance
β Consolidated Acceptance Criteria
- The system checks if the record is valid and active → the record is classified as either valid and active or invalid/inactive
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RecordValidandActive(["Start Step"])
E_RecordValidandActive(["End Step"])
N_RecordValidandActive_Node0{"The system checks if the record is
valid and active"}:::decision N_RecordValidandActive_Node0_action["The record is classified as either
valid and active or invalidinactive"]:::main N_RecordValidandActive_Node0 -- Yes --> N_RecordValidandActive_Node0_action N_RecordValidandActive_Node0_action --> E_RecordValidandActive S_RecordValidandActive --> N_RecordValidandActive_Node0 N_RecordValidandActive_Node0 -- No --> E_RecordValidandActive
valid and active"}:::decision N_RecordValidandActive_Node0_action["The record is classified as either
valid and active or invalidinactive"]:::main N_RecordValidandActive_Node0 -- Yes --> N_RecordValidandActive_Node0_action N_RecordValidandActive_Node0_action --> E_RecordValidandActive S_RecordValidandActive --> N_RecordValidandActive_Node0 N_RecordValidandActive_Node0 -- No --> E_RecordValidandActive
File: GCX016.cbl
GIVEN:
A Canadian cargo record status has been validated
WHEN:
- The system checks if the record is valid
- Active
THEN:
- The record is classified as either valid
- Active or invalid/inactive
β Consolidated Acceptance Criteria
- The system processes the successful match → the valid Canadian cargo record is returned for further processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ReturnCanadianCargoRecord(["Start Step"])
E_ReturnCanadianCargoRecord(["End Step"])
N_ReturnCanadianCargoRecord_Node0{"The system processes the successful
match"}:::decision N_ReturnCanadianCargoRecord_Node0_action["The valid Canadian cargo record is
returned for further processing"]:::main N_ReturnCanadianCargoRecord_Node0 -- Yes --> N_ReturnCanadianCargoRecord_Node0_action N_ReturnCanadianCargoRecord_Node0_action --> E_ReturnCanadianCargoRecord S_ReturnCanadianCargoRecord --> N_ReturnCanadianCargoRecord_Node0 N_ReturnCanadianCargoRecord_Node0 -- No --> E_ReturnCanadianCargoRecord
match"}:::decision N_ReturnCanadianCargoRecord_Node0_action["The valid Canadian cargo record is
returned for further processing"]:::main N_ReturnCanadianCargoRecord_Node0 -- Yes --> N_ReturnCanadianCargoRecord_Node0_action N_ReturnCanadianCargoRecord_Node0_action --> E_ReturnCanadianCargoRecord S_ReturnCanadianCargoRecord --> N_ReturnCanadianCargoRecord_Node0 N_ReturnCanadianCargoRecord_Node0 -- No --> E_ReturnCanadianCargoRecord
File: GCX016.cbl
GIVEN:
A Canadian cargo record is determined to be valid and active
WHEN:
The system processes the successful match
THEN:
The valid Canadian cargo record is returned for further processing
β Consolidated Acceptance Criteria
- The system completes the successful match process → the equipment ID match success is logged for audit trail
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogEquipmentIDMatchSuccess(["Start Step"])
E_LogEquipmentIDMatchSuccess(["End Step"])
N_LogEquipmentIDMatchSuccess_Node0{"The system completes the successful
match process"}:::decision N_LogEquipmentIDMatchSuccess_Node0_action["The equipment ID match success is
logged for audit trail"]:::main N_LogEquipmentIDMatchSuccess_Node0 -- Yes --> N_LogEquipmentIDMatchSuccess_Node0_action N_LogEquipmentIDMatchSuccess_Node0_action --> E_LogEquipmentIDMatchSuccess S_LogEquipmentIDMatchSuccess --> N_LogEquipmentIDMatchSuccess_Node0 N_LogEquipmentIDMatchSuccess_Node0 -- No --> E_LogEquipmentIDMatchSuccess
match process"}:::decision N_LogEquipmentIDMatchSuccess_Node0_action["The equipment ID match success is
logged for audit trail"]:::main N_LogEquipmentIDMatchSuccess_Node0 -- Yes --> N_LogEquipmentIDMatchSuccess_Node0_action N_LogEquipmentIDMatchSuccess_Node0_action --> E_LogEquipmentIDMatchSuccess S_LogEquipmentIDMatchSuccess --> N_LogEquipmentIDMatchSuccess_Node0 N_LogEquipmentIDMatchSuccess_Node0 -- No --> E_LogEquipmentIDMatchSuccess
File: GCX016.cbl
GIVEN:
A valid Canadian cargo record has been successfully retrieved
WHEN:
The system completes the successful match process
THEN:
The equipment ID match success is logged for audit trail
β Consolidated Acceptance Criteria
- If retry conditions → the system decides whether to attempt an alternate search method or terminate the search
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RetrySearch(["Start Step"])
E_RetrySearch(["End Step"])
N_RetrySearch_Node0{"The system evaluates retry
conditions"}:::decision N_RetrySearch_Node0_action["The system decides whether to
attempt an alternate search method
or terminate the search"]:::exclusion N_RetrySearch_Node0 -- Yes -->|Alternative| N_RetrySearch_Node0_action N_RetrySearch_Node0_action --> E_RetrySearch S_RetrySearch --> N_RetrySearch_Node0 N_RetrySearch_Node0 -- No --> E_RetrySearch
conditions"}:::decision N_RetrySearch_Node0_action["The system decides whether to
attempt an alternate search method
or terminate the search"]:::exclusion N_RetrySearch_Node0 -- Yes -->|Alternative| N_RetrySearch_Node0_action N_RetrySearch_Node0_action --> E_RetrySearch S_RetrySearch --> N_RetrySearch_Node0 N_RetrySearch_Node0 -- No --> E_RetrySearch
File: GCX016.cbl
GIVEN:
A database error has occurred or no initial match was found
WHEN:
The system evaluates retry conditions
THEN:
The system decides whether to attempt an alternate search method or terminate the search
β Consolidated Acceptance Criteria
- The system determines that alternate search should be attempted → an alternate search method is executed to find Canadian cargo records
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExecuteAlternateSearchMethod(["Start Step"])
E_ExecuteAlternateSearchMethod(["End Step"])
N_ExecuteAlternateSearchMethod_Node0{"The system determines that
alternate search should be attempted"}:::decision N_ExecuteAlternateSearchMethod_Node0_action["An alternate search method is
executed to find Canadian cargo
records"]:::main N_ExecuteAlternateSearchMethod_Node0 -- Yes --> N_ExecuteAlternateSearchMethod_Node0_action N_ExecuteAlternateSearchMethod_Node0_action --> E_ExecuteAlternateSearchMethod S_ExecuteAlternateSearchMethod --> N_ExecuteAlternateSearchMethod_Node0 N_ExecuteAlternateSearchMethod_Node0 -- No --> E_ExecuteAlternateSearchMethod
alternate search should be attempted"}:::decision N_ExecuteAlternateSearchMethod_Node0_action["An alternate search method is
executed to find Canadian cargo
records"]:::main N_ExecuteAlternateSearchMethod_Node0 -- Yes --> N_ExecuteAlternateSearchMethod_Node0_action N_ExecuteAlternateSearchMethod_Node0_action --> E_ExecuteAlternateSearchMethod S_ExecuteAlternateSearchMethod --> N_ExecuteAlternateSearchMethod_Node0 N_ExecuteAlternateSearchMethod_Node0 -- No --> E_ExecuteAlternateSearchMethod
File: GCX016.cbl
GIVEN:
The primary equipment ID search has failed or returned no results
WHEN:
The system determines that alternate search should be attempted
THEN:
An alternate search method is executed to find Canadian cargo records
β Consolidated Acceptance Criteria
- The system determines no match can be found → a no match found result is returned to the calling process
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ReturnNoMatchFound(["Start Step"])
E_ReturnNoMatchFound(["End Step"])
N_ReturnNoMatchFound_Node0{"The system determines no match can
be found"}:::decision N_ReturnNoMatchFound_Node0_action["A no match found result is returned
to the calling process"]:::main N_ReturnNoMatchFound_Node0 -- Yes --> N_ReturnNoMatchFound_Node0_action N_ReturnNoMatchFound_Node0_action --> E_ReturnNoMatchFound S_ReturnNoMatchFound --> N_ReturnNoMatchFound_Node0 N_ReturnNoMatchFound_Node0 -- No --> E_ReturnNoMatchFound
be found"}:::decision N_ReturnNoMatchFound_Node0_action["A no match found result is returned
to the calling process"]:::main N_ReturnNoMatchFound_Node0 -- Yes --> N_ReturnNoMatchFound_Node0_action N_ReturnNoMatchFound_Node0_action --> E_ReturnNoMatchFound S_ReturnNoMatchFound --> N_ReturnNoMatchFound_Node0 N_ReturnNoMatchFound_Node0 -- No --> E_ReturnNoMatchFound
File: GCX016.cbl
GIVEN:
All search methods have been exhausted without finding matching Canadian cargo
WHEN:
The system determines no match can be found
THEN:
A no match found result is returned to the calling process
β Consolidated Acceptance Criteria
- System assigns FDA regulatory codes → system applies the FDA-specific status code corresponding to the hold type
- The system applies FDA-specific status code → the FDA-specific status code is applied to the cargo
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ApplyFDASpecificStatusCode(["Start Step"])
E_ApplyFDASpecificStatusCode(["End Step"])
N_ApplyFDASpecificStatusCode_Node0{"System assigns FDA regulatory codes"}:::decision
N_ApplyFDASpecificStatusCode_Node0_action["System applies the FDA-specific
status code corresponding to the
hold type"]:::main N_ApplyFDASpecificStatusCode_Node0 -- Yes --> N_ApplyFDASpecificStatusCode_Node0_action N_ApplyFDASpecificStatusCode_Node0_action --> E_ApplyFDASpecificStatusCode S_ApplyFDASpecificStatusCode --> N_ApplyFDASpecificStatusCode_Node0 N_ApplyFDASpecificStatusCode_Node1{"The system applies FDA-specific
status code"}:::decision N_ApplyFDASpecificStatusCode_Node1_action["The FDA-specific status code is
applied to the cargo"]:::main N_ApplyFDASpecificStatusCode_Node1 -- Yes --> N_ApplyFDASpecificStatusCode_Node1_action N_ApplyFDASpecificStatusCode_Node1_action --> E_ApplyFDASpecificStatusCode N_ApplyFDASpecificStatusCode_Node0 -- No --> N_ApplyFDASpecificStatusCode_Node1 N_ApplyFDASpecificStatusCode_Node1 -- No --> E_ApplyFDASpecificStatusCode
status code corresponding to the
hold type"]:::main N_ApplyFDASpecificStatusCode_Node0 -- Yes --> N_ApplyFDASpecificStatusCode_Node0_action N_ApplyFDASpecificStatusCode_Node0_action --> E_ApplyFDASpecificStatusCode S_ApplyFDASpecificStatusCode --> N_ApplyFDASpecificStatusCode_Node0 N_ApplyFDASpecificStatusCode_Node1{"The system applies FDA-specific
status code"}:::decision N_ApplyFDASpecificStatusCode_Node1_action["The FDA-specific status code is
applied to the cargo"]:::main N_ApplyFDASpecificStatusCode_Node1 -- Yes --> N_ApplyFDASpecificStatusCode_Node1_action N_ApplyFDASpecificStatusCode_Node1_action --> E_ApplyFDASpecificStatusCode N_ApplyFDASpecificStatusCode_Node0 -- No --> N_ApplyFDASpecificStatusCode_Node1 N_ApplyFDASpecificStatusCode_Node1 -- No --> E_ApplyFDASpecificStatusCode
File: GCX016.cbl
GIVEN:
FDA hold status flag has been set for cargo
WHEN:
System assigns FDA regulatory codes
THEN:
System applies the FDA-specific status code corresponding to the hold type
File: GCX016.cbl
GIVEN:
Status code validation is successful
WHEN:
The system applies FDA-specific status code
THEN:
The FDA-specific status code is applied to the cargo
β Consolidated Acceptance Criteria
- System updates cargo status information → system updates the cargo status description to indicate FDA hold status
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UpdateCargoStatusDescription(["Start Step"])
E_UpdateCargoStatusDescription(["End Step"])
N_UpdateCargoStatusDescription_Node0{"System updates cargo status
information"}:::decision N_UpdateCargoStatusDescription_Node0_action["System updates the cargo status
description to indicate FDA hold
status"]:::main N_UpdateCargoStatusDescription_Node0 -- Yes --> N_UpdateCargoStatusDescription_Node0_action N_UpdateCargoStatusDescription_Node0_action --> E_UpdateCargoStatusDescription S_UpdateCargoStatusDescription --> N_UpdateCargoStatusDescription_Node0 N_UpdateCargoStatusDescription_Node0 -- No --> E_UpdateCargoStatusDescription
information"}:::decision N_UpdateCargoStatusDescription_Node0_action["System updates the cargo status
description to indicate FDA hold
status"]:::main N_UpdateCargoStatusDescription_Node0 -- Yes --> N_UpdateCargoStatusDescription_Node0_action N_UpdateCargoStatusDescription_Node0_action --> E_UpdateCargoStatusDescription S_UpdateCargoStatusDescription --> N_UpdateCargoStatusDescription_Node0 N_UpdateCargoStatusDescription_Node0 -- No --> E_UpdateCargoStatusDescription
File: GCX016.cbl
GIVEN:
Destination hold location has been set for FDA requirements
WHEN:
System updates cargo status information
THEN:
System updates the cargo status description to indicate FDA hold status
β Consolidated Acceptance Criteria
- System evaluates FDA code complexity → system determines whether multiple FDA codes are present requiring additional processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MultipleFDACodesPresent(["Start Step"])
E_MultipleFDACodesPresent(["End Step"])
N_MultipleFDACodesPresent_Node0{"System evaluates FDA code
complexity"}:::decision N_MultipleFDACodesPresent_Node0_action["System determines whether multiple
FDA codes are present requiring
additional processing"]:::main N_MultipleFDACodesPresent_Node0 -- Yes --> N_MultipleFDACodesPresent_Node0_action N_MultipleFDACodesPresent_Node0_action --> E_MultipleFDACodesPresent S_MultipleFDACodesPresent --> N_MultipleFDACodesPresent_Node0 N_MultipleFDACodesPresent_Node0 -- No --> E_MultipleFDACodesPresent
complexity"}:::decision N_MultipleFDACodesPresent_Node0_action["System determines whether multiple
FDA codes are present requiring
additional processing"]:::main N_MultipleFDACodesPresent_Node0 -- Yes --> N_MultipleFDACodesPresent_Node0_action N_MultipleFDACodesPresent_Node0_action --> E_MultipleFDACodesPresent S_MultipleFDACodesPresent --> N_MultipleFDACodesPresent_Node0 N_MultipleFDACodesPresent_Node0 -- No --> E_MultipleFDACodesPresent
File: GCX016.cbl
GIVEN:
Hold on piece counts status has been set for cargo
WHEN:
System evaluates FDA code complexity
THEN:
System determines whether multiple FDA codes are present requiring additional processing
β Consolidated Acceptance Criteria
- System processes FDA codes in priority order → system processes the primary FDA code first to establish main hold requirements
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ProcessPrimaryFDACode(["Start Step"])
E_ProcessPrimaryFDACode(["End Step"])
N_ProcessPrimaryFDACode_Node0{"System processes FDA codes in
priority order"}:::decision N_ProcessPrimaryFDACode_Node0_action["System processes the primary FDA
code first to establish main hold
requirements"]:::main N_ProcessPrimaryFDACode_Node0 -- Yes --> N_ProcessPrimaryFDACode_Node0_action N_ProcessPrimaryFDACode_Node0_action --> E_ProcessPrimaryFDACode S_ProcessPrimaryFDACode --> N_ProcessPrimaryFDACode_Node0 N_ProcessPrimaryFDACode_Node0 -- No --> E_ProcessPrimaryFDACode
priority order"}:::decision N_ProcessPrimaryFDACode_Node0_action["System processes the primary FDA
code first to establish main hold
requirements"]:::main N_ProcessPrimaryFDACode_Node0 -- Yes --> N_ProcessPrimaryFDACode_Node0_action N_ProcessPrimaryFDACode_Node0_action --> E_ProcessPrimaryFDACode S_ProcessPrimaryFDACode --> N_ProcessPrimaryFDACode_Node0 N_ProcessPrimaryFDACode_Node0 -- No --> E_ProcessPrimaryFDACode
File: GCX016.cbl
GIVEN:
Multiple FDA codes are present for the cargo
WHEN:
System processes FDA codes in priority order
THEN:
System processes the primary FDA code first to establish main hold requirements
β Consolidated Acceptance Criteria
- System continues with remaining FDA codes → system processes secondary FDA codes to complete regulatory requirements
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ProcessSecondaryFDACodes(["Start Step"])
E_ProcessSecondaryFDACodes(["End Step"])
N_ProcessSecondaryFDACodes_Node0{"System continues with remaining FDA
codes"}:::decision N_ProcessSecondaryFDACodes_Node0_action["System processes secondary FDA
codes to complete regulatory
requirements"]:::main N_ProcessSecondaryFDACodes_Node0 -- Yes --> N_ProcessSecondaryFDACodes_Node0_action N_ProcessSecondaryFDACodes_Node0_action --> E_ProcessSecondaryFDACodes S_ProcessSecondaryFDACodes --> N_ProcessSecondaryFDACodes_Node0 N_ProcessSecondaryFDACodes_Node0 -- No --> E_ProcessSecondaryFDACodes
codes"}:::decision N_ProcessSecondaryFDACodes_Node0_action["System processes secondary FDA
codes to complete regulatory
requirements"]:::main N_ProcessSecondaryFDACodes_Node0 -- Yes --> N_ProcessSecondaryFDACodes_Node0_action N_ProcessSecondaryFDACodes_Node0_action --> E_ProcessSecondaryFDACodes S_ProcessSecondaryFDACodes --> N_ProcessSecondaryFDACodes_Node0 N_ProcessSecondaryFDACodes_Node0 -- No --> E_ProcessSecondaryFDACodes
File: GCX016.cbl
GIVEN:
Primary FDA code has been processed for cargo
WHEN:
System continues with remaining FDA codes
THEN:
System processes secondary FDA codes to complete regulatory requirements
β Consolidated Acceptance Criteria
- System applies destination hold markers → system marks cargo as held at destination location
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MarkCargoasHeldatDestination(["Start Step"])
E_MarkCargoasHeldatDestination(["End Step"])
N_MarkCargoasHeldatDestination_Node0{"System applies destination hold
markers"}:::decision N_MarkCargoasHeldatDestination_Node0_action["System marks cargo as held at
destination location"]:::main N_MarkCargoasHeldatDestination_Node0 -- Yes --> N_MarkCargoasHeldatDestination_Node0_action N_MarkCargoasHeldatDestination_Node0_action --> E_MarkCargoasHeldatDestination S_MarkCargoasHeldatDestination --> N_MarkCargoasHeldatDestination_Node0 N_MarkCargoasHeldatDestination_Node0 -- No --> E_MarkCargoasHeldatDestination
markers"}:::decision N_MarkCargoasHeldatDestination_Node0_action["System marks cargo as held at
destination location"]:::main N_MarkCargoasHeldatDestination_Node0 -- Yes --> N_MarkCargoasHeldatDestination_Node0_action N_MarkCargoasHeldatDestination_Node0_action --> E_MarkCargoasHeldatDestination S_MarkCargoasHeldatDestination --> N_MarkCargoasHeldatDestination_Node0 N_MarkCargoasHeldatDestination_Node0 -- No --> E_MarkCargoasHeldatDestination
File: GCX016.cbl
GIVEN:
Status array has been updated with FDA code information
WHEN:
System applies destination hold markers
THEN:
System marks cargo as held at destination location
β Consolidated Acceptance Criteria
- System assigns status description text → system sets FDA hold description text explaining the regulatory hold reason
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetFDAHoldDescriptionText(["Start Step"])
E_SetFDAHoldDescriptionText(["End Step"])
N_SetFDAHoldDescriptionText_Node0{"System assigns status description
text"}:::decision N_SetFDAHoldDescriptionText_Node0_action["System sets FDA hold description
text explaining the regulatory hold
reason"]:::main N_SetFDAHoldDescriptionText_Node0 -- Yes --> N_SetFDAHoldDescriptionText_Node0_action N_SetFDAHoldDescriptionText_Node0_action --> E_SetFDAHoldDescriptionText S_SetFDAHoldDescriptionText --> N_SetFDAHoldDescriptionText_Node0 N_SetFDAHoldDescriptionText_Node0 -- No --> E_SetFDAHoldDescriptionText
text"}:::decision N_SetFDAHoldDescriptionText_Node0_action["System sets FDA hold description
text explaining the regulatory hold
reason"]:::main N_SetFDAHoldDescriptionText_Node0 -- Yes --> N_SetFDAHoldDescriptionText_Node0_action N_SetFDAHoldDescriptionText_Node0_action --> E_SetFDAHoldDescriptionText S_SetFDAHoldDescriptionText --> N_SetFDAHoldDescriptionText_Node0 N_SetFDAHoldDescriptionText_Node0 -- No --> E_SetFDAHoldDescriptionText
File: GCX016.cbl
GIVEN:
Cargo has been marked as held at destination
WHEN:
System assigns status description text
THEN:
System sets FDA hold description text explaining the regulatory hold reason
β Consolidated Acceptance Criteria
- System finalizes hold location information → system updates the hold location indicator to reflect FDA enforcement location
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UpdateHoldLocationIndicator(["Start Step"])
E_UpdateHoldLocationIndicator(["End Step"])
N_UpdateHoldLocationIndicator_Node0{"System finalizes hold location
information"}:::decision N_UpdateHoldLocationIndicator_Node0_action["System updates the hold location
indicator to reflect FDA enforcement
location"]:::main N_UpdateHoldLocationIndicator_Node0 -- Yes --> N_UpdateHoldLocationIndicator_Node0_action N_UpdateHoldLocationIndicator_Node0_action --> E_UpdateHoldLocationIndicator S_UpdateHoldLocationIndicator --> N_UpdateHoldLocationIndicator_Node0 N_UpdateHoldLocationIndicator_Node0 -- No --> E_UpdateHoldLocationIndicator
information"}:::decision N_UpdateHoldLocationIndicator_Node0_action["System updates the hold location
indicator to reflect FDA enforcement
location"]:::main N_UpdateHoldLocationIndicator_Node0 -- Yes --> N_UpdateHoldLocationIndicator_Node0_action N_UpdateHoldLocationIndicator_Node0_action --> E_UpdateHoldLocationIndicator S_UpdateHoldLocationIndicator --> N_UpdateHoldLocationIndicator_Node0 N_UpdateHoldLocationIndicator_Node0 -- No --> E_UpdateHoldLocationIndicator
File: GCX016.cbl
GIVEN:
FDA hold description text has been set for cargo
WHEN:
System finalizes hold location information
THEN:
System updates the hold location indicator to reflect FDA enforcement location
β Consolidated Acceptance Criteria
- The system checks the cargo's current status array for PTT indicators → the system identifies whether PTT status exists and proceeds with appropriate PTT processing or skips PTT management
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CurrentCargoHasPTTStatus(["Start Step"])
E_CurrentCargoHasPTTStatus(["End Step"])
N_CurrentCargoHasPTTStatus_Node0{"The system checks the cargo s
current status array for PTT
indicators"}:::decision N_CurrentCargoHasPTTStatus_Node0_action["The system identifies whether PTT
status exists and proceeds with
appropriate PTT processing or skips
PTT management"]:::main N_CurrentCargoHasPTTStatus_Node0 -- Yes --> N_CurrentCargoHasPTTStatus_Node0_action N_CurrentCargoHasPTTStatus_Node0_action --> E_CurrentCargoHasPTTStatus S_CurrentCargoHasPTTStatus --> N_CurrentCargoHasPTTStatus_Node0 N_CurrentCargoHasPTTStatus_Node0 -- No --> E_CurrentCargoHasPTTStatus
current status array for PTT
indicators"}:::decision N_CurrentCargoHasPTTStatus_Node0_action["The system identifies whether PTT
status exists and proceeds with
appropriate PTT processing or skips
PTT management"]:::main N_CurrentCargoHasPTTStatus_Node0 -- Yes --> N_CurrentCargoHasPTTStatus_Node0_action N_CurrentCargoHasPTTStatus_Node0_action --> E_CurrentCargoHasPTTStatus S_CurrentCargoHasPTTStatus --> N_CurrentCargoHasPTTStatus_Node0 N_CurrentCargoHasPTTStatus_Node0 -- No --> E_CurrentCargoHasPTTStatus
File: GCX016.cbl
GIVEN:
A cargo record is being processed for PTT status management
WHEN:
The system checks the cargo's current status array for PTT indicators
THEN:
- The system identifies whether ptt status exists
- Proceeds with appropriate ptt processing or skips ptt management
β Consolidated Acceptance Criteria
- The system calculates remaining PTT quantity by subtracting released quantity from total quantity → the system determines the exact remaining quantity that requires continued PTT processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CalculateRemainingPTTQuantity(["Start Step"])
E_CalculateRemainingPTTQuantity(["End Step"])
N_CalculateRemainingPTTQuantity_Node0{"The system calculates remaining PTT
quantity by subtracting released
quantity from total quantity"}:::decision N_CalculateRemainingPTTQuantity_Node0_action["The system determines the exact
remaining quantity that requires
continued PTT processing"]:::main N_CalculateRemainingPTTQuantity_Node0 -- Yes --> N_CalculateRemainingPTTQuantity_Node0_action N_CalculateRemainingPTTQuantity_Node0_action --> E_CalculateRemainingPTTQuantity S_CalculateRemainingPTTQuantity --> N_CalculateRemainingPTTQuantity_Node0 N_CalculateRemainingPTTQuantity_Node0 -- No --> E_CalculateRemainingPTTQuantity
quantity by subtracting released
quantity from total quantity"}:::decision N_CalculateRemainingPTTQuantity_Node0_action["The system determines the exact
remaining quantity that requires
continued PTT processing"]:::main N_CalculateRemainingPTTQuantity_Node0 -- Yes --> N_CalculateRemainingPTTQuantity_Node0_action N_CalculateRemainingPTTQuantity_Node0_action --> E_CalculateRemainingPTTQuantity S_CalculateRemainingPTTQuantity --> N_CalculateRemainingPTTQuantity_Node0 N_CalculateRemainingPTTQuantity_Node0 -- No --> E_CalculateRemainingPTTQuantity
File: GCX016.cbl
GIVEN:
PTT status is being maintained for partial release
WHEN:
The system calculates remaining PTT quantity by subtracting released quantity from total quantity
THEN:
The system determines the exact remaining quantity that requires continued PTT processing
β Consolidated Acceptance Criteria
- The system updates the status array with PTT information → the status array contains current PTT status with accurate remaining quantities for continued processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UpdatePTTStatusinStatusArray(["Start Step"])
E_UpdatePTTStatusinStatusArray(["End Step"])
N_UpdatePTTStatusinStatusArray_Node0{"The system updates the status array
with PTT information"}:::decision N_UpdatePTTStatusinStatusArray_Node0_action["The status array contains current
PTT status with accurate remaining
quantities for continued processing"]:::main N_UpdatePTTStatusinStatusArray_Node0 -- Yes --> N_UpdatePTTStatusinStatusArray_Node0_action N_UpdatePTTStatusinStatusArray_Node0_action --> E_UpdatePTTStatusinStatusArray S_UpdatePTTStatusinStatusArray --> N_UpdatePTTStatusinStatusArray_Node0 N_UpdatePTTStatusinStatusArray_Node0 -- No --> E_UpdatePTTStatusinStatusArray
with PTT information"}:::decision N_UpdatePTTStatusinStatusArray_Node0_action["The status array contains current
PTT status with accurate remaining
quantities for continued processing"]:::main N_UpdatePTTStatusinStatusArray_Node0 -- Yes --> N_UpdatePTTStatusinStatusArray_Node0_action N_UpdatePTTStatusinStatusArray_Node0_action --> E_UpdatePTTStatusinStatusArray S_UpdatePTTStatusinStatusArray --> N_UpdatePTTStatusinStatusArray_Node0 N_UpdatePTTStatusinStatusArray_Node0 -- No --> E_UpdatePTTStatusinStatusArray
File: GCX016.cbl
GIVEN:
PTT quantity has been validated as acceptable
WHEN:
The system updates the status array with PTT information
THEN:
The status array contains current PTT status with accurate remaining quantities for continued processing
β Consolidated Acceptance Criteria
- The system processes full release status → the system clears PTT status from the cargo record as PTT processing is complete
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ClearPTTStatusFullRelease(["Start Step"])
E_ClearPTTStatusFullRelease(["End Step"])
N_ClearPTTStatusFullRelease_Node0{"The system processes full release
status"}:::decision N_ClearPTTStatusFullRelease_Node0_action["The system clears PTT status from
the cargo record as PTT processing
is complete"]:::main N_ClearPTTStatusFullRelease_Node0 -- Yes --> N_ClearPTTStatusFullRelease_Node0_action N_ClearPTTStatusFullRelease_Node0_action --> E_ClearPTTStatusFullRelease S_ClearPTTStatusFullRelease --> N_ClearPTTStatusFullRelease_Node0 N_ClearPTTStatusFullRelease_Node0 -- No --> E_ClearPTTStatusFullRelease
status"}:::decision N_ClearPTTStatusFullRelease_Node0_action["The system clears PTT status from
the cargo record as PTT processing
is complete"]:::main N_ClearPTTStatusFullRelease_Node0 -- Yes --> N_ClearPTTStatusFullRelease_Node0_action N_ClearPTTStatusFullRelease_Node0_action --> E_ClearPTTStatusFullRelease S_ClearPTTStatusFullRelease --> N_ClearPTTStatusFullRelease_Node0 N_ClearPTTStatusFullRelease_Node0 -- No --> E_ClearPTTStatusFullRelease
File: GCX016.cbl
GIVEN:
Released quantity equals or exceeds total quantity indicating full release
WHEN:
The system processes full release status
THEN:
The system clears PTT status from the cargo record as PTT processing is complete
β Consolidated Acceptance Criteria
- The system initiates PTT status restoration → the system restores the previously saved PTT status information to maintain data integrity
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RestorePreviousPTTStatus(["Start Step"])
E_RestorePreviousPTTStatus(["End Step"])
N_RestorePreviousPTTStatus_Node0{"The system initiates PTT status
restoration"}:::decision N_RestorePreviousPTTStatus_Node0_action["The system restores the previously
saved PTT status information to
maintain data integrity"]:::main N_RestorePreviousPTTStatus_Node0 -- Yes --> N_RestorePreviousPTTStatus_Node0_action N_RestorePreviousPTTStatus_Node0_action --> E_RestorePreviousPTTStatus S_RestorePreviousPTTStatus --> N_RestorePreviousPTTStatus_Node0 N_RestorePreviousPTTStatus_Node0 -- No --> E_RestorePreviousPTTStatus
restoration"}:::decision N_RestorePreviousPTTStatus_Node0_action["The system restores the previously
saved PTT status information to
maintain data integrity"]:::main N_RestorePreviousPTTStatus_Node0 -- Yes --> N_RestorePreviousPTTStatus_Node0_action N_RestorePreviousPTTStatus_Node0_action --> E_RestorePreviousPTTStatus S_RestorePreviousPTTStatus --> N_RestorePreviousPTTStatus_Node0 N_RestorePreviousPTTStatus_Node0 -- No --> E_RestorePreviousPTTStatus
File: GCX016.cbl
GIVEN:
PTT quantity validation has failed or processing errors occurred
WHEN:
The system initiates PTT status restoration
THEN:
The system restores the previously saved PTT status information to maintain data integrity
β Consolidated Acceptance Criteria
- If if PTT status has changed from the original state → if PTT status has changed, proceed with logging, otherwise update cargo record directly
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_PTTStatusChangeRequired(["Start Step"])
E_PTTStatusChangeRequired(["End Step"])
N_PTTStatusChangeRequired_Node0{"The system evaluates if PTT status
has changed from the original state"}:::decision N_PTTStatusChangeRequired_Node0_action["If PTT status has changed, proceed
with logging, otherwise update cargo
record directly"]:::main N_PTTStatusChangeRequired_Node0 -- Yes --> N_PTTStatusChangeRequired_Node0_action N_PTTStatusChangeRequired_Node0_action --> E_PTTStatusChangeRequired S_PTTStatusChangeRequired --> N_PTTStatusChangeRequired_Node0 N_PTTStatusChangeRequired_Node0 -- No --> E_PTTStatusChangeRequired
has changed from the original state"}:::decision N_PTTStatusChangeRequired_Node0_action["If PTT status has changed, proceed
with logging, otherwise update cargo
record directly"]:::main N_PTTStatusChangeRequired_Node0 -- Yes --> N_PTTStatusChangeRequired_Node0_action N_PTTStatusChangeRequired_Node0_action --> E_PTTStatusChangeRequired S_PTTStatusChangeRequired --> N_PTTStatusChangeRequired_Node0 N_PTTStatusChangeRequired_Node0 -- No --> E_PTTStatusChangeRequired
File: GCX016.cbl
GIVEN:
PTT status processing has been completed (update, clear, or restore)
WHEN:
The system evaluates if PTT status has changed from the original state
THEN:
If PTT status has changed, proceed with logging, otherwise update cargo record directly
β Consolidated Acceptance Criteria
- The system logs the PTT status change → the system creates an audit record of the PTT status change with relevant details for compliance and tracking
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogPTTStatusChange(["Start Step"])
E_LogPTTStatusChange(["End Step"])
N_LogPTTStatusChange_Node0{"The system logs the PTT status
change"}:::decision N_LogPTTStatusChange_Node0_action["The system creates an audit record
of the PTT status change with
relevant details for compliance and
tracking"]:::main N_LogPTTStatusChange_Node0 -- Yes --> N_LogPTTStatusChange_Node0_action N_LogPTTStatusChange_Node0_action --> E_LogPTTStatusChange S_LogPTTStatusChange --> N_LogPTTStatusChange_Node0 N_LogPTTStatusChange_Node0 -- No --> E_LogPTTStatusChange
change"}:::decision N_LogPTTStatusChange_Node0_action["The system creates an audit record
of the PTT status change with
relevant details for compliance and
tracking"]:::main N_LogPTTStatusChange_Node0 -- Yes --> N_LogPTTStatusChange_Node0_action N_LogPTTStatusChange_Node0_action --> E_LogPTTStatusChange S_LogPTTStatusChange --> N_LogPTTStatusChange_Node0 N_LogPTTStatusChange_Node0 -- No --> E_LogPTTStatusChange
File: GCX016.cbl
GIVEN:
PTT status change has been identified as required
WHEN:
The system logs the PTT status change
THEN:
- The system creates an audit record of the ptt status change with relevant details for compliance
- Tracking
β Consolidated Acceptance Criteria
- The system processes the partial release → the system calculates remaining held quantity as (total quantity - released quantity) and preserves this value for future processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_PreserveRemainingHeldQuantity(["Start Step"])
E_PreserveRemainingHeldQuantity(["End Step"])
N_PreserveRemainingHeldQuantity_Node0{"The system processes the partial
release"}:::decision N_PreserveRemainingHeldQuantity_Node0_action["The system calculates remaining
held quantity as total quantity -
released quantity and preserves this
value for future processing"]:::main N_PreserveRemainingHeldQuantity_Node0 -- Yes --> N_PreserveRemainingHeldQuantity_Node0_action N_PreserveRemainingHeldQuantity_Node0_action --> E_PreserveRemainingHeldQuantity S_PreserveRemainingHeldQuantity --> N_PreserveRemainingHeldQuantity_Node0 N_PreserveRemainingHeldQuantity_Node0 -- No --> E_PreserveRemainingHeldQuantity
release"}:::decision N_PreserveRemainingHeldQuantity_Node0_action["The system calculates remaining
held quantity as total quantity -
released quantity and preserves this
value for future processing"]:::main N_PreserveRemainingHeldQuantity_Node0 -- Yes --> N_PreserveRemainingHeldQuantity_Node0_action N_PreserveRemainingHeldQuantity_Node0_action --> E_PreserveRemainingHeldQuantity S_PreserveRemainingHeldQuantity --> N_PreserveRemainingHeldQuantity_Node0 N_PreserveRemainingHeldQuantity_Node0 -- No --> E_PreserveRemainingHeldQuantity
File: GCX016.cbl
GIVEN:
A cargo record with partial release where released quantity is less than total quantity
WHEN:
The system processes the partial release
THEN:
The system calculates remaining held quantity as (total quantity - released quantity) and preserves this value for future processing
β Consolidated Acceptance Criteria
- The hold location is not at the border → the system sets destination hold status
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_HoldStatusPresent(["Start Step"])
E_HoldStatusPresent(["End Step"])
N_HoldStatusPresent_Node0{"The hold location is not at the
border"}:::decision N_HoldStatusPresent_Node0_action["The system sets destination hold
status"]:::main N_HoldStatusPresent_Node0 -- Yes --> N_HoldStatusPresent_Node0_action N_HoldStatusPresent_Node0_action --> E_HoldStatusPresent S_HoldStatusPresent --> N_HoldStatusPresent_Node0 N_HoldStatusPresent_Node0 -- No --> E_HoldStatusPresent
border"}:::decision N_HoldStatusPresent_Node0_action["The system sets destination hold
status"]:::main N_HoldStatusPresent_Node0 -- Yes --> N_HoldStatusPresent_Node0_action N_HoldStatusPresent_Node0_action --> E_HoldStatusPresent S_HoldStatusPresent --> N_HoldStatusPresent_Node0 N_HoldStatusPresent_Node0 -- No --> E_HoldStatusPresent
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
A cargo record has hold status present
WHEN:
The hold location is not at the border
THEN:
The system sets destination hold status
β Consolidated Acceptance Criteria
- The cargo was previously released but current processing indicates it is now unreleased → the system generates unrelease notification and re-establishes the destination index
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_PreviouslyReleasedbutNowUnreleased(["Start Step"])
E_PreviouslyReleasedbutNowUnreleased(["End Step"])
N_PreviouslyReleasedbutNowUnreleased_Node0{"The cargo was previously released
but current processing indicates it
is now unreleased"}:::decision N_PreviouslyReleasedbutNowUnreleased_Node0_action["The system generates unrelease
notification and re-establishes the
destination index"]:::main N_PreviouslyReleasedbutNowUnreleased_Node0 -- Yes --> N_PreviouslyReleasedbutNowUnreleased_Node0_action N_PreviouslyReleasedbutNowUnreleased_Node0_action --> E_PreviouslyReleasedbutNowUnreleased S_PreviouslyReleasedbutNowUnreleased --> N_PreviouslyReleasedbutNowUnreleased_Node0 N_PreviouslyReleasedbutNowUnreleased_Node0 -- No --> E_PreviouslyReleasedbutNowUnreleased
but current processing indicates it
is now unreleased"}:::decision N_PreviouslyReleasedbutNowUnreleased_Node0_action["The system generates unrelease
notification and re-establishes the
destination index"]:::main N_PreviouslyReleasedbutNowUnreleased_Node0 -- Yes --> N_PreviouslyReleasedbutNowUnreleased_Node0_action N_PreviouslyReleasedbutNowUnreleased_Node0_action --> E_PreviouslyReleasedbutNowUnreleased S_PreviouslyReleasedbutNowUnreleased --> N_PreviouslyReleasedbutNowUnreleased_Node0 N_PreviouslyReleasedbutNowUnreleased_Node0 -- No --> E_PreviouslyReleasedbutNowUnreleased
File: GCX016.cbl
GIVEN:
A cargo record has historical release status information
WHEN:
The cargo was previously released but current processing indicates it is now unreleased
THEN:
- The system generates unrelease notification
- Re-establishes the destination index
β Consolidated Acceptance Criteria
- The released quantity is less than the total quantity → the system sets partial release hold status and applies hold on piece counts
- The released quantity is less than the total quantity → the system identifies this as a partial release scenario requiring hold processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ReleasedQtyTotalQty(["Start Step"])
E_ReleasedQtyTotalQty(["End Step"])
N_ReleasedQtyTotalQty_Node0{"The released quantity is less than
the total quantity"}:::decision N_ReleasedQtyTotalQty_Node0_action["The system sets partial release
hold status and applies hold on
piece counts"]:::main N_ReleasedQtyTotalQty_Node0 -- Yes --> N_ReleasedQtyTotalQty_Node0_action N_ReleasedQtyTotalQty_Node0_action --> E_ReleasedQtyTotalQty S_ReleasedQtyTotalQty --> N_ReleasedQtyTotalQty_Node0 N_ReleasedQtyTotalQty_Node1{"The released quantity is less than
the total quantity"}:::decision N_ReleasedQtyTotalQty_Node1_action["The system identifies this as a
partial release scenario requiring
hold processing"]:::main N_ReleasedQtyTotalQty_Node1 -- Yes --> N_ReleasedQtyTotalQty_Node1_action N_ReleasedQtyTotalQty_Node1_action --> E_ReleasedQtyTotalQty N_ReleasedQtyTotalQty_Node0 -- No --> N_ReleasedQtyTotalQty_Node1 N_ReleasedQtyTotalQty_Node1 -- No --> E_ReleasedQtyTotalQty
the total quantity"}:::decision N_ReleasedQtyTotalQty_Node0_action["The system sets partial release
hold status and applies hold on
piece counts"]:::main N_ReleasedQtyTotalQty_Node0 -- Yes --> N_ReleasedQtyTotalQty_Node0_action N_ReleasedQtyTotalQty_Node0_action --> E_ReleasedQtyTotalQty S_ReleasedQtyTotalQty --> N_ReleasedQtyTotalQty_Node0 N_ReleasedQtyTotalQty_Node1{"The released quantity is less than
the total quantity"}:::decision N_ReleasedQtyTotalQty_Node1_action["The system identifies this as a
partial release scenario requiring
hold processing"]:::main N_ReleasedQtyTotalQty_Node1 -- Yes --> N_ReleasedQtyTotalQty_Node1_action N_ReleasedQtyTotalQty_Node1_action --> E_ReleasedQtyTotalQty N_ReleasedQtyTotalQty_Node0 -- No --> N_ReleasedQtyTotalQty_Node1 N_ReleasedQtyTotalQty_Node1 -- No --> E_ReleasedQtyTotalQty
File: GCX016.cbl
GIVEN:
A cargo record with PTT status is being processed and quantities have been validated
WHEN:
The released quantity is less than the total quantity
THEN:
- The system sets partial release hold status
- Applies hold on piece counts
File: GCX016.cbl
GIVEN:
Released quantity and total quantity values are available for comparison
WHEN:
The released quantity is less than the total quantity
THEN:
The system identifies this as a partial release scenario requiring hold processing
β Consolidated Acceptance Criteria
- Hold conditions exist at the destination location → the system sets destination hold status for the cargo
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_HoldatDestination(["Start Step"])
E_HoldatDestination(["End Step"])
N_HoldatDestination_Node0{"Hold conditions exist at the
destination location"}:::decision N_HoldatDestination_Node0_action["The system sets destination hold
status for the cargo"]:::main N_HoldatDestination_Node0 -- Yes --> N_HoldatDestination_Node0_action N_HoldatDestination_Node0_action --> E_HoldatDestination S_HoldatDestination --> N_HoldatDestination_Node0 N_HoldatDestination_Node0 -- No --> E_HoldatDestination
destination location"}:::decision N_HoldatDestination_Node0_action["The system sets destination hold
status for the cargo"]:::main N_HoldatDestination_Node0 -- Yes --> N_HoldatDestination_Node0_action N_HoldatDestination_Node0_action --> E_HoldatDestination S_HoldatDestination --> N_HoldatDestination_Node0 N_HoldatDestination_Node0 -- No --> E_HoldatDestination
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
A cargo record has hold status present and is not held at border
WHEN:
Hold conditions exist at the destination location
THEN:
The system sets destination hold status for the cargo
β Consolidated Acceptance Criteria
- If the released quantity value → if released quantity is greater than zero, proceed to compare with total quantity, otherwise set no release status
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ReleasedQuantity0(["Start Step"])
E_ReleasedQuantity0(["End Step"])
N_ReleasedQuantity0_Node0{"The system evaluates the released
quantity value"}:::decision N_ReleasedQuantity0_Node0_action["If released quantity is greater
than zero, proceed to compare with
total quantity, otherwise set no
release status"]:::main N_ReleasedQuantity0_Node0 -- Yes --> N_ReleasedQuantity0_Node0_action N_ReleasedQuantity0_Node0_action --> E_ReleasedQuantity0 S_ReleasedQuantity0 --> N_ReleasedQuantity0_Node0 N_ReleasedQuantity0_Node0 -- No --> E_ReleasedQuantity0
quantity value"}:::decision N_ReleasedQuantity0_Node0_action["If released quantity is greater
than zero, proceed to compare with
total quantity, otherwise set no
release status"]:::main N_ReleasedQuantity0_Node0 -- Yes --> N_ReleasedQuantity0_Node0_action N_ReleasedQuantity0_Node0_action --> E_ReleasedQuantity0 S_ReleasedQuantity0 --> N_ReleasedQuantity0_Node0 N_ReleasedQuantity0_Node0 -- No --> E_ReleasedQuantity0
File: GCX016.cbl
GIVEN:
A cargo record with PTT status and release quantity information in the status array
WHEN:
The system evaluates the released quantity value
THEN:
If released quantity is greater than zero, proceed to compare with total quantity, otherwise set no release status
β Consolidated Acceptance Criteria
- The system processes hold flag updates → clear all hold-related status flags from the cargo record
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ClearHoldFlags(["Start Step"])
E_ClearHoldFlags(["End Step"])
N_ClearHoldFlags_Node0{"The system processes hold flag
updates"}:::decision N_ClearHoldFlags_Node0_action["Clear all hold-related status flags
from the cargo record"]:::main N_ClearHoldFlags_Node0 -- Yes --> N_ClearHoldFlags_Node0_action N_ClearHoldFlags_Node0_action --> E_ClearHoldFlags S_ClearHoldFlags --> N_ClearHoldFlags_Node0 N_ClearHoldFlags_Node0 -- No --> E_ClearHoldFlags
updates"}:::decision N_ClearHoldFlags_Node0_action["Clear all hold-related status flags
from the cargo record"]:::main N_ClearHoldFlags_Node0 -- Yes --> N_ClearHoldFlags_Node0_action N_ClearHoldFlags_Node0_action --> E_ClearHoldFlags S_ClearHoldFlags --> N_ClearHoldFlags_Node0 N_ClearHoldFlags_Node0 -- No --> E_ClearHoldFlags
File: GCX016.cbl
GIVEN:
A cargo record with full release status confirmed
WHEN:
The system processes hold flag updates
THEN:
Clear all hold-related status flags from the cargo record
β Consolidated Acceptance Criteria
- The system validates the remaining quantity value → if remaining quantity is greater than zero, set hold on piece counts status, otherwise maintain PTT status flag
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RemainingQuantity0(["Start Step"])
E_RemainingQuantity0(["End Step"])
N_RemainingQuantity0_Node0{"The system validates the remaining
quantity value"}:::decision N_RemainingQuantity0_Node0_action["If remaining quantity is greater
than zero, set hold on piece counts
status, otherwise maintain PTT
status flag"]:::main N_RemainingQuantity0_Node0 -- Yes --> N_RemainingQuantity0_Node0_action N_RemainingQuantity0_Node0_action --> E_RemainingQuantity0 S_RemainingQuantity0 --> N_RemainingQuantity0_Node0 N_RemainingQuantity0_Node0 -- No --> E_RemainingQuantity0
quantity value"}:::decision N_RemainingQuantity0_Node0_action["If remaining quantity is greater
than zero, set hold on piece counts
status, otherwise maintain PTT
status flag"]:::main N_RemainingQuantity0_Node0 -- Yes --> N_RemainingQuantity0_Node0_action N_RemainingQuantity0_Node0_action --> E_RemainingQuantity0 S_RemainingQuantity0 --> N_RemainingQuantity0_Node0 N_RemainingQuantity0_Node0 -- No --> E_RemainingQuantity0
File: GCX016.cbl
GIVEN:
A cargo record with calculated remaining quantity after partial release
WHEN:
The system validates the remaining quantity value
THEN:
If remaining quantity is greater than zero, set hold on piece counts status, otherwise maintain PTT status flag
β Consolidated Acceptance Criteria
- The system updates status flags → maintain the PTT status flag to indicate proceed-to-transfer eligibility
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MaintainPTTStatusFlag(["Start Step"])
E_MaintainPTTStatusFlag(["End Step"])
N_MaintainPTTStatusFlag_Node0{"The system updates status flags"}:::decision
N_MaintainPTTStatusFlag_Node0_action["Maintain the PTT status flag to
indicate proceed-to-transfer
eligibility"]:::main N_MaintainPTTStatusFlag_Node0 -- Yes --> N_MaintainPTTStatusFlag_Node0_action N_MaintainPTTStatusFlag_Node0_action --> E_MaintainPTTStatusFlag S_MaintainPTTStatusFlag --> N_MaintainPTTStatusFlag_Node0 N_MaintainPTTStatusFlag_Node0 -- No --> E_MaintainPTTStatusFlag
indicate proceed-to-transfer
eligibility"]:::main N_MaintainPTTStatusFlag_Node0 -- Yes --> N_MaintainPTTStatusFlag_Node0_action N_MaintainPTTStatusFlag_Node0_action --> E_MaintainPTTStatusFlag S_MaintainPTTStatusFlag --> N_MaintainPTTStatusFlag_Node0 N_MaintainPTTStatusFlag_Node0 -- No --> E_MaintainPTTStatusFlag
File: GCX016.cbl
GIVEN:
A cargo record with partial release or hold on piece counts status
WHEN:
The system updates status flags
THEN:
Maintain the PTT status flag to indicate proceed-to-transfer eligibility
β Consolidated Acceptance Criteria
- The system processes release status determination → set the cargo status to no release and maintain current hold status
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetNoReleaseStatus(["Start Step"])
E_SetNoReleaseStatus(["End Step"])
N_SetNoReleaseStatus_Node0{"The system processes release status
determination"}:::decision N_SetNoReleaseStatus_Node0_action["Set the cargo status to no release
and maintain current hold status"]:::main N_SetNoReleaseStatus_Node0 -- Yes --> N_SetNoReleaseStatus_Node0_action N_SetNoReleaseStatus_Node0_action --> E_SetNoReleaseStatus S_SetNoReleaseStatus --> N_SetNoReleaseStatus_Node0 N_SetNoReleaseStatus_Node0 -- No --> E_SetNoReleaseStatus
determination"}:::decision N_SetNoReleaseStatus_Node0_action["Set the cargo status to no release
and maintain current hold status"]:::main N_SetNoReleaseStatus_Node0 -- Yes --> N_SetNoReleaseStatus_Node0_action N_SetNoReleaseStatus_Node0_action --> E_SetNoReleaseStatus S_SetNoReleaseStatus --> N_SetNoReleaseStatus_Node0 N_SetNoReleaseStatus_Node0 -- No --> E_SetNoReleaseStatus
File: GCX016.cbl
GIVEN:
A cargo record where released quantity is zero or negative
WHEN:
The system processes release status determination
THEN:
- Set the cargo status to no release
- Maintain current hold status
β Consolidated Acceptance Criteria
- The system updates the status array → apply all determined PTT flags, release status, and hold conditions to the cargo status array
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UpdateStatusArraywithPTTFlags(["Start Step"])
E_UpdateStatusArraywithPTTFlags(["End Step"])
N_UpdateStatusArraywithPTTFlags_Node0{"The system updates the status array"}:::decision
N_UpdateStatusArraywithPTTFlags_Node0_action["Apply all determined PTT flags,
release status, and hold conditions
to the cargo status array"]:::main N_UpdateStatusArraywithPTTFlags_Node0 -- Yes --> N_UpdateStatusArraywithPTTFlags_Node0_action N_UpdateStatusArraywithPTTFlags_Node0_action --> E_UpdateStatusArraywithPTTFlags S_UpdateStatusArraywithPTTFlags --> N_UpdateStatusArraywithPTTFlags_Node0 N_UpdateStatusArraywithPTTFlags_Node0 -- No --> E_UpdateStatusArraywithPTTFlags
release status, and hold conditions
to the cargo status array"]:::main N_UpdateStatusArraywithPTTFlags_Node0 -- Yes --> N_UpdateStatusArraywithPTTFlags_Node0_action N_UpdateStatusArraywithPTTFlags_Node0_action --> E_UpdateStatusArraywithPTTFlags S_UpdateStatusArraywithPTTFlags --> N_UpdateStatusArraywithPTTFlags_Node0 N_UpdateStatusArraywithPTTFlags_Node0 -- No --> E_UpdateStatusArraywithPTTFlags
File: GCX016.cbl
GIVEN:
A cargo record with determined PTT status, release conditions, and hold flags
WHEN:
The system updates the status array
THEN:
Apply all determined PTT flags, release status, and hold conditions to the cargo status array
β Consolidated Acceptance Criteria
- The system completes PTT quantity validation → save the final PTT status determination for use in downstream processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SavePTTStatusforProcessing(["Start Step"])
E_SavePTTStatusforProcessing(["End Step"])
N_SavePTTStatusforProcessing_Node0{"The system completes PTT quantity
validation"}:::decision N_SavePTTStatusforProcessing_Node0_action["Save the final PTT status
determination for use in downstream
processing"]:::main N_SavePTTStatusforProcessing_Node0 -- Yes --> N_SavePTTStatusforProcessing_Node0_action N_SavePTTStatusforProcessing_Node0_action --> E_SavePTTStatusforProcessing S_SavePTTStatusforProcessing --> N_SavePTTStatusforProcessing_Node0 N_SavePTTStatusforProcessing_Node0 -- No --> E_SavePTTStatusforProcessing
validation"}:::decision N_SavePTTStatusforProcessing_Node0_action["Save the final PTT status
determination for use in downstream
processing"]:::main N_SavePTTStatusforProcessing_Node0 -- Yes --> N_SavePTTStatusforProcessing_Node0_action N_SavePTTStatusforProcessing_Node0_action --> E_SavePTTStatusforProcessing S_SavePTTStatusforProcessing --> N_SavePTTStatusforProcessing_Node0 N_SavePTTStatusforProcessing_Node0 -- No --> E_SavePTTStatusforProcessing
File: GCX016.cbl
GIVEN:
A cargo record with updated status array containing PTT flags and release conditions
WHEN:
The system completes PTT quantity validation
THEN:
Save the final PTT status determination for use in downstream processing
β Consolidated Acceptance Criteria
- The calculated remaining quantity is less than zero → the system logs a quantity validation error and sets remaining quantity to zero
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RemainingQuantity0(["Start Step"])
E_RemainingQuantity0(["End Step"])
N_RemainingQuantity0_Node0{"The calculated remaining quantity
is less than zero"}:::decision N_RemainingQuantity0_Node0_action["The system logs a quantity
validation error and sets remaining
quantity to zero"]:::main N_RemainingQuantity0_Node0 -- Yes --> N_RemainingQuantity0_Node0_action N_RemainingQuantity0_Node0_action --> E_RemainingQuantity0 S_RemainingQuantity0 --> N_RemainingQuantity0_Node0 N_RemainingQuantity0_Node0 -- No --> E_RemainingQuantity0
is less than zero"}:::decision N_RemainingQuantity0_Node0_action["The system logs a quantity
validation error and sets remaining
quantity to zero"]:::main N_RemainingQuantity0_Node0 -- Yes --> N_RemainingQuantity0_Node0_action N_RemainingQuantity0_Node0_action --> E_RemainingQuantity0 S_RemainingQuantity0 --> N_RemainingQuantity0_Node0 N_RemainingQuantity0_Node0 -- No --> E_RemainingQuantity0
File: GCX016.cbl
GIVEN:
A remaining quantity has been calculated from total and released quantities
WHEN:
The calculated remaining quantity is less than zero
THEN:
- The system logs a quantity validation error
- Sets remaining quantity to zero
β Consolidated Acceptance Criteria
- If release status → the cargo is marked as fully released
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MarkasFullyReleased(["Start Step"])
E_MarkasFullyReleased(["End Step"])
N_MarkasFullyReleased_Node0{"The system evaluates release status"}:::decision
N_MarkasFullyReleased_Node0_action["The cargo is marked as fully
released"]:::main N_MarkasFullyReleased_Node0 -- Yes --> N_MarkasFullyReleased_Node0_action N_MarkasFullyReleased_Node0_action --> E_MarkasFullyReleased S_MarkasFullyReleased --> N_MarkasFullyReleased_Node0 N_MarkasFullyReleased_Node0 -- No --> E_MarkasFullyReleased
released"]:::main N_MarkasFullyReleased_Node0 -- Yes --> N_MarkasFullyReleased_Node0_action N_MarkasFullyReleased_Node0_action --> E_MarkasFullyReleased S_MarkasFullyReleased --> N_MarkasFullyReleased_Node0 N_MarkasFullyReleased_Node0 -- No --> E_MarkasFullyReleased
File: GCX016.cbl
GIVEN:
A cargo record has remaining quantity equal to zero
WHEN:
The system evaluates release status
THEN:
The cargo is marked as fully released
β Consolidated Acceptance Criteria
- The quantity calculation process is complete → the cargo quantity status is updated in the system
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UpdateCargoQuantityStatus(["Start Step"])
E_UpdateCargoQuantityStatus(["End Step"])
N_UpdateCargoQuantityStatus_Node0{"The quantity calculation process is
complete"}:::decision N_UpdateCargoQuantityStatus_Node0_action["The cargo quantity status is
updated in the system"]:::main N_UpdateCargoQuantityStatus_Node0 -- Yes --> N_UpdateCargoQuantityStatus_Node0_action N_UpdateCargoQuantityStatus_Node0_action --> E_UpdateCargoQuantityStatus S_UpdateCargoQuantityStatus --> N_UpdateCargoQuantityStatus_Node0 N_UpdateCargoQuantityStatus_Node0 -- No --> E_UpdateCargoQuantityStatus
complete"}:::decision N_UpdateCargoQuantityStatus_Node0_action["The cargo quantity status is
updated in the system"]:::main N_UpdateCargoQuantityStatus_Node0 -- Yes --> N_UpdateCargoQuantityStatus_Node0_action N_UpdateCargoQuantityStatus_Node0_action --> E_UpdateCargoQuantityStatus S_UpdateCargoQuantityStatus --> N_UpdateCargoQuantityStatus_Node0 N_UpdateCargoQuantityStatus_Node0 -- No --> E_UpdateCargoQuantityStatus
File: GCX016.cbl
GIVEN:
Cargo has been marked as either partially released or fully released
WHEN:
The quantity calculation process is complete
THEN:
The cargo quantity status is updated in the system
β Consolidated Acceptance Criteria
- The system checks the manual release flag in the cargo status → processing continues to manual release workflow if flag is set, otherwise processing completes
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CheckifManualReleaseFlagSet(["Start Step"])
E_CheckifManualReleaseFlagSet(["End Step"])
N_CheckifManualReleaseFlagSet_Node0{"The system checks the manual
release flag in the cargo status"}:::decision N_CheckifManualReleaseFlagSet_Node0_action["Processing continues to manual
release workflow if flag is set,
otherwise processing completes"]:::main N_CheckifManualReleaseFlagSet_Node0 -- Yes --> N_CheckifManualReleaseFlagSet_Node0_action N_CheckifManualReleaseFlagSet_Node0_action --> E_CheckifManualReleaseFlagSet S_CheckifManualReleaseFlagSet --> N_CheckifManualReleaseFlagSet_Node0 N_CheckifManualReleaseFlagSet_Node0 -- No --> E_CheckifManualReleaseFlagSet
release flag in the cargo status"}:::decision N_CheckifManualReleaseFlagSet_Node0_action["Processing continues to manual
release workflow if flag is set,
otherwise processing completes"]:::main N_CheckifManualReleaseFlagSet_Node0 -- Yes --> N_CheckifManualReleaseFlagSet_Node0_action N_CheckifManualReleaseFlagSet_Node0_action --> E_CheckifManualReleaseFlagSet S_CheckifManualReleaseFlagSet --> N_CheckifManualReleaseFlagSet_Node0 N_CheckifManualReleaseFlagSet_Node0 -- No --> E_CheckifManualReleaseFlagSet
File: GCX016.cbl
GIVEN:
A cargo record with potential manual release status
WHEN:
The system checks the manual release flag in the cargo status
THEN:
Processing continues to manual release workflow if flag is set, otherwise processing completes
β Consolidated Acceptance Criteria
- The system processes cargo age requirements → cargo age is calculated using Julian date conversion methods
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CalculateCargoAgeUsingJulianDate(["Start Step"])
E_CalculateCargoAgeUsingJulianDate(["End Step"])
N_CalculateCargoAgeUsingJulianDate_Node0{"The system processes cargo age
requirements"}:::decision N_CalculateCargoAgeUsingJulianDate_Node0_action["Cargo age is calculated using
Julian date conversion methods"]:::main N_CalculateCargoAgeUsingJulianDate_Node0 -- Yes --> N_CalculateCargoAgeUsingJulianDate_Node0_action N_CalculateCargoAgeUsingJulianDate_Node0_action --> E_CalculateCargoAgeUsingJulianDate S_CalculateCargoAgeUsingJulianDate --> N_CalculateCargoAgeUsingJulianDate_Node0 N_CalculateCargoAgeUsingJulianDate_Node0 -- No --> E_CalculateCargoAgeUsingJulianDate
requirements"}:::decision N_CalculateCargoAgeUsingJulianDate_Node0_action["Cargo age is calculated using
Julian date conversion methods"]:::main N_CalculateCargoAgeUsingJulianDate_Node0 -- Yes --> N_CalculateCargoAgeUsingJulianDate_Node0_action N_CalculateCargoAgeUsingJulianDate_Node0_action --> E_CalculateCargoAgeUsingJulianDate S_CalculateCargoAgeUsingJulianDate --> N_CalculateCargoAgeUsingJulianDate_Node0 N_CalculateCargoAgeUsingJulianDate_Node0 -- No --> E_CalculateCargoAgeUsingJulianDate
File: GCX016.cbl
GIVEN:
Age calculation is required for the cargo
WHEN:
The system processes cargo age requirements
THEN:
Cargo age is calculated using Julian date conversion methods
β Consolidated Acceptance Criteria
- The system finalizes manual release processing → cargo record is updated with manual release status information
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UpdateCargoRecordwithManualReleaseStatus(["Start Step"])
E_UpdateCargoRecordwithManualReleaseStatus(["End Step"])
N_UpdateCargoRecordwithManualReleaseStatus_Node0{"The system finalizes manual release
processing"}:::decision N_UpdateCargoRecordwithManualReleaseStatus_Node0_action["Cargo record is updated with manual
release status information"]:::main N_UpdateCargoRecordwithManualReleaseStatus_Node0 -- Yes --> N_UpdateCargoRecordwithManualReleaseStatus_Node0_action N_UpdateCargoRecordwithManualReleaseStatus_Node0_action --> E_UpdateCargoRecordwithManualReleaseStatus S_UpdateCargoRecordwithManualReleaseStatus --> N_UpdateCargoRecordwithManualReleaseStatus_Node0 N_UpdateCargoRecordwithManualReleaseStatus_Node0 -- No --> E_UpdateCargoRecordwithManualReleaseStatus
processing"}:::decision N_UpdateCargoRecordwithManualReleaseStatus_Node0_action["Cargo record is updated with manual
release status information"]:::main N_UpdateCargoRecordwithManualReleaseStatus_Node0 -- Yes --> N_UpdateCargoRecordwithManualReleaseStatus_Node0_action N_UpdateCargoRecordwithManualReleaseStatus_Node0_action --> E_UpdateCargoRecordwithManualReleaseStatus S_UpdateCargoRecordwithManualReleaseStatus --> N_UpdateCargoRecordwithManualReleaseStatus_Node0 N_UpdateCargoRecordwithManualReleaseStatus_Node0 -- No --> E_UpdateCargoRecordwithManualReleaseStatus
File: GCX016.cbl
GIVEN:
Destination index has been re-established
WHEN:
The system finalizes manual release processing
THEN:
Cargo record is updated with manual release status information
β Consolidated Acceptance Criteria
- If FDA hold conditions → the system determines if FDA hold is required at destination
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CheckFDAHoldConditions(["Start Step"])
E_CheckFDAHoldConditions(["End Step"])
N_CheckFDAHoldConditions_Node0{"The system evaluates FDA hold
conditions"}:::decision N_CheckFDAHoldConditions_Node0_action["The system determines if FDA hold
is required at destination"]:::main N_CheckFDAHoldConditions_Node0 -- Yes --> N_CheckFDAHoldConditions_Node0_action N_CheckFDAHoldConditions_Node0_action --> E_CheckFDAHoldConditions S_CheckFDAHoldConditions --> N_CheckFDAHoldConditions_Node0 N_CheckFDAHoldConditions_Node0 -- No --> E_CheckFDAHoldConditions
conditions"}:::decision N_CheckFDAHoldConditions_Node0_action["The system determines if FDA hold
is required at destination"]:::main N_CheckFDAHoldConditions_Node0 -- Yes --> N_CheckFDAHoldConditions_Node0_action N_CheckFDAHoldConditions_Node0_action --> E_CheckFDAHoldConditions S_CheckFDAHoldConditions --> N_CheckFDAHoldConditions_Node0 N_CheckFDAHoldConditions_Node0 -- No --> E_CheckFDAHoldConditions
File: GCX016.cbl
GIVEN:
Cargo status analysis is complete
WHEN:
The system evaluates FDA hold conditions
THEN:
The system determines if FDA hold is required at destination
β Consolidated Acceptance Criteria
- The system sets destination location flag → the destination location flag is updated to reflect FDA hold location
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetDestinationLocationFlag(["Start Step"])
E_SetDestinationLocationFlag(["End Step"])
N_SetDestinationLocationFlag_Node0{"The system sets destination
location flag"}:::decision N_SetDestinationLocationFlag_Node0_action["The destination location flag is
updated to reflect FDA hold location"]:::main N_SetDestinationLocationFlag_Node0 -- Yes --> N_SetDestinationLocationFlag_Node0_action N_SetDestinationLocationFlag_Node0_action --> E_SetDestinationLocationFlag S_SetDestinationLocationFlag --> N_SetDestinationLocationFlag_Node0 N_SetDestinationLocationFlag_Node0 -- No --> E_SetDestinationLocationFlag
location flag"}:::decision N_SetDestinationLocationFlag_Node0_action["The destination location flag is
updated to reflect FDA hold location"]:::main N_SetDestinationLocationFlag_Node0 -- Yes --> N_SetDestinationLocationFlag_Node0_action N_SetDestinationLocationFlag_Node0_action --> E_SetDestinationLocationFlag S_SetDestinationLocationFlag --> N_SetDestinationLocationFlag_Node0 N_SetDestinationLocationFlag_Node0 -- No --> E_SetDestinationLocationFlag
File: GCX016.cbl
GIVEN:
FDA hold status code has been set
WHEN:
The system sets destination location flag
THEN:
The destination location flag is updated to reflect FDA hold location
β Consolidated Acceptance Criteria
- The system updates status description → the status description is updated with FDA hold information
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UpdateStatusDescription(["Start Step"])
E_UpdateStatusDescription(["End Step"])
N_UpdateStatusDescription_Node0{"The system updates status
description"}:::decision N_UpdateStatusDescription_Node0_action["The status description is updated
with FDA hold information"]:::main N_UpdateStatusDescription_Node0 -- Yes --> N_UpdateStatusDescription_Node0_action N_UpdateStatusDescription_Node0_action --> E_UpdateStatusDescription S_UpdateStatusDescription --> N_UpdateStatusDescription_Node0 N_UpdateStatusDescription_Node0 -- No --> E_UpdateStatusDescription
description"}:::decision N_UpdateStatusDescription_Node0_action["The status description is updated
with FDA hold information"]:::main N_UpdateStatusDescription_Node0 -- Yes --> N_UpdateStatusDescription_Node0_action N_UpdateStatusDescription_Node0_action --> E_UpdateStatusDescription S_UpdateStatusDescription --> N_UpdateStatusDescription_Node0 N_UpdateStatusDescription_Node0 -- No --> E_UpdateStatusDescription
File: GCX016.cbl
GIVEN:
Destination location flag has been set
WHEN:
The system updates status description
THEN:
The status description is updated with FDA hold information
β Consolidated Acceptance Criteria
- The system validates the status code → if status code is valid, apply FDA-specific status code, otherwise continue with other status processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_StatusCodeValidation(["Start Step"])
E_StatusCodeValidation(["End Step"])
N_StatusCodeValidation_Node0{"The system validates the status
code"}:::decision N_StatusCodeValidation_Node0_action["If status code is valid, apply
FDA-specific status code, otherwise
continue with other status
processing"]:::main N_StatusCodeValidation_Node0 -- Yes --> N_StatusCodeValidation_Node0_action N_StatusCodeValidation_Node0_action --> E_StatusCodeValidation S_StatusCodeValidation --> N_StatusCodeValidation_Node0 N_StatusCodeValidation_Node0 -- No --> E_StatusCodeValidation
code"}:::decision N_StatusCodeValidation_Node0_action["If status code is valid, apply
FDA-specific status code, otherwise
continue with other status
processing"]:::main N_StatusCodeValidation_Node0 -- Yes --> N_StatusCodeValidation_Node0_action N_StatusCodeValidation_Node0_action --> E_StatusCodeValidation S_StatusCodeValidation --> N_StatusCodeValidation_Node0 N_StatusCodeValidation_Node0 -- No --> E_StatusCodeValidation
File: GCX016.cbl
GIVEN:
Status description has been updated
WHEN:
The system validates the status code
THEN:
If status code is valid, apply FDA-specific status code, otherwise continue with other status processing
β Consolidated Acceptance Criteria
- The system completes FDA hold status processing → fDA hold status processing is marked as complete
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_FDAHoldStatusSetComplete(["Start Step"])
E_FDAHoldStatusSetComplete(["End Step"])
N_FDAHoldStatusSetComplete_Node0{"The system completes FDA hold
status processing"}:::decision N_FDAHoldStatusSetComplete_Node0_action["FDA hold status processing is
marked as complete"]:::main N_FDAHoldStatusSetComplete_Node0 -- Yes --> N_FDAHoldStatusSetComplete_Node0_action N_FDAHoldStatusSetComplete_Node0_action --> E_FDAHoldStatusSetComplete S_FDAHoldStatusSetComplete --> N_FDAHoldStatusSetComplete_Node0 N_FDAHoldStatusSetComplete_Node0 -- No --> E_FDAHoldStatusSetComplete
status processing"}:::decision N_FDAHoldStatusSetComplete_Node0_action["FDA hold status processing is
marked as complete"]:::main N_FDAHoldStatusSetComplete_Node0 -- Yes --> N_FDAHoldStatusSetComplete_Node0_action N_FDAHoldStatusSetComplete_Node0_action --> E_FDAHoldStatusSetComplete S_FDAHoldStatusSetComplete --> N_FDAHoldStatusSetComplete_Node0 N_FDAHoldStatusSetComplete_Node0 -- No --> E_FDAHoldStatusSetComplete
File: GCX016.cbl
GIVEN:
FDA hold action has been logged
WHEN:
The system completes FDA hold status processing
THEN:
FDA hold status processing is marked as complete
β Consolidated Acceptance Criteria
- The system continues with other status processing → other cargo status processing continues normally
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ContinuewithOtherStatusProcessing(["Start Step"])
E_ContinuewithOtherStatusProcessing(["End Step"])
N_ContinuewithOtherStatusProcessing_Node0{"The system continues with other
status processing"}:::decision N_ContinuewithOtherStatusProcessing_Node0_action["Other cargo status processing
continues normally"]:::main N_ContinuewithOtherStatusProcessing_Node0 -- Yes --> N_ContinuewithOtherStatusProcessing_Node0_action N_ContinuewithOtherStatusProcessing_Node0_action --> E_ContinuewithOtherStatusProcessing S_ContinuewithOtherStatusProcessing --> N_ContinuewithOtherStatusProcessing_Node0 N_ContinuewithOtherStatusProcessing_Node0 -- No --> E_ContinuewithOtherStatusProcessing
status processing"}:::decision N_ContinuewithOtherStatusProcessing_Node0_action["Other cargo status processing
continues normally"]:::main N_ContinuewithOtherStatusProcessing_Node0 -- Yes --> N_ContinuewithOtherStatusProcessing_Node0_action N_ContinuewithOtherStatusProcessing_Node0_action --> E_ContinuewithOtherStatusProcessing S_ContinuewithOtherStatusProcessing --> N_ContinuewithOtherStatusProcessing_Node0 N_ContinuewithOtherStatusProcessing_Node0 -- No --> E_ContinuewithOtherStatusProcessing
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
FDA hold status processing is complete or not required
WHEN:
The system continues with other status processing
THEN:
Other cargo status processing continues normally
β Consolidated Acceptance Criteria
- The system checks for PTT code existence → if PTT codes are found, proceed with PTT quantity extraction, otherwise restore previous status
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_PTTCodeFound(["Start Step"])
E_PTTCodeFound(["End Step"])
N_PTTCodeFound_Node0{"The system checks for PTT code
existence"}:::decision N_PTTCodeFound_Node0_action["If PTT codes are found, proceed
with PTT quantity extraction,
otherwise restore previous status"]:::main N_PTTCodeFound_Node0 -- Yes --> N_PTTCodeFound_Node0_action N_PTTCodeFound_Node0_action --> E_PTTCodeFound S_PTTCodeFound --> N_PTTCodeFound_Node0 N_PTTCodeFound_Node0 -- No --> E_PTTCodeFound
existence"}:::decision N_PTTCodeFound_Node0_action["If PTT codes are found, proceed
with PTT quantity extraction,
otherwise restore previous status"]:::main N_PTTCodeFound_Node0 -- Yes --> N_PTTCodeFound_Node0_action N_PTTCodeFound_Node0_action --> E_PTTCodeFound S_PTTCodeFound --> N_PTTCodeFound_Node0 N_PTTCodeFound_Node0 -- No --> E_PTTCodeFound
File: GCX016.cbl
GIVEN:
The status array has been analyzed for PTT codes
WHEN:
The system checks for PTT code existence
THEN:
If PTT codes are found, proceed with PTT quantity extraction, otherwise restore previous status
β Consolidated Acceptance Criteria
- The system extracts PTT information → pTT quantity values are retrieved from the status array entries
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExtractPTTQuantityInformation(["Start Step"])
E_ExtractPTTQuantityInformation(["End Step"])
N_ExtractPTTQuantityInformation_Node0{"The system extracts PTT information"}:::decision
N_ExtractPTTQuantityInformation_Node0_action["PTT quantity values are retrieved
from the status array entries"]:::main N_ExtractPTTQuantityInformation_Node0 -- Yes --> N_ExtractPTTQuantityInformation_Node0_action N_ExtractPTTQuantityInformation_Node0_action --> E_ExtractPTTQuantityInformation S_ExtractPTTQuantityInformation --> N_ExtractPTTQuantityInformation_Node0 N_ExtractPTTQuantityInformation_Node0 -- No --> E_ExtractPTTQuantityInformation
from the status array entries"]:::main N_ExtractPTTQuantityInformation_Node0 -- Yes --> N_ExtractPTTQuantityInformation_Node0_action N_ExtractPTTQuantityInformation_Node0_action --> E_ExtractPTTQuantityInformation S_ExtractPTTQuantityInformation --> N_ExtractPTTQuantityInformation_Node0 N_ExtractPTTQuantityInformation_Node0 -- No --> E_ExtractPTTQuantityInformation
File: GCX016.cbl
GIVEN:
PTT codes exist in the status array
WHEN:
The system extracts PTT information
THEN:
PTT quantity values are retrieved from the status array entries
β Consolidated Acceptance Criteria
- The system validates PTT quantities against released quantities → pTT quantities must be within acceptable ranges relative to released quantities
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ValidatePTTQuantityvsReleasedQuantity(["Start Step"])
E_ValidatePTTQuantityvsReleasedQuantity(["End Step"])
N_ValidatePTTQuantityvsReleasedQuantity_Node0{"The system validates PTT quantities
against released quantities"}:::decision N_ValidatePTTQuantityvsReleasedQuantity_Node0_action["PTT quantities must be within
acceptable ranges relative to
released quantities"]:::main N_ValidatePTTQuantityvsReleasedQuantity_Node0 -- Yes --> N_ValidatePTTQuantityvsReleasedQuantity_Node0_action N_ValidatePTTQuantityvsReleasedQuantity_Node0_action --> E_ValidatePTTQuantityvsReleasedQuantity S_ValidatePTTQuantityvsReleasedQuantity --> N_ValidatePTTQuantityvsReleasedQuantity_Node0 N_ValidatePTTQuantityvsReleasedQuantity_Node0 -- No --> E_ValidatePTTQuantityvsReleasedQuantity
against released quantities"}:::decision N_ValidatePTTQuantityvsReleasedQuantity_Node0_action["PTT quantities must be within
acceptable ranges relative to
released quantities"]:::main N_ValidatePTTQuantityvsReleasedQuantity_Node0 -- Yes --> N_ValidatePTTQuantityvsReleasedQuantity_Node0_action N_ValidatePTTQuantityvsReleasedQuantity_Node0_action --> E_ValidatePTTQuantityvsReleasedQuantity S_ValidatePTTQuantityvsReleasedQuantity --> N_ValidatePTTQuantityvsReleasedQuantity_Node0 N_ValidatePTTQuantityvsReleasedQuantity_Node0 -- No --> E_ValidatePTTQuantityvsReleasedQuantity
File: GCX016.cbl
GIVEN:
PTT quantity information has been extracted from status array
WHEN:
The system validates PTT quantities against released quantities
THEN:
PTT quantities must be within acceptable ranges relative to released quantities
β Consolidated Acceptance Criteria
- If validation results → if validation passes, set PTT status flag, otherwise generate PTT validation error
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_QuantityValidationPassed(["Start Step"])
E_QuantityValidationPassed(["End Step"])
N_QuantityValidationPassed_Node0{"The system evaluates validation
results"}:::decision N_QuantityValidationPassed_Node0_action["If validation passes, set PTT
status flag, otherwise generate PTT
validation error"]:::main N_QuantityValidationPassed_Node0 -- Yes --> N_QuantityValidationPassed_Node0_action N_QuantityValidationPassed_Node0_action --> E_QuantityValidationPassed S_QuantityValidationPassed --> N_QuantityValidationPassed_Node0 N_QuantityValidationPassed_Node0 -- No --> E_QuantityValidationPassed
results"}:::decision N_QuantityValidationPassed_Node0_action["If validation passes, set PTT
status flag, otherwise generate PTT
validation error"]:::main N_QuantityValidationPassed_Node0 -- Yes --> N_QuantityValidationPassed_Node0_action N_QuantityValidationPassed_Node0_action --> E_QuantityValidationPassed S_QuantityValidationPassed --> N_QuantityValidationPassed_Node0 N_QuantityValidationPassed_Node0 -- No --> E_QuantityValidationPassed
File: GCX016.cbl
GIVEN:
PTT quantity validation has been performed
WHEN:
The system evaluates validation results
THEN:
If validation passes, set PTT status flag, otherwise generate PTT validation error
β Consolidated Acceptance Criteria
- The system updates PTT quantities → the status array is updated with current PTT quantity values
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UpdatePTTQuantityinStatusArray(["Start Step"])
E_UpdatePTTQuantityinStatusArray(["End Step"])
N_UpdatePTTQuantityinStatusArray_Node0{"The system updates PTT quantities"}:::decision
N_UpdatePTTQuantityinStatusArray_Node0_action["The status array is updated with
current PTT quantity values"]:::main N_UpdatePTTQuantityinStatusArray_Node0 -- Yes --> N_UpdatePTTQuantityinStatusArray_Node0_action N_UpdatePTTQuantityinStatusArray_Node0_action --> E_UpdatePTTQuantityinStatusArray S_UpdatePTTQuantityinStatusArray --> N_UpdatePTTQuantityinStatusArray_Node0 N_UpdatePTTQuantityinStatusArray_Node0 -- No --> E_UpdatePTTQuantityinStatusArray
current PTT quantity values"]:::main N_UpdatePTTQuantityinStatusArray_Node0 -- Yes --> N_UpdatePTTQuantityinStatusArray_Node0_action N_UpdatePTTQuantityinStatusArray_Node0_action --> E_UpdatePTTQuantityinStatusArray S_UpdatePTTQuantityinStatusArray --> N_UpdatePTTQuantityinStatusArray_Node0 N_UpdatePTTQuantityinStatusArray_Node0 -- No --> E_UpdatePTTQuantityinStatusArray
File: GCX016.cbl
GIVEN:
PTT status flag has been set
WHEN:
The system updates PTT quantities
THEN:
The status array is updated with current PTT quantity values
β Consolidated Acceptance Criteria
- The system processes PTT status for remaining quantity → pTT status is preserved for the unreleased portion of the cargo
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_PreservePTTStatusforRemainingQuantity(["Start Step"])
E_PreservePTTStatusforRemainingQuantity(["End Step"])
N_PreservePTTStatusforRemainingQuantity_Node0{"The system processes PTT status for
remaining quantity"}:::decision N_PreservePTTStatusforRemainingQuantity_Node0_action["PTT status is preserved for the
unreleased portion of the cargo"]:::main N_PreservePTTStatusforRemainingQuantity_Node0 -- Yes --> N_PreservePTTStatusforRemainingQuantity_Node0_action N_PreservePTTStatusforRemainingQuantity_Node0_action --> E_PreservePTTStatusforRemainingQuantity S_PreservePTTStatusforRemainingQuantity --> N_PreservePTTStatusforRemainingQuantity_Node0 N_PreservePTTStatusforRemainingQuantity_Node0 -- No --> E_PreservePTTStatusforRemainingQuantity
remaining quantity"}:::decision N_PreservePTTStatusforRemainingQuantity_Node0_action["PTT status is preserved for the
unreleased portion of the cargo"]:::main N_PreservePTTStatusforRemainingQuantity_Node0 -- Yes --> N_PreservePTTStatusforRemainingQuantity_Node0_action N_PreservePTTStatusforRemainingQuantity_Node0_action --> E_PreservePTTStatusforRemainingQuantity S_PreservePTTStatusforRemainingQuantity --> N_PreservePTTStatusforRemainingQuantity_Node0 N_PreservePTTStatusforRemainingQuantity_Node0 -- No --> E_PreservePTTStatusforRemainingQuantity
File: GCX016.cbl
GIVEN:
A partial release scenario has been detected
WHEN:
The system processes PTT status for remaining quantity
THEN:
PTT status is preserved for the unreleased portion of the cargo
β Consolidated Acceptance Criteria
- The system processes PTT status for released cargo → pTT status is cleared for the released portion of the cargo
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ClearPTTStatusforReleasedPortion(["Start Step"])
E_ClearPTTStatusforReleasedPortion(["End Step"])
N_ClearPTTStatusforReleasedPortion_Node0{"The system processes PTT status for
released cargo"}:::decision N_ClearPTTStatusforReleasedPortion_Node0_action["PTT status is cleared for the
released portion of the cargo"]:::main N_ClearPTTStatusforReleasedPortion_Node0 -- Yes --> N_ClearPTTStatusforReleasedPortion_Node0_action N_ClearPTTStatusforReleasedPortion_Node0_action --> E_ClearPTTStatusforReleasedPortion S_ClearPTTStatusforReleasedPortion --> N_ClearPTTStatusforReleasedPortion_Node0 N_ClearPTTStatusforReleasedPortion_Node0 -- No --> E_ClearPTTStatusforReleasedPortion
released cargo"}:::decision N_ClearPTTStatusforReleasedPortion_Node0_action["PTT status is cleared for the
released portion of the cargo"]:::main N_ClearPTTStatusforReleasedPortion_Node0 -- Yes --> N_ClearPTTStatusforReleasedPortion_Node0_action N_ClearPTTStatusforReleasedPortion_Node0_action --> E_ClearPTTStatusforReleasedPortion S_ClearPTTStatusforReleasedPortion --> N_ClearPTTStatusforReleasedPortion_Node0 N_ClearPTTStatusforReleasedPortion_Node0 -- No --> E_ClearPTTStatusforReleasedPortion
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
Cargo is not in a partial release scenario
WHEN:
The system processes PTT status for released cargo
THEN:
PTT status is cleared for the released portion of the cargo
β Consolidated Acceptance Criteria
- The system checks if status array updates are needed → if changes are required, update status array with PTT information, otherwise set cargo PTT processing flag
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_StatusArrayChangesRequired(["Start Step"])
E_StatusArrayChangesRequired(["End Step"])
N_StatusArrayChangesRequired_Node0{"The system checks if status array
updates are needed"}:::decision N_StatusArrayChangesRequired_Node0_action["If changes are required, update
status array with PTT information,
otherwise set cargo PTT processing
flag"]:::main N_StatusArrayChangesRequired_Node0 -- Yes --> N_StatusArrayChangesRequired_Node0_action N_StatusArrayChangesRequired_Node0_action --> E_StatusArrayChangesRequired S_StatusArrayChangesRequired --> N_StatusArrayChangesRequired_Node0 N_StatusArrayChangesRequired_Node0 -- No --> E_StatusArrayChangesRequired
updates are needed"}:::decision N_StatusArrayChangesRequired_Node0_action["If changes are required, update
status array with PTT information,
otherwise set cargo PTT processing
flag"]:::main N_StatusArrayChangesRequired_Node0 -- Yes --> N_StatusArrayChangesRequired_Node0_action N_StatusArrayChangesRequired_Node0_action --> E_StatusArrayChangesRequired S_StatusArrayChangesRequired --> N_StatusArrayChangesRequired_Node0 N_StatusArrayChangesRequired_Node0 -- No --> E_StatusArrayChangesRequired
File: GCX016.cbl
GIVEN:
PTT status processing has been completed
WHEN:
The system checks if status array updates are needed
THEN:
If changes are required, update status array with PTT information, otherwise set cargo PTT processing flag
β Consolidated Acceptance Criteria
- The system updates the status array → the status array is updated with final PTT status and quantity information
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UpdateStatusArraywithPTTInformation(["Start Step"])
E_UpdateStatusArraywithPTTInformation(["End Step"])
N_UpdateStatusArraywithPTTInformation_Node0{"The system updates the status array"}:::decision
N_UpdateStatusArraywithPTTInformation_Node0_action["The status array is updated with
final PTT status and quantity
information"]:::main N_UpdateStatusArraywithPTTInformation_Node0 -- Yes --> N_UpdateStatusArraywithPTTInformation_Node0_action N_UpdateStatusArraywithPTTInformation_Node0_action --> E_UpdateStatusArraywithPTTInformation S_UpdateStatusArraywithPTTInformation --> N_UpdateStatusArraywithPTTInformation_Node0 N_UpdateStatusArraywithPTTInformation_Node0 -- No --> E_UpdateStatusArraywithPTTInformation
final PTT status and quantity
information"]:::main N_UpdateStatusArraywithPTTInformation_Node0 -- Yes --> N_UpdateStatusArraywithPTTInformation_Node0_action N_UpdateStatusArraywithPTTInformation_Node0_action --> E_UpdateStatusArraywithPTTInformation S_UpdateStatusArraywithPTTInformation --> N_UpdateStatusArraywithPTTInformation_Node0 N_UpdateStatusArraywithPTTInformation_Node0 -- No --> E_UpdateStatusArraywithPTTInformation
File: GCX016.cbl
GIVEN:
Status array changes have been determined to be required
WHEN:
The system updates the status array
THEN:
- The status array is updated with final ptt status
- Quantity information
β Consolidated Acceptance Criteria
- The system finalizes PTT processing → the cargo PTT processing flag is set to indicate completion
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetCargoPTTProcessingFlag(["Start Step"])
E_SetCargoPTTProcessingFlag(["End Step"])
N_SetCargoPTTProcessingFlag_Node0{"The system finalizes PTT processing"}:::decision
N_SetCargoPTTProcessingFlag_Node0_action["The cargo PTT processing flag is
set to indicate completion"]:::main N_SetCargoPTTProcessingFlag_Node0 -- Yes --> N_SetCargoPTTProcessingFlag_Node0_action N_SetCargoPTTProcessingFlag_Node0_action --> E_SetCargoPTTProcessingFlag S_SetCargoPTTProcessingFlag --> N_SetCargoPTTProcessingFlag_Node0 N_SetCargoPTTProcessingFlag_Node0 -- No --> E_SetCargoPTTProcessingFlag
set to indicate completion"]:::main N_SetCargoPTTProcessingFlag_Node0 -- Yes --> N_SetCargoPTTProcessingFlag_Node0_action N_SetCargoPTTProcessingFlag_Node0_action --> E_SetCargoPTTProcessingFlag S_SetCargoPTTProcessingFlag --> N_SetCargoPTTProcessingFlag_Node0 N_SetCargoPTTProcessingFlag_Node0 -- No --> E_SetCargoPTTProcessingFlag
File: GCX016.cbl
GIVEN:
PTT status management processing is complete
WHEN:
The system finalizes PTT processing
THEN:
The cargo PTT processing flag is set to indicate completion
β Consolidated Acceptance Criteria
- The system compares released quantity with total quantity → the comparison result determines whether partial release processing is required
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CompareReleasedQtyvsTotalQty(["Start Step"])
E_CompareReleasedQtyvsTotalQty(["End Step"])
N_CompareReleasedQtyvsTotalQty_Node0{"The system compares released
quantity with total quantity"}:::decision N_CompareReleasedQtyvsTotalQty_Node0_action["The comparison result determines
whether partial release processing
is required"]:::main N_CompareReleasedQtyvsTotalQty_Node0 -- Yes --> N_CompareReleasedQtyvsTotalQty_Node0_action N_CompareReleasedQtyvsTotalQty_Node0_action --> E_CompareReleasedQtyvsTotalQty S_CompareReleasedQtyvsTotalQty --> N_CompareReleasedQtyvsTotalQty_Node0 N_CompareReleasedQtyvsTotalQty_Node0 -- No --> E_CompareReleasedQtyvsTotalQty
quantity with total quantity"}:::decision N_CompareReleasedQtyvsTotalQty_Node0_action["The comparison result determines
whether partial release processing
is required"]:::main N_CompareReleasedQtyvsTotalQty_Node0 -- Yes --> N_CompareReleasedQtyvsTotalQty_Node0_action N_CompareReleasedQtyvsTotalQty_Node0_action --> E_CompareReleasedQtyvsTotalQty S_CompareReleasedQtyvsTotalQty --> N_CompareReleasedQtyvsTotalQty_Node0 N_CompareReleasedQtyvsTotalQty_Node0 -- No --> E_CompareReleasedQtyvsTotalQty
File: GCX016.cbl
GIVEN:
Cargo status analysis is complete and release quantities are available
WHEN:
The system compares released quantity with total quantity
THEN:
The comparison result determines whether partial release processing is required
β Consolidated Acceptance Criteria
- The system processes the partial release condition → the cargo is identified as a partial release scenario requiring special hold status
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IdentifyPartialReleaseScenario(["Start Step"])
E_IdentifyPartialReleaseScenario(["End Step"])
N_IdentifyPartialReleaseScenario_Node0{"The system processes the partial
release condition"}:::decision N_IdentifyPartialReleaseScenario_Node0_action["The cargo is identified as a
partial release scenario requiring
special hold status"]:::main N_IdentifyPartialReleaseScenario_Node0 -- Yes --> N_IdentifyPartialReleaseScenario_Node0_action N_IdentifyPartialReleaseScenario_Node0_action --> E_IdentifyPartialReleaseScenario S_IdentifyPartialReleaseScenario --> N_IdentifyPartialReleaseScenario_Node0 N_IdentifyPartialReleaseScenario_Node0 -- No --> E_IdentifyPartialReleaseScenario
release condition"}:::decision N_IdentifyPartialReleaseScenario_Node0_action["The cargo is identified as a
partial release scenario requiring
special hold status"]:::main N_IdentifyPartialReleaseScenario_Node0 -- Yes --> N_IdentifyPartialReleaseScenario_Node0_action N_IdentifyPartialReleaseScenario_Node0_action --> E_IdentifyPartialReleaseScenario S_IdentifyPartialReleaseScenario --> N_IdentifyPartialReleaseScenario_Node0 N_IdentifyPartialReleaseScenario_Node0 -- No --> E_IdentifyPartialReleaseScenario
File: GCX016.cbl
GIVEN:
Released quantity is confirmed to be less than total quantity
WHEN:
The system processes the partial release condition
THEN:
The cargo is identified as a partial release scenario requiring special hold status
β Consolidated Acceptance Criteria
- The system logs the partial release information → partial release details including quantities and hold status are recorded in the system log
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogPartialReleaseInformation(["Start Step"])
E_LogPartialReleaseInformation(["End Step"])
N_LogPartialReleaseInformation_Node0{"The system logs the partial release
information"}:::decision N_LogPartialReleaseInformation_Node0_action["Partial release details including
quantities and hold status are
recorded in the system log"]:::main N_LogPartialReleaseInformation_Node0 -- Yes --> N_LogPartialReleaseInformation_Node0_action N_LogPartialReleaseInformation_Node0_action --> E_LogPartialReleaseInformation S_LogPartialReleaseInformation --> N_LogPartialReleaseInformation_Node0 N_LogPartialReleaseInformation_Node0 -- No --> E_LogPartialReleaseInformation
information"}:::decision N_LogPartialReleaseInformation_Node0_action["Partial release details including
quantities and hold status are
recorded in the system log"]:::main N_LogPartialReleaseInformation_Node0 -- Yes --> N_LogPartialReleaseInformation_Node0_action N_LogPartialReleaseInformation_Node0_action --> E_LogPartialReleaseInformation S_LogPartialReleaseInformation --> N_LogPartialReleaseInformation_Node0 N_LogPartialReleaseInformation_Node0 -- No --> E_LogPartialReleaseInformation
File: GCX016.cbl
GIVEN:
Cargo status array has been updated with partial release hold status
WHEN:
The system logs the partial release information
THEN:
- Partial release details including quantities
- Hold status are recorded in the system log
β Consolidated Acceptance Criteria
- The system generates a hold message → a hold message is created with specific piece count details indicating the partial release quantities
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GenerateHoldMessagewithPieceCountDetails(["Start Step"])
E_GenerateHoldMessagewithPieceCountDetails(["End Step"])
N_GenerateHoldMessagewithPieceCountDetails_Node0{"The system generates a hold message"}:::decision
N_GenerateHoldMessagewithPieceCountDetails_Node0_action["A hold message is created with
specific piece count details
indicating the partial release
quantities"]:::main N_GenerateHoldMessagewithPieceCountDetails_Node0 -- Yes --> N_GenerateHoldMessagewithPieceCountDetails_Node0_action N_GenerateHoldMessagewithPieceCountDetails_Node0_action --> E_GenerateHoldMessagewithPieceCountDetails S_GenerateHoldMessagewithPieceCountDetails --> N_GenerateHoldMessagewithPieceCountDetails_Node0 N_GenerateHoldMessagewithPieceCountDetails_Node0 -- No --> E_GenerateHoldMessagewithPieceCountDetails
specific piece count details
indicating the partial release
quantities"]:::main N_GenerateHoldMessagewithPieceCountDetails_Node0 -- Yes --> N_GenerateHoldMessagewithPieceCountDetails_Node0_action N_GenerateHoldMessagewithPieceCountDetails_Node0_action --> E_GenerateHoldMessagewithPieceCountDetails S_GenerateHoldMessagewithPieceCountDetails --> N_GenerateHoldMessagewithPieceCountDetails_Node0 N_GenerateHoldMessagewithPieceCountDetails_Node0 -- No --> E_GenerateHoldMessagewithPieceCountDetails
File: GCX016.cbl
GIVEN:
Destination index is maintained and partial release hold status is confirmed
WHEN:
The system generates a hold message
THEN:
A hold message is created with specific piece count details indicating the partial release quantities
β Consolidated Acceptance Criteria
- The system updates the cargo record → the cargo record is updated with partial hold status and all associated partial release information
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UpdateCargoRecordwithPartialHoldStatus(["Start Step"])
E_UpdateCargoRecordwithPartialHoldStatus(["End Step"])
N_UpdateCargoRecordwithPartialHoldStatus_Node0{"The system updates the cargo record"}:::decision
N_UpdateCargoRecordwithPartialHoldStatus_Node0_action["The cargo record is updated with
partial hold status and all
associated partial release
information"]:::main N_UpdateCargoRecordwithPartialHoldStatus_Node0 -- Yes --> N_UpdateCargoRecordwithPartialHoldStatus_Node0_action N_UpdateCargoRecordwithPartialHoldStatus_Node0_action --> E_UpdateCargoRecordwithPartialHoldStatus S_UpdateCargoRecordwithPartialHoldStatus --> N_UpdateCargoRecordwithPartialHoldStatus_Node0 N_UpdateCargoRecordwithPartialHoldStatus_Node0 -- No --> E_UpdateCargoRecordwithPartialHoldStatus
partial hold status and all
associated partial release
information"]:::main N_UpdateCargoRecordwithPartialHoldStatus_Node0 -- Yes --> N_UpdateCargoRecordwithPartialHoldStatus_Node0_action N_UpdateCargoRecordwithPartialHoldStatus_Node0_action --> E_UpdateCargoRecordwithPartialHoldStatus S_UpdateCargoRecordwithPartialHoldStatus --> N_UpdateCargoRecordwithPartialHoldStatus_Node0 N_UpdateCargoRecordwithPartialHoldStatus_Node0 -- No --> E_UpdateCargoRecordwithPartialHoldStatus
File: GCX016.cbl
GIVEN:
Hold message with piece count details has been generated
WHEN:
The system updates the cargo record
THEN:
- The cargo record is updated with partial hold status
- All associated partial release information
β Consolidated Acceptance Criteria
- The released quantity is greater than or equal to the total quantity → the cargo follows the full release processing path without partial hold restrictions
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_FullReleaseProcessingPath(["Start Step"])
E_FullReleaseProcessingPath(["End Step"])
N_FullReleaseProcessingPath_Node0{"The released quantity is greater
than or equal to the total quantity"}:::decision N_FullReleaseProcessingPath_Node0_action["The cargo follows the full release
processing path without partial hold
restrictions"]:::main N_FullReleaseProcessingPath_Node0 -- Yes --> N_FullReleaseProcessingPath_Node0_action N_FullReleaseProcessingPath_Node0_action --> E_FullReleaseProcessingPath S_FullReleaseProcessingPath --> N_FullReleaseProcessingPath_Node0 N_FullReleaseProcessingPath_Node0 -- No --> E_FullReleaseProcessingPath
than or equal to the total quantity"}:::decision N_FullReleaseProcessingPath_Node0_action["The cargo follows the full release
processing path without partial hold
restrictions"]:::main N_FullReleaseProcessingPath_Node0 -- Yes --> N_FullReleaseProcessingPath_Node0_action N_FullReleaseProcessingPath_Node0_action --> E_FullReleaseProcessingPath S_FullReleaseProcessingPath --> N_FullReleaseProcessingPath_Node0 N_FullReleaseProcessingPath_Node0 -- No --> E_FullReleaseProcessingPath
File: GCX016.cbl
GIVEN:
Released quantity and total quantity have been compared
WHEN:
The released quantity is greater than or equal to the total quantity
THEN:
The cargo follows the full release processing path without partial hold restrictions
β Consolidated Acceptance Criteria
- The system processes the full release → the released status flag is set to indicate full release status
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetReleasedStatusFlag(["Start Step"])
E_SetReleasedStatusFlag(["End Step"])
N_SetReleasedStatusFlag_Node0{"The system processes the full
release"}:::decision N_SetReleasedStatusFlag_Node0_action["The released status flag is set to
indicate full release status"]:::main N_SetReleasedStatusFlag_Node0 -- Yes --> N_SetReleasedStatusFlag_Node0_action N_SetReleasedStatusFlag_Node0_action --> E_SetReleasedStatusFlag S_SetReleasedStatusFlag --> N_SetReleasedStatusFlag_Node0 N_SetReleasedStatusFlag_Node0 -- No --> E_SetReleasedStatusFlag
release"}:::decision N_SetReleasedStatusFlag_Node0_action["The released status flag is set to
indicate full release status"]:::main N_SetReleasedStatusFlag_Node0 -- Yes --> N_SetReleasedStatusFlag_Node0_action N_SetReleasedStatusFlag_Node0_action --> E_SetReleasedStatusFlag S_SetReleasedStatusFlag --> N_SetReleasedStatusFlag_Node0 N_SetReleasedStatusFlag_Node0 -- No --> E_SetReleasedStatusFlag
File: GCX016.cbl
GIVEN:
Cargo that has been determined eligible for full release
WHEN:
The system processes the full release
THEN:
The released status flag is set to indicate full release status
β Consolidated Acceptance Criteria
- The system processes Canadian manifest coordination → release log messages are generated for Canadian manifest tracking
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GenerateCanadianReleaseLogMessages(["Start Step"])
E_GenerateCanadianReleaseLogMessages(["End Step"])
N_GenerateCanadianReleaseLogMessages_Node0{"The system processes Canadian
manifest coordination"}:::decision N_GenerateCanadianReleaseLogMessages_Node0_action["Release log messages are generated
for Canadian manifest tracking"]:::main N_GenerateCanadianReleaseLogMessages_Node0 -- Yes --> N_GenerateCanadianReleaseLogMessages_Node0_action N_GenerateCanadianReleaseLogMessages_Node0_action --> E_GenerateCanadianReleaseLogMessages S_GenerateCanadianReleaseLogMessages --> N_GenerateCanadianReleaseLogMessages_Node0 N_GenerateCanadianReleaseLogMessages_Node0 -- No --> E_GenerateCanadianReleaseLogMessages
manifest coordination"}:::decision N_GenerateCanadianReleaseLogMessages_Node0_action["Release log messages are generated
for Canadian manifest tracking"]:::main N_GenerateCanadianReleaseLogMessages_Node0 -- Yes --> N_GenerateCanadianReleaseLogMessages_Node0_action N_GenerateCanadianReleaseLogMessages_Node0_action --> E_GenerateCanadianReleaseLogMessages S_GenerateCanadianReleaseLogMessages --> N_GenerateCanadianReleaseLogMessages_Node0 N_GenerateCanadianReleaseLogMessages_Node0 -- No --> E_GenerateCanadianReleaseLogMessages
File: GCX016.cbl
GIVEN:
Matching Canadian manifest records for released cargo
WHEN:
The system processes Canadian manifest coordination
THEN:
Release log messages are generated for Canadian manifest tracking
β Consolidated Acceptance Criteria
- The system processes release notifications → release notification messages are generated for relevant stakeholders
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GenerateReleaseNotificationMessages(["Start Step"])
E_GenerateReleaseNotificationMessages(["End Step"])
N_GenerateReleaseNotificationMessages_Node0{"The system processes release
notifications"}:::decision N_GenerateReleaseNotificationMessages_Node0_action["Release notification messages are
generated for relevant stakeholders"]:::main N_GenerateReleaseNotificationMessages_Node0 -- Yes --> N_GenerateReleaseNotificationMessages_Node0_action N_GenerateReleaseNotificationMessages_Node0_action --> E_GenerateReleaseNotificationMessages S_GenerateReleaseNotificationMessages --> N_GenerateReleaseNotificationMessages_Node0 N_GenerateReleaseNotificationMessages_Node0 -- No --> E_GenerateReleaseNotificationMessages
notifications"}:::decision N_GenerateReleaseNotificationMessages_Node0_action["Release notification messages are
generated for relevant stakeholders"]:::main N_GenerateReleaseNotificationMessages_Node0 -- Yes --> N_GenerateReleaseNotificationMessages_Node0_action N_GenerateReleaseNotificationMessages_Node0_action --> E_GenerateReleaseNotificationMessages S_GenerateReleaseNotificationMessages --> N_GenerateReleaseNotificationMessages_Node0 N_GenerateReleaseNotificationMessages_Node0 -- No --> E_GenerateReleaseNotificationMessages
File: GCX016.cbl
GIVEN:
Cargo that has been successfully updated in the database as released
WHEN:
The system processes release notifications
THEN:
Release notification messages are generated for relevant stakeholders
β Consolidated Acceptance Criteria
- The system calls integration services → external integration services are invoked to complete the release processing workflow
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CallIntegrationServicesforRelease(["Start Step"])
E_CallIntegrationServicesforRelease(["End Step"])
N_CallIntegrationServicesforRelease_Node0{"The system calls integration
services"}:::decision N_CallIntegrationServicesforRelease_Node0_action["External integration services are
invoked to complete the release
processing workflow"]:::main N_CallIntegrationServicesforRelease_Node0 -- Yes --> N_CallIntegrationServicesforRelease_Node0_action N_CallIntegrationServicesforRelease_Node0_action --> E_CallIntegrationServicesforRelease S_CallIntegrationServicesforRelease --> N_CallIntegrationServicesforRelease_Node0 N_CallIntegrationServicesforRelease_Node0 -- No --> E_CallIntegrationServicesforRelease
services"}:::decision N_CallIntegrationServicesforRelease_Node0_action["External integration services are
invoked to complete the release
processing workflow"]:::main N_CallIntegrationServicesforRelease_Node0 -- Yes --> N_CallIntegrationServicesforRelease_Node0_action N_CallIntegrationServicesforRelease_Node0_action --> E_CallIntegrationServicesforRelease S_CallIntegrationServicesforRelease --> N_CallIntegrationServicesforRelease_Node0 N_CallIntegrationServicesforRelease_Node0 -- No --> E_CallIntegrationServicesforRelease
File: GCX016.cbl
GIVEN:
Cargo with generated release notification messages
WHEN:
The system calls integration services
THEN:
External integration services are invoked to complete the release processing workflow
β Consolidated Acceptance Criteria
- The system redirects to partial release workflow → cargo is processed through the partial release workflow instead of full release
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ProcessasPartialReleaseInstead(["Start Step"])
E_ProcessasPartialReleaseInstead(["End Step"])
N_ProcessasPartialReleaseInstead_Node0{"The system redirects to partial
release workflow"}:::decision N_ProcessasPartialReleaseInstead_Node0_action["Cargo is processed through the
partial release workflow instead of
full release"]:::main N_ProcessasPartialReleaseInstead_Node0 -- Yes --> N_ProcessasPartialReleaseInstead_Node0_action N_ProcessasPartialReleaseInstead_Node0_action --> E_ProcessasPartialReleaseInstead S_ProcessasPartialReleaseInstead --> N_ProcessasPartialReleaseInstead_Node0 N_ProcessasPartialReleaseInstead_Node0 -- No --> E_ProcessasPartialReleaseInstead
release workflow"}:::decision N_ProcessasPartialReleaseInstead_Node0_action["Cargo is processed through the
partial release workflow instead of
full release"]:::main N_ProcessasPartialReleaseInstead_Node0 -- Yes --> N_ProcessasPartialReleaseInstead_Node0_action N_ProcessasPartialReleaseInstead_Node0_action --> E_ProcessasPartialReleaseInstead S_ProcessasPartialReleaseInstead --> N_ProcessasPartialReleaseInstead_Node0 N_ProcessasPartialReleaseInstead_Node0 -- No --> E_ProcessasPartialReleaseInstead
File: GCX016.cbl
GIVEN:
Cargo that has been identified for partial release processing
WHEN:
The system redirects to partial release workflow
THEN:
Cargo is processed through the partial release workflow instead of full release
β Consolidated Acceptance Criteria
- The system analyzes the status array for previous release indicators → the system identifies if cargo was previously released based on status codes and release quantities
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CheckPreviousReleaseStatus(["Start Step"])
E_CheckPreviousReleaseStatus(["End Step"])
N_CheckPreviousReleaseStatus_Node0{"The system analyzes the status
array for previous release
indicators"}:::decision N_CheckPreviousReleaseStatus_Node0_action["The system identifies if cargo was
previously released based on status
codes and release quantities"]:::main N_CheckPreviousReleaseStatus_Node0 -- Yes --> N_CheckPreviousReleaseStatus_Node0_action N_CheckPreviousReleaseStatus_Node0_action --> E_CheckPreviousReleaseStatus S_CheckPreviousReleaseStatus --> N_CheckPreviousReleaseStatus_Node0 N_CheckPreviousReleaseStatus_Node0 -- No --> E_CheckPreviousReleaseStatus
array for previous release
indicators"}:::decision N_CheckPreviousReleaseStatus_Node0_action["The system identifies if cargo was
previously released based on status
codes and release quantities"]:::main N_CheckPreviousReleaseStatus_Node0 -- Yes --> N_CheckPreviousReleaseStatus_Node0_action N_CheckPreviousReleaseStatus_Node0_action --> E_CheckPreviousReleaseStatus S_CheckPreviousReleaseStatus --> N_CheckPreviousReleaseStatus_Node0 N_CheckPreviousReleaseStatus_Node0 -- No --> E_CheckPreviousReleaseStatus
File: GCX016.cbl
GIVEN:
A cargo record exists with status history in the S09A status array
WHEN:
The system analyzes the status array for previous release indicators
THEN:
- The system identifies if cargo was previously released based on status codes
- Release quantities
β Consolidated Acceptance Criteria
- The system processes disposition codes against the DC table → the system determines if current codes indicate an unrelease action
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AnalyzeCurrentDispositionCodes(["Start Step"])
E_AnalyzeCurrentDispositionCodes(["End Step"])
N_AnalyzeCurrentDispositionCodes_Node0{"The system processes disposition
codes against the DC table"}:::decision N_AnalyzeCurrentDispositionCodes_Node0_action["The system determines if current
codes indicate an unrelease action"]:::main N_AnalyzeCurrentDispositionCodes_Node0 -- Yes --> N_AnalyzeCurrentDispositionCodes_Node0_action N_AnalyzeCurrentDispositionCodes_Node0_action --> E_AnalyzeCurrentDispositionCodes S_AnalyzeCurrentDispositionCodes --> N_AnalyzeCurrentDispositionCodes_Node0 N_AnalyzeCurrentDispositionCodes_Node0 -- No --> E_AnalyzeCurrentDispositionCodes
codes against the DC table"}:::decision N_AnalyzeCurrentDispositionCodes_Node0_action["The system determines if current
codes indicate an unrelease action"]:::main N_AnalyzeCurrentDispositionCodes_Node0 -- Yes --> N_AnalyzeCurrentDispositionCodes_Node0_action N_AnalyzeCurrentDispositionCodes_Node0_action --> E_AnalyzeCurrentDispositionCodes S_AnalyzeCurrentDispositionCodes --> N_AnalyzeCurrentDispositionCodes_Node0 N_AnalyzeCurrentDispositionCodes_Node0 -- No --> E_AnalyzeCurrentDispositionCodes
File: GCX016.cbl
GIVEN:
Current disposition codes are available from the X4 segment
WHEN:
The system processes disposition codes against the DC table
THEN:
The system determines if current codes indicate an unrelease action
β Consolidated Acceptance Criteria
- The system compares release quantities and status flags between previous and current state → the system sets unrelease detection flag if cargo was released but is now unreleased
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_PreviouslyReleasedCargoNowUnreleased(["Start Step"])
E_PreviouslyReleasedCargoNowUnreleased(["End Step"])
N_PreviouslyReleasedCargoNowUnreleased_Node0{"The system compares release
quantities and status flags between
previous and current state"}:::decision N_PreviouslyReleasedCargoNowUnreleased_Node0_action["The system sets unrelease detection
flag if cargo was released but is
now unreleased"]:::main N_PreviouslyReleasedCargoNowUnreleased_Node0 -- Yes --> N_PreviouslyReleasedCargoNowUnreleased_Node0_action N_PreviouslyReleasedCargoNowUnreleased_Node0_action --> E_PreviouslyReleasedCargoNowUnreleased S_PreviouslyReleasedCargoNowUnreleased --> N_PreviouslyReleasedCargoNowUnreleased_Node0 N_PreviouslyReleasedCargoNowUnreleased_Node0 -- No --> E_PreviouslyReleasedCargoNowUnreleased
quantities and status flags between
previous and current state"}:::decision N_PreviouslyReleasedCargoNowUnreleased_Node0_action["The system sets unrelease detection
flag if cargo was released but is
now unreleased"]:::main N_PreviouslyReleasedCargoNowUnreleased_Node0 -- Yes --> N_PreviouslyReleasedCargoNowUnreleased_Node0_action N_PreviouslyReleasedCargoNowUnreleased_Node0_action --> E_PreviouslyReleasedCargoNowUnreleased S_PreviouslyReleasedCargoNowUnreleased --> N_PreviouslyReleasedCargoNowUnreleased_Node0 N_PreviouslyReleasedCargoNowUnreleased_Node0 -- No --> E_PreviouslyReleasedCargoNowUnreleased
File: GCX016.cbl
GIVEN:
Cargo has previous release status AND current disposition codes are processed
WHEN:
- The system compares release quantities
- Status flags between previous
- Current state
THEN:
The system sets unrelease detection flag if cargo was released but is now unreleased
β Consolidated Acceptance Criteria
- The system processes the unrelease detection result → the system sets the unrelease status flag to trigger notification processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetUnreleaseStatusFlag(["Start Step"])
E_SetUnreleaseStatusFlag(["End Step"])
N_SetUnreleaseStatusFlag_Node0{"The system processes the unrelease
detection result"}:::decision N_SetUnreleaseStatusFlag_Node0_action["The system sets the unrelease
status flag to trigger notification
processing"]:::main N_SetUnreleaseStatusFlag_Node0 -- Yes --> N_SetUnreleaseStatusFlag_Node0_action N_SetUnreleaseStatusFlag_Node0_action --> E_SetUnreleaseStatusFlag S_SetUnreleaseStatusFlag --> N_SetUnreleaseStatusFlag_Node0 N_SetUnreleaseStatusFlag_Node0 -- No --> E_SetUnreleaseStatusFlag
detection result"}:::decision N_SetUnreleaseStatusFlag_Node0_action["The system sets the unrelease
status flag to trigger notification
processing"]:::main N_SetUnreleaseStatusFlag_Node0 -- Yes --> N_SetUnreleaseStatusFlag_Node0_action N_SetUnreleaseStatusFlag_Node0_action --> E_SetUnreleaseStatusFlag S_SetUnreleaseStatusFlag --> N_SetUnreleaseStatusFlag_Node0 N_SetUnreleaseStatusFlag_Node0 -- No --> E_SetUnreleaseStatusFlag
File: GCX016.cbl
GIVEN:
Cargo unrelease condition has been detected
WHEN:
The system processes the unrelease detection result
THEN:
The system sets the unrelease status flag to trigger notification processing
β Consolidated Acceptance Criteria
- The system retrieves broker details and payer of freight information → the system identifies all parties requiring unrelease notification based on cargo ownership and broker relationships
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_DetermineNotificationRecipients(["Start Step"])
E_DetermineNotificationRecipients(["End Step"])
N_DetermineNotificationRecipients_Node0{"The system retrieves broker details
and payer of freight information"}:::decision N_DetermineNotificationRecipients_Node0_action["The system identifies all parties
requiring unrelease notification
based on cargo ownership and broker
relationships"]:::main N_DetermineNotificationRecipients_Node0 -- Yes --> N_DetermineNotificationRecipients_Node0_action N_DetermineNotificationRecipients_Node0_action --> E_DetermineNotificationRecipients S_DetermineNotificationRecipients --> N_DetermineNotificationRecipients_Node0 N_DetermineNotificationRecipients_Node0 -- No --> E_DetermineNotificationRecipients
and payer of freight information"}:::decision N_DetermineNotificationRecipients_Node0_action["The system identifies all parties
requiring unrelease notification
based on cargo ownership and broker
relationships"]:::main N_DetermineNotificationRecipients_Node0 -- Yes --> N_DetermineNotificationRecipients_Node0_action N_DetermineNotificationRecipients_Node0_action --> E_DetermineNotificationRecipients S_DetermineNotificationRecipients --> N_DetermineNotificationRecipients_Node0 N_DetermineNotificationRecipients_Node0 -- No --> E_DetermineNotificationRecipients
File: GCX016.cbl
GIVEN:
Cargo unrelease has been detected AND broker information exists in cargo record
WHEN:
- The system retrieves broker details
- Payer of freight information
THEN:
- The system identifies all parties requiring unrelease notification based on cargo ownership
- Broker relationships
β Consolidated Acceptance Criteria
- The system routes the message to brokers → the system sends notification via Merlin messaging system to broker destinations
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RouteMessagetoBrokers(["Start Step"])
E_RouteMessagetoBrokers(["End Step"])
N_RouteMessagetoBrokers_Node0{"The system routes the message to
brokers"}:::decision N_RouteMessagetoBrokers_Node0_action["The system sends notification via
Merlin messaging system to broker
destinations"]:::main N_RouteMessagetoBrokers_Node0 -- Yes --> N_RouteMessagetoBrokers_Node0_action N_RouteMessagetoBrokers_Node0_action --> E_RouteMessagetoBrokers S_RouteMessagetoBrokers --> N_RouteMessagetoBrokers_Node0 N_RouteMessagetoBrokers_Node0 -- No --> E_RouteMessagetoBrokers
brokers"}:::decision N_RouteMessagetoBrokers_Node0_action["The system sends notification via
Merlin messaging system to broker
destinations"]:::main N_RouteMessagetoBrokers_Node0 -- Yes --> N_RouteMessagetoBrokers_Node0_action N_RouteMessagetoBrokers_Node0_action --> E_RouteMessagetoBrokers S_RouteMessagetoBrokers --> N_RouteMessagetoBrokers_Node0 N_RouteMessagetoBrokers_Node0 -- No --> E_RouteMessagetoBrokers
File: GCX016.cbl
GIVEN:
Unrelease notification message is prepared AND broker recipients are identified
WHEN:
The system routes the message to brokers
THEN:
The system sends notification via Merlin messaging system to broker destinations
β Consolidated Acceptance Criteria
- The system routes the message to payer of freight → the system sends notification via appropriate messaging channel to payer of freight
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RouteMessagetoPayerofFreight(["Start Step"])
E_RouteMessagetoPayerofFreight(["End Step"])
N_RouteMessagetoPayerofFreight_Node0{"The system routes the message to
payer of freight"}:::decision N_RouteMessagetoPayerofFreight_Node0_action["The system sends notification via
appropriate messaging channel to
payer of freight"]:::main N_RouteMessagetoPayerofFreight_Node0 -- Yes --> N_RouteMessagetoPayerofFreight_Node0_action N_RouteMessagetoPayerofFreight_Node0_action --> E_RouteMessagetoPayerofFreight S_RouteMessagetoPayerofFreight --> N_RouteMessagetoPayerofFreight_Node0 N_RouteMessagetoPayerofFreight_Node0 -- No --> E_RouteMessagetoPayerofFreight
payer of freight"}:::decision N_RouteMessagetoPayerofFreight_Node0_action["The system sends notification via
appropriate messaging channel to
payer of freight"]:::main N_RouteMessagetoPayerofFreight_Node0 -- Yes --> N_RouteMessagetoPayerofFreight_Node0_action N_RouteMessagetoPayerofFreight_Node0_action --> E_RouteMessagetoPayerofFreight S_RouteMessagetoPayerofFreight --> N_RouteMessagetoPayerofFreight_Node0 N_RouteMessagetoPayerofFreight_Node0 -- No --> E_RouteMessagetoPayerofFreight
File: GCX016.cbl
GIVEN:
Unrelease notification message is prepared AND payer of freight is identified AND payer of freight is different from broker
WHEN:
The system routes the message to payer of freight
THEN:
The system sends notification via appropriate messaging channel to payer of freight
β Consolidated Acceptance Criteria
- The system logs the unrelease event → the system creates audit record with cargo CCN, unrelease details, timestamp, and notification recipients
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogUnreleaseEvent(["Start Step"])
E_LogUnreleaseEvent(["End Step"])
N_LogUnreleaseEvent_Node0{"The system logs the unrelease event"}:::decision
N_LogUnreleaseEvent_Node0_action["The system creates audit record
with cargo CCN, unrelease details,
timestamp, and notification
recipients"]:::main N_LogUnreleaseEvent_Node0 -- Yes --> N_LogUnreleaseEvent_Node0_action N_LogUnreleaseEvent_Node0_action --> E_LogUnreleaseEvent S_LogUnreleaseEvent --> N_LogUnreleaseEvent_Node0 N_LogUnreleaseEvent_Node0 -- No --> E_LogUnreleaseEvent
with cargo CCN, unrelease details,
timestamp, and notification
recipients"]:::main N_LogUnreleaseEvent_Node0 -- Yes --> N_LogUnreleaseEvent_Node0_action N_LogUnreleaseEvent_Node0_action --> E_LogUnreleaseEvent S_LogUnreleaseEvent --> N_LogUnreleaseEvent_Node0 N_LogUnreleaseEvent_Node0 -- No --> E_LogUnreleaseEvent
File: GCX016.cbl
GIVEN:
Cargo unrelease has been processed AND notifications have been sent
WHEN:
The system logs the unrelease event
THEN:
The system creates audit record with cargo CCN, unrelease details, timestamp, and notification recipients
β Consolidated Acceptance Criteria
- The system processes release quantity adjustments → the system clears or reduces release quantities to reflect unreleased status
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ClearPreviousReleaseQuantities(["Start Step"])
E_ClearPreviousReleaseQuantities(["End Step"])
N_ClearPreviousReleaseQuantities_Node0{"The system processes release
quantity adjustments"}:::decision N_ClearPreviousReleaseQuantities_Node0_action["The system clears or reduces
release quantities to reflect
unreleased status"]:::main N_ClearPreviousReleaseQuantities_Node0 -- Yes --> N_ClearPreviousReleaseQuantities_Node0_action N_ClearPreviousReleaseQuantities_Node0_action --> E_ClearPreviousReleaseQuantities S_ClearPreviousReleaseQuantities --> N_ClearPreviousReleaseQuantities_Node0 N_ClearPreviousReleaseQuantities_Node0 -- No --> E_ClearPreviousReleaseQuantities
quantity adjustments"}:::decision N_ClearPreviousReleaseQuantities_Node0_action["The system clears or reduces
release quantities to reflect
unreleased status"]:::main N_ClearPreviousReleaseQuantities_Node0 -- Yes --> N_ClearPreviousReleaseQuantities_Node0_action N_ClearPreviousReleaseQuantities_Node0_action --> E_ClearPreviousReleaseQuantities S_ClearPreviousReleaseQuantities --> N_ClearPreviousReleaseQuantities_Node0 N_ClearPreviousReleaseQuantities_Node0 -- No --> E_ClearPreviousReleaseQuantities
File: GCX016.cbl
GIVEN:
Cargo status records have been updated for unrelease
WHEN:
The system processes release quantity adjustments
THEN:
The system clears or reduces release quantities to reflect unreleased status
β Consolidated Acceptance Criteria
- The system determines appropriate hold status based on disposition codes → the system sets border hold, destination hold, or other appropriate hold status based on cargo location and disposition
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RestoreHoldStatusifRequired(["Start Step"])
E_RestoreHoldStatusifRequired(["End Step"])
N_RestoreHoldStatusifRequired_Node0{"The system determines appropriate
hold status based on disposition
codes"}:::decision N_RestoreHoldStatusifRequired_Node0_action["The system sets border hold,
destination hold, or other
appropriate hold status based on
cargo location and disposition"]:::main N_RestoreHoldStatusifRequired_Node0 -- Yes --> N_RestoreHoldStatusifRequired_Node0_action N_RestoreHoldStatusifRequired_Node0_action --> E_RestoreHoldStatusifRequired S_RestoreHoldStatusifRequired --> N_RestoreHoldStatusifRequired_Node0 N_RestoreHoldStatusifRequired_Node0 -- No --> E_RestoreHoldStatusifRequired
hold status based on disposition
codes"}:::decision N_RestoreHoldStatusifRequired_Node0_action["The system sets border hold,
destination hold, or other
appropriate hold status based on
cargo location and disposition"]:::main N_RestoreHoldStatusifRequired_Node0 -- Yes --> N_RestoreHoldStatusifRequired_Node0_action N_RestoreHoldStatusifRequired_Node0_action --> E_RestoreHoldStatusifRequired S_RestoreHoldStatusifRequired --> N_RestoreHoldStatusifRequired_Node0 N_RestoreHoldStatusifRequired_Node0 -- No --> E_RestoreHoldStatusifRequired
File: GCX016.cbl
GIVEN:
Cargo release quantities have been cleared AND cargo requires hold status
WHEN:
The system determines appropriate hold status based on disposition codes
THEN:
- The system sets border hold, destination hold, or other appropriate hold status based on cargo location
- Disposition
β Consolidated Acceptance Criteria
- The system processes arrival status for the cargo → the system sets the arrival date at destination based on the current processing date
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetArrivalDateatDestination(["Start Step"])
E_SetArrivalDateatDestination(["End Step"])
N_SetArrivalDateatDestination_Node0{"The system processes arrival status
for the cargo"}:::decision N_SetArrivalDateatDestination_Node0_action["The system sets the arrival date at
destination based on the current
processing date"]:::main N_SetArrivalDateatDestination_Node0 -- Yes --> N_SetArrivalDateatDestination_Node0_action N_SetArrivalDateatDestination_Node0_action --> E_SetArrivalDateatDestination S_SetArrivalDateatDestination --> N_SetArrivalDateatDestination_Node0 N_SetArrivalDateatDestination_Node0 -- No --> E_SetArrivalDateatDestination
for the cargo"}:::decision N_SetArrivalDateatDestination_Node0_action["The system sets the arrival date at
destination based on the current
processing date"]:::main N_SetArrivalDateatDestination_Node0 -- Yes --> N_SetArrivalDateatDestination_Node0_action N_SetArrivalDateatDestination_Node0_action --> E_SetArrivalDateatDestination S_SetArrivalDateatDestination --> N_SetArrivalDateatDestination_Node0 N_SetArrivalDateatDestination_Node0 -- No --> E_SetArrivalDateatDestination
File: GCX016.cbl
GIVEN:
A cargo record is being processed for arrival status AND the cargo has arrival processing requirements
WHEN:
The system processes arrival status for the cargo
THEN:
The system sets the arrival date at destination based on the current processing date
β Consolidated Acceptance Criteria
- The system processes the destination index re-establishment → the system calls B585-SET-RT076-DEST-INDEX to re-establish the destination index with updated parameters
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ReestablishRT076DestinationIndex(["Start Step"])
E_ReestablishRT076DestinationIndex(["End Step"])
N_ReestablishRT076DestinationIndex_Node0{"The system processes the
destination index re-establishment"}:::decision N_ReestablishRT076DestinationIndex_Node0_action["The system calls
B585-SET-RT076-DEST-INDEX to
re-establish the destination index
with updated parameters"]:::main N_ReestablishRT076DestinationIndex_Node0 -- Yes --> N_ReestablishRT076DestinationIndex_Node0_action N_ReestablishRT076DestinationIndex_Node0_action --> E_ReestablishRT076DestinationIndex S_ReestablishRT076DestinationIndex --> N_ReestablishRT076DestinationIndex_Node0 N_ReestablishRT076DestinationIndex_Node0 -- No --> E_ReestablishRT076DestinationIndex
destination index re-establishment"}:::decision N_ReestablishRT076DestinationIndex_Node0_action["The system calls
B585-SET-RT076-DEST-INDEX to
re-establish the destination index
with updated parameters"]:::main N_ReestablishRT076DestinationIndex_Node0 -- Yes --> N_ReestablishRT076DestinationIndex_Node0_action N_ReestablishRT076DestinationIndex_Node0_action --> E_ReestablishRT076DestinationIndex S_ReestablishRT076DestinationIndex --> N_ReestablishRT076DestinationIndex_Node0 N_ReestablishRT076DestinationIndex_Node0 -- No --> E_ReestablishRT076DestinationIndex
File: GCX016.cbl
GIVEN:
A cargo record requires destination index re-establishment AND the index parameters have been calculated
WHEN:
The system processes the destination index re-establishment
THEN:
The system calls B585-SET-RT076-DEST-INDEX to re-establish the destination index with updated parameters
β Consolidated Acceptance Criteria
- Age calculation is requested for the cargo → the bond start date is retrieved from the cargo record
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RetrieveCargoBondStartDate(["Start Step"])
E_RetrieveCargoBondStartDate(["End Step"])
N_RetrieveCargoBondStartDate_Node0{"Age calculation is requested for
the cargo"}:::decision N_RetrieveCargoBondStartDate_Node0_action["The bond start date is retrieved
from the cargo record"]:::main N_RetrieveCargoBondStartDate_Node0 -- Yes --> N_RetrieveCargoBondStartDate_Node0_action N_RetrieveCargoBondStartDate_Node0_action --> E_RetrieveCargoBondStartDate S_RetrieveCargoBondStartDate --> N_RetrieveCargoBondStartDate_Node0 N_RetrieveCargoBondStartDate_Node0 -- No --> E_RetrieveCargoBondStartDate
the cargo"}:::decision N_RetrieveCargoBondStartDate_Node0_action["The bond start date is retrieved
from the cargo record"]:::main N_RetrieveCargoBondStartDate_Node0 -- Yes --> N_RetrieveCargoBondStartDate_Node0_action N_RetrieveCargoBondStartDate_Node0_action --> E_RetrieveCargoBondStartDate S_RetrieveCargoBondStartDate --> N_RetrieveCargoBondStartDate_Node0 N_RetrieveCargoBondStartDate_Node0 -- No --> E_RetrieveCargoBondStartDate
File: GCX016.cbl
GIVEN:
A cargo record exists with bond information
WHEN:
Age calculation is requested for the cargo
THEN:
The bond start date is retrieved from the cargo record
β Consolidated Acceptance Criteria
- The age value needs to be stored for destination processing → the calculated age is assigned to the cargo record for RT076 destination index processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetCargoAgeforDestinationIndexing(["Start Step"])
E_SetCargoAgeforDestinationIndexing(["End Step"])
N_SetCargoAgeforDestinationIndexing_Node0{"The age value needs to be stored
for destination processing"}:::decision N_SetCargoAgeforDestinationIndexing_Node0_action["The calculated age is assigned to
the cargo record for RT076
destination index processing"]:::main N_SetCargoAgeforDestinationIndexing_Node0 -- Yes --> N_SetCargoAgeforDestinationIndexing_Node0_action N_SetCargoAgeforDestinationIndexing_Node0_action --> E_SetCargoAgeforDestinationIndexing S_SetCargoAgeforDestinationIndexing --> N_SetCargoAgeforDestinationIndexing_Node0 N_SetCargoAgeforDestinationIndexing_Node0 -- No --> E_SetCargoAgeforDestinationIndexing
for destination processing"}:::decision N_SetCargoAgeforDestinationIndexing_Node0_action["The calculated age is assigned to
the cargo record for RT076
destination index processing"]:::main N_SetCargoAgeforDestinationIndexing_Node0 -- Yes --> N_SetCargoAgeforDestinationIndexing_Node0_action N_SetCargoAgeforDestinationIndexing_Node0_action --> E_SetCargoAgeforDestinationIndexing S_SetCargoAgeforDestinationIndexing --> N_SetCargoAgeforDestinationIndexing_Node0 N_SetCargoAgeforDestinationIndexing_Node0 -- No --> E_SetCargoAgeforDestinationIndexing
File: GCX016.cbl
GIVEN:
A valid cargo age has been calculated
WHEN:
The age value needs to be stored for destination processing
THEN:
The calculated age is assigned to the cargo record for RT076 destination index processing
β Consolidated Acceptance Criteria
- RT076 destination index processing is required → the cargo age is used as input for destination index determination and routing decisions
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UseAgeforRT076DestinationIndexProcessing(["Start Step"])
E_UseAgeforRT076DestinationIndexProcessing(["End Step"])
N_UseAgeforRT076DestinationIndexProcessing_Node0{"RT076 destination index processing
is required"}:::decision N_UseAgeforRT076DestinationIndexProcessing_Node0_action["The cargo age is used as input for
destination index determination and
routing decisions"]:::main N_UseAgeforRT076DestinationIndexProcessing_Node0 -- Yes --> N_UseAgeforRT076DestinationIndexProcessing_Node0_action N_UseAgeforRT076DestinationIndexProcessing_Node0_action --> E_UseAgeforRT076DestinationIndexProcessing S_UseAgeforRT076DestinationIndexProcessing --> N_UseAgeforRT076DestinationIndexProcessing_Node0 N_UseAgeforRT076DestinationIndexProcessing_Node0 -- No --> E_UseAgeforRT076DestinationIndexProcessing
is required"}:::decision N_UseAgeforRT076DestinationIndexProcessing_Node0_action["The cargo age is used as input for
destination index determination and
routing decisions"]:::main N_UseAgeforRT076DestinationIndexProcessing_Node0 -- Yes --> N_UseAgeforRT076DestinationIndexProcessing_Node0_action N_UseAgeforRT076DestinationIndexProcessing_Node0_action --> E_UseAgeforRT076DestinationIndexProcessing S_UseAgeforRT076DestinationIndexProcessing --> N_UseAgeforRT076DestinationIndexProcessing_Node0 N_UseAgeforRT076DestinationIndexProcessing_Node0 -- No --> E_UseAgeforRT076DestinationIndexProcessing
File: GCX016.cbl
GIVEN:
Cargo age has been calculated and stored in the cargo record
WHEN:
RT076 destination index processing is required
THEN:
- The cargo age is used as input for destination index determination
- Routing decisions
β Consolidated Acceptance Criteria
- Age calculation cannot be performed with actual dates → a default age value is assigned to allow processing to continue
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetDefaultAgeValue(["Start Step"])
E_SetDefaultAgeValue(["End Step"])
N_SetDefaultAgeValue_Node0{"Age calculation cannot be performed
with actual dates"}:::decision N_SetDefaultAgeValue_Node0_action["A default age value is assigned to
allow processing to continue"]:::main N_SetDefaultAgeValue_Node0 -- Yes --> N_SetDefaultAgeValue_Node0_action N_SetDefaultAgeValue_Node0_action --> E_SetDefaultAgeValue S_SetDefaultAgeValue --> N_SetDefaultAgeValue_Node0 N_SetDefaultAgeValue_Node0 -- No --> E_SetDefaultAgeValue
with actual dates"}:::decision N_SetDefaultAgeValue_Node0_action["A default age value is assigned to
allow processing to continue"]:::main N_SetDefaultAgeValue_Node0 -- Yes --> N_SetDefaultAgeValue_Node0_action N_SetDefaultAgeValue_Node0_action --> E_SetDefaultAgeValue S_SetDefaultAgeValue --> N_SetDefaultAgeValue_Node0 N_SetDefaultAgeValue_Node0 -- No --> E_SetDefaultAgeValue
File: GCX016.cbl
GIVEN:
Bond start date is missing or invalid in the cargo record
WHEN:
Age calculation cannot be performed with actual dates
THEN:
A default age value is assigned to allow processing to continue
β Consolidated Acceptance Criteria
- Error handling is required → error information is logged and default age processing is initiated
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogAgeCalculationError(["Start Step"])
E_LogAgeCalculationError(["End Step"])
N_LogAgeCalculationError_Node0{"Error handling is required"}:::decision
N_LogAgeCalculationError_Node0_action["Error information is logged and
default age processing is initiated"]:::exclusion N_LogAgeCalculationError_Node0 -- Yes -->|Alternative| N_LogAgeCalculationError_Node0_action N_LogAgeCalculationError_Node0_action --> E_LogAgeCalculationError S_LogAgeCalculationError --> N_LogAgeCalculationError_Node0 N_LogAgeCalculationError_Node0 -- No --> E_LogAgeCalculationError
default age processing is initiated"]:::exclusion N_LogAgeCalculationError_Node0 -- Yes -->|Alternative| N_LogAgeCalculationError_Node0_action N_LogAgeCalculationError_Node0_action --> E_LogAgeCalculationError S_LogAgeCalculationError --> N_LogAgeCalculationError_Node0 N_LogAgeCalculationError_Node0 -- No --> E_LogAgeCalculationError
File: GCX016.cbl
GIVEN:
Age calculation has failed due to invalid data or calculation error
WHEN:
Error handling is required
THEN:
- Error information is logged
- Default age processing is initiated
β Consolidated Acceptance Criteria
- The system compares current cargo status with previous cargo status → integration service processing continues if status has changed, otherwise processing ends
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CargoStatusChanged(["Start Step"])
E_CargoStatusChanged(["End Step"])
N_CargoStatusChanged_Node0{"The system compares current cargo
status with previous cargo status"}:::decision N_CargoStatusChanged_Node0_action["Integration service processing
continues if status has changed,
otherwise processing ends"]:::main N_CargoStatusChanged_Node0 -- Yes --> N_CargoStatusChanged_Node0_action N_CargoStatusChanged_Node0_action --> E_CargoStatusChanged S_CargoStatusChanged --> N_CargoStatusChanged_Node0 N_CargoStatusChanged_Node0 -- No --> E_CargoStatusChanged
status with previous cargo status"}:::decision N_CargoStatusChanged_Node0_action["Integration service processing
continues if status has changed,
otherwise processing ends"]:::main N_CargoStatusChanged_Node0 -- Yes --> N_CargoStatusChanged_Node0_action N_CargoStatusChanged_Node0_action --> E_CargoStatusChanged S_CargoStatusChanged --> N_CargoStatusChanged_Node0 N_CargoStatusChanged_Node0 -- No --> E_CargoStatusChanged
File: GCX016.cbl
GIVEN:
A cargo record exists with current status and previous status information
WHEN:
The system compares current cargo status with previous cargo status
THEN:
Integration service processing continues if status has changed, otherwise processing ends
β Consolidated Acceptance Criteria
- The system checks if equipment type is container or trailer → integration processing continues for valid container/trailer types, otherwise processing ends
- If if the equipment type is a container or trailer → the system classifies the equipment as either valid container type or other equipment type
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ValidContainerType(["Start Step"])
E_ValidContainerType(["End Step"])
N_ValidContainerType_Node0{"The system checks if equipment type
is container or trailer"}:::decision N_ValidContainerType_Node0_action["Integration processing continues
for valid containertrailer types,
otherwise processing ends"]:::main N_ValidContainerType_Node0 -- Yes --> N_ValidContainerType_Node0_action N_ValidContainerType_Node0_action --> E_ValidContainerType S_ValidContainerType --> N_ValidContainerType_Node0 N_ValidContainerType_Node1{"The system evaluates if the
equipment type is a container or
trailer"}:::decision N_ValidContainerType_Node1_action["The system classifies the equipment
as either valid container type or
other equipment type"]:::main N_ValidContainerType_Node1 -- Yes --> N_ValidContainerType_Node1_action N_ValidContainerType_Node1_action --> E_ValidContainerType N_ValidContainerType_Node0 -- No --> N_ValidContainerType_Node1 N_ValidContainerType_Node1 -- No --> E_ValidContainerType
is container or trailer"}:::decision N_ValidContainerType_Node0_action["Integration processing continues
for valid containertrailer types,
otherwise processing ends"]:::main N_ValidContainerType_Node0 -- Yes --> N_ValidContainerType_Node0_action N_ValidContainerType_Node0_action --> E_ValidContainerType S_ValidContainerType --> N_ValidContainerType_Node0 N_ValidContainerType_Node1{"The system evaluates if the
equipment type is a container or
trailer"}:::decision N_ValidContainerType_Node1_action["The system classifies the equipment
as either valid container type or
other equipment type"]:::main N_ValidContainerType_Node1 -- Yes --> N_ValidContainerType_Node1_action N_ValidContainerType_Node1_action --> E_ValidContainerType N_ValidContainerType_Node0 -- No --> N_ValidContainerType_Node1 N_ValidContainerType_Node1 -- No --> E_ValidContainerType
File: GCX016.cbl
GIVEN:
A cargo record with equipment type information from GCSUSS05
WHEN:
The system checks if equipment type is container or trailer
THEN:
Integration processing continues for valid container/trailer types, otherwise processing ends
File: GCX016.cbl
GIVEN:
An equipment type code has been validated
WHEN:
The system evaluates if the equipment type is a container or trailer
THEN:
The system classifies the equipment as either valid container type or other equipment type
β Consolidated Acceptance Criteria
- The system maps internal status to integration service status format → integration service status is set based on internal status mapping rules
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MapInternalStatustoIntegrationServiceStatus(["Start Step"])
E_MapInternalStatustoIntegrationServiceStatus(["End Step"])
N_MapInternalStatustoIntegrationServiceStatus_Node0{"The system maps internal status to
integration service status format"}:::decision N_MapInternalStatustoIntegrationServiceStatus_Node0_action["Integration service status is set
based on internal status mapping
rules"]:::main N_MapInternalStatustoIntegrationServiceStatus_Node0 -- Yes --> N_MapInternalStatustoIntegrationServiceStatus_Node0_action N_MapInternalStatustoIntegrationServiceStatus_Node0_action --> E_MapInternalStatustoIntegrationServiceStatus S_MapInternalStatustoIntegrationServiceStatus --> N_MapInternalStatustoIntegrationServiceStatus_Node0 N_MapInternalStatustoIntegrationServiceStatus_Node0 -- No --> E_MapInternalStatustoIntegrationServiceStatus
integration service status format"}:::decision N_MapInternalStatustoIntegrationServiceStatus_Node0_action["Integration service status is set
based on internal status mapping
rules"]:::main N_MapInternalStatustoIntegrationServiceStatus_Node0 -- Yes --> N_MapInternalStatustoIntegrationServiceStatus_Node0_action N_MapInternalStatustoIntegrationServiceStatus_Node0_action --> E_MapInternalStatustoIntegrationServiceStatus S_MapInternalStatustoIntegrationServiceStatus --> N_MapInternalStatustoIntegrationServiceStatus_Node0 N_MapInternalStatustoIntegrationServiceStatus_Node0 -- No --> E_MapInternalStatustoIntegrationServiceStatus
File: GCX016.cbl
GIVEN:
A cargo record with internal status code
WHEN:
The system maps internal status to integration service status format
THEN:
Integration service status is set based on internal status mapping rules
β Consolidated Acceptance Criteria
- The system checks if status indicates cargo is held → hold notification preparation is triggered if cargo is in hold status
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_HoldStatus(["Start Step"])
E_HoldStatus(["End Step"])
N_HoldStatus_Node0{"The system checks if status
indicates cargo is held"}:::decision N_HoldStatus_Node0_action["Hold notification preparation is
triggered if cargo is in hold status"]:::main N_HoldStatus_Node0 -- Yes --> N_HoldStatus_Node0_action N_HoldStatus_Node0_action --> E_HoldStatus S_HoldStatus --> N_HoldStatus_Node0 N_HoldStatus_Node0 -- No --> E_HoldStatus
indicates cargo is held"}:::decision N_HoldStatus_Node0_action["Hold notification preparation is
triggered if cargo is in hold status"]:::main N_HoldStatus_Node0 -- Yes --> N_HoldStatus_Node0_action N_HoldStatus_Node0_action --> E_HoldStatus S_HoldStatus --> N_HoldStatus_Node0 N_HoldStatus_Node0 -- No --> E_HoldStatus
File: GCX016.cbl
GIVEN:
A cargo record with mapped integration service status
WHEN:
The system checks if status indicates cargo is held
THEN:
Hold notification preparation is triggered if cargo is in hold status
β Consolidated Acceptance Criteria
- The system checks if status indicates cargo is released → release notification preparation is triggered if cargo is in release status
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ReleaseStatus(["Start Step"])
E_ReleaseStatus(["End Step"])
N_ReleaseStatus_Node0{"The system checks if status
indicates cargo is released"}:::decision N_ReleaseStatus_Node0_action["Release notification preparation is
triggered if cargo is in release
status"]:::main N_ReleaseStatus_Node0 -- Yes --> N_ReleaseStatus_Node0_action N_ReleaseStatus_Node0_action --> E_ReleaseStatus S_ReleaseStatus --> N_ReleaseStatus_Node0 N_ReleaseStatus_Node0 -- No --> E_ReleaseStatus
indicates cargo is released"}:::decision N_ReleaseStatus_Node0_action["Release notification preparation is
triggered if cargo is in release
status"]:::main N_ReleaseStatus_Node0 -- Yes --> N_ReleaseStatus_Node0_action N_ReleaseStatus_Node0_action --> E_ReleaseStatus S_ReleaseStatus --> N_ReleaseStatus_Node0 N_ReleaseStatus_Node0 -- No --> E_ReleaseStatus
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
A cargo record with mapped integration service status that is not in hold status
WHEN:
The system checks if status indicates cargo is released
THEN:
Release notification preparation is triggered if cargo is in release status
β Consolidated Acceptance Criteria
- The system checks if any status change occurred → status change notification preparation is triggered if status change is detected
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_StatusChange(["Start Step"])
E_StatusChange(["End Step"])
N_StatusChange_Node0{"The system checks if any status
change occurred"}:::decision N_StatusChange_Node0_action["Status change notification
preparation is triggered if status
change is detected"]:::main N_StatusChange_Node0 -- Yes --> N_StatusChange_Node0_action N_StatusChange_Node0_action --> E_StatusChange S_StatusChange --> N_StatusChange_Node0 N_StatusChange_Node0 -- No --> E_StatusChange
change occurred"}:::decision N_StatusChange_Node0_action["Status change notification
preparation is triggered if status
change is detected"]:::main N_StatusChange_Node0 -- Yes --> N_StatusChange_Node0_action N_StatusChange_Node0_action --> E_StatusChange S_StatusChange --> N_StatusChange_Node0 N_StatusChange_Node0 -- No --> E_StatusChange
File: GCX016.cbl
GIVEN:
A cargo record with mapped integration service status that is neither hold nor release
WHEN:
The system checks if any status change occurred
THEN:
Status change notification preparation is triggered if status change is detected
β Consolidated Acceptance Criteria
- The system prepares hold notification with cargo identification and status details → hold notification message is formatted for GCCIIS integration service call
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_PrepareHoldNotification(["Start Step"])
E_PrepareHoldNotification(["End Step"])
N_PrepareHoldNotification_Node0{"The system prepares hold
notification with cargo
identification and status details"}:::decision N_PrepareHoldNotification_Node0_action["Hold notification message is
formatted for GCCIIS integration
service call"]:::main N_PrepareHoldNotification_Node0 -- Yes --> N_PrepareHoldNotification_Node0_action N_PrepareHoldNotification_Node0_action --> E_PrepareHoldNotification S_PrepareHoldNotification --> N_PrepareHoldNotification_Node0 N_PrepareHoldNotification_Node0 -- No --> E_PrepareHoldNotification
notification with cargo
identification and status details"}:::decision N_PrepareHoldNotification_Node0_action["Hold notification message is
formatted for GCCIIS integration
service call"]:::main N_PrepareHoldNotification_Node0 -- Yes --> N_PrepareHoldNotification_Node0_action N_PrepareHoldNotification_Node0_action --> E_PrepareHoldNotification S_PrepareHoldNotification --> N_PrepareHoldNotification_Node0 N_PrepareHoldNotification_Node0 -- No --> E_PrepareHoldNotification
File: GCX016.cbl
GIVEN:
A cargo record identified as having hold status
WHEN:
- The system prepares hold notification with cargo identification
- Status details
THEN:
Hold notification message is formatted for GCCIIS integration service call
β Consolidated Acceptance Criteria
- The system prepares release notification with cargo identification and status details → release notification message is formatted for GCCIIS integration service call
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_PrepareReleaseNotification(["Start Step"])
E_PrepareReleaseNotification(["End Step"])
N_PrepareReleaseNotification_Node0{"The system prepares release
notification with cargo
identification and status details"}:::decision N_PrepareReleaseNotification_Node0_action["Release notification message is
formatted for GCCIIS integration
service call"]:::main N_PrepareReleaseNotification_Node0 -- Yes --> N_PrepareReleaseNotification_Node0_action N_PrepareReleaseNotification_Node0_action --> E_PrepareReleaseNotification S_PrepareReleaseNotification --> N_PrepareReleaseNotification_Node0 N_PrepareReleaseNotification_Node0 -- No --> E_PrepareReleaseNotification
notification with cargo
identification and status details"}:::decision N_PrepareReleaseNotification_Node0_action["Release notification message is
formatted for GCCIIS integration
service call"]:::main N_PrepareReleaseNotification_Node0 -- Yes --> N_PrepareReleaseNotification_Node0_action N_PrepareReleaseNotification_Node0_action --> E_PrepareReleaseNotification S_PrepareReleaseNotification --> N_PrepareReleaseNotification_Node0 N_PrepareReleaseNotification_Node0 -- No --> E_PrepareReleaseNotification
File: GCX016.cbl
GIVEN:
A cargo record identified as having release status
WHEN:
- The system prepares release notification with cargo identification
- Status details
THEN:
Release notification message is formatted for GCCIIS integration service call
β Consolidated Acceptance Criteria
- The system prepares status change notification with cargo identification and new status details → status change notification message is formatted for GCCIIS integration service call
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_PrepareStatusChangeNotification(["Start Step"])
E_PrepareStatusChangeNotification(["End Step"])
N_PrepareStatusChangeNotification_Node0{"The system prepares status change
notification with cargo
identification and new status
details"}:::decision N_PrepareStatusChangeNotification_Node0_action["Status change notification message
is formatted for GCCIIS integration
service call"]:::main N_PrepareStatusChangeNotification_Node0 -- Yes --> N_PrepareStatusChangeNotification_Node0_action N_PrepareStatusChangeNotification_Node0_action --> E_PrepareStatusChangeNotification S_PrepareStatusChangeNotification --> N_PrepareStatusChangeNotification_Node0 N_PrepareStatusChangeNotification_Node0 -- No --> E_PrepareStatusChangeNotification
notification with cargo
identification and new status
details"}:::decision N_PrepareStatusChangeNotification_Node0_action["Status change notification message
is formatted for GCCIIS integration
service call"]:::main N_PrepareStatusChangeNotification_Node0 -- Yes --> N_PrepareStatusChangeNotification_Node0_action N_PrepareStatusChangeNotification_Node0_action --> E_PrepareStatusChangeNotification S_PrepareStatusChangeNotification --> N_PrepareStatusChangeNotification_Node0 N_PrepareStatusChangeNotification_Node0 -- No --> E_PrepareStatusChangeNotification
File: GCX016.cbl
GIVEN:
A cargo record identified as having general status change
WHEN:
- The system prepares status change notification with cargo identification
- New status details
THEN:
Status change notification message is formatted for GCCIIS integration service call
β Consolidated Acceptance Criteria
- The system checks the integration service call return status → success logging is triggered if call succeeded, error logging if call failed
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IntegrationCallSuccessful(["Start Step"])
E_IntegrationCallSuccessful(["End Step"])
N_IntegrationCallSuccessful_Node0{"The system checks the integration
service call return status"}:::decision N_IntegrationCallSuccessful_Node0_action["Success logging is triggered if
call succeeded, error logging if
call failed"]:::main N_IntegrationCallSuccessful_Node0 -- Yes --> N_IntegrationCallSuccessful_Node0_action N_IntegrationCallSuccessful_Node0_action --> E_IntegrationCallSuccessful S_IntegrationCallSuccessful --> N_IntegrationCallSuccessful_Node0 N_IntegrationCallSuccessful_Node0 -- No --> E_IntegrationCallSuccessful
service call return status"}:::decision N_IntegrationCallSuccessful_Node0_action["Success logging is triggered if
call succeeded, error logging if
call failed"]:::main N_IntegrationCallSuccessful_Node0 -- Yes --> N_IntegrationCallSuccessful_Node0_action N_IntegrationCallSuccessful_Node0_action --> E_IntegrationCallSuccessful S_IntegrationCallSuccessful --> N_IntegrationCallSuccessful_Node0 N_IntegrationCallSuccessful_Node0 -- No --> E_IntegrationCallSuccessful
File: GCX016.cbl
GIVEN:
A completed GCCIIS integration service call with return status
WHEN:
The system checks the integration service call return status
THEN:
Success logging is triggered if call succeeded, error logging if call failed
β Consolidated Acceptance Criteria
- The system logs the successful integration service call → success information is recorded with cargo identification and timestamp
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogIntegrationSuccess(["Start Step"])
E_LogIntegrationSuccess(["End Step"])
N_LogIntegrationSuccess_Node0{"The system logs the successful
integration service call"}:::decision N_LogIntegrationSuccess_Node0_action["Success information is recorded
with cargo identification and
timestamp"]:::main N_LogIntegrationSuccess_Node0 -- Yes --> N_LogIntegrationSuccess_Node0_action N_LogIntegrationSuccess_Node0_action --> E_LogIntegrationSuccess S_LogIntegrationSuccess --> N_LogIntegrationSuccess_Node0 N_LogIntegrationSuccess_Node0 -- No --> E_LogIntegrationSuccess
integration service call"}:::decision N_LogIntegrationSuccess_Node0_action["Success information is recorded
with cargo identification and
timestamp"]:::main N_LogIntegrationSuccess_Node0 -- Yes --> N_LogIntegrationSuccess_Node0_action N_LogIntegrationSuccess_Node0_action --> E_LogIntegrationSuccess S_LogIntegrationSuccess --> N_LogIntegrationSuccess_Node0 N_LogIntegrationSuccess_Node0 -- No --> E_LogIntegrationSuccess
File: GCX016.cbl
GIVEN:
A successful GCCIIS integration service call
WHEN:
The system logs the successful integration service call
THEN:
- Success information is recorded with cargo identification
- Timestamp
β Consolidated Acceptance Criteria
- The system logs the failed integration service call → error information is recorded with cargo identification, error details, and timestamp
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogIntegrationError(["Start Step"])
E_LogIntegrationError(["End Step"])
N_LogIntegrationError_Node0{"The system logs the failed
integration service call"}:::decision N_LogIntegrationError_Node0_action["Error information is recorded with
cargo identification, error details,
and timestamp"]:::exclusion N_LogIntegrationError_Node0 -- Yes -->|Alternative| N_LogIntegrationError_Node0_action N_LogIntegrationError_Node0_action --> E_LogIntegrationError S_LogIntegrationError --> N_LogIntegrationError_Node0 N_LogIntegrationError_Node0 -- No --> E_LogIntegrationError
integration service call"}:::decision N_LogIntegrationError_Node0_action["Error information is recorded with
cargo identification, error details,
and timestamp"]:::exclusion N_LogIntegrationError_Node0 -- Yes -->|Alternative| N_LogIntegrationError_Node0_action N_LogIntegrationError_Node0_action --> E_LogIntegrationError S_LogIntegrationError --> N_LogIntegrationError_Node0 N_LogIntegrationError_Node0 -- No --> E_LogIntegrationError
File: GCX016.cbl
GIVEN:
A failed GCCIIS integration service call
WHEN:
The system logs the failed integration service call
THEN:
Error information is recorded with cargo identification, error details, and timestamp
β Consolidated Acceptance Criteria
- The system updates the cargo record with integration call results → cargo record reflects integration service call status and timestamp for audit trail
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UpdateCargoRecordwithIntegrationStatus(["Start Step"])
E_UpdateCargoRecordwithIntegrationStatus(["End Step"])
N_UpdateCargoRecordwithIntegrationStatus_Node0{"The system updates the cargo record
with integration call results"}:::decision N_UpdateCargoRecordwithIntegrationStatus_Node0_action["Cargo record reflects integration
service call status and timestamp
for audit trail"]:::main N_UpdateCargoRecordwithIntegrationStatus_Node0 -- Yes --> N_UpdateCargoRecordwithIntegrationStatus_Node0_action N_UpdateCargoRecordwithIntegrationStatus_Node0_action --> E_UpdateCargoRecordwithIntegrationStatus S_UpdateCargoRecordwithIntegrationStatus --> N_UpdateCargoRecordwithIntegrationStatus_Node0 N_UpdateCargoRecordwithIntegrationStatus_Node0 -- No --> E_UpdateCargoRecordwithIntegrationStatus
with integration call results"}:::decision N_UpdateCargoRecordwithIntegrationStatus_Node0_action["Cargo record reflects integration
service call status and timestamp
for audit trail"]:::main N_UpdateCargoRecordwithIntegrationStatus_Node0 -- Yes --> N_UpdateCargoRecordwithIntegrationStatus_Node0_action N_UpdateCargoRecordwithIntegrationStatus_Node0_action --> E_UpdateCargoRecordwithIntegrationStatus S_UpdateCargoRecordwithIntegrationStatus --> N_UpdateCargoRecordwithIntegrationStatus_Node0 N_UpdateCargoRecordwithIntegrationStatus_Node0 -- No --> E_UpdateCargoRecordwithIntegrationStatus
File: GCX016.cbl
GIVEN:
A completed GCCIIS integration service call with success or failure status
WHEN:
The system updates the cargo record with integration call results
THEN:
- Cargo record reflects integration service call status
- Timestamp for audit trail
β Consolidated Acceptance Criteria
- The system needs to identify related cargo records by transportation unit → the car ID and waybill number are extracted from the current cargo record for use in subsequent searches
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RetrieveCarIDandWaybillfromCurrentCargo(["Start Step"])
E_RetrieveCarIDandWaybillfromCurrentCargo(["End Step"])
N_RetrieveCarIDandWaybillfromCurrentCargo_Node0{"The system needs to identify
related cargo records by
transportation unit"}:::decision N_RetrieveCarIDandWaybillfromCurrentCargo_Node0_action["The car ID and waybill number are
extracted from the current cargo
record for use in subsequent
searches"]:::main N_RetrieveCarIDandWaybillfromCurrentCargo_Node0 -- Yes --> N_RetrieveCarIDandWaybillfromCurrentCargo_Node0_action N_RetrieveCarIDandWaybillfromCurrentCargo_Node0_action --> E_RetrieveCarIDandWaybillfromCurrentCargo S_RetrieveCarIDandWaybillfromCurrentCargo --> N_RetrieveCarIDandWaybillfromCurrentCargo_Node0 N_RetrieveCarIDandWaybillfromCurrentCargo_Node0 -- No --> E_RetrieveCarIDandWaybillfromCurrentCargo
related cargo records by
transportation unit"}:::decision N_RetrieveCarIDandWaybillfromCurrentCargo_Node0_action["The car ID and waybill number are
extracted from the current cargo
record for use in subsequent
searches"]:::main N_RetrieveCarIDandWaybillfromCurrentCargo_Node0 -- Yes --> N_RetrieveCarIDandWaybillfromCurrentCargo_Node0_action N_RetrieveCarIDandWaybillfromCurrentCargo_Node0_action --> E_RetrieveCarIDandWaybillfromCurrentCargo S_RetrieveCarIDandWaybillfromCurrentCargo --> N_RetrieveCarIDandWaybillfromCurrentCargo_Node0 N_RetrieveCarIDandWaybillfromCurrentCargo_Node0 -- No --> E_RetrieveCarIDandWaybillfromCurrentCargo
File: GCX016.cbl
GIVEN:
A cargo record is being processed for release verification
WHEN:
The system needs to identify related cargo records by transportation unit
THEN:
- The car id
- Waybill number are extracted from the current cargo record for use in subsequent searches
β Consolidated Acceptance Criteria
- The system searches for all related cargo records → all cargo records matching the same car ID and waybill combination are retrieved for group processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SearchAllCargoRecordswithMatchingCarIDandWaybill(["Start Step"])
E_SearchAllCargoRecordswithMatchingCarIDandWaybill(["End Step"])
N_SearchAllCargoRecordswithMatchingCarIDandWaybill_Node0{"The system searches for all related
cargo records"}:::decision N_SearchAllCargoRecordswithMatchingCarIDandWaybill_Node0_action["All cargo records matching the same
car ID and waybill combination are
retrieved for group processing"]:::main N_SearchAllCargoRecordswithMatchingCarIDandWaybill_Node0 -- Yes --> N_SearchAllCargoRecordswithMatchingCarIDandWaybill_Node0_action N_SearchAllCargoRecordswithMatchingCarIDandWaybill_Node0_action --> E_SearchAllCargoRecordswithMatchingCarIDandWaybill S_SearchAllCargoRecordswithMatchingCarIDandWaybill --> N_SearchAllCargoRecordswithMatchingCarIDandWaybill_Node0 N_SearchAllCargoRecordswithMatchingCarIDandWaybill_Node0 -- No --> E_SearchAllCargoRecordswithMatchingCarIDandWaybill
cargo records"}:::decision N_SearchAllCargoRecordswithMatchingCarIDandWaybill_Node0_action["All cargo records matching the same
car ID and waybill combination are
retrieved for group processing"]:::main N_SearchAllCargoRecordswithMatchingCarIDandWaybill_Node0 -- Yes --> N_SearchAllCargoRecordswithMatchingCarIDandWaybill_Node0_action N_SearchAllCargoRecordswithMatchingCarIDandWaybill_Node0_action --> E_SearchAllCargoRecordswithMatchingCarIDandWaybill S_SearchAllCargoRecordswithMatchingCarIDandWaybill --> N_SearchAllCargoRecordswithMatchingCarIDandWaybill_Node0 N_SearchAllCargoRecordswithMatchingCarIDandWaybill_Node0 -- No --> E_SearchAllCargoRecordswithMatchingCarIDandWaybill
File: GCX016.cbl
GIVEN:
A car ID and waybill number have been identified from a cargo record
WHEN:
The system searches for all related cargo records
THEN:
- All cargo records matching the same car id
- Waybill combination are retrieved for group processing
β Consolidated Acceptance Criteria
- The system processes the search results → each cargo record in the result set is processed individually until all records are evaluated
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MoreCargoRecordsFound(["Start Step"])
E_MoreCargoRecordsFound(["End Step"])
N_MoreCargoRecordsFound_Node0{"The system processes the search
results"}:::decision N_MoreCargoRecordsFound_Node0_action["Each cargo record in the result set
is processed individually until all
records are evaluated"]:::main N_MoreCargoRecordsFound_Node0 -- Yes --> N_MoreCargoRecordsFound_Node0_action N_MoreCargoRecordsFound_Node0_action --> E_MoreCargoRecordsFound S_MoreCargoRecordsFound --> N_MoreCargoRecordsFound_Node0 N_MoreCargoRecordsFound_Node0 -- No --> E_MoreCargoRecordsFound
results"}:::decision N_MoreCargoRecordsFound_Node0_action["Each cargo record in the result set
is processed individually until all
records are evaluated"]:::main N_MoreCargoRecordsFound_Node0 -- Yes --> N_MoreCargoRecordsFound_Node0_action N_MoreCargoRecordsFound_Node0_action --> E_MoreCargoRecordsFound S_MoreCargoRecordsFound --> N_MoreCargoRecordsFound_Node0 N_MoreCargoRecordsFound_Node0 -- No --> E_MoreCargoRecordsFound
File: GCX016.cbl
GIVEN:
A search has been performed for cargo records matching a car ID and waybill
WHEN:
The system processes the search results
THEN:
Each cargo record in the result set is processed individually until all records are evaluated
β Consolidated Acceptance Criteria
- The cargo status indicates it has already been released → the cargo is excluded from further release processing and the system continues to the next cargo record
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IsCargoAlreadyReleased(["Start Step"])
E_IsCargoAlreadyReleased(["End Step"])
N_IsCargoAlreadyReleased_Node0{"The cargo status indicates it has
already been released"}:::decision N_IsCargoAlreadyReleased_Node0_action["The cargo is excluded from further
release processing and the system
continues to the next cargo record"]:::main N_IsCargoAlreadyReleased_Node0 -- Yes --> N_IsCargoAlreadyReleased_Node0_action N_IsCargoAlreadyReleased_Node0_action --> E_IsCargoAlreadyReleased S_IsCargoAlreadyReleased --> N_IsCargoAlreadyReleased_Node0 N_IsCargoAlreadyReleased_Node0 -- No --> E_IsCargoAlreadyReleased
already been released"}:::decision N_IsCargoAlreadyReleased_Node0_action["The cargo is excluded from further
release processing and the system
continues to the next cargo record"]:::main N_IsCargoAlreadyReleased_Node0 -- Yes --> N_IsCargoAlreadyReleased_Node0_action N_IsCargoAlreadyReleased_Node0_action --> E_IsCargoAlreadyReleased S_IsCargoAlreadyReleased --> N_IsCargoAlreadyReleased_Node0 N_IsCargoAlreadyReleased_Node0 -- No --> E_IsCargoAlreadyReleased
File: GCX016.cbl
GIVEN:
A cargo record is being evaluated for release eligibility
WHEN:
The cargo status indicates it has already been released
THEN:
- The cargo is excluded from further release processing
- The system continues to the next cargo record
β Consolidated Acceptance Criteria
- The system checks for active hold conditions → if active holds exist, the cargo requires manual release authorization; if no active holds exist, the cargo is eligible for release
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AreThereActiveHolds(["Start Step"])
E_AreThereActiveHolds(["End Step"])
N_AreThereActiveHolds_Node0{"The system checks for active hold
conditions"}:::decision N_AreThereActiveHolds_Node0_action["If active holds exist, the cargo
requires manual release
authorization if no active holds
exist, the cargo is eligible for
release"]:::main N_AreThereActiveHolds_Node0 -- Yes --> N_AreThereActiveHolds_Node0_action N_AreThereActiveHolds_Node0_action --> E_AreThereActiveHolds S_AreThereActiveHolds --> N_AreThereActiveHolds_Node0 N_AreThereActiveHolds_Node0 -- No --> E_AreThereActiveHolds
conditions"}:::decision N_AreThereActiveHolds_Node0_action["If active holds exist, the cargo
requires manual release
authorization if no active holds
exist, the cargo is eligible for
release"]:::main N_AreThereActiveHolds_Node0 -- Yes --> N_AreThereActiveHolds_Node0_action N_AreThereActiveHolds_Node0_action --> E_AreThereActiveHolds S_AreThereActiveHolds --> N_AreThereActiveHolds_Node0 N_AreThereActiveHolds_Node0 -- No --> E_AreThereActiveHolds
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
A cargo record that is not already released is being evaluated
WHEN:
The system checks for active hold conditions
THEN:
If active holds exist, the cargo requires manual release authorization; if no active holds exist, the cargo is eligible for release
β Consolidated Acceptance Criteria
- Manual release authorization has been granted for the cargo → the cargo is marked as release eligible despite the active holds
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IsManualReleaseSet(["Start Step"])
E_IsManualReleaseSet(["End Step"])
N_IsManualReleaseSet_Node0{"Manual release authorization has
been granted for the cargo"}:::decision N_IsManualReleaseSet_Node0_action["The cargo is marked as release
eligible despite the active holds"]:::main N_IsManualReleaseSet_Node0 -- Yes --> N_IsManualReleaseSet_Node0_action N_IsManualReleaseSet_Node0_action --> E_IsManualReleaseSet S_IsManualReleaseSet --> N_IsManualReleaseSet_Node0 N_IsManualReleaseSet_Node0 -- No --> E_IsManualReleaseSet
been granted for the cargo"}:::decision N_IsManualReleaseSet_Node0_action["The cargo is marked as release
eligible despite the active holds"]:::main N_IsManualReleaseSet_Node0 -- Yes --> N_IsManualReleaseSet_Node0_action N_IsManualReleaseSet_Node0_action --> E_IsManualReleaseSet S_IsManualReleaseSet --> N_IsManualReleaseSet_Node0 N_IsManualReleaseSet_Node0 -- No --> E_IsManualReleaseSet
File: GCX016.cbl
GIVEN:
A cargo record has active holds that would normally prevent release
WHEN:
Manual release authorization has been granted for the cargo
THEN:
The cargo is marked as release eligible despite the active holds
β Consolidated Acceptance Criteria
- The release eligibility determination is made → the cargo is marked as release eligible and added to the release eligible list
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MarkCargoasReleaseEligible(["Start Step"])
E_MarkCargoasReleaseEligible(["End Step"])
N_MarkCargoasReleaseEligible_Node0{"The release eligibility
determination is made"}:::decision N_MarkCargoasReleaseEligible_Node0_action["The cargo is marked as release
eligible and added to the release
eligible list"]:::main N_MarkCargoasReleaseEligible_Node0 -- Yes --> N_MarkCargoasReleaseEligible_Node0_action N_MarkCargoasReleaseEligible_Node0_action --> E_MarkCargoasReleaseEligible S_MarkCargoasReleaseEligible --> N_MarkCargoasReleaseEligible_Node0 N_MarkCargoasReleaseEligible_Node0 -- No --> E_MarkCargoasReleaseEligible
determination is made"}:::decision N_MarkCargoasReleaseEligible_Node0_action["The cargo is marked as release
eligible and added to the release
eligible list"]:::main N_MarkCargoasReleaseEligible_Node0 -- Yes --> N_MarkCargoasReleaseEligible_Node0_action N_MarkCargoasReleaseEligible_Node0_action --> E_MarkCargoasReleaseEligible S_MarkCargoasReleaseEligible --> N_MarkCargoasReleaseEligible_Node0 N_MarkCargoasReleaseEligible_Node0 -- No --> E_MarkCargoasReleaseEligible
File: GCX016.cbl
GIVEN:
A cargo record has been evaluated and either has no active holds or has manual release authorization
WHEN:
The release eligibility determination is made
THEN:
- The cargo is marked as release eligible
- Added to the release eligible list
β Consolidated Acceptance Criteria
- The release eligibility determination is made → the cargo is marked as not release eligible and added to the hold list
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MarkCargoasNotReleaseEligible(["Start Step"])
E_MarkCargoasNotReleaseEligible(["End Step"])
N_MarkCargoasNotReleaseEligible_Node0{"The release eligibility
determination is made"}:::decision N_MarkCargoasNotReleaseEligible_Node0_action["The cargo is marked as not release
eligible and added to the hold list"]:::main N_MarkCargoasNotReleaseEligible_Node0 -- Yes --> N_MarkCargoasNotReleaseEligible_Node0_action N_MarkCargoasNotReleaseEligible_Node0_action --> E_MarkCargoasNotReleaseEligible S_MarkCargoasNotReleaseEligible --> N_MarkCargoasNotReleaseEligible_Node0 N_MarkCargoasNotReleaseEligible_Node0 -- No --> E_MarkCargoasNotReleaseEligible
determination is made"}:::decision N_MarkCargoasNotReleaseEligible_Node0_action["The cargo is marked as not release
eligible and added to the hold list"]:::main N_MarkCargoasNotReleaseEligible_Node0 -- Yes --> N_MarkCargoasNotReleaseEligible_Node0_action N_MarkCargoasNotReleaseEligible_Node0_action --> E_MarkCargoasNotReleaseEligible S_MarkCargoasNotReleaseEligible --> N_MarkCargoasNotReleaseEligible_Node0 N_MarkCargoasNotReleaseEligible_Node0 -- No --> E_MarkCargoasNotReleaseEligible
File: GCX016.cbl
GIVEN:
A cargo record has active holds and no manual release authorization has been granted
WHEN:
The release eligibility determination is made
THEN:
- The cargo is marked as not release eligible
- Added to the hold list
β Consolidated Acceptance Criteria
- The system checks if all matching records have been evaluated → if all records are processed, proceed to generate release verification summary; otherwise continue processing remaining records
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AllCargoRecordsProcessed(["Start Step"])
E_AllCargoRecordsProcessed(["End Step"])
N_AllCargoRecordsProcessed_Node0{"The system checks if all matching
records have been evaluated"}:::decision N_AllCargoRecordsProcessed_Node0_action["If all records are processed,
proceed to generate release
verification summary otherwise
continue processing remaining
records"]:::main N_AllCargoRecordsProcessed_Node0 -- Yes --> N_AllCargoRecordsProcessed_Node0_action N_AllCargoRecordsProcessed_Node0_action --> E_AllCargoRecordsProcessed S_AllCargoRecordsProcessed --> N_AllCargoRecordsProcessed_Node0 N_AllCargoRecordsProcessed_Node0 -- No --> E_AllCargoRecordsProcessed
records have been evaluated"}:::decision N_AllCargoRecordsProcessed_Node0_action["If all records are processed,
proceed to generate release
verification summary otherwise
continue processing remaining
records"]:::main N_AllCargoRecordsProcessed_Node0 -- Yes --> N_AllCargoRecordsProcessed_Node0_action N_AllCargoRecordsProcessed_Node0_action --> E_AllCargoRecordsProcessed S_AllCargoRecordsProcessed --> N_AllCargoRecordsProcessed_Node0 N_AllCargoRecordsProcessed_Node0 -- No --> E_AllCargoRecordsProcessed
File: GCX016.cbl
GIVEN:
Cargo records are being processed for a specific car ID and waybill combination
WHEN:
The system checks if all matching records have been evaluated
THEN:
If all records are processed, proceed to generate release verification summary; otherwise continue processing remaining records
β Consolidated Acceptance Criteria
- The system generates the verification summary → a summary report is created showing which cargo records are release eligible and which are held, along with the reasons for hold status
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GenerateReleaseVerificationSummary(["Start Step"])
E_GenerateReleaseVerificationSummary(["End Step"])
N_GenerateReleaseVerificationSummary_Node0{"The system generates the
verification summary"}:::decision N_GenerateReleaseVerificationSummary_Node0_action["A summary report is created showing
which cargo records are release
eligible and which are held, along
with the reasons for hold status"]:::main N_GenerateReleaseVerificationSummary_Node0 -- Yes --> N_GenerateReleaseVerificationSummary_Node0_action N_GenerateReleaseVerificationSummary_Node0_action --> E_GenerateReleaseVerificationSummary S_GenerateReleaseVerificationSummary --> N_GenerateReleaseVerificationSummary_Node0 N_GenerateReleaseVerificationSummary_Node0 -- No --> E_GenerateReleaseVerificationSummary
verification summary"}:::decision N_GenerateReleaseVerificationSummary_Node0_action["A summary report is created showing
which cargo records are release
eligible and which are held, along
with the reasons for hold status"]:::main N_GenerateReleaseVerificationSummary_Node0 -- Yes --> N_GenerateReleaseVerificationSummary_Node0_action N_GenerateReleaseVerificationSummary_Node0_action --> E_GenerateReleaseVerificationSummary S_GenerateReleaseVerificationSummary --> N_GenerateReleaseVerificationSummary_Node0 N_GenerateReleaseVerificationSummary_Node0 -- No --> E_GenerateReleaseVerificationSummary
File: GCX016.cbl
GIVEN:
All cargo records for a car ID and waybill combination have been evaluated for release eligibility
WHEN:
The system generates the verification summary
THEN:
- A summary report is created showing which cargo records are release eligible
- Which are held, along with the reasons for hold status
β Consolidated Acceptance Criteria
- The system updates the release eligibility status → all cargo records in the group have their release eligibility status updated based on the verification results
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UpdateReleaseEligibilityStatusforAllMatchingCargo(["Start Step"])
E_UpdateReleaseEligibilityStatusforAllMatchingCargo(["End Step"])
N_UpdateReleaseEligibilityStatusforAllMatchingCargo_Node0{"The system updates the release
eligibility status"}:::decision N_UpdateReleaseEligibilityStatusforAllMatchingCargo_Node0_action["All cargo records in the group have
their release eligibility status
updated based on the verification
results"]:::main N_UpdateReleaseEligibilityStatusforAllMatchingCargo_Node0 -- Yes --> N_UpdateReleaseEligibilityStatusforAllMatchingCargo_Node0_action N_UpdateReleaseEligibilityStatusforAllMatchingCargo_Node0_action --> E_UpdateReleaseEligibilityStatusforAllMatchingCargo S_UpdateReleaseEligibilityStatusforAllMatchingCargo --> N_UpdateReleaseEligibilityStatusforAllMatchingCargo_Node0 N_UpdateReleaseEligibilityStatusforAllMatchingCargo_Node0 -- No --> E_UpdateReleaseEligibilityStatusforAllMatchingCargo
eligibility status"}:::decision N_UpdateReleaseEligibilityStatusforAllMatchingCargo_Node0_action["All cargo records in the group have
their release eligibility status
updated based on the verification
results"]:::main N_UpdateReleaseEligibilityStatusforAllMatchingCargo_Node0 -- Yes --> N_UpdateReleaseEligibilityStatusforAllMatchingCargo_Node0_action N_UpdateReleaseEligibilityStatusforAllMatchingCargo_Node0_action --> E_UpdateReleaseEligibilityStatusforAllMatchingCargo S_UpdateReleaseEligibilityStatusforAllMatchingCargo --> N_UpdateReleaseEligibilityStatusforAllMatchingCargo_Node0 N_UpdateReleaseEligibilityStatusforAllMatchingCargo_Node0 -- No --> E_UpdateReleaseEligibilityStatusforAllMatchingCargo
File: GCX016.cbl
GIVEN:
Release verification has been completed for all cargo records matching a car ID and waybill
WHEN:
The system updates the release eligibility status
THEN:
All cargo records in the group have their release eligibility status updated based on the verification results
β Consolidated Acceptance Criteria
- If the cargo release status for message generation → the system proceeds with message generation only if cargo is in released status, otherwise terminates the process
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CargoReleaseStatus(["Start Step"])
E_CargoReleaseStatus(["End Step"])
N_CargoReleaseStatus_Node0{"The system evaluates the cargo
release status for message
generation"}:::decision N_CargoReleaseStatus_Node0_action["The system proceeds with message
generation only if cargo is in
released status, otherwise
terminates the process"]:::main N_CargoReleaseStatus_Node0 -- Yes --> N_CargoReleaseStatus_Node0_action N_CargoReleaseStatus_Node0_action --> E_CargoReleaseStatus S_CargoReleaseStatus --> N_CargoReleaseStatus_Node0 N_CargoReleaseStatus_Node0 -- No --> E_CargoReleaseStatus
release status for message
generation"}:::decision N_CargoReleaseStatus_Node0_action["The system proceeds with message
generation only if cargo is in
released status, otherwise
terminates the process"]:::main N_CargoReleaseStatus_Node0 -- Yes --> N_CargoReleaseStatus_Node0_action N_CargoReleaseStatus_Node0_action --> E_CargoReleaseStatus S_CargoReleaseStatus --> N_CargoReleaseStatus_Node0 N_CargoReleaseStatus_Node0 -- No --> E_CargoReleaseStatus
File: GCX016.cbl
GIVEN:
A cargo record exists in the system with a specific release status
WHEN:
The system evaluates the cargo release status for message generation
THEN:
The system proceeds with message generation only if cargo is in released status, otherwise terminates the process
β Consolidated Acceptance Criteria
- The system formats car ID information for release message → the system combines car initial and car number into properly formatted car identification string for message display
- Car ID is available in the system → format car initial and car number into displayable car ID information
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_FormatCarIDInformation(["Start Step"])
E_FormatCarIDInformation(["End Step"])
N_FormatCarIDInformation_Node0{"The system formats car ID
information for release message"}:::decision N_FormatCarIDInformation_Node0_action["The system combines car initial and
car number into properly formatted
car identification string for
message display"]:::main N_FormatCarIDInformation_Node0 -- Yes --> N_FormatCarIDInformation_Node0_action N_FormatCarIDInformation_Node0_action --> E_FormatCarIDInformation S_FormatCarIDInformation --> N_FormatCarIDInformation_Node0 N_FormatCarIDInformation_Node1{"Car ID is available in the system"}:::decision N_FormatCarIDInformation_Node1_action["Format car initial and car number
into displayable car ID information"]:::main N_FormatCarIDInformation_Node1 -- Yes --> N_FormatCarIDInformation_Node1_action N_FormatCarIDInformation_Node1_action --> E_FormatCarIDInformation N_FormatCarIDInformation_Node0 -- No --> N_FormatCarIDInformation_Node1 N_FormatCarIDInformation_Node1 -- No --> E_FormatCarIDInformation
information for release message"}:::decision N_FormatCarIDInformation_Node0_action["The system combines car initial and
car number into properly formatted
car identification string for
message display"]:::main N_FormatCarIDInformation_Node0 -- Yes --> N_FormatCarIDInformation_Node0_action N_FormatCarIDInformation_Node0_action --> E_FormatCarIDInformation S_FormatCarIDInformation --> N_FormatCarIDInformation_Node0 N_FormatCarIDInformation_Node1{"Car ID is available in the system"}:::decision N_FormatCarIDInformation_Node1_action["Format car initial and car number
into displayable car ID information"]:::main N_FormatCarIDInformation_Node1 -- Yes --> N_FormatCarIDInformation_Node1_action N_FormatCarIDInformation_Node1_action --> E_FormatCarIDInformation N_FormatCarIDInformation_Node0 -- No --> N_FormatCarIDInformation_Node1 N_FormatCarIDInformation_Node1 -- No --> E_FormatCarIDInformation
File: GCX016.cbl
GIVEN:
A cargo record has associated car identification information from N7 segments
WHEN:
The system formats car ID information for release message
THEN:
- The system combines car initial
- Car number into properly formatted car identification string for message display
File: GCX016.cbl
GIVEN:
A cargo record with car identification data
WHEN:
Car ID is available in the system
THEN:
- Format car initial
- Car number into displayable car id information
β Consolidated Acceptance Criteria
- The system formats waybill information for release message → the system includes formatted waybill number and associated transportation details in the message content
- Waybill number is available in the system → format waybill number into displayable format for reports
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_FormatWaybillInformation(["Start Step"])
E_FormatWaybillInformation(["End Step"])
N_FormatWaybillInformation_Node0{"The system formats waybill
information for release message"}:::decision N_FormatWaybillInformation_Node0_action["The system includes formatted
waybill number and associated
transportation details in the
message content"]:::main N_FormatWaybillInformation_Node0 -- Yes --> N_FormatWaybillInformation_Node0_action N_FormatWaybillInformation_Node0_action --> E_FormatWaybillInformation S_FormatWaybillInformation --> N_FormatWaybillInformation_Node0 N_FormatWaybillInformation_Node1{"Waybill number is available in the
system"}:::decision N_FormatWaybillInformation_Node1_action["Format waybill number into
displayable format for reports"]:::main N_FormatWaybillInformation_Node1 -- Yes --> N_FormatWaybillInformation_Node1_action N_FormatWaybillInformation_Node1_action --> E_FormatWaybillInformation N_FormatWaybillInformation_Node0 -- No --> N_FormatWaybillInformation_Node1 N_FormatWaybillInformation_Node1 -- No --> E_FormatWaybillInformation
information for release message"}:::decision N_FormatWaybillInformation_Node0_action["The system includes formatted
waybill number and associated
transportation details in the
message content"]:::main N_FormatWaybillInformation_Node0 -- Yes --> N_FormatWaybillInformation_Node0_action N_FormatWaybillInformation_Node0_action --> E_FormatWaybillInformation S_FormatWaybillInformation --> N_FormatWaybillInformation_Node0 N_FormatWaybillInformation_Node1{"Waybill number is available in the
system"}:::decision N_FormatWaybillInformation_Node1_action["Format waybill number into
displayable format for reports"]:::main N_FormatWaybillInformation_Node1 -- Yes --> N_FormatWaybillInformation_Node1_action N_FormatWaybillInformation_Node1_action --> E_FormatWaybillInformation N_FormatWaybillInformation_Node0 -- No --> N_FormatWaybillInformation_Node1 N_FormatWaybillInformation_Node1 -- No --> E_FormatWaybillInformation
File: GCX016.cbl
GIVEN:
A cargo record contains waybill number and transportation document details
WHEN:
The system formats waybill information for release message
THEN:
- The system includes formatted waybill number
- Associated transportation details in the message content
File: GCX016.cbl
GIVEN:
A cargo record with waybill number data
WHEN:
Waybill number is available in the system
THEN:
Format waybill number into displayable format for reports
β Consolidated Acceptance Criteria
- The system formats US-CCN status for release message → the system includes formatted US-CCN number and current status description in the message
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_FormatUSCCNStatus(["Start Step"])
E_FormatUSCCNStatus(["End Step"])
N_FormatUSCCNStatus_Node0{"The system formats US-CCN status
for release message"}:::decision N_FormatUSCCNStatus_Node0_action["The system includes formatted
US-CCN number and current status
description in the message"]:::main N_FormatUSCCNStatus_Node0 -- Yes --> N_FormatUSCCNStatus_Node0_action N_FormatUSCCNStatus_Node0_action --> E_FormatUSCCNStatus S_FormatUSCCNStatus --> N_FormatUSCCNStatus_Node0 N_FormatUSCCNStatus_Node0 -- No --> E_FormatUSCCNStatus
for release message"}:::decision N_FormatUSCCNStatus_Node0_action["The system includes formatted
US-CCN number and current status
description in the message"]:::main N_FormatUSCCNStatus_Node0 -- Yes --> N_FormatUSCCNStatus_Node0_action N_FormatUSCCNStatus_Node0_action --> E_FormatUSCCNStatus S_FormatUSCCNStatus --> N_FormatUSCCNStatus_Node0 N_FormatUSCCNStatus_Node0 -- No --> E_FormatUSCCNStatus
File: GCX016.cbl
GIVEN:
A cargo record has US-CCN key and current status information
WHEN:
The system formats US-CCN status for release message
THEN:
- The system includes formatted us-ccn number
- Current status description in the message
β Consolidated Acceptance Criteria
- The system formats disposition code details for release message → the system includes disposition code value and corresponding description text in the formatted message
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_FormatDispositionCodeDetails(["Start Step"])
E_FormatDispositionCodeDetails(["End Step"])
N_FormatDispositionCodeDetails_Node0{"The system formats disposition code
details for release message"}:::decision N_FormatDispositionCodeDetails_Node0_action["The system includes disposition
code value and corresponding
description text in the formatted
message"]:::main N_FormatDispositionCodeDetails_Node0 -- Yes --> N_FormatDispositionCodeDetails_Node0_action N_FormatDispositionCodeDetails_Node0_action --> E_FormatDispositionCodeDetails S_FormatDispositionCodeDetails --> N_FormatDispositionCodeDetails_Node0 N_FormatDispositionCodeDetails_Node0 -- No --> E_FormatDispositionCodeDetails
details for release message"}:::decision N_FormatDispositionCodeDetails_Node0_action["The system includes disposition
code value and corresponding
description text in the formatted
message"]:::main N_FormatDispositionCodeDetails_Node0 -- Yes --> N_FormatDispositionCodeDetails_Node0_action N_FormatDispositionCodeDetails_Node0_action --> E_FormatDispositionCodeDetails S_FormatDispositionCodeDetails --> N_FormatDispositionCodeDetails_Node0 N_FormatDispositionCodeDetails_Node0 -- No --> E_FormatDispositionCodeDetails
File: GCX016.cbl
GIVEN:
A cargo processing transaction contains disposition code from X4 segment
WHEN:
The system formats disposition code details for release message
THEN:
- The system includes disposition code value
- Corresponding description text in the formatted message
β Consolidated Acceptance Criteria
- The system includes broker entry numbers in release message → the system adds broker identification and related customs entry numbers to the message content
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IncludeBrokerEntryNumbers(["Start Step"])
E_IncludeBrokerEntryNumbers(["End Step"])
N_IncludeBrokerEntryNumbers_Node0{"The system includes broker entry
numbers in release message"}:::decision N_IncludeBrokerEntryNumbers_Node0_action["The system adds broker
identification and related customs
entry numbers to the message content"]:::main N_IncludeBrokerEntryNumbers_Node0 -- Yes --> N_IncludeBrokerEntryNumbers_Node0_action N_IncludeBrokerEntryNumbers_Node0_action --> E_IncludeBrokerEntryNumbers S_IncludeBrokerEntryNumbers --> N_IncludeBrokerEntryNumbers_Node0 N_IncludeBrokerEntryNumbers_Node0 -- No --> E_IncludeBrokerEntryNumbers
numbers in release message"}:::decision N_IncludeBrokerEntryNumbers_Node0_action["The system adds broker
identification and related customs
entry numbers to the message content"]:::main N_IncludeBrokerEntryNumbers_Node0 -- Yes --> N_IncludeBrokerEntryNumbers_Node0_action N_IncludeBrokerEntryNumbers_Node0_action --> E_IncludeBrokerEntryNumbers S_IncludeBrokerEntryNumbers --> N_IncludeBrokerEntryNumbers_Node0 N_IncludeBrokerEntryNumbers_Node0 -- No --> E_IncludeBrokerEntryNumbers
File: GCX016.cbl
GIVEN:
A cargo record has associated broker information and customs entry numbers
WHEN:
The system includes broker entry numbers in release message
THEN:
- The system adds broker identification
- Related customs entry numbers to the message content
β Consolidated Acceptance Criteria
- The system determines if this is a broker bond message → the system identifies whether special broker bond message formatting rules should be applied
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_BrokerBondMessage(["Start Step"])
E_BrokerBondMessage(["End Step"])
N_BrokerBondMessage_Node0{"The system determines if this is a
broker bond message"}:::decision N_BrokerBondMessage_Node0_action["The system identifies whether
special broker bond message
formatting rules should be applied"]:::main N_BrokerBondMessage_Node0 -- Yes --> N_BrokerBondMessage_Node0_action N_BrokerBondMessage_Node0_action --> E_BrokerBondMessage S_BrokerBondMessage --> N_BrokerBondMessage_Node0 N_BrokerBondMessage_Node0 -- No --> E_BrokerBondMessage
broker bond message"}:::decision N_BrokerBondMessage_Node0_action["The system identifies whether
special broker bond message
formatting rules should be applied"]:::main N_BrokerBondMessage_Node0 -- Yes --> N_BrokerBondMessage_Node0_action N_BrokerBondMessage_Node0_action --> E_BrokerBondMessage S_BrokerBondMessage --> N_BrokerBondMessage_Node0 N_BrokerBondMessage_Node0 -- No --> E_BrokerBondMessage
File: GCX016.cbl
GIVEN:
A release message is being generated for cargo with broker and bond information
WHEN:
The system determines if this is a broker bond message
THEN:
The system identifies whether special broker bond message formatting rules should be applied
β Consolidated Acceptance Criteria
- The system applies special broker bond formatting → the system formats the message using broker bond specific layout rules and includes required bond-related information
- The message type is identified as a broker bond message → apply special formatting rules including bond number, broker information, and enhanced cargo details specific to bond processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ApplySpecialBrokerBondFormatting(["Start Step"])
E_ApplySpecialBrokerBondFormatting(["End Step"])
N_ApplySpecialBrokerBondFormatting_Node0{"The system applies special broker
bond formatting"}:::decision N_ApplySpecialBrokerBondFormatting_Node0_action["The system formats the message
using broker bond specific layout
rules and includes required
bond-related information"]:::main N_ApplySpecialBrokerBondFormatting_Node0 -- Yes --> N_ApplySpecialBrokerBondFormatting_Node0_action N_ApplySpecialBrokerBondFormatting_Node0_action --> E_ApplySpecialBrokerBondFormatting S_ApplySpecialBrokerBondFormatting --> N_ApplySpecialBrokerBondFormatting_Node0 N_ApplySpecialBrokerBondFormatting_Node1{"The message type is identified as a
broker bond message"}:::decision N_ApplySpecialBrokerBondFormatting_Node1_action["Apply special formatting rules
including bond number, broker
information, and enhanced cargo
details specific to bond processing"]:::main N_ApplySpecialBrokerBondFormatting_Node1 -- Yes --> N_ApplySpecialBrokerBondFormatting_Node1_action N_ApplySpecialBrokerBondFormatting_Node1_action --> E_ApplySpecialBrokerBondFormatting N_ApplySpecialBrokerBondFormatting_Node0 -- No --> N_ApplySpecialBrokerBondFormatting_Node1 N_ApplySpecialBrokerBondFormatting_Node1 -- No --> E_ApplySpecialBrokerBondFormatting
bond formatting"}:::decision N_ApplySpecialBrokerBondFormatting_Node0_action["The system formats the message
using broker bond specific layout
rules and includes required
bond-related information"]:::main N_ApplySpecialBrokerBondFormatting_Node0 -- Yes --> N_ApplySpecialBrokerBondFormatting_Node0_action N_ApplySpecialBrokerBondFormatting_Node0_action --> E_ApplySpecialBrokerBondFormatting S_ApplySpecialBrokerBondFormatting --> N_ApplySpecialBrokerBondFormatting_Node0 N_ApplySpecialBrokerBondFormatting_Node1{"The message type is identified as a
broker bond message"}:::decision N_ApplySpecialBrokerBondFormatting_Node1_action["Apply special formatting rules
including bond number, broker
information, and enhanced cargo
details specific to bond processing"]:::main N_ApplySpecialBrokerBondFormatting_Node1 -- Yes --> N_ApplySpecialBrokerBondFormatting_Node1_action N_ApplySpecialBrokerBondFormatting_Node1_action --> E_ApplySpecialBrokerBondFormatting N_ApplySpecialBrokerBondFormatting_Node0 -- No --> N_ApplySpecialBrokerBondFormatting_Node1 N_ApplySpecialBrokerBondFormatting_Node1 -- No --> E_ApplySpecialBrokerBondFormatting
File: GCX016.cbl
GIVEN:
A release message has been identified as a broker bond message type
WHEN:
The system applies special broker bond formatting
THEN:
- The system formats the message using broker bond specific layout rules
- Includes required bond-related information
File: GCX016.cbl
GIVEN:
A Merlin message is being formatted for cargo processing
WHEN:
The message type is identified as a broker bond message
THEN:
Apply special formatting rules including bond number, broker information, and enhanced cargo details specific to bond processing
β Consolidated Acceptance Criteria
- The system formats quantity action details → the system includes formatted information showing whether quantities are being added to or subtracted from release amounts
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_FormatQuantityActionDetails(["Start Step"])
E_FormatQuantityActionDetails(["End Step"])
N_FormatQuantityActionDetails_Node0{"The system formats quantity action
details"}:::decision N_FormatQuantityActionDetails_Node0_action["The system includes formatted
information showing whether
quantities are being added to or
subtracted from release amounts"]:::main N_FormatQuantityActionDetails_Node0 -- Yes --> N_FormatQuantityActionDetails_Node0_action N_FormatQuantityActionDetails_Node0_action --> E_FormatQuantityActionDetails S_FormatQuantityActionDetails --> N_FormatQuantityActionDetails_Node0 N_FormatQuantityActionDetails_Node0 -- No --> E_FormatQuantityActionDetails
details"}:::decision N_FormatQuantityActionDetails_Node0_action["The system includes formatted
information showing whether
quantities are being added to or
subtracted from release amounts"]:::main N_FormatQuantityActionDetails_Node0 -- Yes --> N_FormatQuantityActionDetails_Node0_action N_FormatQuantityActionDetails_Node0_action --> E_FormatQuantityActionDetails S_FormatQuantityActionDetails --> N_FormatQuantityActionDetails_Node0 N_FormatQuantityActionDetails_Node0 -- No --> E_FormatQuantityActionDetails
File: GCX016.cbl
GIVEN:
A cargo transaction involves quantity changes through disposition code processing
WHEN:
The system formats quantity action details
THEN:
The system includes formatted information showing whether quantities are being added to or subtracted from release amounts
β Consolidated Acceptance Criteria
- The system includes equipment type information in release message → the system adds equipment type details including container or trailer specifications to the message content
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IncludeEquipmentTypeInformation(["Start Step"])
E_IncludeEquipmentTypeInformation(["End Step"])
N_IncludeEquipmentTypeInformation_Node0{"The system includes equipment type
information in release message"}:::decision N_IncludeEquipmentTypeInformation_Node0_action["The system adds equipment type
details including container or
trailer specifications to the
message content"]:::main N_IncludeEquipmentTypeInformation_Node0 -- Yes --> N_IncludeEquipmentTypeInformation_Node0_action N_IncludeEquipmentTypeInformation_Node0_action --> E_IncludeEquipmentTypeInformation S_IncludeEquipmentTypeInformation --> N_IncludeEquipmentTypeInformation_Node0 N_IncludeEquipmentTypeInformation_Node0 -- No --> E_IncludeEquipmentTypeInformation
information in release message"}:::decision N_IncludeEquipmentTypeInformation_Node0_action["The system adds equipment type
details including container or
trailer specifications to the
message content"]:::main N_IncludeEquipmentTypeInformation_Node0 -- Yes --> N_IncludeEquipmentTypeInformation_Node0_action N_IncludeEquipmentTypeInformation_Node0_action --> E_IncludeEquipmentTypeInformation S_IncludeEquipmentTypeInformation --> N_IncludeEquipmentTypeInformation_Node0 N_IncludeEquipmentTypeInformation_Node0 -- No --> E_IncludeEquipmentTypeInformation
File: GCX016.cbl
GIVEN:
Container type validation has passed and equipment information is available
WHEN:
The system includes equipment type information in release message
THEN:
The system adds equipment type details including container or trailer specifications to the message content
β Consolidated Acceptance Criteria
- The system maps internal status to description → the system converts internal status codes to corresponding user-friendly description text for message readability
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MapInternalStatustoDescription(["Start Step"])
E_MapInternalStatustoDescription(["End Step"])
N_MapInternalStatustoDescription_Node0{"The system maps internal status to
description"}:::decision N_MapInternalStatustoDescription_Node0_action["The system converts internal status
codes to corresponding user-friendly
description text for message
readability"]:::main N_MapInternalStatustoDescription_Node0 -- Yes --> N_MapInternalStatustoDescription_Node0_action N_MapInternalStatustoDescription_Node0_action --> E_MapInternalStatustoDescription S_MapInternalStatustoDescription --> N_MapInternalStatustoDescription_Node0 N_MapInternalStatustoDescription_Node0 -- No --> E_MapInternalStatustoDescription
description"}:::decision N_MapInternalStatustoDescription_Node0_action["The system converts internal status
codes to corresponding user-friendly
description text for message
readability"]:::main N_MapInternalStatustoDescription_Node0 -- Yes --> N_MapInternalStatustoDescription_Node0_action N_MapInternalStatustoDescription_Node0_action --> E_MapInternalStatustoDescription S_MapInternalStatustoDescription --> N_MapInternalStatustoDescription_Node0 N_MapInternalStatustoDescription_Node0 -- No --> E_MapInternalStatustoDescription
File: GCX016.cbl
GIVEN:
A cargo record has internal status codes that need to be displayed in release messages
WHEN:
The system maps internal status to description
THEN:
The system converts internal status codes to corresponding user-friendly description text for message readability
β Consolidated Acceptance Criteria
- The system formats the complete release message → the system assembles all components into a properly structured, complete release message ready for transmission
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_FormatCompleteReleaseMessage(["Start Step"])
E_FormatCompleteReleaseMessage(["End Step"])
N_FormatCompleteReleaseMessage_Node0{"The system formats the complete
release message"}:::decision N_FormatCompleteReleaseMessage_Node0_action["The system assembles all components
into a properly structured, complete
release message ready for
transmission"]:::main N_FormatCompleteReleaseMessage_Node0 -- Yes --> N_FormatCompleteReleaseMessage_Node0_action N_FormatCompleteReleaseMessage_Node0_action --> E_FormatCompleteReleaseMessage S_FormatCompleteReleaseMessage --> N_FormatCompleteReleaseMessage_Node0 N_FormatCompleteReleaseMessage_Node0 -- No --> E_FormatCompleteReleaseMessage
release message"}:::decision N_FormatCompleteReleaseMessage_Node0_action["The system assembles all components
into a properly structured, complete
release message ready for
transmission"]:::main N_FormatCompleteReleaseMessage_Node0 -- Yes --> N_FormatCompleteReleaseMessage_Node0_action N_FormatCompleteReleaseMessage_Node0_action --> E_FormatCompleteReleaseMessage S_FormatCompleteReleaseMessage --> N_FormatCompleteReleaseMessage_Node0 N_FormatCompleteReleaseMessage_Node0 -- No --> E_FormatCompleteReleaseMessage
File: GCX016.cbl
GIVEN:
All individual message components have been formatted and prepared
WHEN:
The system formats the complete release message
THEN:
The system assembles all components into a properly structured, complete release message ready for transmission
β Consolidated Acceptance Criteria
- The system routes the message to configured users → the system sends the release message to all appropriate recipients based on message type and configured routing rules
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RouteMessagetoConfiguredUsers(["Start Step"])
E_RouteMessagetoConfiguredUsers(["End Step"])
N_RouteMessagetoConfiguredUsers_Node0{"The system routes the message to
configured users"}:::decision N_RouteMessagetoConfiguredUsers_Node0_action["The system sends the release
message to all appropriate
recipients based on message type and
configured routing rules"]:::main N_RouteMessagetoConfiguredUsers_Node0 -- Yes --> N_RouteMessagetoConfiguredUsers_Node0_action N_RouteMessagetoConfiguredUsers_Node0_action --> E_RouteMessagetoConfiguredUsers S_RouteMessagetoConfiguredUsers --> N_RouteMessagetoConfiguredUsers_Node0 N_RouteMessagetoConfiguredUsers_Node0 -- No --> E_RouteMessagetoConfiguredUsers
configured users"}:::decision N_RouteMessagetoConfiguredUsers_Node0_action["The system sends the release
message to all appropriate
recipients based on message type and
configured routing rules"]:::main N_RouteMessagetoConfiguredUsers_Node0 -- Yes --> N_RouteMessagetoConfiguredUsers_Node0_action N_RouteMessagetoConfiguredUsers_Node0_action --> E_RouteMessagetoConfiguredUsers S_RouteMessagetoConfiguredUsers --> N_RouteMessagetoConfiguredUsers_Node0 N_RouteMessagetoConfiguredUsers_Node0 -- No --> E_RouteMessagetoConfiguredUsers
File: GCX016.cbl
GIVEN:
A complete release message has been formatted and user routing configuration exists
WHEN:
The system routes the message to configured users
THEN:
- The system sends the release message to all appropriate recipients based on message type
- Configured routing rules
β Consolidated Acceptance Criteria
- The system logs message generation activity → the system records message generation details including timestamp, message type, and routing information for audit purposes
- The system logs the activity → the system records message generation details, delivery status, user information, and timestamps for audit trail
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogMessageGenerationActivity(["Start Step"])
E_LogMessageGenerationActivity(["End Step"])
N_LogMessageGenerationActivity_Node0{"The system logs message generation
activity"}:::decision N_LogMessageGenerationActivity_Node0_action["The system records message
generation details including
timestamp, message type, and routing
information for audit purposes"]:::main N_LogMessageGenerationActivity_Node0 -- Yes --> N_LogMessageGenerationActivity_Node0_action N_LogMessageGenerationActivity_Node0_action --> E_LogMessageGenerationActivity S_LogMessageGenerationActivity --> N_LogMessageGenerationActivity_Node0 N_LogMessageGenerationActivity_Node1{"The system logs the activity"}:::decision N_LogMessageGenerationActivity_Node1_action["The system records message
generation details, delivery status,
user information, and timestamps for
audit trail"]:::main N_LogMessageGenerationActivity_Node1 -- Yes --> N_LogMessageGenerationActivity_Node1_action N_LogMessageGenerationActivity_Node1_action --> E_LogMessageGenerationActivity N_LogMessageGenerationActivity_Node0 -- No --> N_LogMessageGenerationActivity_Node1 N_LogMessageGenerationActivity_Node1 -- No --> E_LogMessageGenerationActivity
activity"}:::decision N_LogMessageGenerationActivity_Node0_action["The system records message
generation details including
timestamp, message type, and routing
information for audit purposes"]:::main N_LogMessageGenerationActivity_Node0 -- Yes --> N_LogMessageGenerationActivity_Node0_action N_LogMessageGenerationActivity_Node0_action --> E_LogMessageGenerationActivity S_LogMessageGenerationActivity --> N_LogMessageGenerationActivity_Node0 N_LogMessageGenerationActivity_Node1{"The system logs the activity"}:::decision N_LogMessageGenerationActivity_Node1_action["The system records message
generation details, delivery status,
user information, and timestamps for
audit trail"]:::main N_LogMessageGenerationActivity_Node1 -- Yes --> N_LogMessageGenerationActivity_Node1_action N_LogMessageGenerationActivity_Node1_action --> E_LogMessageGenerationActivity N_LogMessageGenerationActivity_Node0 -- No --> N_LogMessageGenerationActivity_Node1 N_LogMessageGenerationActivity_Node1 -- No --> E_LogMessageGenerationActivity
File: GCX016.cbl
GIVEN:
A release message has been successfully generated and routed
WHEN:
The system logs message generation activity
THEN:
The system records message generation details including timestamp, message type, and routing information for audit purposes
File: GCX016.cbl
GIVEN:
A message has been processed and delivered or rerouted
WHEN:
The system logs the activity
THEN:
The system records message generation details, delivery status, user information, and timestamps for audit trail
β Consolidated Acceptance Criteria
- The system prepares the export message content → the system formats the message with export-specific information and cargo details
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_PrepareExportMessageContent(["Start Step"])
E_PrepareExportMessageContent(["End Step"])
N_PrepareExportMessageContent_Node0{"The system prepares the export
message content"}:::decision N_PrepareExportMessageContent_Node0_action["The system formats the message with
export-specific information and
cargo details"]:::main N_PrepareExportMessageContent_Node0 -- Yes --> N_PrepareExportMessageContent_Node0_action N_PrepareExportMessageContent_Node0_action --> E_PrepareExportMessageContent S_PrepareExportMessageContent --> N_PrepareExportMessageContent_Node0 N_PrepareExportMessageContent_Node0 -- No --> E_PrepareExportMessageContent
message content"}:::decision N_PrepareExportMessageContent_Node0_action["The system formats the message with
export-specific information and
cargo details"]:::main N_PrepareExportMessageContent_Node0 -- Yes --> N_PrepareExportMessageContent_Node0_action N_PrepareExportMessageContent_Node0_action --> E_PrepareExportMessageContent S_PrepareExportMessageContent --> N_PrepareExportMessageContent_Node0 N_PrepareExportMessageContent_Node0 -- No --> E_PrepareExportMessageContent
File: GCX016.cbl
GIVEN:
A standard export message type has been set
WHEN:
The system prepares the export message content
THEN:
- The system formats the message with export-specific information
- Cargo details
β Consolidated Acceptance Criteria
- The system prepares the cancellation message content → the system formats the message with cancellation-specific information and reason codes
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_PrepareCancellationMessageContent(["Start Step"])
E_PrepareCancellationMessageContent(["End Step"])
N_PrepareCancellationMessageContent_Node0{"The system prepares the
cancellation message content"}:::decision N_PrepareCancellationMessageContent_Node0_action["The system formats the message with
cancellation-specific information
and reason codes"]:::main N_PrepareCancellationMessageContent_Node0 -- Yes --> N_PrepareCancellationMessageContent_Node0_action N_PrepareCancellationMessageContent_Node0_action --> E_PrepareCancellationMessageContent S_PrepareCancellationMessageContent --> N_PrepareCancellationMessageContent_Node0 N_PrepareCancellationMessageContent_Node0 -- No --> E_PrepareCancellationMessageContent
cancellation message content"}:::decision N_PrepareCancellationMessageContent_Node0_action["The system formats the message with
cancellation-specific information
and reason codes"]:::main N_PrepareCancellationMessageContent_Node0 -- Yes --> N_PrepareCancellationMessageContent_Node0_action N_PrepareCancellationMessageContent_Node0_action --> E_PrepareCancellationMessageContent S_PrepareCancellationMessageContent --> N_PrepareCancellationMessageContent_Node0 N_PrepareCancellationMessageContent_Node0 -- No --> E_PrepareCancellationMessageContent
File: GCX016.cbl
GIVEN:
An export cancellation message type has been set
WHEN:
The system prepares the cancellation message content
THEN:
- The system formats the message with cancellation-specific information
- Reason codes
β Consolidated Acceptance Criteria
- The system includes cargo details in the message → the system adds cargo identification, quantities, and export-related information to the message content
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IncludeCargoDetails(["Start Step"])
E_IncludeCargoDetails(["End Step"])
N_IncludeCargoDetails_Node0{"The system includes cargo details
in the message"}:::decision N_IncludeCargoDetails_Node0_action["The system adds cargo
identification, quantities, and
export-related information to the
message content"]:::main N_IncludeCargoDetails_Node0 -- Yes --> N_IncludeCargoDetails_Node0_action N_IncludeCargoDetails_Node0_action --> E_IncludeCargoDetails S_IncludeCargoDetails --> N_IncludeCargoDetails_Node0 N_IncludeCargoDetails_Node0 -- No --> E_IncludeCargoDetails
in the message"}:::decision N_IncludeCargoDetails_Node0_action["The system adds cargo
identification, quantities, and
export-related information to the
message content"]:::main N_IncludeCargoDetails_Node0 -- Yes --> N_IncludeCargoDetails_Node0_action N_IncludeCargoDetails_Node0_action --> E_IncludeCargoDetails S_IncludeCargoDetails --> N_IncludeCargoDetails_Node0 N_IncludeCargoDetails_Node0 -- No --> E_IncludeCargoDetails
File: GCX016.cbl
GIVEN:
An export message is being prepared
WHEN:
The system includes cargo details in the message
THEN:
The system adds cargo identification, quantities, and export-related information to the message content
β Consolidated Acceptance Criteria
- The system includes cancellation reason information → the system adds the cancellation reason code and description to the message content
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IncludeCancellationReason(["Start Step"])
E_IncludeCancellationReason(["End Step"])
N_IncludeCancellationReason_Node0{"The system includes cancellation
reason information"}:::decision N_IncludeCancellationReason_Node0_action["The system adds the cancellation
reason code and description to the
message content"]:::main N_IncludeCancellationReason_Node0 -- Yes --> N_IncludeCancellationReason_Node0_action N_IncludeCancellationReason_Node0_action --> E_IncludeCancellationReason S_IncludeCancellationReason --> N_IncludeCancellationReason_Node0 N_IncludeCancellationReason_Node0 -- No --> E_IncludeCancellationReason
reason information"}:::decision N_IncludeCancellationReason_Node0_action["The system adds the cancellation
reason code and description to the
message content"]:::main N_IncludeCancellationReason_Node0 -- Yes --> N_IncludeCancellationReason_Node0_action N_IncludeCancellationReason_Node0_action --> E_IncludeCancellationReason S_IncludeCancellationReason --> N_IncludeCancellationReason_Node0 N_IncludeCancellationReason_Node0 -- No --> E_IncludeCancellationReason
File: GCX016.cbl
GIVEN:
An export cancellation message is being prepared
WHEN:
The system includes cancellation reason information
THEN:
- The system adds the cancellation reason code
- Description to the message content
β Consolidated Acceptance Criteria
- The system formats the message for USCS transmission → the system creates a properly formatted USCS export message with all required fields and structure
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_FormatUSCSExportMessage(["Start Step"])
E_FormatUSCSExportMessage(["End Step"])
N_FormatUSCSExportMessage_Node0{"The system formats the message for
USCS transmission"}:::decision N_FormatUSCSExportMessage_Node0_action["The system creates a properly
formatted USCS export message with
all required fields and structure"]:::main N_FormatUSCSExportMessage_Node0 -- Yes --> N_FormatUSCSExportMessage_Node0_action N_FormatUSCSExportMessage_Node0_action --> E_FormatUSCSExportMessage S_FormatUSCSExportMessage --> N_FormatUSCSExportMessage_Node0 N_FormatUSCSExportMessage_Node0 -- No --> E_FormatUSCSExportMessage
USCS transmission"}:::decision N_FormatUSCSExportMessage_Node0_action["The system creates a properly
formatted USCS export message with
all required fields and structure"]:::main N_FormatUSCSExportMessage_Node0 -- Yes --> N_FormatUSCSExportMessage_Node0_action N_FormatUSCSExportMessage_Node0_action --> E_FormatUSCSExportMessage S_FormatUSCSExportMessage --> N_FormatUSCSExportMessage_Node0 N_FormatUSCSExportMessage_Node0 -- No --> E_FormatUSCSExportMessage
File: GCX016.cbl
GIVEN:
Export message content has been prepared with cargo details
WHEN:
The system formats the message for USCS transmission
THEN:
- The system creates a properly formatted uscs export message with all required fields
- Structure
β Consolidated Acceptance Criteria
- The system formats the cancellation message for USCS transmission → the system creates a properly formatted USCS cancellation message with all required fields and structure
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_FormatUSCSCancellationMessage(["Start Step"])
E_FormatUSCSCancellationMessage(["End Step"])
N_FormatUSCSCancellationMessage_Node0{"The system formats the cancellation
message for USCS transmission"}:::decision N_FormatUSCSCancellationMessage_Node0_action["The system creates a properly
formatted USCS cancellation message
with all required fields and
structure"]:::main N_FormatUSCSCancellationMessage_Node0 -- Yes --> N_FormatUSCSCancellationMessage_Node0_action N_FormatUSCSCancellationMessage_Node0_action --> E_FormatUSCSCancellationMessage S_FormatUSCSCancellationMessage --> N_FormatUSCSCancellationMessage_Node0 N_FormatUSCSCancellationMessage_Node0 -- No --> E_FormatUSCSCancellationMessage
message for USCS transmission"}:::decision N_FormatUSCSCancellationMessage_Node0_action["The system creates a properly
formatted USCS cancellation message
with all required fields and
structure"]:::main N_FormatUSCSCancellationMessage_Node0 -- Yes --> N_FormatUSCSCancellationMessage_Node0_action N_FormatUSCSCancellationMessage_Node0_action --> E_FormatUSCSCancellationMessage S_FormatUSCSCancellationMessage --> N_FormatUSCSCancellationMessage_Node0 N_FormatUSCSCancellationMessage_Node0 -- No --> E_FormatUSCSCancellationMessage
File: GCX016.cbl
GIVEN:
Cancellation message content has been prepared with reason information
WHEN:
The system formats the cancellation message for USCS transmission
THEN:
- The system creates a properly formatted uscs cancellation message with all required fields
- Structure
β Consolidated Acceptance Criteria
- The system routes the cancellation message for transmission → the system sends the cancellation message to designated cancellation recipients for processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RoutetoCancellationRecipients(["Start Step"])
E_RoutetoCancellationRecipients(["End Step"])
N_RoutetoCancellationRecipients_Node0{"The system routes the cancellation
message for transmission"}:::decision N_RoutetoCancellationRecipients_Node0_action["The system sends the cancellation
message to designated cancellation
recipients for processing"]:::main N_RoutetoCancellationRecipients_Node0 -- Yes --> N_RoutetoCancellationRecipients_Node0_action N_RoutetoCancellationRecipients_Node0_action --> E_RoutetoCancellationRecipients S_RoutetoCancellationRecipients --> N_RoutetoCancellationRecipients_Node0 N_RoutetoCancellationRecipients_Node0 -- No --> E_RoutetoCancellationRecipients
message for transmission"}:::decision N_RoutetoCancellationRecipients_Node0_action["The system sends the cancellation
message to designated cancellation
recipients for processing"]:::main N_RoutetoCancellationRecipients_Node0 -- Yes --> N_RoutetoCancellationRecipients_Node0_action N_RoutetoCancellationRecipients_Node0_action --> E_RoutetoCancellationRecipients S_RoutetoCancellationRecipients --> N_RoutetoCancellationRecipients_Node0 N_RoutetoCancellationRecipients_Node0 -- No --> E_RoutetoCancellationRecipients
File: GCX016.cbl
GIVEN:
A USCS cancellation message has been formatted
WHEN:
The system routes the cancellation message for transmission
THEN:
The system sends the cancellation message to designated cancellation recipients for processing
β Consolidated Acceptance Criteria
- The system logs the export operation → the system records the export operation details including cargo information and timestamp for audit purposes
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogExportOperation(["Start Step"])
E_LogExportOperation(["End Step"])
N_LogExportOperation_Node0{"The system logs the export
operation"}:::decision N_LogExportOperation_Node0_action["The system records the export
operation details including cargo
information and timestamp for audit
purposes"]:::main N_LogExportOperation_Node0 -- Yes --> N_LogExportOperation_Node0_action N_LogExportOperation_Node0_action --> E_LogExportOperation S_LogExportOperation --> N_LogExportOperation_Node0 N_LogExportOperation_Node0 -- No --> E_LogExportOperation
operation"}:::decision N_LogExportOperation_Node0_action["The system records the export
operation details including cargo
information and timestamp for audit
purposes"]:::main N_LogExportOperation_Node0 -- Yes --> N_LogExportOperation_Node0_action N_LogExportOperation_Node0_action --> E_LogExportOperation S_LogExportOperation --> N_LogExportOperation_Node0 N_LogExportOperation_Node0 -- No --> E_LogExportOperation
File: GCX016.cbl
GIVEN:
An export message has been routed to USEXP basket
WHEN:
The system logs the export operation
THEN:
- The system records the export operation details including cargo information
- Timestamp for audit purposes
β Consolidated Acceptance Criteria
- The system logs the cancellation operation → the system records the cancellation operation details including reason and timestamp for audit purposes
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogCancellationOperation(["Start Step"])
E_LogCancellationOperation(["End Step"])
N_LogCancellationOperation_Node0{"The system logs the cancellation
operation"}:::decision N_LogCancellationOperation_Node0_action["The system records the cancellation
operation details including reason
and timestamp for audit purposes"]:::main N_LogCancellationOperation_Node0 -- Yes --> N_LogCancellationOperation_Node0_action N_LogCancellationOperation_Node0_action --> E_LogCancellationOperation S_LogCancellationOperation --> N_LogCancellationOperation_Node0 N_LogCancellationOperation_Node0 -- No --> E_LogCancellationOperation
operation"}:::decision N_LogCancellationOperation_Node0_action["The system records the cancellation
operation details including reason
and timestamp for audit purposes"]:::main N_LogCancellationOperation_Node0 -- Yes --> N_LogCancellationOperation_Node0_action N_LogCancellationOperation_Node0_action --> E_LogCancellationOperation S_LogCancellationOperation --> N_LogCancellationOperation_Node0 N_LogCancellationOperation_Node0 -- No --> E_LogCancellationOperation
File: GCX016.cbl
GIVEN:
A cancellation message has been routed to recipients
WHEN:
The system logs the cancellation operation
THEN:
- The system records the cancellation operation details including reason
- Timestamp for audit purposes
β Consolidated Acceptance Criteria
- The system updates the cargo export status → the system sets the cargo status to exported and updates relevant export flags and timestamps
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UpdateCargoExportStatus(["Start Step"])
E_UpdateCargoExportStatus(["End Step"])
N_UpdateCargoExportStatus_Node0{"The system updates the cargo export
status"}:::decision N_UpdateCargoExportStatus_Node0_action["The system sets the cargo status to
exported and updates relevant export
flags and timestamps"]:::main N_UpdateCargoExportStatus_Node0 -- Yes --> N_UpdateCargoExportStatus_Node0_action N_UpdateCargoExportStatus_Node0_action --> E_UpdateCargoExportStatus S_UpdateCargoExportStatus --> N_UpdateCargoExportStatus_Node0 N_UpdateCargoExportStatus_Node0 -- No --> E_UpdateCargoExportStatus
status"}:::decision N_UpdateCargoExportStatus_Node0_action["The system sets the cargo status to
exported and updates relevant export
flags and timestamps"]:::main N_UpdateCargoExportStatus_Node0 -- Yes --> N_UpdateCargoExportStatus_Node0_action N_UpdateCargoExportStatus_Node0_action --> E_UpdateCargoExportStatus S_UpdateCargoExportStatus --> N_UpdateCargoExportStatus_Node0 N_UpdateCargoExportStatus_Node0 -- No --> E_UpdateCargoExportStatus
File: GCX016.cbl
GIVEN:
An export operation has been logged successfully
WHEN:
The system updates the cargo export status
THEN:
- The system sets the cargo status to exported
- Updates relevant export flags
- Timestamps
β Consolidated Acceptance Criteria
- The system restores the previous cargo status → the system reverts the cargo status to its state before the export operation and clears export-related flags
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RestorePreviousStatus(["Start Step"])
E_RestorePreviousStatus(["End Step"])
N_RestorePreviousStatus_Node0{"The system restores the previous
cargo status"}:::decision N_RestorePreviousStatus_Node0_action["The system reverts the cargo status
to its state before the export
operation and clears export-related
flags"]:::main N_RestorePreviousStatus_Node0 -- Yes --> N_RestorePreviousStatus_Node0_action N_RestorePreviousStatus_Node0_action --> E_RestorePreviousStatus S_RestorePreviousStatus --> N_RestorePreviousStatus_Node0 N_RestorePreviousStatus_Node0 -- No --> E_RestorePreviousStatus
cargo status"}:::decision N_RestorePreviousStatus_Node0_action["The system reverts the cargo status
to its state before the export
operation and clears export-related
flags"]:::main N_RestorePreviousStatus_Node0 -- Yes --> N_RestorePreviousStatus_Node0_action N_RestorePreviousStatus_Node0_action --> E_RestorePreviousStatus S_RestorePreviousStatus --> N_RestorePreviousStatus_Node0 N_RestorePreviousStatus_Node0 -- No --> E_RestorePreviousStatus
File: GCX016.cbl
GIVEN:
A cancellation operation has been logged successfully
WHEN:
The system restores the previous cargo status
THEN:
- The system reverts the cargo status to its state before the export operation
- Clears export-related flags
β Consolidated Acceptance Criteria
- The system handles the invalid container type → the system bypasses export message generation and completes the process without creating export messages
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_HandleInvalidContainerType(["Start Step"])
E_HandleInvalidContainerType(["End Step"])
N_HandleInvalidContainerType_Node0{"The system handles the invalid
container type"}:::decision N_HandleInvalidContainerType_Node0_action["The system bypasses export message
generation and completes the process
without creating export messages"]:::exclusion N_HandleInvalidContainerType_Node0 -- Yes -->|Alternative| N_HandleInvalidContainerType_Node0_action N_HandleInvalidContainerType_Node0_action --> E_HandleInvalidContainerType S_HandleInvalidContainerType --> N_HandleInvalidContainerType_Node0 N_HandleInvalidContainerType_Node0 -- No --> E_HandleInvalidContainerType
container type"}:::decision N_HandleInvalidContainerType_Node0_action["The system bypasses export message
generation and completes the process
without creating export messages"]:::exclusion N_HandleInvalidContainerType_Node0 -- Yes -->|Alternative| N_HandleInvalidContainerType_Node0_action N_HandleInvalidContainerType_Node0_action --> E_HandleInvalidContainerType S_HandleInvalidContainerType --> N_HandleInvalidContainerType_Node0 N_HandleInvalidContainerType_Node0 -- No --> E_HandleInvalidContainerType
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
A container type validation has failed
WHEN:
The system handles the invalid container type
THEN:
- The system bypasses export message generation
- Completes the process without creating export messages
β Consolidated Acceptance Criteria
- The system needs to prepare the message for transmission → the system calls Z110-PREP-EMCSEND service to handle message preparation and routing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CallZ110PREPEMCSENDforMessagePreparation(["Start Step"])
E_CallZ110PREPEMCSENDforMessagePreparation(["End Step"])
N_CallZ110PREPEMCSENDforMessagePreparation_Node0{"The system needs to prepare the
message for transmission"}:::decision N_CallZ110PREPEMCSENDforMessagePreparation_Node0_action["The system calls Z110-PREP-EMCSEND
service to handle message
preparation and routing"]:::main N_CallZ110PREPEMCSENDforMessagePreparation_Node0 -- Yes --> N_CallZ110PREPEMCSENDforMessagePreparation_Node0_action N_CallZ110PREPEMCSENDforMessagePreparation_Node0_action --> E_CallZ110PREPEMCSENDforMessagePreparation S_CallZ110PREPEMCSENDforMessagePreparation --> N_CallZ110PREPEMCSENDforMessagePreparation_Node0 N_CallZ110PREPEMCSENDforMessagePreparation_Node0 -- No --> E_CallZ110PREPEMCSENDforMessagePreparation
message for transmission"}:::decision N_CallZ110PREPEMCSENDforMessagePreparation_Node0_action["The system calls Z110-PREP-EMCSEND
service to handle message
preparation and routing"]:::main N_CallZ110PREPEMCSENDforMessagePreparation_Node0 -- Yes --> N_CallZ110PREPEMCSENDforMessagePreparation_Node0_action N_CallZ110PREPEMCSENDforMessagePreparation_Node0_action --> E_CallZ110PREPEMCSENDforMessagePreparation S_CallZ110PREPEMCSENDforMessagePreparation --> N_CallZ110PREPEMCSENDforMessagePreparation_Node0 N_CallZ110PREPEMCSENDforMessagePreparation_Node0 -- No --> E_CallZ110PREPEMCSENDforMessagePreparation
File: GCX016.cbl
GIVEN:
A message type has been determined for arrival or cancellation processing
WHEN:
The system needs to prepare the message for transmission
THEN:
- The system calls z110-prep-emcsend service to handle message preparation
- Routing
β Consolidated Acceptance Criteria
- The system formats the arrival message → the system includes cargo details, arrival date, time, and location information in the message format
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_FormatArrivalMessagewithCargoDetails(["Start Step"])
E_FormatArrivalMessagewithCargoDetails(["End Step"])
N_FormatArrivalMessagewithCargoDetails_Node0{"The system formats the arrival
message"}:::decision N_FormatArrivalMessagewithCargoDetails_Node0_action["The system includes cargo details,
arrival date, time, and location
information in the message format"]:::main N_FormatArrivalMessagewithCargoDetails_Node0 -- Yes --> N_FormatArrivalMessagewithCargoDetails_Node0_action N_FormatArrivalMessagewithCargoDetails_Node0_action --> E_FormatArrivalMessagewithCargoDetails S_FormatArrivalMessagewithCargoDetails --> N_FormatArrivalMessagewithCargoDetails_Node0 N_FormatArrivalMessagewithCargoDetails_Node0 -- No --> E_FormatArrivalMessagewithCargoDetails
message"}:::decision N_FormatArrivalMessagewithCargoDetails_Node0_action["The system includes cargo details,
arrival date, time, and location
information in the message format"]:::main N_FormatArrivalMessagewithCargoDetails_Node0 -- Yes --> N_FormatArrivalMessagewithCargoDetails_Node0_action N_FormatArrivalMessagewithCargoDetails_Node0_action --> E_FormatArrivalMessagewithCargoDetails S_FormatArrivalMessagewithCargoDetails --> N_FormatArrivalMessagewithCargoDetails_Node0 N_FormatArrivalMessagewithCargoDetails_Node0 -- No --> E_FormatArrivalMessagewithCargoDetails
File: GCX016.cbl
GIVEN:
An arrival message type has been set and cargo details are available
WHEN:
The system formats the arrival message
THEN:
The system includes cargo details, arrival date, time, and location information in the message format
β Consolidated Acceptance Criteria
- The system formats the cancellation message → the system includes cancellation reason, original arrival details, and instructions for re-arrival in the message format
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_FormatCancellationMessagewithReason(["Start Step"])
E_FormatCancellationMessagewithReason(["End Step"])
N_FormatCancellationMessagewithReason_Node0{"The system formats the cancellation
message"}:::decision N_FormatCancellationMessagewithReason_Node0_action["The system includes cancellation
reason, original arrival details,
and instructions for re-arrival in
the message format"]:::main N_FormatCancellationMessagewithReason_Node0 -- Yes --> N_FormatCancellationMessagewithReason_Node0_action N_FormatCancellationMessagewithReason_Node0_action --> E_FormatCancellationMessagewithReason S_FormatCancellationMessagewithReason --> N_FormatCancellationMessagewithReason_Node0 N_FormatCancellationMessagewithReason_Node0 -- No --> E_FormatCancellationMessagewithReason
message"}:::decision N_FormatCancellationMessagewithReason_Node0_action["The system includes cancellation
reason, original arrival details,
and instructions for re-arrival in
the message format"]:::main N_FormatCancellationMessagewithReason_Node0 -- Yes --> N_FormatCancellationMessagewithReason_Node0_action N_FormatCancellationMessagewithReason_Node0_action --> E_FormatCancellationMessagewithReason S_FormatCancellationMessagewithReason --> N_FormatCancellationMessagewithReason_Node0 N_FormatCancellationMessagewithReason_Node0 -- No --> E_FormatCancellationMessagewithReason
File: GCX016.cbl
GIVEN:
A cancellation message type has been set and cancellation reason is available
WHEN:
The system formats the cancellation message
THEN:
The system includes cancellation reason, original arrival details, and instructions for re-arrival in the message format
β Consolidated Acceptance Criteria
- The system routes the message → the system sends the message to USCS operations with appropriate priority and delivery confirmation
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RoutetoUSCSOperations(["Start Step"])
E_RoutetoUSCSOperations(["End Step"])
N_RoutetoUSCSOperations_Node0{"The system routes the message"}:::decision
N_RoutetoUSCSOperations_Node0_action["The system sends the message to
USCS operations with appropriate
priority and delivery confirmation"]:::main N_RoutetoUSCSOperations_Node0 -- Yes --> N_RoutetoUSCSOperations_Node0_action N_RoutetoUSCSOperations_Node0_action --> E_RoutetoUSCSOperations S_RoutetoUSCSOperations --> N_RoutetoUSCSOperations_Node0 N_RoutetoUSCSOperations_Node0 -- No --> E_RoutetoUSCSOperations
USCS operations with appropriate
priority and delivery confirmation"]:::main N_RoutetoUSCSOperations_Node0 -- Yes --> N_RoutetoUSCSOperations_Node0_action N_RoutetoUSCSOperations_Node0_action --> E_RoutetoUSCSOperations S_RoutetoUSCSOperations --> N_RoutetoUSCSOperations_Node0 N_RoutetoUSCSOperations_Node0 -- No --> E_RoutetoUSCSOperations
File: GCX016.cbl
GIVEN:
A message requires routing and USCS operations is the target destination
WHEN:
The system routes the message
THEN:
- The system sends the message to uscs operations with appropriate priority
- Delivery confirmation
β Consolidated Acceptance Criteria
- If equipment type for additional routing → the system also routes the message to export baskets for container-specific processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RoutetoExportBasketsforContainerTypes(["Start Step"])
E_RoutetoExportBasketsforContainerTypes(["End Step"])
N_RoutetoExportBasketsforContainerTypes_Node0{"The system evaluates equipment type
for additional routing"}:::decision N_RoutetoExportBasketsforContainerTypes_Node0_action["The system also routes the message
to export baskets for
container-specific processing"]:::main N_RoutetoExportBasketsforContainerTypes_Node0 -- Yes --> N_RoutetoExportBasketsforContainerTypes_Node0_action N_RoutetoExportBasketsforContainerTypes_Node0_action --> E_RoutetoExportBasketsforContainerTypes S_RoutetoExportBasketsforContainerTypes --> N_RoutetoExportBasketsforContainerTypes_Node0 N_RoutetoExportBasketsforContainerTypes_Node0 -- No --> E_RoutetoExportBasketsforContainerTypes
for additional routing"}:::decision N_RoutetoExportBasketsforContainerTypes_Node0_action["The system also routes the message
to export baskets for
container-specific processing"]:::main N_RoutetoExportBasketsforContainerTypes_Node0 -- Yes --> N_RoutetoExportBasketsforContainerTypes_Node0_action N_RoutetoExportBasketsforContainerTypes_Node0_action --> E_RoutetoExportBasketsforContainerTypes S_RoutetoExportBasketsforContainerTypes --> N_RoutetoExportBasketsforContainerTypes_Node0 N_RoutetoExportBasketsforContainerTypes_Node0 -- No --> E_RoutetoExportBasketsforContainerTypes
File: GCX016.cbl
GIVEN:
A message is routed to USCS operations and involves container equipment types
WHEN:
The system evaluates equipment type for additional routing
THEN:
The system also routes the message to export baskets for container-specific processing
β Consolidated Acceptance Criteria
- The system determines destination users → the system identifies target users based on user configuration, message type, and operational requirements
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_DetermineDestinationUsers(["Start Step"])
E_DetermineDestinationUsers(["End Step"])
N_DetermineDestinationUsers_Node0{"The system determines destination
users"}:::decision N_DetermineDestinationUsers_Node0_action["The system identifies target users
based on user configuration, message
type, and operational requirements"]:::main N_DetermineDestinationUsers_Node0 -- Yes --> N_DetermineDestinationUsers_Node0_action N_DetermineDestinationUsers_Node0_action --> E_DetermineDestinationUsers S_DetermineDestinationUsers --> N_DetermineDestinationUsers_Node0 N_DetermineDestinationUsers_Node0 -- No --> E_DetermineDestinationUsers
users"}:::decision N_DetermineDestinationUsers_Node0_action["The system identifies target users
based on user configuration, message
type, and operational requirements"]:::main N_DetermineDestinationUsers_Node0 -- Yes --> N_DetermineDestinationUsers_Node0_action N_DetermineDestinationUsers_Node0_action --> E_DetermineDestinationUsers S_DetermineDestinationUsers --> N_DetermineDestinationUsers_Node0 N_DetermineDestinationUsers_Node0 -- No --> E_DetermineDestinationUsers
File: GCX016.cbl
GIVEN:
A message has been categorized with appropriate keywords
WHEN:
The system determines destination users
THEN:
The system identifies target users based on user configuration, message type, and operational requirements
β Consolidated Acceptance Criteria
- The system validates user configuration → the system confirms that users are valid, active, and properly configured to receive the message type
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ValidUsers(["Start Step"])
E_ValidUsers(["End Step"])
N_ValidUsers_Node0{"The system validates user
configuration"}:::decision N_ValidUsers_Node0_action["The system confirms that users are
valid, active, and properly
configured to receive the message
type"]:::main N_ValidUsers_Node0 -- Yes --> N_ValidUsers_Node0_action N_ValidUsers_Node0_action --> E_ValidUsers S_ValidUsers --> N_ValidUsers_Node0 N_ValidUsers_Node0 -- No --> E_ValidUsers
configuration"}:::decision N_ValidUsers_Node0_action["The system confirms that users are
valid, active, and properly
configured to receive the message
type"]:::main N_ValidUsers_Node0 -- Yes --> N_ValidUsers_Node0_action N_ValidUsers_Node0_action --> E_ValidUsers S_ValidUsers --> N_ValidUsers_Node0 N_ValidUsers_Node0 -- No --> E_ValidUsers
File: GCX016.cbl
GIVEN:
Destination users have been determined for message delivery
WHEN:
The system validates user configuration
THEN:
The system confirms that users are valid, active, and properly configured to receive the message type
β Consolidated Acceptance Criteria
- The system sends the message → the system delivers the message to all configured users with delivery confirmation and tracking
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SendtoConfiguredUsers(["Start Step"])
E_SendtoConfiguredUsers(["End Step"])
N_SendtoConfiguredUsers_Node0{"The system sends the message"}:::decision
N_SendtoConfiguredUsers_Node0_action["The system delivers the message to
all configured users with delivery
confirmation and tracking"]:::main N_SendtoConfiguredUsers_Node0 -- Yes --> N_SendtoConfiguredUsers_Node0_action N_SendtoConfiguredUsers_Node0_action --> E_SendtoConfiguredUsers S_SendtoConfiguredUsers --> N_SendtoConfiguredUsers_Node0 N_SendtoConfiguredUsers_Node0 -- No --> E_SendtoConfiguredUsers
all configured users with delivery
confirmation and tracking"]:::main N_SendtoConfiguredUsers_Node0 -- Yes --> N_SendtoConfiguredUsers_Node0_action N_SendtoConfiguredUsers_Node0_action --> E_SendtoConfiguredUsers S_SendtoConfiguredUsers --> N_SendtoConfiguredUsers_Node0 N_SendtoConfiguredUsers_Node0 -- No --> E_SendtoConfiguredUsers
File: GCX016.cbl
GIVEN:
Valid configured users have been identified for message delivery
WHEN:
The system sends the message
THEN:
- The system delivers the message to all configured users with delivery confirmation
- Tracking
β Consolidated Acceptance Criteria
- The system reroutes the message → the system sends the message to default users and generates a notification about the rerouting due to invalid user configuration
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ReroutetoDefaultUserswithNotification(["Start Step"])
E_ReroutetoDefaultUserswithNotification(["End Step"])
N_ReroutetoDefaultUserswithNotification_Node0{"The system reroutes the message"}:::decision
N_ReroutetoDefaultUserswithNotification_Node0_action["The system sends the message to
default users and generates a
notification about the rerouting due
to invalid user configuration"]:::main N_ReroutetoDefaultUserswithNotification_Node0 -- Yes --> N_ReroutetoDefaultUserswithNotification_Node0_action N_ReroutetoDefaultUserswithNotification_Node0_action --> E_ReroutetoDefaultUserswithNotification S_ReroutetoDefaultUserswithNotification --> N_ReroutetoDefaultUserswithNotification_Node0 N_ReroutetoDefaultUserswithNotification_Node0 -- No --> E_ReroutetoDefaultUserswithNotification
default users and generates a
notification about the rerouting due
to invalid user configuration"]:::main N_ReroutetoDefaultUserswithNotification_Node0 -- Yes --> N_ReroutetoDefaultUserswithNotification_Node0_action N_ReroutetoDefaultUserswithNotification_Node0_action --> E_ReroutetoDefaultUserswithNotification S_ReroutetoDefaultUserswithNotification --> N_ReroutetoDefaultUserswithNotification_Node0 N_ReroutetoDefaultUserswithNotification_Node0 -- No --> E_ReroutetoDefaultUserswithNotification
File: GCX016.cbl
GIVEN:
Configured users are invalid or unavailable for message delivery
WHEN:
The system reroutes the message
THEN:
- The system sends the message to default users
- Generates a notification about the rerouting due to invalid user configuration
β Consolidated Acceptance Criteria
- Creating a new cargo record → extract and populate vessel name, voyage number, manifest type, and related manifest fields into the cargo record
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExtractManifestInformationfromM10Segment(["Start Step"])
E_ExtractManifestInformationfromM10Segment(["End Step"])
N_ExtractManifestInformationfromM10Segment_Node0{"Creating a new cargo record"}:::decision
N_ExtractManifestInformationfromM10Segment_Node0_action["Extract and populate vessel name,
voyage number, manifest type, and
related manifest fields into the
cargo record"]:::main N_ExtractManifestInformationfromM10Segment_Node0 -- Yes --> N_ExtractManifestInformationfromM10Segment_Node0_action N_ExtractManifestInformationfromM10Segment_Node0_action --> E_ExtractManifestInformationfromM10Segment S_ExtractManifestInformationfromM10Segment --> N_ExtractManifestInformationfromM10Segment_Node0 N_ExtractManifestInformationfromM10Segment_Node0 -- No --> E_ExtractManifestInformationfromM10Segment
voyage number, manifest type, and
related manifest fields into the
cargo record"]:::main N_ExtractManifestInformationfromM10Segment_Node0 -- Yes --> N_ExtractManifestInformationfromM10Segment_Node0_action N_ExtractManifestInformationfromM10Segment_Node0_action --> E_ExtractManifestInformationfromM10Segment S_ExtractManifestInformationfromM10Segment --> N_ExtractManifestInformationfromM10Segment_Node0 N_ExtractManifestInformationfromM10Segment_Node0 -- No --> E_ExtractManifestInformationfromM10Segment
File: GCX016.cbl
GIVEN:
An M10 segment contains manifest information
WHEN:
Creating a new cargo record
THEN:
- Extract
- Populate vessel name, voyage number, manifest type, and related manifest fields into the cargo record
β Consolidated Acceptance Criteria
- Setting up cargo transportation details → assign SCAC code from manifest and set appropriate transport type based on carrier information
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetSCACCodeandTransportType(["Start Step"])
E_SetSCACCodeandTransportType(["End Step"])
N_SetSCACCodeandTransportType_Node0{"Setting up cargo transportation
details"}:::decision N_SetSCACCodeandTransportType_Node0_action["Assign SCAC code from manifest and
set appropriate transport type based
on carrier information"]:::main N_SetSCACCodeandTransportType_Node0 -- Yes --> N_SetSCACCodeandTransportType_Node0_action N_SetSCACCodeandTransportType_Node0_action --> E_SetSCACCodeandTransportType S_SetSCACCodeandTransportType --> N_SetSCACCodeandTransportType_Node0 N_SetSCACCodeandTransportType_Node0 -- No --> E_SetSCACCodeandTransportType
details"}:::decision N_SetSCACCodeandTransportType_Node0_action["Assign SCAC code from manifest and
set appropriate transport type based
on carrier information"]:::main N_SetSCACCodeandTransportType_Node0 -- Yes --> N_SetSCACCodeandTransportType_Node0_action N_SetSCACCodeandTransportType_Node0_action --> E_SetSCACCodeandTransportType S_SetSCACCodeandTransportType --> N_SetSCACCodeandTransportType_Node0 N_SetSCACCodeandTransportType_Node0 -- No --> E_SetSCACCodeandTransportType
File: GCX016.cbl
GIVEN:
Manifest information is available from M10 segment
WHEN:
Setting up cargo transportation details
THEN:
- Assign scac code from manifest
- Set appropriate transport type based on carrier information
β Consolidated Acceptance Criteria
- Creating cargo record → set country code and vessel name from manifest data into cargo record fields
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetCountryCodeandVesselName(["Start Step"])
E_SetCountryCodeandVesselName(["End Step"])
N_SetCountryCodeandVesselName_Node0{"Creating cargo record"}:::decision
N_SetCountryCodeandVesselName_Node0_action["Set country code and vessel name
from manifest data into cargo record
fields"]:::main N_SetCountryCodeandVesselName_Node0 -- Yes --> N_SetCountryCodeandVesselName_Node0_action N_SetCountryCodeandVesselName_Node0_action --> E_SetCountryCodeandVesselName S_SetCountryCodeandVesselName --> N_SetCountryCodeandVesselName_Node0 N_SetCountryCodeandVesselName_Node0 -- No --> E_SetCountryCodeandVesselName
from manifest data into cargo record
fields"]:::main N_SetCountryCodeandVesselName_Node0 -- Yes --> N_SetCountryCodeandVesselName_Node0_action N_SetCountryCodeandVesselName_Node0_action --> E_SetCountryCodeandVesselName S_SetCountryCodeandVesselName --> N_SetCountryCodeandVesselName_Node0 N_SetCountryCodeandVesselName_Node0 -- No --> E_SetCountryCodeandVesselName
File: GCX016.cbl
GIVEN:
Manifest contains country and vessel information
WHEN:
Creating cargo record
THEN:
- Set country code
- Vessel name from manifest data into cargo record fields
β Consolidated Acceptance Criteria
- Setting up cargo shipment details → assign flight/voyage number and cargo quantity from manifest to cargo record
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetFlightVoyageNumberandQuantity(["Start Step"])
E_SetFlightVoyageNumberandQuantity(["End Step"])
N_SetFlightVoyageNumberandQuantity_Node0{"Setting up cargo shipment details"}:::decision
N_SetFlightVoyageNumberandQuantity_Node0_action["Assign flightvoyage number and
cargo quantity from manifest to
cargo record"]:::main N_SetFlightVoyageNumberandQuantity_Node0 -- Yes --> N_SetFlightVoyageNumberandQuantity_Node0_action N_SetFlightVoyageNumberandQuantity_Node0_action --> E_SetFlightVoyageNumberandQuantity S_SetFlightVoyageNumberandQuantity --> N_SetFlightVoyageNumberandQuantity_Node0 N_SetFlightVoyageNumberandQuantity_Node0 -- No --> E_SetFlightVoyageNumberandQuantity
cargo quantity from manifest to
cargo record"]:::main N_SetFlightVoyageNumberandQuantity_Node0 -- Yes --> N_SetFlightVoyageNumberandQuantity_Node0_action N_SetFlightVoyageNumberandQuantity_Node0_action --> E_SetFlightVoyageNumberandQuantity S_SetFlightVoyageNumberandQuantity --> N_SetFlightVoyageNumberandQuantity_Node0 N_SetFlightVoyageNumberandQuantity_Node0 -- No --> E_SetFlightVoyageNumberandQuantity
File: GCX016.cbl
GIVEN:
Manifest contains voyage and quantity data
WHEN:
Setting up cargo shipment details
THEN:
- Assign flight/voyage number
- Cargo quantity from manifest to cargo record
β Consolidated Acceptance Criteria
- Finalizing manifest details in cargo record → set manifest type code and condition response based on manifest classification
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetManifestTypeCodeandConditionResponse(["Start Step"])
E_SetManifestTypeCodeandConditionResponse(["End Step"])
N_SetManifestTypeCodeandConditionResponse_Node0{"Finalizing manifest details in
cargo record"}:::decision N_SetManifestTypeCodeandConditionResponse_Node0_action["Set manifest type code and
condition response based on manifest
classification"]:::main N_SetManifestTypeCodeandConditionResponse_Node0 -- Yes --> N_SetManifestTypeCodeandConditionResponse_Node0_action N_SetManifestTypeCodeandConditionResponse_Node0_action --> E_SetManifestTypeCodeandConditionResponse S_SetManifestTypeCodeandConditionResponse --> N_SetManifestTypeCodeandConditionResponse_Node0 N_SetManifestTypeCodeandConditionResponse_Node0 -- No --> E_SetManifestTypeCodeandConditionResponse
cargo record"}:::decision N_SetManifestTypeCodeandConditionResponse_Node0_action["Set manifest type code and
condition response based on manifest
classification"]:::main N_SetManifestTypeCodeandConditionResponse_Node0 -- Yes --> N_SetManifestTypeCodeandConditionResponse_Node0_action N_SetManifestTypeCodeandConditionResponse_Node0_action --> E_SetManifestTypeCodeandConditionResponse S_SetManifestTypeCodeandConditionResponse --> N_SetManifestTypeCodeandConditionResponse_Node0 N_SetManifestTypeCodeandConditionResponse_Node0 -- No --> E_SetManifestTypeCodeandConditionResponse
File: GCX016.cbl
GIVEN:
Manifest type information is available
WHEN:
Finalizing manifest details in cargo record
THEN:
- Set manifest type code
- Condition response based on manifest classification
β Consolidated Acceptance Criteria
- Creating cargo record with customs data → extract broker information, entry numbers, bond details, and disposition codes from X4 segment into cargo record
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExtractX4SegmentInformation(["Start Step"])
E_ExtractX4SegmentInformation(["End Step"])
N_ExtractX4SegmentInformation_Node0{"Creating cargo record with customs
data"}:::decision N_ExtractX4SegmentInformation_Node0_action["Extract broker information, entry
numbers, bond details, and
disposition codes from X4 segment
into cargo record"]:::main N_ExtractX4SegmentInformation_Node0 -- Yes --> N_ExtractX4SegmentInformation_Node0_action N_ExtractX4SegmentInformation_Node0_action --> E_ExtractX4SegmentInformation S_ExtractX4SegmentInformation --> N_ExtractX4SegmentInformation_Node0 N_ExtractX4SegmentInformation_Node0 -- No --> E_ExtractX4SegmentInformation
data"}:::decision N_ExtractX4SegmentInformation_Node0_action["Extract broker information, entry
numbers, bond details, and
disposition codes from X4 segment
into cargo record"]:::main N_ExtractX4SegmentInformation_Node0 -- Yes --> N_ExtractX4SegmentInformation_Node0_action N_ExtractX4SegmentInformation_Node0_action --> E_ExtractX4SegmentInformation S_ExtractX4SegmentInformation --> N_ExtractX4SegmentInformation_Node0 N_ExtractX4SegmentInformation_Node0 -- No --> E_ExtractX4SegmentInformation
File: GCX016.cbl
GIVEN:
An X4 segment contains customs release information
WHEN:
Creating cargo record with customs data
THEN:
Extract broker information, entry numbers, bond details, and disposition codes from X4 segment into cargo record
β Consolidated Acceptance Criteria
- Setting up cargo broker details → populate broker ID, name, and contact information from X4 segment into cargo record
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetBrokerInformation(["Start Step"])
E_SetBrokerInformation(["End Step"])
N_SetBrokerInformation_Node0{"Setting up cargo broker details"}:::decision
N_SetBrokerInformation_Node0_action["Populate broker ID, name, and
contact information from X4 segment
into cargo record"]:::main N_SetBrokerInformation_Node0 -- Yes --> N_SetBrokerInformation_Node0_action N_SetBrokerInformation_Node0_action --> E_SetBrokerInformation S_SetBrokerInformation --> N_SetBrokerInformation_Node0 N_SetBrokerInformation_Node0 -- No --> E_SetBrokerInformation
contact information from X4 segment
into cargo record"]:::main N_SetBrokerInformation_Node0 -- Yes --> N_SetBrokerInformation_Node0_action N_SetBrokerInformation_Node0_action --> E_SetBrokerInformation S_SetBrokerInformation --> N_SetBrokerInformation_Node0 N_SetBrokerInformation_Node0 -- No --> E_SetBrokerInformation
File: GCX016.cbl
GIVEN:
X4 segment contains broker information
WHEN:
Setting up cargo broker details
THEN:
Populate broker ID, name, and contact information from X4 segment into cargo record
β Consolidated Acceptance Criteria
- Setting up customs bond details → extract and assign bond control number from X4 segment to cargo record
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetBondControlNumber(["Start Step"])
E_SetBondControlNumber(["End Step"])
N_SetBondControlNumber_Node0{"Setting up customs bond details"}:::decision
N_SetBondControlNumber_Node0_action["Extract and assign bond control
number from X4 segment to cargo
record"]:::main N_SetBondControlNumber_Node0 -- Yes --> N_SetBondControlNumber_Node0_action N_SetBondControlNumber_Node0_action --> E_SetBondControlNumber S_SetBondControlNumber --> N_SetBondControlNumber_Node0 N_SetBondControlNumber_Node0 -- No --> E_SetBondControlNumber
number from X4 segment to cargo
record"]:::main N_SetBondControlNumber_Node0 -- Yes --> N_SetBondControlNumber_Node0_action N_SetBondControlNumber_Node0_action --> E_SetBondControlNumber S_SetBondControlNumber --> N_SetBondControlNumber_Node0 N_SetBondControlNumber_Node0 -- No --> E_SetBondControlNumber
File: GCX016.cbl
GIVEN:
X4 segment contains bond information
WHEN:
Setting up customs bond details
THEN:
- Extract
- Assign bond control number from x4 segment to cargo record
β Consolidated Acceptance Criteria
- Setting up customs entry details → extract entry number and entry type code from X4 segment and populate cargo record fields
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetEntryNumberandType(["Start Step"])
E_SetEntryNumberandType(["End Step"])
N_SetEntryNumberandType_Node0{"Setting up customs entry details"}:::decision
N_SetEntryNumberandType_Node0_action["Extract entry number and entry type
code from X4 segment and populate
cargo record fields"]:::main N_SetEntryNumberandType_Node0 -- Yes --> N_SetEntryNumberandType_Node0_action N_SetEntryNumberandType_Node0_action --> E_SetEntryNumberandType S_SetEntryNumberandType --> N_SetEntryNumberandType_Node0 N_SetEntryNumberandType_Node0 -- No --> E_SetEntryNumberandType
code from X4 segment and populate
cargo record fields"]:::main N_SetEntryNumberandType_Node0 -- Yes --> N_SetEntryNumberandType_Node0_action N_SetEntryNumberandType_Node0_action --> E_SetEntryNumberandType S_SetEntryNumberandType --> N_SetEntryNumberandType_Node0 N_SetEntryNumberandType_Node0 -- No --> E_SetEntryNumberandType
File: GCX016.cbl
GIVEN:
X4 segment contains entry information
WHEN:
Setting up customs entry details
THEN:
- Extract entry number
- Entry type code from x4 segment
- Populate cargo record fields
β Consolidated Acceptance Criteria
- Processing border entry type → configure cargo for border processing and clear bond information as required for border entries
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ProcessBorderEntryType00(["Start Step"])
E_ProcessBorderEntryType00(["End Step"])
N_ProcessBorderEntryType00_Node0{"Processing border entry type"}:::decision
N_ProcessBorderEntryType00_Node0_action["Configure cargo for border
processing and clear bond
information as required for border
entries"]:::main N_ProcessBorderEntryType00_Node0 -- Yes --> N_ProcessBorderEntryType00_Node0_action N_ProcessBorderEntryType00_Node0_action --> E_ProcessBorderEntryType00 S_ProcessBorderEntryType00 --> N_ProcessBorderEntryType00_Node0 N_ProcessBorderEntryType00_Node0 -- No --> E_ProcessBorderEntryType00
processing and clear bond
information as required for border
entries"]:::main N_ProcessBorderEntryType00_Node0 -- Yes --> N_ProcessBorderEntryType00_Node0_action N_ProcessBorderEntryType00_Node0_action --> E_ProcessBorderEntryType00 S_ProcessBorderEntryType00 --> N_ProcessBorderEntryType00_Node0 N_ProcessBorderEntryType00_Node0 -- No --> E_ProcessBorderEntryType00
File: GCX016.cbl
GIVEN:
Entry type code is 00
WHEN:
Processing border entry type
THEN:
- Configure cargo for border processing
- Clear bond information as required for border entries
β Consolidated Acceptance Criteria
- Setting default values for unpopulated fields → assign system default values to cargo fields including acknowledgment status, processing flags, and standard field defaults
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetDefaultCargoValues(["Start Step"])
E_SetDefaultCargoValues(["End Step"])
N_SetDefaultCargoValues_Node0{"Setting default values for
unpopulated fields"}:::decision N_SetDefaultCargoValues_Node0_action["Assign system default values to
cargo fields including
acknowledgment status, processing
flags, and standard field defaults"]:::main N_SetDefaultCargoValues_Node0 -- Yes --> N_SetDefaultCargoValues_Node0_action N_SetDefaultCargoValues_Node0_action --> E_SetDefaultCargoValues S_SetDefaultCargoValues --> N_SetDefaultCargoValues_Node0 N_SetDefaultCargoValues_Node0 -- No --> E_SetDefaultCargoValues
unpopulated fields"}:::decision N_SetDefaultCargoValues_Node0_action["Assign system default values to
cargo fields including
acknowledgment status, processing
flags, and standard field defaults"]:::main N_SetDefaultCargoValues_Node0 -- Yes --> N_SetDefaultCargoValues_Node0_action N_SetDefaultCargoValues_Node0_action --> E_SetDefaultCargoValues S_SetDefaultCargoValues --> N_SetDefaultCargoValues_Node0 N_SetDefaultCargoValues_Node0 -- No --> E_SetDefaultCargoValues
File: GCX016.cbl
GIVEN:
A new cargo record is being finalized
WHEN:
Setting default values for unpopulated fields
THEN:
Assign system default values to cargo fields including acknowledgment status, processing flags, and standard field defaults
β Consolidated Acceptance Criteria
- Finalizing cargo record creation → set creation date and time fields to current system date and time
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetCreationDateandTime(["Start Step"])
E_SetCreationDateandTime(["End Step"])
N_SetCreationDateandTime_Node0{"Finalizing cargo record creation"}:::decision
N_SetCreationDateandTime_Node0_action["Set creation date and time fields
to current system date and time"]:::main N_SetCreationDateandTime_Node0 -- Yes --> N_SetCreationDateandTime_Node0_action N_SetCreationDateandTime_Node0_action --> E_SetCreationDateandTime S_SetCreationDateandTime --> N_SetCreationDateandTime_Node0 N_SetCreationDateandTime_Node0 -- No --> E_SetCreationDateandTime
to current system date and time"]:::main N_SetCreationDateandTime_Node0 -- Yes --> N_SetCreationDateandTime_Node0_action N_SetCreationDateandTime_Node0_action --> E_SetCreationDateandTime S_SetCreationDateandTime --> N_SetCreationDateandTime_Node0 N_SetCreationDateandTime_Node0 -- No --> E_SetCreationDateandTime
File: GCX016.cbl
GIVEN:
A new cargo record is being created
WHEN:
Finalizing cargo record creation
THEN:
- Set creation date
- Time fields to current system date
- Time
β Consolidated Acceptance Criteria
- Generating cargo record key → create a new US-CCN key using system key generation logic to ensure uniqueness
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GenerateNewUSCCNKey(["Start Step"])
E_GenerateNewUSCCNKey(["End Step"])
N_GenerateNewUSCCNKey_Node0{"Generating cargo record key"}:::decision
N_GenerateNewUSCCNKey_Node0_action["Create a new US-CCN key using
system key generation logic to
ensure uniqueness"]:::main N_GenerateNewUSCCNKey_Node0 -- Yes --> N_GenerateNewUSCCNKey_Node0_action N_GenerateNewUSCCNKey_Node0_action --> E_GenerateNewUSCCNKey S_GenerateNewUSCCNKey --> N_GenerateNewUSCCNKey_Node0 N_GenerateNewUSCCNKey_Node0 -- No --> E_GenerateNewUSCCNKey
system key generation logic to
ensure uniqueness"]:::main N_GenerateNewUSCCNKey_Node0 -- Yes --> N_GenerateNewUSCCNKey_Node0_action N_GenerateNewUSCCNKey_Node0_action --> E_GenerateNewUSCCNKey S_GenerateNewUSCCNKey --> N_GenerateNewUSCCNKey_Node0 N_GenerateNewUSCCNKey_Node0 -- No --> E_GenerateNewUSCCNKey
File: GCX016.cbl
GIVEN:
A new cargo record requires a unique identifier
WHEN:
Generating cargo record key
THEN:
Create a new US-CCN key using system key generation logic to ensure uniqueness
β Consolidated Acceptance Criteria
- Saving the cargo record → insert the cargo record into the database and confirm successful storage
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_StoreNewCargoRecordinDatabase(["Start Step"])
E_StoreNewCargoRecordinDatabase(["End Step"])
N_StoreNewCargoRecordinDatabase_Node0{"Saving the cargo record"}:::decision
N_StoreNewCargoRecordinDatabase_Node0_action["Insert the cargo record into the
database and confirm successful
storage"]:::main N_StoreNewCargoRecordinDatabase_Node0 -- Yes --> N_StoreNewCargoRecordinDatabase_Node0_action N_StoreNewCargoRecordinDatabase_Node0_action --> E_StoreNewCargoRecordinDatabase S_StoreNewCargoRecordinDatabase --> N_StoreNewCargoRecordinDatabase_Node0 N_StoreNewCargoRecordinDatabase_Node0 -- No --> E_StoreNewCargoRecordinDatabase
database and confirm successful
storage"]:::main N_StoreNewCargoRecordinDatabase_Node0 -- Yes --> N_StoreNewCargoRecordinDatabase_Node0_action N_StoreNewCargoRecordinDatabase_Node0_action --> E_StoreNewCargoRecordinDatabase S_StoreNewCargoRecordinDatabase --> N_StoreNewCargoRecordinDatabase_Node0 N_StoreNewCargoRecordinDatabase_Node0 -- No --> E_StoreNewCargoRecordinDatabase
File: GCX016.cbl
GIVEN:
A complete cargo record is ready for storage
WHEN:
Saving the cargo record
THEN:
- Insert the cargo record into the database
- Confirm successful storage
β Consolidated Acceptance Criteria
- Completing cargo creation process → log the cargo creation activity with relevant details for audit trail and system tracking
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogCargoCreationActivity(["Start Step"])
E_LogCargoCreationActivity(["End Step"])
N_LogCargoCreationActivity_Node0{"Completing cargo creation process"}:::decision
N_LogCargoCreationActivity_Node0_action["Log the cargo creation activity
with relevant details for audit
trail and system tracking"]:::main N_LogCargoCreationActivity_Node0 -- Yes --> N_LogCargoCreationActivity_Node0_action N_LogCargoCreationActivity_Node0_action --> E_LogCargoCreationActivity S_LogCargoCreationActivity --> N_LogCargoCreationActivity_Node0 N_LogCargoCreationActivity_Node0 -- No --> E_LogCargoCreationActivity
with relevant details for audit
trail and system tracking"]:::main N_LogCargoCreationActivity_Node0 -- Yes --> N_LogCargoCreationActivity_Node0_action N_LogCargoCreationActivity_Node0_action --> E_LogCargoCreationActivity S_LogCargoCreationActivity --> N_LogCargoCreationActivity_Node0 N_LogCargoCreationActivity_Node0 -- No --> E_LogCargoCreationActivity
File: GCX016.cbl
GIVEN:
A new cargo record has been successfully created
WHEN:
Completing cargo creation process
THEN:
- Log the cargo creation activity with relevant details for audit trail
- System tracking
β Consolidated Acceptance Criteria
- Manifest data fields need default values → set manifest number, waybill number, and related tracking fields to system defaults
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetDefaultManifestData(["Start Step"])
E_SetDefaultManifestData(["End Step"])
N_SetDefaultManifestData_Node0{"Manifest data fields need default
values"}:::decision N_SetDefaultManifestData_Node0_action["Set manifest number, waybill
number, and related tracking fields
to system defaults"]:::main N_SetDefaultManifestData_Node0 -- Yes --> N_SetDefaultManifestData_Node0_action N_SetDefaultManifestData_Node0_action --> E_SetDefaultManifestData S_SetDefaultManifestData --> N_SetDefaultManifestData_Node0 N_SetDefaultManifestData_Node0 -- No --> E_SetDefaultManifestData
values"}:::decision N_SetDefaultManifestData_Node0_action["Set manifest number, waybill
number, and related tracking fields
to system defaults"]:::main N_SetDefaultManifestData_Node0 -- Yes --> N_SetDefaultManifestData_Node0_action N_SetDefaultManifestData_Node0_action --> E_SetDefaultManifestData S_SetDefaultManifestData --> N_SetDefaultManifestData_Node0 N_SetDefaultManifestData_Node0 -- No --> E_SetDefaultManifestData
File: GCX016.cbl
GIVEN:
A new cargo record is being initialized
WHEN:
Manifest data fields need default values
THEN:
Set manifest number, waybill number, and related tracking fields to system defaults
β Consolidated Acceptance Criteria
- The disposition code indicates master in-bond processing is required → set M1109 master in-bond flag and evaluate entry type codes for bond type determination
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ProcessMasterInBondEntryTypes(["Start Step"])
E_ProcessMasterInBondEntryTypes(["End Step"])
N_ProcessMasterInBondEntryTypes_Node0{"The disposition code indicates
master in-bond processing is
required"}:::decision N_ProcessMasterInBondEntryTypes_Node0_action["Set M1109 master in-bond flag and
evaluate entry type codes for bond
type determination"]:::main N_ProcessMasterInBondEntryTypes_Node0 -- Yes --> N_ProcessMasterInBondEntryTypes_Node0_action N_ProcessMasterInBondEntryTypes_Node0_action --> E_ProcessMasterInBondEntryTypes S_ProcessMasterInBondEntryTypes --> N_ProcessMasterInBondEntryTypes_Node0 N_ProcessMasterInBondEntryTypes_Node0 -- No --> E_ProcessMasterInBondEntryTypes
master in-bond processing is
required"}:::decision N_ProcessMasterInBondEntryTypes_Node0_action["Set M1109 master in-bond flag and
evaluate entry type codes for bond
type determination"]:::main N_ProcessMasterInBondEntryTypes_Node0 -- Yes --> N_ProcessMasterInBondEntryTypes_Node0_action N_ProcessMasterInBondEntryTypes_Node0_action --> E_ProcessMasterInBondEntryTypes S_ProcessMasterInBondEntryTypes --> N_ProcessMasterInBondEntryTypes_Node0 N_ProcessMasterInBondEntryTypes_Node0 -- No --> E_ProcessMasterInBondEntryTypes
File: GCX016.cbl
GIVEN:
A cargo record with disposition code in ('1J', '69', '55')
WHEN:
The disposition code indicates master in-bond processing is required
THEN:
- Set m1109 master in-bond flag
- Evaluate entry type codes for bond type determination
β Consolidated Acceptance Criteria
- The entry type is not '00' (not border processing) → set default bond number, establish bond dates, and initialize bond-related tracking fields
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetDefaultBondValues(["Start Step"])
E_SetDefaultBondValues(["End Step"])
N_SetDefaultBondValues_Node0{"The entry type is not 00 not border
processing"}:::decision N_SetDefaultBondValues_Node0_action["Set default bond number, establish
bond dates, and initialize
bond-related tracking fields"]:::main N_SetDefaultBondValues_Node0 -- Yes --> N_SetDefaultBondValues_Node0_action N_SetDefaultBondValues_Node0_action --> E_SetDefaultBondValues S_SetDefaultBondValues --> N_SetDefaultBondValues_Node0 N_SetDefaultBondValues_Node0 -- No --> E_SetDefaultBondValues
processing"}:::decision N_SetDefaultBondValues_Node0_action["Set default bond number, establish
bond dates, and initialize
bond-related tracking fields"]:::main N_SetDefaultBondValues_Node0 -- Yes --> N_SetDefaultBondValues_Node0_action N_SetDefaultBondValues_Node0_action --> E_SetDefaultBondValues S_SetDefaultBondValues --> N_SetDefaultBondValues_Node0 N_SetDefaultBondValues_Node0 -- No --> E_SetDefaultBondValues
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
A cargo record with bond processing required
WHEN:
The entry type is not '00' (not border processing)
THEN:
Set default bond number, establish bond dates, and initialize bond-related tracking fields
β Consolidated Acceptance Criteria
- Status fields need initialization → set cargo status, status description, hold flags, and release flags to default values
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_InitializeCargoStatusFields(["Start Step"])
E_InitializeCargoStatusFields(["End Step"])
N_InitializeCargoStatusFields_Node0{"Status fields need initialization"}:::decision
N_InitializeCargoStatusFields_Node0_action["Set cargo status, status
description, hold flags, and release
flags to default values"]:::main N_InitializeCargoStatusFields_Node0 -- Yes --> N_InitializeCargoStatusFields_Node0_action N_InitializeCargoStatusFields_Node0_action --> E_InitializeCargoStatusFields S_InitializeCargoStatusFields --> N_InitializeCargoStatusFields_Node0 N_InitializeCargoStatusFields_Node0 -- No --> E_InitializeCargoStatusFields
description, hold flags, and release
flags to default values"]:::main N_InitializeCargoStatusFields_Node0 -- Yes --> N_InitializeCargoStatusFields_Node0_action N_InitializeCargoStatusFields_Node0_action --> E_InitializeCargoStatusFields S_InitializeCargoStatusFields --> N_InitializeCargoStatusFields_Node0 N_InitializeCargoStatusFields_Node0 -- No --> E_InitializeCargoStatusFields
File: GCX016.cbl
GIVEN:
A new cargo record is being created
WHEN:
Status fields need initialization
THEN:
Set cargo status, status description, hold flags, and release flags to default values
β Consolidated Acceptance Criteria
- Quantity fields need default values → set total quantity, released quantity, and piece count to zero or system default values
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetDefaultQuantityValues(["Start Step"])
E_SetDefaultQuantityValues(["End Step"])
N_SetDefaultQuantityValues_Node0{"Quantity fields need default values"}:::decision
N_SetDefaultQuantityValues_Node0_action["Set total quantity, released
quantity, and piece count to zero or
system default values"]:::main N_SetDefaultQuantityValues_Node0 -- Yes --> N_SetDefaultQuantityValues_Node0_action N_SetDefaultQuantityValues_Node0_action --> E_SetDefaultQuantityValues S_SetDefaultQuantityValues --> N_SetDefaultQuantityValues_Node0 N_SetDefaultQuantityValues_Node0 -- No --> E_SetDefaultQuantityValues
quantity, and piece count to zero or
system default values"]:::main N_SetDefaultQuantityValues_Node0 -- Yes --> N_SetDefaultQuantityValues_Node0_action N_SetDefaultQuantityValues_Node0_action --> E_SetDefaultQuantityValues S_SetDefaultQuantityValues --> N_SetDefaultQuantityValues_Node0 N_SetDefaultQuantityValues_Node0 -- No --> E_SetDefaultQuantityValues
File: GCX016.cbl
GIVEN:
A new cargo record is being initialized
WHEN:
Quantity fields need default values
THEN:
Set total quantity, released quantity, and piece count to zero or system default values
β Consolidated Acceptance Criteria
- Date fields need initialization → set arrival date, departure date, and status change dates to system defaults or current date
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_InitializeDateFields(["Start Step"])
E_InitializeDateFields(["End Step"])
N_InitializeDateFields_Node0{"Date fields need initialization"}:::decision
N_InitializeDateFields_Node0_action["Set arrival date, departure date,
and status change dates to system
defaults or current date"]:::main N_InitializeDateFields_Node0 -- Yes --> N_InitializeDateFields_Node0_action N_InitializeDateFields_Node0_action --> E_InitializeDateFields S_InitializeDateFields --> N_InitializeDateFields_Node0 N_InitializeDateFields_Node0 -- No --> E_InitializeDateFields
and status change dates to system
defaults or current date"]:::main N_InitializeDateFields_Node0 -- Yes --> N_InitializeDateFields_Node0_action N_InitializeDateFields_Node0_action --> E_InitializeDateFields S_InitializeDateFields --> N_InitializeDateFields_Node0 N_InitializeDateFields_Node0 -- No --> E_InitializeDateFields
File: GCX016.cbl
GIVEN:
A new cargo record is being created
WHEN:
Date fields need initialization
THEN:
Set arrival date, departure date, and status change dates to system defaults or current date
β Consolidated Acceptance Criteria
- Location fields need default values → set origin location, destination location, and current location to system defaults
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetDefaultLocationInformation(["Start Step"])
E_SetDefaultLocationInformation(["End Step"])
N_SetDefaultLocationInformation_Node0{"Location fields need default values"}:::decision
N_SetDefaultLocationInformation_Node0_action["Set origin location, destination
location, and current location to
system defaults"]:::main N_SetDefaultLocationInformation_Node0 -- Yes --> N_SetDefaultLocationInformation_Node0_action N_SetDefaultLocationInformation_Node0_action --> E_SetDefaultLocationInformation S_SetDefaultLocationInformation --> N_SetDefaultLocationInformation_Node0 N_SetDefaultLocationInformation_Node0 -- No --> E_SetDefaultLocationInformation
location, and current location to
system defaults"]:::main N_SetDefaultLocationInformation_Node0 -- Yes --> N_SetDefaultLocationInformation_Node0_action N_SetDefaultLocationInformation_Node0_action --> E_SetDefaultLocationInformation S_SetDefaultLocationInformation --> N_SetDefaultLocationInformation_Node0 N_SetDefaultLocationInformation_Node0 -- No --> E_SetDefaultLocationInformation
File: GCX016.cbl
GIVEN:
A new cargo record is being initialized
WHEN:
Location fields need default values
THEN:
Set origin location, destination location, and current location to system defaults
β Consolidated Acceptance Criteria
- Equipment fields need initialization → set car ID, equipment type, and transportation unit information based on cargo type and N7 segment data
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_InitializeEquipmentInformation(["Start Step"])
E_InitializeEquipmentInformation(["End Step"])
N_InitializeEquipmentInformation_Node0{"Equipment fields need
initialization"}:::decision N_InitializeEquipmentInformation_Node0_action["Set car ID, equipment type, and
transportation unit information
based on cargo type and N7 segment
data"]:::main N_InitializeEquipmentInformation_Node0 -- Yes --> N_InitializeEquipmentInformation_Node0_action N_InitializeEquipmentInformation_Node0_action --> E_InitializeEquipmentInformation S_InitializeEquipmentInformation --> N_InitializeEquipmentInformation_Node0 N_InitializeEquipmentInformation_Node0 -- No --> E_InitializeEquipmentInformation
initialization"}:::decision N_InitializeEquipmentInformation_Node0_action["Set car ID, equipment type, and
transportation unit information
based on cargo type and N7 segment
data"]:::main N_InitializeEquipmentInformation_Node0 -- Yes --> N_InitializeEquipmentInformation_Node0_action N_InitializeEquipmentInformation_Node0_action --> E_InitializeEquipmentInformation S_InitializeEquipmentInformation --> N_InitializeEquipmentInformation_Node0 N_InitializeEquipmentInformation_Node0 -- No --> E_InitializeEquipmentInformation
File: GCX016.cbl
GIVEN:
A new cargo record is being created
WHEN:
Equipment fields need initialization
THEN:
- Set car id, equipment type, and transportation unit information based on cargo type
- N7 segment data
β Consolidated Acceptance Criteria
- Key fields need to be set → set US-CCN key, manifest key, and other unique identifiers for database operations
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetCargoRecordKeyFields(["Start Step"])
E_SetCargoRecordKeyFields(["End Step"])
N_SetCargoRecordKeyFields_Node0{"Key fields need to be set"}:::decision
N_SetCargoRecordKeyFields_Node0_action["Set US-CCN key, manifest key, and
other unique identifiers for
database operations"]:::main N_SetCargoRecordKeyFields_Node0 -- Yes --> N_SetCargoRecordKeyFields_Node0_action N_SetCargoRecordKeyFields_Node0_action --> E_SetCargoRecordKeyFields S_SetCargoRecordKeyFields --> N_SetCargoRecordKeyFields_Node0 N_SetCargoRecordKeyFields_Node0 -- No --> E_SetCargoRecordKeyFields
other unique identifiers for
database operations"]:::main N_SetCargoRecordKeyFields_Node0 -- Yes --> N_SetCargoRecordKeyFields_Node0_action N_SetCargoRecordKeyFields_Node0_action --> E_SetCargoRecordKeyFields S_SetCargoRecordKeyFields --> N_SetCargoRecordKeyFields_Node0 N_SetCargoRecordKeyFields_Node0 -- No --> E_SetCargoRecordKeyFields
File: GCX016.cbl
GIVEN:
A new cargo record is being finalized
WHEN:
Key fields need to be set
THEN:
Set US-CCN key, manifest key, and other unique identifiers for database operations
β Consolidated Acceptance Criteria
- The record is ready for database insertion → set new record flag to true and active status flag to indicate the record is available for processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MarkRecordasNewActive(["Start Step"])
E_MarkRecordasNewActive(["End Step"])
N_MarkRecordasNewActive_Node0{"The record is ready for database
insertion"}:::decision N_MarkRecordasNewActive_Node0_action["Set new record flag to true and
active status flag to indicate the
record is available for processing"]:::main N_MarkRecordasNewActive_Node0 -- Yes --> N_MarkRecordasNewActive_Node0_action N_MarkRecordasNewActive_Node0_action --> E_MarkRecordasNewActive S_MarkRecordasNewActive --> N_MarkRecordasNewActive_Node0 N_MarkRecordasNewActive_Node0 -- No --> E_MarkRecordasNewActive
insertion"}:::decision N_MarkRecordasNewActive_Node0_action["Set new record flag to true and
active status flag to indicate the
record is available for processing"]:::main N_MarkRecordasNewActive_Node0 -- Yes --> N_MarkRecordasNewActive_Node0_action N_MarkRecordasNewActive_Node0_action --> E_MarkRecordasNewActive S_MarkRecordasNewActive --> N_MarkRecordasNewActive_Node0 N_MarkRecordasNewActive_Node0 -- No --> E_MarkRecordasNewActive
File: GCX016.cbl
GIVEN:
A cargo record has been fully initialized
WHEN:
The record is ready for database insertion
THEN:
- Set new record flag to true
- Active status flag to indicate the record is available for processing
β Consolidated Acceptance Criteria
- The system processes the X4 segment for master in-bond entry → the system sets the transport type to default border processing ('00') AND sets the master in-bond flag AND processes the bond control number
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_OtherEntryTypes(["Start Step"])
E_OtherEntryTypes(["End Step"])
N_OtherEntryTypes_Node0{"The system processes the X4 segment
for master in-bond entry"}:::decision N_OtherEntryTypes_Node0_action["The system sets the transport type
to default border processing 00 AND
sets the master in-bond flag AND
processes the bond control number"]:::main N_OtherEntryTypes_Node0 -- Yes --> N_OtherEntryTypes_Node0_action N_OtherEntryTypes_Node0_action --> E_OtherEntryTypes S_OtherEntryTypes --> N_OtherEntryTypes_Node0 N_OtherEntryTypes_Node0 -- No --> E_OtherEntryTypes
for master in-bond entry"}:::decision N_OtherEntryTypes_Node0_action["The system sets the transport type
to default border processing 00 AND
sets the master in-bond flag AND
processes the bond control number"]:::main N_OtherEntryTypes_Node0 -- Yes --> N_OtherEntryTypes_Node0_action N_OtherEntryTypes_Node0_action --> E_OtherEntryTypes S_OtherEntryTypes --> N_OtherEntryTypes_Node0 N_OtherEntryTypes_Node0 -- No --> E_OtherEntryTypes
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
A cargo record with disposition code requiring master in-bond processing AND entry type code is not '61', '62', '63', or '69'
WHEN:
The system processes the X4 segment for master in-bond entry
THEN:
- The system sets the transport type to default border processing ('00') and sets the master in-bond flag
- Processes the bond control number
β Consolidated Acceptance Criteria
- The system processes the entry number format → if the entry number starts with 'V' then place it in the entry number field, otherwise place it in the in-bond control number field
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ProcessBondControlNumber(["Start Step"])
E_ProcessBondControlNumber(["End Step"])
N_ProcessBondControlNumber_Node0{"The system processes the entry
number format"}:::decision N_ProcessBondControlNumber_Node0_action["If the entry number starts with V
then place it in the entry number
field, otherwise place it in the
in-bond control number field"]:::main N_ProcessBondControlNumber_Node0 -- Yes --> N_ProcessBondControlNumber_Node0_action N_ProcessBondControlNumber_Node0_action --> E_ProcessBondControlNumber S_ProcessBondControlNumber --> N_ProcessBondControlNumber_Node0 N_ProcessBondControlNumber_Node0 -- No --> E_ProcessBondControlNumber
number format"}:::decision N_ProcessBondControlNumber_Node0_action["If the entry number starts with V
then place it in the entry number
field, otherwise place it in the
in-bond control number field"]:::main N_ProcessBondControlNumber_Node0 -- Yes --> N_ProcessBondControlNumber_Node0_action N_ProcessBondControlNumber_Node0_action --> E_ProcessBondControlNumber S_ProcessBondControlNumber --> N_ProcessBondControlNumber_Node0 N_ProcessBondControlNumber_Node0 -- No --> E_ProcessBondControlNumber
File: GCX016.cbl
GIVEN:
A cargo record with an entry number from the X4 segment
WHEN:
The system processes the entry number format
THEN:
If the entry number starts with 'V' then place it in the entry number field, otherwise place it in the in-bond control number field
β Consolidated Acceptance Criteria
- The system maps the entry type to internal transport type → entry type '61' maps to immediate transport, '62' maps to transport export, '63' maps to immediate export, '69' maps to US-Canada-US movement, and all others map to border processing ('00')
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MapEntryTypetoInternalTransportType(["Start Step"])
E_MapEntryTypetoInternalTransportType(["End Step"])
N_MapEntryTypetoInternalTransportType_Node0{"The system maps the entry type to
internal transport type"}:::decision N_MapEntryTypetoInternalTransportType_Node0_action["Entry type 61 maps to immediate
transport, 62 maps to transport
export, 63 maps to immediate export,
69 maps to US-Canada-US movement,
and all others map to border
processing 00"]:::main N_MapEntryTypetoInternalTransportType_Node0 -- Yes --> N_MapEntryTypetoInternalTransportType_Node0_action N_MapEntryTypetoInternalTransportType_Node0_action --> E_MapEntryTypetoInternalTransportType S_MapEntryTypetoInternalTransportType --> N_MapEntryTypetoInternalTransportType_Node0 N_MapEntryTypetoInternalTransportType_Node0 -- No --> E_MapEntryTypetoInternalTransportType
internal transport type"}:::decision N_MapEntryTypetoInternalTransportType_Node0_action["Entry type 61 maps to immediate
transport, 62 maps to transport
export, 63 maps to immediate export,
69 maps to US-Canada-US movement,
and all others map to border
processing 00"]:::main N_MapEntryTypetoInternalTransportType_Node0 -- Yes --> N_MapEntryTypetoInternalTransportType_Node0_action N_MapEntryTypetoInternalTransportType_Node0_action --> E_MapEntryTypetoInternalTransportType S_MapEntryTypetoInternalTransportType --> N_MapEntryTypetoInternalTransportType_Node0 N_MapEntryTypetoInternalTransportType_Node0 -- No --> E_MapEntryTypetoInternalTransportType
File: GCX016.cbl
GIVEN:
An entry type code from the X4 segment
WHEN:
The system maps the entry type to internal transport type
THEN:
Entry type '61' maps to immediate transport, '62' maps to transport export, '63' maps to immediate export, '69' maps to US-Canada-US movement, and all others map to border processing ('00')
β Consolidated Acceptance Criteria
- If whether station information is required for the cargo record → the system determines if station lookup and integration should proceed or skip station processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CargoRecordRequiresStationInfo(["Start Step"])
E_CargoRecordRequiresStationInfo(["End Step"])
N_CargoRecordRequiresStationInfo_Node0{"The system evaluates whether
station information is required for
the cargo record"}:::decision N_CargoRecordRequiresStationInfo_Node0_action["The system determines if station
lookup and integration should
proceed or skip station processing"]:::main N_CargoRecordRequiresStationInfo_Node0 -- Yes --> N_CargoRecordRequiresStationInfo_Node0_action N_CargoRecordRequiresStationInfo_Node0_action --> E_CargoRecordRequiresStationInfo S_CargoRecordRequiresStationInfo --> N_CargoRecordRequiresStationInfo_Node0 N_CargoRecordRequiresStationInfo_Node0 -- No --> E_CargoRecordRequiresStationInfo
station information is required for
the cargo record"}:::decision N_CargoRecordRequiresStationInfo_Node0_action["The system determines if station
lookup and integration should
proceed or skip station processing"]:::main N_CargoRecordRequiresStationInfo_Node0 -- Yes --> N_CargoRecordRequiresStationInfo_Node0_action N_CargoRecordRequiresStationInfo_Node0_action --> E_CargoRecordRequiresStationInfo S_CargoRecordRequiresStationInfo --> N_CargoRecordRequiresStationInfo_Node0 N_CargoRecordRequiresStationInfo_Node0 -- No --> E_CargoRecordRequiresStationInfo
File: GCX016.cbl
GIVEN:
A cargo record is being processed
WHEN:
The system evaluates whether station information is required for the cargo record
THEN:
- The system determines if station lookup
- Integration should proceed or skip station processing
β Consolidated Acceptance Criteria
- Station information integration is required → the system extracts the location ID from the cargo record for station table queries
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IdentifyLocationIDfromCargoRecord(["Start Step"])
E_IdentifyLocationIDfromCargoRecord(["End Step"])
N_IdentifyLocationIDfromCargoRecord_Node0{"Station information integration is
required"}:::decision N_IdentifyLocationIDfromCargoRecord_Node0_action["The system extracts the location ID
from the cargo record for station
table queries"]:::main N_IdentifyLocationIDfromCargoRecord_Node0 -- Yes --> N_IdentifyLocationIDfromCargoRecord_Node0_action N_IdentifyLocationIDfromCargoRecord_Node0_action --> E_IdentifyLocationIDfromCargoRecord S_IdentifyLocationIDfromCargoRecord --> N_IdentifyLocationIDfromCargoRecord_Node0 N_IdentifyLocationIDfromCargoRecord_Node0 -- No --> E_IdentifyLocationIDfromCargoRecord
required"}:::decision N_IdentifyLocationIDfromCargoRecord_Node0_action["The system extracts the location ID
from the cargo record for station
table queries"]:::main N_IdentifyLocationIDfromCargoRecord_Node0 -- Yes --> N_IdentifyLocationIDfromCargoRecord_Node0_action N_IdentifyLocationIDfromCargoRecord_Node0_action --> E_IdentifyLocationIDfromCargoRecord S_IdentifyLocationIDfromCargoRecord --> N_IdentifyLocationIDfromCargoRecord_Node0 N_IdentifyLocationIDfromCargoRecord_Node0 -- No --> E_IdentifyLocationIDfromCargoRecord
File: GCX016.cbl
GIVEN:
A cargo record contains location information
WHEN:
Station information integration is required
THEN:
The system extracts the location ID from the cargo record for station table queries
β Consolidated Acceptance Criteria
- The system retrieves station information → the system extracts the station name from the DS table entry for integration
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RetrieveStationNamefromDSTable(["Start Step"])
E_RetrieveStationNamefromDSTable(["End Step"])
N_RetrieveStationNamefromDSTable_Node0{"The system retrieves station
information"}:::decision N_RetrieveStationNamefromDSTable_Node0_action["The system extracts the station
name from the DS table entry for
integration"]:::main N_RetrieveStationNamefromDSTable_Node0 -- Yes --> N_RetrieveStationNamefromDSTable_Node0_action N_RetrieveStationNamefromDSTable_Node0_action --> E_RetrieveStationNamefromDSTable S_RetrieveStationNamefromDSTable --> N_RetrieveStationNamefromDSTable_Node0 N_RetrieveStationNamefromDSTable_Node0 -- No --> E_RetrieveStationNamefromDSTable
information"}:::decision N_RetrieveStationNamefromDSTable_Node0_action["The system extracts the station
name from the DS table entry for
integration"]:::main N_RetrieveStationNamefromDSTable_Node0 -- Yes --> N_RetrieveStationNamefromDSTable_Node0_action N_RetrieveStationNamefromDSTable_Node0_action --> E_RetrieveStationNamefromDSTable S_RetrieveStationNamefromDSTable --> N_RetrieveStationNamefromDSTable_Node0 N_RetrieveStationNamefromDSTable_Node0 -- No --> E_RetrieveStationNamefromDSTable
File: GCX016.cbl
GIVEN:
A valid DS table entry has been found for the location ID
WHEN:
The system retrieves station information
THEN:
The system extracts the station name from the DS table entry for integration
β Consolidated Acceptance Criteria
- The system retrieves station description information → the system extracts the station description from the KS table entry for integration
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RetrieveStationDescriptionfromKSTable(["Start Step"])
E_RetrieveStationDescriptionfromKSTable(["End Step"])
N_RetrieveStationDescriptionfromKSTable_Node0{"The system retrieves station
description information"}:::decision N_RetrieveStationDescriptionfromKSTable_Node0_action["The system extracts the station
description from the KS table entry
for integration"]:::main N_RetrieveStationDescriptionfromKSTable_Node0 -- Yes --> N_RetrieveStationDescriptionfromKSTable_Node0_action N_RetrieveStationDescriptionfromKSTable_Node0_action --> E_RetrieveStationDescriptionfromKSTable S_RetrieveStationDescriptionfromKSTable --> N_RetrieveStationDescriptionfromKSTable_Node0 N_RetrieveStationDescriptionfromKSTable_Node0 -- No --> E_RetrieveStationDescriptionfromKSTable
description information"}:::decision N_RetrieveStationDescriptionfromKSTable_Node0_action["The system extracts the station
description from the KS table entry
for integration"]:::main N_RetrieveStationDescriptionfromKSTable_Node0 -- Yes --> N_RetrieveStationDescriptionfromKSTable_Node0_action N_RetrieveStationDescriptionfromKSTable_Node0_action --> E_RetrieveStationDescriptionfromKSTable S_RetrieveStationDescriptionfromKSTable --> N_RetrieveStationDescriptionfromKSTable_Node0 N_RetrieveStationDescriptionfromKSTable_Node0 -- No --> E_RetrieveStationDescriptionfromKSTable
File: GCX016.cbl
GIVEN:
A valid KS table entry has been found for the location ID
WHEN:
The system retrieves station description information
THEN:
The system extracts the station description from the KS table entry for integration
β Consolidated Acceptance Criteria
- The system performs SD table lookup → the system searches the SD table for matching station detail records
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LookupStationinSDTable(["Start Step"])
E_LookupStationinSDTable(["End Step"])
N_LookupStationinSDTable_Node0{"The system performs SD table lookup"}:::decision
N_LookupStationinSDTable_Node0_action["The system searches the SD table
for matching station detail records"]:::main N_LookupStationinSDTable_Node0 -- Yes --> N_LookupStationinSDTable_Node0_action N_LookupStationinSDTable_Node0_action --> E_LookupStationinSDTable S_LookupStationinSDTable --> N_LookupStationinSDTable_Node0 N_LookupStationinSDTable_Node0 -- No --> E_LookupStationinSDTable
for matching station detail records"]:::main N_LookupStationinSDTable_Node0 -- Yes --> N_LookupStationinSDTable_Node0_action N_LookupStationinSDTable_Node0_action --> E_LookupStationinSDTable S_LookupStationinSDTable --> N_LookupStationinSDTable_Node0 N_LookupStationinSDTable_Node0 -- No --> E_LookupStationinSDTable
File: GCX016.cbl
GIVEN:
A location ID has been identified and DS/KS table processing is complete
WHEN:
The system performs SD table lookup
THEN:
The system searches the SD table for matching station detail records
β Consolidated Acceptance Criteria
- The system checks the lookup results → the system determines if a valid SD table entry was found and sets appropriate processing flags
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SDTableEntryFound(["Start Step"])
E_SDTableEntryFound(["End Step"])
N_SDTableEntryFound_Node0{"The system checks the lookup
results"}:::decision N_SDTableEntryFound_Node0_action["The system determines if a valid SD
table entry was found and sets
appropriate processing flags"]:::main N_SDTableEntryFound_Node0 -- Yes --> N_SDTableEntryFound_Node0_action N_SDTableEntryFound_Node0_action --> E_SDTableEntryFound S_SDTableEntryFound --> N_SDTableEntryFound_Node0 N_SDTableEntryFound_Node0 -- No --> E_SDTableEntryFound
results"}:::decision N_SDTableEntryFound_Node0_action["The system determines if a valid SD
table entry was found and sets
appropriate processing flags"]:::main N_SDTableEntryFound_Node0 -- Yes --> N_SDTableEntryFound_Node0_action N_SDTableEntryFound_Node0_action --> E_SDTableEntryFound S_SDTableEntryFound --> N_SDTableEntryFound_Node0 N_SDTableEntryFound_Node0 -- No --> E_SDTableEntryFound
File: GCX016.cbl
GIVEN:
An SD table lookup has been performed using location ID
WHEN:
The system checks the lookup results
THEN:
- The system determines if a valid sd table entry was found
- Sets appropriate processing flags
β Consolidated Acceptance Criteria
- The system retrieves additional station details → the system extracts the additional station details from the SD table entry for integration
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RetrieveAdditionalStationDetailsfromSDTable(["Start Step"])
E_RetrieveAdditionalStationDetailsfromSDTable(["End Step"])
N_RetrieveAdditionalStationDetailsfromSDTable_Node0{"The system retrieves additional
station details"}:::decision N_RetrieveAdditionalStationDetailsfromSDTable_Node0_action["The system extracts the additional
station details from the SD table
entry for integration"]:::main N_RetrieveAdditionalStationDetailsfromSDTable_Node0 -- Yes --> N_RetrieveAdditionalStationDetailsfromSDTable_Node0_action N_RetrieveAdditionalStationDetailsfromSDTable_Node0_action --> E_RetrieveAdditionalStationDetailsfromSDTable S_RetrieveAdditionalStationDetailsfromSDTable --> N_RetrieveAdditionalStationDetailsfromSDTable_Node0 N_RetrieveAdditionalStationDetailsfromSDTable_Node0 -- No --> E_RetrieveAdditionalStationDetailsfromSDTable
station details"}:::decision N_RetrieveAdditionalStationDetailsfromSDTable_Node0_action["The system extracts the additional
station details from the SD table
entry for integration"]:::main N_RetrieveAdditionalStationDetailsfromSDTable_Node0 -- Yes --> N_RetrieveAdditionalStationDetailsfromSDTable_Node0_action N_RetrieveAdditionalStationDetailsfromSDTable_Node0_action --> E_RetrieveAdditionalStationDetailsfromSDTable S_RetrieveAdditionalStationDetailsfromSDTable --> N_RetrieveAdditionalStationDetailsfromSDTable_Node0 N_RetrieveAdditionalStationDetailsfromSDTable_Node0 -- No --> E_RetrieveAdditionalStationDetailsfromSDTable
File: GCX016.cbl
GIVEN:
A valid SD table entry has been found for the location ID
WHEN:
The system retrieves additional station details
THEN:
The system extracts the additional station details from the SD table entry for integration
β Consolidated Acceptance Criteria
- The system integrates station information into cargo record → the system updates the cargo record with the station name information
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IntegrateStationNameintoCargoRecord(["Start Step"])
E_IntegrateStationNameintoCargoRecord(["End Step"])
N_IntegrateStationNameintoCargoRecord_Node0{"The system integrates station
information into cargo record"}:::decision N_IntegrateStationNameintoCargoRecord_Node0_action["The system updates the cargo record
with the station name information"]:::main N_IntegrateStationNameintoCargoRecord_Node0 -- Yes --> N_IntegrateStationNameintoCargoRecord_Node0_action N_IntegrateStationNameintoCargoRecord_Node0_action --> E_IntegrateStationNameintoCargoRecord S_IntegrateStationNameintoCargoRecord --> N_IntegrateStationNameintoCargoRecord_Node0 N_IntegrateStationNameintoCargoRecord_Node0 -- No --> E_IntegrateStationNameintoCargoRecord
information into cargo record"}:::decision N_IntegrateStationNameintoCargoRecord_Node0_action["The system updates the cargo record
with the station name information"]:::main N_IntegrateStationNameintoCargoRecord_Node0 -- Yes --> N_IntegrateStationNameintoCargoRecord_Node0_action N_IntegrateStationNameintoCargoRecord_Node0_action --> E_IntegrateStationNameintoCargoRecord S_IntegrateStationNameintoCargoRecord --> N_IntegrateStationNameintoCargoRecord_Node0 N_IntegrateStationNameintoCargoRecord_Node0 -- No --> E_IntegrateStationNameintoCargoRecord
File: GCX016.cbl
GIVEN:
Station name information has been retrieved from DS table or default values are used
WHEN:
The system integrates station information into cargo record
THEN:
The system updates the cargo record with the station name information
β Consolidated Acceptance Criteria
- The system integrates station description into cargo record → the system updates the cargo record with the station description information
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IntegrateStationDescriptionintoCargoRecord(["Start Step"])
E_IntegrateStationDescriptionintoCargoRecord(["End Step"])
N_IntegrateStationDescriptionintoCargoRecord_Node0{"The system integrates station
description into cargo record"}:::decision N_IntegrateStationDescriptionintoCargoRecord_Node0_action["The system updates the cargo record
with the station description
information"]:::main N_IntegrateStationDescriptionintoCargoRecord_Node0 -- Yes --> N_IntegrateStationDescriptionintoCargoRecord_Node0_action N_IntegrateStationDescriptionintoCargoRecord_Node0_action --> E_IntegrateStationDescriptionintoCargoRecord S_IntegrateStationDescriptionintoCargoRecord --> N_IntegrateStationDescriptionintoCargoRecord_Node0 N_IntegrateStationDescriptionintoCargoRecord_Node0 -- No --> E_IntegrateStationDescriptionintoCargoRecord
description into cargo record"}:::decision N_IntegrateStationDescriptionintoCargoRecord_Node0_action["The system updates the cargo record
with the station description
information"]:::main N_IntegrateStationDescriptionintoCargoRecord_Node0 -- Yes --> N_IntegrateStationDescriptionintoCargoRecord_Node0_action N_IntegrateStationDescriptionintoCargoRecord_Node0_action --> E_IntegrateStationDescriptionintoCargoRecord S_IntegrateStationDescriptionintoCargoRecord --> N_IntegrateStationDescriptionintoCargoRecord_Node0 N_IntegrateStationDescriptionintoCargoRecord_Node0 -- No --> E_IntegrateStationDescriptionintoCargoRecord
File: GCX016.cbl
GIVEN:
Station description information has been retrieved from KS table or default values are used
WHEN:
The system integrates station description into cargo record
THEN:
The system updates the cargo record with the station description information
β Consolidated Acceptance Criteria
- The system completes the station information integration → the system updates the cargo record with complete station information including names, descriptions, and additional details
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UpdateCargoRecordwithCompleteStationInformation(["Start Step"])
E_UpdateCargoRecordwithCompleteStationInformation(["End Step"])
N_UpdateCargoRecordwithCompleteStationInformation_Node0{"The system completes the station
information integration"}:::decision N_UpdateCargoRecordwithCompleteStationInformation_Node0_action["The system updates the cargo record
with complete station information
including names, descriptions, and
additional details"]:::main N_UpdateCargoRecordwithCompleteStationInformation_Node0 -- Yes --> N_UpdateCargoRecordwithCompleteStationInformation_Node0_action N_UpdateCargoRecordwithCompleteStationInformation_Node0_action --> E_UpdateCargoRecordwithCompleteStationInformation S_UpdateCargoRecordwithCompleteStationInformation --> N_UpdateCargoRecordwithCompleteStationInformation_Node0 N_UpdateCargoRecordwithCompleteStationInformation_Node0 -- No --> E_UpdateCargoRecordwithCompleteStationInformation
information integration"}:::decision N_UpdateCargoRecordwithCompleteStationInformation_Node0_action["The system updates the cargo record
with complete station information
including names, descriptions, and
additional details"]:::main N_UpdateCargoRecordwithCompleteStationInformation_Node0 -- Yes --> N_UpdateCargoRecordwithCompleteStationInformation_Node0_action N_UpdateCargoRecordwithCompleteStationInformation_Node0_action --> E_UpdateCargoRecordwithCompleteStationInformation S_UpdateCargoRecordwithCompleteStationInformation --> N_UpdateCargoRecordwithCompleteStationInformation_Node0 N_UpdateCargoRecordwithCompleteStationInformation_Node0 -- No --> E_UpdateCargoRecordwithCompleteStationInformation
File: GCX016.cbl
GIVEN:
Station name and description have been integrated into the cargo record
WHEN:
The system completes the station information integration
THEN:
The system updates the cargo record with complete station information including names, descriptions, and additional details
β Consolidated Acceptance Criteria
- The system cannot retrieve station information from DS, KS, or SD tables → the system assigns default or empty station information to the cargo record
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UseDefaultEmptyStationInformation(["Start Step"])
E_UseDefaultEmptyStationInformation(["End Step"])
N_UseDefaultEmptyStationInformation_Node0{"The system cannot retrieve station
information from DS, KS, or SD
tables"}:::decision N_UseDefaultEmptyStationInformation_Node0_action["The system assigns default or empty
station information to the cargo
record"]:::main N_UseDefaultEmptyStationInformation_Node0 -- Yes --> N_UseDefaultEmptyStationInformation_Node0_action N_UseDefaultEmptyStationInformation_Node0_action --> E_UseDefaultEmptyStationInformation S_UseDefaultEmptyStationInformation --> N_UseDefaultEmptyStationInformation_Node0 N_UseDefaultEmptyStationInformation_Node0 -- No --> E_UseDefaultEmptyStationInformation
information from DS, KS, or SD
tables"}:::decision N_UseDefaultEmptyStationInformation_Node0_action["The system assigns default or empty
station information to the cargo
record"]:::main N_UseDefaultEmptyStationInformation_Node0 -- Yes --> N_UseDefaultEmptyStationInformation_Node0_action N_UseDefaultEmptyStationInformation_Node0_action --> E_UseDefaultEmptyStationInformation S_UseDefaultEmptyStationInformation --> N_UseDefaultEmptyStationInformation_Node0 N_UseDefaultEmptyStationInformation_Node0 -- No --> E_UseDefaultEmptyStationInformation
File: GCX016.cbl
GIVEN:
Station table lookups have failed to find matching entries
WHEN:
The system cannot retrieve station information from DS, KS, or SD tables
THEN:
The system assigns default or empty station information to the cargo record
β Consolidated Acceptance Criteria
- The system checks the cargo SCAC code → the system identifies Canadian Pacific Railway entities (CPRS) for special bond message handling
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IdentifyCanadianPacificEntity(["Start Step"])
E_IdentifyCanadianPacificEntity(["End Step"])
N_IdentifyCanadianPacificEntity_Node0{"The system checks the cargo SCAC
code"}:::decision N_IdentifyCanadianPacificEntity_Node0_action["The system identifies Canadian
Pacific Railway entities CPRS for
special bond message handling"]:::main N_IdentifyCanadianPacificEntity_Node0 -- Yes --> N_IdentifyCanadianPacificEntity_Node0_action N_IdentifyCanadianPacificEntity_Node0_action --> E_IdentifyCanadianPacificEntity S_IdentifyCanadianPacificEntity --> N_IdentifyCanadianPacificEntity_Node0 N_IdentifyCanadianPacificEntity_Node0 -- No --> E_IdentifyCanadianPacificEntity
code"}:::decision N_IdentifyCanadianPacificEntity_Node0_action["The system identifies Canadian
Pacific Railway entities CPRS for
special bond message handling"]:::main N_IdentifyCanadianPacificEntity_Node0 -- Yes --> N_IdentifyCanadianPacificEntity_Node0_action N_IdentifyCanadianPacificEntity_Node0_action --> E_IdentifyCanadianPacificEntity S_IdentifyCanadianPacificEntity --> N_IdentifyCanadianPacificEntity_Node0 N_IdentifyCanadianPacificEntity_Node0 -- No --> E_IdentifyCanadianPacificEntity
File: GCX016.cbl
GIVEN:
A cargo record with SCAC code information is being processed
WHEN:
The system checks the cargo SCAC code
THEN:
The system identifies Canadian Pacific Railway entities (CPRS) for special bond message handling
β Consolidated Acceptance Criteria
- The disposition code is '95' and entry type is in ('61', '62', '63', '69') → the system identifies this as a broker-created bond message requiring special handling
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_DetectBrokerCreatedBondPattern(["Start Step"])
E_DetectBrokerCreatedBondPattern(["End Step"])
N_DetectBrokerCreatedBondPattern_Node0{"The disposition code is 95 and
entry type is in 61 , 62 , 63 , 69"}:::decision N_DetectBrokerCreatedBondPattern_Node0_action["The system identifies this as a
broker-created bond message
requiring special handling"]:::main N_DetectBrokerCreatedBondPattern_Node0 -- Yes --> N_DetectBrokerCreatedBondPattern_Node0_action N_DetectBrokerCreatedBondPattern_Node0_action --> E_DetectBrokerCreatedBondPattern S_DetectBrokerCreatedBondPattern --> N_DetectBrokerCreatedBondPattern_Node0 N_DetectBrokerCreatedBondPattern_Node0 -- No --> E_DetectBrokerCreatedBondPattern
entry type is in 61 , 62 , 63 , 69"}:::decision N_DetectBrokerCreatedBondPattern_Node0_action["The system identifies this as a
broker-created bond message
requiring special handling"]:::main N_DetectBrokerCreatedBondPattern_Node0 -- Yes --> N_DetectBrokerCreatedBondPattern_Node0_action N_DetectBrokerCreatedBondPattern_Node0_action --> E_DetectBrokerCreatedBondPattern S_DetectBrokerCreatedBondPattern --> N_DetectBrokerCreatedBondPattern_Node0 N_DetectBrokerCreatedBondPattern_Node0 -- No --> E_DetectBrokerCreatedBondPattern
File: GCX016.cbl
GIVEN:
A message is being processed with disposition code and entry information
WHEN:
The disposition code is '95' and entry type is in ('61', '62', '63', '69')
THEN:
The system identifies this as a broker-created bond message requiring special handling
β Consolidated Acceptance Criteria
- The system formats the message for broker notification → the system applies special bond message formatting including bond control information and broker entity details
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ApplySpecialBondMessageFormatting(["Start Step"])
E_ApplySpecialBondMessageFormatting(["End Step"])
N_ApplySpecialBondMessageFormatting_Node0{"The system formats the message for
broker notification"}:::decision N_ApplySpecialBondMessageFormatting_Node0_action["The system applies special bond
message formatting including bond
control information and broker
entity details"]:::main N_ApplySpecialBondMessageFormatting_Node0 -- Yes --> N_ApplySpecialBondMessageFormatting_Node0_action N_ApplySpecialBondMessageFormatting_Node0_action --> E_ApplySpecialBondMessageFormatting S_ApplySpecialBondMessageFormatting --> N_ApplySpecialBondMessageFormatting_Node0 N_ApplySpecialBondMessageFormatting_Node0 -- No --> E_ApplySpecialBondMessageFormatting
broker notification"}:::decision N_ApplySpecialBondMessageFormatting_Node0_action["The system applies special bond
message formatting including bond
control information and broker
entity details"]:::main N_ApplySpecialBondMessageFormatting_Node0 -- Yes --> N_ApplySpecialBondMessageFormatting_Node0_action N_ApplySpecialBondMessageFormatting_Node0_action --> E_ApplySpecialBondMessageFormatting S_ApplySpecialBondMessageFormatting --> N_ApplySpecialBondMessageFormatting_Node0 N_ApplySpecialBondMessageFormatting_Node0 -- No --> E_ApplySpecialBondMessageFormatting
File: GCX016.cbl
GIVEN:
A broker-created bond message has been identified
WHEN:
The system formats the message for broker notification
THEN:
- The system applies special bond message formatting including bond control information
- Broker entity details
β Consolidated Acceptance Criteria
- The system prepares the message content → the system includes bond control number, entry number, and related bond identifiers in the message
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IncludeBondControlInformation(["Start Step"])
E_IncludeBondControlInformation(["End Step"])
N_IncludeBondControlInformation_Node0{"The system prepares the message
content"}:::decision N_IncludeBondControlInformation_Node0_action["The system includes bond control
number, entry number, and related
bond identifiers in the message"]:::main N_IncludeBondControlInformation_Node0 -- Yes --> N_IncludeBondControlInformation_Node0_action N_IncludeBondControlInformation_Node0_action --> E_IncludeBondControlInformation S_IncludeBondControlInformation --> N_IncludeBondControlInformation_Node0 N_IncludeBondControlInformation_Node0 -- No --> E_IncludeBondControlInformation
content"}:::decision N_IncludeBondControlInformation_Node0_action["The system includes bond control
number, entry number, and related
bond identifiers in the message"]:::main N_IncludeBondControlInformation_Node0 -- Yes --> N_IncludeBondControlInformation_Node0_action N_IncludeBondControlInformation_Node0_action --> E_IncludeBondControlInformation S_IncludeBondControlInformation --> N_IncludeBondControlInformation_Node0 N_IncludeBondControlInformation_Node0 -- No --> E_IncludeBondControlInformation
File: GCX016.cbl
GIVEN:
A broker bond message is being formatted
WHEN:
The system prepares the message content
THEN:
The system includes bond control number, entry number, and related bond identifiers in the message
β Consolidated Acceptance Criteria
- The system retrieves broker information from cargo records → the system adds broker short name, tax number, and entity identification to the message
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AddBrokerEntityDetails(["Start Step"])
E_AddBrokerEntityDetails(["End Step"])
N_AddBrokerEntityDetails_Node0{"The system retrieves broker
information from cargo records"}:::decision N_AddBrokerEntityDetails_Node0_action["The system adds broker short name,
tax number, and entity
identification to the message"]:::main N_AddBrokerEntityDetails_Node0 -- Yes --> N_AddBrokerEntityDetails_Node0_action N_AddBrokerEntityDetails_Node0_action --> E_AddBrokerEntityDetails S_AddBrokerEntityDetails --> N_AddBrokerEntityDetails_Node0 N_AddBrokerEntityDetails_Node0 -- No --> E_AddBrokerEntityDetails
information from cargo records"}:::decision N_AddBrokerEntityDetails_Node0_action["The system adds broker short name,
tax number, and entity
identification to the message"]:::main N_AddBrokerEntityDetails_Node0 -- Yes --> N_AddBrokerEntityDetails_Node0_action N_AddBrokerEntityDetails_Node0_action --> E_AddBrokerEntityDetails S_AddBrokerEntityDetails --> N_AddBrokerEntityDetails_Node0 N_AddBrokerEntityDetails_Node0 -- No --> E_AddBrokerEntityDetails
File: GCX016.cbl
GIVEN:
A broker bond message requires entity details
WHEN:
The system retrieves broker information from cargo records
THEN:
The system adds broker short name, tax number, and entity identification to the message
β Consolidated Acceptance Criteria
- The system formats the disposition code for the message → the system includes disposition code, description, and related customs information in the broker message
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_FormatDispositionCodeInformation(["Start Step"])
E_FormatDispositionCodeInformation(["End Step"])
N_FormatDispositionCodeInformation_Node0{"The system formats the disposition
code for the message"}:::decision N_FormatDispositionCodeInformation_Node0_action["The system includes disposition
code, description, and related
customs information in the broker
message"]:::main N_FormatDispositionCodeInformation_Node0 -- Yes --> N_FormatDispositionCodeInformation_Node0_action N_FormatDispositionCodeInformation_Node0_action --> E_FormatDispositionCodeInformation S_FormatDispositionCodeInformation --> N_FormatDispositionCodeInformation_Node0 N_FormatDispositionCodeInformation_Node0 -- No --> E_FormatDispositionCodeInformation
code for the message"}:::decision N_FormatDispositionCodeInformation_Node0_action["The system includes disposition
code, description, and related
customs information in the broker
message"]:::main N_FormatDispositionCodeInformation_Node0 -- Yes --> N_FormatDispositionCodeInformation_Node0_action N_FormatDispositionCodeInformation_Node0_action --> E_FormatDispositionCodeInformation S_FormatDispositionCodeInformation --> N_FormatDispositionCodeInformation_Node0 N_FormatDispositionCodeInformation_Node0 -- No --> E_FormatDispositionCodeInformation
File: GCX016.cbl
GIVEN:
A broker bond message contains disposition code information
WHEN:
The system formats the disposition code for the message
THEN:
The system includes disposition code, description, and related customs information in the broker message
β Consolidated Acceptance Criteria
- The system processes K1 segments for the message → the system includes K1 remarks and special comments in the broker notification message
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AddK1CommentSegments(["Start Step"])
E_AddK1CommentSegments(["End Step"])
N_AddK1CommentSegments_Node0{"The system processes K1 segments
for the message"}:::decision N_AddK1CommentSegments_Node0_action["The system includes K1 remarks and
special comments in the broker
notification message"]:::main N_AddK1CommentSegments_Node0 -- Yes --> N_AddK1CommentSegments_Node0_action N_AddK1CommentSegments_Node0_action --> E_AddK1CommentSegments S_AddK1CommentSegments --> N_AddK1CommentSegments_Node0 N_AddK1CommentSegments_Node0 -- No --> E_AddK1CommentSegments
for the message"}:::decision N_AddK1CommentSegments_Node0_action["The system includes K1 remarks and
special comments in the broker
notification message"]:::main N_AddK1CommentSegments_Node0 -- Yes --> N_AddK1CommentSegments_Node0_action N_AddK1CommentSegments_Node0_action --> E_AddK1CommentSegments S_AddK1CommentSegments --> N_AddK1CommentSegments_Node0 N_AddK1CommentSegments_Node0 -- No --> E_AddK1CommentSegments
File: GCX016.cbl
GIVEN:
A broker bond message has associated K1 comment segments
WHEN:
The system processes K1 segments for the message
THEN:
- The system includes k1 remarks
- Special comments in the broker notification message
β Consolidated Acceptance Criteria
- The system determines routing parameters → the system sets special routing parameters including broker notification preferences and delivery methods
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetSpecialRoutingParameters(["Start Step"])
E_SetSpecialRoutingParameters(["End Step"])
N_SetSpecialRoutingParameters_Node0{"The system determines routing
parameters"}:::decision N_SetSpecialRoutingParameters_Node0_action["The system sets special routing
parameters including broker
notification preferences and
delivery methods"]:::main N_SetSpecialRoutingParameters_Node0 -- Yes --> N_SetSpecialRoutingParameters_Node0_action N_SetSpecialRoutingParameters_Node0_action --> E_SetSpecialRoutingParameters S_SetSpecialRoutingParameters --> N_SetSpecialRoutingParameters_Node0 N_SetSpecialRoutingParameters_Node0 -- No --> E_SetSpecialRoutingParameters
parameters"}:::decision N_SetSpecialRoutingParameters_Node0_action["The system sets special routing
parameters including broker
notification preferences and
delivery methods"]:::main N_SetSpecialRoutingParameters_Node0 -- Yes --> N_SetSpecialRoutingParameters_Node0_action N_SetSpecialRoutingParameters_Node0_action --> E_SetSpecialRoutingParameters S_SetSpecialRoutingParameters --> N_SetSpecialRoutingParameters_Node0 N_SetSpecialRoutingParameters_Node0 -- No --> E_SetSpecialRoutingParameters
File: GCX016.cbl
GIVEN:
A broker bond message requires routing configuration
WHEN:
The system determines routing parameters
THEN:
- The system sets special routing parameters including broker notification preferences
- Delivery methods
β Consolidated Acceptance Criteria
- The system routes the message → the system sends the message to the broker notification system using configured delivery methods (email or Merlin)
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RoutetoBrokerNotificationSystem(["Start Step"])
E_RoutetoBrokerNotificationSystem(["End Step"])
N_RoutetoBrokerNotificationSystem_Node0{"The system routes the message"}:::decision
N_RoutetoBrokerNotificationSystem_Node0_action["The system sends the message to the
broker notification system using
configured delivery methods email or
Merlin"]:::main N_RoutetoBrokerNotificationSystem_Node0 -- Yes --> N_RoutetoBrokerNotificationSystem_Node0_action N_RoutetoBrokerNotificationSystem_Node0_action --> E_RoutetoBrokerNotificationSystem S_RoutetoBrokerNotificationSystem --> N_RoutetoBrokerNotificationSystem_Node0 N_RoutetoBrokerNotificationSystem_Node0 -- No --> E_RoutetoBrokerNotificationSystem
broker notification system using
configured delivery methods email or
Merlin"]:::main N_RoutetoBrokerNotificationSystem_Node0 -- Yes --> N_RoutetoBrokerNotificationSystem_Node0_action N_RoutetoBrokerNotificationSystem_Node0_action --> E_RoutetoBrokerNotificationSystem S_RoutetoBrokerNotificationSystem --> N_RoutetoBrokerNotificationSystem_Node0 N_RoutetoBrokerNotificationSystem_Node0 -- No --> E_RoutetoBrokerNotificationSystem
File: GCX016.cbl
GIVEN:
A broker bond message is formatted and ready for delivery
WHEN:
The system routes the message
THEN:
The system sends the message to the broker notification system using configured delivery methods (email or Merlin)
β Consolidated Acceptance Criteria
- The system completes the transaction → the system logs the broker bond transaction with timestamp, message details, and routing information for audit purposes
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogBrokerBondTransaction(["Start Step"])
E_LogBrokerBondTransaction(["End Step"])
N_LogBrokerBondTransaction_Node0{"The system completes the
transaction"}:::decision N_LogBrokerBondTransaction_Node0_action["The system logs the broker bond
transaction with timestamp, message
details, and routing information for
audit purposes"]:::main N_LogBrokerBondTransaction_Node0 -- Yes --> N_LogBrokerBondTransaction_Node0_action N_LogBrokerBondTransaction_Node0_action --> E_LogBrokerBondTransaction S_LogBrokerBondTransaction --> N_LogBrokerBondTransaction_Node0 N_LogBrokerBondTransaction_Node0 -- No --> E_LogBrokerBondTransaction
transaction"}:::decision N_LogBrokerBondTransaction_Node0_action["The system logs the broker bond
transaction with timestamp, message
details, and routing information for
audit purposes"]:::main N_LogBrokerBondTransaction_Node0 -- Yes --> N_LogBrokerBondTransaction_Node0_action N_LogBrokerBondTransaction_Node0_action --> E_LogBrokerBondTransaction S_LogBrokerBondTransaction --> N_LogBrokerBondTransaction_Node0 N_LogBrokerBondTransaction_Node0 -- No --> E_LogBrokerBondTransaction
File: GCX016.cbl
GIVEN:
A broker bond message has been processed and routed
WHEN:
The system completes the transaction
THEN:
The system logs the broker bond transaction with timestamp, message details, and routing information for audit purposes
β Consolidated Acceptance Criteria
- The system needs to process status changes for the cargo → the current cargo status information is retrieved from the GCSUSS09 status segments
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RetrieveCurrentCargoStatus(["Start Step"])
E_RetrieveCurrentCargoStatus(["End Step"])
N_RetrieveCurrentCargoStatus_Node0{"The system needs to process status
changes for the cargo"}:::decision N_RetrieveCurrentCargoStatus_Node0_action["The current cargo status
information is retrieved from the
GCSUSS09 status segments"]:::main N_RetrieveCurrentCargoStatus_Node0 -- Yes --> N_RetrieveCurrentCargoStatus_Node0_action N_RetrieveCurrentCargoStatus_Node0_action --> E_RetrieveCurrentCargoStatus S_RetrieveCurrentCargoStatus --> N_RetrieveCurrentCargoStatus_Node0 N_RetrieveCurrentCargoStatus_Node0 -- No --> E_RetrieveCurrentCargoStatus
changes for the cargo"}:::decision N_RetrieveCurrentCargoStatus_Node0_action["The current cargo status
information is retrieved from the
GCSUSS09 status segments"]:::main N_RetrieveCurrentCargoStatus_Node0 -- Yes --> N_RetrieveCurrentCargoStatus_Node0_action N_RetrieveCurrentCargoStatus_Node0_action --> E_RetrieveCurrentCargoStatus S_RetrieveCurrentCargoStatus --> N_RetrieveCurrentCargoStatus_Node0 N_RetrieveCurrentCargoStatus_Node0 -- No --> E_RetrieveCurrentCargoStatus
File: GCX016.cbl
GIVEN:
A cargo record exists in the system with a valid CCN key
WHEN:
The system needs to process status changes for the cargo
THEN:
The current cargo status information is retrieved from the GCSUSS09 status segments
β Consolidated Acceptance Criteria
- Status processing is about to begin → the current status values are saved to working storage arrays for potential restoration
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SaveCurrentStatustoWorkingStorage(["Start Step"])
E_SaveCurrentStatustoWorkingStorage(["End Step"])
N_SaveCurrentStatustoWorkingStorage_Node0{"Status processing is about to begin"}:::decision
N_SaveCurrentStatustoWorkingStorage_Node0_action["The current status values are saved
to working storage arrays for
potential restoration"]:::main N_SaveCurrentStatustoWorkingStorage_Node0 -- Yes --> N_SaveCurrentStatustoWorkingStorage_Node0_action N_SaveCurrentStatustoWorkingStorage_Node0_action --> E_SaveCurrentStatustoWorkingStorage S_SaveCurrentStatustoWorkingStorage --> N_SaveCurrentStatustoWorkingStorage_Node0 N_SaveCurrentStatustoWorkingStorage_Node0 -- No --> E_SaveCurrentStatustoWorkingStorage
to working storage arrays for
potential restoration"]:::main N_SaveCurrentStatustoWorkingStorage_Node0 -- Yes --> N_SaveCurrentStatustoWorkingStorage_Node0_action N_SaveCurrentStatustoWorkingStorage_Node0_action --> E_SaveCurrentStatustoWorkingStorage S_SaveCurrentStatustoWorkingStorage --> N_SaveCurrentStatustoWorkingStorage_Node0 N_SaveCurrentStatustoWorkingStorage_Node0 -- No --> E_SaveCurrentStatustoWorkingStorage
File: GCX016.cbl
GIVEN:
Current cargo status has been retrieved from the database
WHEN:
Status processing is about to begin
THEN:
The current status values are saved to working storage arrays for potential restoration
β Consolidated Acceptance Criteria
- The system checks for existing S09 status segments → if S09 segments exist, load existing status array, otherwise create new status array
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_StatusArrayExists(["Start Step"])
E_StatusArrayExists(["End Step"])
N_StatusArrayExists_Node0{"The system checks for existing S09
status segments"}:::decision N_StatusArrayExists_Node0_action["If S09 segments exist, load
existing status array, otherwise
create new status array"]:::main N_StatusArrayExists_Node0 -- Yes --> N_StatusArrayExists_Node0_action N_StatusArrayExists_Node0_action --> E_StatusArrayExists S_StatusArrayExists --> N_StatusArrayExists_Node0 N_StatusArrayExists_Node0 -- No --> E_StatusArrayExists
status segments"}:::decision N_StatusArrayExists_Node0_action["If S09 segments exist, load
existing status array, otherwise
create new status array"]:::main N_StatusArrayExists_Node0 -- Yes --> N_StatusArrayExists_Node0_action N_StatusArrayExists_Node0_action --> E_StatusArrayExists S_StatusArrayExists --> N_StatusArrayExists_Node0 N_StatusArrayExists_Node0 -- No --> E_StatusArrayExists
File: GCX016.cbl
GIVEN:
A cargo record is being processed for status changes
WHEN:
The system checks for existing S09 status segments
THEN:
If S09 segments exist, load existing status array, otherwise create new status array
β Consolidated Acceptance Criteria
- Complex status transitions may require restoration of original values → original PTT status, hold location information, and release quantities are saved to working storage
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SaveOriginalStatusValues(["Start Step"])
E_SaveOriginalStatusValues(["End Step"])
N_SaveOriginalStatusValues_Node0{"Complex status transitions may
require restoration of original
values"}:::decision N_SaveOriginalStatusValues_Node0_action["Original PTT status, hold location
information, and release quantities
are saved to working storage"]:::main N_SaveOriginalStatusValues_Node0 -- Yes --> N_SaveOriginalStatusValues_Node0_action N_SaveOriginalStatusValues_Node0_action --> E_SaveOriginalStatusValues S_SaveOriginalStatusValues --> N_SaveOriginalStatusValues_Node0 N_SaveOriginalStatusValues_Node0 -- No --> E_SaveOriginalStatusValues
require restoration of original
values"}:::decision N_SaveOriginalStatusValues_Node0_action["Original PTT status, hold location
information, and release quantities
are saved to working storage"]:::main N_SaveOriginalStatusValues_Node0 -- Yes --> N_SaveOriginalStatusValues_Node0_action N_SaveOriginalStatusValues_Node0_action --> E_SaveOriginalStatusValues S_SaveOriginalStatusValues --> N_SaveOriginalStatusValues_Node0 N_SaveOriginalStatusValues_Node0 -- No --> E_SaveOriginalStatusValues
File: GCX016.cbl
GIVEN:
Status array has been loaded or created
WHEN:
Complex status transitions may require restoration of original values
THEN:
Original PTT status, hold location information, and release quantities are saved to working storage
β Consolidated Acceptance Criteria
- The disposition code is processed against the current status array → status changes are applied based on disposition code type (hold, release, remove, info)
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ProcessDispositionCodeChanges(["Start Step"])
E_ProcessDispositionCodeChanges(["End Step"])
N_ProcessDispositionCodeChanges_Node0{"The disposition code is processed
against the current status array"}:::decision N_ProcessDispositionCodeChanges_Node0_action["Status changes are applied based on
disposition code type hold, release,
remove, info"]:::main N_ProcessDispositionCodeChanges_Node0 -- Yes --> N_ProcessDispositionCodeChanges_Node0_action N_ProcessDispositionCodeChanges_Node0_action --> E_ProcessDispositionCodeChanges S_ProcessDispositionCodeChanges --> N_ProcessDispositionCodeChanges_Node0 N_ProcessDispositionCodeChanges_Node0 -- No --> E_ProcessDispositionCodeChanges
against the current status array"}:::decision N_ProcessDispositionCodeChanges_Node0_action["Status changes are applied based on
disposition code type hold, release,
remove, info"]:::main N_ProcessDispositionCodeChanges_Node0 -- Yes --> N_ProcessDispositionCodeChanges_Node0_action N_ProcessDispositionCodeChanges_Node0_action --> E_ProcessDispositionCodeChanges S_ProcessDispositionCodeChanges --> N_ProcessDispositionCodeChanges_Node0 N_ProcessDispositionCodeChanges_Node0 -- No --> E_ProcessDispositionCodeChanges
File: GCX016.cbl
GIVEN:
A disposition code change request is received
WHEN:
The disposition code is processed against the current status array
THEN:
Status changes are applied based on disposition code type (hold, release, remove, info)
β Consolidated Acceptance Criteria
- If the impact on cargo status → if status changes affect cargo state, status transition processing is initiated, otherwise processing completes
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_StatusTransitionRequired(["Start Step"])
E_StatusTransitionRequired(["End Step"])
N_StatusTransitionRequired_Node0{"The system evaluates the impact on
cargo status"}:::decision N_StatusTransitionRequired_Node0_action["If status changes affect cargo
state, status transition processing
is initiated, otherwise processing
completes"]:::main N_StatusTransitionRequired_Node0 -- Yes --> N_StatusTransitionRequired_Node0_action N_StatusTransitionRequired_Node0_action --> E_StatusTransitionRequired S_StatusTransitionRequired --> N_StatusTransitionRequired_Node0 N_StatusTransitionRequired_Node0 -- No --> E_StatusTransitionRequired
cargo status"}:::decision N_StatusTransitionRequired_Node0_action["If status changes affect cargo
state, status transition processing
is initiated, otherwise processing
completes"]:::main N_StatusTransitionRequired_Node0 -- Yes --> N_StatusTransitionRequired_Node0_action N_StatusTransitionRequired_Node0_action --> E_StatusTransitionRequired S_StatusTransitionRequired --> N_StatusTransitionRequired_Node0 N_StatusTransitionRequired_Node0 -- No --> E_StatusTransitionRequired
File: GCX016.cbl
GIVEN:
Disposition code changes have been processed
WHEN:
The system evaluates the impact on cargo status
THEN:
If status changes affect cargo state, status transition processing is initiated, otherwise processing completes
β Consolidated Acceptance Criteria
- The system analyzes the updated status array → new status requirements are determined based on hold conditions, release quantities, and PTT eligibility
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AnalyzeNewStatusRequirements(["Start Step"])
E_AnalyzeNewStatusRequirements(["End Step"])
N_AnalyzeNewStatusRequirements_Node0{"The system analyzes the updated
status array"}:::decision N_AnalyzeNewStatusRequirements_Node0_action["New status requirements are
determined based on hold conditions,
release quantities, and PTT
eligibility"]:::main N_AnalyzeNewStatusRequirements_Node0 -- Yes --> N_AnalyzeNewStatusRequirements_Node0_action N_AnalyzeNewStatusRequirements_Node0_action --> E_AnalyzeNewStatusRequirements S_AnalyzeNewStatusRequirements --> N_AnalyzeNewStatusRequirements_Node0 N_AnalyzeNewStatusRequirements_Node0 -- No --> E_AnalyzeNewStatusRequirements
status array"}:::decision N_AnalyzeNewStatusRequirements_Node0_action["New status requirements are
determined based on hold conditions,
release quantities, and PTT
eligibility"]:::main N_AnalyzeNewStatusRequirements_Node0 -- Yes --> N_AnalyzeNewStatusRequirements_Node0_action N_AnalyzeNewStatusRequirements_Node0_action --> E_AnalyzeNewStatusRequirements S_AnalyzeNewStatusRequirements --> N_AnalyzeNewStatusRequirements_Node0 N_AnalyzeNewStatusRequirements_Node0 -- No --> E_AnalyzeNewStatusRequirements
File: GCX016.cbl
GIVEN:
Status transition is required
WHEN:
The system analyzes the updated status array
THEN:
New status requirements are determined based on hold conditions, release quantities, and PTT eligibility
β Consolidated Acceptance Criteria
- If preservation rules → if preservation is required, saved status values are restored, otherwise new status changes are applied
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_PreserveOriginalStatus(["Start Step"])
E_PreserveOriginalStatus(["End Step"])
N_PreserveOriginalStatus_Node0{"The system evaluates preservation
rules"}:::decision N_PreserveOriginalStatus_Node0_action["If preservation is required, saved
status values are restored,
otherwise new status changes are
applied"]:::main N_PreserveOriginalStatus_Node0 -- Yes --> N_PreserveOriginalStatus_Node0_action N_PreserveOriginalStatus_Node0_action --> E_PreserveOriginalStatus S_PreserveOriginalStatus --> N_PreserveOriginalStatus_Node0 N_PreserveOriginalStatus_Node0 -- No --> E_PreserveOriginalStatus
rules"}:::decision N_PreserveOriginalStatus_Node0_action["If preservation is required, saved
status values are restored,
otherwise new status changes are
applied"]:::main N_PreserveOriginalStatus_Node0 -- Yes --> N_PreserveOriginalStatus_Node0_action N_PreserveOriginalStatus_Node0_action --> E_PreserveOriginalStatus S_PreserveOriginalStatus --> N_PreserveOriginalStatus_Node0 N_PreserveOriginalStatus_Node0 -- No --> E_PreserveOriginalStatus
File: GCX016.cbl
GIVEN:
New status requirements have been analyzed
WHEN:
The system evaluates preservation rules
THEN:
If preservation is required, saved status values are restored, otherwise new status changes are applied
β Consolidated Acceptance Criteria
- Status restoration is triggered → original PTT status, hold information, and release quantities are restored from working storage
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RestoreSavedStatusValues(["Start Step"])
E_RestoreSavedStatusValues(["End Step"])
N_RestoreSavedStatusValues_Node0{"Status restoration is triggered"}:::decision
N_RestoreSavedStatusValues_Node0_action["Original PTT status, hold
information, and release quantities
are restored from working storage"]:::main N_RestoreSavedStatusValues_Node0 -- Yes --> N_RestoreSavedStatusValues_Node0_action N_RestoreSavedStatusValues_Node0_action --> E_RestoreSavedStatusValues S_RestoreSavedStatusValues --> N_RestoreSavedStatusValues_Node0 N_RestoreSavedStatusValues_Node0 -- No --> E_RestoreSavedStatusValues
information, and release quantities
are restored from working storage"]:::main N_RestoreSavedStatusValues_Node0 -- Yes --> N_RestoreSavedStatusValues_Node0_action N_RestoreSavedStatusValues_Node0_action --> E_RestoreSavedStatusValues S_RestoreSavedStatusValues --> N_RestoreSavedStatusValues_Node0 N_RestoreSavedStatusValues_Node0 -- No --> E_RestoreSavedStatusValues
File: GCX016.cbl
GIVEN:
Status preservation is required and original values were saved
WHEN:
Status restoration is triggered
THEN:
Original PTT status, hold information, and release quantities are restored from working storage
β Consolidated Acceptance Criteria
- New status changes are ready to be applied → the status array is updated with new disposition codes and status information
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ApplyNewStatusChanges(["Start Step"])
E_ApplyNewStatusChanges(["End Step"])
N_ApplyNewStatusChanges_Node0{"New status changes are ready to be
applied"}:::decision N_ApplyNewStatusChanges_Node0_action["The status array is updated with
new disposition codes and status
information"]:::main N_ApplyNewStatusChanges_Node0 -- Yes --> N_ApplyNewStatusChanges_Node0_action N_ApplyNewStatusChanges_Node0_action --> E_ApplyNewStatusChanges S_ApplyNewStatusChanges --> N_ApplyNewStatusChanges_Node0 N_ApplyNewStatusChanges_Node0 -- No --> E_ApplyNewStatusChanges
applied"}:::decision N_ApplyNewStatusChanges_Node0_action["The status array is updated with
new disposition codes and status
information"]:::main N_ApplyNewStatusChanges_Node0 -- Yes --> N_ApplyNewStatusChanges_Node0_action N_ApplyNewStatusChanges_Node0_action --> E_ApplyNewStatusChanges S_ApplyNewStatusChanges --> N_ApplyNewStatusChanges_Node0 N_ApplyNewStatusChanges_Node0 -- No --> E_ApplyNewStatusChanges
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
Status preservation is not required
WHEN:
New status changes are ready to be applied
THEN:
- The status array is updated with new disposition codes
- Status information
β Consolidated Acceptance Criteria
- Status flags need to be updated → flags for empty, held, released, PTT, export, and arrival conditions are set based on status array analysis
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UpdateStatusFlags(["Start Step"])
E_UpdateStatusFlags(["End Step"])
N_UpdateStatusFlags_Node0{"Status flags need to be updated"}:::decision
N_UpdateStatusFlags_Node0_action["Flags for empty, held, released,
PTT, export, and arrival conditions
are set based on status array
analysis"]:::main N_UpdateStatusFlags_Node0 -- Yes --> N_UpdateStatusFlags_Node0_action N_UpdateStatusFlags_Node0_action --> E_UpdateStatusFlags S_UpdateStatusFlags --> N_UpdateStatusFlags_Node0 N_UpdateStatusFlags_Node0 -- No --> E_UpdateStatusFlags
PTT, export, and arrival conditions
are set based on status array
analysis"]:::main N_UpdateStatusFlags_Node0 -- Yes --> N_UpdateStatusFlags_Node0_action N_UpdateStatusFlags_Node0_action --> E_UpdateStatusFlags S_UpdateStatusFlags --> N_UpdateStatusFlags_Node0 N_UpdateStatusFlags_Node0 -- No --> E_UpdateStatusFlags
File: GCX016.cbl
GIVEN:
Status changes have been applied or restored
WHEN:
Status flags need to be updated
THEN:
Flags for empty, held, released, PTT, export, and arrival conditions are set based on status array analysis
β Consolidated Acceptance Criteria
- If complexity requirements → if complex logic is needed, PTT status and hold information are preserved, otherwise status validation proceeds
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ComplexStatusLogic(["Start Step"])
E_ComplexStatusLogic(["End Step"])
N_ComplexStatusLogic_Node0{"The system evaluates complexity
requirements"}:::decision N_ComplexStatusLogic_Node0_action["If complex logic is needed, PTT
status and hold information are
preserved, otherwise status
validation proceeds"]:::main N_ComplexStatusLogic_Node0 -- Yes --> N_ComplexStatusLogic_Node0_action N_ComplexStatusLogic_Node0_action --> E_ComplexStatusLogic S_ComplexStatusLogic --> N_ComplexStatusLogic_Node0 N_ComplexStatusLogic_Node0 -- No --> E_ComplexStatusLogic
requirements"}:::decision N_ComplexStatusLogic_Node0_action["If complex logic is needed, PTT
status and hold information are
preserved, otherwise status
validation proceeds"]:::main N_ComplexStatusLogic_Node0 -- Yes --> N_ComplexStatusLogic_Node0_action N_ComplexStatusLogic_Node0_action --> E_ComplexStatusLogic S_ComplexStatusLogic --> N_ComplexStatusLogic_Node0 N_ComplexStatusLogic_Node0 -- No --> E_ComplexStatusLogic
File: GCX016.cbl
GIVEN:
Status flags have been updated
WHEN:
The system evaluates complexity requirements
THEN:
- If complex logic is needed, ptt status
- Hold information are preserved, otherwise status validation proceeds
β Consolidated Acceptance Criteria
- PTT status needs to be preserved → current PTT status flags and related information are saved to working storage
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SavePTTStatus(["Start Step"])
E_SavePTTStatus(["End Step"])
N_SavePTTStatus_Node0{"PTT status needs to be preserved"}:::decision
N_SavePTTStatus_Node0_action["Current PTT status flags and
related information are saved to
working storage"]:::main N_SavePTTStatus_Node0 -- Yes --> N_SavePTTStatus_Node0_action N_SavePTTStatus_Node0_action --> E_SavePTTStatus S_SavePTTStatus --> N_SavePTTStatus_Node0 N_SavePTTStatus_Node0 -- No --> E_SavePTTStatus
related information are saved to
working storage"]:::main N_SavePTTStatus_Node0 -- Yes --> N_SavePTTStatus_Node0_action N_SavePTTStatus_Node0_action --> E_SavePTTStatus S_SavePTTStatus --> N_SavePTTStatus_Node0 N_SavePTTStatus_Node0 -- No --> E_SavePTTStatus
File: GCX016.cbl
GIVEN:
Complex status logic is required
WHEN:
PTT status needs to be preserved
THEN:
- Current ptt status flags
- Related information are saved to working storage
β Consolidated Acceptance Criteria
- Hold location information needs to be saved → border hold, destination hold, and location-specific information are preserved in working storage
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SaveHoldLocationInfo(["Start Step"])
E_SaveHoldLocationInfo(["End Step"])
N_SaveHoldLocationInfo_Node0{"Hold location information needs to
be saved"}:::decision N_SaveHoldLocationInfo_Node0_action["Border hold, destination hold, and
location-specific information are
preserved in working storage"]:::main N_SaveHoldLocationInfo_Node0 -- Yes --> N_SaveHoldLocationInfo_Node0_action N_SaveHoldLocationInfo_Node0_action --> E_SaveHoldLocationInfo S_SaveHoldLocationInfo --> N_SaveHoldLocationInfo_Node0 N_SaveHoldLocationInfo_Node0 -- No --> E_SaveHoldLocationInfo
be saved"}:::decision N_SaveHoldLocationInfo_Node0_action["Border hold, destination hold, and
location-specific information are
preserved in working storage"]:::main N_SaveHoldLocationInfo_Node0 -- Yes --> N_SaveHoldLocationInfo_Node0_action N_SaveHoldLocationInfo_Node0_action --> E_SaveHoldLocationInfo S_SaveHoldLocationInfo --> N_SaveHoldLocationInfo_Node0 N_SaveHoldLocationInfo_Node0 -- No --> E_SaveHoldLocationInfo
File: GCX016.cbl
GIVEN:
PTT status has been preserved
WHEN:
Hold location information needs to be saved
THEN:
Border hold, destination hold, and location-specific information are preserved in working storage
β Consolidated Acceptance Criteria
- Release quantities need to be saved → current release quantities and total quantities are preserved in working storage
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SaveReleaseQuantities(["Start Step"])
E_SaveReleaseQuantities(["End Step"])
N_SaveReleaseQuantities_Node0{"Release quantities need to be saved"}:::decision
N_SaveReleaseQuantities_Node0_action["Current release quantities and
total quantities are preserved in
working storage"]:::main N_SaveReleaseQuantities_Node0 -- Yes --> N_SaveReleaseQuantities_Node0_action N_SaveReleaseQuantities_Node0_action --> E_SaveReleaseQuantities S_SaveReleaseQuantities --> N_SaveReleaseQuantities_Node0 N_SaveReleaseQuantities_Node0 -- No --> E_SaveReleaseQuantities
total quantities are preserved in
working storage"]:::main N_SaveReleaseQuantities_Node0 -- Yes --> N_SaveReleaseQuantities_Node0_action N_SaveReleaseQuantities_Node0_action --> E_SaveReleaseQuantities S_SaveReleaseQuantities --> N_SaveReleaseQuantities_Node0 N_SaveReleaseQuantities_Node0 -- No --> E_SaveReleaseQuantities
File: GCX016.cbl
GIVEN:
Hold location information has been preserved
WHEN:
Release quantities need to be saved
THEN:
- Current release quantities
- Total quantities are preserved in working storage
β Consolidated Acceptance Criteria
- Status transition processing is executed → cargo status is updated according to business rules while maintaining data integrity
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ProcessStatusTransition(["Start Step"])
E_ProcessStatusTransition(["End Step"])
N_ProcessStatusTransition_Node0{"Status transition processing is
executed"}:::decision N_ProcessStatusTransition_Node0_action["Cargo status is updated according
to business rules while maintaining
data integrity"]:::main N_ProcessStatusTransition_Node0 -- Yes --> N_ProcessStatusTransition_Node0_action N_ProcessStatusTransition_Node0_action --> E_ProcessStatusTransition S_ProcessStatusTransition --> N_ProcessStatusTransition_Node0 N_ProcessStatusTransition_Node0 -- No --> E_ProcessStatusTransition
executed"}:::decision N_ProcessStatusTransition_Node0_action["Cargo status is updated according
to business rules while maintaining
data integrity"]:::main N_ProcessStatusTransition_Node0 -- Yes --> N_ProcessStatusTransition_Node0_action N_ProcessStatusTransition_Node0_action --> E_ProcessStatusTransition S_ProcessStatusTransition --> N_ProcessStatusTransition_Node0 N_ProcessStatusTransition_Node0 -- No --> E_ProcessStatusTransition
File: GCX016.cbl
GIVEN:
All necessary status information has been preserved
WHEN:
Status transition processing is executed
THEN:
Cargo status is updated according to business rules while maintaining data integrity
β Consolidated Acceptance Criteria
- If restoration requirements → if restoration is needed, preserved values are restored, otherwise status validation proceeds
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RestoreRequired(["Start Step"])
E_RestoreRequired(["End Step"])
N_RestoreRequired_Node0{"The system evaluates restoration
requirements"}:::decision N_RestoreRequired_Node0_action["If restoration is needed, preserved
values are restored, otherwise
status validation proceeds"]:::main N_RestoreRequired_Node0 -- Yes --> N_RestoreRequired_Node0_action N_RestoreRequired_Node0_action --> E_RestoreRequired S_RestoreRequired --> N_RestoreRequired_Node0 N_RestoreRequired_Node0 -- No --> E_RestoreRequired
requirements"}:::decision N_RestoreRequired_Node0_action["If restoration is needed, preserved
values are restored, otherwise
status validation proceeds"]:::main N_RestoreRequired_Node0 -- Yes --> N_RestoreRequired_Node0_action N_RestoreRequired_Node0_action --> E_RestoreRequired S_RestoreRequired --> N_RestoreRequired_Node0 N_RestoreRequired_Node0 -- No --> E_RestoreRequired
File: GCX016.cbl
GIVEN:
Status transition processing has been completed
WHEN:
The system evaluates restoration requirements
THEN:
If restoration is needed, preserved values are restored, otherwise status validation proceeds
β Consolidated Acceptance Criteria
- PTT status restoration is executed → preserved PTT status flags and information are restored to the cargo record
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RestorePTTStatus(["Start Step"])
E_RestorePTTStatus(["End Step"])
N_RestorePTTStatus_Node0{"PTT status restoration is executed"}:::decision
N_RestorePTTStatus_Node0_action["Preserved PTT status flags and
information are restored to the
cargo record"]:::main N_RestorePTTStatus_Node0 -- Yes --> N_RestorePTTStatus_Node0_action N_RestorePTTStatus_Node0_action --> E_RestorePTTStatus S_RestorePTTStatus --> N_RestorePTTStatus_Node0 N_RestorePTTStatus_Node0 -- No --> E_RestorePTTStatus
information are restored to the
cargo record"]:::main N_RestorePTTStatus_Node0 -- Yes --> N_RestorePTTStatus_Node0_action N_RestorePTTStatus_Node0_action --> E_RestorePTTStatus S_RestorePTTStatus --> N_RestorePTTStatus_Node0 N_RestorePTTStatus_Node0 -- No --> E_RestorePTTStatus
File: GCX016.cbl
GIVEN:
Status restoration is required and PTT status was preserved
WHEN:
PTT status restoration is executed
THEN:
- Preserved ptt status flags
- Information are restored to the cargo record
β Consolidated Acceptance Criteria
- Hold information restoration is executed → preserved border hold, destination hold, and location information are restored
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RestoreHoldInformation(["Start Step"])
E_RestoreHoldInformation(["End Step"])
N_RestoreHoldInformation_Node0{"Hold information restoration is
executed"}:::decision N_RestoreHoldInformation_Node0_action["Preserved border hold, destination
hold, and location information are
restored"]:::main N_RestoreHoldInformation_Node0 -- Yes --> N_RestoreHoldInformation_Node0_action N_RestoreHoldInformation_Node0_action --> E_RestoreHoldInformation S_RestoreHoldInformation --> N_RestoreHoldInformation_Node0 N_RestoreHoldInformation_Node0 -- No --> E_RestoreHoldInformation
executed"}:::decision N_RestoreHoldInformation_Node0_action["Preserved border hold, destination
hold, and location information are
restored"]:::main N_RestoreHoldInformation_Node0 -- Yes --> N_RestoreHoldInformation_Node0_action N_RestoreHoldInformation_Node0_action --> E_RestoreHoldInformation S_RestoreHoldInformation --> N_RestoreHoldInformation_Node0 N_RestoreHoldInformation_Node0 -- No --> E_RestoreHoldInformation
File: GCX016.cbl
GIVEN:
PTT status has been restored
WHEN:
Hold information restoration is executed
THEN:
Preserved border hold, destination hold, and location information are restored
β Consolidated Acceptance Criteria
- Release quantity restoration is executed → preserved release quantities and total quantities are restored to maintain data consistency
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RestoreReleaseQuantities(["Start Step"])
E_RestoreReleaseQuantities(["End Step"])
N_RestoreReleaseQuantities_Node0{"Release quantity restoration is
executed"}:::decision N_RestoreReleaseQuantities_Node0_action["Preserved release quantities and
total quantities are restored to
maintain data consistency"]:::main N_RestoreReleaseQuantities_Node0 -- Yes --> N_RestoreReleaseQuantities_Node0_action N_RestoreReleaseQuantities_Node0_action --> E_RestoreReleaseQuantities S_RestoreReleaseQuantities --> N_RestoreReleaseQuantities_Node0 N_RestoreReleaseQuantities_Node0 -- No --> E_RestoreReleaseQuantities
executed"}:::decision N_RestoreReleaseQuantities_Node0_action["Preserved release quantities and
total quantities are restored to
maintain data consistency"]:::main N_RestoreReleaseQuantities_Node0 -- Yes --> N_RestoreReleaseQuantities_Node0_action N_RestoreReleaseQuantities_Node0_action --> E_RestoreReleaseQuantities S_RestoreReleaseQuantities --> N_RestoreReleaseQuantities_Node0 N_RestoreReleaseQuantities_Node0 -- No --> E_RestoreReleaseQuantities
File: GCX016.cbl
GIVEN:
Hold information has been restored
WHEN:
Release quantity restoration is executed
THEN:
- Preserved release quantities
- Total quantities are restored to maintain data consistency
β Consolidated Acceptance Criteria
- Final status array update is performed → the S09A status array is updated with all processed status changes and redistributed across S09 sequences
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UpdateFinalStatusArray(["Start Step"])
E_UpdateFinalStatusArray(["End Step"])
N_UpdateFinalStatusArray_Node0{"Final status array update is
performed"}:::decision N_UpdateFinalStatusArray_Node0_action["The S09A status array is updated
with all processed status changes
and redistributed across S09
sequences"]:::main N_UpdateFinalStatusArray_Node0 -- Yes --> N_UpdateFinalStatusArray_Node0_action N_UpdateFinalStatusArray_Node0_action --> E_UpdateFinalStatusArray S_UpdateFinalStatusArray --> N_UpdateFinalStatusArray_Node0 N_UpdateFinalStatusArray_Node0 -- No --> E_UpdateFinalStatusArray
performed"}:::decision N_UpdateFinalStatusArray_Node0_action["The S09A status array is updated
with all processed status changes
and redistributed across S09
sequences"]:::main N_UpdateFinalStatusArray_Node0 -- Yes --> N_UpdateFinalStatusArray_Node0_action N_UpdateFinalStatusArray_Node0_action --> E_UpdateFinalStatusArray S_UpdateFinalStatusArray --> N_UpdateFinalStatusArray_Node0 N_UpdateFinalStatusArray_Node0 -- No --> E_UpdateFinalStatusArray
File: GCX016.cbl
GIVEN:
Status consistency has been validated
WHEN:
Final status array update is performed
THEN:
- The s09a status array is updated with all processed status changes
- Redistributed across s09 sequences
β Consolidated Acceptance Criteria
- Database persistence is executed → updated S09 status segments are written to the GCSUSS09 database and cargo status is updated
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_PersistStatusChangestoDatabase(["Start Step"])
E_PersistStatusChangestoDatabase(["End Step"])
N_PersistStatusChangestoDatabase_Node0{"Database persistence is executed"}:::decision
N_PersistStatusChangestoDatabase_Node0_action["Updated S09 status segments are
written to the GCSUSS09 database and
cargo status is updated"]:::main N_PersistStatusChangestoDatabase_Node0 -- Yes --> N_PersistStatusChangestoDatabase_Node0_action N_PersistStatusChangestoDatabase_Node0_action --> E_PersistStatusChangestoDatabase S_PersistStatusChangestoDatabase --> N_PersistStatusChangestoDatabase_Node0 N_PersistStatusChangestoDatabase_Node0 -- No --> E_PersistStatusChangestoDatabase
written to the GCSUSS09 database and
cargo status is updated"]:::main N_PersistStatusChangestoDatabase_Node0 -- Yes --> N_PersistStatusChangestoDatabase_Node0_action N_PersistStatusChangestoDatabase_Node0_action --> E_PersistStatusChangestoDatabase S_PersistStatusChangestoDatabase --> N_PersistStatusChangestoDatabase_Node0 N_PersistStatusChangestoDatabase_Node0 -- No --> E_PersistStatusChangestoDatabase
File: GCX016.cbl
GIVEN:
Final status array has been updated and validated
WHEN:
Database persistence is executed
THEN:
- Updated s09 status segments are written to the gcsuss09 database
- Cargo status is updated
β Consolidated Acceptance Criteria
- The system processes the N7-02 field to extract equipment ID → the equipment ID is captured from N7-02 field for further processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExtractEquipmentIDfromN702(["Start Step"])
E_ExtractEquipmentIDfromN702(["End Step"])
N_ExtractEquipmentIDfromN702_Node0{"The system processes the N7-02
field to extract equipment ID"}:::decision N_ExtractEquipmentIDfromN702_Node0_action["The equipment ID is captured from
N7-02 field for further processing"]:::main N_ExtractEquipmentIDfromN702_Node0 -- Yes --> N_ExtractEquipmentIDfromN702_Node0_action N_ExtractEquipmentIDfromN702_Node0_action --> E_ExtractEquipmentIDfromN702 S_ExtractEquipmentIDfromN702 --> N_ExtractEquipmentIDfromN702_Node0 N_ExtractEquipmentIDfromN702_Node0 -- No --> E_ExtractEquipmentIDfromN702
field to extract equipment ID"}:::decision N_ExtractEquipmentIDfromN702_Node0_action["The equipment ID is captured from
N7-02 field for further processing"]:::main N_ExtractEquipmentIDfromN702_Node0 -- Yes --> N_ExtractEquipmentIDfromN702_Node0_action N_ExtractEquipmentIDfromN702_Node0_action --> E_ExtractEquipmentIDfromN702 S_ExtractEquipmentIDfromN702 --> N_ExtractEquipmentIDfromN702_Node0 N_ExtractEquipmentIDfromN702_Node0 -- No --> E_ExtractEquipmentIDfromN702
File: GCX016.cbl
GIVEN:
An N7 equipment segment is received with equipment information
WHEN:
The system processes the N7-02 field to extract equipment ID
THEN:
The equipment ID is captured from N7-02 field for further processing
β Consolidated Acceptance Criteria
- The system searches for cargo records using the car ID → all cargo records associated with the car ID are retrieved from the cargo database
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RetrieveCargoRecordsbyCarID(["Start Step"])
E_RetrieveCargoRecordsbyCarID(["End Step"])
N_RetrieveCargoRecordsbyCarID_Node0{"The system searches for cargo
records using the car ID"}:::decision N_RetrieveCargoRecordsbyCarID_Node0_action["All cargo records associated with
the car ID are retrieved from the
cargo database"]:::main N_RetrieveCargoRecordsbyCarID_Node0 -- Yes --> N_RetrieveCargoRecordsbyCarID_Node0_action N_RetrieveCargoRecordsbyCarID_Node0_action --> E_RetrieveCargoRecordsbyCarID S_RetrieveCargoRecordsbyCarID --> N_RetrieveCargoRecordsbyCarID_Node0 N_RetrieveCargoRecordsbyCarID_Node0 -- No --> E_RetrieveCargoRecordsbyCarID
records using the car ID"}:::decision N_RetrieveCargoRecordsbyCarID_Node0_action["All cargo records associated with
the car ID are retrieved from the
cargo database"]:::main N_RetrieveCargoRecordsbyCarID_Node0 -- Yes --> N_RetrieveCargoRecordsbyCarID_Node0_action N_RetrieveCargoRecordsbyCarID_Node0_action --> E_RetrieveCargoRecordsbyCarID S_RetrieveCargoRecordsbyCarID --> N_RetrieveCargoRecordsbyCarID_Node0 N_RetrieveCargoRecordsbyCarID_Node0 -- No --> E_RetrieveCargoRecordsbyCarID
File: GCX016.cbl
GIVEN:
A valid equipment ID has been confirmed
WHEN:
The system searches for cargo records using the car ID
THEN:
All cargo records associated with the car ID are retrieved from the cargo database
β Consolidated Acceptance Criteria
- The system updates the car ID field in the cargo record → the cargo record car ID is updated with the formatted equipment ID from N7 segment
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UpdateCarIDinCargoRecord(["Start Step"])
E_UpdateCarIDinCargoRecord(["End Step"])
N_UpdateCarIDinCargoRecord_Node0{"The system updates the car ID field
in the cargo record"}:::decision N_UpdateCarIDinCargoRecord_Node0_action["The cargo record car ID is updated
with the formatted equipment ID from
N7 segment"]:::main N_UpdateCarIDinCargoRecord_Node0 -- Yes --> N_UpdateCarIDinCargoRecord_Node0_action N_UpdateCarIDinCargoRecord_Node0_action --> E_UpdateCarIDinCargoRecord S_UpdateCarIDinCargoRecord --> N_UpdateCarIDinCargoRecord_Node0 N_UpdateCarIDinCargoRecord_Node0 -- No --> E_UpdateCarIDinCargoRecord
in the cargo record"}:::decision N_UpdateCarIDinCargoRecord_Node0_action["The cargo record car ID is updated
with the formatted equipment ID from
N7 segment"]:::main N_UpdateCarIDinCargoRecord_Node0 -- Yes --> N_UpdateCarIDinCargoRecord_Node0_action N_UpdateCarIDinCargoRecord_Node0_action --> E_UpdateCarIDinCargoRecord S_UpdateCarIDinCargoRecord --> N_UpdateCarIDinCargoRecord_Node0 N_UpdateCarIDinCargoRecord_Node0 -- No --> E_UpdateCarIDinCargoRecord
File: GCX016.cbl
GIVEN:
Cargo records have been found for the equipment car ID
WHEN:
The system updates the car ID field in the cargo record
THEN:
The cargo record car ID is updated with the formatted equipment ID from N7 segment
β Consolidated Acceptance Criteria
- The system validates the equipment information completeness and accuracy → equipment information is verified for data integrity and business rule compliance
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ValidateEquipmentInformation(["Start Step"])
E_ValidateEquipmentInformation(["End Step"])
N_ValidateEquipmentInformation_Node0{"The system validates the equipment
information completeness and
accuracy"}:::decision N_ValidateEquipmentInformation_Node0_action["Equipment information is verified
for data integrity and business rule
compliance"]:::main N_ValidateEquipmentInformation_Node0 -- Yes --> N_ValidateEquipmentInformation_Node0_action N_ValidateEquipmentInformation_Node0_action --> E_ValidateEquipmentInformation S_ValidateEquipmentInformation --> N_ValidateEquipmentInformation_Node0 N_ValidateEquipmentInformation_Node0 -- No --> E_ValidateEquipmentInformation
information completeness and
accuracy"}:::decision N_ValidateEquipmentInformation_Node0_action["Equipment information is verified
for data integrity and business rule
compliance"]:::main N_ValidateEquipmentInformation_Node0 -- Yes --> N_ValidateEquipmentInformation_Node0_action N_ValidateEquipmentInformation_Node0_action --> E_ValidateEquipmentInformation S_ValidateEquipmentInformation --> N_ValidateEquipmentInformation_Node0 N_ValidateEquipmentInformation_Node0 -- No --> E_ValidateEquipmentInformation
File: GCX016.cbl
GIVEN:
Car ID has been updated in the cargo record
WHEN:
- The system validates the equipment information completeness
- Accuracy
THEN:
- Equipment information is verified for data integrity
- Business rule compliance
β Consolidated Acceptance Criteria
- The system checks if validation was successful → if validation successful, replace cargo record in database, otherwise log validation error
- Validation results are evaluated → system determines if validation was successful to proceed with storage or error handling
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ValidationSuccessful(["Start Step"])
E_ValidationSuccessful(["End Step"])
N_ValidationSuccessful_Node0{"The system checks if validation was
successful"}:::decision N_ValidationSuccessful_Node0_action["If validation successful, replace
cargo record in database, otherwise
log validation error"]:::main N_ValidationSuccessful_Node0 -- Yes --> N_ValidationSuccessful_Node0_action N_ValidationSuccessful_Node0_action --> E_ValidationSuccessful S_ValidationSuccessful --> N_ValidationSuccessful_Node0 N_ValidationSuccessful_Node1{"validation results are evaluated"}:::decision N_ValidationSuccessful_Node1_action["system determines if validation was
successful to proceed with storage
or error handling"]:::main N_ValidationSuccessful_Node1 -- Yes --> N_ValidationSuccessful_Node1_action N_ValidationSuccessful_Node1_action --> E_ValidationSuccessful N_ValidationSuccessful_Node0 -- No --> N_ValidationSuccessful_Node1 N_ValidationSuccessful_Node1 -- No --> E_ValidationSuccessful
successful"}:::decision N_ValidationSuccessful_Node0_action["If validation successful, replace
cargo record in database, otherwise
log validation error"]:::main N_ValidationSuccessful_Node0 -- Yes --> N_ValidationSuccessful_Node0_action N_ValidationSuccessful_Node0_action --> E_ValidationSuccessful S_ValidationSuccessful --> N_ValidationSuccessful_Node0 N_ValidationSuccessful_Node1{"validation results are evaluated"}:::decision N_ValidationSuccessful_Node1_action["system determines if validation was
successful to proceed with storage
or error handling"]:::main N_ValidationSuccessful_Node1 -- Yes --> N_ValidationSuccessful_Node1_action N_ValidationSuccessful_Node1_action --> E_ValidationSuccessful N_ValidationSuccessful_Node0 -- No --> N_ValidationSuccessful_Node1 N_ValidationSuccessful_Node1 -- No --> E_ValidationSuccessful
File: GCX016.cbl
GIVEN:
Equipment information has been validated
WHEN:
The system checks if validation was successful
THEN:
If validation successful, replace cargo record in database, otherwise log validation error
File: GCX016.cbl
GIVEN:
segment structure validation is completed
WHEN:
validation results are evaluated
THEN:
system determines if validation was successful to proceed with storage or error handling
β Consolidated Acceptance Criteria
- The system logs the equipment update transaction → equipment update is recorded in system logs with cargo and equipment details
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogEquipmentUpdate(["Start Step"])
E_LogEquipmentUpdate(["End Step"])
N_LogEquipmentUpdate_Node0{"The system logs the equipment
update transaction"}:::decision N_LogEquipmentUpdate_Node0_action["Equipment update is recorded in
system logs with cargo and equipment
details"]:::main N_LogEquipmentUpdate_Node0 -- Yes --> N_LogEquipmentUpdate_Node0_action N_LogEquipmentUpdate_Node0_action --> E_LogEquipmentUpdate S_LogEquipmentUpdate --> N_LogEquipmentUpdate_Node0 N_LogEquipmentUpdate_Node0 -- No --> E_LogEquipmentUpdate
update transaction"}:::decision N_LogEquipmentUpdate_Node0_action["Equipment update is recorded in
system logs with cargo and equipment
details"]:::main N_LogEquipmentUpdate_Node0 -- Yes --> N_LogEquipmentUpdate_Node0_action N_LogEquipmentUpdate_Node0_action --> E_LogEquipmentUpdate S_LogEquipmentUpdate --> N_LogEquipmentUpdate_Node0 N_LogEquipmentUpdate_Node0 -- No --> E_LogEquipmentUpdate
File: GCX016.cbl
GIVEN:
Cargo record has been successfully updated in the database
WHEN:
The system logs the equipment update transaction
THEN:
- Equipment update is recorded in system logs with cargo
- Equipment details
β Consolidated Acceptance Criteria
- The system processes the M10 segment → the transport type is extracted and prepared for cargo record update
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExtractTransportTypefromM10(["Start Step"])
E_ExtractTransportTypefromM10(["End Step"])
N_ExtractTransportTypefromM10_Node0{"The system processes the M10
segment"}:::decision N_ExtractTransportTypefromM10_Node0_action["The transport type is extracted and
prepared for cargo record update"]:::main N_ExtractTransportTypefromM10_Node0 -- Yes --> N_ExtractTransportTypefromM10_Node0_action N_ExtractTransportTypefromM10_Node0_action --> E_ExtractTransportTypefromM10 S_ExtractTransportTypefromM10 --> N_ExtractTransportTypefromM10_Node0 N_ExtractTransportTypefromM10_Node0 -- No --> E_ExtractTransportTypefromM10
segment"}:::decision N_ExtractTransportTypefromM10_Node0_action["The transport type is extracted and
prepared for cargo record update"]:::main N_ExtractTransportTypefromM10_Node0 -- Yes --> N_ExtractTransportTypefromM10_Node0_action N_ExtractTransportTypefromM10_Node0_action --> E_ExtractTransportTypefromM10 S_ExtractTransportTypefromM10 --> N_ExtractTransportTypefromM10_Node0 N_ExtractTransportTypefromM10_Node0 -- No --> E_ExtractTransportTypefromM10
File: GCX016.cbl
GIVEN:
An M10 manifest segment contains transport type information
WHEN:
The system processes the M10 segment
THEN:
- The transport type is extracted
- Prepared for cargo record update
β Consolidated Acceptance Criteria
- The system processes the M10 segment → the country code is extracted for cargo record integration
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExtractCountryCodefromM10(["Start Step"])
E_ExtractCountryCodefromM10(["End Step"])
N_ExtractCountryCodefromM10_Node0{"The system processes the M10
segment"}:::decision N_ExtractCountryCodefromM10_Node0_action["The country code is extracted for
cargo record integration"]:::main N_ExtractCountryCodefromM10_Node0 -- Yes --> N_ExtractCountryCodefromM10_Node0_action N_ExtractCountryCodefromM10_Node0_action --> E_ExtractCountryCodefromM10 S_ExtractCountryCodefromM10 --> N_ExtractCountryCodefromM10_Node0 N_ExtractCountryCodefromM10_Node0 -- No --> E_ExtractCountryCodefromM10
segment"}:::decision N_ExtractCountryCodefromM10_Node0_action["The country code is extracted for
cargo record integration"]:::main N_ExtractCountryCodefromM10_Node0 -- Yes --> N_ExtractCountryCodefromM10_Node0_action N_ExtractCountryCodefromM10_Node0_action --> E_ExtractCountryCodefromM10 S_ExtractCountryCodefromM10 --> N_ExtractCountryCodefromM10_Node0 N_ExtractCountryCodefromM10_Node0 -- No --> E_ExtractCountryCodefromM10
File: GCX016.cbl
GIVEN:
An M10 manifest segment contains country code information
WHEN:
The system processes the M10 segment
THEN:
The country code is extracted for cargo record integration
β Consolidated Acceptance Criteria
- The system processes the M10 segment → the vessel name is extracted and prepared for cargo record update
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExtractVesselNamefromM10(["Start Step"])
E_ExtractVesselNamefromM10(["End Step"])
N_ExtractVesselNamefromM10_Node0{"The system processes the M10
segment"}:::decision N_ExtractVesselNamefromM10_Node0_action["The vessel name is extracted and
prepared for cargo record update"]:::main N_ExtractVesselNamefromM10_Node0 -- Yes --> N_ExtractVesselNamefromM10_Node0_action N_ExtractVesselNamefromM10_Node0_action --> E_ExtractVesselNamefromM10 S_ExtractVesselNamefromM10 --> N_ExtractVesselNamefromM10_Node0 N_ExtractVesselNamefromM10_Node0 -- No --> E_ExtractVesselNamefromM10
segment"}:::decision N_ExtractVesselNamefromM10_Node0_action["The vessel name is extracted and
prepared for cargo record update"]:::main N_ExtractVesselNamefromM10_Node0 -- Yes --> N_ExtractVesselNamefromM10_Node0_action N_ExtractVesselNamefromM10_Node0_action --> E_ExtractVesselNamefromM10 S_ExtractVesselNamefromM10 --> N_ExtractVesselNamefromM10_Node0 N_ExtractVesselNamefromM10_Node0 -- No --> E_ExtractVesselNamefromM10
File: GCX016.cbl
GIVEN:
An M10 manifest segment contains vessel name information
WHEN:
The system processes the M10 segment
THEN:
- The vessel name is extracted
- Prepared for cargo record update
β Consolidated Acceptance Criteria
- The system processes the M10 segment → the flight/voyage number is extracted for cargo identification
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExtractFlightVoyageNumberfromM10(["Start Step"])
E_ExtractFlightVoyageNumberfromM10(["End Step"])
N_ExtractFlightVoyageNumberfromM10_Node0{"The system processes the M10
segment"}:::decision N_ExtractFlightVoyageNumberfromM10_Node0_action["The flightvoyage number is
extracted for cargo identification"]:::main N_ExtractFlightVoyageNumberfromM10_Node0 -- Yes --> N_ExtractFlightVoyageNumberfromM10_Node0_action N_ExtractFlightVoyageNumberfromM10_Node0_action --> E_ExtractFlightVoyageNumberfromM10 S_ExtractFlightVoyageNumberfromM10 --> N_ExtractFlightVoyageNumberfromM10_Node0 N_ExtractFlightVoyageNumberfromM10_Node0 -- No --> E_ExtractFlightVoyageNumberfromM10
segment"}:::decision N_ExtractFlightVoyageNumberfromM10_Node0_action["The flightvoyage number is
extracted for cargo identification"]:::main N_ExtractFlightVoyageNumberfromM10_Node0 -- Yes --> N_ExtractFlightVoyageNumberfromM10_Node0_action N_ExtractFlightVoyageNumberfromM10_Node0_action --> E_ExtractFlightVoyageNumberfromM10 S_ExtractFlightVoyageNumberfromM10 --> N_ExtractFlightVoyageNumberfromM10_Node0 N_ExtractFlightVoyageNumberfromM10_Node0 -- No --> E_ExtractFlightVoyageNumberfromM10
File: GCX016.cbl
GIVEN:
An M10 manifest segment contains flight or voyage number
WHEN:
The system processes the M10 segment
THEN:
The flight/voyage number is extracted for cargo identification
β Consolidated Acceptance Criteria
- The system processes the M10 segment → the quantity is extracted and prepared for cargo record integration
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExtractQuantityfromM10(["Start Step"])
E_ExtractQuantityfromM10(["End Step"])
N_ExtractQuantityfromM10_Node0{"The system processes the M10
segment"}:::decision N_ExtractQuantityfromM10_Node0_action["The quantity is extracted and
prepared for cargo record
integration"]:::main N_ExtractQuantityfromM10_Node0 -- Yes --> N_ExtractQuantityfromM10_Node0_action N_ExtractQuantityfromM10_Node0_action --> E_ExtractQuantityfromM10 S_ExtractQuantityfromM10 --> N_ExtractQuantityfromM10_Node0 N_ExtractQuantityfromM10_Node0 -- No --> E_ExtractQuantityfromM10
segment"}:::decision N_ExtractQuantityfromM10_Node0_action["The quantity is extracted and
prepared for cargo record
integration"]:::main N_ExtractQuantityfromM10_Node0 -- Yes --> N_ExtractQuantityfromM10_Node0_action N_ExtractQuantityfromM10_Node0_action --> E_ExtractQuantityfromM10 S_ExtractQuantityfromM10 --> N_ExtractQuantityfromM10_Node0 N_ExtractQuantityfromM10_Node0 -- No --> E_ExtractQuantityfromM10
File: GCX016.cbl
GIVEN:
An M10 manifest segment contains quantity information
WHEN:
The system processes the M10 segment
THEN:
- The quantity is extracted
- Prepared for cargo record integration
β Consolidated Acceptance Criteria
- The system processes the M10 segment → the manifest type code is extracted for cargo classification
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExtractManifestTypeCodefromM10(["Start Step"])
E_ExtractManifestTypeCodefromM10(["End Step"])
N_ExtractManifestTypeCodefromM10_Node0{"The system processes the M10
segment"}:::decision N_ExtractManifestTypeCodefromM10_Node0_action["The manifest type code is extracted
for cargo classification"]:::main N_ExtractManifestTypeCodefromM10_Node0 -- Yes --> N_ExtractManifestTypeCodefromM10_Node0_action N_ExtractManifestTypeCodefromM10_Node0_action --> E_ExtractManifestTypeCodefromM10 S_ExtractManifestTypeCodefromM10 --> N_ExtractManifestTypeCodefromM10_Node0 N_ExtractManifestTypeCodefromM10_Node0 -- No --> E_ExtractManifestTypeCodefromM10
segment"}:::decision N_ExtractManifestTypeCodefromM10_Node0_action["The manifest type code is extracted
for cargo classification"]:::main N_ExtractManifestTypeCodefromM10_Node0 -- Yes --> N_ExtractManifestTypeCodefromM10_Node0_action N_ExtractManifestTypeCodefromM10_Node0_action --> E_ExtractManifestTypeCodefromM10 S_ExtractManifestTypeCodefromM10 --> N_ExtractManifestTypeCodefromM10_Node0 N_ExtractManifestTypeCodefromM10_Node0 -- No --> E_ExtractManifestTypeCodefromM10
File: GCX016.cbl
GIVEN:
An M10 manifest segment contains manifest type code
WHEN:
The system processes the M10 segment
THEN:
The manifest type code is extracted for cargo classification
β Consolidated Acceptance Criteria
- The system processes the M10 segment → the condition response code is extracted for cargo status determination
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExtractConditionResponseCodefromM10(["Start Step"])
E_ExtractConditionResponseCodefromM10(["End Step"])
N_ExtractConditionResponseCodefromM10_Node0{"The system processes the M10
segment"}:::decision N_ExtractConditionResponseCodefromM10_Node0_action["The condition response code is
extracted for cargo status
determination"]:::main N_ExtractConditionResponseCodefromM10_Node0 -- Yes --> N_ExtractConditionResponseCodefromM10_Node0_action N_ExtractConditionResponseCodefromM10_Node0_action --> E_ExtractConditionResponseCodefromM10 S_ExtractConditionResponseCodefromM10 --> N_ExtractConditionResponseCodefromM10_Node0 N_ExtractConditionResponseCodefromM10_Node0 -- No --> E_ExtractConditionResponseCodefromM10
segment"}:::decision N_ExtractConditionResponseCodefromM10_Node0_action["The condition response code is
extracted for cargo status
determination"]:::main N_ExtractConditionResponseCodefromM10_Node0 -- Yes --> N_ExtractConditionResponseCodefromM10_Node0_action N_ExtractConditionResponseCodefromM10_Node0_action --> E_ExtractConditionResponseCodefromM10 S_ExtractConditionResponseCodefromM10 --> N_ExtractConditionResponseCodefromM10_Node0 N_ExtractConditionResponseCodefromM10_Node0 -- No --> E_ExtractConditionResponseCodefromM10
File: GCX016.cbl
GIVEN:
An M10 manifest segment contains condition response code
WHEN:
The system processes the M10 segment
THEN:
The condition response code is extracted for cargo status determination
β Consolidated Acceptance Criteria
- The system builds the manifest information block → a complete manifest information structure is created with all extracted data elements
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_BuildManifestInformationBlock(["Start Step"])
E_BuildManifestInformationBlock(["End Step"])
N_BuildManifestInformationBlock_Node0{"The system builds the manifest
information block"}:::decision N_BuildManifestInformationBlock_Node0_action["A complete manifest information
structure is created with all
extracted data elements"]:::main N_BuildManifestInformationBlock_Node0 -- Yes --> N_BuildManifestInformationBlock_Node0_action N_BuildManifestInformationBlock_Node0_action --> E_BuildManifestInformationBlock S_BuildManifestInformationBlock --> N_BuildManifestInformationBlock_Node0 N_BuildManifestInformationBlock_Node0 -- No --> E_BuildManifestInformationBlock
information block"}:::decision N_BuildManifestInformationBlock_Node0_action["A complete manifest information
structure is created with all
extracted data elements"]:::main N_BuildManifestInformationBlock_Node0 -- Yes --> N_BuildManifestInformationBlock_Node0_action N_BuildManifestInformationBlock_Node0_action --> E_BuildManifestInformationBlock S_BuildManifestInformationBlock --> N_BuildManifestInformationBlock_Node0 N_BuildManifestInformationBlock_Node0 -- No --> E_BuildManifestInformationBlock
File: GCX016.cbl
GIVEN:
All required M10 manifest data elements have been validated
WHEN:
The system builds the manifest information block
THEN:
A complete manifest information structure is created with all extracted data elements
β Consolidated Acceptance Criteria
- The system searches for the target cargo record → the system identifies the cargo record that corresponds to the manifest data
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LocateTargetCargoRecord(["Start Step"])
E_LocateTargetCargoRecord(["End Step"])
N_LocateTargetCargoRecord_Node0{"The system searches for the target
cargo record"}:::decision N_LocateTargetCargoRecord_Node0_action["The system identifies the cargo
record that corresponds to the
manifest data"]:::main N_LocateTargetCargoRecord_Node0 -- Yes --> N_LocateTargetCargoRecord_Node0_action N_LocateTargetCargoRecord_Node0_action --> E_LocateTargetCargoRecord S_LocateTargetCargoRecord --> N_LocateTargetCargoRecord_Node0 N_LocateTargetCargoRecord_Node0 -- No --> E_LocateTargetCargoRecord
cargo record"}:::decision N_LocateTargetCargoRecord_Node0_action["The system identifies the cargo
record that corresponds to the
manifest data"]:::main N_LocateTargetCargoRecord_Node0 -- Yes --> N_LocateTargetCargoRecord_Node0_action N_LocateTargetCargoRecord_Node0_action --> E_LocateTargetCargoRecord S_LocateTargetCargoRecord --> N_LocateTargetCargoRecord_Node0 N_LocateTargetCargoRecord_Node0 -- No --> E_LocateTargetCargoRecord
File: GCX016.cbl
GIVEN:
A manifest information block has been built
WHEN:
The system searches for the target cargo record
THEN:
The system identifies the cargo record that corresponds to the manifest data
β Consolidated Acceptance Criteria
- The system updates the cargo record with manifest information → the SCAC code is set in the cargo record
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetSCACCodeinCargo(["Start Step"])
E_SetSCACCodeinCargo(["End Step"])
N_SetSCACCodeinCargo_Node0{"The system updates the cargo record
with manifest information"}:::decision N_SetSCACCodeinCargo_Node0_action["The SCAC code is set in the cargo
record"]:::main N_SetSCACCodeinCargo_Node0 -- Yes --> N_SetSCACCodeinCargo_Node0_action N_SetSCACCodeinCargo_Node0_action --> E_SetSCACCodeinCargo S_SetSCACCodeinCargo --> N_SetSCACCodeinCargo_Node0 N_SetSCACCodeinCargo_Node0 -- No --> E_SetSCACCodeinCargo
with manifest information"}:::decision N_SetSCACCodeinCargo_Node0_action["The SCAC code is set in the cargo
record"]:::main N_SetSCACCodeinCargo_Node0 -- Yes --> N_SetSCACCodeinCargo_Node0_action N_SetSCACCodeinCargo_Node0_action --> E_SetSCACCodeinCargo S_SetSCACCodeinCargo --> N_SetSCACCodeinCargo_Node0 N_SetSCACCodeinCargo_Node0 -- No --> E_SetSCACCodeinCargo
File: GCX016.cbl
GIVEN:
A cargo record exists and SCAC code has been extracted from M10
WHEN:
The system updates the cargo record with manifest information
THEN:
The SCAC code is set in the cargo record
β Consolidated Acceptance Criteria
- The system updates the cargo record with manifest information → the transport type is set in the cargo record
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetTransportTypeinCargo(["Start Step"])
E_SetTransportTypeinCargo(["End Step"])
N_SetTransportTypeinCargo_Node0{"The system updates the cargo record
with manifest information"}:::decision N_SetTransportTypeinCargo_Node0_action["The transport type is set in the
cargo record"]:::main N_SetTransportTypeinCargo_Node0 -- Yes --> N_SetTransportTypeinCargo_Node0_action N_SetTransportTypeinCargo_Node0_action --> E_SetTransportTypeinCargo S_SetTransportTypeinCargo --> N_SetTransportTypeinCargo_Node0 N_SetTransportTypeinCargo_Node0 -- No --> E_SetTransportTypeinCargo
with manifest information"}:::decision N_SetTransportTypeinCargo_Node0_action["The transport type is set in the
cargo record"]:::main N_SetTransportTypeinCargo_Node0 -- Yes --> N_SetTransportTypeinCargo_Node0_action N_SetTransportTypeinCargo_Node0_action --> E_SetTransportTypeinCargo S_SetTransportTypeinCargo --> N_SetTransportTypeinCargo_Node0 N_SetTransportTypeinCargo_Node0 -- No --> E_SetTransportTypeinCargo
File: GCX016.cbl
GIVEN:
A cargo record exists and transport type has been extracted from M10
WHEN:
The system updates the cargo record with manifest information
THEN:
The transport type is set in the cargo record
β Consolidated Acceptance Criteria
- The system updates the cargo record with manifest information → the country code is set in the cargo record
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetCountryCodeinCargo(["Start Step"])
E_SetCountryCodeinCargo(["End Step"])
N_SetCountryCodeinCargo_Node0{"The system updates the cargo record
with manifest information"}:::decision N_SetCountryCodeinCargo_Node0_action["The country code is set in the
cargo record"]:::main N_SetCountryCodeinCargo_Node0 -- Yes --> N_SetCountryCodeinCargo_Node0_action N_SetCountryCodeinCargo_Node0_action --> E_SetCountryCodeinCargo S_SetCountryCodeinCargo --> N_SetCountryCodeinCargo_Node0 N_SetCountryCodeinCargo_Node0 -- No --> E_SetCountryCodeinCargo
with manifest information"}:::decision N_SetCountryCodeinCargo_Node0_action["The country code is set in the
cargo record"]:::main N_SetCountryCodeinCargo_Node0 -- Yes --> N_SetCountryCodeinCargo_Node0_action N_SetCountryCodeinCargo_Node0_action --> E_SetCountryCodeinCargo S_SetCountryCodeinCargo --> N_SetCountryCodeinCargo_Node0 N_SetCountryCodeinCargo_Node0 -- No --> E_SetCountryCodeinCargo
File: GCX016.cbl
GIVEN:
A cargo record exists and country code has been extracted from M10
WHEN:
The system updates the cargo record with manifest information
THEN:
The country code is set in the cargo record
β Consolidated Acceptance Criteria
- The system updates the cargo record with manifest information → the vessel name is set in the cargo record
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetVesselNameinCargo(["Start Step"])
E_SetVesselNameinCargo(["End Step"])
N_SetVesselNameinCargo_Node0{"The system updates the cargo record
with manifest information"}:::decision N_SetVesselNameinCargo_Node0_action["The vessel name is set in the cargo
record"]:::main N_SetVesselNameinCargo_Node0 -- Yes --> N_SetVesselNameinCargo_Node0_action N_SetVesselNameinCargo_Node0_action --> E_SetVesselNameinCargo S_SetVesselNameinCargo --> N_SetVesselNameinCargo_Node0 N_SetVesselNameinCargo_Node0 -- No --> E_SetVesselNameinCargo
with manifest information"}:::decision N_SetVesselNameinCargo_Node0_action["The vessel name is set in the cargo
record"]:::main N_SetVesselNameinCargo_Node0 -- Yes --> N_SetVesselNameinCargo_Node0_action N_SetVesselNameinCargo_Node0_action --> E_SetVesselNameinCargo S_SetVesselNameinCargo --> N_SetVesselNameinCargo_Node0 N_SetVesselNameinCargo_Node0 -- No --> E_SetVesselNameinCargo
File: GCX016.cbl
GIVEN:
A cargo record exists and vessel name has been extracted from M10
WHEN:
The system updates the cargo record with manifest information
THEN:
The vessel name is set in the cargo record
β Consolidated Acceptance Criteria
- The system updates the cargo record with manifest information → the flight/voyage number is set in the cargo record
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetFlightVoyageNumberinCargo(["Start Step"])
E_SetFlightVoyageNumberinCargo(["End Step"])
N_SetFlightVoyageNumberinCargo_Node0{"The system updates the cargo record
with manifest information"}:::decision N_SetFlightVoyageNumberinCargo_Node0_action["The flightvoyage number is set in
the cargo record"]:::main N_SetFlightVoyageNumberinCargo_Node0 -- Yes --> N_SetFlightVoyageNumberinCargo_Node0_action N_SetFlightVoyageNumberinCargo_Node0_action --> E_SetFlightVoyageNumberinCargo S_SetFlightVoyageNumberinCargo --> N_SetFlightVoyageNumberinCargo_Node0 N_SetFlightVoyageNumberinCargo_Node0 -- No --> E_SetFlightVoyageNumberinCargo
with manifest information"}:::decision N_SetFlightVoyageNumberinCargo_Node0_action["The flightvoyage number is set in
the cargo record"]:::main N_SetFlightVoyageNumberinCargo_Node0 -- Yes --> N_SetFlightVoyageNumberinCargo_Node0_action N_SetFlightVoyageNumberinCargo_Node0_action --> E_SetFlightVoyageNumberinCargo S_SetFlightVoyageNumberinCargo --> N_SetFlightVoyageNumberinCargo_Node0 N_SetFlightVoyageNumberinCargo_Node0 -- No --> E_SetFlightVoyageNumberinCargo
File: GCX016.cbl
GIVEN:
A cargo record exists and flight/voyage number has been extracted from M10
WHEN:
The system updates the cargo record with manifest information
THEN:
The flight/voyage number is set in the cargo record
β Consolidated Acceptance Criteria
- The system updates the cargo record with manifest information → the quantity is set in the cargo record
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetQuantityinCargo(["Start Step"])
E_SetQuantityinCargo(["End Step"])
N_SetQuantityinCargo_Node0{"The system updates the cargo record
with manifest information"}:::decision N_SetQuantityinCargo_Node0_action["The quantity is set in the cargo
record"]:::main N_SetQuantityinCargo_Node0 -- Yes --> N_SetQuantityinCargo_Node0_action N_SetQuantityinCargo_Node0_action --> E_SetQuantityinCargo S_SetQuantityinCargo --> N_SetQuantityinCargo_Node0 N_SetQuantityinCargo_Node0 -- No --> E_SetQuantityinCargo
with manifest information"}:::decision N_SetQuantityinCargo_Node0_action["The quantity is set in the cargo
record"]:::main N_SetQuantityinCargo_Node0 -- Yes --> N_SetQuantityinCargo_Node0_action N_SetQuantityinCargo_Node0_action --> E_SetQuantityinCargo S_SetQuantityinCargo --> N_SetQuantityinCargo_Node0 N_SetQuantityinCargo_Node0 -- No --> E_SetQuantityinCargo
File: GCX016.cbl
GIVEN:
A cargo record exists and quantity has been extracted from M10
WHEN:
The system updates the cargo record with manifest information
THEN:
The quantity is set in the cargo record
β Consolidated Acceptance Criteria
- The system updates the cargo record with manifest information → the manifest type code is set in the cargo record
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetManifestTypeCodeinCargo(["Start Step"])
E_SetManifestTypeCodeinCargo(["End Step"])
N_SetManifestTypeCodeinCargo_Node0{"The system updates the cargo record
with manifest information"}:::decision N_SetManifestTypeCodeinCargo_Node0_action["The manifest type code is set in
the cargo record"]:::main N_SetManifestTypeCodeinCargo_Node0 -- Yes --> N_SetManifestTypeCodeinCargo_Node0_action N_SetManifestTypeCodeinCargo_Node0_action --> E_SetManifestTypeCodeinCargo S_SetManifestTypeCodeinCargo --> N_SetManifestTypeCodeinCargo_Node0 N_SetManifestTypeCodeinCargo_Node0 -- No --> E_SetManifestTypeCodeinCargo
with manifest information"}:::decision N_SetManifestTypeCodeinCargo_Node0_action["The manifest type code is set in
the cargo record"]:::main N_SetManifestTypeCodeinCargo_Node0 -- Yes --> N_SetManifestTypeCodeinCargo_Node0_action N_SetManifestTypeCodeinCargo_Node0_action --> E_SetManifestTypeCodeinCargo S_SetManifestTypeCodeinCargo --> N_SetManifestTypeCodeinCargo_Node0 N_SetManifestTypeCodeinCargo_Node0 -- No --> E_SetManifestTypeCodeinCargo
File: GCX016.cbl
GIVEN:
A cargo record exists and manifest type code has been extracted from M10
WHEN:
The system updates the cargo record with manifest information
THEN:
The manifest type code is set in the cargo record
β Consolidated Acceptance Criteria
- The system updates the cargo record with manifest information → the condition response code is set in the cargo record
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetConditionResponseCodeinCargo(["Start Step"])
E_SetConditionResponseCodeinCargo(["End Step"])
N_SetConditionResponseCodeinCargo_Node0{"The system updates the cargo record
with manifest information"}:::decision N_SetConditionResponseCodeinCargo_Node0_action["The condition response code is set
in the cargo record"]:::main N_SetConditionResponseCodeinCargo_Node0 -- Yes --> N_SetConditionResponseCodeinCargo_Node0_action N_SetConditionResponseCodeinCargo_Node0_action --> E_SetConditionResponseCodeinCargo S_SetConditionResponseCodeinCargo --> N_SetConditionResponseCodeinCargo_Node0 N_SetConditionResponseCodeinCargo_Node0 -- No --> E_SetConditionResponseCodeinCargo
with manifest information"}:::decision N_SetConditionResponseCodeinCargo_Node0_action["The condition response code is set
in the cargo record"]:::main N_SetConditionResponseCodeinCargo_Node0 -- Yes --> N_SetConditionResponseCodeinCargo_Node0_action N_SetConditionResponseCodeinCargo_Node0_action --> E_SetConditionResponseCodeinCargo S_SetConditionResponseCodeinCargo --> N_SetConditionResponseCodeinCargo_Node0 N_SetConditionResponseCodeinCargo_Node0 -- No --> E_SetConditionResponseCodeinCargo
File: GCX016.cbl
GIVEN:
A cargo record exists and condition response code has been extracted from M10
WHEN:
The system updates the cargo record with manifest information
THEN:
The condition response code is set in the cargo record
β Consolidated Acceptance Criteria
- The system validates the extracted data elements → an error is logged indicating which required fields are missing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogMissingFieldError(["Start Step"])
E_LogMissingFieldError(["End Step"])
N_LogMissingFieldError_Node0{"The system validates the extracted
data elements"}:::decision N_LogMissingFieldError_Node0_action["An error is logged indicating which
required fields are missing"]:::main N_LogMissingFieldError_Node0 -- Yes --> N_LogMissingFieldError_Node0_action N_LogMissingFieldError_Node0_action --> E_LogMissingFieldError S_LogMissingFieldError --> N_LogMissingFieldError_Node0 N_LogMissingFieldError_Node0 -- No --> E_LogMissingFieldError
data elements"}:::decision N_LogMissingFieldError_Node0_action["An error is logged indicating which
required fields are missing"]:::main N_LogMissingFieldError_Node0 -- Yes --> N_LogMissingFieldError_Node0_action N_LogMissingFieldError_Node0_action --> E_LogMissingFieldError S_LogMissingFieldError --> N_LogMissingFieldError_Node0 N_LogMissingFieldError_Node0 -- No --> E_LogMissingFieldError
File: GCX016.cbl
GIVEN:
Required manifest data fields are missing from the M10 segment
WHEN:
The system validates the extracted data elements
THEN:
An error is logged indicating which required fields are missing
β Consolidated Acceptance Criteria
- The system determines that integration cannot proceed → the manifest integration process is skipped and processing continues with the next segment
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SkipManifestIntegration(["Start Step"])
E_SkipManifestIntegration(["End Step"])
N_SkipManifestIntegration_Node0{"The system determines that
integration cannot proceed"}:::decision N_SkipManifestIntegration_Node0_action["The manifest integration process is
skipped and processing continues
with the next segment"]:::main N_SkipManifestIntegration_Node0 -- Yes --> N_SkipManifestIntegration_Node0_action N_SkipManifestIntegration_Node0_action --> E_SkipManifestIntegration S_SkipManifestIntegration --> N_SkipManifestIntegration_Node0 N_SkipManifestIntegration_Node0 -- No --> E_SkipManifestIntegration
integration cannot proceed"}:::decision N_SkipManifestIntegration_Node0_action["The manifest integration process is
skipped and processing continues
with the next segment"]:::main N_SkipManifestIntegration_Node0 -- Yes --> N_SkipManifestIntegration_Node0_action N_SkipManifestIntegration_Node0_action --> E_SkipManifestIntegration S_SkipManifestIntegration --> N_SkipManifestIntegration_Node0 N_SkipManifestIntegration_Node0 -- No --> E_SkipManifestIntegration
File: GCX016.cbl
GIVEN:
Manifest data validation has failed due to missing required fields
WHEN:
The system determines that integration cannot proceed
THEN:
- The manifest integration process is skipped
- Processing continues with the next segment
β Consolidated Acceptance Criteria
- The system searches for station information across SD, DS, and KS tables in hierarchical order → the system returns the first matching station record found or uses default location name if no records are found
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_StationInformationLookupRequest(["Start Step"])
E_StationInformationLookupRequest(["End Step"])
N_StationInformationLookupRequest_Node0{"The system searches for station
information across SD, DS, and KS
tables in hierarchical order"}:::decision N_StationInformationLookupRequest_Node0_action["The system returns the first
matching station record found or
uses default location name if no
records are found"]:::main N_StationInformationLookupRequest_Node0 -- Yes --> N_StationInformationLookupRequest_Node0_action N_StationInformationLookupRequest_Node0_action --> E_StationInformationLookupRequest S_StationInformationLookupRequest --> N_StationInformationLookupRequest_Node0 N_StationInformationLookupRequest_Node0 -- No --> E_StationInformationLookupRequest
information across SD, DS, and KS
tables in hierarchical order"}:::decision N_StationInformationLookupRequest_Node0_action["The system returns the first
matching station record found or
uses default location name if no
records are found"]:::main N_StationInformationLookupRequest_Node0 -- Yes --> N_StationInformationLookupRequest_Node0_action N_StationInformationLookupRequest_Node0_action --> E_StationInformationLookupRequest S_StationInformationLookupRequest --> N_StationInformationLookupRequest_Node0 N_StationInformationLookupRequest_Node0 -- No --> E_StationInformationLookupRequest
File: GCX016.cbl
GIVEN:
A location ID is provided for station information lookup
WHEN:
The system searches for station information across SD, DS, and KS tables in hierarchical order
THEN:
The system returns the first matching station record found or uses default location name if no records are found
β Consolidated Acceptance Criteria
- The system performs station information lookup → the system first searches the SD table in GCSTBRT database for matching station records
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LookupSDTable(["Start Step"])
E_LookupSDTable(["End Step"])
N_LookupSDTable_Node0{"The system performs station
information lookup"}:::decision N_LookupSDTable_Node0_action["The system first searches the SD
table in GCSTBRT database for
matching station records"]:::main N_LookupSDTable_Node0 -- Yes --> N_LookupSDTable_Node0_action N_LookupSDTable_Node0_action --> E_LookupSDTable S_LookupSDTable --> N_LookupSDTable_Node0 N_LookupSDTable_Node0 -- No --> E_LookupSDTable
information lookup"}:::decision N_LookupSDTable_Node0_action["The system first searches the SD
table in GCSTBRT database for
matching station records"]:::main N_LookupSDTable_Node0 -- Yes --> N_LookupSDTable_Node0_action N_LookupSDTable_Node0_action --> E_LookupSDTable S_LookupSDTable --> N_LookupSDTable_Node0 N_LookupSDTable_Node0 -- No --> E_LookupSDTable
File: GCX016.cbl
GIVEN:
A location ID is available for lookup
WHEN:
The system performs station information lookup
THEN:
The system first searches the SD table in GCSTBRT database for matching station records
β Consolidated Acceptance Criteria
- A matching SD record is found → the system extracts station name and description from the SD record and completes the lookup process
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SDRecordFound(["Start Step"])
E_SDRecordFound(["End Step"])
N_SDRecordFound_Node0{"A matching SD record is found"}:::decision
N_SDRecordFound_Node0_action["The system extracts station name
and description from the SD record
and completes the lookup process"]:::main N_SDRecordFound_Node0 -- Yes --> N_SDRecordFound_Node0_action N_SDRecordFound_Node0_action --> E_SDRecordFound S_SDRecordFound --> N_SDRecordFound_Node0 N_SDRecordFound_Node0 -- No --> E_SDRecordFound
and description from the SD record
and completes the lookup process"]:::main N_SDRecordFound_Node0 -- Yes --> N_SDRecordFound_Node0_action N_SDRecordFound_Node0_action --> E_SDRecordFound S_SDRecordFound --> N_SDRecordFound_Node0 N_SDRecordFound_Node0 -- No --> E_SDRecordFound
File: GCX016.cbl
GIVEN:
The system has searched the SD table for a location ID
WHEN:
A matching SD record is found
THEN:
- The system extracts station name
- Description from the sd record
- Completes the lookup process
β Consolidated Acceptance Criteria
- The system continues processing the station record → the system extracts the station description field from the record for detailed location information
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExtractStationDescription(["Start Step"])
E_ExtractStationDescription(["End Step"])
N_ExtractStationDescription_Node0{"The system continues processing the
station record"}:::decision N_ExtractStationDescription_Node0_action["The system extracts the station
description field from the record
for detailed location information"]:::main N_ExtractStationDescription_Node0 -- Yes --> N_ExtractStationDescription_Node0_action N_ExtractStationDescription_Node0_action --> E_ExtractStationDescription S_ExtractStationDescription --> N_ExtractStationDescription_Node0 N_ExtractStationDescription_Node0 -- No --> E_ExtractStationDescription
station record"}:::decision N_ExtractStationDescription_Node0_action["The system extracts the station
description field from the record
for detailed location information"]:::main N_ExtractStationDescription_Node0 -- Yes --> N_ExtractStationDescription_Node0_action N_ExtractStationDescription_Node0_action --> E_ExtractStationDescription S_ExtractStationDescription --> N_ExtractStationDescription_Node0 N_ExtractStationDescription_Node0 -- No --> E_ExtractStationDescription
File: GCX016.cbl
GIVEN:
Station name has been extracted from a found station record
WHEN:
The system continues processing the station record
THEN:
The system extracts the station description field from the record for detailed location information
β Consolidated Acceptance Criteria
- The system completes station information processing → the system sets the location description field with the extracted station information for use in cargo processing
- The system processes the retrieved location information → the system sets the location description field with the retrieved location name
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetLocationDescription(["Start Step"])
E_SetLocationDescription(["End Step"])
N_SetLocationDescription_Node0{"The system completes station
information processing"}:::decision N_SetLocationDescription_Node0_action["The system sets the location
description field with the extracted
station information for use in cargo
processing"]:::main N_SetLocationDescription_Node0 -- Yes --> N_SetLocationDescription_Node0_action N_SetLocationDescription_Node0_action --> E_SetLocationDescription S_SetLocationDescription --> N_SetLocationDescription_Node0 N_SetLocationDescription_Node1{"The system processes the retrieved
location information"}:::decision N_SetLocationDescription_Node1_action["The system sets the location
description field with the retrieved
location name"]:::main N_SetLocationDescription_Node1 -- Yes --> N_SetLocationDescription_Node1_action N_SetLocationDescription_Node1_action --> E_SetLocationDescription N_SetLocationDescription_Node0 -- No --> N_SetLocationDescription_Node1 N_SetLocationDescription_Node1 -- No --> E_SetLocationDescription
information processing"}:::decision N_SetLocationDescription_Node0_action["The system sets the location
description field with the extracted
station information for use in cargo
processing"]:::main N_SetLocationDescription_Node0 -- Yes --> N_SetLocationDescription_Node0_action N_SetLocationDescription_Node0_action --> E_SetLocationDescription S_SetLocationDescription --> N_SetLocationDescription_Node0 N_SetLocationDescription_Node1{"The system processes the retrieved
location information"}:::decision N_SetLocationDescription_Node1_action["The system sets the location
description field with the retrieved
location name"]:::main N_SetLocationDescription_Node1 -- Yes --> N_SetLocationDescription_Node1_action N_SetLocationDescription_Node1_action --> E_SetLocationDescription N_SetLocationDescription_Node0 -- No --> N_SetLocationDescription_Node1 N_SetLocationDescription_Node1 -- No --> E_SetLocationDescription
File: GCX016.cbl
GIVEN:
Station name and description have been extracted from a station record
WHEN:
The system completes station information processing
THEN:
The system sets the location description field with the extracted station information for use in cargo processing
File: GCX016.cbl
GIVEN:
A location name has been successfully retrieved from DS, KS, or SD table
WHEN:
The system processes the retrieved location information
THEN:
The system sets the location description field with the retrieved location name
β Consolidated Acceptance Criteria
- The system cannot retrieve station information from database tables → the system uses a default location name to ensure cargo processing can continue
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UseDefaultLocationName(["Start Step"])
E_UseDefaultLocationName(["End Step"])
N_UseDefaultLocationName_Node0{"The system cannot retrieve station
information from database tables"}:::decision N_UseDefaultLocationName_Node0_action["The system uses a default location
name to ensure cargo processing can
continue"]:::main N_UseDefaultLocationName_Node0 -- Yes --> N_UseDefaultLocationName_Node0_action N_UseDefaultLocationName_Node0_action --> E_UseDefaultLocationName S_UseDefaultLocationName --> N_UseDefaultLocationName_Node0 N_UseDefaultLocationName_Node0 -- No --> E_UseDefaultLocationName
information from database tables"}:::decision N_UseDefaultLocationName_Node0_action["The system uses a default location
name to ensure cargo processing can
continue"]:::main N_UseDefaultLocationName_Node0 -- Yes --> N_UseDefaultLocationName_Node0_action N_UseDefaultLocationName_Node0_action --> E_UseDefaultLocationName S_UseDefaultLocationName --> N_UseDefaultLocationName_Node0 N_UseDefaultLocationName_Node0 -- No --> E_UseDefaultLocationName
File: GCX016.cbl
GIVEN:
Either no location ID is available or no matching records are found in any station table (SD, DS, KS)
WHEN:
The system cannot retrieve station information from database tables
THEN:
The system uses a default location name to ensure cargo processing can continue
β Consolidated Acceptance Criteria
- No matching station records are found in any table → the system logs the station not found condition before using default location name
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogStationNotFound(["Start Step"])
E_LogStationNotFound(["End Step"])
N_LogStationNotFound_Node0{"No matching station records are
found in any table"}:::decision N_LogStationNotFound_Node0_action["The system logs the station not
found condition before using default
location name"]:::main N_LogStationNotFound_Node0 -- Yes --> N_LogStationNotFound_Node0_action N_LogStationNotFound_Node0_action --> E_LogStationNotFound S_LogStationNotFound --> N_LogStationNotFound_Node0 N_LogStationNotFound_Node0 -- No --> E_LogStationNotFound
found in any table"}:::decision N_LogStationNotFound_Node0_action["The system logs the station not
found condition before using default
location name"]:::main N_LogStationNotFound_Node0 -- Yes --> N_LogStationNotFound_Node0_action N_LogStationNotFound_Node0_action --> E_LogStationNotFound S_LogStationNotFound --> N_LogStationNotFound_Node0 N_LogStationNotFound_Node0 -- No --> E_LogStationNotFound
File: GCX016.cbl
GIVEN:
The system has searched all station tables (SD, DS, KS) for a location ID
WHEN:
No matching station records are found in any table
THEN:
The system logs the station not found condition before using default location name
β Consolidated Acceptance Criteria
- The system accesses secondary cargo records GCSA2RT → secondary cargo record data is retrieved for further processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AccessSecondaryCargoRecordsGCSA2RT(["Start Step"])
E_AccessSecondaryCargoRecordsGCSA2RT(["End Step"])
N_AccessSecondaryCargoRecordsGCSA2RT_Node0{"The system accesses secondary cargo
records GCSA2RT"}:::decision N_AccessSecondaryCargoRecordsGCSA2RT_Node0_action["Secondary cargo record data is
retrieved for further processing"]:::main N_AccessSecondaryCargoRecordsGCSA2RT_Node0 -- Yes --> N_AccessSecondaryCargoRecordsGCSA2RT_Node0_action N_AccessSecondaryCargoRecordsGCSA2RT_Node0_action --> E_AccessSecondaryCargoRecordsGCSA2RT S_AccessSecondaryCargoRecordsGCSA2RT --> N_AccessSecondaryCargoRecordsGCSA2RT_Node0 N_AccessSecondaryCargoRecordsGCSA2RT_Node0 -- No --> E_AccessSecondaryCargoRecordsGCSA2RT
records GCSA2RT"}:::decision N_AccessSecondaryCargoRecordsGCSA2RT_Node0_action["Secondary cargo record data is
retrieved for further processing"]:::main N_AccessSecondaryCargoRecordsGCSA2RT_Node0 -- Yes --> N_AccessSecondaryCargoRecordsGCSA2RT_Node0_action N_AccessSecondaryCargoRecordsGCSA2RT_Node0_action --> E_AccessSecondaryCargoRecordsGCSA2RT S_AccessSecondaryCargoRecordsGCSA2RT --> N_AccessSecondaryCargoRecordsGCSA2RT_Node0 N_AccessSecondaryCargoRecordsGCSA2RT_Node0 -- No --> E_AccessSecondaryCargoRecordsGCSA2RT
File: GCX016.cbl
GIVEN:
A cargo record requires payer of freight information
WHEN:
The system accesses secondary cargo records GCSA2RT
THEN:
Secondary cargo record data is retrieved for further processing
β Consolidated Acceptance Criteria
- The system checks for N101 payer of freight record existence → processing continues if N101 record found, otherwise process terminates
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_N101PayerofFreightRecordFound(["Start Step"])
E_N101PayerofFreightRecordFound(["End Step"])
N_N101PayerofFreightRecordFound_Node0{"The system checks for N101 payer of
freight record existence"}:::decision N_N101PayerofFreightRecordFound_Node0_action["Processing continues if N101 record
found, otherwise process terminates"]:::main N_N101PayerofFreightRecordFound_Node0 -- Yes --> N_N101PayerofFreightRecordFound_Node0_action N_N101PayerofFreightRecordFound_Node0_action --> E_N101PayerofFreightRecordFound S_N101PayerofFreightRecordFound --> N_N101PayerofFreightRecordFound_Node0 N_N101PayerofFreightRecordFound_Node0 -- No --> E_N101PayerofFreightRecordFound
freight record existence"}:::decision N_N101PayerofFreightRecordFound_Node0_action["Processing continues if N101 record
found, otherwise process terminates"]:::main N_N101PayerofFreightRecordFound_Node0 -- Yes --> N_N101PayerofFreightRecordFound_Node0_action N_N101PayerofFreightRecordFound_Node0_action --> E_N101PayerofFreightRecordFound S_N101PayerofFreightRecordFound --> N_N101PayerofFreightRecordFound_Node0 N_N101PayerofFreightRecordFound_Node0 -- No --> E_N101PayerofFreightRecordFound
File: GCX016.cbl
GIVEN:
Secondary cargo records have been accessed
WHEN:
The system checks for N101 payer of freight record existence
THEN:
Processing continues if N101 record found, otherwise process terminates
β Consolidated Acceptance Criteria
- The system checks if entity is classified as broker type → entity is classified as broker or non-broker for appropriate processing path
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CheckifEntityisBrokerType(["Start Step"])
E_CheckifEntityisBrokerType(["End Step"])
N_CheckifEntityisBrokerType_Node0{"The system checks if entity is
classified as broker type"}:::decision N_CheckifEntityisBrokerType_Node0_action["Entity is classified as broker or
non-broker for appropriate
processing path"]:::main N_CheckifEntityisBrokerType_Node0 -- Yes --> N_CheckifEntityisBrokerType_Node0_action N_CheckifEntityisBrokerType_Node0_action --> E_CheckifEntityisBrokerType S_CheckifEntityisBrokerType --> N_CheckifEntityisBrokerType_Node0 N_CheckifEntityisBrokerType_Node0 -- No --> E_CheckifEntityisBrokerType
classified as broker type"}:::decision N_CheckifEntityisBrokerType_Node0_action["Entity is classified as broker or
non-broker for appropriate
processing path"]:::main N_CheckifEntityisBrokerType_Node0 -- Yes --> N_CheckifEntityisBrokerType_Node0_action N_CheckifEntityisBrokerType_Node0_action --> E_CheckifEntityisBrokerType S_CheckifEntityisBrokerType --> N_CheckifEntityisBrokerType_Node0 N_CheckifEntityisBrokerType_Node0 -- No --> E_CheckifEntityisBrokerType
File: GCX016.cbl
GIVEN:
Payer of freight entity information has been extracted
WHEN:
The system checks if entity is classified as broker type
THEN:
Entity is classified as broker or non-broker for appropriate processing path
β Consolidated Acceptance Criteria
- The system constructs PF= prefix lookup key → specialized broker lookup key is created for table search
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ConstructPFPrefixLookupKey(["Start Step"])
E_ConstructPFPrefixLookupKey(["End Step"])
N_ConstructPFPrefixLookupKey_Node0{"The system constructs PF prefix
lookup key"}:::decision N_ConstructPFPrefixLookupKey_Node0_action["Specialized broker lookup key is
created for table search"]:::main N_ConstructPFPrefixLookupKey_Node0 -- Yes --> N_ConstructPFPrefixLookupKey_Node0_action N_ConstructPFPrefixLookupKey_Node0_action --> E_ConstructPFPrefixLookupKey S_ConstructPFPrefixLookupKey --> N_ConstructPFPrefixLookupKey_Node0 N_ConstructPFPrefixLookupKey_Node0 -- No --> E_ConstructPFPrefixLookupKey
lookup key"}:::decision N_ConstructPFPrefixLookupKey_Node0_action["Specialized broker lookup key is
created for table search"]:::main N_ConstructPFPrefixLookupKey_Node0 -- Yes --> N_ConstructPFPrefixLookupKey_Node0_action N_ConstructPFPrefixLookupKey_Node0_action --> E_ConstructPFPrefixLookupKey S_ConstructPFPrefixLookupKey --> N_ConstructPFPrefixLookupKey_Node0 N_ConstructPFPrefixLookupKey_Node0 -- No --> E_ConstructPFPrefixLookupKey
File: GCX016.cbl
GIVEN:
Entity is classified as broker type
WHEN:
The system constructs PF= prefix lookup key
THEN:
Specialized broker lookup key is created for table search
β Consolidated Acceptance Criteria
- The system searches broker table with PF= prefix key → broker table search is executed using specialized prefix lookup
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SearchBrokerTablewithPFPrefix(["Start Step"])
E_SearchBrokerTablewithPFPrefix(["End Step"])
N_SearchBrokerTablewithPFPrefix_Node0{"The system searches broker table
with PF prefix key"}:::decision N_SearchBrokerTablewithPFPrefix_Node0_action["Broker table search is executed
using specialized prefix lookup"]:::main N_SearchBrokerTablewithPFPrefix_Node0 -- Yes --> N_SearchBrokerTablewithPFPrefix_Node0_action N_SearchBrokerTablewithPFPrefix_Node0_action --> E_SearchBrokerTablewithPFPrefix S_SearchBrokerTablewithPFPrefix --> N_SearchBrokerTablewithPFPrefix_Node0 N_SearchBrokerTablewithPFPrefix_Node0 -- No --> E_SearchBrokerTablewithPFPrefix
with PF prefix key"}:::decision N_SearchBrokerTablewithPFPrefix_Node0_action["Broker table search is executed
using specialized prefix lookup"]:::main N_SearchBrokerTablewithPFPrefix_Node0 -- Yes --> N_SearchBrokerTablewithPFPrefix_Node0_action N_SearchBrokerTablewithPFPrefix_Node0_action --> E_SearchBrokerTablewithPFPrefix S_SearchBrokerTablewithPFPrefix --> N_SearchBrokerTablewithPFPrefix_Node0 N_SearchBrokerTablewithPFPrefix_Node0 -- No --> E_SearchBrokerTablewithPFPrefix
File: GCX016.cbl
GIVEN:
PF= prefix lookup key has been constructed
WHEN:
The system searches broker table with PF= prefix key
THEN:
Broker table search is executed using specialized prefix lookup
β Consolidated Acceptance Criteria
- The system validates broker short name discovery → processing continues with found name or falls back to original entity name
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_BrokerShortNameFound(["Start Step"])
E_BrokerShortNameFound(["End Step"])
N_BrokerShortNameFound_Node0{"The system validates broker short
name discovery"}:::decision N_BrokerShortNameFound_Node0_action["Processing continues with found
name or falls back to original
entity name"]:::main N_BrokerShortNameFound_Node0 -- Yes --> N_BrokerShortNameFound_Node0_action N_BrokerShortNameFound_Node0_action --> E_BrokerShortNameFound S_BrokerShortNameFound --> N_BrokerShortNameFound_Node0 N_BrokerShortNameFound_Node0 -- No --> E_BrokerShortNameFound
name discovery"}:::decision N_BrokerShortNameFound_Node0_action["Processing continues with found
name or falls back to original
entity name"]:::main N_BrokerShortNameFound_Node0 -- Yes --> N_BrokerShortNameFound_Node0_action N_BrokerShortNameFound_Node0_action --> E_BrokerShortNameFound S_BrokerShortNameFound --> N_BrokerShortNameFound_Node0 N_BrokerShortNameFound_Node0 -- No --> E_BrokerShortNameFound
File: GCX016.cbl
GIVEN:
Broker table search with PF= prefix has been executed
WHEN:
The system validates broker short name discovery
THEN:
Processing continues with found name or falls back to original entity name
β Consolidated Acceptance Criteria
- The system uses original entity name as fallback → original entity name is set as the payer of freight name
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UseOriginalEntityName(["Start Step"])
E_UseOriginalEntityName(["End Step"])
N_UseOriginalEntityName_Node0{"The system uses original entity
name as fallback"}:::decision N_UseOriginalEntityName_Node0_action["Original entity name is set as the
payer of freight name"]:::main N_UseOriginalEntityName_Node0 -- Yes --> N_UseOriginalEntityName_Node0_action N_UseOriginalEntityName_Node0_action --> E_UseOriginalEntityName S_UseOriginalEntityName --> N_UseOriginalEntityName_Node0 N_UseOriginalEntityName_Node0 -- No --> E_UseOriginalEntityName
name as fallback"}:::decision N_UseOriginalEntityName_Node0_action["Original entity name is set as the
payer of freight name"]:::main N_UseOriginalEntityName_Node0 -- Yes --> N_UseOriginalEntityName_Node0_action N_UseOriginalEntityName_Node0_action --> E_UseOriginalEntityName S_UseOriginalEntityName --> N_UseOriginalEntityName_Node0 N_UseOriginalEntityName_Node0 -- No --> E_UseOriginalEntityName
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
Entity is not broker type OR broker short name lookup failed
WHEN:
The system uses original entity name as fallback
THEN:
Original entity name is set as the payer of freight name
β Consolidated Acceptance Criteria
- The system completes payer of freight resolution → payer of freight name resolution process is finalized
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CompletePayerofFreightResolution(["Start Step"])
E_CompletePayerofFreightResolution(["End Step"])
N_CompletePayerofFreightResolution_Node0{"The system completes payer of
freight resolution"}:::decision N_CompletePayerofFreightResolution_Node0_action["Payer of freight name resolution
process is finalized"]:::main N_CompletePayerofFreightResolution_Node0 -- Yes --> N_CompletePayerofFreightResolution_Node0_action N_CompletePayerofFreightResolution_Node0_action --> E_CompletePayerofFreightResolution S_CompletePayerofFreightResolution --> N_CompletePayerofFreightResolution_Node0 N_CompletePayerofFreightResolution_Node0 -- No --> E_CompletePayerofFreightResolution
freight resolution"}:::decision N_CompletePayerofFreightResolution_Node0_action["Payer of freight name resolution
process is finalized"]:::main N_CompletePayerofFreightResolution_Node0 -- Yes --> N_CompletePayerofFreightResolution_Node0_action N_CompletePayerofFreightResolution_Node0_action --> E_CompletePayerofFreightResolution S_CompletePayerofFreightResolution --> N_CompletePayerofFreightResolution_Node0 N_CompletePayerofFreightResolution_Node0 -- No --> E_CompletePayerofFreightResolution
File: GCX016.cbl
GIVEN:
Payer of freight name has been determined (either broker short name or original entity name)
WHEN:
The system completes payer of freight resolution
THEN:
Payer of freight name resolution process is finalized
β Consolidated Acceptance Criteria
- The system logs resolution results → resolution results are recorded for audit and tracking purposes
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogResolutionResults(["Start Step"])
E_LogResolutionResults(["End Step"])
N_LogResolutionResults_Node0{"The system logs resolution results"}:::decision
N_LogResolutionResults_Node0_action["Resolution results are recorded for
audit and tracking purposes"]:::main N_LogResolutionResults_Node0 -- Yes --> N_LogResolutionResults_Node0_action N_LogResolutionResults_Node0_action --> E_LogResolutionResults S_LogResolutionResults --> N_LogResolutionResults_Node0 N_LogResolutionResults_Node0 -- No --> E_LogResolutionResults
audit and tracking purposes"]:::main N_LogResolutionResults_Node0 -- Yes --> N_LogResolutionResults_Node0_action N_LogResolutionResults_Node0_action --> E_LogResolutionResults S_LogResolutionResults --> N_LogResolutionResults_Node0 N_LogResolutionResults_Node0 -- No --> E_LogResolutionResults
File: GCX016.cbl
GIVEN:
Payer of freight resolution process has been completed
WHEN:
The system logs resolution results
THEN:
- Resolution results are recorded for audit
- Tracking purposes
β Consolidated Acceptance Criteria
- The quantity action is ADD_QUANTITY OR SUBTRACT_QUANTITY → format and display the quantity change impact showing current release quantity, action type, and resulting new quantity
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CalculateQuantityActions(["Start Step"])
E_CalculateQuantityActions(["End Step"])
N_CalculateQuantityActions_Node0{"The quantity action is ADDQUANTITY
OR SUBTRACTQUANTITY"}:::decision N_CalculateQuantityActions_Node0_action["Format and display the quantity
change impact showing current
release quantity, action type, and
resulting new quantity"]:::main N_CalculateQuantityActions_Node0 -- Yes --> N_CalculateQuantityActions_Node0_action N_CalculateQuantityActions_Node0_action --> E_CalculateQuantityActions S_CalculateQuantityActions --> N_CalculateQuantityActions_Node0 N_CalculateQuantityActions_Node0 -- No --> E_CalculateQuantityActions
OR SUBTRACTQUANTITY"}:::decision N_CalculateQuantityActions_Node0_action["Format and display the quantity
change impact showing current
release quantity, action type, and
resulting new quantity"]:::main N_CalculateQuantityActions_Node0 -- Yes --> N_CalculateQuantityActions_Node0_action N_CalculateQuantityActions_Node0_action --> E_CalculateQuantityActions S_CalculateQuantityActions --> N_CalculateQuantityActions_Node0 N_CalculateQuantityActions_Node0 -- No --> E_CalculateQuantityActions
File: GCX016.cbl
GIVEN:
A disposition code affects cargo release quantities
WHEN:
The quantity action is ADD_QUANTITY OR SUBTRACT_QUANTITY
THEN:
- Format
- Display the quantity change impact showing current release quantity, action type, and resulting new quantity
β Consolidated Acceptance Criteria
- Quantity changes need to be communicated in the Merlin message → include current release quantity, planned quantity change, and resulting final quantity in the message format
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IncludeReleaseQuantityChanges(["Start Step"])
E_IncludeReleaseQuantityChanges(["End Step"])
N_IncludeReleaseQuantityChanges_Node0{"Quantity changes need to be
communicated in the Merlin message"}:::decision N_IncludeReleaseQuantityChanges_Node0_action["Include current release quantity,
planned quantity change, and
resulting final quantity in the
message format"]:::main N_IncludeReleaseQuantityChanges_Node0 -- Yes --> N_IncludeReleaseQuantityChanges_Node0_action N_IncludeReleaseQuantityChanges_Node0_action --> E_IncludeReleaseQuantityChanges S_IncludeReleaseQuantityChanges --> N_IncludeReleaseQuantityChanges_Node0 N_IncludeReleaseQuantityChanges_Node0 -- No --> E_IncludeReleaseQuantityChanges
communicated in the Merlin message"}:::decision N_IncludeReleaseQuantityChanges_Node0_action["Include current release quantity,
planned quantity change, and
resulting final quantity in the
message format"]:::main N_IncludeReleaseQuantityChanges_Node0 -- Yes --> N_IncludeReleaseQuantityChanges_Node0_action N_IncludeReleaseQuantityChanges_Node0_action --> E_IncludeReleaseQuantityChanges S_IncludeReleaseQuantityChanges --> N_IncludeReleaseQuantityChanges_Node0 N_IncludeReleaseQuantityChanges_Node0 -- No --> E_IncludeReleaseQuantityChanges
File: GCX016.cbl
GIVEN:
Cargo release quantities are being modified by disposition code processing
WHEN:
Quantity changes need to be communicated in the Merlin message
THEN:
Include current release quantity, planned quantity change, and resulting final quantity in the message format
β Consolidated Acceptance Criteria
- Additional K1 comment segments exist AND the total count is less than 4 → add the next available K1 comment segment to the message and continue checking for more comments until maximum of 4 is reached
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AddAdditionalK1CommentsUpto4Total(["Start Step"])
E_AddAdditionalK1CommentsUpto4Total(["End Step"])
N_AddAdditionalK1CommentsUpto4Total_Node0{"Additional K1 comment segments
exist AND the total count is less
than 4"}:::decision N_AddAdditionalK1CommentsUpto4Total_Node0_action["Add the next available K1 comment
segment to the message and continue
checking for more comments until
maximum of 4 is reached"]:::main N_AddAdditionalK1CommentsUpto4Total_Node0 -- Yes --> N_AddAdditionalK1CommentsUpto4Total_Node0_action N_AddAdditionalK1CommentsUpto4Total_Node0_action --> E_AddAdditionalK1CommentsUpto4Total S_AddAdditionalK1CommentsUpto4Total --> N_AddAdditionalK1CommentsUpto4Total_Node0 N_AddAdditionalK1CommentsUpto4Total_Node0 -- No --> E_AddAdditionalK1CommentsUpto4Total
exist AND the total count is less
than 4"}:::decision N_AddAdditionalK1CommentsUpto4Total_Node0_action["Add the next available K1 comment
segment to the message and continue
checking for more comments until
maximum of 4 is reached"]:::main N_AddAdditionalK1CommentsUpto4Total_Node0 -- Yes --> N_AddAdditionalK1CommentsUpto4Total_Node0_action N_AddAdditionalK1CommentsUpto4Total_Node0_action --> E_AddAdditionalK1CommentsUpto4Total S_AddAdditionalK1CommentsUpto4Total --> N_AddAdditionalK1CommentsUpto4Total_Node0 N_AddAdditionalK1CommentsUpto4Total_Node0 -- No --> E_AddAdditionalK1CommentsUpto4Total
File: GCX016.cbl
GIVEN:
Multiple K1 comment segments are available and the first K1 comment has been added
WHEN:
- Additional k1 comment segments exist
- The total count is less than 4
THEN:
- Add the next available k1 comment segment to the message
- Continue checking for more comments until maximum of 4 is reached
β Consolidated Acceptance Criteria
- The message formatting process is ready for finalization → organize all components into the final Merlin message structure with proper formatting, spacing, and message layout
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_FormatFinalMessageStructure(["Start Step"])
E_FormatFinalMessageStructure(["End Step"])
N_FormatFinalMessageStructure_Node0{"The message formatting process is
ready for finalization"}:::decision N_FormatFinalMessageStructure_Node0_action["Organize all components into the
final Merlin message structure with
proper formatting, spacing, and
message layout"]:::main N_FormatFinalMessageStructure_Node0 -- Yes --> N_FormatFinalMessageStructure_Node0_action N_FormatFinalMessageStructure_Node0_action --> E_FormatFinalMessageStructure S_FormatFinalMessageStructure --> N_FormatFinalMessageStructure_Node0 N_FormatFinalMessageStructure_Node0 -- No --> E_FormatFinalMessageStructure
ready for finalization"}:::decision N_FormatFinalMessageStructure_Node0_action["Organize all components into the
final Merlin message structure with
proper formatting, spacing, and
message layout"]:::main N_FormatFinalMessageStructure_Node0 -- Yes --> N_FormatFinalMessageStructure_Node0_action N_FormatFinalMessageStructure_Node0_action --> E_FormatFinalMessageStructure S_FormatFinalMessageStructure --> N_FormatFinalMessageStructure_Node0 N_FormatFinalMessageStructure_Node0 -- No --> E_FormatFinalMessageStructure
File: GCX016.cbl
GIVEN:
All message components have been collected including cargo details, disposition codes, quantities, and comments
WHEN:
The message formatting process is ready for finalization
THEN:
Organize all components into the final Merlin message structure with proper formatting, spacing, and message layout
β Consolidated Acceptance Criteria
- The system checks the message source and cargo type → the system identifies if the message is from a Canadian Pacific entity based on CPRS cargo type designation
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CheckMessageSource(["Start Step"])
E_CheckMessageSource(["End Step"])
N_CheckMessageSource_Node0{"The system checks the message
source and cargo type"}:::decision N_CheckMessageSource_Node0_action["The system identifies if the
message is from a Canadian Pacific
entity based on CPRS cargo type
designation"]:::main N_CheckMessageSource_Node0 -- Yes --> N_CheckMessageSource_Node0_action N_CheckMessageSource_Node0_action --> E_CheckMessageSource S_CheckMessageSource --> N_CheckMessageSource_Node0 N_CheckMessageSource_Node0 -- No --> E_CheckMessageSource
source and cargo type"}:::decision N_CheckMessageSource_Node0_action["The system identifies if the
message is from a Canadian Pacific
entity based on CPRS cargo type
designation"]:::main N_CheckMessageSource_Node0 -- Yes --> N_CheckMessageSource_Node0_action N_CheckMessageSource_Node0_action --> E_CheckMessageSource S_CheckMessageSource --> N_CheckMessageSource_Node0 N_CheckMessageSource_Node0 -- No --> E_CheckMessageSource
File: GCX016.cbl
GIVEN:
A message is received for processing
WHEN:
- The system checks the message source
- Cargo type
THEN:
The system identifies if the message is from a Canadian Pacific entity based on CPRS cargo type designation
β Consolidated Acceptance Criteria
- If disposition codes for bond creation indicators → the system identifies broker-created bond messages when disposition codes are '1J', '69', or '55' indicating master in-bond processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IdentifyBondMessageType(["Start Step"])
E_IdentifyBondMessageType(["End Step"])
N_IdentifyBondMessageType_Node0{"The system evaluates disposition
codes for bond creation indicators"}:::decision N_IdentifyBondMessageType_Node0_action["The system identifies
broker-created bond messages when
disposition codes are 1J , 69 , or
55 indicating master in-bond
processing"]:::main N_IdentifyBondMessageType_Node0 -- Yes --> N_IdentifyBondMessageType_Node0_action N_IdentifyBondMessageType_Node0_action --> E_IdentifyBondMessageType S_IdentifyBondMessageType --> N_IdentifyBondMessageType_Node0 N_IdentifyBondMessageType_Node0 -- No --> E_IdentifyBondMessageType
codes for bond creation indicators"}:::decision N_IdentifyBondMessageType_Node0_action["The system identifies
broker-created bond messages when
disposition codes are 1J , 69 , or
55 indicating master in-bond
processing"]:::main N_IdentifyBondMessageType_Node0 -- Yes --> N_IdentifyBondMessageType_Node0_action N_IdentifyBondMessageType_Node0_action --> E_IdentifyBondMessageType S_IdentifyBondMessageType --> N_IdentifyBondMessageType_Node0 N_IdentifyBondMessageType_Node0 -- No --> E_IdentifyBondMessageType
File: GCX016.cbl
GIVEN:
A message from Canadian Pacific entity is being processed
WHEN:
The system evaluates disposition codes for bond creation indicators
THEN:
The system identifies broker-created bond messages when disposition codes are '1J', '69', or '55' indicating master in-bond processing
β Consolidated Acceptance Criteria
- The system processes entry type codes '61', '62', '63', '69', or '00' → the system translates codes to immediate transport, transport export, immediate export, US-Canada-US movement, or default border processing respectively
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IncludeBondControlNumbers(["Start Step"])
E_IncludeBondControlNumbers(["End Step"])
N_IncludeBondControlNumbers_Node0{"The system processes entry type
codes 61 , 62 , 63 , 69 , or 00"}:::decision N_IncludeBondControlNumbers_Node0_action["The system translates codes to
immediate transport, transport
export, immediate export,
US-Canada-US movement, or default
border processing respectively"]:::main N_IncludeBondControlNumbers_Node0 -- Yes --> N_IncludeBondControlNumbers_Node0_action N_IncludeBondControlNumbers_Node0_action --> E_IncludeBondControlNumbers S_IncludeBondControlNumbers --> N_IncludeBondControlNumbers_Node0 N_IncludeBondControlNumbers_Node0 -- No --> E_IncludeBondControlNumbers
codes 61 , 62 , 63 , 69 , or 00"}:::decision N_IncludeBondControlNumbers_Node0_action["The system translates codes to
immediate transport, transport
export, immediate export,
US-Canada-US movement, or default
border processing respectively"]:::main N_IncludeBondControlNumbers_Node0 -- Yes --> N_IncludeBondControlNumbers_Node0_action N_IncludeBondControlNumbers_Node0_action --> E_IncludeBondControlNumbers S_IncludeBondControlNumbers --> N_IncludeBondControlNumbers_Node0 N_IncludeBondControlNumbers_Node0 -- No --> E_IncludeBondControlNumbers
File: GCX016.cbl
GIVEN:
A broker bond message contains entry type codes
WHEN:
The system processes entry type codes '61', '62', '63', '69', or '00'
THEN:
The system translates codes to immediate transport, transport export, immediate export, US-Canada-US movement, or default border processing respectively
β Consolidated Acceptance Criteria
- The system processes broker details for bond entries → the system extracts broker information, validates broker codes, and associates broker details with the bond entry for notification purposes
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AddBrokerEntryInformation(["Start Step"])
E_AddBrokerEntryInformation(["End Step"])
N_AddBrokerEntryInformation_Node0{"The system processes broker details
for bond entries"}:::decision N_AddBrokerEntryInformation_Node0_action["The system extracts broker
information, validates broker codes,
and associates broker details with
the bond entry for notification
purposes"]:::main N_AddBrokerEntryInformation_Node0 -- Yes --> N_AddBrokerEntryInformation_Node0_action N_AddBrokerEntryInformation_Node0_action --> E_AddBrokerEntryInformation S_AddBrokerEntryInformation --> N_AddBrokerEntryInformation_Node0 N_AddBrokerEntryInformation_Node0 -- No --> E_AddBrokerEntryInformation
for bond entries"}:::decision N_AddBrokerEntryInformation_Node0_action["The system extracts broker
information, validates broker codes,
and associates broker details with
the bond entry for notification
purposes"]:::main N_AddBrokerEntryInformation_Node0 -- Yes --> N_AddBrokerEntryInformation_Node0_action N_AddBrokerEntryInformation_Node0_action --> E_AddBrokerEntryInformation S_AddBrokerEntryInformation --> N_AddBrokerEntryInformation_Node0 N_AddBrokerEntryInformation_Node0 -- No --> E_AddBrokerEntryInformation
File: GCX016.cbl
GIVEN:
A bond message contains K1 segment with broker information
WHEN:
The system processes broker details for bond entries
THEN:
The system extracts broker information, validates broker codes, and associates broker details with the bond entry for notification purposes
β Consolidated Acceptance Criteria
- The system determines message routing based on message type and broker configuration → the system routes ERROR messages to both 'IN' and 'USERR' destinations, and routes other bond messages to station-specific Merlin IDs
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetSpecialMessageRouting(["Start Step"])
E_SetSpecialMessageRouting(["End Step"])
N_SetSpecialMessageRouting_Node0{"The system determines message
routing based on message type and
broker configuration"}:::decision N_SetSpecialMessageRouting_Node0_action["The system routes ERROR messages to
both IN and USERR destinations, and
routes other bond messages to
station-specific Merlin IDs"]:::main N_SetSpecialMessageRouting_Node0 -- Yes --> N_SetSpecialMessageRouting_Node0_action N_SetSpecialMessageRouting_Node0_action --> E_SetSpecialMessageRouting S_SetSpecialMessageRouting --> N_SetSpecialMessageRouting_Node0 N_SetSpecialMessageRouting_Node0 -- No --> E_SetSpecialMessageRouting
routing based on message type and
broker configuration"}:::decision N_SetSpecialMessageRouting_Node0_action["The system routes ERROR messages to
both IN and USERR destinations, and
routes other bond messages to
station-specific Merlin IDs"]:::main N_SetSpecialMessageRouting_Node0 -- Yes --> N_SetSpecialMessageRouting_Node0_action N_SetSpecialMessageRouting_Node0_action --> E_SetSpecialMessageRouting S_SetSpecialMessageRouting --> N_SetSpecialMessageRouting_Node0 N_SetSpecialMessageRouting_Node0 -- No --> E_SetSpecialMessageRouting
File: GCX016.cbl
GIVEN:
A formatted Canadian Pacific bond message is ready for routing
WHEN:
- The system determines message routing based on message type
- Broker configuration
THEN:
The system routes ERROR messages to both 'IN' and 'USERR' destinations, and routes other bond messages to station-specific Merlin IDs
β Consolidated Acceptance Criteria
- The system processes entry numbers with 'V' prefix or other formats → the system places V-prefixed entry numbers in the entry number field and places other formats in the in-bond control number field
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CompleteBondMessageFormatting(["Start Step"])
E_CompleteBondMessageFormatting(["End Step"])
N_CompleteBondMessageFormatting_Node0{"The system processes entry numbers
with V prefix or other formats"}:::decision N_CompleteBondMessageFormatting_Node0_action["The system places V-prefixed entry
numbers in the entry number field
and places other formats in the
in-bond control number field"]:::main N_CompleteBondMessageFormatting_Node0 -- Yes --> N_CompleteBondMessageFormatting_Node0_action N_CompleteBondMessageFormatting_Node0_action --> E_CompleteBondMessageFormatting S_CompleteBondMessageFormatting --> N_CompleteBondMessageFormatting_Node0 N_CompleteBondMessageFormatting_Node0 -- No --> E_CompleteBondMessageFormatting
with V prefix or other formats"}:::decision N_CompleteBondMessageFormatting_Node0_action["The system places V-prefixed entry
numbers in the entry number field
and places other formats in the
in-bond control number field"]:::main N_CompleteBondMessageFormatting_Node0 -- Yes --> N_CompleteBondMessageFormatting_Node0_action N_CompleteBondMessageFormatting_Node0_action --> E_CompleteBondMessageFormatting S_CompleteBondMessageFormatting --> N_CompleteBondMessageFormatting_Node0 N_CompleteBondMessageFormatting_Node0 -- No --> E_CompleteBondMessageFormatting
File: GCX016.cbl
GIVEN:
A bond message contains entry number information
WHEN:
The system processes entry numbers with 'V' prefix or other formats
THEN:
- The system places v-prefixed entry numbers in the entry number field
- Places other formats in the in-bond control number field
β Consolidated Acceptance Criteria
- The system formats the quantity action message → the system creates an ADD operation message showing the quantity increase to release amounts
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_FormatADDOperationMessage(["Start Step"])
E_FormatADDOperationMessage(["End Step"])
N_FormatADDOperationMessage_Node0{"The system formats the quantity
action message"}:::decision N_FormatADDOperationMessage_Node0_action["The system creates an ADD operation
message showing the quantity
increase to release amounts"]:::main N_FormatADDOperationMessage_Node0 -- Yes --> N_FormatADDOperationMessage_Node0_action N_FormatADDOperationMessage_Node0_action --> E_FormatADDOperationMessage S_FormatADDOperationMessage --> N_FormatADDOperationMessage_Node0 N_FormatADDOperationMessage_Node0 -- No --> E_FormatADDOperationMessage
action message"}:::decision N_FormatADDOperationMessage_Node0_action["The system creates an ADD operation
message showing the quantity
increase to release amounts"]:::main N_FormatADDOperationMessage_Node0 -- Yes --> N_FormatADDOperationMessage_Node0_action N_FormatADDOperationMessage_Node0_action --> E_FormatADDOperationMessage S_FormatADDOperationMessage --> N_FormatADDOperationMessage_Node0 N_FormatADDOperationMessage_Node0 -- No --> E_FormatADDOperationMessage
File: GCX016.cbl
GIVEN:
A disposition code has been classified as ADD operation type
WHEN:
The system formats the quantity action message
THEN:
The system creates an ADD operation message showing the quantity increase to release amounts
β Consolidated Acceptance Criteria
- The system formats the quantity action message → the system creates a SUBTRACT operation message showing the quantity decrease from release amounts
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_FormatSUBTRACTOperationMessage(["Start Step"])
E_FormatSUBTRACTOperationMessage(["End Step"])
N_FormatSUBTRACTOperationMessage_Node0{"The system formats the quantity
action message"}:::decision N_FormatSUBTRACTOperationMessage_Node0_action["The system creates a SUBTRACT
operation message showing the
quantity decrease from release
amounts"]:::main N_FormatSUBTRACTOperationMessage_Node0 -- Yes --> N_FormatSUBTRACTOperationMessage_Node0_action N_FormatSUBTRACTOperationMessage_Node0_action --> E_FormatSUBTRACTOperationMessage S_FormatSUBTRACTOperationMessage --> N_FormatSUBTRACTOperationMessage_Node0 N_FormatSUBTRACTOperationMessage_Node0 -- No --> E_FormatSUBTRACTOperationMessage
action message"}:::decision N_FormatSUBTRACTOperationMessage_Node0_action["The system creates a SUBTRACT
operation message showing the
quantity decrease from release
amounts"]:::main N_FormatSUBTRACTOperationMessage_Node0 -- Yes --> N_FormatSUBTRACTOperationMessage_Node0_action N_FormatSUBTRACTOperationMessage_Node0_action --> E_FormatSUBTRACTOperationMessage S_FormatSUBTRACTOperationMessage --> N_FormatSUBTRACTOperationMessage_Node0 N_FormatSUBTRACTOperationMessage_Node0 -- No --> E_FormatSUBTRACTOperationMessage
File: GCX016.cbl
GIVEN:
A disposition code has been classified as SUBTRACT operation type
WHEN:
The system formats the quantity action message
THEN:
The system creates a SUBTRACT operation message showing the quantity decrease from release amounts
β Consolidated Acceptance Criteria
- The system calculates the new quantity after applying the disposition code action → the system computes the resulting quantity by adding or subtracting the disposition code quantity from current release quantity
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CalculateNewQuantityAfterAction(["Start Step"])
E_CalculateNewQuantityAfterAction(["End Step"])
N_CalculateNewQuantityAfterAction_Node0{"The system calculates the new
quantity after applying the
disposition code action"}:::decision N_CalculateNewQuantityAfterAction_Node0_action["The system computes the resulting
quantity by adding or subtracting
the disposition code quantity from
current release quantity"]:::main N_CalculateNewQuantityAfterAction_Node0 -- Yes --> N_CalculateNewQuantityAfterAction_Node0_action N_CalculateNewQuantityAfterAction_Node0_action --> E_CalculateNewQuantityAfterAction S_CalculateNewQuantityAfterAction --> N_CalculateNewQuantityAfterAction_Node0 N_CalculateNewQuantityAfterAction_Node0 -- No --> E_CalculateNewQuantityAfterAction
quantity after applying the
disposition code action"}:::decision N_CalculateNewQuantityAfterAction_Node0_action["The system computes the resulting
quantity by adding or subtracting
the disposition code quantity from
current release quantity"]:::main N_CalculateNewQuantityAfterAction_Node0 -- Yes --> N_CalculateNewQuantityAfterAction_Node0_action N_CalculateNewQuantityAfterAction_Node0_action --> E_CalculateNewQuantityAfterAction S_CalculateNewQuantityAfterAction --> N_CalculateNewQuantityAfterAction_Node0 N_CalculateNewQuantityAfterAction_Node0 -- No --> E_CalculateNewQuantityAfterAction
File: GCX016.cbl
GIVEN:
Current release quantity has been retrieved and action type is determined
WHEN:
The system calculates the new quantity after applying the disposition code action
THEN:
The system computes the resulting quantity by adding or subtracting the disposition code quantity from current release quantity
β Consolidated Acceptance Criteria
- The system validates the quantity change → the system verifies the quantity change is valid (non-negative for subtractions and within business limits for additions)
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_QuantityChangeValid(["Start Step"])
E_QuantityChangeValid(["End Step"])
N_QuantityChangeValid_Node0{"The system validates the quantity
change"}:::decision N_QuantityChangeValid_Node0_action["The system verifies the quantity
change is valid non-negative for
subtractions and within business
limits for additions"]:::main N_QuantityChangeValid_Node0 -- Yes --> N_QuantityChangeValid_Node0_action N_QuantityChangeValid_Node0_action --> E_QuantityChangeValid S_QuantityChangeValid --> N_QuantityChangeValid_Node0 N_QuantityChangeValid_Node0 -- No --> E_QuantityChangeValid
change"}:::decision N_QuantityChangeValid_Node0_action["The system verifies the quantity
change is valid non-negative for
subtractions and within business
limits for additions"]:::main N_QuantityChangeValid_Node0 -- Yes --> N_QuantityChangeValid_Node0_action N_QuantityChangeValid_Node0_action --> E_QuantityChangeValid S_QuantityChangeValid --> N_QuantityChangeValid_Node0 N_QuantityChangeValid_Node0 -- No --> E_QuantityChangeValid
File: GCX016.cbl
GIVEN:
A new quantity has been calculated after applying disposition code action
WHEN:
The system validates the quantity change
THEN:
- The system verifies the quantity change is valid (non-negative for subtractions
- Within business limits for additions)
β Consolidated Acceptance Criteria
- The system formats the quantity change for display → the system creates a formatted display showing current quantity, action amount, and resulting quantity
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_FormatQuantityChangeDisplay(["Start Step"])
E_FormatQuantityChangeDisplay(["End Step"])
N_FormatQuantityChangeDisplay_Node0{"The system formats the quantity
change for display"}:::decision N_FormatQuantityChangeDisplay_Node0_action["The system creates a formatted
display showing current quantity,
action amount, and resulting
quantity"]:::main N_FormatQuantityChangeDisplay_Node0 -- Yes --> N_FormatQuantityChangeDisplay_Node0_action N_FormatQuantityChangeDisplay_Node0_action --> E_FormatQuantityChangeDisplay S_FormatQuantityChangeDisplay --> N_FormatQuantityChangeDisplay_Node0 N_FormatQuantityChangeDisplay_Node0 -- No --> E_FormatQuantityChangeDisplay
change for display"}:::decision N_FormatQuantityChangeDisplay_Node0_action["The system creates a formatted
display showing current quantity,
action amount, and resulting
quantity"]:::main N_FormatQuantityChangeDisplay_Node0 -- Yes --> N_FormatQuantityChangeDisplay_Node0_action N_FormatQuantityChangeDisplay_Node0_action --> E_FormatQuantityChangeDisplay S_FormatQuantityChangeDisplay --> N_FormatQuantityChangeDisplay_Node0 N_FormatQuantityChangeDisplay_Node0 -- No --> E_FormatQuantityChangeDisplay
File: GCX016.cbl
GIVEN:
A valid quantity change has been calculated
WHEN:
The system formats the quantity change for display
THEN:
The system creates a formatted display showing current quantity, action amount, and resulting quantity
β Consolidated Acceptance Criteria
- The system adds quantity action to the message → the system incorporates the quantity action information into the message structure for transmission
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AddQuantityActiontoMessage(["Start Step"])
E_AddQuantityActiontoMessage(["End Step"])
N_AddQuantityActiontoMessage_Node0{"The system adds quantity action to
the message"}:::decision N_AddQuantityActiontoMessage_Node0_action["The system incorporates the
quantity action information into the
message structure for transmission"]:::main N_AddQuantityActiontoMessage_Node0 -- Yes --> N_AddQuantityActiontoMessage_Node0_action N_AddQuantityActiontoMessage_Node0_action --> E_AddQuantityActiontoMessage S_AddQuantityActiontoMessage --> N_AddQuantityActiontoMessage_Node0 N_AddQuantityActiontoMessage_Node0 -- No --> E_AddQuantityActiontoMessage
the message"}:::decision N_AddQuantityActiontoMessage_Node0_action["The system incorporates the
quantity action information into the
message structure for transmission"]:::main N_AddQuantityActiontoMessage_Node0 -- Yes --> N_AddQuantityActiontoMessage_Node0_action N_AddQuantityActiontoMessage_Node0_action --> E_AddQuantityActiontoMessage S_AddQuantityActiontoMessage --> N_AddQuantityActiontoMessage_Node0 N_AddQuantityActiontoMessage_Node0 -- No --> E_AddQuantityActiontoMessage
File: GCX016.cbl
GIVEN:
Quantity change display has been formatted
WHEN:
The system adds quantity action to the message
THEN:
The system incorporates the quantity action information into the message structure for transmission
β Consolidated Acceptance Criteria
- The system includes disposition code description → the system adds the disposition code description to provide context for the quantity action in the message
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IncludeDispositionCodeDescription(["Start Step"])
E_IncludeDispositionCodeDescription(["End Step"])
N_IncludeDispositionCodeDescription_Node0{"The system includes disposition
code description"}:::decision N_IncludeDispositionCodeDescription_Node0_action["The system adds the disposition
code description to provide context
for the quantity action in the
message"]:::main N_IncludeDispositionCodeDescription_Node0 -- Yes --> N_IncludeDispositionCodeDescription_Node0_action N_IncludeDispositionCodeDescription_Node0_action --> E_IncludeDispositionCodeDescription S_IncludeDispositionCodeDescription --> N_IncludeDispositionCodeDescription_Node0 N_IncludeDispositionCodeDescription_Node0 -- No --> E_IncludeDispositionCodeDescription
code description"}:::decision N_IncludeDispositionCodeDescription_Node0_action["The system adds the disposition
code description to provide context
for the quantity action in the
message"]:::main N_IncludeDispositionCodeDescription_Node0 -- Yes --> N_IncludeDispositionCodeDescription_Node0_action N_IncludeDispositionCodeDescription_Node0_action --> E_IncludeDispositionCodeDescription S_IncludeDispositionCodeDescription --> N_IncludeDispositionCodeDescription_Node0 N_IncludeDispositionCodeDescription_Node0 -- No --> E_IncludeDispositionCodeDescription
File: GCX016.cbl
GIVEN:
Quantity action has been added to the message
WHEN:
The system includes disposition code description
THEN:
The system adds the disposition code description to provide context for the quantity action in the message
β Consolidated Acceptance Criteria
- The system formats the complete quantity action message → the system assembles all message components including quantity action, disposition code description, and formatting into a complete message
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_FormatCompleteQuantityActionMessage(["Start Step"])
E_FormatCompleteQuantityActionMessage(["End Step"])
N_FormatCompleteQuantityActionMessage_Node0{"The system formats the complete
quantity action message"}:::decision N_FormatCompleteQuantityActionMessage_Node0_action["The system assembles all message
components including quantity
action, disposition code
description, and formatting into a
complete message"]:::main N_FormatCompleteQuantityActionMessage_Node0 -- Yes --> N_FormatCompleteQuantityActionMessage_Node0_action N_FormatCompleteQuantityActionMessage_Node0_action --> E_FormatCompleteQuantityActionMessage S_FormatCompleteQuantityActionMessage --> N_FormatCompleteQuantityActionMessage_Node0 N_FormatCompleteQuantityActionMessage_Node0 -- No --> E_FormatCompleteQuantityActionMessage
quantity action message"}:::decision N_FormatCompleteQuantityActionMessage_Node0_action["The system assembles all message
components including quantity
action, disposition code
description, and formatting into a
complete message"]:::main N_FormatCompleteQuantityActionMessage_Node0 -- Yes --> N_FormatCompleteQuantityActionMessage_Node0_action N_FormatCompleteQuantityActionMessage_Node0_action --> E_FormatCompleteQuantityActionMessage S_FormatCompleteQuantityActionMessage --> N_FormatCompleteQuantityActionMessage_Node0 N_FormatCompleteQuantityActionMessage_Node0 -- No --> E_FormatCompleteQuantityActionMessage
File: GCX016.cbl
GIVEN:
Disposition code description has been included in the message
WHEN:
The system formats the complete quantity action message
THEN:
The system assembles all message components including quantity action, disposition code description, and formatting into a complete message
β Consolidated Acceptance Criteria
- The system determines no quantity action is required → the system bypasses quantity action message formatting and proceeds to message completion
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_NoQuantityActionRequired(["Start Step"])
E_NoQuantityActionRequired(["End Step"])
N_NoQuantityActionRequired_Node0{"The system determines no quantity
action is required"}:::decision N_NoQuantityActionRequired_Node0_action["The system bypasses quantity action
message formatting and proceeds to
message completion"]:::main N_NoQuantityActionRequired_Node0 -- Yes --> N_NoQuantityActionRequired_Node0_action N_NoQuantityActionRequired_Node0_action --> E_NoQuantityActionRequired S_NoQuantityActionRequired --> N_NoQuantityActionRequired_Node0 N_NoQuantityActionRequired_Node0 -- No --> E_NoQuantityActionRequired
action is required"}:::decision N_NoQuantityActionRequired_Node0_action["The system bypasses quantity action
message formatting and proceeds to
message completion"]:::main N_NoQuantityActionRequired_Node0 -- Yes --> N_NoQuantityActionRequired_Node0_action N_NoQuantityActionRequired_Node0_action --> E_NoQuantityActionRequired S_NoQuantityActionRequired --> N_NoQuantityActionRequired_Node0 N_NoQuantityActionRequired_Node0 -- No --> E_NoQuantityActionRequired
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
A disposition code does not have quantity action requirements OR quantity change validation fails
WHEN:
The system determines no quantity action is required
THEN:
- The system bypasses quantity action message formatting
- Proceeds to message completion
β Consolidated Acceptance Criteria
- The system needs to validate container type for integration → the equipment type is retrieved from the cargo record for further validation
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RetrieveEquipmentTypefromCargoRecord(["Start Step"])
E_RetrieveEquipmentTypefromCargoRecord(["End Step"])
N_RetrieveEquipmentTypefromCargoRecord_Node0{"The system needs to validate
container type for integration"}:::decision N_RetrieveEquipmentTypefromCargoRecord_Node0_action["The equipment type is retrieved
from the cargo record for further
validation"]:::main N_RetrieveEquipmentTypefromCargoRecord_Node0 -- Yes --> N_RetrieveEquipmentTypefromCargoRecord_Node0_action N_RetrieveEquipmentTypefromCargoRecord_Node0_action --> E_RetrieveEquipmentTypefromCargoRecord S_RetrieveEquipmentTypefromCargoRecord --> N_RetrieveEquipmentTypefromCargoRecord_Node0 N_RetrieveEquipmentTypefromCargoRecord_Node0 -- No --> E_RetrieveEquipmentTypefromCargoRecord
container type for integration"}:::decision N_RetrieveEquipmentTypefromCargoRecord_Node0_action["The equipment type is retrieved
from the cargo record for further
validation"]:::main N_RetrieveEquipmentTypefromCargoRecord_Node0 -- Yes --> N_RetrieveEquipmentTypefromCargoRecord_Node0_action N_RetrieveEquipmentTypefromCargoRecord_Node0_action --> E_RetrieveEquipmentTypefromCargoRecord S_RetrieveEquipmentTypefromCargoRecord --> N_RetrieveEquipmentTypefromCargoRecord_Node0 N_RetrieveEquipmentTypefromCargoRecord_Node0 -- No --> E_RetrieveEquipmentTypefromCargoRecord
File: GCX016.cbl
GIVEN:
A cargo record exists in the system
WHEN:
The system needs to validate container type for integration
THEN:
The equipment type is retrieved from the cargo record for further validation
β Consolidated Acceptance Criteria
- The system validates the equipment type code format and content → the equipment type code is checked against valid equipment type patterns
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CheckEquipmentTypeCode(["Start Step"])
E_CheckEquipmentTypeCode(["End Step"])
N_CheckEquipmentTypeCode_Node0{"The system validates the equipment
type code format and content"}:::decision N_CheckEquipmentTypeCode_Node0_action["The equipment type code is checked
against valid equipment type
patterns"]:::main N_CheckEquipmentTypeCode_Node0 -- Yes --> N_CheckEquipmentTypeCode_Node0_action N_CheckEquipmentTypeCode_Node0_action --> E_CheckEquipmentTypeCode S_CheckEquipmentTypeCode --> N_CheckEquipmentTypeCode_Node0 N_CheckEquipmentTypeCode_Node0 -- No --> E_CheckEquipmentTypeCode
type code format and content"}:::decision N_CheckEquipmentTypeCode_Node0_action["The equipment type code is checked
against valid equipment type
patterns"]:::main N_CheckEquipmentTypeCode_Node0 -- Yes --> N_CheckEquipmentTypeCode_Node0_action N_CheckEquipmentTypeCode_Node0_action --> E_CheckEquipmentTypeCode S_CheckEquipmentTypeCode --> N_CheckEquipmentTypeCode_Node0 N_CheckEquipmentTypeCode_Node0 -- No --> E_CheckEquipmentTypeCode
File: GCX016.cbl
GIVEN:
An equipment type code has been retrieved from the cargo record
WHEN:
- The system validates the equipment type code format
- Content
THEN:
The equipment type code is checked against valid equipment type patterns
β Consolidated Acceptance Criteria
- The system looks up the equipment type in the master equipment type table → the system validates that the equipment type exists in the reference table
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ValidateAgainstEquipmentTypeTable(["Start Step"])
E_ValidateAgainstEquipmentTypeTable(["End Step"])
N_ValidateAgainstEquipmentTypeTable_Node0{"The system looks up the equipment
type in the master equipment type
table"}:::decision N_ValidateAgainstEquipmentTypeTable_Node0_action["The system validates that the
equipment type exists in the
reference table"]:::main N_ValidateAgainstEquipmentTypeTable_Node0 -- Yes --> N_ValidateAgainstEquipmentTypeTable_Node0_action N_ValidateAgainstEquipmentTypeTable_Node0_action --> E_ValidateAgainstEquipmentTypeTable S_ValidateAgainstEquipmentTypeTable --> N_ValidateAgainstEquipmentTypeTable_Node0 N_ValidateAgainstEquipmentTypeTable_Node0 -- No --> E_ValidateAgainstEquipmentTypeTable
type in the master equipment type
table"}:::decision N_ValidateAgainstEquipmentTypeTable_Node0_action["The system validates that the
equipment type exists in the
reference table"]:::main N_ValidateAgainstEquipmentTypeTable_Node0 -- Yes --> N_ValidateAgainstEquipmentTypeTable_Node0_action N_ValidateAgainstEquipmentTypeTable_Node0_action --> E_ValidateAgainstEquipmentTypeTable S_ValidateAgainstEquipmentTypeTable --> N_ValidateAgainstEquipmentTypeTable_Node0 N_ValidateAgainstEquipmentTypeTable_Node0 -- No --> E_ValidateAgainstEquipmentTypeTable
File: GCX016.cbl
GIVEN:
A container or trailer equipment type has been identified
WHEN:
The system looks up the equipment type in the master equipment type table
THEN:
The system validates that the equipment type exists in the reference table
β Consolidated Acceptance Criteria
- The system checks if the equipment type was found in the reference table → the system determines if the equipment type is valid (found) or invalid (not found)
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_EquipmentTypeFoundinSystem(["Start Step"])
E_EquipmentTypeFoundinSystem(["End Step"])
N_EquipmentTypeFoundinSystem_Node0{"The system checks if the equipment
type was found in the reference
table"}:::decision N_EquipmentTypeFoundinSystem_Node0_action["The system determines if the
equipment type is valid found or
invalid not found"]:::main N_EquipmentTypeFoundinSystem_Node0 -- Yes --> N_EquipmentTypeFoundinSystem_Node0_action N_EquipmentTypeFoundinSystem_Node0_action --> E_EquipmentTypeFoundinSystem S_EquipmentTypeFoundinSystem --> N_EquipmentTypeFoundinSystem_Node0 N_EquipmentTypeFoundinSystem_Node0 -- No --> E_EquipmentTypeFoundinSystem
type was found in the reference
table"}:::decision N_EquipmentTypeFoundinSystem_Node0_action["The system determines if the
equipment type is valid found or
invalid not found"]:::main N_EquipmentTypeFoundinSystem_Node0 -- Yes --> N_EquipmentTypeFoundinSystem_Node0_action N_EquipmentTypeFoundinSystem_Node0_action --> E_EquipmentTypeFoundinSystem S_EquipmentTypeFoundinSystem --> N_EquipmentTypeFoundinSystem_Node0 N_EquipmentTypeFoundinSystem_Node0 -- No --> E_EquipmentTypeFoundinSystem
File: GCX016.cbl
GIVEN:
Equipment type lookup has been performed against the master table
WHEN:
The system checks if the equipment type was found in the reference table
THEN:
The system determines if the equipment type is valid (found) or invalid (not found)
β Consolidated Acceptance Criteria
- The system confirms the equipment type is valid → a valid equipment flag is set to allow further processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetValidEquipmentFlag(["Start Step"])
E_SetValidEquipmentFlag(["End Step"])
N_SetValidEquipmentFlag_Node0{"The system confirms the equipment
type is valid"}:::decision N_SetValidEquipmentFlag_Node0_action["A valid equipment flag is set to
allow further processing"]:::main N_SetValidEquipmentFlag_Node0 -- Yes --> N_SetValidEquipmentFlag_Node0_action N_SetValidEquipmentFlag_Node0_action --> E_SetValidEquipmentFlag S_SetValidEquipmentFlag --> N_SetValidEquipmentFlag_Node0 N_SetValidEquipmentFlag_Node0 -- No --> E_SetValidEquipmentFlag
type is valid"}:::decision N_SetValidEquipmentFlag_Node0_action["A valid equipment flag is set to
allow further processing"]:::main N_SetValidEquipmentFlag_Node0 -- Yes --> N_SetValidEquipmentFlag_Node0_action N_SetValidEquipmentFlag_Node0_action --> E_SetValidEquipmentFlag S_SetValidEquipmentFlag --> N_SetValidEquipmentFlag_Node0 N_SetValidEquipmentFlag_Node0 -- No --> E_SetValidEquipmentFlag
File: GCX016.cbl
GIVEN:
Equipment type has been found in the master equipment type table
WHEN:
The system confirms the equipment type is valid
THEN:
A valid equipment flag is set to allow further processing
β Consolidated Acceptance Criteria
- The system prepares data for integration service call → the equipment type is mapped to the integration service format requirements
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MapEquipmentTypetoIntegrationFormat(["Start Step"])
E_MapEquipmentTypetoIntegrationFormat(["End Step"])
N_MapEquipmentTypetoIntegrationFormat_Node0{"The system prepares data for
integration service call"}:::decision N_MapEquipmentTypetoIntegrationFormat_Node0_action["The equipment type is mapped to the
integration service format
requirements"]:::main N_MapEquipmentTypetoIntegrationFormat_Node0 -- Yes --> N_MapEquipmentTypetoIntegrationFormat_Node0_action N_MapEquipmentTypetoIntegrationFormat_Node0_action --> E_MapEquipmentTypetoIntegrationFormat S_MapEquipmentTypetoIntegrationFormat --> N_MapEquipmentTypetoIntegrationFormat_Node0 N_MapEquipmentTypetoIntegrationFormat_Node0 -- No --> E_MapEquipmentTypetoIntegrationFormat
integration service call"}:::decision N_MapEquipmentTypetoIntegrationFormat_Node0_action["The equipment type is mapped to the
integration service format
requirements"]:::main N_MapEquipmentTypetoIntegrationFormat_Node0 -- Yes --> N_MapEquipmentTypetoIntegrationFormat_Node0_action N_MapEquipmentTypetoIntegrationFormat_Node0_action --> E_MapEquipmentTypetoIntegrationFormat S_MapEquipmentTypetoIntegrationFormat --> N_MapEquipmentTypetoIntegrationFormat_Node0 N_MapEquipmentTypetoIntegrationFormat_Node0 -- No --> E_MapEquipmentTypetoIntegrationFormat
File: GCX016.cbl
GIVEN:
A valid equipment type has been confirmed
WHEN:
The system prepares data for integration service call
THEN:
The equipment type is mapped to the integration service format requirements
β Consolidated Acceptance Criteria
- The system prepares the complete equipment data package → all required equipment data is formatted and ready for integration service call
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_PrepareEquipmentDataforIntegrationCall(["Start Step"])
E_PrepareEquipmentDataforIntegrationCall(["End Step"])
N_PrepareEquipmentDataforIntegrationCall_Node0{"The system prepares the complete
equipment data package"}:::decision N_PrepareEquipmentDataforIntegrationCall_Node0_action["All required equipment data is
formatted and ready for integration
service call"]:::main N_PrepareEquipmentDataforIntegrationCall_Node0 -- Yes --> N_PrepareEquipmentDataforIntegrationCall_Node0_action N_PrepareEquipmentDataforIntegrationCall_Node0_action --> E_PrepareEquipmentDataforIntegrationCall S_PrepareEquipmentDataforIntegrationCall --> N_PrepareEquipmentDataforIntegrationCall_Node0 N_PrepareEquipmentDataforIntegrationCall_Node0 -- No --> E_PrepareEquipmentDataforIntegrationCall
equipment data package"}:::decision N_PrepareEquipmentDataforIntegrationCall_Node0_action["All required equipment data is
formatted and ready for integration
service call"]:::main N_PrepareEquipmentDataforIntegrationCall_Node0 -- Yes --> N_PrepareEquipmentDataforIntegrationCall_Node0_action N_PrepareEquipmentDataforIntegrationCall_Node0_action --> E_PrepareEquipmentDataforIntegrationCall S_PrepareEquipmentDataforIntegrationCall --> N_PrepareEquipmentDataforIntegrationCall_Node0 N_PrepareEquipmentDataforIntegrationCall_Node0 -- No --> E_PrepareEquipmentDataforIntegrationCall
File: GCX016.cbl
GIVEN:
Equipment type has been mapped to integration format
WHEN:
The system prepares the complete equipment data package
THEN:
- All required equipment data is formatted
- Ready for integration service call
β Consolidated Acceptance Criteria
- All validation steps have been completed successfully → equipment type validation is marked as complete and integration can proceed
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_EquipmentTypeValidationComplete(["Start Step"])
E_EquipmentTypeValidationComplete(["End Step"])
N_EquipmentTypeValidationComplete_Node0{"All validation steps have been
completed successfully"}:::decision N_EquipmentTypeValidationComplete_Node0_action["Equipment type validation is marked
as complete and integration can
proceed"]:::main N_EquipmentTypeValidationComplete_Node0 -- Yes --> N_EquipmentTypeValidationComplete_Node0_action N_EquipmentTypeValidationComplete_Node0_action --> E_EquipmentTypeValidationComplete S_EquipmentTypeValidationComplete --> N_EquipmentTypeValidationComplete_Node0 N_EquipmentTypeValidationComplete_Node0 -- No --> E_EquipmentTypeValidationComplete
completed successfully"}:::decision N_EquipmentTypeValidationComplete_Node0_action["Equipment type validation is marked
as complete and integration can
proceed"]:::main N_EquipmentTypeValidationComplete_Node0 -- Yes --> N_EquipmentTypeValidationComplete_Node0_action N_EquipmentTypeValidationComplete_Node0_action --> E_EquipmentTypeValidationComplete S_EquipmentTypeValidationComplete --> N_EquipmentTypeValidationComplete_Node0 N_EquipmentTypeValidationComplete_Node0 -- No --> E_EquipmentTypeValidationComplete
File: GCX016.cbl
GIVEN:
Equipment data has been prepared for integration
WHEN:
All validation steps have been completed successfully
THEN:
- Equipment type validation is marked as complete
- Integration can proceed
β Consolidated Acceptance Criteria
- The system confirms the equipment type is invalid → an invalid equipment flag is set to prevent further processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetInvalidEquipmentFlag(["Start Step"])
E_SetInvalidEquipmentFlag(["End Step"])
N_SetInvalidEquipmentFlag_Node0{"The system confirms the equipment
type is invalid"}:::decision N_SetInvalidEquipmentFlag_Node0_action["An invalid equipment flag is set to
prevent further processing"]:::exclusion N_SetInvalidEquipmentFlag_Node0 -- Yes -->|Alternative| N_SetInvalidEquipmentFlag_Node0_action N_SetInvalidEquipmentFlag_Node0_action --> E_SetInvalidEquipmentFlag S_SetInvalidEquipmentFlag --> N_SetInvalidEquipmentFlag_Node0 N_SetInvalidEquipmentFlag_Node0 -- No --> E_SetInvalidEquipmentFlag
type is invalid"}:::decision N_SetInvalidEquipmentFlag_Node0_action["An invalid equipment flag is set to
prevent further processing"]:::exclusion N_SetInvalidEquipmentFlag_Node0 -- Yes -->|Alternative| N_SetInvalidEquipmentFlag_Node0_action N_SetInvalidEquipmentFlag_Node0_action --> E_SetInvalidEquipmentFlag S_SetInvalidEquipmentFlag --> N_SetInvalidEquipmentFlag_Node0 N_SetInvalidEquipmentFlag_Node0 -- No --> E_SetInvalidEquipmentFlag
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
Equipment type was not found in the master equipment type table
WHEN:
The system confirms the equipment type is invalid
THEN:
An invalid equipment flag is set to prevent further processing
β Consolidated Acceptance Criteria
- The system needs to record the validation failure → an equipment type error is logged with relevant details for troubleshooting
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogEquipmentTypeError(["Start Step"])
E_LogEquipmentTypeError(["End Step"])
N_LogEquipmentTypeError_Node0{"The system needs to record the
validation failure"}:::decision N_LogEquipmentTypeError_Node0_action["An equipment type error is logged
with relevant details for
troubleshooting"]:::main N_LogEquipmentTypeError_Node0 -- Yes --> N_LogEquipmentTypeError_Node0_action N_LogEquipmentTypeError_Node0_action --> E_LogEquipmentTypeError S_LogEquipmentTypeError --> N_LogEquipmentTypeError_Node0 N_LogEquipmentTypeError_Node0 -- No --> E_LogEquipmentTypeError
validation failure"}:::decision N_LogEquipmentTypeError_Node0_action["An equipment type error is logged
with relevant details for
troubleshooting"]:::main N_LogEquipmentTypeError_Node0 -- Yes --> N_LogEquipmentTypeError_Node0_action N_LogEquipmentTypeError_Node0_action --> E_LogEquipmentTypeError S_LogEquipmentTypeError --> N_LogEquipmentTypeError_Node0 N_LogEquipmentTypeError_Node0 -- No --> E_LogEquipmentTypeError
File: GCX016.cbl
GIVEN:
An invalid equipment flag has been set
WHEN:
The system needs to record the validation failure
THEN:
An equipment type error is logged with relevant details for troubleshooting
β Consolidated Acceptance Criteria
- The system determines integration cannot proceed due to invalid equipment type → the integration service call is skipped and processing continues without integration
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SkipIntegrationServiceCall(["Start Step"])
E_SkipIntegrationServiceCall(["End Step"])
N_SkipIntegrationServiceCall_Node0{"The system determines integration
cannot proceed due to invalid
equipment type"}:::decision N_SkipIntegrationServiceCall_Node0_action["The integration service call is
skipped and processing continues
without integration"]:::exclusion N_SkipIntegrationServiceCall_Node0 -- Yes -->|Alternative| N_SkipIntegrationServiceCall_Node0_action N_SkipIntegrationServiceCall_Node0_action --> E_SkipIntegrationServiceCall S_SkipIntegrationServiceCall --> N_SkipIntegrationServiceCall_Node0 N_SkipIntegrationServiceCall_Node0 -- No --> E_SkipIntegrationServiceCall
cannot proceed due to invalid
equipment type"}:::decision N_SkipIntegrationServiceCall_Node0_action["The integration service call is
skipped and processing continues
without integration"]:::exclusion N_SkipIntegrationServiceCall_Node0 -- Yes -->|Alternative| N_SkipIntegrationServiceCall_Node0_action N_SkipIntegrationServiceCall_Node0_action --> E_SkipIntegrationServiceCall S_SkipIntegrationServiceCall --> N_SkipIntegrationServiceCall_Node0 N_SkipIntegrationServiceCall_Node0 -- No --> E_SkipIntegrationServiceCall
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
Equipment type error has been logged
WHEN:
The system determines integration cannot proceed due to invalid equipment type
THEN:
- The integration service call is skipped
- Processing continues without integration
β Consolidated Acceptance Criteria
- The system accesses the broker configuration tables to check if the disposition code exists → the system retrieves the configuration status from the system tables
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AccessSystemConfigurationTables(["Start Step"])
E_AccessSystemConfigurationTables(["End Step"])
N_AccessSystemConfigurationTables_Node0{"The system accesses the broker
configuration tables to check if the
disposition code exists"}:::decision N_AccessSystemConfigurationTables_Node0_action["The system retrieves the
configuration status from the system
tables"]:::main N_AccessSystemConfigurationTables_Node0 -- Yes --> N_AccessSystemConfigurationTables_Node0_action N_AccessSystemConfigurationTables_Node0_action --> E_AccessSystemConfigurationTables S_AccessSystemConfigurationTables --> N_AccessSystemConfigurationTables_Node0 N_AccessSystemConfigurationTables_Node0 -- No --> E_AccessSystemConfigurationTables
configuration tables to check if the
disposition code exists"}:::decision N_AccessSystemConfigurationTables_Node0_action["The system retrieves the
configuration status from the system
tables"]:::main N_AccessSystemConfigurationTables_Node0 -- Yes --> N_AccessSystemConfigurationTables_Node0_action N_AccessSystemConfigurationTables_Node0_action --> E_AccessSystemConfigurationTables S_AccessSystemConfigurationTables --> N_AccessSystemConfigurationTables_Node0 N_AccessSystemConfigurationTables_Node0 -- No --> E_AccessSystemConfigurationTables
File: GCX016.cbl
GIVEN:
A disposition code needs to be validated for broker notification configuration
WHEN:
The system accesses the broker configuration tables to check if the disposition code exists
THEN:
The system retrieves the configuration status from the system tables
β Consolidated Acceptance Criteria
- The disposition code is found in the broker notification table → the broker notification flag is set to TRUE
- The disposition code is not found in the broker notification table → the broker notification flag is set to FALSE
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IsDispositionCodeFoundinBrokerNotificationTable(["Start Step"])
E_IsDispositionCodeFoundinBrokerNotificationTable(["End Step"])
N_IsDispositionCodeFoundinBrokerNotificationTable_Node0{"The disposition code is found in
the broker notification table"}:::decision N_IsDispositionCodeFoundinBrokerNotificationTable_Node0_action["The broker notification flag is set
to TRUE"]:::main N_IsDispositionCodeFoundinBrokerNotificationTable_Node0 -- Yes --> N_IsDispositionCodeFoundinBrokerNotificationTable_Node0_action N_IsDispositionCodeFoundinBrokerNotificationTable_Node0_action --> E_IsDispositionCodeFoundinBrokerNotificationTable S_IsDispositionCodeFoundinBrokerNotificationTable --> N_IsDispositionCodeFoundinBrokerNotificationTable_Node0 N_IsDispositionCodeFoundinBrokerNotificationTable_Node1{"The disposition code is not found
in the broker notification table"}:::decision N_IsDispositionCodeFoundinBrokerNotificationTable_Node1_action["The broker notification flag is set
to FALSE"]:::main N_IsDispositionCodeFoundinBrokerNotificationTable_Node1 -- Yes --> N_IsDispositionCodeFoundinBrokerNotificationTable_Node1_action N_IsDispositionCodeFoundinBrokerNotificationTable_Node1_action --> E_IsDispositionCodeFoundinBrokerNotificationTable N_IsDispositionCodeFoundinBrokerNotificationTable_Node0 -- No --> N_IsDispositionCodeFoundinBrokerNotificationTable_Node1 N_IsDispositionCodeFoundinBrokerNotificationTable_Node1 -- No --> E_IsDispositionCodeFoundinBrokerNotificationTable
the broker notification table"}:::decision N_IsDispositionCodeFoundinBrokerNotificationTable_Node0_action["The broker notification flag is set
to TRUE"]:::main N_IsDispositionCodeFoundinBrokerNotificationTable_Node0 -- Yes --> N_IsDispositionCodeFoundinBrokerNotificationTable_Node0_action N_IsDispositionCodeFoundinBrokerNotificationTable_Node0_action --> E_IsDispositionCodeFoundinBrokerNotificationTable S_IsDispositionCodeFoundinBrokerNotificationTable --> N_IsDispositionCodeFoundinBrokerNotificationTable_Node0 N_IsDispositionCodeFoundinBrokerNotificationTable_Node1{"The disposition code is not found
in the broker notification table"}:::decision N_IsDispositionCodeFoundinBrokerNotificationTable_Node1_action["The broker notification flag is set
to FALSE"]:::main N_IsDispositionCodeFoundinBrokerNotificationTable_Node1 -- Yes --> N_IsDispositionCodeFoundinBrokerNotificationTable_Node1_action N_IsDispositionCodeFoundinBrokerNotificationTable_Node1_action --> E_IsDispositionCodeFoundinBrokerNotificationTable N_IsDispositionCodeFoundinBrokerNotificationTable_Node0 -- No --> N_IsDispositionCodeFoundinBrokerNotificationTable_Node1 N_IsDispositionCodeFoundinBrokerNotificationTable_Node1 -- No --> E_IsDispositionCodeFoundinBrokerNotificationTable
File: GCX016.cbl
GIVEN:
A disposition code has been looked up in the broker notification configuration table
WHEN:
The disposition code is found in the broker notification table
THEN:
The broker notification flag is set to TRUE
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
A disposition code has been looked up in the broker notification configuration table
WHEN:
The disposition code is not found in the broker notification table
THEN:
The broker notification flag is set to FALSE
β Consolidated Acceptance Criteria
- The validation process is complete → the system returns the validation result with the broker notification flag status
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ReturnValidationResult(["Start Step"])
E_ReturnValidationResult(["End Step"])
N_ReturnValidationResult_Node0{"The validation process is complete"}:::decision
N_ReturnValidationResult_Node0_action["The system returns the validation
result with the broker notification
flag status"]:::main N_ReturnValidationResult_Node0 -- Yes --> N_ReturnValidationResult_Node0_action N_ReturnValidationResult_Node0_action --> E_ReturnValidationResult S_ReturnValidationResult --> N_ReturnValidationResult_Node0 N_ReturnValidationResult_Node0 -- No --> E_ReturnValidationResult
result with the broker notification
flag status"]:::main N_ReturnValidationResult_Node0 -- Yes --> N_ReturnValidationResult_Node0_action N_ReturnValidationResult_Node0_action --> E_ReturnValidationResult S_ReturnValidationResult --> N_ReturnValidationResult_Node0 N_ReturnValidationResult_Node0 -- No --> E_ReturnValidationResult
File: GCX016.cbl
GIVEN:
The broker notification flag has been set based on disposition code configuration lookup
WHEN:
The validation process is complete
THEN:
The system returns the validation result with the broker notification flag status
β Consolidated Acceptance Criteria
- The system attempts to access GCSA2RT secondary cargo records → the system should verify if secondary records are available and proceed accordingly
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AccessCargoSecondaryRecordsGCSA2RTSegments(["Start Step"])
E_AccessCargoSecondaryRecordsGCSA2RTSegments(["End Step"])
N_AccessCargoSecondaryRecordsGCSA2RTSegments_Node0{"The system attempts to access
GCSA2RT secondary cargo records"}:::decision N_AccessCargoSecondaryRecordsGCSA2RTSegments_Node0_action["The system should verify if
secondary records are available and
proceed accordingly"]:::main N_AccessCargoSecondaryRecordsGCSA2RTSegments_Node0 -- Yes --> N_AccessCargoSecondaryRecordsGCSA2RTSegments_Node0_action N_AccessCargoSecondaryRecordsGCSA2RTSegments_Node0_action --> E_AccessCargoSecondaryRecordsGCSA2RTSegments S_AccessCargoSecondaryRecordsGCSA2RTSegments --> N_AccessCargoSecondaryRecordsGCSA2RTSegments_Node0 N_AccessCargoSecondaryRecordsGCSA2RTSegments_Node0 -- No --> E_AccessCargoSecondaryRecordsGCSA2RTSegments
GCSA2RT secondary cargo records"}:::decision N_AccessCargoSecondaryRecordsGCSA2RTSegments_Node0_action["The system should verify if
secondary records are available and
proceed accordingly"]:::main N_AccessCargoSecondaryRecordsGCSA2RTSegments_Node0 -- Yes --> N_AccessCargoSecondaryRecordsGCSA2RTSegments_Node0_action N_AccessCargoSecondaryRecordsGCSA2RTSegments_Node0_action --> E_AccessCargoSecondaryRecordsGCSA2RTSegments S_AccessCargoSecondaryRecordsGCSA2RTSegments --> N_AccessCargoSecondaryRecordsGCSA2RTSegments_Node0 N_AccessCargoSecondaryRecordsGCSA2RTSegments_Node0 -- No --> E_AccessCargoSecondaryRecordsGCSA2RTSegments
File: GCX016.cbl
GIVEN:
A cargo record requires secondary information processing
WHEN:
The system attempts to access GCSA2RT secondary cargo records
THEN:
- The system should verify if secondary records are available
- Proceed accordingly
β Consolidated Acceptance Criteria
- The system checks the N101-01 qualifier field → the system should determine if the qualifier equals 'PF' indicating payer of freight information
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CheckN10101Qualifier(["Start Step"])
E_CheckN10101Qualifier(["End Step"])
N_CheckN10101Qualifier_Node0{"The system checks the N101-01
qualifier field"}:::decision N_CheckN10101Qualifier_Node0_action["The system should determine if the
qualifier equals PF indicating payer
of freight information"]:::main N_CheckN10101Qualifier_Node0 -- Yes --> N_CheckN10101Qualifier_Node0_action N_CheckN10101Qualifier_Node0_action --> E_CheckN10101Qualifier S_CheckN10101Qualifier --> N_CheckN10101Qualifier_Node0 N_CheckN10101Qualifier_Node0 -- No --> E_CheckN10101Qualifier
qualifier field"}:::decision N_CheckN10101Qualifier_Node0_action["The system should determine if the
qualifier equals PF indicating payer
of freight information"]:::main N_CheckN10101Qualifier_Node0 -- Yes --> N_CheckN10101Qualifier_Node0_action N_CheckN10101Qualifier_Node0_action --> E_CheckN10101Qualifier S_CheckN10101Qualifier --> N_CheckN10101Qualifier_Node0 N_CheckN10101Qualifier_Node0 -- No --> E_CheckN10101Qualifier
File: GCX016.cbl
GIVEN:
An N101 segment is found in secondary cargo records
WHEN:
The system checks the N101-01 qualifier field
THEN:
The system should determine if the qualifier equals 'PF' indicating payer of freight information
β Consolidated Acceptance Criteria
- The system checks for additional N101 segments in the same record → the system should determine if more N101 segments exist for continued processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CheckforAdditionalN101Segments(["Start Step"])
E_CheckforAdditionalN101Segments(["End Step"])
N_CheckforAdditionalN101Segments_Node0{"The system checks for additional
N101 segments in the same record"}:::decision N_CheckforAdditionalN101Segments_Node0_action["The system should determine if more
N101 segments exist for continued
processing"]:::main N_CheckforAdditionalN101Segments_Node0 -- Yes --> N_CheckforAdditionalN101Segments_Node0_action N_CheckforAdditionalN101Segments_Node0_action --> E_CheckforAdditionalN101Segments S_CheckforAdditionalN101Segments --> N_CheckforAdditionalN101Segments_Node0 N_CheckforAdditionalN101Segments_Node0 -- No --> E_CheckforAdditionalN101Segments
N101 segments in the same record"}:::decision N_CheckforAdditionalN101Segments_Node0_action["The system should determine if more
N101 segments exist for continued
processing"]:::main N_CheckforAdditionalN101Segments_Node0 -- Yes --> N_CheckforAdditionalN101Segments_Node0_action N_CheckforAdditionalN101Segments_Node0_action --> E_CheckforAdditionalN101Segments S_CheckforAdditionalN101Segments --> N_CheckforAdditionalN101Segments_Node0 N_CheckforAdditionalN101Segments_Node0 -- No --> E_CheckforAdditionalN101Segments
File: GCX016.cbl
GIVEN:
One N101 segment has been processed in a secondary record
WHEN:
The system checks for additional N101 segments in the same record
THEN:
The system should determine if more N101 segments exist for continued processing
β Consolidated Acceptance Criteria
- The system processes the non-PF N101 segment → the system should extract other supplemental information and store it in working storage
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExtractOtherSupplementalInformationfromN101(["Start Step"])
E_ExtractOtherSupplementalInformationfromN101(["End Step"])
N_ExtractOtherSupplementalInformationfromN101_Node0{"The system processes the non-PF
N101 segment"}:::decision N_ExtractOtherSupplementalInformationfromN101_Node0_action["The system should extract other
supplemental information and store
it in working storage"]:::main N_ExtractOtherSupplementalInformationfromN101_Node0 -- Yes --> N_ExtractOtherSupplementalInformationfromN101_Node0_action N_ExtractOtherSupplementalInformationfromN101_Node0_action --> E_ExtractOtherSupplementalInformationfromN101 S_ExtractOtherSupplementalInformationfromN101 --> N_ExtractOtherSupplementalInformationfromN101_Node0 N_ExtractOtherSupplementalInformationfromN101_Node0 -- No --> E_ExtractOtherSupplementalInformationfromN101
N101 segment"}:::decision N_ExtractOtherSupplementalInformationfromN101_Node0_action["The system should extract other
supplemental information and store
it in working storage"]:::main N_ExtractOtherSupplementalInformationfromN101_Node0 -- Yes --> N_ExtractOtherSupplementalInformationfromN101_Node0_action N_ExtractOtherSupplementalInformationfromN101_Node0_action --> E_ExtractOtherSupplementalInformationfromN101 S_ExtractOtherSupplementalInformationfromN101 --> N_ExtractOtherSupplementalInformationfromN101_Node0 N_ExtractOtherSupplementalInformationfromN101_Node0 -- No --> E_ExtractOtherSupplementalInformationfromN101
File: GCX016.cbl
GIVEN:
An N101 segment exists with a qualifier other than 'PF'
WHEN:
The system processes the non-PF N101 segment
THEN:
- The system should extract other supplemental information
- Store it in working storage
β Consolidated Acceptance Criteria
- The system checks for additional secondary records → the system should continue processing the next available secondary record if more exist
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ContinueProcessingNextSecondaryRecord(["Start Step"])
E_ContinueProcessingNextSecondaryRecord(["End Step"])
N_ContinueProcessingNextSecondaryRecord_Node0{"The system checks for additional
secondary records"}:::decision N_ContinueProcessingNextSecondaryRecord_Node0_action["The system should continue
processing the next available
secondary record if more exist"]:::main N_ContinueProcessingNextSecondaryRecord_Node0 -- Yes --> N_ContinueProcessingNextSecondaryRecord_Node0_action N_ContinueProcessingNextSecondaryRecord_Node0_action --> E_ContinueProcessingNextSecondaryRecord S_ContinueProcessingNextSecondaryRecord --> N_ContinueProcessingNextSecondaryRecord_Node0 N_ContinueProcessingNextSecondaryRecord_Node0 -- No --> E_ContinueProcessingNextSecondaryRecord
secondary records"}:::decision N_ContinueProcessingNextSecondaryRecord_Node0_action["The system should continue
processing the next available
secondary record if more exist"]:::main N_ContinueProcessingNextSecondaryRecord_Node0 -- Yes --> N_ContinueProcessingNextSecondaryRecord_Node0_action N_ContinueProcessingNextSecondaryRecord_Node0_action --> E_ContinueProcessingNextSecondaryRecord S_ContinueProcessingNextSecondaryRecord --> N_ContinueProcessingNextSecondaryRecord_Node0 N_ContinueProcessingNextSecondaryRecord_Node0 -- No --> E_ContinueProcessingNextSecondaryRecord
File: GCX016.cbl
GIVEN:
One secondary record has been processed completely
WHEN:
The system checks for additional secondary records
THEN:
The system should continue processing the next available secondary record if more exist
β Consolidated Acceptance Criteria
- The system completes secondary record processing → the system should finalize the extraction of payer of freight and supplemental information for return to calling process
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CompleteSecondaryRecordProcessing(["Start Step"])
E_CompleteSecondaryRecordProcessing(["End Step"])
N_CompleteSecondaryRecordProcessing_Node0{"The system completes secondary
record processing"}:::decision N_CompleteSecondaryRecordProcessing_Node0_action["The system should finalize the
extraction of payer of freight and
supplemental information for return
to calling process"]:::main N_CompleteSecondaryRecordProcessing_Node0 -- Yes --> N_CompleteSecondaryRecordProcessing_Node0_action N_CompleteSecondaryRecordProcessing_Node0_action --> E_CompleteSecondaryRecordProcessing S_CompleteSecondaryRecordProcessing --> N_CompleteSecondaryRecordProcessing_Node0 N_CompleteSecondaryRecordProcessing_Node0 -- No --> E_CompleteSecondaryRecordProcessing
record processing"}:::decision N_CompleteSecondaryRecordProcessing_Node0_action["The system should finalize the
extraction of payer of freight and
supplemental information for return
to calling process"]:::main N_CompleteSecondaryRecordProcessing_Node0 -- Yes --> N_CompleteSecondaryRecordProcessing_Node0_action N_CompleteSecondaryRecordProcessing_Node0_action --> E_CompleteSecondaryRecordProcessing S_CompleteSecondaryRecordProcessing --> N_CompleteSecondaryRecordProcessing_Node0 N_CompleteSecondaryRecordProcessing_Node0 -- No --> E_CompleteSecondaryRecordProcessing
File: GCX016.cbl
GIVEN:
All available secondary records have been processed
WHEN:
The system completes secondary record processing
THEN:
- The system should finalize the extraction of payer of freight
- Supplemental information for return to calling process
β Consolidated Acceptance Criteria
- No secondary cargo records are available in GCSA2RT segments → the system should continue processing without payer of freight information and proceed to the next step
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_NoSecondaryRecordsAvailableContinue(["Start Step"])
E_NoSecondaryRecordsAvailableContinue(["End Step"])
N_NoSecondaryRecordsAvailableContinue_Node0{"No secondary cargo records are
available in GCSA2RT segments"}:::decision N_NoSecondaryRecordsAvailableContinue_Node0_action["The system should continue
processing without payer of freight
information and proceed to the next
step"]:::main N_NoSecondaryRecordsAvailableContinue_Node0 -- Yes --> N_NoSecondaryRecordsAvailableContinue_Node0_action N_NoSecondaryRecordsAvailableContinue_Node0_action --> E_NoSecondaryRecordsAvailableContinue S_NoSecondaryRecordsAvailableContinue --> N_NoSecondaryRecordsAvailableContinue_Node0 N_NoSecondaryRecordsAvailableContinue_Node0 -- No --> E_NoSecondaryRecordsAvailableContinue
available in GCSA2RT segments"}:::decision N_NoSecondaryRecordsAvailableContinue_Node0_action["The system should continue
processing without payer of freight
information and proceed to the next
step"]:::main N_NoSecondaryRecordsAvailableContinue_Node0 -- Yes --> N_NoSecondaryRecordsAvailableContinue_Node0_action N_NoSecondaryRecordsAvailableContinue_Node0_action --> E_NoSecondaryRecordsAvailableContinue S_NoSecondaryRecordsAvailableContinue --> N_NoSecondaryRecordsAvailableContinue_Node0 N_NoSecondaryRecordsAvailableContinue_Node0 -- No --> E_NoSecondaryRecordsAvailableContinue
File: GCX016.cbl
GIVEN:
A cargo record requires secondary information processing
WHEN:
No secondary cargo records are available in GCSA2RT segments
THEN:
- The system should continue processing without payer of freight information
- Proceed to the next step
β Consolidated Acceptance Criteria
- The message type is ERROR or ARRCANL (arrival cancellation) → the system routes the message to both 'IN' destination and 'USERR' destination for error processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RoutetoErrorDestinations(["Start Step"])
E_RoutetoErrorDestinations(["End Step"])
N_RoutetoErrorDestinations_Node0{"The message type is ERROR or
ARRCANL arrival cancellation"}:::decision N_RoutetoErrorDestinations_Node0_action["The system routes the message to
both IN destination and USERR
destination for error processing"]:::exclusion N_RoutetoErrorDestinations_Node0 -- Yes -->|Alternative| N_RoutetoErrorDestinations_Node0_action N_RoutetoErrorDestinations_Node0_action --> E_RoutetoErrorDestinations S_RoutetoErrorDestinations --> N_RoutetoErrorDestinations_Node0 N_RoutetoErrorDestinations_Node0 -- No --> E_RoutetoErrorDestinations
ARRCANL arrival cancellation"}:::decision N_RoutetoErrorDestinations_Node0_action["The system routes the message to
both IN destination and USERR
destination for error processing"]:::exclusion N_RoutetoErrorDestinations_Node0 -- Yes -->|Alternative| N_RoutetoErrorDestinations_Node0_action N_RoutetoErrorDestinations_Node0_action --> E_RoutetoErrorDestinations S_RoutetoErrorDestinations --> N_RoutetoErrorDestinations_Node0 N_RoutetoErrorDestinations_Node0 -- No --> E_RoutetoErrorDestinations
File: GCX016.cbl
GIVEN:
A message is ready for routing and has been classified as an error message type
WHEN:
The message type is ERROR or ARRCANL (arrival cancellation)
THEN:
The system routes the message to both 'IN' destination and 'USERR' destination for error processing
β Consolidated Acceptance Criteria
- The message type is INFO → the system routes the message to 'IN' destination and station-specific Merlin IDs for information distribution
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RoutetoInfoUsers(["Start Step"])
E_RoutetoInfoUsers(["End Step"])
N_RoutetoInfoUsers_Node0{"The message type is INFO"}:::decision
N_RoutetoInfoUsers_Node0_action["The system routes the message to IN
destination and station-specific
Merlin IDs for information
distribution"]:::main N_RoutetoInfoUsers_Node0 -- Yes --> N_RoutetoInfoUsers_Node0_action N_RoutetoInfoUsers_Node0_action --> E_RoutetoInfoUsers S_RoutetoInfoUsers --> N_RoutetoInfoUsers_Node0 N_RoutetoInfoUsers_Node0 -- No --> E_RoutetoInfoUsers
destination and station-specific
Merlin IDs for information
distribution"]:::main N_RoutetoInfoUsers_Node0 -- Yes --> N_RoutetoInfoUsers_Node0_action N_RoutetoInfoUsers_Node0_action --> E_RoutetoInfoUsers S_RoutetoInfoUsers --> N_RoutetoInfoUsers_Node0 N_RoutetoInfoUsers_Node0 -- No --> E_RoutetoInfoUsers
File: GCX016.cbl
GIVEN:
A message is ready for routing and has been classified as an information message
WHEN:
The message type is INFO
THEN:
- The system routes the message to 'in' destination
- Station-specific merlin ids for information distribution
β Consolidated Acceptance Criteria
- The message type is UNRLSE (unrelease) → the system routes the message to default Merlin IDs and cancel-specific Merlin IDs for unrelease processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RoutetoUnreleaseBaskets(["Start Step"])
E_RoutetoUnreleaseBaskets(["End Step"])
N_RoutetoUnreleaseBaskets_Node0{"The message type is UNRLSE
unrelease"}:::decision N_RoutetoUnreleaseBaskets_Node0_action["The system routes the message to
default Merlin IDs and
cancel-specific Merlin IDs for
unrelease processing"]:::main N_RoutetoUnreleaseBaskets_Node0 -- Yes --> N_RoutetoUnreleaseBaskets_Node0_action N_RoutetoUnreleaseBaskets_Node0_action --> E_RoutetoUnreleaseBaskets S_RoutetoUnreleaseBaskets --> N_RoutetoUnreleaseBaskets_Node0 N_RoutetoUnreleaseBaskets_Node0 -- No --> E_RoutetoUnreleaseBaskets
unrelease"}:::decision N_RoutetoUnreleaseBaskets_Node0_action["The system routes the message to
default Merlin IDs and
cancel-specific Merlin IDs for
unrelease processing"]:::main N_RoutetoUnreleaseBaskets_Node0 -- Yes --> N_RoutetoUnreleaseBaskets_Node0_action N_RoutetoUnreleaseBaskets_Node0_action --> E_RoutetoUnreleaseBaskets S_RoutetoUnreleaseBaskets --> N_RoutetoUnreleaseBaskets_Node0 N_RoutetoUnreleaseBaskets_Node0 -- No --> E_RoutetoUnreleaseBaskets
File: GCX016.cbl
GIVEN:
A message is ready for routing and has been classified as an unrelease message
WHEN:
The message type is UNRLSE (unrelease)
THEN:
- The system routes the message to default merlin ids
- Cancel-specific merlin ids for unrelease processing
β Consolidated Acceptance Criteria
- The message type is RLSE (release) → the system routes the message only to station-specific Merlin IDs for release notification
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RoutetoReleaseUsers(["Start Step"])
E_RoutetoReleaseUsers(["End Step"])
N_RoutetoReleaseUsers_Node0{"The message type is RLSE release"}:::decision
N_RoutetoReleaseUsers_Node0_action["The system routes the message only
to station-specific Merlin IDs for
release notification"]:::main N_RoutetoReleaseUsers_Node0 -- Yes --> N_RoutetoReleaseUsers_Node0_action N_RoutetoReleaseUsers_Node0_action --> E_RoutetoReleaseUsers S_RoutetoReleaseUsers --> N_RoutetoReleaseUsers_Node0 N_RoutetoReleaseUsers_Node0 -- No --> E_RoutetoReleaseUsers
to station-specific Merlin IDs for
release notification"]:::main N_RoutetoReleaseUsers_Node0 -- Yes --> N_RoutetoReleaseUsers_Node0_action N_RoutetoReleaseUsers_Node0_action --> E_RoutetoReleaseUsers S_RoutetoReleaseUsers --> N_RoutetoReleaseUsers_Node0 N_RoutetoReleaseUsers_Node0 -- No --> E_RoutetoReleaseUsers
File: GCX016.cbl
GIVEN:
A message is ready for routing and has been classified as a release message
WHEN:
The message type is RLSE (release)
THEN:
The system routes the message only to station-specific Merlin IDs for release notification
β Consolidated Acceptance Criteria
- The container type is identified as a specific container type requiring special handling → the system routes the message to USEXP baskets for specialized container export processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RoutetoUSEXPBaskets(["Start Step"])
E_RoutetoUSEXPBaskets(["End Step"])
N_RoutetoUSEXPBaskets_Node0{"The container type is identified as
a specific container type requiring
special handling"}:::decision N_RoutetoUSEXPBaskets_Node0_action["The system routes the message to
USEXP baskets for specialized
container export processing"]:::main N_RoutetoUSEXPBaskets_Node0 -- Yes --> N_RoutetoUSEXPBaskets_Node0_action N_RoutetoUSEXPBaskets_Node0_action --> E_RoutetoUSEXPBaskets S_RoutetoUSEXPBaskets --> N_RoutetoUSEXPBaskets_Node0 N_RoutetoUSEXPBaskets_Node0 -- No --> E_RoutetoUSEXPBaskets
a specific container type requiring
special handling"}:::decision N_RoutetoUSEXPBaskets_Node0_action["The system routes the message to
USEXP baskets for specialized
container export processing"]:::main N_RoutetoUSEXPBaskets_Node0 -- Yes --> N_RoutetoUSEXPBaskets_Node0_action N_RoutetoUSEXPBaskets_Node0_action --> E_RoutetoUSEXPBaskets S_RoutetoUSEXPBaskets --> N_RoutetoUSEXPBaskets_Node0 N_RoutetoUSEXPBaskets_Node0 -- No --> E_RoutetoUSEXPBaskets
File: GCX016.cbl
GIVEN:
An export message has been validated and container type has been determined
WHEN:
The container type is identified as a specific container type requiring special handling
THEN:
The system routes the message to USEXP baskets for specialized container export processing
β Consolidated Acceptance Criteria
- The container type is not a specific container type requiring special handling → the system routes the message through standard export processing channels
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RoutetoStandardExport(["Start Step"])
E_RoutetoStandardExport(["End Step"])
N_RoutetoStandardExport_Node0{"The container type is not a
specific container type requiring
special handling"}:::decision N_RoutetoStandardExport_Node0_action["The system routes the message
through standard export processing
channels"]:::main N_RoutetoStandardExport_Node0 -- Yes --> N_RoutetoStandardExport_Node0_action N_RoutetoStandardExport_Node0_action --> E_RoutetoStandardExport S_RoutetoStandardExport --> N_RoutetoStandardExport_Node0 N_RoutetoStandardExport_Node0 -- No --> E_RoutetoStandardExport
specific container type requiring
special handling"}:::decision N_RoutetoStandardExport_Node0_action["The system routes the message
through standard export processing
channels"]:::main N_RoutetoStandardExport_Node0 -- Yes --> N_RoutetoStandardExport_Node0_action N_RoutetoStandardExport_Node0_action --> E_RoutetoStandardExport S_RoutetoStandardExport --> N_RoutetoStandardExport_Node0 N_RoutetoStandardExport_Node0 -- No --> E_RoutetoStandardExport
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
An export message has been validated and container type has been determined
WHEN:
The container type is not a specific container type requiring special handling
THEN:
The system routes the message through standard export processing channels
β Consolidated Acceptance Criteria
- The system performs user validation for the destination → the system checks if the destination user is valid and authorized to receive this message type
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ValidUserCheck(["Start Step"])
E_ValidUserCheck(["End Step"])
N_ValidUserCheck_Node0{"The system performs user validation
for the destination"}:::decision N_ValidUserCheck_Node0_action["The system checks if the
destination user is valid and
authorized to receive this message
type"]:::main N_ValidUserCheck_Node0 -- Yes --> N_ValidUserCheck_Node0_action N_ValidUserCheck_Node0_action --> E_ValidUserCheck S_ValidUserCheck --> N_ValidUserCheck_Node0 N_ValidUserCheck_Node0 -- No --> E_ValidUserCheck
for the destination"}:::decision N_ValidUserCheck_Node0_action["The system checks if the
destination user is valid and
authorized to receive this message
type"]:::main N_ValidUserCheck_Node0 -- Yes --> N_ValidUserCheck_Node0_action N_ValidUserCheck_Node0_action --> E_ValidUserCheck S_ValidUserCheck --> N_ValidUserCheck_Node0 N_ValidUserCheck_Node0 -- No --> E_ValidUserCheck
File: GCX016.cbl
GIVEN:
A message has been routed to its initial destination based on message type
WHEN:
The system performs user validation for the destination
THEN:
- The system checks if the destination user is valid
- Authorized to receive this message type
β Consolidated Acceptance Criteria
- The destination user validation fails → the system reroutes the message to default users to ensure proper message delivery
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ReroutetoDefaultUsers(["Start Step"])
E_ReroutetoDefaultUsers(["End Step"])
N_ReroutetoDefaultUsers_Node0{"The destination user validation
fails"}:::decision N_ReroutetoDefaultUsers_Node0_action["The system reroutes the message to
default users to ensure proper
message delivery"]:::main N_ReroutetoDefaultUsers_Node0 -- Yes --> N_ReroutetoDefaultUsers_Node0_action N_ReroutetoDefaultUsers_Node0_action --> E_ReroutetoDefaultUsers S_ReroutetoDefaultUsers --> N_ReroutetoDefaultUsers_Node0 N_ReroutetoDefaultUsers_Node0 -- No --> E_ReroutetoDefaultUsers
fails"}:::decision N_ReroutetoDefaultUsers_Node0_action["The system reroutes the message to
default users to ensure proper
message delivery"]:::main N_ReroutetoDefaultUsers_Node0 -- Yes --> N_ReroutetoDefaultUsers_Node0_action N_ReroutetoDefaultUsers_Node0_action --> E_ReroutetoDefaultUsers S_ReroutetoDefaultUsers --> N_ReroutetoDefaultUsers_Node0 N_ReroutetoDefaultUsers_Node0 -- No --> E_ReroutetoDefaultUsers
File: GCX016.cbl
GIVEN:
A message destination has been validated and found to be invalid or unauthorized
WHEN:
The destination user validation fails
THEN:
The system reroutes the message to default users to ensure proper message delivery
β Consolidated Acceptance Criteria
- All routing validation and formatting is complete → the system sends the message to its final destination through the appropriate messaging channel
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SendtoDestination(["Start Step"])
E_SendtoDestination(["End Step"])
N_SendtoDestination_Node0{"All routing validation and
formatting is complete"}:::decision N_SendtoDestination_Node0_action["The system sends the message to its
final destination through the
appropriate messaging channel"]:::main N_SendtoDestination_Node0 -- Yes --> N_SendtoDestination_Node0_action N_SendtoDestination_Node0_action --> E_SendtoDestination S_SendtoDestination --> N_SendtoDestination_Node0 N_SendtoDestination_Node0 -- No --> E_SendtoDestination
formatting is complete"}:::decision N_SendtoDestination_Node0_action["The system sends the message to its
final destination through the
appropriate messaging channel"]:::main N_SendtoDestination_Node0 -- Yes --> N_SendtoDestination_Node0_action N_SendtoDestination_Node0_action --> E_SendtoDestination S_SendtoDestination --> N_SendtoDestination_Node0 N_SendtoDestination_Node0 -- No --> E_SendtoDestination
File: GCX016.cbl
GIVEN:
A message has been fully formatted with keywords and subject line
WHEN:
- All routing validation
- Formatting is complete
THEN:
The system sends the message to its final destination through the appropriate messaging channel
β Consolidated Acceptance Criteria
- The message delivery is complete → the system logs the routing action including message type, destination, and delivery status for audit purposes
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogRoutingAction(["Start Step"])
E_LogRoutingAction(["End Step"])
N_LogRoutingAction_Node0{"The message delivery is complete"}:::decision
N_LogRoutingAction_Node0_action["The system logs the routing action
including message type, destination,
and delivery status for audit
purposes"]:::main N_LogRoutingAction_Node0 -- Yes --> N_LogRoutingAction_Node0_action N_LogRoutingAction_Node0_action --> E_LogRoutingAction S_LogRoutingAction --> N_LogRoutingAction_Node0 N_LogRoutingAction_Node0 -- No --> E_LogRoutingAction
including message type, destination,
and delivery status for audit
purposes"]:::main N_LogRoutingAction_Node0 -- Yes --> N_LogRoutingAction_Node0_action N_LogRoutingAction_Node0_action --> E_LogRoutingAction S_LogRoutingAction --> N_LogRoutingAction_Node0 N_LogRoutingAction_Node0 -- No --> E_LogRoutingAction
File: GCX016.cbl
GIVEN:
A message has been successfully sent to its destination
WHEN:
The message delivery is complete
THEN:
The system logs the routing action including message type, destination, and delivery status for audit purposes
β Consolidated Acceptance Criteria
- The system checks the destination user ID validity → the system determines if the user ID is valid or invalid for message routing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CheckDestinationUserID(["Start Step"])
E_CheckDestinationUserID(["End Step"])
N_CheckDestinationUserID_Node0{"The system checks the destination
user ID validity"}:::decision N_CheckDestinationUserID_Node0_action["The system determines if the user
ID is valid or invalid for message
routing"]:::main N_CheckDestinationUserID_Node0 -- Yes --> N_CheckDestinationUserID_Node0_action N_CheckDestinationUserID_Node0_action --> E_CheckDestinationUserID S_CheckDestinationUserID --> N_CheckDestinationUserID_Node0 N_CheckDestinationUserID_Node0 -- No --> E_CheckDestinationUserID
user ID validity"}:::decision N_CheckDestinationUserID_Node0_action["The system determines if the user
ID is valid or invalid for message
routing"]:::main N_CheckDestinationUserID_Node0 -- Yes --> N_CheckDestinationUserID_Node0_action N_CheckDestinationUserID_Node0_action --> E_CheckDestinationUserID S_CheckDestinationUserID --> N_CheckDestinationUserID_Node0 N_CheckDestinationUserID_Node0 -- No --> E_CheckDestinationUserID
File: GCX016.cbl
GIVEN:
A message is ready for routing with a destination user ID
WHEN:
The system checks the destination user ID validity
THEN:
The system determines if the user ID is valid or invalid for message routing
β Consolidated Acceptance Criteria
- The user ID validation passes → the message is routed to the original specified user without modification
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RoutetoOriginalUser(["Start Step"])
E_RoutetoOriginalUser(["End Step"])
N_RoutetoOriginalUser_Node0{"The user ID validation passes"}:::decision
N_RoutetoOriginalUser_Node0_action["The message is routed to the
original specified user without
modification"]:::main N_RoutetoOriginalUser_Node0 -- Yes --> N_RoutetoOriginalUser_Node0_action N_RoutetoOriginalUser_Node0_action --> E_RoutetoOriginalUser S_RoutetoOriginalUser --> N_RoutetoOriginalUser_Node0 N_RoutetoOriginalUser_Node0 -- No --> E_RoutetoOriginalUser
original specified user without
modification"]:::main N_RoutetoOriginalUser_Node0 -- Yes --> N_RoutetoOriginalUser_Node0_action N_RoutetoOriginalUser_Node0_action --> E_RoutetoOriginalUser S_RoutetoOriginalUser --> N_RoutetoOriginalUser_Node0 N_RoutetoOriginalUser_Node0 -- No --> E_RoutetoOriginalUser
File: GCX016.cbl
GIVEN:
A message with a valid destination user ID
WHEN:
The user ID validation passes
THEN:
The message is routed to the original specified user without modification
β Consolidated Acceptance Criteria
- The system needs to identify a default user → the system determines the default user based on the message type (Error, Info, Release, or Export)
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IdentifyDefaultUserforMessageType(["Start Step"])
E_IdentifyDefaultUserforMessageType(["End Step"])
N_IdentifyDefaultUserforMessageType_Node0{"The system needs to identify a
default user"}:::decision N_IdentifyDefaultUserforMessageType_Node0_action["The system determines the default
user based on the message type
Error, Info, Release, or Export"]:::main N_IdentifyDefaultUserforMessageType_Node0 -- Yes --> N_IdentifyDefaultUserforMessageType_Node0_action N_IdentifyDefaultUserforMessageType_Node0_action --> E_IdentifyDefaultUserforMessageType S_IdentifyDefaultUserforMessageType --> N_IdentifyDefaultUserforMessageType_Node0 N_IdentifyDefaultUserforMessageType_Node0 -- No --> E_IdentifyDefaultUserforMessageType
default user"}:::decision N_IdentifyDefaultUserforMessageType_Node0_action["The system determines the default
user based on the message type
Error, Info, Release, or Export"]:::main N_IdentifyDefaultUserforMessageType_Node0 -- Yes --> N_IdentifyDefaultUserforMessageType_Node0_action N_IdentifyDefaultUserforMessageType_Node0_action --> E_IdentifyDefaultUserforMessageType S_IdentifyDefaultUserforMessageType --> N_IdentifyDefaultUserforMessageType_Node0 N_IdentifyDefaultUserforMessageType_Node0 -- No --> E_IdentifyDefaultUserforMessageType
File: GCX016.cbl
GIVEN:
A message with an invalid destination user ID
WHEN:
The system needs to identify a default user
THEN:
The system determines the default user based on the message type (Error, Info, Release, or Export)
β Consolidated Acceptance Criteria
- The message type is identified as Info → the message is routed to the default info user
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RoutetoDefaultInfoUser(["Start Step"])
E_RoutetoDefaultInfoUser(["End Step"])
N_RoutetoDefaultInfoUser_Node0{"The message type is identified as
Info"}:::decision N_RoutetoDefaultInfoUser_Node0_action["The message is routed to the
default info user"]:::main N_RoutetoDefaultInfoUser_Node0 -- Yes --> N_RoutetoDefaultInfoUser_Node0_action N_RoutetoDefaultInfoUser_Node0_action --> E_RoutetoDefaultInfoUser S_RoutetoDefaultInfoUser --> N_RoutetoDefaultInfoUser_Node0 N_RoutetoDefaultInfoUser_Node0 -- No --> E_RoutetoDefaultInfoUser
Info"}:::decision N_RoutetoDefaultInfoUser_Node0_action["The message is routed to the
default info user"]:::main N_RoutetoDefaultInfoUser_Node0 -- Yes --> N_RoutetoDefaultInfoUser_Node0_action N_RoutetoDefaultInfoUser_Node0_action --> E_RoutetoDefaultInfoUser S_RoutetoDefaultInfoUser --> N_RoutetoDefaultInfoUser_Node0 N_RoutetoDefaultInfoUser_Node0 -- No --> E_RoutetoDefaultInfoUser
File: GCX016.cbl
GIVEN:
An informational message with an invalid destination user ID
WHEN:
The message type is identified as Info
THEN:
The message is routed to the default info user
β Consolidated Acceptance Criteria
- The message type is identified as Release → the message is routed to the default release user
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RoutetoDefaultReleaseUser(["Start Step"])
E_RoutetoDefaultReleaseUser(["End Step"])
N_RoutetoDefaultReleaseUser_Node0{"The message type is identified as
Release"}:::decision N_RoutetoDefaultReleaseUser_Node0_action["The message is routed to the
default release user"]:::main N_RoutetoDefaultReleaseUser_Node0 -- Yes --> N_RoutetoDefaultReleaseUser_Node0_action N_RoutetoDefaultReleaseUser_Node0_action --> E_RoutetoDefaultReleaseUser S_RoutetoDefaultReleaseUser --> N_RoutetoDefaultReleaseUser_Node0 N_RoutetoDefaultReleaseUser_Node0 -- No --> E_RoutetoDefaultReleaseUser
Release"}:::decision N_RoutetoDefaultReleaseUser_Node0_action["The message is routed to the
default release user"]:::main N_RoutetoDefaultReleaseUser_Node0 -- Yes --> N_RoutetoDefaultReleaseUser_Node0_action N_RoutetoDefaultReleaseUser_Node0_action --> E_RoutetoDefaultReleaseUser S_RoutetoDefaultReleaseUser --> N_RoutetoDefaultReleaseUser_Node0 N_RoutetoDefaultReleaseUser_Node0 -- No --> E_RoutetoDefaultReleaseUser
File: GCX016.cbl
GIVEN:
A release message with an invalid destination user ID
WHEN:
The message type is identified as Release
THEN:
The message is routed to the default release user
β Consolidated Acceptance Criteria
- The message type is identified as Export → the message is routed to the default export user
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RoutetoDefaultExportUser(["Start Step"])
E_RoutetoDefaultExportUser(["End Step"])
N_RoutetoDefaultExportUser_Node0{"The message type is identified as
Export"}:::decision N_RoutetoDefaultExportUser_Node0_action["The message is routed to the
default export user"]:::main N_RoutetoDefaultExportUser_Node0 -- Yes --> N_RoutetoDefaultExportUser_Node0_action N_RoutetoDefaultExportUser_Node0_action --> E_RoutetoDefaultExportUser S_RoutetoDefaultExportUser --> N_RoutetoDefaultExportUser_Node0 N_RoutetoDefaultExportUser_Node0 -- No --> E_RoutetoDefaultExportUser
Export"}:::decision N_RoutetoDefaultExportUser_Node0_action["The message is routed to the
default export user"]:::main N_RoutetoDefaultExportUser_Node0 -- Yes --> N_RoutetoDefaultExportUser_Node0_action N_RoutetoDefaultExportUser_Node0_action --> E_RoutetoDefaultExportUser S_RoutetoDefaultExportUser --> N_RoutetoDefaultExportUser_Node0 N_RoutetoDefaultExportUser_Node0 -- No --> E_RoutetoDefaultExportUser
File: GCX016.cbl
GIVEN:
An export message with an invalid destination user ID
WHEN:
The message type is identified as Export
THEN:
The message is routed to the default export user
β Consolidated Acceptance Criteria
- The rerouting to default user is completed → a notification is generated indicating the invalid user ID and the rerouting action taken
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GenerateInvalidUserNotification(["Start Step"])
E_GenerateInvalidUserNotification(["End Step"])
N_GenerateInvalidUserNotification_Node0{"The rerouting to default user is
completed"}:::decision N_GenerateInvalidUserNotification_Node0_action["A notification is generated
indicating the invalid user ID and
the rerouting action taken"]:::main N_GenerateInvalidUserNotification_Node0 -- Yes --> N_GenerateInvalidUserNotification_Node0_action N_GenerateInvalidUserNotification_Node0_action --> E_GenerateInvalidUserNotification S_GenerateInvalidUserNotification --> N_GenerateInvalidUserNotification_Node0 N_GenerateInvalidUserNotification_Node0 -- No --> E_GenerateInvalidUserNotification
completed"}:::decision N_GenerateInvalidUserNotification_Node0_action["A notification is generated
indicating the invalid user ID and
the rerouting action taken"]:::main N_GenerateInvalidUserNotification_Node0 -- Yes --> N_GenerateInvalidUserNotification_Node0_action N_GenerateInvalidUserNotification_Node0_action --> E_GenerateInvalidUserNotification S_GenerateInvalidUserNotification --> N_GenerateInvalidUserNotification_Node0 N_GenerateInvalidUserNotification_Node0 -- No --> E_GenerateInvalidUserNotification
File: GCX016.cbl
GIVEN:
A message has been rerouted due to invalid user ID
WHEN:
The rerouting to default user is completed
THEN:
- A notification is generated indicating the invalid user id
- The rerouting action taken
β Consolidated Acceptance Criteria
- The invalid user notification is generated → the rerouting action is logged with original user ID, default user ID, message type, and timestamp
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogReroutingAction(["Start Step"])
E_LogReroutingAction(["End Step"])
N_LogReroutingAction_Node0{"The invalid user notification is
generated"}:::decision N_LogReroutingAction_Node0_action["The rerouting action is logged with
original user ID, default user ID,
message type, and timestamp"]:::exclusion N_LogReroutingAction_Node0 -- Yes -->|Alternative| N_LogReroutingAction_Node0_action N_LogReroutingAction_Node0_action --> E_LogReroutingAction S_LogReroutingAction --> N_LogReroutingAction_Node0 N_LogReroutingAction_Node0 -- No --> E_LogReroutingAction
generated"}:::decision N_LogReroutingAction_Node0_action["The rerouting action is logged with
original user ID, default user ID,
message type, and timestamp"]:::exclusion N_LogReroutingAction_Node0 -- Yes -->|Alternative| N_LogReroutingAction_Node0_action N_LogReroutingAction_Node0_action --> E_LogReroutingAction S_LogReroutingAction --> N_LogReroutingAction_Node0 N_LogReroutingAction_Node0 -- No --> E_LogReroutingAction
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
A message has been rerouted from invalid user to default user
WHEN:
The invalid user notification is generated
THEN:
The rerouting action is logged with original user ID, default user ID, message type, and timestamp
β Consolidated Acceptance Criteria
- The system sends the message to the new destination → the message is delivered to the default user with all original content intact
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SendMessagetoNewDestination(["Start Step"])
E_SendMessagetoNewDestination(["End Step"])
N_SendMessagetoNewDestination_Node0{"The system sends the message to the
new destination"}:::decision N_SendMessagetoNewDestination_Node0_action["The message is delivered to the
default user with all original
content intact"]:::main N_SendMessagetoNewDestination_Node0 -- Yes --> N_SendMessagetoNewDestination_Node0_action N_SendMessagetoNewDestination_Node0_action --> E_SendMessagetoNewDestination S_SendMessagetoNewDestination --> N_SendMessagetoNewDestination_Node0 N_SendMessagetoNewDestination_Node0 -- No --> E_SendMessagetoNewDestination
new destination"}:::decision N_SendMessagetoNewDestination_Node0_action["The message is delivered to the
default user with all original
content intact"]:::main N_SendMessagetoNewDestination_Node0 -- Yes --> N_SendMessagetoNewDestination_Node0_action N_SendMessagetoNewDestination_Node0_action --> E_SendMessagetoNewDestination S_SendMessagetoNewDestination --> N_SendMessagetoNewDestination_Node0 N_SendMessagetoNewDestination_Node0 -- No --> E_SendMessagetoNewDestination
File: GCX016.cbl
GIVEN:
Message routing history has been updated with rerouting details
WHEN:
The system sends the message to the new destination
THEN:
The message is delivered to the default user with all original content intact
β Consolidated Acceptance Criteria
- The system begins preparing the log message → all message fields are cleared and initialized to default values
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_InitializeLogMessageFields(["Start Step"])
E_InitializeLogMessageFields(["End Step"])
N_InitializeLogMessageFields_Node0{"The system begins preparing the log
message"}:::decision N_InitializeLogMessageFields_Node0_action["All message fields are cleared and
initialized to default values"]:::main N_InitializeLogMessageFields_Node0 -- Yes --> N_InitializeLogMessageFields_Node0_action N_InitializeLogMessageFields_Node0_action --> E_InitializeLogMessageFields S_InitializeLogMessageFields --> N_InitializeLogMessageFields_Node0 N_InitializeLogMessageFields_Node0 -- No --> E_InitializeLogMessageFields
message"}:::decision N_InitializeLogMessageFields_Node0_action["All message fields are cleared and
initialized to default values"]:::main N_InitializeLogMessageFields_Node0 -- Yes --> N_InitializeLogMessageFields_Node0_action N_InitializeLogMessageFields_Node0_action --> E_InitializeLogMessageFields S_InitializeLogMessageFields --> N_InitializeLogMessageFields_Node0 N_InitializeLogMessageFields_Node0 -- No --> E_InitializeLogMessageFields
File: GCX016.cbl
GIVEN:
A cargo logging operation is initiated
WHEN:
The system begins preparing the log message
THEN:
- All message fields are cleared
- Initialized to default values
β Consolidated Acceptance Criteria
- Transaction type needs to be identified → the appropriate transaction type code is set based on the processing operation
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetTransactionType(["Start Step"])
E_SetTransactionType(["End Step"])
N_SetTransactionType_Node0{"Transaction type needs to be
identified"}:::decision N_SetTransactionType_Node0_action["The appropriate transaction type
code is set based on the processing
operation"]:::main N_SetTransactionType_Node0 -- Yes --> N_SetTransactionType_Node0_action N_SetTransactionType_Node0_action --> E_SetTransactionType S_SetTransactionType --> N_SetTransactionType_Node0 N_SetTransactionType_Node0 -- No --> E_SetTransactionType
identified"}:::decision N_SetTransactionType_Node0_action["The appropriate transaction type
code is set based on the processing
operation"]:::main N_SetTransactionType_Node0 -- Yes --> N_SetTransactionType_Node0_action N_SetTransactionType_Node0_action --> E_SetTransactionType S_SetTransactionType --> N_SetTransactionType_Node0 N_SetTransactionType_Node0 -- No --> E_SetTransactionType
File: GCX016.cbl
GIVEN:
A cargo processing operation is being logged
WHEN:
Transaction type needs to be identified
THEN:
The appropriate transaction type code is set based on the processing operation
β Consolidated Acceptance Criteria
- Audit trail data is being prepared → complete audit trail information including references and status is set in the log message
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetAuditTrailData(["Start Step"])
E_SetAuditTrailData(["End Step"])
N_SetAuditTrailData_Node0{"Audit trail data is being prepared"}:::decision
N_SetAuditTrailData_Node0_action["Complete audit trail information
including references and status is
set in the log message"]:::main N_SetAuditTrailData_Node0 -- Yes --> N_SetAuditTrailData_Node0_action N_SetAuditTrailData_Node0_action --> E_SetAuditTrailData S_SetAuditTrailData --> N_SetAuditTrailData_Node0 N_SetAuditTrailData_Node0 -- No --> E_SetAuditTrailData
including references and status is
set in the log message"]:::main N_SetAuditTrailData_Node0 -- Yes --> N_SetAuditTrailData_Node0_action N_SetAuditTrailData_Node0_action --> E_SetAuditTrailData S_SetAuditTrailData --> N_SetAuditTrailData_Node0 N_SetAuditTrailData_Node0 -- No --> E_SetAuditTrailData
File: GCX016.cbl
GIVEN:
Cargo processing requires audit trail documentation
WHEN:
Audit trail data is being prepared
THEN:
- Complete audit trail information including references
- Status is set in the log message
β Consolidated Acceptance Criteria
- The final log message structure needs to be assembled → all components are properly structured into the required log message format
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_PrepareLogMessageStructure(["Start Step"])
E_PrepareLogMessageStructure(["End Step"])
N_PrepareLogMessageStructure_Node0{"The final log message structure
needs to be assembled"}:::decision N_PrepareLogMessageStructure_Node0_action["All components are properly
structured into the required log
message format"]:::main N_PrepareLogMessageStructure_Node0 -- Yes --> N_PrepareLogMessageStructure_Node0_action N_PrepareLogMessageStructure_Node0_action --> E_PrepareLogMessageStructure S_PrepareLogMessageStructure --> N_PrepareLogMessageStructure_Node0 N_PrepareLogMessageStructure_Node0 -- No --> E_PrepareLogMessageStructure
needs to be assembled"}:::decision N_PrepareLogMessageStructure_Node0_action["All components are properly
structured into the required log
message format"]:::main N_PrepareLogMessageStructure_Node0 -- Yes --> N_PrepareLogMessageStructure_Node0_action N_PrepareLogMessageStructure_Node0_action --> E_PrepareLogMessageStructure S_PrepareLogMessageStructure --> N_PrepareLogMessageStructure_Node0 N_PrepareLogMessageStructure_Node0 -- No --> E_PrepareLogMessageStructure
File: GCX016.cbl
GIVEN:
All log message components have been prepared
WHEN:
The final log message structure needs to be assembled
THEN:
All components are properly structured into the required log message format
β Consolidated Acceptance Criteria
- The transaction completion status is evaluated → system determines if logging was successful or if error handling is required
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogTransactionSuccessful(["Start Step"])
E_LogTransactionSuccessful(["End Step"])
N_LogTransactionSuccessful_Node0{"The transaction completion status
is evaluated"}:::decision N_LogTransactionSuccessful_Node0_action["System determines if logging was
successful or if error handling is
required"]:::main N_LogTransactionSuccessful_Node0 -- Yes --> N_LogTransactionSuccessful_Node0_action N_LogTransactionSuccessful_Node0_action --> E_LogTransactionSuccessful S_LogTransactionSuccessful --> N_LogTransactionSuccessful_Node0 N_LogTransactionSuccessful_Node0 -- No --> E_LogTransactionSuccessful
is evaluated"}:::decision N_LogTransactionSuccessful_Node0_action["System determines if logging was
successful or if error handling is
required"]:::main N_LogTransactionSuccessful_Node0 -- Yes --> N_LogTransactionSuccessful_Node0_action N_LogTransactionSuccessful_Node0_action --> E_LogTransactionSuccessful S_LogTransactionSuccessful --> N_LogTransactionSuccessful_Node0 N_LogTransactionSuccessful_Node0 -- No --> E_LogTransactionSuccessful
File: GCX016.cbl
GIVEN:
A logging transaction has been attempted
WHEN:
The transaction completion status is evaluated
THEN:
System determines if logging was successful or if error handling is required
β Consolidated Acceptance Criteria
- Audit trail status needs to be updated → audit trail status is updated to indicate successful logging completion
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UpdateAuditTrailStatus(["Start Step"])
E_UpdateAuditTrailStatus(["End Step"])
N_UpdateAuditTrailStatus_Node0{"Audit trail status needs to be
updated"}:::decision N_UpdateAuditTrailStatus_Node0_action["Audit trail status is updated to
indicate successful logging
completion"]:::main N_UpdateAuditTrailStatus_Node0 -- Yes --> N_UpdateAuditTrailStatus_Node0_action N_UpdateAuditTrailStatus_Node0_action --> E_UpdateAuditTrailStatus S_UpdateAuditTrailStatus --> N_UpdateAuditTrailStatus_Node0 N_UpdateAuditTrailStatus_Node0 -- No --> E_UpdateAuditTrailStatus
updated"}:::decision N_UpdateAuditTrailStatus_Node0_action["Audit trail status is updated to
indicate successful logging
completion"]:::main N_UpdateAuditTrailStatus_Node0 -- Yes --> N_UpdateAuditTrailStatus_Node0_action N_UpdateAuditTrailStatus_Node0_action --> E_UpdateAuditTrailStatus S_UpdateAuditTrailStatus --> N_UpdateAuditTrailStatus_Node0 N_UpdateAuditTrailStatus_Node0 -- No --> E_UpdateAuditTrailStatus
File: GCX016.cbl
GIVEN:
Cargo logging transaction completed successfully
WHEN:
Audit trail status needs to be updated
THEN:
Audit trail status is updated to indicate successful logging completion
β Consolidated Acceptance Criteria
- Car ID information is not available → set car ID field to spaces for report display
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetCarIDtoSpaces(["Start Step"])
E_SetCarIDtoSpaces(["End Step"])
N_SetCarIDtoSpaces_Node0{"Car ID information is not available"}:::decision
N_SetCarIDtoSpaces_Node0_action["Set car ID field to spaces for
report display"]:::main N_SetCarIDtoSpaces_Node0 -- Yes --> N_SetCarIDtoSpaces_Node0_action N_SetCarIDtoSpaces_Node0_action --> E_SetCarIDtoSpaces S_SetCarIDtoSpaces --> N_SetCarIDtoSpaces_Node0 N_SetCarIDtoSpaces_Node0 -- No --> E_SetCarIDtoSpaces
report display"]:::main N_SetCarIDtoSpaces_Node0 -- Yes --> N_SetCarIDtoSpaces_Node0_action N_SetCarIDtoSpaces_Node0_action --> E_SetCarIDtoSpaces S_SetCarIDtoSpaces --> N_SetCarIDtoSpaces_Node0 N_SetCarIDtoSpaces_Node0 -- No --> E_SetCarIDtoSpaces
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
A cargo record being processed for reporting
WHEN:
Car ID information is not available
THEN:
Set car ID field to spaces for report display
β Consolidated Acceptance Criteria
- Waybill number is not available → set waybill field to spaces for report display
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetWaybilltoSpaces(["Start Step"])
E_SetWaybilltoSpaces(["End Step"])
N_SetWaybilltoSpaces_Node0{"Waybill number is not available"}:::decision
N_SetWaybilltoSpaces_Node0_action["Set waybill field to spaces for
report display"]:::main N_SetWaybilltoSpaces_Node0 -- Yes --> N_SetWaybilltoSpaces_Node0_action N_SetWaybilltoSpaces_Node0_action --> E_SetWaybilltoSpaces S_SetWaybilltoSpaces --> N_SetWaybilltoSpaces_Node0 N_SetWaybilltoSpaces_Node0 -- No --> E_SetWaybilltoSpaces
report display"]:::main N_SetWaybilltoSpaces_Node0 -- Yes --> N_SetWaybilltoSpaces_Node0_action N_SetWaybilltoSpaces_Node0_action --> E_SetWaybilltoSpaces S_SetWaybilltoSpaces --> N_SetWaybilltoSpaces_Node0 N_SetWaybilltoSpaces_Node0 -- No --> E_SetWaybilltoSpaces
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
A cargo record being processed for reporting
WHEN:
Waybill number is not available
THEN:
Set waybill field to spaces for report display
β Consolidated Acceptance Criteria
- US-CCN is available in the system → format US-CCN with current cargo status for report display
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_FormatUSCCNwithStatus(["Start Step"])
E_FormatUSCCNwithStatus(["End Step"])
N_FormatUSCCNwithStatus_Node0{"US-CCN is available in the system"}:::decision
N_FormatUSCCNwithStatus_Node0_action["Format US-CCN with current cargo
status for report display"]:::main N_FormatUSCCNwithStatus_Node0 -- Yes --> N_FormatUSCCNwithStatus_Node0_action N_FormatUSCCNwithStatus_Node0_action --> E_FormatUSCCNwithStatus S_FormatUSCCNwithStatus --> N_FormatUSCCNwithStatus_Node0 N_FormatUSCCNwithStatus_Node0 -- No --> E_FormatUSCCNwithStatus
status for report display"]:::main N_FormatUSCCNwithStatus_Node0 -- Yes --> N_FormatUSCCNwithStatus_Node0_action N_FormatUSCCNwithStatus_Node0_action --> E_FormatUSCCNwithStatus S_FormatUSCCNwithStatus --> N_FormatUSCCNwithStatus_Node0 N_FormatUSCCNwithStatus_Node0 -- No --> E_FormatUSCCNwithStatus
File: GCX016.cbl
GIVEN:
A cargo record with US-CCN data
WHEN:
US-CCN is available in the system
THEN:
Format US-CCN with current cargo status for report display
β Consolidated Acceptance Criteria
- Cargo belongs to CPRS system → add CPRS-specific status description to the formatted output
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AddCPRSStatusDescription(["Start Step"])
E_AddCPRSStatusDescription(["End Step"])
N_AddCPRSStatusDescription_Node0{"Cargo belongs to CPRS system"}:::decision
N_AddCPRSStatusDescription_Node0_action["Add CPRS-specific status
description to the formatted output"]:::main N_AddCPRSStatusDescription_Node0 -- Yes --> N_AddCPRSStatusDescription_Node0_action N_AddCPRSStatusDescription_Node0_action --> E_AddCPRSStatusDescription S_AddCPRSStatusDescription --> N_AddCPRSStatusDescription_Node0 N_AddCPRSStatusDescription_Node0 -- No --> E_AddCPRSStatusDescription
description to the formatted output"]:::main N_AddCPRSStatusDescription_Node0 -- Yes --> N_AddCPRSStatusDescription_Node0_action N_AddCPRSStatusDescription_Node0_action --> E_AddCPRSStatusDescription S_AddCPRSStatusDescription --> N_AddCPRSStatusDescription_Node0 N_AddCPRSStatusDescription_Node0 -- No --> E_AddCPRSStatusDescription
File: GCX016.cbl
GIVEN:
A CPRS cargo record with status information
WHEN:
Cargo belongs to CPRS system
THEN:
Add CPRS-specific status description to the formatted output
β Consolidated Acceptance Criteria
- Cargo belongs to USCS system → add USCS-specific status description to the formatted output
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AddUSCSStatusDescription(["Start Step"])
E_AddUSCSStatusDescription(["End Step"])
N_AddUSCSStatusDescription_Node0{"Cargo belongs to USCS system"}:::decision
N_AddUSCSStatusDescription_Node0_action["Add USCS-specific status
description to the formatted output"]:::main N_AddUSCSStatusDescription_Node0 -- Yes --> N_AddUSCSStatusDescription_Node0_action N_AddUSCSStatusDescription_Node0_action --> E_AddUSCSStatusDescription S_AddUSCSStatusDescription --> N_AddUSCSStatusDescription_Node0 N_AddUSCSStatusDescription_Node0 -- No --> E_AddUSCSStatusDescription
description to the formatted output"]:::main N_AddUSCSStatusDescription_Node0 -- Yes --> N_AddUSCSStatusDescription_Node0_action N_AddUSCSStatusDescription_Node0_action --> E_AddUSCSStatusDescription S_AddUSCSStatusDescription --> N_AddUSCSStatusDescription_Node0 N_AddUSCSStatusDescription_Node0 -- No --> E_AddUSCSStatusDescription
File: GCX016.cbl
GIVEN:
A USCS cargo record with status information
WHEN:
Cargo belongs to USCS system
THEN:
Add USCS-specific status description to the formatted output
β Consolidated Acceptance Criteria
- US-CCN is not available → set US-CCN field to spaces for report display
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetUSCCNtoSpaces(["Start Step"])
E_SetUSCCNtoSpaces(["End Step"])
N_SetUSCCNtoSpaces_Node0{"US-CCN is not available"}:::decision
N_SetUSCCNtoSpaces_Node0_action["Set US-CCN field to spaces for
report display"]:::main N_SetUSCCNtoSpaces_Node0 -- Yes --> N_SetUSCCNtoSpaces_Node0_action N_SetUSCCNtoSpaces_Node0_action --> E_SetUSCCNtoSpaces S_SetUSCCNtoSpaces --> N_SetUSCCNtoSpaces_Node0 N_SetUSCCNtoSpaces_Node0 -- No --> E_SetUSCCNtoSpaces
report display"]:::main N_SetUSCCNtoSpaces_Node0 -- Yes --> N_SetUSCCNtoSpaces_Node0_action N_SetUSCCNtoSpaces_Node0_action --> E_SetUSCCNtoSpaces S_SetUSCCNtoSpaces --> N_SetUSCCNtoSpaces_Node0 N_SetUSCCNtoSpaces_Node0 -- No --> E_SetUSCCNtoSpaces
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
A cargo record being processed for reporting
WHEN:
US-CCN is not available
THEN:
Set US-CCN field to spaces for report display
β Consolidated Acceptance Criteria
- Disposition code is available in the system → format disposition code into displayable format for reports
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_FormatDispositionCode(["Start Step"])
E_FormatDispositionCode(["End Step"])
N_FormatDispositionCode_Node0{"Disposition code is available in
the system"}:::decision N_FormatDispositionCode_Node0_action["Format disposition code into
displayable format for reports"]:::main N_FormatDispositionCode_Node0 -- Yes --> N_FormatDispositionCode_Node0_action N_FormatDispositionCode_Node0_action --> E_FormatDispositionCode S_FormatDispositionCode --> N_FormatDispositionCode_Node0 N_FormatDispositionCode_Node0 -- No --> E_FormatDispositionCode
the system"}:::decision N_FormatDispositionCode_Node0_action["Format disposition code into
displayable format for reports"]:::main N_FormatDispositionCode_Node0 -- Yes --> N_FormatDispositionCode_Node0_action N_FormatDispositionCode_Node0_action --> E_FormatDispositionCode S_FormatDispositionCode --> N_FormatDispositionCode_Node0 N_FormatDispositionCode_Node0 -- No --> E_FormatDispositionCode
File: GCX016.cbl
GIVEN:
A cargo record with disposition code data
WHEN:
Disposition code is available in the system
THEN:
Format disposition code into displayable format for reports
β Consolidated Acceptance Criteria
- Disposition code is not available → set disposition code field to spaces for report display
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetDispositiontoSpaces(["Start Step"])
E_SetDispositiontoSpaces(["End Step"])
N_SetDispositiontoSpaces_Node0{"Disposition code is not available"}:::decision
N_SetDispositiontoSpaces_Node0_action["Set disposition code field to
spaces for report display"]:::main N_SetDispositiontoSpaces_Node0 -- Yes --> N_SetDispositiontoSpaces_Node0_action N_SetDispositiontoSpaces_Node0_action --> E_SetDispositiontoSpaces S_SetDispositiontoSpaces --> N_SetDispositiontoSpaces_Node0 N_SetDispositiontoSpaces_Node0 -- No --> E_SetDispositiontoSpaces
spaces for report display"]:::main N_SetDispositiontoSpaces_Node0 -- Yes --> N_SetDispositiontoSpaces_Node0_action N_SetDispositiontoSpaces_Node0_action --> E_SetDispositiontoSpaces S_SetDispositiontoSpaces --> N_SetDispositiontoSpaces_Node0 N_SetDispositiontoSpaces_Node0 -- No --> E_SetDispositiontoSpaces
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
A cargo record being processed for reporting
WHEN:
Disposition code is not available
THEN:
Set disposition code field to spaces for report display
β Consolidated Acceptance Criteria
- Current date and time formatting is required → format current system date and time into standard report format
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_FormatCurrentDateTime(["Start Step"])
E_FormatCurrentDateTime(["End Step"])
N_FormatCurrentDateTime_Node0{"Current date and time formatting is
required"}:::decision N_FormatCurrentDateTime_Node0_action["Format current system date and time
into standard report format"]:::main N_FormatCurrentDateTime_Node0 -- Yes --> N_FormatCurrentDateTime_Node0_action N_FormatCurrentDateTime_Node0_action --> E_FormatCurrentDateTime S_FormatCurrentDateTime --> N_FormatCurrentDateTime_Node0 N_FormatCurrentDateTime_Node0 -- No --> E_FormatCurrentDateTime
required"}:::decision N_FormatCurrentDateTime_Node0_action["Format current system date and time
into standard report format"]:::main N_FormatCurrentDateTime_Node0 -- Yes --> N_FormatCurrentDateTime_Node0_action N_FormatCurrentDateTime_Node0_action --> E_FormatCurrentDateTime S_FormatCurrentDateTime --> N_FormatCurrentDateTime_Node0 N_FormatCurrentDateTime_Node0 -- No --> E_FormatCurrentDateTime
File: GCX016.cbl
GIVEN:
A report being generated
WHEN:
- Current date
- Time formatting is required
THEN:
- Format current system date
- Time into standard report format
β Consolidated Acceptance Criteria
- Processing timestamp needs to be recorded → format processing timestamp into standard audit format for reports
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_FormatProcessingTimestamp(["Start Step"])
E_FormatProcessingTimestamp(["End Step"])
N_FormatProcessingTimestamp_Node0{"Processing timestamp needs to be
recorded"}:::decision N_FormatProcessingTimestamp_Node0_action["Format processing timestamp into
standard audit format for reports"]:::main N_FormatProcessingTimestamp_Node0 -- Yes --> N_FormatProcessingTimestamp_Node0_action N_FormatProcessingTimestamp_Node0_action --> E_FormatProcessingTimestamp S_FormatProcessingTimestamp --> N_FormatProcessingTimestamp_Node0 N_FormatProcessingTimestamp_Node0 -- No --> E_FormatProcessingTimestamp
recorded"}:::decision N_FormatProcessingTimestamp_Node0_action["Format processing timestamp into
standard audit format for reports"]:::main N_FormatProcessingTimestamp_Node0 -- Yes --> N_FormatProcessingTimestamp_Node0_action N_FormatProcessingTimestamp_Node0_action --> E_FormatProcessingTimestamp S_FormatProcessingTimestamp --> N_FormatProcessingTimestamp_Node0 N_FormatProcessingTimestamp_Node0 -- No --> E_FormatProcessingTimestamp
File: GCX016.cbl
GIVEN:
A cargo processing event
WHEN:
Processing timestamp needs to be recorded
THEN:
Format processing timestamp into standard audit format for reports
β Consolidated Acceptance Criteria
- Broker entry numbers are available → format entry numbers into displayable format for broker reports
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_FormatEntryNumbersforDisplay(["Start Step"])
E_FormatEntryNumbersforDisplay(["End Step"])
N_FormatEntryNumbersforDisplay_Node0{"Broker entry numbers are available"}:::decision
N_FormatEntryNumbersforDisplay_Node0_action["Format entry numbers into
displayable format for broker
reports"]:::main N_FormatEntryNumbersforDisplay_Node0 -- Yes --> N_FormatEntryNumbersforDisplay_Node0_action N_FormatEntryNumbersforDisplay_Node0_action --> E_FormatEntryNumbersforDisplay S_FormatEntryNumbersforDisplay --> N_FormatEntryNumbersforDisplay_Node0 N_FormatEntryNumbersforDisplay_Node0 -- No --> E_FormatEntryNumbersforDisplay
displayable format for broker
reports"]:::main N_FormatEntryNumbersforDisplay_Node0 -- Yes --> N_FormatEntryNumbersforDisplay_Node0_action N_FormatEntryNumbersforDisplay_Node0_action --> E_FormatEntryNumbersforDisplay S_FormatEntryNumbersforDisplay --> N_FormatEntryNumbersforDisplay_Node0 N_FormatEntryNumbersforDisplay_Node0 -- No --> E_FormatEntryNumbersforDisplay
File: GCX016.cbl
GIVEN:
Cargo with associated broker entry numbers
WHEN:
Broker entry numbers are available
THEN:
Format entry numbers into displayable format for broker reports
β Consolidated Acceptance Criteria
- Quantity mismatch reporting is required → format quantity information highlighting mismatches for review
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_FormatQuantitiesforMismatchReport(["Start Step"])
E_FormatQuantitiesforMismatchReport(["End Step"])
N_FormatQuantitiesforMismatchReport_Node0{"Quantity mismatch reporting is
required"}:::decision N_FormatQuantitiesforMismatchReport_Node0_action["Format quantity information
highlighting mismatches for review"]:::main N_FormatQuantitiesforMismatchReport_Node0 -- Yes --> N_FormatQuantitiesforMismatchReport_Node0_action N_FormatQuantitiesforMismatchReport_Node0_action --> E_FormatQuantitiesforMismatchReport S_FormatQuantitiesforMismatchReport --> N_FormatQuantitiesforMismatchReport_Node0 N_FormatQuantitiesforMismatchReport_Node0 -- No --> E_FormatQuantitiesforMismatchReport
required"}:::decision N_FormatQuantitiesforMismatchReport_Node0_action["Format quantity information
highlighting mismatches for review"]:::main N_FormatQuantitiesforMismatchReport_Node0 -- Yes --> N_FormatQuantitiesforMismatchReport_Node0_action N_FormatQuantitiesforMismatchReport_Node0_action --> E_FormatQuantitiesforMismatchReport S_FormatQuantitiesforMismatchReport --> N_FormatQuantitiesforMismatchReport_Node0 N_FormatQuantitiesforMismatchReport_Node0 -- No --> E_FormatQuantitiesforMismatchReport
File: GCX016.cbl
GIVEN:
Cargo with quantity discrepancies
WHEN:
Quantity mismatch reporting is required
THEN:
Format quantity information highlighting mismatches for review
β Consolidated Acceptance Criteria
- Report routing is required → set appropriate destination user codes based on cargo type and processing requirements
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetDestinationUserCodes(["Start Step"])
E_SetDestinationUserCodes(["End Step"])
N_SetDestinationUserCodes_Node0{"Report routing is required"}:::decision
N_SetDestinationUserCodes_Node0_action["Set appropriate destination user
codes based on cargo type and
processing requirements"]:::main N_SetDestinationUserCodes_Node0 -- Yes --> N_SetDestinationUserCodes_Node0_action N_SetDestinationUserCodes_Node0_action --> E_SetDestinationUserCodes S_SetDestinationUserCodes --> N_SetDestinationUserCodes_Node0 N_SetDestinationUserCodes_Node0 -- No --> E_SetDestinationUserCodes
codes based on cargo type and
processing requirements"]:::main N_SetDestinationUserCodes_Node0 -- Yes --> N_SetDestinationUserCodes_Node0_action N_SetDestinationUserCodes_Node0_action --> E_SetDestinationUserCodes S_SetDestinationUserCodes --> N_SetDestinationUserCodes_Node0 N_SetDestinationUserCodes_Node0 -- No --> E_SetDestinationUserCodes
File: GCX016.cbl
GIVEN:
A formatted report ready for distribution
WHEN:
Report routing is required
THEN:
- Set appropriate destination user codes based on cargo type
- Processing requirements
β Consolidated Acceptance Criteria
- The system needs to retrieve manifest quantity for quantity mismatch validation → the manifest quantity is extracted from the cargo record and made available for comparison
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RetrieveManifestQuantityfromCargoRecord(["Start Step"])
E_RetrieveManifestQuantityfromCargoRecord(["End Step"])
N_RetrieveManifestQuantityfromCargoRecord_Node0{"The system needs to retrieve
manifest quantity for quantity
mismatch validation"}:::decision N_RetrieveManifestQuantityfromCargoRecord_Node0_action["The manifest quantity is extracted
from the cargo record and made
available for comparison"]:::main N_RetrieveManifestQuantityfromCargoRecord_Node0 -- Yes --> N_RetrieveManifestQuantityfromCargoRecord_Node0_action N_RetrieveManifestQuantityfromCargoRecord_Node0_action --> E_RetrieveManifestQuantityfromCargoRecord S_RetrieveManifestQuantityfromCargoRecord --> N_RetrieveManifestQuantityfromCargoRecord_Node0 N_RetrieveManifestQuantityfromCargoRecord_Node0 -- No --> E_RetrieveManifestQuantityfromCargoRecord
manifest quantity for quantity
mismatch validation"}:::decision N_RetrieveManifestQuantityfromCargoRecord_Node0_action["The manifest quantity is extracted
from the cargo record and made
available for comparison"]:::main N_RetrieveManifestQuantityfromCargoRecord_Node0 -- Yes --> N_RetrieveManifestQuantityfromCargoRecord_Node0_action N_RetrieveManifestQuantityfromCargoRecord_Node0_action --> E_RetrieveManifestQuantityfromCargoRecord S_RetrieveManifestQuantityfromCargoRecord --> N_RetrieveManifestQuantityfromCargoRecord_Node0 N_RetrieveManifestQuantityfromCargoRecord_Node0 -- No --> E_RetrieveManifestQuantityfromCargoRecord
File: GCX016.cbl
GIVEN:
A cargo record exists in the system
WHEN:
The system needs to retrieve manifest quantity for quantity mismatch validation
THEN:
- The manifest quantity is extracted from the cargo record
- Made available for comparison
β Consolidated Acceptance Criteria
- The system needs to retrieve broker entry quantity for mismatch detection → the broker entry quantity is extracted from the X4 segment and made available for comparison
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RetrieveBrokerEntryQuantityfromX4Segment(["Start Step"])
E_RetrieveBrokerEntryQuantityfromX4Segment(["End Step"])
N_RetrieveBrokerEntryQuantityfromX4Segment_Node0{"The system needs to retrieve broker
entry quantity for mismatch
detection"}:::decision N_RetrieveBrokerEntryQuantityfromX4Segment_Node0_action["The broker entry quantity is
extracted from the X4 segment and
made available for comparison"]:::main N_RetrieveBrokerEntryQuantityfromX4Segment_Node0 -- Yes --> N_RetrieveBrokerEntryQuantityfromX4Segment_Node0_action N_RetrieveBrokerEntryQuantityfromX4Segment_Node0_action --> E_RetrieveBrokerEntryQuantityfromX4Segment S_RetrieveBrokerEntryQuantityfromX4Segment --> N_RetrieveBrokerEntryQuantityfromX4Segment_Node0 N_RetrieveBrokerEntryQuantityfromX4Segment_Node0 -- No --> E_RetrieveBrokerEntryQuantityfromX4Segment
entry quantity for mismatch
detection"}:::decision N_RetrieveBrokerEntryQuantityfromX4Segment_Node0_action["The broker entry quantity is
extracted from the X4 segment and
made available for comparison"]:::main N_RetrieveBrokerEntryQuantityfromX4Segment_Node0 -- Yes --> N_RetrieveBrokerEntryQuantityfromX4Segment_Node0_action N_RetrieveBrokerEntryQuantityfromX4Segment_Node0_action --> E_RetrieveBrokerEntryQuantityfromX4Segment S_RetrieveBrokerEntryQuantityfromX4Segment --> N_RetrieveBrokerEntryQuantityfromX4Segment_Node0 N_RetrieveBrokerEntryQuantityfromX4Segment_Node0 -- No --> E_RetrieveBrokerEntryQuantityfromX4Segment
File: GCX016.cbl
GIVEN:
An X4 customs release segment contains broker entry quantity information
WHEN:
The system needs to retrieve broker entry quantity for mismatch detection
THEN:
- The broker entry quantity is extracted from the x4 segment
- Made available for comparison
β Consolidated Acceptance Criteria
- The system formats the broker entry quantity for display → the broker entry quantity is formatted according to report display standards and prepared for inclusion in the mismatch report
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_FormatBrokerEntryQuantityforDisplay(["Start Step"])
E_FormatBrokerEntryQuantityforDisplay(["End Step"])
N_FormatBrokerEntryQuantityforDisplay_Node0{"The system formats the broker entry
quantity for display"}:::decision N_FormatBrokerEntryQuantityforDisplay_Node0_action["The broker entry quantity is
formatted according to report
display standards and prepared for
inclusion in the mismatch report"]:::main N_FormatBrokerEntryQuantityforDisplay_Node0 -- Yes --> N_FormatBrokerEntryQuantityforDisplay_Node0_action N_FormatBrokerEntryQuantityforDisplay_Node0_action --> E_FormatBrokerEntryQuantityforDisplay S_FormatBrokerEntryQuantityforDisplay --> N_FormatBrokerEntryQuantityforDisplay_Node0 N_FormatBrokerEntryQuantityforDisplay_Node0 -- No --> E_FormatBrokerEntryQuantityforDisplay
quantity for display"}:::decision N_FormatBrokerEntryQuantityforDisplay_Node0_action["The broker entry quantity is
formatted according to report
display standards and prepared for
inclusion in the mismatch report"]:::main N_FormatBrokerEntryQuantityforDisplay_Node0 -- Yes --> N_FormatBrokerEntryQuantityforDisplay_Node0_action N_FormatBrokerEntryQuantityforDisplay_Node0_action --> E_FormatBrokerEntryQuantityforDisplay S_FormatBrokerEntryQuantityforDisplay --> N_FormatBrokerEntryQuantityforDisplay_Node0 N_FormatBrokerEntryQuantityforDisplay_Node0 -- No --> E_FormatBrokerEntryQuantityforDisplay
File: GCX016.cbl
GIVEN:
A quantity mismatch has been detected and broker entry quantity is available
WHEN:
The system formats the broker entry quantity for display
THEN:
- The broker entry quantity is formatted according to report display standards
- Prepared for inclusion in the mismatch report
β Consolidated Acceptance Criteria
- The system builds the mismatch report line → a complete report line is constructed that will contain the entry number, manifest quantity, broker quantity, and difference amount
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_BuildMismatchReportLine(["Start Step"])
E_BuildMismatchReportLine(["End Step"])
N_BuildMismatchReportLine_Node0{"The system builds the mismatch
report line"}:::decision N_BuildMismatchReportLine_Node0_action["A complete report line is
constructed that will contain the
entry number, manifest quantity,
broker quantity, and difference
amount"]:::main N_BuildMismatchReportLine_Node0 -- Yes --> N_BuildMismatchReportLine_Node0_action N_BuildMismatchReportLine_Node0_action --> E_BuildMismatchReportLine S_BuildMismatchReportLine --> N_BuildMismatchReportLine_Node0 N_BuildMismatchReportLine_Node0 -- No --> E_BuildMismatchReportLine
report line"}:::decision N_BuildMismatchReportLine_Node0_action["A complete report line is
constructed that will contain the
entry number, manifest quantity,
broker quantity, and difference
amount"]:::main N_BuildMismatchReportLine_Node0 -- Yes --> N_BuildMismatchReportLine_Node0_action N_BuildMismatchReportLine_Node0_action --> E_BuildMismatchReportLine S_BuildMismatchReportLine --> N_BuildMismatchReportLine_Node0 N_BuildMismatchReportLine_Node0 -- No --> E_BuildMismatchReportLine
File: GCX016.cbl
GIVEN:
All quantity information has been formatted for display
WHEN:
The system builds the mismatch report line
THEN:
A complete report line is constructed that will contain the entry number, manifest quantity, broker quantity, and difference amount
β Consolidated Acceptance Criteria
- The system adds the entry number to the report → the formatted broker entry number is included in the appropriate position within the mismatch report line
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AddEntryNumbertoReport(["Start Step"])
E_AddEntryNumbertoReport(["End Step"])
N_AddEntryNumbertoReport_Node0{"The system adds the entry number to
the report"}:::decision N_AddEntryNumbertoReport_Node0_action["The formatted broker entry number
is included in the appropriate
position within the mismatch report
line"]:::main N_AddEntryNumbertoReport_Node0 -- Yes --> N_AddEntryNumbertoReport_Node0_action N_AddEntryNumbertoReport_Node0_action --> E_AddEntryNumbertoReport S_AddEntryNumbertoReport --> N_AddEntryNumbertoReport_Node0 N_AddEntryNumbertoReport_Node0 -- No --> E_AddEntryNumbertoReport
the report"}:::decision N_AddEntryNumbertoReport_Node0_action["The formatted broker entry number
is included in the appropriate
position within the mismatch report
line"]:::main N_AddEntryNumbertoReport_Node0 -- Yes --> N_AddEntryNumbertoReport_Node0_action N_AddEntryNumbertoReport_Node0_action --> E_AddEntryNumbertoReport S_AddEntryNumbertoReport --> N_AddEntryNumbertoReport_Node0 N_AddEntryNumbertoReport_Node0 -- No --> E_AddEntryNumbertoReport
File: GCX016.cbl
GIVEN:
A mismatch report line is being built and broker entry number is formatted
WHEN:
The system adds the entry number to the report
THEN:
The formatted broker entry number is included in the appropriate position within the mismatch report line
β Consolidated Acceptance Criteria
- The system adds the manifest quantity to the report → the formatted manifest quantity is included in the appropriate position within the mismatch report line
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AddManifestQuantitytoReport(["Start Step"])
E_AddManifestQuantitytoReport(["End Step"])
N_AddManifestQuantitytoReport_Node0{"The system adds the manifest
quantity to the report"}:::decision N_AddManifestQuantitytoReport_Node0_action["The formatted manifest quantity is
included in the appropriate position
within the mismatch report line"]:::main N_AddManifestQuantitytoReport_Node0 -- Yes --> N_AddManifestQuantitytoReport_Node0_action N_AddManifestQuantitytoReport_Node0_action --> E_AddManifestQuantitytoReport S_AddManifestQuantitytoReport --> N_AddManifestQuantitytoReport_Node0 N_AddManifestQuantitytoReport_Node0 -- No --> E_AddManifestQuantitytoReport
quantity to the report"}:::decision N_AddManifestQuantitytoReport_Node0_action["The formatted manifest quantity is
included in the appropriate position
within the mismatch report line"]:::main N_AddManifestQuantitytoReport_Node0 -- Yes --> N_AddManifestQuantitytoReport_Node0_action N_AddManifestQuantitytoReport_Node0_action --> E_AddManifestQuantitytoReport S_AddManifestQuantitytoReport --> N_AddManifestQuantitytoReport_Node0 N_AddManifestQuantitytoReport_Node0 -- No --> E_AddManifestQuantitytoReport
File: GCX016.cbl
GIVEN:
A mismatch report line is being built and manifest quantity is formatted
WHEN:
The system adds the manifest quantity to the report
THEN:
The formatted manifest quantity is included in the appropriate position within the mismatch report line
β Consolidated Acceptance Criteria
- The system adds the broker quantity to the report → the formatted broker entry quantity is included in the appropriate position within the mismatch report line
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AddBrokerQuantitytoReport(["Start Step"])
E_AddBrokerQuantitytoReport(["End Step"])
N_AddBrokerQuantitytoReport_Node0{"The system adds the broker quantity
to the report"}:::decision N_AddBrokerQuantitytoReport_Node0_action["The formatted broker entry quantity
is included in the appropriate
position within the mismatch report
line"]:::main N_AddBrokerQuantitytoReport_Node0 -- Yes --> N_AddBrokerQuantitytoReport_Node0_action N_AddBrokerQuantitytoReport_Node0_action --> E_AddBrokerQuantitytoReport S_AddBrokerQuantitytoReport --> N_AddBrokerQuantitytoReport_Node0 N_AddBrokerQuantitytoReport_Node0 -- No --> E_AddBrokerQuantitytoReport
to the report"}:::decision N_AddBrokerQuantitytoReport_Node0_action["The formatted broker entry quantity
is included in the appropriate
position within the mismatch report
line"]:::main N_AddBrokerQuantitytoReport_Node0 -- Yes --> N_AddBrokerQuantitytoReport_Node0_action N_AddBrokerQuantitytoReport_Node0_action --> E_AddBrokerQuantitytoReport S_AddBrokerQuantitytoReport --> N_AddBrokerQuantitytoReport_Node0 N_AddBrokerQuantitytoReport_Node0 -- No --> E_AddBrokerQuantitytoReport
File: GCX016.cbl
GIVEN:
A mismatch report line is being built and broker entry quantity is formatted
WHEN:
The system adds the broker quantity to the report
THEN:
The formatted broker entry quantity is included in the appropriate position within the mismatch report line
β Consolidated Acceptance Criteria
- The system adds the difference amount to the report → the formatted quantity difference is included in the appropriate position within the mismatch report line
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AddDifferenceAmounttoReport(["Start Step"])
E_AddDifferenceAmounttoReport(["End Step"])
N_AddDifferenceAmounttoReport_Node0{"The system adds the difference
amount to the report"}:::decision N_AddDifferenceAmounttoReport_Node0_action["The formatted quantity difference
is included in the appropriate
position within the mismatch report
line"]:::main N_AddDifferenceAmounttoReport_Node0 -- Yes --> N_AddDifferenceAmounttoReport_Node0_action N_AddDifferenceAmounttoReport_Node0_action --> E_AddDifferenceAmounttoReport S_AddDifferenceAmounttoReport --> N_AddDifferenceAmounttoReport_Node0 N_AddDifferenceAmounttoReport_Node0 -- No --> E_AddDifferenceAmounttoReport
amount to the report"}:::decision N_AddDifferenceAmounttoReport_Node0_action["The formatted quantity difference
is included in the appropriate
position within the mismatch report
line"]:::main N_AddDifferenceAmounttoReport_Node0 -- Yes --> N_AddDifferenceAmounttoReport_Node0_action N_AddDifferenceAmounttoReport_Node0_action --> E_AddDifferenceAmounttoReport S_AddDifferenceAmounttoReport --> N_AddDifferenceAmounttoReport_Node0 N_AddDifferenceAmounttoReport_Node0 -- No --> E_AddDifferenceAmounttoReport
File: GCX016.cbl
GIVEN:
A mismatch report line is being built and quantity difference is formatted
WHEN:
The system adds the difference amount to the report
THEN:
The formatted quantity difference is included in the appropriate position within the mismatch report line
β Consolidated Acceptance Criteria
- The system sets the mismatch flag → the mismatch notification flag is activated to ensure broker notification will be triggered for this quantity discrepancy
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetMismatchFlagforNotification(["Start Step"])
E_SetMismatchFlagforNotification(["End Step"])
N_SetMismatchFlagforNotification_Node0{"The system sets the mismatch flag"}:::decision
N_SetMismatchFlagforNotification_Node0_action["The mismatch notification flag is
activated to ensure broker
notification will be triggered for
this quantity discrepancy"]:::main N_SetMismatchFlagforNotification_Node0 -- Yes --> N_SetMismatchFlagforNotification_Node0_action N_SetMismatchFlagforNotification_Node0_action --> E_SetMismatchFlagforNotification S_SetMismatchFlagforNotification --> N_SetMismatchFlagforNotification_Node0 N_SetMismatchFlagforNotification_Node0 -- No --> E_SetMismatchFlagforNotification
activated to ensure broker
notification will be triggered for
this quantity discrepancy"]:::main N_SetMismatchFlagforNotification_Node0 -- Yes --> N_SetMismatchFlagforNotification_Node0_action N_SetMismatchFlagforNotification_Node0_action --> E_SetMismatchFlagforNotification S_SetMismatchFlagforNotification --> N_SetMismatchFlagforNotification_Node0 N_SetMismatchFlagforNotification_Node0 -- No --> E_SetMismatchFlagforNotification
File: GCX016.cbl
GIVEN:
A quantity mismatch has been detected and formatted for reporting
WHEN:
The system sets the mismatch flag
THEN:
The mismatch notification flag is activated to ensure broker notification will be triggered for this quantity discrepancy
β Consolidated Acceptance Criteria
- If whether leap year adjustment is necessary → the system should determine if leap year check is required based on the year and whether the date falls after February 29th in a leap year
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LeapYearCheckRequired(["Start Step"])
E_LeapYearCheckRequired(["End Step"])
N_LeapYearCheckRequired_Node0{"The system evaluates whether leap
year adjustment is necessary"}:::decision N_LeapYearCheckRequired_Node0_action["The system should determine if leap
year check is required based on the
year and whether the date falls
after February 29th in a leap year"]:::main N_LeapYearCheckRequired_Node0 -- Yes --> N_LeapYearCheckRequired_Node0_action N_LeapYearCheckRequired_Node0_action --> E_LeapYearCheckRequired S_LeapYearCheckRequired --> N_LeapYearCheckRequired_Node0 N_LeapYearCheckRequired_Node0 -- No --> E_LeapYearCheckRequired
year adjustment is necessary"}:::decision N_LeapYearCheckRequired_Node0_action["The system should determine if leap
year check is required based on the
year and whether the date falls
after February 29th in a leap year"]:::main N_LeapYearCheckRequired_Node0 -- Yes --> N_LeapYearCheckRequired_Node0_action N_LeapYearCheckRequired_Node0_action --> E_LeapYearCheckRequired S_LeapYearCheckRequired --> N_LeapYearCheckRequired_Node0 N_LeapYearCheckRequired_Node0 -- No --> E_LeapYearCheckRequired
File: GCX016.cbl
GIVEN:
The basic Julian date calculation has been completed
WHEN:
The system evaluates whether leap year adjustment is necessary
THEN:
- The system should determine if leap year check is required based on the year
- Whether the date falls after february 29th in a leap year
β Consolidated Acceptance Criteria
- The leap year adjustment is applied → the system should adjust the Julian date calculation to account for the extra day in leap years
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ApplyLeapYearAdjustment(["Start Step"])
E_ApplyLeapYearAdjustment(["End Step"])
N_ApplyLeapYearAdjustment_Node0{"The leap year adjustment is applied"}:::decision
N_ApplyLeapYearAdjustment_Node0_action["The system should adjust the Julian
date calculation to account for the
extra day in leap years"]:::main N_ApplyLeapYearAdjustment_Node0 -- Yes --> N_ApplyLeapYearAdjustment_Node0_action N_ApplyLeapYearAdjustment_Node0_action --> E_ApplyLeapYearAdjustment S_ApplyLeapYearAdjustment --> N_ApplyLeapYearAdjustment_Node0 N_ApplyLeapYearAdjustment_Node0 -- No --> E_ApplyLeapYearAdjustment
date calculation to account for the
extra day in leap years"]:::main N_ApplyLeapYearAdjustment_Node0 -- Yes --> N_ApplyLeapYearAdjustment_Node0_action N_ApplyLeapYearAdjustment_Node0_action --> E_ApplyLeapYearAdjustment S_ApplyLeapYearAdjustment --> N_ApplyLeapYearAdjustment_Node0 N_ApplyLeapYearAdjustment_Node0 -- No --> E_ApplyLeapYearAdjustment
File: GCX016.cbl
GIVEN:
The system has determined that leap year adjustment is required
WHEN:
The leap year adjustment is applied
THEN:
The system should adjust the Julian date calculation to account for the extra day in leap years
β Consolidated Acceptance Criteria
- The system prepares the final output → the system should format the Julian date into the standard business format
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_FormatJulianDateOutput(["Start Step"])
E_FormatJulianDateOutput(["End Step"])
N_FormatJulianDateOutput_Node0{"The system prepares the final
output"}:::decision N_FormatJulianDateOutput_Node0_action["The system should format the Julian
date into the standard business
format"]:::main N_FormatJulianDateOutput_Node0 -- Yes --> N_FormatJulianDateOutput_Node0_action N_FormatJulianDateOutput_Node0_action --> E_FormatJulianDateOutput S_FormatJulianDateOutput --> N_FormatJulianDateOutput_Node0 N_FormatJulianDateOutput_Node0 -- No --> E_FormatJulianDateOutput
output"}:::decision N_FormatJulianDateOutput_Node0_action["The system should format the Julian
date into the standard business
format"]:::main N_FormatJulianDateOutput_Node0 -- Yes --> N_FormatJulianDateOutput_Node0_action N_FormatJulianDateOutput_Node0_action --> E_FormatJulianDateOutput S_FormatJulianDateOutput --> N_FormatJulianDateOutput_Node0 N_FormatJulianDateOutput_Node0 -- No --> E_FormatJulianDateOutput
File: GCX016.cbl
GIVEN:
The Julian date calculation is complete with any necessary leap year adjustments
WHEN:
The system prepares the final output
THEN:
The system should format the Julian date into the standard business format
β Consolidated Acceptance Criteria
- The conversion process is complete → the system should return the Julian date for use in business date calculations
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ReturnJulianDateforBusinessCalculations(["Start Step"])
E_ReturnJulianDateforBusinessCalculations(["End Step"])
N_ReturnJulianDateforBusinessCalculations_Node0{"The conversion process is complete"}:::decision
N_ReturnJulianDateforBusinessCalculations_Node0_action["The system should return the Julian
date for use in business date
calculations"]:::main N_ReturnJulianDateforBusinessCalculations_Node0 -- Yes --> N_ReturnJulianDateforBusinessCalculations_Node0_action N_ReturnJulianDateforBusinessCalculations_Node0_action --> E_ReturnJulianDateforBusinessCalculations S_ReturnJulianDateforBusinessCalculations --> N_ReturnJulianDateforBusinessCalculations_Node0 N_ReturnJulianDateforBusinessCalculations_Node0 -- No --> E_ReturnJulianDateforBusinessCalculations
date for use in business date
calculations"]:::main N_ReturnJulianDateforBusinessCalculations_Node0 -- Yes --> N_ReturnJulianDateforBusinessCalculations_Node0_action N_ReturnJulianDateforBusinessCalculations_Node0_action --> E_ReturnJulianDateforBusinessCalculations S_ReturnJulianDateforBusinessCalculations --> N_ReturnJulianDateforBusinessCalculations_Node0 N_ReturnJulianDateforBusinessCalculations_Node0 -- No --> E_ReturnJulianDateforBusinessCalculations
File: GCX016.cbl
GIVEN:
The Julian date has been successfully calculated and formatted
WHEN:
The conversion process is complete
THEN:
The system should return the Julian date for use in business date calculations
β Consolidated Acceptance Criteria
- The system cannot proceed with Julian conversion → the system should return an error indicating the date format is invalid
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ReturnErrorforInvalidDate(["Start Step"])
E_ReturnErrorforInvalidDate(["End Step"])
N_ReturnErrorforInvalidDate_Node0{"The system cannot proceed with
Julian conversion"}:::decision N_ReturnErrorforInvalidDate_Node0_action["The system should return an error
indicating the date format is
invalid"]:::main N_ReturnErrorforInvalidDate_Node0 -- Yes --> N_ReturnErrorforInvalidDate_Node0_action N_ReturnErrorforInvalidDate_Node0_action --> E_ReturnErrorforInvalidDate S_ReturnErrorforInvalidDate --> N_ReturnErrorforInvalidDate_Node0 N_ReturnErrorforInvalidDate_Node0 -- No --> E_ReturnErrorforInvalidDate
Julian conversion"}:::decision N_ReturnErrorforInvalidDate_Node0_action["The system should return an error
indicating the date format is
invalid"]:::main N_ReturnErrorforInvalidDate_Node0 -- Yes --> N_ReturnErrorforInvalidDate_Node0_action N_ReturnErrorforInvalidDate_Node0_action --> E_ReturnErrorforInvalidDate S_ReturnErrorforInvalidDate --> N_ReturnErrorforInvalidDate_Node0 N_ReturnErrorforInvalidDate_Node0 -- No --> E_ReturnErrorforInvalidDate
File: GCX016.cbl
GIVEN:
An invalid date format has been detected during validation
WHEN:
The system cannot proceed with Julian conversion
THEN:
The system should return an error indicating the date format is invalid
β Consolidated Acceptance Criteria
- The system starts report field initialization → all report working fields are cleared to spaces or zeros
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ClearReportWorkingFields(["Start Step"])
E_ClearReportWorkingFields(["End Step"])
N_ClearReportWorkingFields_Node0{"The system starts report field
initialization"}:::decision N_ClearReportWorkingFields_Node0_action["All report working fields are
cleared to spaces or zeros"]:::main N_ClearReportWorkingFields_Node0 -- Yes --> N_ClearReportWorkingFields_Node0_action N_ClearReportWorkingFields_Node0_action --> E_ClearReportWorkingFields S_ClearReportWorkingFields --> N_ClearReportWorkingFields_Node0 N_ClearReportWorkingFields_Node0 -- No --> E_ClearReportWorkingFields
initialization"}:::decision N_ClearReportWorkingFields_Node0_action["All report working fields are
cleared to spaces or zeros"]:::main N_ClearReportWorkingFields_Node0 -- Yes --> N_ClearReportWorkingFields_Node0_action N_ClearReportWorkingFields_Node0_action --> E_ClearReportWorkingFields S_ClearReportWorkingFields --> N_ClearReportWorkingFields_Node0 N_ClearReportWorkingFields_Node0 -- No --> E_ClearReportWorkingFields
File: GCX016.cbl
GIVEN:
A Merlin report needs to be generated
WHEN:
The system starts report field initialization
THEN:
All report working fields are cleared to spaces or zeros
β Consolidated Acceptance Criteria
- Message header initialization is performed → message header fields are set with standard Merlin format values
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_InitializeMessageHeaderFields(["Start Step"])
E_InitializeMessageHeaderFields(["End Step"])
N_InitializeMessageHeaderFields_Node0{"Message header initialization is
performed"}:::decision N_InitializeMessageHeaderFields_Node0_action["Message header fields are set with
standard Merlin format values"]:::main N_InitializeMessageHeaderFields_Node0 -- Yes --> N_InitializeMessageHeaderFields_Node0_action N_InitializeMessageHeaderFields_Node0_action --> E_InitializeMessageHeaderFields S_InitializeMessageHeaderFields --> N_InitializeMessageHeaderFields_Node0 N_InitializeMessageHeaderFields_Node0 -- No --> E_InitializeMessageHeaderFields
performed"}:::decision N_InitializeMessageHeaderFields_Node0_action["Message header fields are set with
standard Merlin format values"]:::main N_InitializeMessageHeaderFields_Node0 -- Yes --> N_InitializeMessageHeaderFields_Node0_action N_InitializeMessageHeaderFields_Node0_action --> E_InitializeMessageHeaderFields S_InitializeMessageHeaderFields --> N_InitializeMessageHeaderFields_Node0 N_InitializeMessageHeaderFields_Node0 -- No --> E_InitializeMessageHeaderFields
File: GCX016.cbl
GIVEN:
Report working fields have been cleared
WHEN:
Message header initialization is performed
THEN:
Message header fields are set with standard Merlin format values
β Consolidated Acceptance Criteria
- Default user code setup is executed → standard user codes are assigned for message routing destinations
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetDefaultUserCodes(["Start Step"])
E_SetDefaultUserCodes(["End Step"])
N_SetDefaultUserCodes_Node0{"Default user code setup is executed"}:::decision
N_SetDefaultUserCodes_Node0_action["Standard user codes are assigned
for message routing destinations"]:::main N_SetDefaultUserCodes_Node0 -- Yes --> N_SetDefaultUserCodes_Node0_action N_SetDefaultUserCodes_Node0_action --> E_SetDefaultUserCodes S_SetDefaultUserCodes --> N_SetDefaultUserCodes_Node0 N_SetDefaultUserCodes_Node0 -- No --> E_SetDefaultUserCodes
for message routing destinations"]:::main N_SetDefaultUserCodes_Node0 -- Yes --> N_SetDefaultUserCodes_Node0_action N_SetDefaultUserCodes_Node0_action --> E_SetDefaultUserCodes S_SetDefaultUserCodes --> N_SetDefaultUserCodes_Node0 N_SetDefaultUserCodes_Node0 -- No --> E_SetDefaultUserCodes
File: GCX016.cbl
GIVEN:
Message header fields are initialized
WHEN:
Default user code setup is executed
THEN:
Standard user codes are assigned for message routing destinations
β Consolidated Acceptance Criteria
- Report display field initialization is performed → all display fields are formatted with standard presentation templates
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_InitializeReportDisplayFields(["Start Step"])
E_InitializeReportDisplayFields(["End Step"])
N_InitializeReportDisplayFields_Node0{"Report display field initialization
is performed"}:::decision N_InitializeReportDisplayFields_Node0_action["All display fields are formatted
with standard presentation templates"]:::main N_InitializeReportDisplayFields_Node0 -- Yes --> N_InitializeReportDisplayFields_Node0_action N_InitializeReportDisplayFields_Node0_action --> E_InitializeReportDisplayFields S_InitializeReportDisplayFields --> N_InitializeReportDisplayFields_Node0 N_InitializeReportDisplayFields_Node0 -- No --> E_InitializeReportDisplayFields
is performed"}:::decision N_InitializeReportDisplayFields_Node0_action["All display fields are formatted
with standard presentation templates"]:::main N_InitializeReportDisplayFields_Node0 -- Yes --> N_InitializeReportDisplayFields_Node0_action N_InitializeReportDisplayFields_Node0_action --> E_InitializeReportDisplayFields S_InitializeReportDisplayFields --> N_InitializeReportDisplayFields_Node0 N_InitializeReportDisplayFields_Node0 -- No --> E_InitializeReportDisplayFields
File: GCX016.cbl
GIVEN:
Message routing has been configured
WHEN:
Report display field initialization is performed
THEN:
All display fields are formatted with standard presentation templates
β Consolidated Acceptance Criteria
- Car ID formatting is applied → car identification fields are formatted with standard car ID display format
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetCarIDFormatFields(["Start Step"])
E_SetCarIDFormatFields(["End Step"])
N_SetCarIDFormatFields_Node0{"Car ID formatting is applied"}:::decision
N_SetCarIDFormatFields_Node0_action["Car identification fields are
formatted with standard car ID
display format"]:::main N_SetCarIDFormatFields_Node0 -- Yes --> N_SetCarIDFormatFields_Node0_action N_SetCarIDFormatFields_Node0_action --> E_SetCarIDFormatFields S_SetCarIDFormatFields --> N_SetCarIDFormatFields_Node0 N_SetCarIDFormatFields_Node0 -- No --> E_SetCarIDFormatFields
formatted with standard car ID
display format"]:::main N_SetCarIDFormatFields_Node0 -- Yes --> N_SetCarIDFormatFields_Node0_action N_SetCarIDFormatFields_Node0_action --> E_SetCarIDFormatFields S_SetCarIDFormatFields --> N_SetCarIDFormatFields_Node0 N_SetCarIDFormatFields_Node0 -- No --> E_SetCarIDFormatFields
File: GCX016.cbl
GIVEN:
Report display fields are initialized
WHEN:
Car ID formatting is applied
THEN:
Car identification fields are formatted with standard car ID display format
β Consolidated Acceptance Criteria
- Waybill display formatting is applied → waybill fields are formatted with standard waybill display format
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetWaybillDisplayFields(["Start Step"])
E_SetWaybillDisplayFields(["End Step"])
N_SetWaybillDisplayFields_Node0{"Waybill display formatting is
applied"}:::decision N_SetWaybillDisplayFields_Node0_action["Waybill fields are formatted with
standard waybill display format"]:::main N_SetWaybillDisplayFields_Node0 -- Yes --> N_SetWaybillDisplayFields_Node0_action N_SetWaybillDisplayFields_Node0_action --> E_SetWaybillDisplayFields S_SetWaybillDisplayFields --> N_SetWaybillDisplayFields_Node0 N_SetWaybillDisplayFields_Node0 -- No --> E_SetWaybillDisplayFields
applied"}:::decision N_SetWaybillDisplayFields_Node0_action["Waybill fields are formatted with
standard waybill display format"]:::main N_SetWaybillDisplayFields_Node0 -- Yes --> N_SetWaybillDisplayFields_Node0_action N_SetWaybillDisplayFields_Node0_action --> E_SetWaybillDisplayFields S_SetWaybillDisplayFields --> N_SetWaybillDisplayFields_Node0 N_SetWaybillDisplayFields_Node0 -- No --> E_SetWaybillDisplayFields
File: GCX016.cbl
GIVEN:
Car ID fields are formatted
WHEN:
Waybill display formatting is applied
THEN:
Waybill fields are formatted with standard waybill display format
β Consolidated Acceptance Criteria
- US-CCN display formatting is applied → uS-CCN fields are formatted with standard CCN display format
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetUSCCNDisplayFields(["Start Step"])
E_SetUSCCNDisplayFields(["End Step"])
N_SetUSCCNDisplayFields_Node0{"US-CCN display formatting is
applied"}:::decision N_SetUSCCNDisplayFields_Node0_action["US-CCN fields are formatted with
standard CCN display format"]:::main N_SetUSCCNDisplayFields_Node0 -- Yes --> N_SetUSCCNDisplayFields_Node0_action N_SetUSCCNDisplayFields_Node0_action --> E_SetUSCCNDisplayFields S_SetUSCCNDisplayFields --> N_SetUSCCNDisplayFields_Node0 N_SetUSCCNDisplayFields_Node0 -- No --> E_SetUSCCNDisplayFields
applied"}:::decision N_SetUSCCNDisplayFields_Node0_action["US-CCN fields are formatted with
standard CCN display format"]:::main N_SetUSCCNDisplayFields_Node0 -- Yes --> N_SetUSCCNDisplayFields_Node0_action N_SetUSCCNDisplayFields_Node0_action --> E_SetUSCCNDisplayFields S_SetUSCCNDisplayFields --> N_SetUSCCNDisplayFields_Node0 N_SetUSCCNDisplayFields_Node0 -- No --> E_SetUSCCNDisplayFields
File: GCX016.cbl
GIVEN:
Waybill fields are formatted
WHEN:
US-CCN display formatting is applied
THEN:
US-CCN fields are formatted with standard CCN display format
β Consolidated Acceptance Criteria
- Disposition code formatting is applied → disposition code fields include both code and description for clarity
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetDispositionCodeFields(["Start Step"])
E_SetDispositionCodeFields(["End Step"])
N_SetDispositionCodeFields_Node0{"Disposition code formatting is
applied"}:::decision N_SetDispositionCodeFields_Node0_action["Disposition code fields include
both code and description for
clarity"]:::main N_SetDispositionCodeFields_Node0 -- Yes --> N_SetDispositionCodeFields_Node0_action N_SetDispositionCodeFields_Node0_action --> E_SetDispositionCodeFields S_SetDispositionCodeFields --> N_SetDispositionCodeFields_Node0 N_SetDispositionCodeFields_Node0 -- No --> E_SetDispositionCodeFields
applied"}:::decision N_SetDispositionCodeFields_Node0_action["Disposition code fields include
both code and description for
clarity"]:::main N_SetDispositionCodeFields_Node0 -- Yes --> N_SetDispositionCodeFields_Node0_action N_SetDispositionCodeFields_Node0_action --> E_SetDispositionCodeFields S_SetDispositionCodeFields --> N_SetDispositionCodeFields_Node0 N_SetDispositionCodeFields_Node0 -- No --> E_SetDispositionCodeFields
File: GCX016.cbl
GIVEN:
US-CCN fields are formatted
WHEN:
Disposition code formatting is applied
THEN:
- Disposition code fields include both code
- Description for clarity
β Consolidated Acceptance Criteria
- Date and time stamp setting is performed → current date and time are captured in standard report timestamp format
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetDateTimeStampFields(["Start Step"])
E_SetDateTimeStampFields(["End Step"])
N_SetDateTimeStampFields_Node0{"Date and time stamp setting is
performed"}:::decision N_SetDateTimeStampFields_Node0_action["Current date and time are captured
in standard report timestamp format"]:::main N_SetDateTimeStampFields_Node0 -- Yes --> N_SetDateTimeStampFields_Node0_action N_SetDateTimeStampFields_Node0_action --> E_SetDateTimeStampFields S_SetDateTimeStampFields --> N_SetDateTimeStampFields_Node0 N_SetDateTimeStampFields_Node0 -- No --> E_SetDateTimeStampFields
performed"}:::decision N_SetDateTimeStampFields_Node0_action["Current date and time are captured
in standard report timestamp format"]:::main N_SetDateTimeStampFields_Node0 -- Yes --> N_SetDateTimeStampFields_Node0_action N_SetDateTimeStampFields_Node0_action --> E_SetDateTimeStampFields S_SetDateTimeStampFields --> N_SetDateTimeStampFields_Node0 N_SetDateTimeStampFields_Node0 -- No --> E_SetDateTimeStampFields
File: GCX016.cbl
GIVEN:
Disposition code fields are formatted
WHEN:
- Date
- Time stamp setting is performed
THEN:
- Current date
- Time are captured in standard report timestamp format
β Consolidated Acceptance Criteria
- Quantity display formatting is applied → quantity fields are formatted with standard numerical display format
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetQuantityDisplayFields(["Start Step"])
E_SetQuantityDisplayFields(["End Step"])
N_SetQuantityDisplayFields_Node0{"Quantity display formatting is
applied"}:::decision N_SetQuantityDisplayFields_Node0_action["Quantity fields are formatted with
standard numerical display format"]:::main N_SetQuantityDisplayFields_Node0 -- Yes --> N_SetQuantityDisplayFields_Node0_action N_SetQuantityDisplayFields_Node0_action --> E_SetQuantityDisplayFields S_SetQuantityDisplayFields --> N_SetQuantityDisplayFields_Node0 N_SetQuantityDisplayFields_Node0 -- No --> E_SetQuantityDisplayFields
applied"}:::decision N_SetQuantityDisplayFields_Node0_action["Quantity fields are formatted with
standard numerical display format"]:::main N_SetQuantityDisplayFields_Node0 -- Yes --> N_SetQuantityDisplayFields_Node0_action N_SetQuantityDisplayFields_Node0_action --> E_SetQuantityDisplayFields S_SetQuantityDisplayFields --> N_SetQuantityDisplayFields_Node0 N_SetQuantityDisplayFields_Node0 -- No --> E_SetQuantityDisplayFields
File: GCX016.cbl
GIVEN:
Date and time stamps are set
WHEN:
Quantity display formatting is applied
THEN:
Quantity fields are formatted with standard numerical display format
β Consolidated Acceptance Criteria
- Destination basket initialization is performed → destination basket arrays are cleared and ready for recipient assignment
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_InitializeDestinationBaskets(["Start Step"])
E_InitializeDestinationBaskets(["End Step"])
N_InitializeDestinationBaskets_Node0{"Destination basket initialization
is performed"}:::decision N_InitializeDestinationBaskets_Node0_action["Destination basket arrays are
cleared and ready for recipient
assignment"]:::main N_InitializeDestinationBaskets_Node0 -- Yes --> N_InitializeDestinationBaskets_Node0_action N_InitializeDestinationBaskets_Node0_action --> E_InitializeDestinationBaskets S_InitializeDestinationBaskets --> N_InitializeDestinationBaskets_Node0 N_InitializeDestinationBaskets_Node0 -- No --> E_InitializeDestinationBaskets
is performed"}:::decision N_InitializeDestinationBaskets_Node0_action["Destination basket arrays are
cleared and ready for recipient
assignment"]:::main N_InitializeDestinationBaskets_Node0 -- Yes --> N_InitializeDestinationBaskets_Node0_action N_InitializeDestinationBaskets_Node0_action --> E_InitializeDestinationBaskets S_InitializeDestinationBaskets --> N_InitializeDestinationBaskets_Node0 N_InitializeDestinationBaskets_Node0 -- No --> E_InitializeDestinationBaskets
File: GCX016.cbl
GIVEN:
Quantity fields are formatted
WHEN:
Destination basket initialization is performed
THEN:
- Destination basket arrays are cleared
- Ready for recipient assignment
β Consolidated Acceptance Criteria
- User code validation is performed → system identifies whether assigned user codes are valid or require default rerouting
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_InvalidUserCode(["Start Step"])
E_InvalidUserCode(["End Step"])
N_InvalidUserCode_Node0{"User code validation is performed"}:::decision
N_InvalidUserCode_Node0_action["System identifies whether assigned
user codes are valid or require
default rerouting"]:::main N_InvalidUserCode_Node0 -- Yes --> N_InvalidUserCode_Node0_action N_InvalidUserCode_Node0_action --> E_InvalidUserCode S_InvalidUserCode --> N_InvalidUserCode_Node0 N_InvalidUserCode_Node0 -- No --> E_InvalidUserCode
user codes are valid or require
default rerouting"]:::main N_InvalidUserCode_Node0 -- Yes --> N_InvalidUserCode_Node0_action N_InvalidUserCode_Node0_action --> E_InvalidUserCode S_InvalidUserCode --> N_InvalidUserCode_Node0 N_InvalidUserCode_Node0 -- No --> E_InvalidUserCode
File: GCX016.cbl
GIVEN:
Destination baskets are initialized
WHEN:
User code validation is performed
THEN:
System identifies whether assigned user codes are valid or require default rerouting
β Consolidated Acceptance Criteria
- Default rerouting is applied → system assigns default rerouting user for message delivery
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetDefaultReroutingUser(["Start Step"])
E_SetDefaultReroutingUser(["End Step"])
N_SetDefaultReroutingUser_Node0{"Default rerouting is applied"}:::decision
N_SetDefaultReroutingUser_Node0_action["System assigns default rerouting
user for message delivery"]:::main N_SetDefaultReroutingUser_Node0 -- Yes --> N_SetDefaultReroutingUser_Node0_action N_SetDefaultReroutingUser_Node0_action --> E_SetDefaultReroutingUser S_SetDefaultReroutingUser --> N_SetDefaultReroutingUser_Node0 N_SetDefaultReroutingUser_Node0 -- No --> E_SetDefaultReroutingUser
user for message delivery"]:::main N_SetDefaultReroutingUser_Node0 -- Yes --> N_SetDefaultReroutingUser_Node0_action N_SetDefaultReroutingUser_Node0_action --> E_SetDefaultReroutingUser S_SetDefaultReroutingUser --> N_SetDefaultReroutingUser_Node0 N_SetDefaultReroutingUser_Node0 -- No --> E_SetDefaultReroutingUser
File: GCX016.cbl
GIVEN:
User code validation identifies invalid codes
WHEN:
Default rerouting is applied
THEN:
System assigns default rerouting user for message delivery
β Consolidated Acceptance Criteria
- Subject line formatting is applied → subject line is formatted with standard message identification format
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetSubjectLineFormat(["Start Step"])
E_SetSubjectLineFormat(["End Step"])
N_SetSubjectLineFormat_Node0{"Subject line formatting is applied"}:::decision
N_SetSubjectLineFormat_Node0_action["Subject line is formatted with
standard message identification
format"]:::main N_SetSubjectLineFormat_Node0 -- Yes --> N_SetSubjectLineFormat_Node0_action N_SetSubjectLineFormat_Node0_action --> E_SetSubjectLineFormat S_SetSubjectLineFormat --> N_SetSubjectLineFormat_Node0 N_SetSubjectLineFormat_Node0 -- No --> E_SetSubjectLineFormat
standard message identification
format"]:::main N_SetSubjectLineFormat_Node0 -- Yes --> N_SetSubjectLineFormat_Node0_action N_SetSubjectLineFormat_Node0_action --> E_SetSubjectLineFormat S_SetSubjectLineFormat --> N_SetSubjectLineFormat_Node0 N_SetSubjectLineFormat_Node0 -- No --> E_SetSubjectLineFormat
File: GCX016.cbl
GIVEN:
Message keywords are assigned
WHEN:
Subject line formatting is applied
THEN:
Subject line is formatted with standard message identification format
β Consolidated Acceptance Criteria
- Report field setup finalization is performed → all report fields are validated and confirmed ready for message generation
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_FinalizeReportFieldSetup(["Start Step"])
E_FinalizeReportFieldSetup(["End Step"])
N_FinalizeReportFieldSetup_Node0{"Report field setup finalization is
performed"}:::decision N_FinalizeReportFieldSetup_Node0_action["All report fields are validated and
confirmed ready for message
generation"]:::main N_FinalizeReportFieldSetup_Node0 -- Yes --> N_FinalizeReportFieldSetup_Node0_action N_FinalizeReportFieldSetup_Node0_action --> E_FinalizeReportFieldSetup S_FinalizeReportFieldSetup --> N_FinalizeReportFieldSetup_Node0 N_FinalizeReportFieldSetup_Node0 -- No --> E_FinalizeReportFieldSetup
performed"}:::decision N_FinalizeReportFieldSetup_Node0_action["All report fields are validated and
confirmed ready for message
generation"]:::main N_FinalizeReportFieldSetup_Node0 -- Yes --> N_FinalizeReportFieldSetup_Node0_action N_FinalizeReportFieldSetup_Node0_action --> E_FinalizeReportFieldSetup S_FinalizeReportFieldSetup --> N_FinalizeReportFieldSetup_Node0 N_FinalizeReportFieldSetup_Node0 -- No --> E_FinalizeReportFieldSetup
File: GCX016.cbl
GIVEN:
Subject line format is set
WHEN:
Report field setup finalization is performed
THEN:
- All report fields are validated
- Confirmed ready for message generation
β Consolidated Acceptance Criteria
- Final readiness confirmation is performed → system confirms all fields are ready and message generation can proceed
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ReportFieldsReadyforMessageGeneration(["Start Step"])
E_ReportFieldsReadyforMessageGeneration(["End Step"])
N_ReportFieldsReadyforMessageGeneration_Node0{"Final readiness confirmation is
performed"}:::decision N_ReportFieldsReadyforMessageGeneration_Node0_action["System confirms all fields are
ready and message generation can
proceed"]:::main N_ReportFieldsReadyforMessageGeneration_Node0 -- Yes --> N_ReportFieldsReadyforMessageGeneration_Node0_action N_ReportFieldsReadyforMessageGeneration_Node0_action --> E_ReportFieldsReadyforMessageGeneration S_ReportFieldsReadyforMessageGeneration --> N_ReportFieldsReadyforMessageGeneration_Node0 N_ReportFieldsReadyforMessageGeneration_Node0 -- No --> E_ReportFieldsReadyforMessageGeneration
performed"}:::decision N_ReportFieldsReadyforMessageGeneration_Node0_action["System confirms all fields are
ready and message generation can
proceed"]:::main N_ReportFieldsReadyforMessageGeneration_Node0 -- Yes --> N_ReportFieldsReadyforMessageGeneration_Node0_action N_ReportFieldsReadyforMessageGeneration_Node0_action --> E_ReportFieldsReadyforMessageGeneration S_ReportFieldsReadyforMessageGeneration --> N_ReportFieldsReadyforMessageGeneration_Node0 N_ReportFieldsReadyforMessageGeneration_Node0 -- No --> E_ReportFieldsReadyforMessageGeneration
File: GCX016.cbl
GIVEN:
Report field setup is finalized
WHEN:
Final readiness confirmation is performed
THEN:
- System confirms all fields are ready
- Message generation can proceed
β Consolidated Acceptance Criteria
- The current sequence number is invalid, not found, or not readable → the sequence number should be initialized to 1
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_InitializeSequenceNumberto1(["Start Step"])
E_InitializeSequenceNumberto1(["End Step"])
N_InitializeSequenceNumberto1_Node0{"The current sequence number is
invalid, not found, or not readable"}:::decision N_InitializeSequenceNumberto1_Node0_action["The sequence number should be
initialized to 1"]:::exclusion N_InitializeSequenceNumberto1_Node0 -- Yes -->|Alternative| N_InitializeSequenceNumberto1_Node0_action N_InitializeSequenceNumberto1_Node0_action --> E_InitializeSequenceNumberto1 S_InitializeSequenceNumberto1 --> N_InitializeSequenceNumberto1_Node0 N_InitializeSequenceNumberto1_Node0 -- No --> E_InitializeSequenceNumberto1
invalid, not found, or not readable"}:::decision N_InitializeSequenceNumberto1_Node0_action["The sequence number should be
initialized to 1"]:::exclusion N_InitializeSequenceNumberto1_Node0 -- Yes -->|Alternative| N_InitializeSequenceNumberto1_Node0_action N_InitializeSequenceNumberto1_Node0_action --> E_InitializeSequenceNumberto1 S_InitializeSequenceNumberto1 --> N_InitializeSequenceNumberto1_Node0 N_InitializeSequenceNumberto1_Node0 -- No --> E_InitializeSequenceNumberto1
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
The machine sequence number management process is started
WHEN:
The current sequence number is invalid, not found, or not readable
THEN:
The sequence number should be initialized to 1
β Consolidated Acceptance Criteria
- A new transaction requires sequence number assignment → the sequence number should be incremented by 1
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IncrementSequenceNumberby1(["Start Step"])
E_IncrementSequenceNumberby1(["End Step"])
N_IncrementSequenceNumberby1_Node0{"A new transaction requires sequence
number assignment"}:::decision N_IncrementSequenceNumberby1_Node0_action["The sequence number should be
incremented by 1"]:::main N_IncrementSequenceNumberby1_Node0 -- Yes --> N_IncrementSequenceNumberby1_Node0_action N_IncrementSequenceNumberby1_Node0_action --> E_IncrementSequenceNumberby1 S_IncrementSequenceNumberby1 --> N_IncrementSequenceNumberby1_Node0 N_IncrementSequenceNumberby1_Node0 -- No --> E_IncrementSequenceNumberby1
number assignment"}:::decision N_IncrementSequenceNumberby1_Node0_action["The sequence number should be
incremented by 1"]:::main N_IncrementSequenceNumberby1_Node0 -- Yes --> N_IncrementSequenceNumberby1_Node0_action N_IncrementSequenceNumberby1_Node0_action --> E_IncrementSequenceNumberby1 S_IncrementSequenceNumberby1 --> N_IncrementSequenceNumberby1_Node0 N_IncrementSequenceNumberby1_Node0 -- No --> E_IncrementSequenceNumberby1
File: GCX016.cbl
GIVEN:
A valid machine sequence number exists
WHEN:
A new transaction requires sequence number assignment
THEN:
The sequence number should be incremented by 1
β Consolidated Acceptance Criteria
- The sequence number reaches the maximum allowable value → the sequence number should be reset to 1
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ResetSequenceNumberto1(["Start Step"])
E_ResetSequenceNumberto1(["End Step"])
N_ResetSequenceNumberto1_Node0{"The sequence number reaches the
maximum allowable value"}:::decision N_ResetSequenceNumberto1_Node0_action["The sequence number should be reset
to 1"]:::main N_ResetSequenceNumberto1_Node0 -- Yes --> N_ResetSequenceNumberto1_Node0_action N_ResetSequenceNumberto1_Node0_action --> E_ResetSequenceNumberto1 S_ResetSequenceNumberto1 --> N_ResetSequenceNumberto1_Node0 N_ResetSequenceNumberto1_Node0 -- No --> E_ResetSequenceNumberto1
maximum allowable value"}:::decision N_ResetSequenceNumberto1_Node0_action["The sequence number should be reset
to 1"]:::main N_ResetSequenceNumberto1_Node0 -- Yes --> N_ResetSequenceNumberto1_Node0_action N_ResetSequenceNumberto1_Node0_action --> E_ResetSequenceNumberto1 S_ResetSequenceNumberto1 --> N_ResetSequenceNumberto1_Node0 N_ResetSequenceNumberto1_Node0 -- No --> E_ResetSequenceNumberto1
File: GCX016.cbl
GIVEN:
The machine sequence number has been incremented
WHEN:
The sequence number reaches the maximum allowable value
THEN:
The sequence number should be reset to 1
β Consolidated Acceptance Criteria
- The sequence number update process is completed → the updated sequence number should be stored in the machine sequence counter for future use
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_StoreUpdatedSequenceNumber(["Start Step"])
E_StoreUpdatedSequenceNumber(["End Step"])
N_StoreUpdatedSequenceNumber_Node0{"The sequence number update process
is completed"}:::decision N_StoreUpdatedSequenceNumber_Node0_action["The updated sequence number should
be stored in the machine sequence
counter for future use"]:::main N_StoreUpdatedSequenceNumber_Node0 -- Yes --> N_StoreUpdatedSequenceNumber_Node0_action N_StoreUpdatedSequenceNumber_Node0_action --> E_StoreUpdatedSequenceNumber S_StoreUpdatedSequenceNumber --> N_StoreUpdatedSequenceNumber_Node0 N_StoreUpdatedSequenceNumber_Node0 -- No --> E_StoreUpdatedSequenceNumber
is completed"}:::decision N_StoreUpdatedSequenceNumber_Node0_action["The updated sequence number should
be stored in the machine sequence
counter for future use"]:::main N_StoreUpdatedSequenceNumber_Node0 -- Yes --> N_StoreUpdatedSequenceNumber_Node0_action N_StoreUpdatedSequenceNumber_Node0_action --> E_StoreUpdatedSequenceNumber S_StoreUpdatedSequenceNumber --> N_StoreUpdatedSequenceNumber_Node0 N_StoreUpdatedSequenceNumber_Node0 -- No --> E_StoreUpdatedSequenceNumber
File: GCX016.cbl
GIVEN:
The machine sequence number has been updated (incremented or reset)
WHEN:
The sequence number update process is completed
THEN:
The updated sequence number should be stored in the machine sequence counter for future use
β Consolidated Acceptance Criteria
- The sequence number management process is completed → the current sequence number should be returned for transaction tracking purposes
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ReturnSequenceNumberforTransactionTracking(["Start Step"])
E_ReturnSequenceNumberforTransactionTracking(["End Step"])
N_ReturnSequenceNumberforTransactionTracking_Node0{"The sequence number management
process is completed"}:::decision N_ReturnSequenceNumberforTransactionTracking_Node0_action["The current sequence number should
be returned for transaction tracking
purposes"]:::main N_ReturnSequenceNumberforTransactionTracking_Node0 -- Yes --> N_ReturnSequenceNumberforTransactionTracking_Node0_action N_ReturnSequenceNumberforTransactionTracking_Node0_action --> E_ReturnSequenceNumberforTransactionTracking S_ReturnSequenceNumberforTransactionTracking --> N_ReturnSequenceNumberforTransactionTracking_Node0 N_ReturnSequenceNumberforTransactionTracking_Node0 -- No --> E_ReturnSequenceNumberforTransactionTracking
process is completed"}:::decision N_ReturnSequenceNumberforTransactionTracking_Node0_action["The current sequence number should
be returned for transaction tracking
purposes"]:::main N_ReturnSequenceNumberforTransactionTracking_Node0 -- Yes --> N_ReturnSequenceNumberforTransactionTracking_Node0_action N_ReturnSequenceNumberforTransactionTracking_Node0_action --> E_ReturnSequenceNumberforTransactionTracking S_ReturnSequenceNumberforTransactionTracking --> N_ReturnSequenceNumberforTransactionTracking_Node0 N_ReturnSequenceNumberforTransactionTracking_Node0 -- No --> E_ReturnSequenceNumberforTransactionTracking
File: GCX016.cbl
GIVEN:
The machine sequence number has been successfully updated and stored
WHEN:
The sequence number management process is completed
THEN:
The current sequence number should be returned for transaction tracking purposes
β Consolidated Acceptance Criteria
- Train operation parameters need to be established → system sets appropriate flags and counters for train message processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetTrainOperationParameters(["Start Step"])
E_SetTrainOperationParameters(["End Step"])
N_SetTrainOperationParameters_Node0{"Train operation parameters need to
be established"}:::decision N_SetTrainOperationParameters_Node0_action["System sets appropriate flags and
counters for train message
processing"]:::main N_SetTrainOperationParameters_Node0 -- Yes --> N_SetTrainOperationParameters_Node0_action N_SetTrainOperationParameters_Node0_action --> E_SetTrainOperationParameters S_SetTrainOperationParameters --> N_SetTrainOperationParameters_Node0 N_SetTrainOperationParameters_Node0 -- No --> E_SetTrainOperationParameters
be established"}:::decision N_SetTrainOperationParameters_Node0_action["System sets appropriate flags and
counters for train message
processing"]:::main N_SetTrainOperationParameters_Node0 -- Yes --> N_SetTrainOperationParameters_Node0_action N_SetTrainOperationParameters_Node0_action --> E_SetTrainOperationParameters S_SetTrainOperationParameters --> N_SetTrainOperationParameters_Node0 N_SetTrainOperationParameters_Node0 -- No --> E_SetTrainOperationParameters
File: GCX016.cbl
GIVEN:
Message queue arrays are initialized
WHEN:
Train operation parameters need to be established
THEN:
- System sets appropriate flags
- Counters for train message processing
β Consolidated Acceptance Criteria
- The segment type is identified as M10 manifest segment → the system routes the segment for train manifest processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ProcessM10ManifestSegment(["Start Step"])
E_ProcessM10ManifestSegment(["End Step"])
N_ProcessM10ManifestSegment_Node0{"The segment type is identified as
M10 manifest segment"}:::decision N_ProcessM10ManifestSegment_Node0_action["The system routes the segment for
train manifest processing"]:::main N_ProcessM10ManifestSegment_Node0 -- Yes --> N_ProcessM10ManifestSegment_Node0_action N_ProcessM10ManifestSegment_Node0_action --> E_ProcessM10ManifestSegment S_ProcessM10ManifestSegment --> N_ProcessM10ManifestSegment_Node0 N_ProcessM10ManifestSegment_Node0 -- No --> E_ProcessM10ManifestSegment
M10 manifest segment"}:::decision N_ProcessM10ManifestSegment_Node0_action["The system routes the segment for
train manifest processing"]:::main N_ProcessM10ManifestSegment_Node0 -- Yes --> N_ProcessM10ManifestSegment_Node0_action N_ProcessM10ManifestSegment_Node0_action --> E_ProcessM10ManifestSegment S_ProcessM10ManifestSegment --> N_ProcessM10ManifestSegment_Node0 N_ProcessM10ManifestSegment_Node0 -- No --> E_ProcessM10ManifestSegment
File: GCX016.cbl
GIVEN:
A message segment is available for processing
WHEN:
The segment type is identified as M10 manifest segment
THEN:
The system routes the segment for train manifest processing
β Consolidated Acceptance Criteria
- The segment type is identified as V9 event detail segment → the system routes the segment for train event processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ProcessV9EventDetailSegment(["Start Step"])
E_ProcessV9EventDetailSegment(["End Step"])
N_ProcessV9EventDetailSegment_Node0{"The segment type is identified as
V9 event detail segment"}:::decision N_ProcessV9EventDetailSegment_Node0_action["The system routes the segment for
train event processing"]:::main N_ProcessV9EventDetailSegment_Node0 -- Yes --> N_ProcessV9EventDetailSegment_Node0_action N_ProcessV9EventDetailSegment_Node0_action --> E_ProcessV9EventDetailSegment S_ProcessV9EventDetailSegment --> N_ProcessV9EventDetailSegment_Node0 N_ProcessV9EventDetailSegment_Node0 -- No --> E_ProcessV9EventDetailSegment
V9 event detail segment"}:::decision N_ProcessV9EventDetailSegment_Node0_action["The system routes the segment for
train event processing"]:::main N_ProcessV9EventDetailSegment_Node0 -- Yes --> N_ProcessV9EventDetailSegment_Node0_action N_ProcessV9EventDetailSegment_Node0_action --> E_ProcessV9EventDetailSegment S_ProcessV9EventDetailSegment --> N_ProcessV9EventDetailSegment_Node0 N_ProcessV9EventDetailSegment_Node0 -- No --> E_ProcessV9EventDetailSegment
File: GCX016.cbl
GIVEN:
A message segment is available for processing
WHEN:
The segment type is identified as V9 event detail segment
THEN:
The system routes the segment for train event processing
β Consolidated Acceptance Criteria
- Train information extraction is required → system extracts vessel name, train identifier, and related manifest data for validation
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExtractTrainInformation(["Start Step"])
E_ExtractTrainInformation(["End Step"])
N_ExtractTrainInformation_Node0{"Train information extraction is
required"}:::decision N_ExtractTrainInformation_Node0_action["System extracts vessel name, train
identifier, and related manifest
data for validation"]:::main N_ExtractTrainInformation_Node0 -- Yes --> N_ExtractTrainInformation_Node0_action N_ExtractTrainInformation_Node0_action --> E_ExtractTrainInformation S_ExtractTrainInformation --> N_ExtractTrainInformation_Node0 N_ExtractTrainInformation_Node0 -- No --> E_ExtractTrainInformation
required"}:::decision N_ExtractTrainInformation_Node0_action["System extracts vessel name, train
identifier, and related manifest
data for validation"]:::main N_ExtractTrainInformation_Node0 -- Yes --> N_ExtractTrainInformation_Node0_action N_ExtractTrainInformation_Node0_action --> E_ExtractTrainInformation S_ExtractTrainInformation --> N_ExtractTrainInformation_Node0 N_ExtractTrainInformation_Node0 -- No --> E_ExtractTrainInformation
File: GCX016.cbl
GIVEN:
An M10 manifest segment is being processed
WHEN:
Train information extraction is required
THEN:
System extracts vessel name, train identifier, and related manifest data for validation
β Consolidated Acceptance Criteria
- Train validation is performed → system confirms train exists in database or generates appropriate error for non-existent trains
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ValidateTrainExistence(["Start Step"])
E_ValidateTrainExistence(["End Step"])
N_ValidateTrainExistence_Node0{"Train validation is performed"}:::decision
N_ValidateTrainExistence_Node0_action["System confirms train exists in
database or generates appropriate
error for non-existent trains"]:::main N_ValidateTrainExistence_Node0 -- Yes --> N_ValidateTrainExistence_Node0_action N_ValidateTrainExistence_Node0_action --> E_ValidateTrainExistence S_ValidateTrainExistence --> N_ValidateTrainExistence_Node0 N_ValidateTrainExistence_Node0 -- No --> E_ValidateTrainExistence
database or generates appropriate
error for non-existent trains"]:::main N_ValidateTrainExistence_Node0 -- Yes --> N_ValidateTrainExistence_Node0_action N_ValidateTrainExistence_Node0_action --> E_ValidateTrainExistence S_ValidateTrainExistence --> N_ValidateTrainExistence_Node0 N_ValidateTrainExistence_Node0 -- No --> E_ValidateTrainExistence
File: GCX016.cbl
GIVEN:
Train information has been extracted from manifest
WHEN:
Train validation is performed
THEN:
System confirms train exists in database or generates appropriate error for non-existent trains
β Consolidated Acceptance Criteria
- The disposition code is POD (Port of Discharge) or AAD (Actual Arrival Date) → system sets train arrival processing parameters and flags
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetTrainArrivalParameters(["Start Step"])
E_SetTrainArrivalParameters(["End Step"])
N_SetTrainArrivalParameters_Node0{"The disposition code is POD Port of
Discharge or AAD Actual Arrival Date"}:::decision N_SetTrainArrivalParameters_Node0_action["System sets train arrival
processing parameters and flags"]:::main N_SetTrainArrivalParameters_Node0 -- Yes --> N_SetTrainArrivalParameters_Node0_action N_SetTrainArrivalParameters_Node0_action --> E_SetTrainArrivalParameters S_SetTrainArrivalParameters --> N_SetTrainArrivalParameters_Node0 N_SetTrainArrivalParameters_Node0 -- No --> E_SetTrainArrivalParameters
Discharge or AAD Actual Arrival Date"}:::decision N_SetTrainArrivalParameters_Node0_action["System sets train arrival
processing parameters and flags"]:::main N_SetTrainArrivalParameters_Node0 -- Yes --> N_SetTrainArrivalParameters_Node0_action N_SetTrainArrivalParameters_Node0_action --> E_SetTrainArrivalParameters S_SetTrainArrivalParameters --> N_SetTrainArrivalParameters_Node0 N_SetTrainArrivalParameters_Node0 -- No --> E_SetTrainArrivalParameters
File: GCX016.cbl
GIVEN:
A disposition code has been extracted from V9 segment
WHEN:
The disposition code is POD (Port of Discharge) or AAD (Actual Arrival Date)
THEN:
- System sets train arrival processing parameters
- Flags
β Consolidated Acceptance Criteria
- The disposition code is COC (Cancel on Condition) → system sets train cancellation processing parameters and flags
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetTrainCancellationParameters(["Start Step"])
E_SetTrainCancellationParameters(["End Step"])
N_SetTrainCancellationParameters_Node0{"The disposition code is COC Cancel
on Condition"}:::decision N_SetTrainCancellationParameters_Node0_action["System sets train cancellation
processing parameters and flags"]:::main N_SetTrainCancellationParameters_Node0 -- Yes --> N_SetTrainCancellationParameters_Node0_action N_SetTrainCancellationParameters_Node0_action --> E_SetTrainCancellationParameters S_SetTrainCancellationParameters --> N_SetTrainCancellationParameters_Node0 N_SetTrainCancellationParameters_Node0 -- No --> E_SetTrainCancellationParameters
on Condition"}:::decision N_SetTrainCancellationParameters_Node0_action["System sets train cancellation
processing parameters and flags"]:::main N_SetTrainCancellationParameters_Node0 -- Yes --> N_SetTrainCancellationParameters_Node0_action N_SetTrainCancellationParameters_Node0_action --> E_SetTrainCancellationParameters S_SetTrainCancellationParameters --> N_SetTrainCancellationParameters_Node0 N_SetTrainCancellationParameters_Node0 -- No --> E_SetTrainCancellationParameters
File: GCX016.cbl
GIVEN:
A disposition code has been extracted from V9 segment
WHEN:
The disposition code is COC (Cancel on Condition)
THEN:
- System sets train cancellation processing parameters
- Flags
β Consolidated Acceptance Criteria
- A new message array entry is needed → system initializes array entry with proper structure and default values
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_InitializeMessageArrayEntry(["Start Step"])
E_InitializeMessageArrayEntry(["End Step"])
N_InitializeMessageArrayEntry_Node0{"A new message array entry is needed"}:::decision
N_InitializeMessageArrayEntry_Node0_action["System initializes array entry with
proper structure and default values"]:::main N_InitializeMessageArrayEntry_Node0 -- Yes --> N_InitializeMessageArrayEntry_Node0_action N_InitializeMessageArrayEntry_Node0_action --> E_InitializeMessageArrayEntry S_InitializeMessageArrayEntry --> N_InitializeMessageArrayEntry_Node0 N_InitializeMessageArrayEntry_Node0 -- No --> E_InitializeMessageArrayEntry
proper structure and default values"]:::main N_InitializeMessageArrayEntry_Node0 -- Yes --> N_InitializeMessageArrayEntry_Node0_action N_InitializeMessageArrayEntry_Node0_action --> E_InitializeMessageArrayEntry S_InitializeMessageArrayEntry --> N_InitializeMessageArrayEntry_Node0 N_InitializeMessageArrayEntry_Node0 -- No --> E_InitializeMessageArrayEntry
File: GCX016.cbl
GIVEN:
A train segment requires array storage
WHEN:
A new message array entry is needed
THEN:
- System initializes array entry with proper structure
- Default values
β Consolidated Acceptance Criteria
- Array entry count calculation is required → system increments entry count and maintains accurate array index
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CalculateArrayEntryCount(["Start Step"])
E_CalculateArrayEntryCount(["End Step"])
N_CalculateArrayEntryCount_Node0{"Array entry count calculation is
required"}:::decision N_CalculateArrayEntryCount_Node0_action["System increments entry count and
maintains accurate array index"]:::main N_CalculateArrayEntryCount_Node0 -- Yes --> N_CalculateArrayEntryCount_Node0_action N_CalculateArrayEntryCount_Node0_action --> E_CalculateArrayEntryCount S_CalculateArrayEntryCount --> N_CalculateArrayEntryCount_Node0 N_CalculateArrayEntryCount_Node0 -- No --> E_CalculateArrayEntryCount
required"}:::decision N_CalculateArrayEntryCount_Node0_action["System increments entry count and
maintains accurate array index"]:::main N_CalculateArrayEntryCount_Node0 -- Yes --> N_CalculateArrayEntryCount_Node0_action N_CalculateArrayEntryCount_Node0_action --> E_CalculateArrayEntryCount S_CalculateArrayEntryCount --> N_CalculateArrayEntryCount_Node0 N_CalculateArrayEntryCount_Node0 -- No --> E_CalculateArrayEntryCount
File: GCX016.cbl
GIVEN:
Message array entries are being added
WHEN:
Array entry count calculation is required
THEN:
- System increments entry count
- Maintains accurate array index
β Consolidated Acceptance Criteria
- Data storage in message array is required → system stores segment data in the correct array entry with proper formatting
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_StoreSegmentDatainArray(["Start Step"])
E_StoreSegmentDatainArray(["End Step"])
N_StoreSegmentDatainArray_Node0{"Data storage in message array is
required"}:::decision N_StoreSegmentDatainArray_Node0_action["System stores segment data in the
correct array entry with proper
formatting"]:::main N_StoreSegmentDatainArray_Node0 -- Yes --> N_StoreSegmentDatainArray_Node0_action N_StoreSegmentDatainArray_Node0_action --> E_StoreSegmentDatainArray S_StoreSegmentDatainArray --> N_StoreSegmentDatainArray_Node0 N_StoreSegmentDatainArray_Node0 -- No --> E_StoreSegmentDatainArray
required"}:::decision N_StoreSegmentDatainArray_Node0_action["System stores segment data in the
correct array entry with proper
formatting"]:::main N_StoreSegmentDatainArray_Node0 -- Yes --> N_StoreSegmentDatainArray_Node0_action N_StoreSegmentDatainArray_Node0_action --> E_StoreSegmentDatainArray S_StoreSegmentDatainArray --> N_StoreSegmentDatainArray_Node0 N_StoreSegmentDatainArray_Node0 -- No --> E_StoreSegmentDatainArray
File: GCX016.cbl
GIVEN:
Segment data has been processed and validated
WHEN:
Data storage in message array is required
THEN:
System stores segment data in the correct array entry with proper formatting
β Consolidated Acceptance Criteria
- System checks for additional segments to process → system continues processing if more segments exist or proceeds to finalization if complete
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MoreSegments(["Start Step"])
E_MoreSegments(["End Step"])
N_MoreSegments_Node0{"System checks for additional
segments to process"}:::decision N_MoreSegments_Node0_action["System continues processing if more
segments exist or proceeds to
finalization if complete"]:::main N_MoreSegments_Node0 -- Yes --> N_MoreSegments_Node0_action N_MoreSegments_Node0_action --> E_MoreSegments S_MoreSegments --> N_MoreSegments_Node0 N_MoreSegments_Node0 -- No --> E_MoreSegments
segments to process"}:::decision N_MoreSegments_Node0_action["System continues processing if more
segments exist or proceeds to
finalization if complete"]:::main N_MoreSegments_Node0 -- Yes --> N_MoreSegments_Node0_action N_MoreSegments_Node0_action --> E_MoreSegments S_MoreSegments --> N_MoreSegments_Node0 N_MoreSegments_Node0 -- No --> E_MoreSegments
File: GCX016.cbl
GIVEN:
Current segment has been processed and stored
WHEN:
System checks for additional segments to process
THEN:
System continues processing if more segments exist or proceeds to finalization if complete
β Consolidated Acceptance Criteria
- Array structure finalization is required → system finalizes array structure and prepares for train operation execution
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_FinalizeArrayStructure(["Start Step"])
E_FinalizeArrayStructure(["End Step"])
N_FinalizeArrayStructure_Node0{"Array structure finalization is
required"}:::decision N_FinalizeArrayStructure_Node0_action["System finalizes array structure
and prepares for train operation
execution"]:::main N_FinalizeArrayStructure_Node0 -- Yes --> N_FinalizeArrayStructure_Node0_action N_FinalizeArrayStructure_Node0_action --> E_FinalizeArrayStructure S_FinalizeArrayStructure --> N_FinalizeArrayStructure_Node0 N_FinalizeArrayStructure_Node0 -- No --> E_FinalizeArrayStructure
required"}:::decision N_FinalizeArrayStructure_Node0_action["System finalizes array structure
and prepares for train operation
execution"]:::main N_FinalizeArrayStructure_Node0 -- Yes --> N_FinalizeArrayStructure_Node0_action N_FinalizeArrayStructure_Node0_action --> E_FinalizeArrayStructure S_FinalizeArrayStructure --> N_FinalizeArrayStructure_Node0 N_FinalizeArrayStructure_Node0 -- No --> E_FinalizeArrayStructure
File: GCX016.cbl
GIVEN:
All required segments have been processed and stored
WHEN:
Array structure finalization is required
THEN:
- System finalizes array structure
- Prepares for train operation execution
β Consolidated Acceptance Criteria
- Processing control flags need to be set → system sets flags indicating successful initialization and readiness for train operation processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetProcessingFlags(["Start Step"])
E_SetProcessingFlags(["End Step"])
N_SetProcessingFlags_Node0{"Processing control flags need to be
set"}:::decision N_SetProcessingFlags_Node0_action["System sets flags indicating
successful initialization and
readiness for train operation
processing"]:::main N_SetProcessingFlags_Node0 -- Yes --> N_SetProcessingFlags_Node0_action N_SetProcessingFlags_Node0_action --> E_SetProcessingFlags S_SetProcessingFlags --> N_SetProcessingFlags_Node0 N_SetProcessingFlags_Node0 -- No --> E_SetProcessingFlags
set"}:::decision N_SetProcessingFlags_Node0_action["System sets flags indicating
successful initialization and
readiness for train operation
processing"]:::main N_SetProcessingFlags_Node0 -- Yes --> N_SetProcessingFlags_Node0_action N_SetProcessingFlags_Node0_action --> E_SetProcessingFlags S_SetProcessingFlags --> N_SetProcessingFlags_Node0 N_SetProcessingFlags_Node0 -- No --> E_SetProcessingFlags
File: GCX016.cbl
GIVEN:
Message array structure has been finalized
WHEN:
Processing control flags need to be set
THEN:
- System sets flags indicating successful initialization
- Readiness for train operation processing
β Consolidated Acceptance Criteria
- Queue manager name is being set → queue manager name is assigned to connection configuration
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetQueueManagerName(["Start Step"])
E_SetQueueManagerName(["End Step"])
N_SetQueueManagerName_Node0{"queue manager name is being set"}:::decision
N_SetQueueManagerName_Node0_action["queue manager name is assigned to
connection configuration"]:::main N_SetQueueManagerName_Node0 -- Yes --> N_SetQueueManagerName_Node0_action N_SetQueueManagerName_Node0_action --> E_SetQueueManagerName S_SetQueueManagerName --> N_SetQueueManagerName_Node0 N_SetQueueManagerName_Node0 -- No --> E_SetQueueManagerName
connection configuration"]:::main N_SetQueueManagerName_Node0 -- Yes --> N_SetQueueManagerName_Node0_action N_SetQueueManagerName_Node0_action --> E_SetQueueManagerName S_SetQueueManagerName --> N_SetQueueManagerName_Node0 N_SetQueueManagerName_Node0 -- No --> E_SetQueueManagerName
File: GCX016.cbl
GIVEN:
MQ connection parameters are being configured
WHEN:
queue manager name is being set
THEN:
queue manager name is assigned to connection configuration
β Consolidated Acceptance Criteria
- Connection options are being configured → connection options are set according to system requirements
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetConnectionOptions(["Start Step"])
E_SetConnectionOptions(["End Step"])
N_SetConnectionOptions_Node0{"connection options are being
configured"}:::decision N_SetConnectionOptions_Node0_action["connection options are set
according to system requirements"]:::main N_SetConnectionOptions_Node0 -- Yes --> N_SetConnectionOptions_Node0_action N_SetConnectionOptions_Node0_action --> E_SetConnectionOptions S_SetConnectionOptions --> N_SetConnectionOptions_Node0 N_SetConnectionOptions_Node0 -- No --> E_SetConnectionOptions
configured"}:::decision N_SetConnectionOptions_Node0_action["connection options are set
according to system requirements"]:::main N_SetConnectionOptions_Node0 -- Yes --> N_SetConnectionOptions_Node0_action N_SetConnectionOptions_Node0_action --> E_SetConnectionOptions S_SetConnectionOptions --> N_SetConnectionOptions_Node0 N_SetConnectionOptions_Node0 -- No --> E_SetConnectionOptions
File: GCX016.cbl
GIVEN:
queue manager name has been set
WHEN:
connection options are being configured
THEN:
connection options are set according to system requirements
β Consolidated Acceptance Criteria
- Setting connection status → connection status is set to active state
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetConnectionStatusActive(["Start Step"])
E_SetConnectionStatusActive(["End Step"])
N_SetConnectionStatusActive_Node0{"setting connection status"}:::decision
N_SetConnectionStatusActive_Node0_action["connection status is set to active
state"]:::main N_SetConnectionStatusActive_Node0 -- Yes --> N_SetConnectionStatusActive_Node0_action N_SetConnectionStatusActive_Node0_action --> E_SetConnectionStatusActive S_SetConnectionStatusActive --> N_SetConnectionStatusActive_Node0 N_SetConnectionStatusActive_Node0 -- No --> E_SetConnectionStatusActive
state"]:::main N_SetConnectionStatusActive_Node0 -- Yes --> N_SetConnectionStatusActive_Node0_action N_SetConnectionStatusActive_Node0_action --> E_SetConnectionStatusActive S_SetConnectionStatusActive --> N_SetConnectionStatusActive_Node0 N_SetConnectionStatusActive_Node0 -- No --> E_SetConnectionStatusActive
File: GCX016.cbl
GIVEN:
MQ connection was successful and logged
WHEN:
setting connection status
THEN:
connection status is set to active state
β Consolidated Acceptance Criteria
- Confirming readiness for message processing → system indicates MQ connection is ready for message operations
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ConnectionReadyforMessageProcessing(["Start Step"])
E_ConnectionReadyforMessageProcessing(["End Step"])
N_ConnectionReadyforMessageProcessing_Node0{"confirming readiness for message
processing"}:::decision N_ConnectionReadyforMessageProcessing_Node0_action["system indicates MQ connection is
ready for message operations"]:::main N_ConnectionReadyforMessageProcessing_Node0 -- Yes --> N_ConnectionReadyforMessageProcessing_Node0_action N_ConnectionReadyforMessageProcessing_Node0_action --> E_ConnectionReadyforMessageProcessing S_ConnectionReadyforMessageProcessing --> N_ConnectionReadyforMessageProcessing_Node0 N_ConnectionReadyforMessageProcessing_Node0 -- No --> E_ConnectionReadyforMessageProcessing
processing"}:::decision N_ConnectionReadyforMessageProcessing_Node0_action["system indicates MQ connection is
ready for message operations"]:::main N_ConnectionReadyforMessageProcessing_Node0 -- Yes --> N_ConnectionReadyforMessageProcessing_Node0_action N_ConnectionReadyforMessageProcessing_Node0_action --> E_ConnectionReadyforMessageProcessing S_ConnectionReadyforMessageProcessing --> N_ConnectionReadyforMessageProcessing_Node0 N_ConnectionReadyforMessageProcessing_Node0 -- No --> E_ConnectionReadyforMessageProcessing
File: GCX016.cbl
GIVEN:
connection status is set to active
WHEN:
confirming readiness for message processing
THEN:
system indicates MQ connection is ready for message operations
β Consolidated Acceptance Criteria
- Setting error information → error code and descriptive message are assigned based on failure reason
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetErrorCodeandMessage(["Start Step"])
E_SetErrorCodeandMessage(["End Step"])
N_SetErrorCodeandMessage_Node0{"setting error information"}:::decision
N_SetErrorCodeandMessage_Node0_action["error code and descriptive message
are assigned based on failure reason"]:::exclusion N_SetErrorCodeandMessage_Node0 -- Yes -->|Alternative| N_SetErrorCodeandMessage_Node0_action N_SetErrorCodeandMessage_Node0_action --> E_SetErrorCodeandMessage S_SetErrorCodeandMessage --> N_SetErrorCodeandMessage_Node0 N_SetErrorCodeandMessage_Node0 -- No --> E_SetErrorCodeandMessage
are assigned based on failure reason"]:::exclusion N_SetErrorCodeandMessage_Node0 -- Yes -->|Alternative| N_SetErrorCodeandMessage_Node0_action N_SetErrorCodeandMessage_Node0_action --> E_SetErrorCodeandMessage S_SetErrorCodeandMessage --> N_SetErrorCodeandMessage_Node0 N_SetErrorCodeandMessage_Node0 -- No --> E_SetErrorCodeandMessage
File: GCX016.cbl
GIVEN:
connection error has been logged
WHEN:
setting error information
THEN:
- Error code
- Descriptive message are assigned based on failure reason
β Consolidated Acceptance Criteria
- Evaluating retry decision → system determines if connection should be retried based on error type and retry policy
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RetryConnection(["Start Step"])
E_RetryConnection(["End Step"])
N_RetryConnection_Node0{"evaluating retry decision"}:::decision
N_RetryConnection_Node0_action["system determines if connection
should be retried based on error
type and retry policy"]:::main N_RetryConnection_Node0 -- Yes --> N_RetryConnection_Node0_action N_RetryConnection_Node0_action --> E_RetryConnection S_RetryConnection --> N_RetryConnection_Node0 N_RetryConnection_Node0 -- No --> E_RetryConnection
should be retried based on error
type and retry policy"]:::main N_RetryConnection_Node0 -- Yes --> N_RetryConnection_Node0_action N_RetryConnection_Node0_action --> E_RetryConnection S_RetryConnection --> N_RetryConnection_Node0 N_RetryConnection_Node0 -- No --> E_RetryConnection
File: GCX016.cbl
GIVEN:
MQ connection failed and error information is set
WHEN:
evaluating retry decision
THEN:
- System determines if connection should be retried based on error type
- Retry policy
β Consolidated Acceptance Criteria
- Waiting before retry → system waits for configured retry interval
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_WaitBeforeRetry(["Start Step"])
E_WaitBeforeRetry(["End Step"])
N_WaitBeforeRetry_Node0{"waiting before retry"}:::decision
N_WaitBeforeRetry_Node0_action["system waits for configured retry
interval"]:::main N_WaitBeforeRetry_Node0 -- Yes --> N_WaitBeforeRetry_Node0_action N_WaitBeforeRetry_Node0_action --> E_WaitBeforeRetry S_WaitBeforeRetry --> N_WaitBeforeRetry_Node0 N_WaitBeforeRetry_Node0 -- No --> E_WaitBeforeRetry
interval"]:::main N_WaitBeforeRetry_Node0 -- Yes --> N_WaitBeforeRetry_Node0_action N_WaitBeforeRetry_Node0_action --> E_WaitBeforeRetry S_WaitBeforeRetry --> N_WaitBeforeRetry_Node0 N_WaitBeforeRetry_Node0 -- No --> E_WaitBeforeRetry
File: GCX016.cbl
GIVEN:
retry decision is positive
WHEN:
waiting before retry
THEN:
system waits for configured retry interval
β Consolidated Acceptance Criteria
- Checking maximum retries → system determines if retry counter equals or exceeds maximum allowed retries
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MaxRetriesReached(["Start Step"])
E_MaxRetriesReached(["End Step"])
N_MaxRetriesReached_Node0{"checking maximum retries"}:::decision
N_MaxRetriesReached_Node0_action["system determines if retry counter
equals or exceeds maximum allowed
retries"]:::main N_MaxRetriesReached_Node0 -- Yes --> N_MaxRetriesReached_Node0_action N_MaxRetriesReached_Node0_action --> E_MaxRetriesReached S_MaxRetriesReached --> N_MaxRetriesReached_Node0 N_MaxRetriesReached_Node0 -- No --> E_MaxRetriesReached
equals or exceeds maximum allowed
retries"]:::main N_MaxRetriesReached_Node0 -- Yes --> N_MaxRetriesReached_Node0_action N_MaxRetriesReached_Node0_action --> E_MaxRetriesReached S_MaxRetriesReached --> N_MaxRetriesReached_Node0 N_MaxRetriesReached_Node0 -- No --> E_MaxRetriesReached
File: GCX016.cbl
GIVEN:
retry counter has been incremented
WHEN:
checking maximum retries
THEN:
system determines if retry counter equals or exceeds maximum allowed retries
β Consolidated Acceptance Criteria
- Setting connection failed status → connection status is set to failed state
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetConnectionFailedStatus(["Start Step"])
E_SetConnectionFailedStatus(["End Step"])
N_SetConnectionFailedStatus_Node0{"setting connection failed status"}:::decision
N_SetConnectionFailedStatus_Node0_action["connection status is set to failed
state"]:::exclusion N_SetConnectionFailedStatus_Node0 -- Yes -->|Alternative| N_SetConnectionFailedStatus_Node0_action N_SetConnectionFailedStatus_Node0_action --> E_SetConnectionFailedStatus S_SetConnectionFailedStatus --> N_SetConnectionFailedStatus_Node0 N_SetConnectionFailedStatus_Node0 -- No --> E_SetConnectionFailedStatus
state"]:::exclusion N_SetConnectionFailedStatus_Node0 -- Yes -->|Alternative| N_SetConnectionFailedStatus_Node0_action N_SetConnectionFailedStatus_Node0_action --> E_SetConnectionFailedStatus S_SetConnectionFailedStatus --> N_SetConnectionFailedStatus_Node0 N_SetConnectionFailedStatus_Node0 -- No --> E_SetConnectionFailedStatus
File: GCX016.cbl
GIVEN:
maximum retries reached or retry decision is negative
WHEN:
setting connection failed status
THEN:
connection status is set to failed state
β Consolidated Acceptance Criteria
- Notifying system administrator → administrator notification is sent with connection failure details
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_NotifySystemAdministrator(["Start Step"])
E_NotifySystemAdministrator(["End Step"])
N_NotifySystemAdministrator_Node0{"notifying system administrator"}:::decision
N_NotifySystemAdministrator_Node0_action["administrator notification is sent
with connection failure details"]:::main N_NotifySystemAdministrator_Node0 -- Yes --> N_NotifySystemAdministrator_Node0_action N_NotifySystemAdministrator_Node0_action --> E_NotifySystemAdministrator S_NotifySystemAdministrator --> N_NotifySystemAdministrator_Node0 N_NotifySystemAdministrator_Node0 -- No --> E_NotifySystemAdministrator
with connection failure details"]:::main N_NotifySystemAdministrator_Node0 -- Yes --> N_NotifySystemAdministrator_Node0_action N_NotifySystemAdministrator_Node0_action --> E_NotifySystemAdministrator S_NotifySystemAdministrator --> N_NotifySystemAdministrator_Node0 N_NotifySystemAdministrator_Node0 -- No --> E_NotifySystemAdministrator
File: GCX016.cbl
GIVEN:
connection status is set to failed
WHEN:
notifying system administrator
THEN:
administrator notification is sent with connection failure details
β Consolidated Acceptance Criteria
- Monitoring connection health → system checks connection status periodically
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MonitorConnectionHealth(["Start Step"])
E_MonitorConnectionHealth(["End Step"])
N_MonitorConnectionHealth_Node0{"monitoring connection health"}:::decision
N_MonitorConnectionHealth_Node0_action["system checks connection status
periodically"]:::main N_MonitorConnectionHealth_Node0 -- Yes --> N_MonitorConnectionHealth_Node0_action N_MonitorConnectionHealth_Node0_action --> E_MonitorConnectionHealth S_MonitorConnectionHealth --> N_MonitorConnectionHealth_Node0 N_MonitorConnectionHealth_Node0 -- No --> E_MonitorConnectionHealth
periodically"]:::main N_MonitorConnectionHealth_Node0 -- Yes --> N_MonitorConnectionHealth_Node0_action N_MonitorConnectionHealth_Node0_action --> E_MonitorConnectionHealth S_MonitorConnectionHealth --> N_MonitorConnectionHealth_Node0 N_MonitorConnectionHealth_Node0 -- No --> E_MonitorConnectionHealth
File: GCX016.cbl
GIVEN:
MQ connection is ready for message processing
WHEN:
monitoring connection health
THEN:
system checks connection status periodically
β Consolidated Acceptance Criteria
- Checking if connection is still active → system determines current connection status
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ConnectionStillActive(["Start Step"])
E_ConnectionStillActive(["End Step"])
N_ConnectionStillActive_Node0{"checking if connection is still
active"}:::decision N_ConnectionStillActive_Node0_action["system determines current
connection status"]:::main N_ConnectionStillActive_Node0 -- Yes --> N_ConnectionStillActive_Node0_action N_ConnectionStillActive_Node0_action --> E_ConnectionStillActive S_ConnectionStillActive --> N_ConnectionStillActive_Node0 N_ConnectionStillActive_Node0 -- No --> E_ConnectionStillActive
active"}:::decision N_ConnectionStillActive_Node0_action["system determines current
connection status"]:::main N_ConnectionStillActive_Node0 -- Yes --> N_ConnectionStillActive_Node0_action N_ConnectionStillActive_Node0_action --> E_ConnectionStillActive S_ConnectionStillActive --> N_ConnectionStillActive_Node0 N_ConnectionStillActive_Node0 -- No --> E_ConnectionStillActive
File: GCX016.cbl
GIVEN:
connection health monitoring is active
WHEN:
checking if connection is still active
THEN:
system determines current connection status
β Consolidated Acceptance Criteria
- Continuing normal processing → system proceeds with regular message processing operations
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ContinueNormalProcessing(["Start Step"])
E_ContinueNormalProcessing(["End Step"])
N_ContinueNormalProcessing_Node0{"continuing normal processing"}:::decision
N_ContinueNormalProcessing_Node0_action["system proceeds with regular
message processing operations"]:::main N_ContinueNormalProcessing_Node0 -- Yes --> N_ContinueNormalProcessing_Node0_action N_ContinueNormalProcessing_Node0_action --> E_ContinueNormalProcessing S_ContinueNormalProcessing --> N_ContinueNormalProcessing_Node0 N_ContinueNormalProcessing_Node0 -- No --> E_ContinueNormalProcessing
message processing operations"]:::main N_ContinueNormalProcessing_Node0 -- Yes --> N_ContinueNormalProcessing_Node0_action N_ContinueNormalProcessing_Node0_action --> E_ContinueNormalProcessing S_ContinueNormalProcessing --> N_ContinueNormalProcessing_Node0 N_ContinueNormalProcessing_Node0 -- No --> E_ContinueNormalProcessing
File: GCX016.cbl
GIVEN:
connection is verified as still active
WHEN:
continuing normal processing
THEN:
system proceeds with regular message processing operations
β Consolidated Acceptance Criteria
- Attempting reconnection → system initiates new connection attempt using existing parameters
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AttemptReconnection(["Start Step"])
E_AttemptReconnection(["End Step"])
N_AttemptReconnection_Node0{"attempting reconnection"}:::decision
N_AttemptReconnection_Node0_action["system initiates new connection
attempt using existing parameters"]:::main N_AttemptReconnection_Node0 -- Yes --> N_AttemptReconnection_Node0_action N_AttemptReconnection_Node0_action --> E_AttemptReconnection S_AttemptReconnection --> N_AttemptReconnection_Node0 N_AttemptReconnection_Node0 -- No --> E_AttemptReconnection
attempt using existing parameters"]:::main N_AttemptReconnection_Node0 -- Yes --> N_AttemptReconnection_Node0_action N_AttemptReconnection_Node0_action --> E_AttemptReconnection S_AttemptReconnection --> N_AttemptReconnection_Node0 N_AttemptReconnection_Node0 -- No --> E_AttemptReconnection
File: GCX016.cbl
GIVEN:
connection is no longer active
WHEN:
attempting reconnection
THEN:
system initiates new connection attempt using existing parameters
β Consolidated Acceptance Criteria
- Closing MQ connection → connection is properly closed using MQ disconnect operation
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CloseMQConnection(["Start Step"])
E_CloseMQConnection(["End Step"])
N_CloseMQConnection_Node0{"closing MQ connection"}:::decision
N_CloseMQConnection_Node0_action["connection is properly closed using
MQ disconnect operation"]:::main N_CloseMQConnection_Node0 -- Yes --> N_CloseMQConnection_Node0_action N_CloseMQConnection_Node0_action --> E_CloseMQConnection S_CloseMQConnection --> N_CloseMQConnection_Node0 N_CloseMQConnection_Node0 -- No --> E_CloseMQConnection
MQ disconnect operation"]:::main N_CloseMQConnection_Node0 -- Yes --> N_CloseMQConnection_Node0_action N_CloseMQConnection_Node0_action --> E_CloseMQConnection S_CloseMQConnection --> N_CloseMQConnection_Node0 N_CloseMQConnection_Node0 -- No --> E_CloseMQConnection
File: GCX016.cbl
GIVEN:
message processing is complete or system is shutting down
WHEN:
closing MQ connection
THEN:
connection is properly closed using MQ disconnect operation
β Consolidated Acceptance Criteria
- Cleaning up resources → all allocated MQ resources are released and variables are reset
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CleanUpResources(["Start Step"])
E_CleanUpResources(["End Step"])
N_CleanUpResources_Node0{"cleaning up resources"}:::decision
N_CleanUpResources_Node0_action["all allocated MQ resources are
released and variables are reset"]:::main N_CleanUpResources_Node0 -- Yes --> N_CleanUpResources_Node0_action N_CleanUpResources_Node0_action --> E_CleanUpResources S_CleanUpResources --> N_CleanUpResources_Node0 N_CleanUpResources_Node0 -- No --> E_CleanUpResources
released and variables are reset"]:::main N_CleanUpResources_Node0 -- Yes --> N_CleanUpResources_Node0_action N_CleanUpResources_Node0_action --> E_CleanUpResources S_CleanUpResources --> N_CleanUpResources_Node0 N_CleanUpResources_Node0 -- No --> E_CleanUpResources
File: GCX016.cbl
GIVEN:
MQ connection has been closed
WHEN:
cleaning up resources
THEN:
- All allocated mq resources are released
- Variables are reset
β Consolidated Acceptance Criteria
- System attempts to open EDI message queue for reading → queue is opened successfully for message retrieval or queue access failure is handled
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_OpenEDIMessageQueueforReading(["Start Step"])
E_OpenEDIMessageQueueforReading(["End Step"])
N_OpenEDIMessageQueueforReading_Node0{"System attempts to open EDI message
queue for reading"}:::decision N_OpenEDIMessageQueueforReading_Node0_action["Queue is opened successfully for
message retrieval or queue access
failure is handled"]:::main N_OpenEDIMessageQueueforReading_Node0 -- Yes --> N_OpenEDIMessageQueueforReading_Node0_action N_OpenEDIMessageQueueforReading_Node0_action --> E_OpenEDIMessageQueueforReading S_OpenEDIMessageQueueforReading --> N_OpenEDIMessageQueueforReading_Node0 N_OpenEDIMessageQueueforReading_Node0 -- No --> E_OpenEDIMessageQueueforReading
queue for reading"}:::decision N_OpenEDIMessageQueueforReading_Node0_action["Queue is opened successfully for
message retrieval or queue access
failure is handled"]:::main N_OpenEDIMessageQueueforReading_Node0 -- Yes --> N_OpenEDIMessageQueueforReading_Node0_action N_OpenEDIMessageQueueforReading_Node0_action --> E_OpenEDIMessageQueueforReading S_OpenEDIMessageQueueforReading --> N_OpenEDIMessageQueueforReading_Node0 N_OpenEDIMessageQueueforReading_Node0 -- No --> E_OpenEDIMessageQueueforReading
File: GCX016.cbl
GIVEN:
MQ connection is established successfully
WHEN:
System attempts to open EDI message queue for reading
THEN:
Queue is opened successfully for message retrieval or queue access failure is handled
β Consolidated Acceptance Criteria
- Queue open operation completes without errors → queue status is set to ready for message processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetQueueReadyStatus(["Start Step"])
E_SetQueueReadyStatus(["End Step"])
N_SetQueueReadyStatus_Node0{"Queue open operation completes
without errors"}:::decision N_SetQueueReadyStatus_Node0_action["Queue status is set to ready for
message processing"]:::main N_SetQueueReadyStatus_Node0 -- Yes --> N_SetQueueReadyStatus_Node0_action N_SetQueueReadyStatus_Node0_action --> E_SetQueueReadyStatus S_SetQueueReadyStatus --> N_SetQueueReadyStatus_Node0 N_SetQueueReadyStatus_Node0 -- No --> E_SetQueueReadyStatus
without errors"}:::decision N_SetQueueReadyStatus_Node0_action["Queue status is set to ready for
message processing"]:::main N_SetQueueReadyStatus_Node0 -- Yes --> N_SetQueueReadyStatus_Node0_action N_SetQueueReadyStatus_Node0_action --> E_SetQueueReadyStatus S_SetQueueReadyStatus --> N_SetQueueReadyStatus_Node0 N_SetQueueReadyStatus_Node0 -- No --> E_SetQueueReadyStatus
File: GCX016.cbl
GIVEN:
EDI message queue is opened successfully
WHEN:
Queue open operation completes without errors
THEN:
Queue status is set to ready for message processing
β Consolidated Acceptance Criteria
- System calculates message entry counts → maximum message entry count is determined for processing capacity
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CalculateMessageEntryCounts(["Start Step"])
E_CalculateMessageEntryCounts(["End Step"])
N_CalculateMessageEntryCounts_Node0{"System calculates message entry
counts"}:::decision N_CalculateMessageEntryCounts_Node0_action["Maximum message entry count is
determined for processing capacity"]:::main N_CalculateMessageEntryCounts_Node0 -- Yes --> N_CalculateMessageEntryCounts_Node0_action N_CalculateMessageEntryCounts_Node0_action --> E_CalculateMessageEntryCounts S_CalculateMessageEntryCounts --> N_CalculateMessageEntryCounts_Node0 N_CalculateMessageEntryCounts_Node0 -- No --> E_CalculateMessageEntryCounts
counts"}:::decision N_CalculateMessageEntryCounts_Node0_action["Maximum message entry count is
determined for processing capacity"]:::main N_CalculateMessageEntryCounts_Node0 -- Yes --> N_CalculateMessageEntryCounts_Node0_action N_CalculateMessageEntryCounts_Node0_action --> E_CalculateMessageEntryCounts S_CalculateMessageEntryCounts --> N_CalculateMessageEntryCounts_Node0 N_CalculateMessageEntryCounts_Node0 -- No --> E_CalculateMessageEntryCounts
File: GCX016.cbl
GIVEN:
Message array parameters are initialized
WHEN:
System calculates message entry counts
THEN:
Maximum message entry count is determined for processing capacity
β Consolidated Acceptance Criteria
- System begins message processing operations → message arrays are initialized and entry counters are reset to zero
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_InitializeMessageArrays(["Start Step"])
E_InitializeMessageArrays(["End Step"])
N_InitializeMessageArrays_Node0{"system begins message processing
operations"}:::decision N_InitializeMessageArrays_Node0_action["message arrays are initialized and
entry counters are reset to zero"]:::main N_InitializeMessageArrays_Node0 -- Yes --> N_InitializeMessageArrays_Node0_action N_InitializeMessageArrays_Node0_action --> E_InitializeMessageArrays S_InitializeMessageArrays --> N_InitializeMessageArrays_Node0 N_InitializeMessageArrays_Node0 -- No --> E_InitializeMessageArrays
operations"}:::decision N_InitializeMessageArrays_Node0_action["message arrays are initialized and
entry counters are reset to zero"]:::main N_InitializeMessageArrays_Node0 -- Yes --> N_InitializeMessageArrays_Node0_action N_InitializeMessageArrays_Node0_action --> E_InitializeMessageArrays S_InitializeMessageArrays --> N_InitializeMessageArrays_Node0 N_InitializeMessageArrays_Node0 -- No --> E_InitializeMessageArrays
File: GCX016.cbl
GIVEN:
MQ message retrieval process is starting
WHEN:
system begins message processing operations
THEN:
- Message arrays are initialized
- Entry counters are reset to zero
β Consolidated Acceptance Criteria
- MQ queue connection status is evaluated → if queue is available, proceed to message retrieval, otherwise handle connection error
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MQQueueAvailable(["Start Step"])
E_MQQueueAvailable(["End Step"])
N_MQQueueAvailable_Node0{"MQ queue connection status is
evaluated"}:::decision N_MQQueueAvailable_Node0_action["if queue is available, proceed to
message retrieval, otherwise handle
connection error"]:::main N_MQQueueAvailable_Node0 -- Yes --> N_MQQueueAvailable_Node0_action N_MQQueueAvailable_Node0_action --> E_MQQueueAvailable S_MQQueueAvailable --> N_MQQueueAvailable_Node0 N_MQQueueAvailable_Node0 -- No --> E_MQQueueAvailable
evaluated"}:::decision N_MQQueueAvailable_Node0_action["if queue is available, proceed to
message retrieval, otherwise handle
connection error"]:::main N_MQQueueAvailable_Node0 -- Yes --> N_MQQueueAvailable_Node0_action N_MQQueueAvailable_Node0_action --> E_MQQueueAvailable S_MQQueueAvailable --> N_MQQueueAvailable_Node0 N_MQQueueAvailable_Node0 -- No --> E_MQQueueAvailable
File: GCX016.cbl
GIVEN:
system attempts to open MQ queue
WHEN:
MQ queue connection status is evaluated
THEN:
if queue is available, proceed to message retrieval, otherwise handle connection error
β Consolidated Acceptance Criteria
- Message retrieval operation completes → if message retrieved successfully, proceed to calculate length, otherwise check for more messages
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MessageRetrieved(["Start Step"])
E_MessageRetrieved(["End Step"])
N_MessageRetrieved_Node0{"message retrieval operation
completes"}:::decision N_MessageRetrieved_Node0_action["if message retrieved successfully,
proceed to calculate length,
otherwise check for more messages"]:::main N_MessageRetrieved_Node0 -- Yes --> N_MessageRetrieved_Node0_action N_MessageRetrieved_Node0_action --> E_MessageRetrieved S_MessageRetrieved --> N_MessageRetrieved_Node0 N_MessageRetrieved_Node0 -- No --> E_MessageRetrieved
completes"}:::decision N_MessageRetrieved_Node0_action["if message retrieved successfully,
proceed to calculate length,
otherwise check for more messages"]:::main N_MessageRetrieved_Node0 -- Yes --> N_MessageRetrieved_Node0_action N_MessageRetrieved_Node0_action --> E_MessageRetrieved S_MessageRetrieved --> N_MessageRetrieved_Node0 N_MessageRetrieved_Node0 -- No --> E_MessageRetrieved
File: GCX016.cbl
GIVEN:
system attempts to retrieve message from queue
WHEN:
message retrieval operation completes
THEN:
if message retrieved successfully, proceed to calculate length, otherwise check for more messages
β Consolidated Acceptance Criteria
- System analyzes message structure and content → entry count is determined based on message segments and structure
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_DetermineEntryCountBasedonMessageStructure(["Start Step"])
E_DetermineEntryCountBasedonMessageStructure(["End Step"])
N_DetermineEntryCountBasedonMessageStructure_Node0{"system analyzes message structure
and content"}:::decision N_DetermineEntryCountBasedonMessageStructure_Node0_action["entry count is determined based on
message segments and structure"]:::main N_DetermineEntryCountBasedonMessageStructure_Node0 -- Yes --> N_DetermineEntryCountBasedonMessageStructure_Node0_action N_DetermineEntryCountBasedonMessageStructure_Node0_action --> E_DetermineEntryCountBasedonMessageStructure S_DetermineEntryCountBasedonMessageStructure --> N_DetermineEntryCountBasedonMessageStructure_Node0 N_DetermineEntryCountBasedonMessageStructure_Node0 -- No --> E_DetermineEntryCountBasedonMessageStructure
and content"}:::decision N_DetermineEntryCountBasedonMessageStructure_Node0_action["entry count is determined based on
message segments and structure"]:::main N_DetermineEntryCountBasedonMessageStructure_Node0 -- Yes --> N_DetermineEntryCountBasedonMessageStructure_Node0_action N_DetermineEntryCountBasedonMessageStructure_Node0_action --> E_DetermineEntryCountBasedonMessageStructure S_DetermineEntryCountBasedonMessageStructure --> N_DetermineEntryCountBasedonMessageStructure_Node0 N_DetermineEntryCountBasedonMessageStructure_Node0 -- No --> E_DetermineEntryCountBasedonMessageStructure
File: GCX016.cbl
GIVEN:
message length is calculated
WHEN:
- System analyzes message structure
- Content
THEN:
- Entry count is determined based on message segments
- Structure
β Consolidated Acceptance Criteria
- System processes the variable-length message array → message array is processed and prepared for validation
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ProcessVariableLengthMessageArray(["Start Step"])
E_ProcessVariableLengthMessageArray(["End Step"])
N_ProcessVariableLengthMessageArray_Node0{"system processes the
variable-length message array"}:::decision N_ProcessVariableLengthMessageArray_Node0_action["message array is processed and
prepared for validation"]:::main N_ProcessVariableLengthMessageArray_Node0 -- Yes --> N_ProcessVariableLengthMessageArray_Node0_action N_ProcessVariableLengthMessageArray_Node0_action --> E_ProcessVariableLengthMessageArray S_ProcessVariableLengthMessageArray --> N_ProcessVariableLengthMessageArray_Node0 N_ProcessVariableLengthMessageArray_Node0 -- No --> E_ProcessVariableLengthMessageArray
variable-length message array"}:::decision N_ProcessVariableLengthMessageArray_Node0_action["message array is processed and
prepared for validation"]:::main N_ProcessVariableLengthMessageArray_Node0 -- Yes --> N_ProcessVariableLengthMessageArray_Node0_action N_ProcessVariableLengthMessageArray_Node0_action --> E_ProcessVariableLengthMessageArray S_ProcessVariableLengthMessageArray --> N_ProcessVariableLengthMessageArray_Node0 N_ProcessVariableLengthMessageArray_Node0 -- No --> E_ProcessVariableLengthMessageArray
File: GCX016.cbl
GIVEN:
entry count is determined from message structure
WHEN:
system processes the variable-length message array
THEN:
- Message array is processed
- Prepared for validation
β Consolidated Acceptance Criteria
- System stores message for processing → message is stored in processing array and available for business logic processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_StoreMessageinProcessingArray(["Start Step"])
E_StoreMessageinProcessingArray(["End Step"])
N_StoreMessageinProcessingArray_Node0{"system stores message for
processing"}:::decision N_StoreMessageinProcessingArray_Node0_action["message is stored in processing
array and available for business
logic processing"]:::main N_StoreMessageinProcessingArray_Node0 -- Yes --> N_StoreMessageinProcessingArray_Node0_action N_StoreMessageinProcessingArray_Node0_action --> E_StoreMessageinProcessingArray S_StoreMessageinProcessingArray --> N_StoreMessageinProcessingArray_Node0 N_StoreMessageinProcessingArray_Node0 -- No --> E_StoreMessageinProcessingArray
processing"}:::decision N_StoreMessageinProcessingArray_Node0_action["message is stored in processing
array and available for business
logic processing"]:::main N_StoreMessageinProcessingArray_Node0 -- Yes --> N_StoreMessageinProcessingArray_Node0_action N_StoreMessageinProcessingArray_Node0_action --> E_StoreMessageinProcessingArray S_StoreMessageinProcessingArray --> N_StoreMessageinProcessingArray_Node0 N_StoreMessageinProcessingArray_Node0 -- No --> E_StoreMessageinProcessingArray
File: GCX016.cbl
GIVEN:
message passes all validation checks
WHEN:
system stores message for processing
THEN:
- Message is stored in processing array
- Available for business logic processing
β Consolidated Acceptance Criteria
- System updates message tracking counters → message counter is incremented to reflect successful message processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IncrementMessageCounter(["Start Step"])
E_IncrementMessageCounter(["End Step"])
N_IncrementMessageCounter_Node0{"system updates message tracking
counters"}:::decision N_IncrementMessageCounter_Node0_action["message counter is incremented to
reflect successful message
processing"]:::main N_IncrementMessageCounter_Node0 -- Yes --> N_IncrementMessageCounter_Node0_action N_IncrementMessageCounter_Node0_action --> E_IncrementMessageCounter S_IncrementMessageCounter --> N_IncrementMessageCounter_Node0 N_IncrementMessageCounter_Node0 -- No --> E_IncrementMessageCounter
counters"}:::decision N_IncrementMessageCounter_Node0_action["message counter is incremented to
reflect successful message
processing"]:::main N_IncrementMessageCounter_Node0 -- Yes --> N_IncrementMessageCounter_Node0_action N_IncrementMessageCounter_Node0_action --> E_IncrementMessageCounter S_IncrementMessageCounter --> N_IncrementMessageCounter_Node0 N_IncrementMessageCounter_Node0 -- No --> E_IncrementMessageCounter
File: GCX016.cbl
GIVEN:
message is stored in processing array
WHEN:
system updates message tracking counters
THEN:
message counter is incremented to reflect successful message processing
β Consolidated Acceptance Criteria
- System completes message retrieval process → entry count and processed messages are returned to calling program
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ReturnEntryCountandMessages(["Start Step"])
E_ReturnEntryCountandMessages(["End Step"])
N_ReturnEntryCountandMessages_Node0{"system completes message retrieval
process"}:::decision N_ReturnEntryCountandMessages_Node0_action["entry count and processed messages
are returned to calling program"]:::main N_ReturnEntryCountandMessages_Node0 -- Yes --> N_ReturnEntryCountandMessages_Node0_action N_ReturnEntryCountandMessages_Node0_action --> E_ReturnEntryCountandMessages S_ReturnEntryCountandMessages --> N_ReturnEntryCountandMessages_Node0 N_ReturnEntryCountandMessages_Node0 -- No --> E_ReturnEntryCountandMessages
process"}:::decision N_ReturnEntryCountandMessages_Node0_action["entry count and processed messages
are returned to calling program"]:::main N_ReturnEntryCountandMessages_Node0 -- Yes --> N_ReturnEntryCountandMessages_Node0_action N_ReturnEntryCountandMessages_Node0_action --> E_ReturnEntryCountandMessages S_ReturnEntryCountandMessages --> N_ReturnEntryCountandMessages_Node0 N_ReturnEntryCountandMessages_Node0 -- No --> E_ReturnEntryCountandMessages
File: GCX016.cbl
GIVEN:
MQ queue is closed and all messages processed
WHEN:
system completes message retrieval process
THEN:
- Entry count
- Processed messages are returned to calling program
β Consolidated Acceptance Criteria
- System detects message processing error → error is logged and processing continues with error handling
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_HandleMessageProcessingError(["Start Step"])
E_HandleMessageProcessingError(["End Step"])
N_HandleMessageProcessingError_Node0{"system detects message processing
error"}:::decision N_HandleMessageProcessingError_Node0_action["error is logged and processing
continues with error handling"]:::exclusion N_HandleMessageProcessingError_Node0 -- Yes -->|Alternative| N_HandleMessageProcessingError_Node0_action N_HandleMessageProcessingError_Node0_action --> E_HandleMessageProcessingError S_HandleMessageProcessingError --> N_HandleMessageProcessingError_Node0 N_HandleMessageProcessingError_Node0 -- No --> E_HandleMessageProcessingError
error"}:::decision N_HandleMessageProcessingError_Node0_action["error is logged and processing
continues with error handling"]:::exclusion N_HandleMessageProcessingError_Node0 -- Yes -->|Alternative| N_HandleMessageProcessingError_Node0_action N_HandleMessageProcessingError_Node0_action --> E_HandleMessageProcessingError S_HandleMessageProcessingError --> N_HandleMessageProcessingError_Node0 N_HandleMessageProcessingError_Node0 -- No --> E_HandleMessageProcessingError
File: GCX016.cbl
GIVEN:
message fails validation or processing encounters error
WHEN:
system detects message processing error
THEN:
- Error is logged
- Processing continues with error handling
β Consolidated Acceptance Criteria
- The system needs to determine the message processing requirements → the system retrieves and stores the total message length for subsequent processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GetMessageLength(["Start Step"])
E_GetMessageLength(["End Step"])
N_GetMessageLength_Node0{"The system needs to determine the
message processing requirements"}:::decision N_GetMessageLength_Node0_action["The system retrieves and stores the
total message length for subsequent
processing"]:::main N_GetMessageLength_Node0 -- Yes --> N_GetMessageLength_Node0_action N_GetMessageLength_Node0_action --> E_GetMessageLength S_GetMessageLength --> N_GetMessageLength_Node0 N_GetMessageLength_Node0 -- No --> E_GetMessageLength
message processing requirements"}:::decision N_GetMessageLength_Node0_action["The system retrieves and stores the
total message length for subsequent
processing"]:::main N_GetMessageLength_Node0 -- Yes --> N_GetMessageLength_Node0_action N_GetMessageLength_Node0_action --> E_GetMessageLength S_GetMessageLength --> N_GetMessageLength_Node0 N_GetMessageLength_Node0 -- No --> E_GetMessageLength
File: GCX016.cbl
GIVEN:
An EDI message has been received from the MQ queue
WHEN:
The system needs to determine the message processing requirements
THEN:
- The system retrieves
- Stores the total message length for subsequent processing
β Consolidated Acceptance Criteria
- Message processing begins → the entry counter is set to zero to track the number of segments processed
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_InitializeEntryCounter(["Start Step"])
E_InitializeEntryCounter(["End Step"])
N_InitializeEntryCounter_Node0{"Message processing begins"}:::decision
N_InitializeEntryCounter_Node0_action["The entry counter is set to zero to
track the number of segments
processed"]:::main N_InitializeEntryCounter_Node0 -- Yes --> N_InitializeEntryCounter_Node0_action N_InitializeEntryCounter_Node0_action --> E_InitializeEntryCounter S_InitializeEntryCounter --> N_InitializeEntryCounter_Node0 N_InitializeEntryCounter_Node0 -- No --> E_InitializeEntryCounter
track the number of segments
processed"]:::main N_InitializeEntryCounter_Node0 -- Yes --> N_InitializeEntryCounter_Node0_action N_InitializeEntryCounter_Node0_action --> E_InitializeEntryCounter S_InitializeEntryCounter --> N_InitializeEntryCounter_Node0 N_InitializeEntryCounter_Node0 -- No --> E_InitializeEntryCounter
File: GCX016.cbl
GIVEN:
The system is ready to parse an EDI message
WHEN:
Message processing begins
THEN:
The entry counter is set to zero to track the number of segments processed
β Consolidated Acceptance Criteria
- The system begins message analysis → the message structure is parsed to identify individual EDI segments
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ParseMessageStructure(["Start Step"])
E_ParseMessageStructure(["End Step"])
N_ParseMessageStructure_Node0{"The system begins message analysis"}:::decision
N_ParseMessageStructure_Node0_action["The message structure is parsed to
identify individual EDI segments"]:::main N_ParseMessageStructure_Node0 -- Yes --> N_ParseMessageStructure_Node0_action N_ParseMessageStructure_Node0_action --> E_ParseMessageStructure S_ParseMessageStructure --> N_ParseMessageStructure_Node0 N_ParseMessageStructure_Node0 -- No --> E_ParseMessageStructure
identify individual EDI segments"]:::main N_ParseMessageStructure_Node0 -- Yes --> N_ParseMessageStructure_Node0_action N_ParseMessageStructure_Node0_action --> E_ParseMessageStructure S_ParseMessageStructure --> N_ParseMessageStructure_Node0 N_ParseMessageStructure_Node0 -- No --> E_ParseMessageStructure
File: GCX016.cbl
GIVEN:
An EDI message with known length is available for processing
WHEN:
The system begins message analysis
THEN:
The message structure is parsed to identify individual EDI segments
β Consolidated Acceptance Criteria
- A segment has been processed → the system checks if more segments exist in the message for continued processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MoreSegmentstoProcess(["Start Step"])
E_MoreSegmentstoProcess(["End Step"])
N_MoreSegmentstoProcess_Node0{"A segment has been processed"}:::decision
N_MoreSegmentstoProcess_Node0_action["The system checks if more segments
exist in the message for continued
processing"]:::main N_MoreSegmentstoProcess_Node0 -- Yes --> N_MoreSegmentstoProcess_Node0_action N_MoreSegmentstoProcess_Node0_action --> E_MoreSegmentstoProcess S_MoreSegmentstoProcess --> N_MoreSegmentstoProcess_Node0 N_MoreSegmentstoProcess_Node0 -- No --> E_MoreSegmentstoProcess
exist in the message for continued
processing"]:::main N_MoreSegmentstoProcess_Node0 -- Yes --> N_MoreSegmentstoProcess_Node0_action N_MoreSegmentstoProcess_Node0_action --> E_MoreSegmentstoProcess S_MoreSegmentstoProcess --> N_MoreSegmentstoProcess_Node0 N_MoreSegmentstoProcess_Node0 -- No --> E_MoreSegmentstoProcess
File: GCX016.cbl
GIVEN:
The system is processing EDI message segments
WHEN:
A segment has been processed
THEN:
The system checks if more segments exist in the message for continued processing
β Consolidated Acceptance Criteria
- The system encounters a new segment → the segment type is identified based on the segment identifier
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IdentifySegmentType(["Start Step"])
E_IdentifySegmentType(["End Step"])
N_IdentifySegmentType_Node0{"The system encounters a new segment"}:::decision
N_IdentifySegmentType_Node0_action["The segment type is identified
based on the segment identifier"]:::main N_IdentifySegmentType_Node0 -- Yes --> N_IdentifySegmentType_Node0_action N_IdentifySegmentType_Node0_action --> E_IdentifySegmentType S_IdentifySegmentType --> N_IdentifySegmentType_Node0 N_IdentifySegmentType_Node0 -- No --> E_IdentifySegmentType
based on the segment identifier"]:::main N_IdentifySegmentType_Node0 -- Yes --> N_IdentifySegmentType_Node0_action N_IdentifySegmentType_Node0_action --> E_IdentifySegmentType S_IdentifySegmentType --> N_IdentifySegmentType_Node0 N_IdentifySegmentType_Node0 -- No --> E_IdentifySegmentType
File: GCX016.cbl
GIVEN:
An EDI segment is available for processing
WHEN:
The system encounters a new segment
THEN:
The segment type is identified based on the segment identifier
β Consolidated Acceptance Criteria
- The system needs to process the segment → the segment length is calculated based on the segment structure and content
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CalculateSegmentLength(["Start Step"])
E_CalculateSegmentLength(["End Step"])
N_CalculateSegmentLength_Node0{"The system needs to process the
segment"}:::decision N_CalculateSegmentLength_Node0_action["The segment length is calculated
based on the segment structure and
content"]:::main N_CalculateSegmentLength_Node0 -- Yes --> N_CalculateSegmentLength_Node0_action N_CalculateSegmentLength_Node0_action --> E_CalculateSegmentLength S_CalculateSegmentLength --> N_CalculateSegmentLength_Node0 N_CalculateSegmentLength_Node0 -- No --> E_CalculateSegmentLength
segment"}:::decision N_CalculateSegmentLength_Node0_action["The segment length is calculated
based on the segment structure and
content"]:::main N_CalculateSegmentLength_Node0 -- Yes --> N_CalculateSegmentLength_Node0_action N_CalculateSegmentLength_Node0_action --> E_CalculateSegmentLength S_CalculateSegmentLength --> N_CalculateSegmentLength_Node0 N_CalculateSegmentLength_Node0 -- No --> E_CalculateSegmentLength
File: GCX016.cbl
GIVEN:
An EDI segment has been identified
WHEN:
The system needs to process the segment
THEN:
- The segment length is calculated based on the segment structure
- Content
β Consolidated Acceptance Criteria
- The segment processing is complete → the entry counter is incremented by one to track the total number of processed segments
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IncrementEntryCounter(["Start Step"])
E_IncrementEntryCounter(["End Step"])
N_IncrementEntryCounter_Node0{"The segment processing is complete"}:::decision
N_IncrementEntryCounter_Node0_action["The entry counter is incremented by
one to track the total number of
processed segments"]:::main N_IncrementEntryCounter_Node0 -- Yes --> N_IncrementEntryCounter_Node0_action N_IncrementEntryCounter_Node0_action --> E_IncrementEntryCounter S_IncrementEntryCounter --> N_IncrementEntryCounter_Node0 N_IncrementEntryCounter_Node0 -- No --> E_IncrementEntryCounter
one to track the total number of
processed segments"]:::main N_IncrementEntryCounter_Node0 -- Yes --> N_IncrementEntryCounter_Node0_action N_IncrementEntryCounter_Node0_action --> E_IncrementEntryCounter S_IncrementEntryCounter --> N_IncrementEntryCounter_Node0 N_IncrementEntryCounter_Node0 -- No --> E_IncrementEntryCounter
File: GCX016.cbl
GIVEN:
An EDI segment has been successfully processed
WHEN:
The segment processing is complete
THEN:
The entry counter is incremented by one to track the total number of processed segments
β Consolidated Acceptance Criteria
- The system needs to continue processing → the message position pointer is moved to the start of the next segment
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MovetoNextSegmentPosition(["Start Step"])
E_MovetoNextSegmentPosition(["End Step"])
N_MovetoNextSegmentPosition_Node0{"The system needs to continue
processing"}:::decision N_MovetoNextSegmentPosition_Node0_action["The message position pointer is
moved to the start of the next
segment"]:::main N_MovetoNextSegmentPosition_Node0 -- Yes --> N_MovetoNextSegmentPosition_Node0_action N_MovetoNextSegmentPosition_Node0_action --> E_MovetoNextSegmentPosition S_MovetoNextSegmentPosition --> N_MovetoNextSegmentPosition_Node0 N_MovetoNextSegmentPosition_Node0 -- No --> E_MovetoNextSegmentPosition
processing"}:::decision N_MovetoNextSegmentPosition_Node0_action["The message position pointer is
moved to the start of the next
segment"]:::main N_MovetoNextSegmentPosition_Node0 -- Yes --> N_MovetoNextSegmentPosition_Node0_action N_MovetoNextSegmentPosition_Node0_action --> E_MovetoNextSegmentPosition S_MovetoNextSegmentPosition --> N_MovetoNextSegmentPosition_Node0 N_MovetoNextSegmentPosition_Node0 -- No --> E_MovetoNextSegmentPosition
File: GCX016.cbl
GIVEN:
A segment has been processed and its length calculated
WHEN:
The system needs to continue processing
THEN:
The message position pointer is moved to the start of the next segment
β Consolidated Acceptance Criteria
- The system completes segment counting → the total entry count is validated against the expected count derived from message length
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ValidateTotalEntriesAgainstMessageLength(["Start Step"])
E_ValidateTotalEntriesAgainstMessageLength(["End Step"])
N_ValidateTotalEntriesAgainstMessageLength_Node0{"The system completes segment
counting"}:::decision N_ValidateTotalEntriesAgainstMessageLength_Node0_action["The total entry count is validated
against the expected count derived
from message length"]:::main N_ValidateTotalEntriesAgainstMessageLength_Node0 -- Yes --> N_ValidateTotalEntriesAgainstMessageLength_Node0_action N_ValidateTotalEntriesAgainstMessageLength_Node0_action --> E_ValidateTotalEntriesAgainstMessageLength S_ValidateTotalEntriesAgainstMessageLength --> N_ValidateTotalEntriesAgainstMessageLength_Node0 N_ValidateTotalEntriesAgainstMessageLength_Node0 -- No --> E_ValidateTotalEntriesAgainstMessageLength
counting"}:::decision N_ValidateTotalEntriesAgainstMessageLength_Node0_action["The total entry count is validated
against the expected count derived
from message length"]:::main N_ValidateTotalEntriesAgainstMessageLength_Node0 -- Yes --> N_ValidateTotalEntriesAgainstMessageLength_Node0_action N_ValidateTotalEntriesAgainstMessageLength_Node0_action --> E_ValidateTotalEntriesAgainstMessageLength S_ValidateTotalEntriesAgainstMessageLength --> N_ValidateTotalEntriesAgainstMessageLength_Node0 N_ValidateTotalEntriesAgainstMessageLength_Node0 -- No --> E_ValidateTotalEntriesAgainstMessageLength
File: GCX016.cbl
GIVEN:
All segments in the EDI message have been processed
WHEN:
The system completes segment counting
THEN:
The total entry count is validated against the expected count derived from message length
β Consolidated Acceptance Criteria
- The system needs to determine processing success → the entry count is checked for validity and consistency with the message structure
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_EntryCountValid(["Start Step"])
E_EntryCountValid(["End Step"])
N_EntryCountValid_Node0{"The system needs to determine
processing success"}:::decision N_EntryCountValid_Node0_action["The entry count is checked for
validity and consistency with the
message structure"]:::main N_EntryCountValid_Node0 -- Yes --> N_EntryCountValid_Node0_action N_EntryCountValid_Node0_action --> E_EntryCountValid S_EntryCountValid --> N_EntryCountValid_Node0 N_EntryCountValid_Node0 -- No --> E_EntryCountValid
processing success"}:::decision N_EntryCountValid_Node0_action["The entry count is checked for
validity and consistency with the
message structure"]:::main N_EntryCountValid_Node0 -- Yes --> N_EntryCountValid_Node0_action N_EntryCountValid_Node0_action --> E_EntryCountValid S_EntryCountValid --> N_EntryCountValid_Node0 N_EntryCountValid_Node0 -- No --> E_EntryCountValid
File: GCX016.cbl
GIVEN:
The entry count has been calculated and validated
WHEN:
The system needs to determine processing success
THEN:
- The entry count is checked for validity
- Consistency with the message structure
β Consolidated Acceptance Criteria
- Validation passes successfully → the final entry count is set for use in subsequent message processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetFinalEntryCount(["Start Step"])
E_SetFinalEntryCount(["End Step"])
N_SetFinalEntryCount_Node0{"Validation passes successfully"}:::decision
N_SetFinalEntryCount_Node0_action["The final entry count is set for
use in subsequent message processing"]:::main N_SetFinalEntryCount_Node0 -- Yes --> N_SetFinalEntryCount_Node0_action N_SetFinalEntryCount_Node0_action --> E_SetFinalEntryCount S_SetFinalEntryCount --> N_SetFinalEntryCount_Node0 N_SetFinalEntryCount_Node0 -- No --> E_SetFinalEntryCount
use in subsequent message processing"]:::main N_SetFinalEntryCount_Node0 -- Yes --> N_SetFinalEntryCount_Node0_action N_SetFinalEntryCount_Node0_action --> E_SetFinalEntryCount S_SetFinalEntryCount --> N_SetFinalEntryCount_Node0 N_SetFinalEntryCount_Node0 -- No --> E_SetFinalEntryCount
File: GCX016.cbl
GIVEN:
The entry count has been validated as correct
WHEN:
Validation passes successfully
THEN:
The final entry count is set for use in subsequent message processing
β Consolidated Acceptance Criteria
- An invalid entry count is detected → an error is logged indicating the entry count validation failure
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogEntryCountError(["Start Step"])
E_LogEntryCountError(["End Step"])
N_LogEntryCountError_Node0{"An invalid entry count is detected"}:::decision
N_LogEntryCountError_Node0_action["An error is logged indicating the
entry count validation failure"]:::exclusion N_LogEntryCountError_Node0 -- Yes -->|Alternative| N_LogEntryCountError_Node0_action N_LogEntryCountError_Node0_action --> E_LogEntryCountError S_LogEntryCountError --> N_LogEntryCountError_Node0 N_LogEntryCountError_Node0 -- No --> E_LogEntryCountError
entry count validation failure"]:::exclusion N_LogEntryCountError_Node0 -- Yes -->|Alternative| N_LogEntryCountError_Node0_action N_LogEntryCountError_Node0_action --> E_LogEntryCountError S_LogEntryCountError --> N_LogEntryCountError_Node0 N_LogEntryCountError_Node0 -- No --> E_LogEntryCountError
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
The entry count validation has failed
WHEN:
An invalid entry count is detected
THEN:
An error is logged indicating the entry count validation failure
β Consolidated Acceptance Criteria
- The calling process requests the entry count → the calculated entry count is returned along with any error indicators for further processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ReturnEntryCountforProcessing(["Start Step"])
E_ReturnEntryCountforProcessing(["End Step"])
N_ReturnEntryCountforProcessing_Node0{"The calling process requests the
entry count"}:::decision N_ReturnEntryCountforProcessing_Node0_action["The calculated entry count is
returned along with any error
indicators for further processing"]:::main N_ReturnEntryCountforProcessing_Node0 -- Yes --> N_ReturnEntryCountforProcessing_Node0_action N_ReturnEntryCountforProcessing_Node0_action --> E_ReturnEntryCountforProcessing S_ReturnEntryCountforProcessing --> N_ReturnEntryCountforProcessing_Node0 N_ReturnEntryCountforProcessing_Node0 -- No --> E_ReturnEntryCountforProcessing
entry count"}:::decision N_ReturnEntryCountforProcessing_Node0_action["The calculated entry count is
returned along with any error
indicators for further processing"]:::main N_ReturnEntryCountforProcessing_Node0 -- Yes --> N_ReturnEntryCountforProcessing_Node0_action N_ReturnEntryCountforProcessing_Node0_action --> E_ReturnEntryCountforProcessing S_ReturnEntryCountforProcessing --> N_ReturnEntryCountforProcessing_Node0 N_ReturnEntryCountforProcessing_Node0 -- No --> E_ReturnEntryCountforProcessing
File: GCX016.cbl
GIVEN:
Entry count calculation is complete (either successful or with error)
WHEN:
The calling process requests the entry count
THEN:
The calculated entry count is returned along with any error indicators for further processing
β Consolidated Acceptance Criteria
- The system processes messages from the queue → valid messages with backout count zero are accepted for processing and messages with non-zero backout count are skipped
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ReceiveEDISegmentforProcessing(["Start Step"])
E_ReceiveEDISegmentforProcessing(["End Step"])
N_ReceiveEDISegmentforProcessing_Node0{"the system processes messages from
the queue"}:::decision N_ReceiveEDISegmentforProcessing_Node0_action["valid messages with backout count
zero are accepted for processing and
messages with non-zero backout count
are skipped"]:::main N_ReceiveEDISegmentforProcessing_Node0 -- Yes --> N_ReceiveEDISegmentforProcessing_Node0_action N_ReceiveEDISegmentforProcessing_Node0_action --> E_ReceiveEDISegmentforProcessing S_ReceiveEDISegmentforProcessing --> N_ReceiveEDISegmentforProcessing_Node0 N_ReceiveEDISegmentforProcessing_Node0 -- No --> E_ReceiveEDISegmentforProcessing
the queue"}:::decision N_ReceiveEDISegmentforProcessing_Node0_action["valid messages with backout count
zero are accepted for processing and
messages with non-zero backout count
are skipped"]:::main N_ReceiveEDISegmentforProcessing_Node0 -- Yes --> N_ReceiveEDISegmentforProcessing_Node0_action N_ReceiveEDISegmentforProcessing_Node0_action --> E_ReceiveEDISegmentforProcessing S_ReceiveEDISegmentforProcessing --> N_ReceiveEDISegmentforProcessing_Node0 N_ReceiveEDISegmentforProcessing_Node0 -- No --> E_ReceiveEDISegmentforProcessing
File: GCX016.cbl
GIVEN:
EDI segments are available in the message queue
WHEN:
the system processes messages from the queue
THEN:
- Valid messages with backout count zero are accepted for processing
- Messages with non-zero backout count are skipped
β Consolidated Acceptance Criteria
- The segment type is X4 (customs release) → the system extracts CCN key, car ID, waybill number, and disposition code from the segment
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExtractShipmentIdentifierfromEDISegment(["Start Step"])
E_ExtractShipmentIdentifierfromEDISegment(["End Step"])
N_ExtractShipmentIdentifierfromEDISegment_Node0{"the segment type is X4 customs
release"}:::decision N_ExtractShipmentIdentifierfromEDISegment_Node0_action["the system extracts CCN key, car
ID, waybill number, and disposition
code from the segment"]:::main N_ExtractShipmentIdentifierfromEDISegment_Node0 -- Yes --> N_ExtractShipmentIdentifierfromEDISegment_Node0_action N_ExtractShipmentIdentifierfromEDISegment_Node0_action --> E_ExtractShipmentIdentifierfromEDISegment S_ExtractShipmentIdentifierfromEDISegment --> N_ExtractShipmentIdentifierfromEDISegment_Node0 N_ExtractShipmentIdentifierfromEDISegment_Node0 -- No --> E_ExtractShipmentIdentifierfromEDISegment
release"}:::decision N_ExtractShipmentIdentifierfromEDISegment_Node0_action["the system extracts CCN key, car
ID, waybill number, and disposition
code from the segment"]:::main N_ExtractShipmentIdentifierfromEDISegment_Node0 -- Yes --> N_ExtractShipmentIdentifierfromEDISegment_Node0_action N_ExtractShipmentIdentifierfromEDISegment_Node0_action --> E_ExtractShipmentIdentifierfromEDISegment S_ExtractShipmentIdentifierfromEDISegment --> N_ExtractShipmentIdentifierfromEDISegment_Node0 N_ExtractShipmentIdentifierfromEDISegment_Node0 -- No --> E_ExtractShipmentIdentifierfromEDISegment
File: GCX016.cbl
GIVEN:
an EDI segment is received for processing
WHEN:
the segment type is X4 (customs release)
THEN:
the system extracts CCN key, car ID, waybill number, and disposition code from the segment
β Consolidated Acceptance Criteria
- The system searches for cargo records → it performs exact match search using CCN key first, then broader search if exact match fails, excluding deleted records
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_QueryShipmentRootDatabase(["Start Step"])
E_QueryShipmentRootDatabase(["End Step"])
N_QueryShipmentRootDatabase_Node0{"the system searches for cargo
records"}:::decision N_QueryShipmentRootDatabase_Node0_action["it performs exact match search
using CCN key first, then broader
search if exact match fails,
excluding deleted records"]:::main N_QueryShipmentRootDatabase_Node0 -- Yes --> N_QueryShipmentRootDatabase_Node0_action N_QueryShipmentRootDatabase_Node0_action --> E_QueryShipmentRootDatabase S_QueryShipmentRootDatabase --> N_QueryShipmentRootDatabase_Node0 N_QueryShipmentRootDatabase_Node0 -- No --> E_QueryShipmentRootDatabase
records"}:::decision N_QueryShipmentRootDatabase_Node0_action["it performs exact match search
using CCN key first, then broader
search if exact match fails,
excluding deleted records"]:::main N_QueryShipmentRootDatabase_Node0 -- Yes --> N_QueryShipmentRootDatabase_Node0_action N_QueryShipmentRootDatabase_Node0_action --> E_QueryShipmentRootDatabase S_QueryShipmentRootDatabase --> N_QueryShipmentRootDatabase_Node0 N_QueryShipmentRootDatabase_Node0 -- No --> E_QueryShipmentRootDatabase
File: GCX016.cbl
GIVEN:
shipment identifiers have been extracted from EDI segment
WHEN:
the system searches for cargo records
THEN:
it performs exact match search using CCN key first, then broader search if exact match fails, excluding deleted records
β Consolidated Acceptance Criteria
- Searching for cargo records by CCN key and car ID → if no matching non-deleted cargo record is found, set cargo not found flag, otherwise set cargo found flag
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ShipmentRootRecordExists(["Start Step"])
E_ShipmentRootRecordExists(["End Step"])
N_ShipmentRootRecordExists_Node0{"searching for cargo records by CCN
key and car ID"}:::decision N_ShipmentRootRecordExists_Node0_action["if no matching non-deleted cargo
record is found, set cargo not found
flag, otherwise set cargo found flag"]:::main N_ShipmentRootRecordExists_Node0 -- Yes --> N_ShipmentRootRecordExists_Node0_action N_ShipmentRootRecordExists_Node0_action --> E_ShipmentRootRecordExists S_ShipmentRootRecordExists --> N_ShipmentRootRecordExists_Node0 N_ShipmentRootRecordExists_Node0 -- No --> E_ShipmentRootRecordExists
key and car ID"}:::decision N_ShipmentRootRecordExists_Node0_action["if no matching non-deleted cargo
record is found, set cargo not found
flag, otherwise set cargo found flag"]:::main N_ShipmentRootRecordExists_Node0 -- Yes --> N_ShipmentRootRecordExists_Node0_action N_ShipmentRootRecordExists_Node0_action --> E_ShipmentRootRecordExists S_ShipmentRootRecordExists --> N_ShipmentRootRecordExists_Node0 N_ShipmentRootRecordExists_Node0 -- No --> E_ShipmentRootRecordExists
File: GCX016.cbl
GIVEN:
the system has queried the shipment database
WHEN:
- Searching for cargo records by ccn key
- Car id
THEN:
if no matching non-deleted cargo record is found, set cargo not found flag, otherwise set cargo found flag
β Consolidated Acceptance Criteria
- Processing CPRS cargo that is not found → increment error counter and create error message with disposition code and CCN key marked as not found
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogShipmentRootNotFoundError(["Start Step"])
E_LogShipmentRootNotFoundError(["End Step"])
N_LogShipmentRootNotFoundError_Node0{"processing CPRS cargo that is not
found"}:::decision N_LogShipmentRootNotFoundError_Node0_action["increment error counter and create
error message with disposition code
and CCN key marked as not found"]:::main N_LogShipmentRootNotFoundError_Node0 -- Yes --> N_LogShipmentRootNotFoundError_Node0_action N_LogShipmentRootNotFoundError_Node0_action --> E_LogShipmentRootNotFoundError S_LogShipmentRootNotFoundError --> N_LogShipmentRootNotFoundError_Node0 N_LogShipmentRootNotFoundError_Node0 -- No --> E_LogShipmentRootNotFoundError
found"}:::decision N_LogShipmentRootNotFoundError_Node0_action["increment error counter and create
error message with disposition code
and CCN key marked as not found"]:::main N_LogShipmentRootNotFoundError_Node0 -- Yes --> N_LogShipmentRootNotFoundError_Node0_action N_LogShipmentRootNotFoundError_Node0_action --> E_LogShipmentRootNotFoundError S_LogShipmentRootNotFoundError --> N_LogShipmentRootNotFoundError_Node0 N_LogShipmentRootNotFoundError_Node0 -- No --> E_LogShipmentRootNotFoundError
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
cargo record search has failed to find matching records
WHEN:
processing CPRS cargo that is not found
THEN:
- Increment error counter
- Create error message with disposition code
- Ccn key marked as not found
β Consolidated Acceptance Criteria
- The error involves CPRS cargo processing → send Merlin error message to business users with cargo details and not found status
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SendErrorNotificationtoBusinessUsers(["Start Step"])
E_SendErrorNotificationtoBusinessUsers(["End Step"])
N_SendErrorNotificationtoBusinessUsers_Node0{"the error involves CPRS cargo
processing"}:::decision N_SendErrorNotificationtoBusinessUsers_Node0_action["send Merlin error message to
business users with cargo details
and not found status"]:::exclusion N_SendErrorNotificationtoBusinessUsers_Node0 -- Yes -->|Alternative| N_SendErrorNotificationtoBusinessUsers_Node0_action N_SendErrorNotificationtoBusinessUsers_Node0_action --> E_SendErrorNotificationtoBusinessUsers S_SendErrorNotificationtoBusinessUsers --> N_SendErrorNotificationtoBusinessUsers_Node0 N_SendErrorNotificationtoBusinessUsers_Node0 -- No --> E_SendErrorNotificationtoBusinessUsers
processing"}:::decision N_SendErrorNotificationtoBusinessUsers_Node0_action["send Merlin error message to
business users with cargo details
and not found status"]:::exclusion N_SendErrorNotificationtoBusinessUsers_Node0 -- Yes -->|Alternative| N_SendErrorNotificationtoBusinessUsers_Node0_action N_SendErrorNotificationtoBusinessUsers_Node0_action --> E_SendErrorNotificationtoBusinessUsers S_SendErrorNotificationtoBusinessUsers --> N_SendErrorNotificationtoBusinessUsers_Node0 N_SendErrorNotificationtoBusinessUsers_Node0 -- No --> E_SendErrorNotificationtoBusinessUsers
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
an error has been logged for cargo not found
WHEN:
the error involves CPRS cargo processing
THEN:
- Send merlin error message to business users with cargo details
- Not found status
β Consolidated Acceptance Criteria
- Cargo not found flag is set → skip further processing of the current EDI segment and continue to next segment
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SkipEDISegmentProcessing(["Start Step"])
E_SkipEDISegmentProcessing(["End Step"])
N_SkipEDISegmentProcessing_Node0{"cargo not found flag is set"}:::decision
N_SkipEDISegmentProcessing_Node0_action["skip further processing of the
current EDI segment and continue to
next segment"]:::main N_SkipEDISegmentProcessing_Node0 -- Yes --> N_SkipEDISegmentProcessing_Node0_action N_SkipEDISegmentProcessing_Node0_action --> E_SkipEDISegmentProcessing S_SkipEDISegmentProcessing --> N_SkipEDISegmentProcessing_Node0 N_SkipEDISegmentProcessing_Node0 -- No --> E_SkipEDISegmentProcessing
current EDI segment and continue to
next segment"]:::main N_SkipEDISegmentProcessing_Node0 -- Yes --> N_SkipEDISegmentProcessing_Node0_action N_SkipEDISegmentProcessing_Node0_action --> E_SkipEDISegmentProcessing S_SkipEDISegmentProcessing --> N_SkipEDISegmentProcessing_Node0 N_SkipEDISegmentProcessing_Node0 -- No --> E_SkipEDISegmentProcessing
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
shipment root record does not exist in the database
WHEN:
cargo not found flag is set
THEN:
- Skip further processing of the current edi segment
- Continue to next segment
β Consolidated Acceptance Criteria
- Cargo found flag is set → proceed with disposition code processing and cargo status updates
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ProceedwithEDISegmentProcessing(["Start Step"])
E_ProceedwithEDISegmentProcessing(["End Step"])
N_ProceedwithEDISegmentProcessing_Node0{"cargo found flag is set"}:::decision
N_ProceedwithEDISegmentProcessing_Node0_action["proceed with disposition code
processing and cargo status updates"]:::main N_ProceedwithEDISegmentProcessing_Node0 -- Yes --> N_ProceedwithEDISegmentProcessing_Node0_action N_ProceedwithEDISegmentProcessing_Node0_action --> E_ProceedwithEDISegmentProcessing S_ProceedwithEDISegmentProcessing --> N_ProceedwithEDISegmentProcessing_Node0 N_ProceedwithEDISegmentProcessing_Node0 -- No --> E_ProceedwithEDISegmentProcessing
processing and cargo status updates"]:::main N_ProceedwithEDISegmentProcessing_Node0 -- Yes --> N_ProceedwithEDISegmentProcessing_Node0_action N_ProceedwithEDISegmentProcessing_Node0_action --> E_ProceedwithEDISegmentProcessing S_ProceedwithEDISegmentProcessing --> N_ProceedwithEDISegmentProcessing_Node0 N_ProceedwithEDISegmentProcessing_Node0 -- No --> E_ProceedwithEDISegmentProcessing
File: GCX016.cbl
GIVEN:
shipment root record exists in the database
WHEN:
cargo found flag is set
THEN:
- Proceed with disposition code processing
- Cargo status updates
β Consolidated Acceptance Criteria
- Cargo status changes are required → update cargo record with new status, release quantities, and disposition codes, and call GCCIIS for hold/release status changes if cargo status description changed
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UpdateShipmentRecordwithEDIData(["Start Step"])
E_UpdateShipmentRecordwithEDIData(["End Step"])
N_UpdateShipmentRecordwithEDIData_Node0{"cargo status changes are required"}:::decision
N_UpdateShipmentRecordwithEDIData_Node0_action["update cargo record with new
status, release quantities, and
disposition codes, and call GCCIIS
for holdrelease status changes if
cargo status description changed"]:::main N_UpdateShipmentRecordwithEDIData_Node0 -- Yes --> N_UpdateShipmentRecordwithEDIData_Node0_action N_UpdateShipmentRecordwithEDIData_Node0_action --> E_UpdateShipmentRecordwithEDIData S_UpdateShipmentRecordwithEDIData --> N_UpdateShipmentRecordwithEDIData_Node0 N_UpdateShipmentRecordwithEDIData_Node0 -- No --> E_UpdateShipmentRecordwithEDIData
status, release quantities, and
disposition codes, and call GCCIIS
for holdrelease status changes if
cargo status description changed"]:::main N_UpdateShipmentRecordwithEDIData_Node0 -- Yes --> N_UpdateShipmentRecordwithEDIData_Node0_action N_UpdateShipmentRecordwithEDIData_Node0_action --> E_UpdateShipmentRecordwithEDIData S_UpdateShipmentRecordwithEDIData --> N_UpdateShipmentRecordwithEDIData_Node0 N_UpdateShipmentRecordwithEDIData_Node0 -- No --> E_UpdateShipmentRecordwithEDIData
File: GCX016.cbl
GIVEN:
EDI segment has been successfully processed
WHEN:
cargo status changes are required
THEN:
update cargo record with new status, release quantities, and disposition codes, and call GCCIIS for hold/release status changes if cargo status description changed
β Consolidated Acceptance Criteria
- Cargo record has been updated → log cargo status changes and spawn GCT1051E logging transaction excluding disposition codes 54 and 55
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogSuccessfulProcessing(["Start Step"])
E_LogSuccessfulProcessing(["End Step"])
N_LogSuccessfulProcessing_Node0{"cargo record has been updated"}:::decision
N_LogSuccessfulProcessing_Node0_action["log cargo status changes and spawn
GCT1051E logging transaction
excluding disposition codes 54 and
55"]:::main N_LogSuccessfulProcessing_Node0 -- Yes --> N_LogSuccessfulProcessing_Node0_action N_LogSuccessfulProcessing_Node0_action --> E_LogSuccessfulProcessing S_LogSuccessfulProcessing --> N_LogSuccessfulProcessing_Node0 N_LogSuccessfulProcessing_Node0 -- No --> E_LogSuccessfulProcessing
GCT1051E logging transaction
excluding disposition codes 54 and
55"]:::main N_LogSuccessfulProcessing_Node0 -- Yes --> N_LogSuccessfulProcessing_Node0_action N_LogSuccessfulProcessing_Node0_action --> E_LogSuccessfulProcessing S_LogSuccessfulProcessing --> N_LogSuccessfulProcessing_Node0 N_LogSuccessfulProcessing_Node0 -- No --> E_LogSuccessfulProcessing
File: GCX016.cbl
GIVEN:
EDI segment processing has completed successfully
WHEN:
cargo record has been updated
THEN:
- Log cargo status changes
- Spawn gct1051e logging transaction excluding disposition codes 54
- 55
β Consolidated Acceptance Criteria
- More segments exist in the message queue → continue processing next available segment until end of queue is reached
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ContinuetoNextEDISegment(["Start Step"])
E_ContinuetoNextEDISegment(["End Step"])
N_ContinuetoNextEDISegment_Node0{"more segments exist in the message
queue"}:::decision N_ContinuetoNextEDISegment_Node0_action["continue processing next available
segment until end of queue is
reached"]:::main N_ContinuetoNextEDISegment_Node0 -- Yes --> N_ContinuetoNextEDISegment_Node0_action N_ContinuetoNextEDISegment_Node0_action --> E_ContinuetoNextEDISegment S_ContinuetoNextEDISegment --> N_ContinuetoNextEDISegment_Node0 N_ContinuetoNextEDISegment_Node0 -- No --> E_ContinuetoNextEDISegment
queue"}:::decision N_ContinuetoNextEDISegment_Node0_action["continue processing next available
segment until end of queue is
reached"]:::main N_ContinuetoNextEDISegment_Node0 -- Yes --> N_ContinuetoNextEDISegment_Node0_action N_ContinuetoNextEDISegment_Node0_action --> E_ContinuetoNextEDISegment S_ContinuetoNextEDISegment --> N_ContinuetoNextEDISegment_Node0 N_ContinuetoNextEDISegment_Node0 -- No --> E_ContinuetoNextEDISegment
File: GCX016.cbl
GIVEN:
current EDI segment processing is complete
WHEN:
more segments exist in the message queue
THEN:
continue processing next available segment until end of queue is reached
β Consolidated Acceptance Criteria
- The system checks for shipment root record existence → the system should validate the shipment root record exists and proceed with U1 creation, or log an error if not found
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ValidateShipmentRootRecord(["Start Step"])
E_ValidateShipmentRootRecord(["End Step"])
N_ValidateShipmentRootRecord_Node0{"The system checks for shipment root
record existence"}:::decision N_ValidateShipmentRootRecord_Node0_action["The system should validate the
shipment root record exists and
proceed with U1 creation, or log an
error if not found"]:::main N_ValidateShipmentRootRecord_Node0 -- Yes --> N_ValidateShipmentRootRecord_Node0_action N_ValidateShipmentRootRecord_Node0_action --> E_ValidateShipmentRootRecord S_ValidateShipmentRootRecord --> N_ValidateShipmentRootRecord_Node0 N_ValidateShipmentRootRecord_Node0 -- No --> E_ValidateShipmentRootRecord
record existence"}:::decision N_ValidateShipmentRootRecord_Node0_action["The system should validate the
shipment root record exists and
proceed with U1 creation, or log an
error if not found"]:::main N_ValidateShipmentRootRecord_Node0 -- Yes --> N_ValidateShipmentRootRecord_Node0_action N_ValidateShipmentRootRecord_Node0_action --> E_ValidateShipmentRootRecord S_ValidateShipmentRootRecord --> N_ValidateShipmentRootRecord_Node0 N_ValidateShipmentRootRecord_Node0 -- No --> E_ValidateShipmentRootRecord
File: GCX016.cbl
GIVEN:
A request to create U1 segment for a shipment
WHEN:
The system checks for shipment root record existence
THEN:
- The system should validate the shipment root record exists
- Proceed with u1 creation, or log an error if not found
β Consolidated Acceptance Criteria
- The shipment root record does not exist in the system → the system should log a shiproot not found error and terminate the U1 creation process
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogShiprootNotFoundError(["Start Step"])
E_LogShiprootNotFoundError(["End Step"])
N_LogShiprootNotFoundError_Node0{"The shipment root record does not
exist in the system"}:::decision N_LogShiprootNotFoundError_Node0_action["The system should log a shiproot
not found error and terminate the U1
creation process"]:::exclusion N_LogShiprootNotFoundError_Node0 -- Yes -->|Alternative| N_LogShiprootNotFoundError_Node0_action N_LogShiprootNotFoundError_Node0_action --> E_LogShiprootNotFoundError S_LogShiprootNotFoundError --> N_LogShiprootNotFoundError_Node0 N_LogShiprootNotFoundError_Node0 -- No --> E_LogShiprootNotFoundError
exist in the system"}:::decision N_LogShiprootNotFoundError_Node0_action["The system should log a shiproot
not found error and terminate the U1
creation process"]:::exclusion N_LogShiprootNotFoundError_Node0 -- Yes -->|Alternative| N_LogShiprootNotFoundError_Node0_action N_LogShiprootNotFoundError_Node0_action --> E_LogShiprootNotFoundError S_LogShiprootNotFoundError --> N_LogShiprootNotFoundError_Node0 N_LogShiprootNotFoundError_Node0 -- No --> E_LogShiprootNotFoundError
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
A U1 segment creation request for a shipment
WHEN:
The shipment root record does not exist in the system
THEN:
- The system should log a shiproot not found error
- Terminate the u1 creation process
β Consolidated Acceptance Criteria
- The system creates U1 segment structure → the system should convert CPRAIL type codes to corresponding EDI 309 standard values using the type code mapping table
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ConvertCPRAILTypeCodestoEDI309Values(["Start Step"])
E_ConvertCPRAILTypeCodestoEDI309Values(["End Step"])
N_ConvertCPRAILTypeCodestoEDI309Values_Node0{"The system creates U1 segment
structure"}:::decision N_ConvertCPRAILTypeCodestoEDI309Values_Node0_action["The system should convert CPRAIL
type codes to corresponding EDI 309
standard values using the type code
mapping table"]:::main N_ConvertCPRAILTypeCodestoEDI309Values_Node0 -- Yes --> N_ConvertCPRAILTypeCodestoEDI309Values_Node0_action N_ConvertCPRAILTypeCodestoEDI309Values_Node0_action --> E_ConvertCPRAILTypeCodestoEDI309Values S_ConvertCPRAILTypeCodestoEDI309Values --> N_ConvertCPRAILTypeCodestoEDI309Values_Node0 N_ConvertCPRAILTypeCodestoEDI309Values_Node0 -- No --> E_ConvertCPRAILTypeCodestoEDI309Values
structure"}:::decision N_ConvertCPRAILTypeCodestoEDI309Values_Node0_action["The system should convert CPRAIL
type codes to corresponding EDI 309
standard values using the type code
mapping table"]:::main N_ConvertCPRAILTypeCodestoEDI309Values_Node0 -- Yes --> N_ConvertCPRAILTypeCodestoEDI309Values_Node0_action N_ConvertCPRAILTypeCodestoEDI309Values_Node0_action --> E_ConvertCPRAILTypeCodestoEDI309Values S_ConvertCPRAILTypeCodestoEDI309Values --> N_ConvertCPRAILTypeCodestoEDI309Values_Node0 N_ConvertCPRAILTypeCodestoEDI309Values_Node0 -- No --> E_ConvertCPRAILTypeCodestoEDI309Values
File: GCX016.cbl
GIVEN:
In-bond information contains CPRAIL type codes
WHEN:
The system creates U1 segment structure
THEN:
The system should convert CPRAIL type codes to corresponding EDI 309 standard values using the type code mapping table
β Consolidated Acceptance Criteria
- The system attempts to store the U1 segment → the system should insert the U1 segment into the database and return success or failure status
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_InsertU1SegmentintoDatabase(["Start Step"])
E_InsertU1SegmentintoDatabase(["End Step"])
N_InsertU1SegmentintoDatabase_Node0{"The system attempts to store the U1
segment"}:::decision N_InsertU1SegmentintoDatabase_Node0_action["The system should insert the U1
segment into the database and return
success or failure status"]:::main N_InsertU1SegmentintoDatabase_Node0 -- Yes --> N_InsertU1SegmentintoDatabase_Node0_action N_InsertU1SegmentintoDatabase_Node0_action --> E_InsertU1SegmentintoDatabase S_InsertU1SegmentintoDatabase --> N_InsertU1SegmentintoDatabase_Node0 N_InsertU1SegmentintoDatabase_Node0 -- No --> E_InsertU1SegmentintoDatabase
segment"}:::decision N_InsertU1SegmentintoDatabase_Node0_action["The system should insert the U1
segment into the database and return
success or failure status"]:::main N_InsertU1SegmentintoDatabase_Node0 -- Yes --> N_InsertU1SegmentintoDatabase_Node0_action N_InsertU1SegmentintoDatabase_Node0_action --> E_InsertU1SegmentintoDatabase S_InsertU1SegmentintoDatabase --> N_InsertU1SegmentintoDatabase_Node0 N_InsertU1SegmentintoDatabase_Node0 -- No --> E_InsertU1SegmentintoDatabase
File: GCX016.cbl
GIVEN:
A U1 segment has been populated with in-bond details
WHEN:
The system attempts to store the U1 segment
THEN:
- The system should insert the u1 segment into the database
- Return success or failure status
β Consolidated Acceptance Criteria
- The database operation completes → the system should check if the database operation was successful and proceed accordingly or log an error if failed
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_DatabaseOperationSuccessful(["Start Step"])
E_DatabaseOperationSuccessful(["End Step"])
N_DatabaseOperationSuccessful_Node0{"The database operation completes"}:::decision
N_DatabaseOperationSuccessful_Node0_action["The system should check if the
database operation was successful
and proceed accordingly or log an
error if failed"]:::main N_DatabaseOperationSuccessful_Node0 -- Yes --> N_DatabaseOperationSuccessful_Node0_action N_DatabaseOperationSuccessful_Node0_action --> E_DatabaseOperationSuccessful S_DatabaseOperationSuccessful --> N_DatabaseOperationSuccessful_Node0 N_DatabaseOperationSuccessful_Node0 -- No --> E_DatabaseOperationSuccessful
database operation was successful
and proceed accordingly or log an
error if failed"]:::main N_DatabaseOperationSuccessful_Node0 -- Yes --> N_DatabaseOperationSuccessful_Node0_action N_DatabaseOperationSuccessful_Node0_action --> E_DatabaseOperationSuccessful S_DatabaseOperationSuccessful --> N_DatabaseOperationSuccessful_Node0 N_DatabaseOperationSuccessful_Node0 -- No --> E_DatabaseOperationSuccessful
File: GCX016.cbl
GIVEN:
A U1 segment insertion has been attempted
WHEN:
The database operation completes
THEN:
- The system should check if the database operation was successful
- Proceed accordingly or log an error if failed
β Consolidated Acceptance Criteria
- The database operation returns success status → the system should confirm U1 segment creation was successful and complete the process
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_U1SegmentCreatedSuccessfully(["Start Step"])
E_U1SegmentCreatedSuccessfully(["End Step"])
N_U1SegmentCreatedSuccessfully_Node0{"The database operation returns
success status"}:::decision N_U1SegmentCreatedSuccessfully_Node0_action["The system should confirm U1
segment creation was successful and
complete the process"]:::main N_U1SegmentCreatedSuccessfully_Node0 -- Yes --> N_U1SegmentCreatedSuccessfully_Node0_action N_U1SegmentCreatedSuccessfully_Node0_action --> E_U1SegmentCreatedSuccessfully S_U1SegmentCreatedSuccessfully --> N_U1SegmentCreatedSuccessfully_Node0 N_U1SegmentCreatedSuccessfully_Node0 -- No --> E_U1SegmentCreatedSuccessfully
success status"}:::decision N_U1SegmentCreatedSuccessfully_Node0_action["The system should confirm U1
segment creation was successful and
complete the process"]:::main N_U1SegmentCreatedSuccessfully_Node0 -- Yes --> N_U1SegmentCreatedSuccessfully_Node0_action N_U1SegmentCreatedSuccessfully_Node0_action --> E_U1SegmentCreatedSuccessfully S_U1SegmentCreatedSuccessfully --> N_U1SegmentCreatedSuccessfully_Node0 N_U1SegmentCreatedSuccessfully_Node0 -- No --> E_U1SegmentCreatedSuccessfully
File: GCX016.cbl
GIVEN:
U1 segment has been successfully inserted into the database
WHEN:
The database operation returns success status
THEN:
- The system should confirm u1 segment creation was successful
- Complete the process
β Consolidated Acceptance Criteria
- The system accesses the GCSTBRT IMS segment lookup table → the lookup table is made available for code conversion processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AccessInBondTypeCodeLookupTable(["Start Step"])
E_AccessInBondTypeCodeLookupTable(["End Step"])
N_AccessInBondTypeCodeLookupTable_Node0{"The system accesses the GCSTBRT IMS
segment lookup table"}:::decision N_AccessInBondTypeCodeLookupTable_Node0_action["The lookup table is made available
for code conversion processing"]:::main N_AccessInBondTypeCodeLookupTable_Node0 -- Yes --> N_AccessInBondTypeCodeLookupTable_Node0_action N_AccessInBondTypeCodeLookupTable_Node0_action --> E_AccessInBondTypeCodeLookupTable S_AccessInBondTypeCodeLookupTable --> N_AccessInBondTypeCodeLookupTable_Node0 N_AccessInBondTypeCodeLookupTable_Node0 -- No --> E_AccessInBondTypeCodeLookupTable
segment lookup table"}:::decision N_AccessInBondTypeCodeLookupTable_Node0_action["The lookup table is made available
for code conversion processing"]:::main N_AccessInBondTypeCodeLookupTable_Node0 -- Yes --> N_AccessInBondTypeCodeLookupTable_Node0_action N_AccessInBondTypeCodeLookupTable_Node0_action --> E_AccessInBondTypeCodeLookupTable S_AccessInBondTypeCodeLookupTable --> N_AccessInBondTypeCodeLookupTable_Node0 N_AccessInBondTypeCodeLookupTable_Node0 -- No --> E_AccessInBondTypeCodeLookupTable
File: GCX016.cbl
GIVEN:
A CPRAIL in-bond type code is received for conversion
WHEN:
The system accesses the GCSTBRT IMS segment lookup table
THEN:
The lookup table is made available for code conversion processing
β Consolidated Acceptance Criteria
- The system searches for the CPRAIL code in the lookup table → the system determines if the code exists and sets appropriate processing path
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CPRAILCodeFoundinTable(["Start Step"])
E_CPRAILCodeFoundinTable(["End Step"])
N_CPRAILCodeFoundinTable_Node0{"The system searches for the CPRAIL
code in the lookup table"}:::decision N_CPRAILCodeFoundinTable_Node0_action["The system determines if the code
exists and sets appropriate
processing path"]:::main N_CPRAILCodeFoundinTable_Node0 -- Yes --> N_CPRAILCodeFoundinTable_Node0_action N_CPRAILCodeFoundinTable_Node0_action --> E_CPRAILCodeFoundinTable S_CPRAILCodeFoundinTable --> N_CPRAILCodeFoundinTable_Node0 N_CPRAILCodeFoundinTable_Node0 -- No --> E_CPRAILCodeFoundinTable
code in the lookup table"}:::decision N_CPRAILCodeFoundinTable_Node0_action["The system determines if the code
exists and sets appropriate
processing path"]:::main N_CPRAILCodeFoundinTable_Node0 -- Yes --> N_CPRAILCodeFoundinTable_Node0_action N_CPRAILCodeFoundinTable_Node0_action --> E_CPRAILCodeFoundinTable S_CPRAILCodeFoundinTable --> N_CPRAILCodeFoundinTable_Node0 N_CPRAILCodeFoundinTable_Node0 -- No --> E_CPRAILCodeFoundinTable
File: GCX016.cbl
GIVEN:
A CPRAIL in-bond type code and access to the lookup table
WHEN:
The system searches for the CPRAIL code in the lookup table
THEN:
- The system determines if the code exists
- Sets appropriate processing path
β Consolidated Acceptance Criteria
- The system finds a matching entry in the lookup table → the corresponding EDI 309 standard value is retrieved for conversion
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RetrieveCorrespondingEDI309StandardValue(["Start Step"])
E_RetrieveCorrespondingEDI309StandardValue(["End Step"])
N_RetrieveCorrespondingEDI309StandardValue_Node0{"The system finds a matching entry
in the lookup table"}:::decision N_RetrieveCorrespondingEDI309StandardValue_Node0_action["The corresponding EDI 309 standard
value is retrieved for conversion"]:::main N_RetrieveCorrespondingEDI309StandardValue_Node0 -- Yes --> N_RetrieveCorrespondingEDI309StandardValue_Node0_action N_RetrieveCorrespondingEDI309StandardValue_Node0_action --> E_RetrieveCorrespondingEDI309StandardValue S_RetrieveCorrespondingEDI309StandardValue --> N_RetrieveCorrespondingEDI309StandardValue_Node0 N_RetrieveCorrespondingEDI309StandardValue_Node0 -- No --> E_RetrieveCorrespondingEDI309StandardValue
in the lookup table"}:::decision N_RetrieveCorrespondingEDI309StandardValue_Node0_action["The corresponding EDI 309 standard
value is retrieved for conversion"]:::main N_RetrieveCorrespondingEDI309StandardValue_Node0 -- Yes --> N_RetrieveCorrespondingEDI309StandardValue_Node0_action N_RetrieveCorrespondingEDI309StandardValue_Node0_action --> E_RetrieveCorrespondingEDI309StandardValue S_RetrieveCorrespondingEDI309StandardValue --> N_RetrieveCorrespondingEDI309StandardValue_Node0 N_RetrieveCorrespondingEDI309StandardValue_Node0 -- No --> E_RetrieveCorrespondingEDI309StandardValue
File: GCX016.cbl
GIVEN:
A CPRAIL in-bond type code that exists in the lookup table
WHEN:
The system finds a matching entry in the lookup table
THEN:
The corresponding EDI 309 standard value is retrieved for conversion
β Consolidated Acceptance Criteria
- The system cannot find a matching entry in the lookup table → a default EDI 309 value is applied for the conversion process
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ApplyDefaultEDI309Value(["Start Step"])
E_ApplyDefaultEDI309Value(["End Step"])
N_ApplyDefaultEDI309Value_Node0{"The system cannot find a matching
entry in the lookup table"}:::decision N_ApplyDefaultEDI309Value_Node0_action["A default EDI 309 value is applied
for the conversion process"]:::main N_ApplyDefaultEDI309Value_Node0 -- Yes --> N_ApplyDefaultEDI309Value_Node0_action N_ApplyDefaultEDI309Value_Node0_action --> E_ApplyDefaultEDI309Value S_ApplyDefaultEDI309Value --> N_ApplyDefaultEDI309Value_Node0 N_ApplyDefaultEDI309Value_Node0 -- No --> E_ApplyDefaultEDI309Value
entry in the lookup table"}:::decision N_ApplyDefaultEDI309Value_Node0_action["A default EDI 309 value is applied
for the conversion process"]:::main N_ApplyDefaultEDI309Value_Node0 -- Yes --> N_ApplyDefaultEDI309Value_Node0_action N_ApplyDefaultEDI309Value_Node0_action --> E_ApplyDefaultEDI309Value S_ApplyDefaultEDI309Value --> N_ApplyDefaultEDI309Value_Node0 N_ApplyDefaultEDI309Value_Node0 -- No --> E_ApplyDefaultEDI309Value
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
A CPRAIL in-bond type code that does not exist in the lookup table
WHEN:
The system cannot find a matching entry in the lookup table
THEN:
A default EDI 309 value is applied for the conversion process
β Consolidated Acceptance Criteria
- The system performs the format conversion from CPRAIL to EDI 309 → the CPRAIL code is converted to the appropriate EDI 309 format
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ConvertCPRAILCodetoEDI309Format(["Start Step"])
E_ConvertCPRAILCodetoEDI309Format(["End Step"])
N_ConvertCPRAILCodetoEDI309Format_Node0{"The system performs the format
conversion from CPRAIL to EDI 309"}:::decision N_ConvertCPRAILCodetoEDI309Format_Node0_action["The CPRAIL code is converted to the
appropriate EDI 309 format"]:::main N_ConvertCPRAILCodetoEDI309Format_Node0 -- Yes --> N_ConvertCPRAILCodetoEDI309Format_Node0_action N_ConvertCPRAILCodetoEDI309Format_Node0_action --> E_ConvertCPRAILCodetoEDI309Format S_ConvertCPRAILCodetoEDI309Format --> N_ConvertCPRAILCodetoEDI309Format_Node0 N_ConvertCPRAILCodetoEDI309Format_Node0 -- No --> E_ConvertCPRAILCodetoEDI309Format
conversion from CPRAIL to EDI 309"}:::decision N_ConvertCPRAILCodetoEDI309Format_Node0_action["The CPRAIL code is converted to the
appropriate EDI 309 format"]:::main N_ConvertCPRAILCodetoEDI309Format_Node0 -- Yes --> N_ConvertCPRAILCodetoEDI309Format_Node0_action N_ConvertCPRAILCodetoEDI309Format_Node0_action --> E_ConvertCPRAILCodetoEDI309Format S_ConvertCPRAILCodetoEDI309Format --> N_ConvertCPRAILCodetoEDI309Format_Node0 N_ConvertCPRAILCodetoEDI309Format_Node0 -- No --> E_ConvertCPRAILCodetoEDI309Format
File: GCX016.cbl
GIVEN:
Either a retrieved EDI 309 standard value or a default EDI 309 value
WHEN:
The system performs the format conversion from CPRAIL to EDI 309
THEN:
The CPRAIL code is converted to the appropriate EDI 309 format
β Consolidated Acceptance Criteria
- The system validates the converted code against EDI 309 standards → the system determines if the conversion is valid and sets appropriate processing path
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ValidateConvertedCode(["Start Step"])
E_ValidateConvertedCode(["End Step"])
N_ValidateConvertedCode_Node0{"The system validates the converted
code against EDI 309 standards"}:::decision N_ValidateConvertedCode_Node0_action["The system determines if the
conversion is valid and sets
appropriate processing path"]:::main N_ValidateConvertedCode_Node0 -- Yes --> N_ValidateConvertedCode_Node0_action N_ValidateConvertedCode_Node0_action --> E_ValidateConvertedCode S_ValidateConvertedCode --> N_ValidateConvertedCode_Node0 N_ValidateConvertedCode_Node0 -- No --> E_ValidateConvertedCode
code against EDI 309 standards"}:::decision N_ValidateConvertedCode_Node0_action["The system determines if the
conversion is valid and sets
appropriate processing path"]:::main N_ValidateConvertedCode_Node0 -- Yes --> N_ValidateConvertedCode_Node0_action N_ValidateConvertedCode_Node0_action --> E_ValidateConvertedCode S_ValidateConvertedCode --> N_ValidateConvertedCode_Node0 N_ValidateConvertedCode_Node0 -- No --> E_ValidateConvertedCode
File: GCX016.cbl
GIVEN:
A converted EDI 309 in-bond type code
WHEN:
The system validates the converted code against EDI 309 standards
THEN:
- The system determines if the conversion is valid
- Sets appropriate processing path
β Consolidated Acceptance Criteria
- The conversion validation passes → the U1 segment is updated with the converted EDI 309 value
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UpdateU1SegmentwithEDI309Value(["Start Step"])
E_UpdateU1SegmentwithEDI309Value(["End Step"])
N_UpdateU1SegmentwithEDI309Value_Node0{"The conversion validation passes"}:::decision
N_UpdateU1SegmentwithEDI309Value_Node0_action["The U1 segment is updated with the
converted EDI 309 value"]:::main N_UpdateU1SegmentwithEDI309Value_Node0 -- Yes --> N_UpdateU1SegmentwithEDI309Value_Node0_action N_UpdateU1SegmentwithEDI309Value_Node0_action --> E_UpdateU1SegmentwithEDI309Value S_UpdateU1SegmentwithEDI309Value --> N_UpdateU1SegmentwithEDI309Value_Node0 N_UpdateU1SegmentwithEDI309Value_Node0 -- No --> E_UpdateU1SegmentwithEDI309Value
converted EDI 309 value"]:::main N_UpdateU1SegmentwithEDI309Value_Node0 -- Yes --> N_UpdateU1SegmentwithEDI309Value_Node0_action N_UpdateU1SegmentwithEDI309Value_Node0_action --> E_UpdateU1SegmentwithEDI309Value S_UpdateU1SegmentwithEDI309Value --> N_UpdateU1SegmentwithEDI309Value_Node0 N_UpdateU1SegmentwithEDI309Value_Node0 -- No --> E_UpdateU1SegmentwithEDI309Value
File: GCX016.cbl
GIVEN:
A successfully validated EDI 309 in-bond type code
WHEN:
The conversion validation passes
THEN:
The U1 segment is updated with the converted EDI 309 value
β Consolidated Acceptance Criteria
- The conversion validation fails → the system logs the conversion error for audit and troubleshooting purposes
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogConversionError(["Start Step"])
E_LogConversionError(["End Step"])
N_LogConversionError_Node0{"The conversion validation fails"}:::decision
N_LogConversionError_Node0_action["The system logs the conversion
error for audit and troubleshooting
purposes"]:::main N_LogConversionError_Node0 -- Yes --> N_LogConversionError_Node0_action N_LogConversionError_Node0_action --> E_LogConversionError S_LogConversionError --> N_LogConversionError_Node0 N_LogConversionError_Node0 -- No --> E_LogConversionError
error for audit and troubleshooting
purposes"]:::main N_LogConversionError_Node0 -- Yes --> N_LogConversionError_Node0_action N_LogConversionError_Node0_action --> E_LogConversionError S_LogConversionError --> N_LogConversionError_Node0 N_LogConversionError_Node0 -- No --> E_LogConversionError
File: GCX016.cbl
GIVEN:
An EDI 309 in-bond type code that fails validation
WHEN:
The conversion validation fails
THEN:
- The system logs the conversion error for audit
- Troubleshooting purposes
β Consolidated Acceptance Criteria
- The EDI 309 conversion cannot be completed successfully → the system uses the original CPRAIL in-bond type code value
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UseOriginalCPRAILValue(["Start Step"])
E_UseOriginalCPRAILValue(["End Step"])
N_UseOriginalCPRAILValue_Node0{"The EDI 309 conversion cannot be
completed successfully"}:::decision N_UseOriginalCPRAILValue_Node0_action["The system uses the original CPRAIL
in-bond type code value"]:::main N_UseOriginalCPRAILValue_Node0 -- Yes --> N_UseOriginalCPRAILValue_Node0_action N_UseOriginalCPRAILValue_Node0_action --> E_UseOriginalCPRAILValue S_UseOriginalCPRAILValue --> N_UseOriginalCPRAILValue_Node0 N_UseOriginalCPRAILValue_Node0 -- No --> E_UseOriginalCPRAILValue
completed successfully"}:::decision N_UseOriginalCPRAILValue_Node0_action["The system uses the original CPRAIL
in-bond type code value"]:::main N_UseOriginalCPRAILValue_Node0 -- Yes --> N_UseOriginalCPRAILValue_Node0_action N_UseOriginalCPRAILValue_Node0_action --> E_UseOriginalCPRAILValue S_UseOriginalCPRAILValue --> N_UseOriginalCPRAILValue_Node0 N_UseOriginalCPRAILValue_Node0 -- No --> E_UseOriginalCPRAILValue
File: GCX016.cbl
GIVEN:
A conversion error has been logged
WHEN:
The EDI 309 conversion cannot be completed successfully
THEN:
The system uses the original CPRAIL in-bond type code value
β Consolidated Acceptance Criteria
- The system checks for shipment root existence in the database → if shipment root does not exist, processing stops with error handling, otherwise processing continues
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ValidateShiprootExistence(["Start Step"])
E_ValidateShiprootExistence(["End Step"])
N_ValidateShiprootExistence_Node0{"The system checks for shipment root
existence in the database"}:::decision N_ValidateShiprootExistence_Node0_action["If shipment root does not exist,
processing stops with error
handling, otherwise processing
continues"]:::main N_ValidateShiprootExistence_Node0 -- Yes --> N_ValidateShiprootExistence_Node0_action N_ValidateShiprootExistence_Node0_action --> E_ValidateShiprootExistence S_ValidateShiprootExistence --> N_ValidateShiprootExistence_Node0 N_ValidateShiprootExistence_Node0 -- No --> E_ValidateShiprootExistence
existence in the database"}:::decision N_ValidateShiprootExistence_Node0_action["If shipment root does not exist,
processing stops with error
handling, otherwise processing
continues"]:::main N_ValidateShiprootExistence_Node0 -- Yes --> N_ValidateShiprootExistence_Node0_action N_ValidateShiprootExistence_Node0_action --> E_ValidateShiprootExistence S_ValidateShiprootExistence --> N_ValidateShiprootExistence_Node0 N_ValidateShiprootExistence_Node0 -- No --> E_ValidateShiprootExistence
File: GCX016.cbl
GIVEN:
A U1 shipment segment needs to be processed
WHEN:
The system checks for shipment root existence in the database
THEN:
If shipment root does not exist, processing stops with error handling, otherwise processing continues
β Consolidated Acceptance Criteria
- The system processes the in-bond type codes for EDI transmission → cPRAIL codes are converted to their corresponding EDI 309 standard values
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ConvertCPRAILtoEDI309Values(["Start Step"])
E_ConvertCPRAILtoEDI309Values(["End Step"])
N_ConvertCPRAILtoEDI309Values_Node0{"The system processes the in-bond
type codes for EDI transmission"}:::decision N_ConvertCPRAILtoEDI309Values_Node0_action["CPRAIL codes are converted to their
corresponding EDI 309 standard
values"]:::main N_ConvertCPRAILtoEDI309Values_Node0 -- Yes --> N_ConvertCPRAILtoEDI309Values_Node0_action N_ConvertCPRAILtoEDI309Values_Node0_action --> E_ConvertCPRAILtoEDI309Values S_ConvertCPRAILtoEDI309Values --> N_ConvertCPRAILtoEDI309Values_Node0 N_ConvertCPRAILtoEDI309Values_Node0 -- No --> E_ConvertCPRAILtoEDI309Values
type codes for EDI transmission"}:::decision N_ConvertCPRAILtoEDI309Values_Node0_action["CPRAIL codes are converted to their
corresponding EDI 309 standard
values"]:::main N_ConvertCPRAILtoEDI309Values_Node0 -- Yes --> N_ConvertCPRAILtoEDI309Values_Node0_action N_ConvertCPRAILtoEDI309Values_Node0_action --> E_ConvertCPRAILtoEDI309Values S_ConvertCPRAILtoEDI309Values --> N_ConvertCPRAILtoEDI309Values_Node0 N_ConvertCPRAILtoEDI309Values_Node0 -- No --> E_ConvertCPRAILtoEDI309Values
File: GCX016.cbl
GIVEN:
A U1 segment contains CPRAIL in-bond type codes
WHEN:
The system processes the in-bond type codes for EDI transmission
THEN:
CPRAIL codes are converted to their corresponding EDI 309 standard values
β Consolidated Acceptance Criteria
- The system builds the segment structure → all relevant in-bond details including bond numbers, entry types, and customs information are included in the segment
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IncludeInBondDetails(["Start Step"])
E_IncludeInBondDetails(["End Step"])
N_IncludeInBondDetails_Node0{"The system builds the segment
structure"}:::decision N_IncludeInBondDetails_Node0_action["All relevant in-bond details
including bond numbers, entry types,
and customs information are included
in the segment"]:::main N_IncludeInBondDetails_Node0 -- Yes --> N_IncludeInBondDetails_Node0_action N_IncludeInBondDetails_Node0_action --> E_IncludeInBondDetails S_IncludeInBondDetails --> N_IncludeInBondDetails_Node0 N_IncludeInBondDetails_Node0 -- No --> E_IncludeInBondDetails
structure"}:::decision N_IncludeInBondDetails_Node0_action["All relevant in-bond details
including bond numbers, entry types,
and customs information are included
in the segment"]:::main N_IncludeInBondDetails_Node0 -- Yes --> N_IncludeInBondDetails_Node0_action N_IncludeInBondDetails_Node0_action --> E_IncludeInBondDetails S_IncludeInBondDetails --> N_IncludeInBondDetails_Node0 N_IncludeInBondDetails_Node0 -- No --> E_IncludeInBondDetails
File: GCX016.cbl
GIVEN:
A U1 segment is being prepared for database storage
WHEN:
The system builds the segment structure
THEN:
All relevant in-bond details including bond numbers, entry types, and customs information are included in the segment
β Consolidated Acceptance Criteria
- The system checks if a U1 segment already exists for the shipment → if segment exists, perform replace operation, otherwise perform insert operation
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_U1SegmentExists(["Start Step"])
E_U1SegmentExists(["End Step"])
N_U1SegmentExists_Node0{"The system checks if a U1 segment
already exists for the shipment"}:::decision N_U1SegmentExists_Node0_action["If segment exists, perform replace
operation, otherwise perform insert
operation"]:::main N_U1SegmentExists_Node0 -- Yes --> N_U1SegmentExists_Node0_action N_U1SegmentExists_Node0_action --> E_U1SegmentExists S_U1SegmentExists --> N_U1SegmentExists_Node0 N_U1SegmentExists_Node0 -- No --> E_U1SegmentExists
already exists for the shipment"}:::decision N_U1SegmentExists_Node0_action["If segment exists, perform replace
operation, otherwise perform insert
operation"]:::main N_U1SegmentExists_Node0 -- Yes --> N_U1SegmentExists_Node0_action N_U1SegmentExists_Node0_action --> E_U1SegmentExists S_U1SegmentExists --> N_U1SegmentExists_Node0 N_U1SegmentExists_Node0 -- No --> E_U1SegmentExists
File: GCX016.cbl
GIVEN:
A U1 segment needs to be stored in the database
WHEN:
The system checks if a U1 segment already exists for the shipment
THEN:
If segment exists, perform replace operation, otherwise perform insert operation
β Consolidated Acceptance Criteria
- The system performs database insert operation → a new U1 segment record is created with all in-bond details
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_InsertNewU1Segment(["Start Step"])
E_InsertNewU1Segment(["End Step"])
N_InsertNewU1Segment_Node0{"The system performs database insert
operation"}:::decision N_InsertNewU1Segment_Node0_action["A new U1 segment record is created
with all in-bond details"]:::main N_InsertNewU1Segment_Node0 -- Yes --> N_InsertNewU1Segment_Node0_action N_InsertNewU1Segment_Node0_action --> E_InsertNewU1Segment S_InsertNewU1Segment --> N_InsertNewU1Segment_Node0 N_InsertNewU1Segment_Node0 -- No --> E_InsertNewU1Segment
operation"}:::decision N_InsertNewU1Segment_Node0_action["A new U1 segment record is created
with all in-bond details"]:::main N_InsertNewU1Segment_Node0 -- Yes --> N_InsertNewU1Segment_Node0_action N_InsertNewU1Segment_Node0_action --> E_InsertNewU1Segment S_InsertNewU1Segment --> N_InsertNewU1Segment_Node0 N_InsertNewU1Segment_Node0 -- No --> E_InsertNewU1Segment
File: GCX016.cbl
GIVEN:
No existing U1 segment exists for the shipment
WHEN:
The system performs database insert operation
THEN:
A new U1 segment record is created with all in-bond details
β Consolidated Acceptance Criteria
- The system performs database replace operation → the existing U1 segment record is updated with current in-bond details
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ReplaceExistingU1Segment(["Start Step"])
E_ReplaceExistingU1Segment(["End Step"])
N_ReplaceExistingU1Segment_Node0{"The system performs database
replace operation"}:::decision N_ReplaceExistingU1Segment_Node0_action["The existing U1 segment record is
updated with current in-bond details"]:::main N_ReplaceExistingU1Segment_Node0 -- Yes --> N_ReplaceExistingU1Segment_Node0_action N_ReplaceExistingU1Segment_Node0_action --> E_ReplaceExistingU1Segment S_ReplaceExistingU1Segment --> N_ReplaceExistingU1Segment_Node0 N_ReplaceExistingU1Segment_Node0 -- No --> E_ReplaceExistingU1Segment
replace operation"}:::decision N_ReplaceExistingU1Segment_Node0_action["The existing U1 segment record is
updated with current in-bond details"]:::main N_ReplaceExistingU1Segment_Node0 -- Yes --> N_ReplaceExistingU1Segment_Node0_action N_ReplaceExistingU1Segment_Node0_action --> E_ReplaceExistingU1Segment S_ReplaceExistingU1Segment --> N_ReplaceExistingU1Segment_Node0 N_ReplaceExistingU1Segment_Node0 -- No --> E_ReplaceExistingU1Segment
File: GCX016.cbl
GIVEN:
An existing U1 segment exists for the shipment
WHEN:
The system performs database replace operation
THEN:
The existing U1 segment record is updated with current in-bond details
β Consolidated Acceptance Criteria
- If the location ID type → the system selects DS table for station codes, KS table for port codes, or SD table for general locations
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LocationIDType(["Start Step"])
E_LocationIDType(["End Step"])
N_LocationIDType_Node0{"The system evaluates the location
ID type"}:::decision N_LocationIDType_Node0_action["The system selects DS table for
station codes, KS table for port
codes, or SD table for general
locations"]:::main N_LocationIDType_Node0 -- Yes --> N_LocationIDType_Node0_action N_LocationIDType_Node0_action --> E_LocationIDType S_LocationIDType --> N_LocationIDType_Node0 N_LocationIDType_Node0 -- No --> E_LocationIDType
ID type"}:::decision N_LocationIDType_Node0_action["The system selects DS table for
station codes, KS table for port
codes, or SD table for general
locations"]:::main N_LocationIDType_Node0 -- Yes --> N_LocationIDType_Node0_action N_LocationIDType_Node0_action --> E_LocationIDType S_LocationIDType --> N_LocationIDType_Node0 N_LocationIDType_Node0 -- No --> E_LocationIDType
File: GCX016.cbl
GIVEN:
A location ID is received for resolution
WHEN:
The system evaluates the location ID type
THEN:
The system selects DS table for station codes, KS table for port codes, or SD table for general locations
β Consolidated Acceptance Criteria
- The system performs DS table lookup using the location ID → the system retrieves station data from DS table or determines location not found
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LookupinDSTable(["Start Step"])
E_LookupinDSTable(["End Step"])
N_LookupinDSTable_Node0{"The system performs DS table lookup
using the location ID"}:::decision N_LookupinDSTable_Node0_action["The system retrieves station data
from DS table or determines location
not found"]:::main N_LookupinDSTable_Node0 -- Yes --> N_LookupinDSTable_Node0_action N_LookupinDSTable_Node0_action --> E_LookupinDSTable S_LookupinDSTable --> N_LookupinDSTable_Node0 N_LookupinDSTable_Node0 -- No --> E_LookupinDSTable
using the location ID"}:::decision N_LookupinDSTable_Node0_action["The system retrieves station data
from DS table or determines location
not found"]:::main N_LookupinDSTable_Node0 -- Yes --> N_LookupinDSTable_Node0_action N_LookupinDSTable_Node0_action --> E_LookupinDSTable S_LookupinDSTable --> N_LookupinDSTable_Node0 N_LookupinDSTable_Node0 -- No --> E_LookupinDSTable
File: GCX016.cbl
GIVEN:
A station code location ID needs to be resolved
WHEN:
The system performs DS table lookup using the location ID
THEN:
The system retrieves station data from DS table or determines location not found
β Consolidated Acceptance Criteria
- The system performs KS table lookup using the location ID → the system retrieves port data from KS table or determines location not found
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LookupinKSTable(["Start Step"])
E_LookupinKSTable(["End Step"])
N_LookupinKSTable_Node0{"The system performs KS table lookup
using the location ID"}:::decision N_LookupinKSTable_Node0_action["The system retrieves port data from
KS table or determines location not
found"]:::main N_LookupinKSTable_Node0 -- Yes --> N_LookupinKSTable_Node0_action N_LookupinKSTable_Node0_action --> E_LookupinKSTable S_LookupinKSTable --> N_LookupinKSTable_Node0 N_LookupinKSTable_Node0 -- No --> E_LookupinKSTable
using the location ID"}:::decision N_LookupinKSTable_Node0_action["The system retrieves port data from
KS table or determines location not
found"]:::main N_LookupinKSTable_Node0 -- Yes --> N_LookupinKSTable_Node0_action N_LookupinKSTable_Node0_action --> E_LookupinKSTable S_LookupinKSTable --> N_LookupinKSTable_Node0 N_LookupinKSTable_Node0 -- No --> E_LookupinKSTable
File: GCX016.cbl
GIVEN:
A port code location ID needs to be resolved
WHEN:
The system performs KS table lookup using the location ID
THEN:
The system retrieves port data from KS table or determines location not found
β Consolidated Acceptance Criteria
- The system performs SD table lookup using the location ID → the system retrieves location data from SD table or determines location not found
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LookupinSDTable(["Start Step"])
E_LookupinSDTable(["End Step"])
N_LookupinSDTable_Node0{"The system performs SD table lookup
using the location ID"}:::decision N_LookupinSDTable_Node0_action["The system retrieves location data
from SD table or determines location
not found"]:::main N_LookupinSDTable_Node0 -- Yes --> N_LookupinSDTable_Node0_action N_LookupinSDTable_Node0_action --> E_LookupinSDTable S_LookupinSDTable --> N_LookupinSDTable_Node0 N_LookupinSDTable_Node0 -- No --> E_LookupinSDTable
using the location ID"}:::decision N_LookupinSDTable_Node0_action["The system retrieves location data
from SD table or determines location
not found"]:::main N_LookupinSDTable_Node0 -- Yes --> N_LookupinSDTable_Node0_action N_LookupinSDTable_Node0_action --> E_LookupinSDTable S_LookupinSDTable --> N_LookupinSDTable_Node0 N_LookupinSDTable_Node0 -- No --> E_LookupinSDTable
File: GCX016.cbl
GIVEN:
A general location ID needs to be resolved
WHEN:
The system performs SD table lookup using the location ID
THEN:
The system retrieves location data from SD table or determines location not found
β Consolidated Acceptance Criteria
- The system checks the lookup result → if location is found in DS table, proceed to retrieve location name, otherwise try KS table lookup
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LocationFoundinDS(["Start Step"])
E_LocationFoundinDS(["End Step"])
N_LocationFoundinDS_Node0{"The system checks the lookup result"}:::decision
N_LocationFoundinDS_Node0_action["If location is found in DS table,
proceed to retrieve location name,
otherwise try KS table lookup"]:::main N_LocationFoundinDS_Node0 -- Yes --> N_LocationFoundinDS_Node0_action N_LocationFoundinDS_Node0_action --> E_LocationFoundinDS S_LocationFoundinDS --> N_LocationFoundinDS_Node0 N_LocationFoundinDS_Node0 -- No --> E_LocationFoundinDS
proceed to retrieve location name,
otherwise try KS table lookup"]:::main N_LocationFoundinDS_Node0 -- Yes --> N_LocationFoundinDS_Node0_action N_LocationFoundinDS_Node0_action --> E_LocationFoundinDS S_LocationFoundinDS --> N_LocationFoundinDS_Node0 N_LocationFoundinDS_Node0 -- No --> E_LocationFoundinDS
File: GCX016.cbl
GIVEN:
DS table lookup has been performed for a station location
WHEN:
The system checks the lookup result
THEN:
If location is found in DS table, proceed to retrieve location name, otherwise try KS table lookup
β Consolidated Acceptance Criteria
- The system checks the lookup result → if location is found in KS table, proceed to retrieve location name, otherwise try SD table lookup
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LocationFoundinKS(["Start Step"])
E_LocationFoundinKS(["End Step"])
N_LocationFoundinKS_Node0{"The system checks the lookup result"}:::decision
N_LocationFoundinKS_Node0_action["If location is found in KS table,
proceed to retrieve location name,
otherwise try SD table lookup"]:::main N_LocationFoundinKS_Node0 -- Yes --> N_LocationFoundinKS_Node0_action N_LocationFoundinKS_Node0_action --> E_LocationFoundinKS S_LocationFoundinKS --> N_LocationFoundinKS_Node0 N_LocationFoundinKS_Node0 -- No --> E_LocationFoundinKS
proceed to retrieve location name,
otherwise try SD table lookup"]:::main N_LocationFoundinKS_Node0 -- Yes --> N_LocationFoundinKS_Node0_action N_LocationFoundinKS_Node0_action --> E_LocationFoundinKS S_LocationFoundinKS --> N_LocationFoundinKS_Node0 N_LocationFoundinKS_Node0 -- No --> E_LocationFoundinKS
File: GCX016.cbl
GIVEN:
KS table lookup has been performed for a port location or DS lookup failed
WHEN:
The system checks the lookup result
THEN:
If location is found in KS table, proceed to retrieve location name, otherwise try SD table lookup
β Consolidated Acceptance Criteria
- The system checks the lookup result → if location is found in SD table, proceed to retrieve location name, otherwise generate location not found error
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LocationFoundinSD(["Start Step"])
E_LocationFoundinSD(["End Step"])
N_LocationFoundinSD_Node0{"The system checks the lookup result"}:::decision
N_LocationFoundinSD_Node0_action["If location is found in SD table,
proceed to retrieve location name,
otherwise generate location not
found error"]:::main N_LocationFoundinSD_Node0 -- Yes --> N_LocationFoundinSD_Node0_action N_LocationFoundinSD_Node0_action --> E_LocationFoundinSD S_LocationFoundinSD --> N_LocationFoundinSD_Node0 N_LocationFoundinSD_Node0 -- No --> E_LocationFoundinSD
proceed to retrieve location name,
otherwise generate location not
found error"]:::main N_LocationFoundinSD_Node0 -- Yes --> N_LocationFoundinSD_Node0_action N_LocationFoundinSD_Node0_action --> E_LocationFoundinSD S_LocationFoundinSD --> N_LocationFoundinSD_Node0 N_LocationFoundinSD_Node0 -- No --> E_LocationFoundinSD
File: GCX016.cbl
GIVEN:
SD table lookup has been performed for a general location or previous lookups failed
WHEN:
The system checks the lookup result
THEN:
If location is found in SD table, proceed to retrieve location name, otherwise generate location not found error
β Consolidated Acceptance Criteria
- The system retrieves the location information → the system extracts the descriptive location name from the DS table record
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RetrieveLocationNamefromDS(["Start Step"])
E_RetrieveLocationNamefromDS(["End Step"])
N_RetrieveLocationNamefromDS_Node0{"The system retrieves the location
information"}:::decision N_RetrieveLocationNamefromDS_Node0_action["The system extracts the descriptive
location name from the DS table
record"]:::main N_RetrieveLocationNamefromDS_Node0 -- Yes --> N_RetrieveLocationNamefromDS_Node0_action N_RetrieveLocationNamefromDS_Node0_action --> E_RetrieveLocationNamefromDS S_RetrieveLocationNamefromDS --> N_RetrieveLocationNamefromDS_Node0 N_RetrieveLocationNamefromDS_Node0 -- No --> E_RetrieveLocationNamefromDS
information"}:::decision N_RetrieveLocationNamefromDS_Node0_action["The system extracts the descriptive
location name from the DS table
record"]:::main N_RetrieveLocationNamefromDS_Node0 -- Yes --> N_RetrieveLocationNamefromDS_Node0_action N_RetrieveLocationNamefromDS_Node0_action --> E_RetrieveLocationNamefromDS S_RetrieveLocationNamefromDS --> N_RetrieveLocationNamefromDS_Node0 N_RetrieveLocationNamefromDS_Node0 -- No --> E_RetrieveLocationNamefromDS
File: GCX016.cbl
GIVEN:
Location has been successfully found in DS table
WHEN:
The system retrieves the location information
THEN:
The system extracts the descriptive location name from the DS table record
β Consolidated Acceptance Criteria
- The system retrieves the location information → the system extracts the descriptive location name from the KS table record
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RetrieveLocationNamefromKS(["Start Step"])
E_RetrieveLocationNamefromKS(["End Step"])
N_RetrieveLocationNamefromKS_Node0{"The system retrieves the location
information"}:::decision N_RetrieveLocationNamefromKS_Node0_action["The system extracts the descriptive
location name from the KS table
record"]:::main N_RetrieveLocationNamefromKS_Node0 -- Yes --> N_RetrieveLocationNamefromKS_Node0_action N_RetrieveLocationNamefromKS_Node0_action --> E_RetrieveLocationNamefromKS S_RetrieveLocationNamefromKS --> N_RetrieveLocationNamefromKS_Node0 N_RetrieveLocationNamefromKS_Node0 -- No --> E_RetrieveLocationNamefromKS
information"}:::decision N_RetrieveLocationNamefromKS_Node0_action["The system extracts the descriptive
location name from the KS table
record"]:::main N_RetrieveLocationNamefromKS_Node0 -- Yes --> N_RetrieveLocationNamefromKS_Node0_action N_RetrieveLocationNamefromKS_Node0_action --> E_RetrieveLocationNamefromKS S_RetrieveLocationNamefromKS --> N_RetrieveLocationNamefromKS_Node0 N_RetrieveLocationNamefromKS_Node0 -- No --> E_RetrieveLocationNamefromKS
File: GCX016.cbl
GIVEN:
Location has been successfully found in KS table
WHEN:
The system retrieves the location information
THEN:
The system extracts the descriptive location name from the KS table record
β Consolidated Acceptance Criteria
- The system retrieves the location information → the system extracts the descriptive location name from the SD table record
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RetrieveLocationNamefromSD(["Start Step"])
E_RetrieveLocationNamefromSD(["End Step"])
N_RetrieveLocationNamefromSD_Node0{"The system retrieves the location
information"}:::decision N_RetrieveLocationNamefromSD_Node0_action["The system extracts the descriptive
location name from the SD table
record"]:::main N_RetrieveLocationNamefromSD_Node0 -- Yes --> N_RetrieveLocationNamefromSD_Node0_action N_RetrieveLocationNamefromSD_Node0_action --> E_RetrieveLocationNamefromSD S_RetrieveLocationNamefromSD --> N_RetrieveLocationNamefromSD_Node0 N_RetrieveLocationNamefromSD_Node0 -- No --> E_RetrieveLocationNamefromSD
information"}:::decision N_RetrieveLocationNamefromSD_Node0_action["The system extracts the descriptive
location name from the SD table
record"]:::main N_RetrieveLocationNamefromSD_Node0 -- Yes --> N_RetrieveLocationNamefromSD_Node0_action N_RetrieveLocationNamefromSD_Node0_action --> E_RetrieveLocationNamefromSD S_RetrieveLocationNamefromSD --> N_RetrieveLocationNamefromSD_Node0 N_RetrieveLocationNamefromSD_Node0 -- No --> E_RetrieveLocationNamefromSD
File: GCX016.cbl
GIVEN:
Location has been successfully found in SD table
WHEN:
The system retrieves the location information
THEN:
The system extracts the descriptive location name from the SD table record
β Consolidated Acceptance Criteria
- All table lookups have failed to find the location → the system generates a location not found error and continues processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LocationNotFoundError(["Start Step"])
E_LocationNotFoundError(["End Step"])
N_LocationNotFoundError_Node0{"All table lookups have failed to
find the location"}:::decision N_LocationNotFoundError_Node0_action["The system generates a location not
found error and continues processing"]:::exclusion N_LocationNotFoundError_Node0 -- Yes -->|Alternative| N_LocationNotFoundError_Node0_action N_LocationNotFoundError_Node0_action --> E_LocationNotFoundError S_LocationNotFoundError --> N_LocationNotFoundError_Node0 N_LocationNotFoundError_Node0 -- No --> E_LocationNotFoundError
find the location"}:::decision N_LocationNotFoundError_Node0_action["The system generates a location not
found error and continues processing"]:::exclusion N_LocationNotFoundError_Node0 -- Yes -->|Alternative| N_LocationNotFoundError_Node0_action N_LocationNotFoundError_Node0_action --> E_LocationNotFoundError S_LocationNotFoundError --> N_LocationNotFoundError_Node0 N_LocationNotFoundError_Node0 -- No --> E_LocationNotFoundError
File: GCX016.cbl
GIVEN:
Location ID has been searched in DS, KS, and SD tables without success
WHEN:
All table lookups have failed to find the location
THEN:
- The system generates a location not found error
- Continues processing
β Consolidated Acceptance Criteria
- The system initiates N9 reference retrieval process → secondary cargo records (GCSA2RT) are accessed to locate N9 segments
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AccessSecondaryCargoRecords(["Start Step"])
E_AccessSecondaryCargoRecords(["End Step"])
N_AccessSecondaryCargoRecords_Node0{"The system initiates N9 reference
retrieval process"}:::decision N_AccessSecondaryCargoRecords_Node0_action["Secondary cargo records GCSA2RT are
accessed to locate N9 segments"]:::main N_AccessSecondaryCargoRecords_Node0 -- Yes --> N_AccessSecondaryCargoRecords_Node0_action N_AccessSecondaryCargoRecords_Node0_action --> E_AccessSecondaryCargoRecords S_AccessSecondaryCargoRecords --> N_AccessSecondaryCargoRecords_Node0 N_AccessSecondaryCargoRecords_Node0 -- No --> E_AccessSecondaryCargoRecords
retrieval process"}:::decision N_AccessSecondaryCargoRecords_Node0_action["Secondary cargo records GCSA2RT are
accessed to locate N9 segments"]:::main N_AccessSecondaryCargoRecords_Node0 -- Yes --> N_AccessSecondaryCargoRecords_Node0_action N_AccessSecondaryCargoRecords_Node0_action --> E_AccessSecondaryCargoRecords S_AccessSecondaryCargoRecords --> N_AccessSecondaryCargoRecords_Node0 N_AccessSecondaryCargoRecords_Node0 -- No --> E_AccessSecondaryCargoRecords
File: GCX016.cbl
GIVEN:
A shipment requires N9 reference information processing
WHEN:
The system initiates N9 reference retrieval process
THEN:
Secondary cargo records (GCSA2RT) are accessed to locate N9 segments
β Consolidated Acceptance Criteria
- The system searches for N9 segments within the records → all available N9 segments are identified and flagged for processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SearchforN9Segments(["Start Step"])
E_SearchforN9Segments(["End Step"])
N_SearchforN9Segments_Node0{"The system searches for N9 segments
within the records"}:::decision N_SearchforN9Segments_Node0_action["All available N9 segments are
identified and flagged for
processing"]:::main N_SearchforN9Segments_Node0 -- Yes --> N_SearchforN9Segments_Node0_action N_SearchforN9Segments_Node0_action --> E_SearchforN9Segments S_SearchforN9Segments --> N_SearchforN9Segments_Node0 N_SearchforN9Segments_Node0 -- No --> E_SearchforN9Segments
within the records"}:::decision N_SearchforN9Segments_Node0_action["All available N9 segments are
identified and flagged for
processing"]:::main N_SearchforN9Segments_Node0 -- Yes --> N_SearchforN9Segments_Node0_action N_SearchforN9Segments_Node0_action --> E_SearchforN9Segments S_SearchforN9Segments --> N_SearchforN9Segments_Node0 N_SearchforN9Segments_Node0 -- No --> E_SearchforN9Segments
File: GCX016.cbl
GIVEN:
Secondary cargo records are accessible
WHEN:
The system searches for N9 segments within the records
THEN:
- All available n9 segments are identified
- Flagged for processing
β Consolidated Acceptance Criteria
- The system processes each N9 segment → reference numbers are extracted and stored for further validation
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExtractReferenceNumbers(["Start Step"])
E_ExtractReferenceNumbers(["End Step"])
N_ExtractReferenceNumbers_Node0{"The system processes each N9
segment"}:::decision N_ExtractReferenceNumbers_Node0_action["Reference numbers are extracted and
stored for further validation"]:::main N_ExtractReferenceNumbers_Node0 -- Yes --> N_ExtractReferenceNumbers_Node0_action N_ExtractReferenceNumbers_Node0_action --> E_ExtractReferenceNumbers S_ExtractReferenceNumbers --> N_ExtractReferenceNumbers_Node0 N_ExtractReferenceNumbers_Node0 -- No --> E_ExtractReferenceNumbers
segment"}:::decision N_ExtractReferenceNumbers_Node0_action["Reference numbers are extracted and
stored for further validation"]:::main N_ExtractReferenceNumbers_Node0 -- Yes --> N_ExtractReferenceNumbers_Node0_action N_ExtractReferenceNumbers_Node0_action --> E_ExtractReferenceNumbers S_ExtractReferenceNumbers --> N_ExtractReferenceNumbers_Node0 N_ExtractReferenceNumbers_Node0 -- No --> E_ExtractReferenceNumbers
File: GCX016.cbl
GIVEN:
N9 segments have been found in secondary cargo records
WHEN:
The system processes each N9 segment
THEN:
- Reference numbers are extracted
- Stored for further validation
β Consolidated Acceptance Criteria
- The system processes the qualifier information in each N9 segment → reference qualifiers are extracted and associated with their corresponding reference numbers
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExtractReferenceQualifiers(["Start Step"])
E_ExtractReferenceQualifiers(["End Step"])
N_ExtractReferenceQualifiers_Node0{"The system processes the qualifier
information in each N9 segment"}:::decision N_ExtractReferenceQualifiers_Node0_action["Reference qualifiers are extracted
and associated with their
corresponding reference numbers"]:::main N_ExtractReferenceQualifiers_Node0 -- Yes --> N_ExtractReferenceQualifiers_Node0_action N_ExtractReferenceQualifiers_Node0_action --> E_ExtractReferenceQualifiers S_ExtractReferenceQualifiers --> N_ExtractReferenceQualifiers_Node0 N_ExtractReferenceQualifiers_Node0 -- No --> E_ExtractReferenceQualifiers
information in each N9 segment"}:::decision N_ExtractReferenceQualifiers_Node0_action["Reference qualifiers are extracted
and associated with their
corresponding reference numbers"]:::main N_ExtractReferenceQualifiers_Node0 -- Yes --> N_ExtractReferenceQualifiers_Node0_action N_ExtractReferenceQualifiers_Node0_action --> E_ExtractReferenceQualifiers S_ExtractReferenceQualifiers --> N_ExtractReferenceQualifiers_Node0 N_ExtractReferenceQualifiers_Node0 -- No --> E_ExtractReferenceQualifiers
File: GCX016.cbl
GIVEN:
Reference numbers have been extracted from N9 segments
WHEN:
The system processes the qualifier information in each N9 segment
THEN:
- Reference qualifiers are extracted
- Associated with their corresponding reference numbers
β Consolidated Acceptance Criteria
- The system validates the reference types against FDA requirements → references are classified as valid or invalid based on FDA compliance criteria
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ValidateFDAReferenceTypes(["Start Step"])
E_ValidateFDAReferenceTypes(["End Step"])
N_ValidateFDAReferenceTypes_Node0{"The system validates the reference
types against FDA requirements"}:::decision N_ValidateFDAReferenceTypes_Node0_action["References are classified as valid
or invalid based on FDA compliance
criteria"]:::main N_ValidateFDAReferenceTypes_Node0 -- Yes --> N_ValidateFDAReferenceTypes_Node0_action N_ValidateFDAReferenceTypes_Node0_action --> E_ValidateFDAReferenceTypes S_ValidateFDAReferenceTypes --> N_ValidateFDAReferenceTypes_Node0 N_ValidateFDAReferenceTypes_Node0 -- No --> E_ValidateFDAReferenceTypes
types against FDA requirements"}:::decision N_ValidateFDAReferenceTypes_Node0_action["References are classified as valid
or invalid based on FDA compliance
criteria"]:::main N_ValidateFDAReferenceTypes_Node0 -- Yes --> N_ValidateFDAReferenceTypes_Node0_action N_ValidateFDAReferenceTypes_Node0_action --> E_ValidateFDAReferenceTypes S_ValidateFDAReferenceTypes --> N_ValidateFDAReferenceTypes_Node0 N_ValidateFDAReferenceTypes_Node0 -- No --> E_ValidateFDAReferenceTypes
File: GCX016.cbl
GIVEN:
Reference numbers and qualifiers have been extracted from N9 segments
WHEN:
The system validates the reference types against FDA requirements
THEN:
References are classified as valid or invalid based on FDA compliance criteria
β Consolidated Acceptance Criteria
- If the validation results → if references are valid for FDA processing, store them for shipment use, otherwise skip N9 processing and continue
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ValidFDAReferences(["Start Step"])
E_ValidFDAReferences(["End Step"])
N_ValidFDAReferences_Node0{"The system evaluates the validation
results"}:::decision N_ValidFDAReferences_Node0_action["If references are valid for FDA
processing, store them for shipment
use, otherwise skip N9 processing
and continue"]:::main N_ValidFDAReferences_Node0 -- Yes --> N_ValidFDAReferences_Node0_action N_ValidFDAReferences_Node0_action --> E_ValidFDAReferences S_ValidFDAReferences --> N_ValidFDAReferences_Node0 N_ValidFDAReferences_Node0 -- No --> E_ValidFDAReferences
results"}:::decision N_ValidFDAReferences_Node0_action["If references are valid for FDA
processing, store them for shipment
use, otherwise skip N9 processing
and continue"]:::main N_ValidFDAReferences_Node0 -- Yes --> N_ValidFDAReferences_Node0_action N_ValidFDAReferences_Node0_action --> E_ValidFDAReferences S_ValidFDAReferences --> N_ValidFDAReferences_Node0 N_ValidFDAReferences_Node0 -- No --> E_ValidFDAReferences
File: GCX016.cbl
GIVEN:
FDA reference validation has been performed
WHEN:
The system evaluates the validation results
THEN:
- If references are valid for fda processing, store them for shipment use, otherwise skip n9 processing
- Continue
β Consolidated Acceptance Criteria
- The system processes the valid references → reference information is stored in memory structures for shipment record updates
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_StoreReferenceInformationforShipment(["Start Step"])
E_StoreReferenceInformationforShipment(["End Step"])
N_StoreReferenceInformationforShipment_Node0{"The system processes the valid
references"}:::decision N_StoreReferenceInformationforShipment_Node0_action["Reference information is stored in
memory structures for shipment
record updates"]:::main N_StoreReferenceInformationforShipment_Node0 -- Yes --> N_StoreReferenceInformationforShipment_Node0_action N_StoreReferenceInformationforShipment_Node0_action --> E_StoreReferenceInformationforShipment S_StoreReferenceInformationforShipment --> N_StoreReferenceInformationforShipment_Node0 N_StoreReferenceInformationforShipment_Node0 -- No --> E_StoreReferenceInformationforShipment
references"}:::decision N_StoreReferenceInformationforShipment_Node0_action["Reference information is stored in
memory structures for shipment
record updates"]:::main N_StoreReferenceInformationforShipment_Node0 -- Yes --> N_StoreReferenceInformationforShipment_Node0_action N_StoreReferenceInformationforShipment_Node0_action --> E_StoreReferenceInformationforShipment S_StoreReferenceInformationforShipment --> N_StoreReferenceInformationforShipment_Node0 N_StoreReferenceInformationforShipment_Node0 -- No --> E_StoreReferenceInformationforShipment
File: GCX016.cbl
GIVEN:
N9 references have been validated as FDA-compliant
WHEN:
The system processes the valid references
THEN:
Reference information is stored in memory structures for shipment record updates
β Consolidated Acceptance Criteria
- The system updates the shipment record → shipment record is updated with N9 reference numbers and qualifiers for regulatory compliance
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UpdateShipmentRecordwithN9Data(["Start Step"])
E_UpdateShipmentRecordwithN9Data(["End Step"])
N_UpdateShipmentRecordwithN9Data_Node0{"The system updates the shipment
record"}:::decision N_UpdateShipmentRecordwithN9Data_Node0_action["Shipment record is updated with N9
reference numbers and qualifiers for
regulatory compliance"]:::main N_UpdateShipmentRecordwithN9Data_Node0 -- Yes --> N_UpdateShipmentRecordwithN9Data_Node0_action N_UpdateShipmentRecordwithN9Data_Node0_action --> E_UpdateShipmentRecordwithN9Data S_UpdateShipmentRecordwithN9Data --> N_UpdateShipmentRecordwithN9Data_Node0 N_UpdateShipmentRecordwithN9Data_Node0 -- No --> E_UpdateShipmentRecordwithN9Data
record"}:::decision N_UpdateShipmentRecordwithN9Data_Node0_action["Shipment record is updated with N9
reference numbers and qualifiers for
regulatory compliance"]:::main N_UpdateShipmentRecordwithN9Data_Node0 -- Yes --> N_UpdateShipmentRecordwithN9Data_Node0_action N_UpdateShipmentRecordwithN9Data_Node0_action --> E_UpdateShipmentRecordwithN9Data S_UpdateShipmentRecordwithN9Data --> N_UpdateShipmentRecordwithN9Data_Node0 N_UpdateShipmentRecordwithN9Data_Node0 -- No --> E_UpdateShipmentRecordwithN9Data
File: GCX016.cbl
GIVEN:
Valid N9 reference information has been stored
WHEN:
The system updates the shipment record
THEN:
- Shipment record is updated with n9 reference numbers
- Qualifiers for regulatory compliance
β Consolidated Acceptance Criteria
- The system determines references are invalid → n9 processing is skipped and shipment processing continues without reference updates
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SkipN9Processing(["Start Step"])
E_SkipN9Processing(["End Step"])
N_SkipN9Processing_Node0{"The system determines references
are invalid"}:::decision N_SkipN9Processing_Node0_action["N9 processing is skipped and
shipment processing continues
without reference updates"]:::exclusion N_SkipN9Processing_Node0 -- Yes -->|Alternative| N_SkipN9Processing_Node0_action N_SkipN9Processing_Node0_action --> E_SkipN9Processing S_SkipN9Processing --> N_SkipN9Processing_Node0 N_SkipN9Processing_Node0 -- No --> E_SkipN9Processing
are invalid"}:::decision N_SkipN9Processing_Node0_action["N9 processing is skipped and
shipment processing continues
without reference updates"]:::exclusion N_SkipN9Processing_Node0 -- Yes -->|Alternative| N_SkipN9Processing_Node0_action N_SkipN9Processing_Node0_action --> E_SkipN9Processing S_SkipN9Processing --> N_SkipN9Processing_Node0 N_SkipN9Processing_Node0 -- No --> E_SkipN9Processing
File: GCX016.cbl
Exclusion / Alternative Path
GIVEN:
N9 references have been found but failed FDA validation
WHEN:
The system determines references are invalid
THEN:
- N9 processing is skipped
- Shipment processing continues without reference updates
β Consolidated Acceptance Criteria
- No N9 segments are found in the records → the absence of N9 references is logged and shipment processing continues without reference information
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogNoReferencesFound(["Start Step"])
E_LogNoReferencesFound(["End Step"])
N_LogNoReferencesFound_Node0{"No N9 segments are found in the
records"}:::decision N_LogNoReferencesFound_Node0_action["The absence of N9 references is
logged and shipment processing
continues without reference
information"]:::main N_LogNoReferencesFound_Node0 -- Yes --> N_LogNoReferencesFound_Node0_action N_LogNoReferencesFound_Node0_action --> E_LogNoReferencesFound S_LogNoReferencesFound --> N_LogNoReferencesFound_Node0 N_LogNoReferencesFound_Node0 -- No --> E_LogNoReferencesFound
records"}:::decision N_LogNoReferencesFound_Node0_action["The absence of N9 references is
logged and shipment processing
continues without reference
information"]:::main N_LogNoReferencesFound_Node0 -- Yes --> N_LogNoReferencesFound_Node0_action N_LogNoReferencesFound_Node0_action --> E_LogNoReferencesFound S_LogNoReferencesFound --> N_LogNoReferencesFound_Node0 N_LogNoReferencesFound_Node0 -- No --> E_LogNoReferencesFound
File: GCX016.cbl
GIVEN:
Secondary cargo records have been searched for N9 segments
WHEN:
No N9 segments are found in the records
THEN:
- The absence of n9 references is logged
- Shipment processing continues without reference information
β Consolidated Acceptance Criteria
- The system validates the Canadian cargo record → only non-deleted Canadian cargo records are considered valid for cross-border processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ValidateCanadianCargoRecord(["Start Step"])
E_ValidateCanadianCargoRecord(["End Step"])
N_ValidateCanadianCargoRecord_Node0{"The system validates the Canadian
cargo record"}:::decision N_ValidateCanadianCargoRecord_Node0_action["Only non-deleted Canadian cargo
records are considered valid for
cross-border processing"]:::main N_ValidateCanadianCargoRecord_Node0 -- Yes --> N_ValidateCanadianCargoRecord_Node0_action N_ValidateCanadianCargoRecord_Node0_action --> E_ValidateCanadianCargoRecord S_ValidateCanadianCargoRecord --> N_ValidateCanadianCargoRecord_Node0 N_ValidateCanadianCargoRecord_Node0 -- No --> E_ValidateCanadianCargoRecord
cargo record"}:::decision N_ValidateCanadianCargoRecord_Node0_action["Only non-deleted Canadian cargo
records are considered valid for
cross-border processing"]:::main N_ValidateCanadianCargoRecord_Node0 -- Yes --> N_ValidateCanadianCargoRecord_Node0_action N_ValidateCanadianCargoRecord_Node0_action --> E_ValidateCanadianCargoRecord S_ValidateCanadianCargoRecord --> N_ValidateCanadianCargoRecord_Node0 N_ValidateCanadianCargoRecord_Node0 -- No --> E_ValidateCanadianCargoRecord
File: GCX016.cbl
GIVEN:
Canadian cargo records have been found by equipment ID
WHEN:
The system validates the Canadian cargo record
THEN:
Only non-deleted Canadian cargo records are considered valid for cross-border processing
β Consolidated Acceptance Criteria
- Cross-border coordination cannot be established → the system continues processing the US cargo release without Canadian coordination
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ContinueUSProcessingOnly(["Start Step"])
E_ContinueUSProcessingOnly(["End Step"])
N_ContinueUSProcessingOnly_Node0{"Cross-border coordination cannot be
established"}:::decision N_ContinueUSProcessingOnly_Node0_action["The system continues processing the
US cargo release without Canadian
coordination"]:::main N_ContinueUSProcessingOnly_Node0 -- Yes --> N_ContinueUSProcessingOnly_Node0_action N_ContinueUSProcessingOnly_Node0_action --> E_ContinueUSProcessingOnly S_ContinueUSProcessingOnly --> N_ContinueUSProcessingOnly_Node0 N_ContinueUSProcessingOnly_Node0 -- No --> E_ContinueUSProcessingOnly
established"}:::decision N_ContinueUSProcessingOnly_Node0_action["The system continues processing the
US cargo release without Canadian
coordination"]:::main N_ContinueUSProcessingOnly_Node0 -- Yes --> N_ContinueUSProcessingOnly_Node0_action N_ContinueUSProcessingOnly_Node0_action --> E_ContinueUSProcessingOnly S_ContinueUSProcessingOnly --> N_ContinueUSProcessingOnly_Node0 N_ContinueUSProcessingOnly_Node0 -- No --> E_ContinueUSProcessingOnly
File: GCX016.cbl
GIVEN:
Canadian cargo coordination has failed due to no match, invalid records, or equipment ID mismatch
WHEN:
Cross-border coordination cannot be established
THEN:
The system continues processing the US cargo release without Canadian coordination
β Consolidated Acceptance Criteria
- The system processes cross-border equipment matching → the equipment identifier is retrieved from the US cargo record for matching purposes
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RetrieveUSCargoEquipmentID(["Start Step"])
E_RetrieveUSCargoEquipmentID(["End Step"])
N_RetrieveUSCargoEquipmentID_Node0{"The system processes cross-border
equipment matching"}:::decision N_RetrieveUSCargoEquipmentID_Node0_action["The equipment identifier is
retrieved from the US cargo record
for matching purposes"]:::main N_RetrieveUSCargoEquipmentID_Node0 -- Yes --> N_RetrieveUSCargoEquipmentID_Node0_action N_RetrieveUSCargoEquipmentID_Node0_action --> E_RetrieveUSCargoEquipmentID S_RetrieveUSCargoEquipmentID --> N_RetrieveUSCargoEquipmentID_Node0 N_RetrieveUSCargoEquipmentID_Node0 -- No --> E_RetrieveUSCargoEquipmentID
equipment matching"}:::decision N_RetrieveUSCargoEquipmentID_Node0_action["The equipment identifier is
retrieved from the US cargo record
for matching purposes"]:::main N_RetrieveUSCargoEquipmentID_Node0 -- Yes --> N_RetrieveUSCargoEquipmentID_Node0_action N_RetrieveUSCargoEquipmentID_Node0_action --> E_RetrieveUSCargoEquipmentID S_RetrieveUSCargoEquipmentID --> N_RetrieveUSCargoEquipmentID_Node0 N_RetrieveUSCargoEquipmentID_Node0 -- No --> E_RetrieveUSCargoEquipmentID
File: GCX016.cbl
GIVEN:
A US cargo record exists in the system
WHEN:
The system processes cross-border equipment matching
THEN:
The equipment identifier is retrieved from the US cargo record for matching purposes
β Consolidated Acceptance Criteria
- The system prepares to search Canadian cargo database → the equipment identifier is formatted according to Canadian system requirements
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_FormatEquipmentIDforCanadianSystem(["Start Step"])
E_FormatEquipmentIDforCanadianSystem(["End Step"])
N_FormatEquipmentIDforCanadianSystem_Node0{"The system prepares to search
Canadian cargo database"}:::decision N_FormatEquipmentIDforCanadianSystem_Node0_action["The equipment identifier is
formatted according to Canadian
system requirements"]:::main N_FormatEquipmentIDforCanadianSystem_Node0 -- Yes --> N_FormatEquipmentIDforCanadianSystem_Node0_action N_FormatEquipmentIDforCanadianSystem_Node0_action --> E_FormatEquipmentIDforCanadianSystem S_FormatEquipmentIDforCanadianSystem --> N_FormatEquipmentIDforCanadianSystem_Node0 N_FormatEquipmentIDforCanadianSystem_Node0 -- No --> E_FormatEquipmentIDforCanadianSystem
Canadian cargo database"}:::decision N_FormatEquipmentIDforCanadianSystem_Node0_action["The equipment identifier is
formatted according to Canadian
system requirements"]:::main N_FormatEquipmentIDforCanadianSystem_Node0 -- Yes --> N_FormatEquipmentIDforCanadianSystem_Node0_action N_FormatEquipmentIDforCanadianSystem_Node0_action --> E_FormatEquipmentIDforCanadianSystem S_FormatEquipmentIDforCanadianSystem --> N_FormatEquipmentIDforCanadianSystem_Node0 N_FormatEquipmentIDforCanadianSystem_Node0 -- No --> E_FormatEquipmentIDforCanadianSystem
File: GCX016.cbl
GIVEN:
A US equipment identifier has been retrieved
WHEN:
The system prepares to search Canadian cargo database
THEN:
The equipment identifier is formatted according to Canadian system requirements
β Consolidated Acceptance Criteria
- The system compares US and Canadian equipment identifiers → equipment identifiers are matched for cross-border coordination
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MatchEquipmentIdentifiers(["Start Step"])
E_MatchEquipmentIdentifiers(["End Step"])
N_MatchEquipmentIdentifiers_Node0{"The system compares US and Canadian
equipment identifiers"}:::decision N_MatchEquipmentIdentifiers_Node0_action["Equipment identifiers are matched
for cross-border coordination"]:::main N_MatchEquipmentIdentifiers_Node0 -- Yes --> N_MatchEquipmentIdentifiers_Node0_action N_MatchEquipmentIdentifiers_Node0_action --> E_MatchEquipmentIdentifiers S_MatchEquipmentIdentifiers --> N_MatchEquipmentIdentifiers_Node0 N_MatchEquipmentIdentifiers_Node0 -- No --> E_MatchEquipmentIdentifiers
equipment identifiers"}:::decision N_MatchEquipmentIdentifiers_Node0_action["Equipment identifiers are matched
for cross-border coordination"]:::main N_MatchEquipmentIdentifiers_Node0 -- Yes --> N_MatchEquipmentIdentifiers_Node0_action N_MatchEquipmentIdentifiers_Node0_action --> E_MatchEquipmentIdentifiers S_MatchEquipmentIdentifiers --> N_MatchEquipmentIdentifiers_Node0 N_MatchEquipmentIdentifiers_Node0 -- No --> E_MatchEquipmentIdentifiers
File: GCX016.cbl
GIVEN:
Valid Canadian cargo record exists
WHEN:
- The system compares us
- Canadian equipment identifiers
THEN:
Equipment identifiers are matched for cross-border coordination
β Consolidated Acceptance Criteria
- If matching results → the system determines if equipment identifiers match and proceeds with appropriate action
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_EquipmentIDsMatch(["Start Step"])
E_EquipmentIDsMatch(["End Step"])
N_EquipmentIDsMatch_Node0{"The system evaluates matching
results"}:::decision N_EquipmentIDsMatch_Node0_action["The system determines if equipment
identifiers match and proceeds with
appropriate action"]:::main N_EquipmentIDsMatch_Node0 -- Yes --> N_EquipmentIDsMatch_Node0_action N_EquipmentIDsMatch_Node0_action --> E_EquipmentIDsMatch S_EquipmentIDsMatch --> N_EquipmentIDsMatch_Node0 N_EquipmentIDsMatch_Node0 -- No --> E_EquipmentIDsMatch
results"}:::decision N_EquipmentIDsMatch_Node0_action["The system determines if equipment
identifiers match and proceeds with
appropriate action"]:::main N_EquipmentIDsMatch_Node0 -- Yes --> N_EquipmentIDsMatch_Node0_action N_EquipmentIDsMatch_Node0_action --> E_EquipmentIDsMatch S_EquipmentIDsMatch --> N_EquipmentIDsMatch_Node0 N_EquipmentIDsMatch_Node0 -- No --> E_EquipmentIDsMatch
File: GCX016.cbl
GIVEN:
Equipment identifiers have been compared
WHEN:
The system evaluates matching results
THEN:
- The system determines if equipment identifiers match
- Proceeds with appropriate action
β Consolidated Acceptance Criteria
- The system updates coordination status → cargo records are updated with cross-border coordination information
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UpdateCoordinationStatus(["Start Step"])
E_UpdateCoordinationStatus(["End Step"])
N_UpdateCoordinationStatus_Node0{"The system updates coordination
status"}:::decision N_UpdateCoordinationStatus_Node0_action["Cargo records are updated with
cross-border coordination
information"]:::main N_UpdateCoordinationStatus_Node0 -- Yes --> N_UpdateCoordinationStatus_Node0_action N_UpdateCoordinationStatus_Node0_action --> E_UpdateCoordinationStatus S_UpdateCoordinationStatus --> N_UpdateCoordinationStatus_Node0 N_UpdateCoordinationStatus_Node0 -- No --> E_UpdateCoordinationStatus
status"}:::decision N_UpdateCoordinationStatus_Node0_action["Cargo records are updated with
cross-border coordination
information"]:::main N_UpdateCoordinationStatus_Node0 -- Yes --> N_UpdateCoordinationStatus_Node0_action N_UpdateCoordinationStatus_Node0_action --> E_UpdateCoordinationStatus S_UpdateCoordinationStatus --> N_UpdateCoordinationStatus_Node0 N_UpdateCoordinationStatus_Node0 -- No --> E_UpdateCoordinationStatus
File: GCX016.cbl
GIVEN:
Cross-border link has been established
WHEN:
The system updates coordination status
THEN:
Cargo records are updated with cross-border coordination information
β Consolidated Acceptance Criteria
- The system logs the matching event → cross-border match information is recorded in system logs
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogCrossBorderMatch(["Start Step"])
E_LogCrossBorderMatch(["End Step"])
N_LogCrossBorderMatch_Node0{"The system logs the matching event"}:::decision
N_LogCrossBorderMatch_Node0_action["Cross-border match information is
recorded in system logs"]:::main N_LogCrossBorderMatch_Node0 -- Yes --> N_LogCrossBorderMatch_Node0_action N_LogCrossBorderMatch_Node0_action --> E_LogCrossBorderMatch S_LogCrossBorderMatch --> N_LogCrossBorderMatch_Node0 N_LogCrossBorderMatch_Node0 -- No --> E_LogCrossBorderMatch
recorded in system logs"]:::main N_LogCrossBorderMatch_Node0 -- Yes --> N_LogCrossBorderMatch_Node0_action N_LogCrossBorderMatch_Node0_action --> E_LogCrossBorderMatch S_LogCrossBorderMatch --> N_LogCrossBorderMatch_Node0 N_LogCrossBorderMatch_Node0 -- No --> E_LogCrossBorderMatch
File: GCX016.cbl
GIVEN:
Cross-border coordination status has been updated
WHEN:
The system logs the matching event
THEN:
Cross-border match information is recorded in system logs
β Consolidated Acceptance Criteria
- The system tries alternative formatting → equipment identifier is reformatted using alternative rules for another search attempt
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_TryAlternativeEquipmentFormat(["Start Step"])
E_TryAlternativeEquipmentFormat(["End Step"])
N_TryAlternativeEquipmentFormat_Node0{"The system tries alternative
formatting"}:::decision N_TryAlternativeEquipmentFormat_Node0_action["Equipment identifier is reformatted
using alternative rules for another
search attempt"]:::main N_TryAlternativeEquipmentFormat_Node0 -- Yes --> N_TryAlternativeEquipmentFormat_Node0_action N_TryAlternativeEquipmentFormat_Node0_action --> E_TryAlternativeEquipmentFormat S_TryAlternativeEquipmentFormat --> N_TryAlternativeEquipmentFormat_Node0 N_TryAlternativeEquipmentFormat_Node0 -- No --> E_TryAlternativeEquipmentFormat
formatting"}:::decision N_TryAlternativeEquipmentFormat_Node0_action["Equipment identifier is reformatted
using alternative rules for another
search attempt"]:::main N_TryAlternativeEquipmentFormat_Node0 -- Yes --> N_TryAlternativeEquipmentFormat_Node0_action N_TryAlternativeEquipmentFormat_Node0_action --> E_TryAlternativeEquipmentFormat S_TryAlternativeEquipmentFormat --> N_TryAlternativeEquipmentFormat_Node0 N_TryAlternativeEquipmentFormat_Node0 -- No --> E_TryAlternativeEquipmentFormat
File: GCX016.cbl
GIVEN:
Initial equipment matching has failed or no Canadian cargo found
WHEN:
The system tries alternative formatting
THEN:
Equipment identifier is reformatted using alternative rules for another search attempt
β Consolidated Acceptance Criteria
- The system concludes matching attempts → the system marks that no Canadian cargo match was found
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MarkNoCanadianMatchFound(["Start Step"])
E_MarkNoCanadianMatchFound(["End Step"])
N_MarkNoCanadianMatchFound_Node0{"The system concludes matching
attempts"}:::decision N_MarkNoCanadianMatchFound_Node0_action["The system marks that no Canadian
cargo match was found"]:::main N_MarkNoCanadianMatchFound_Node0 -- Yes --> N_MarkNoCanadianMatchFound_Node0_action N_MarkNoCanadianMatchFound_Node0_action --> E_MarkNoCanadianMatchFound S_MarkNoCanadianMatchFound --> N_MarkNoCanadianMatchFound_Node0 N_MarkNoCanadianMatchFound_Node0 -- No --> E_MarkNoCanadianMatchFound
attempts"}:::decision N_MarkNoCanadianMatchFound_Node0_action["The system marks that no Canadian
cargo match was found"]:::main N_MarkNoCanadianMatchFound_Node0 -- Yes --> N_MarkNoCanadianMatchFound_Node0_action N_MarkNoCanadianMatchFound_Node0_action --> E_MarkNoCanadianMatchFound S_MarkNoCanadianMatchFound --> N_MarkNoCanadianMatchFound_Node0 N_MarkNoCanadianMatchFound_Node0 -- No --> E_MarkNoCanadianMatchFound
File: GCX016.cbl
GIVEN:
All alternative equipment formats have been exhausted
WHEN:
The system concludes matching attempts
THEN:
The system marks that no Canadian cargo match was found
β Consolidated Acceptance Criteria
- The system logs the no-match event → information about unsuccessful matching is recorded in system logs
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogNoMatchInformation(["Start Step"])
E_LogNoMatchInformation(["End Step"])
N_LogNoMatchInformation_Node0{"The system logs the no-match event"}:::decision
N_LogNoMatchInformation_Node0_action["Information about unsuccessful
matching is recorded in system logs"]:::main N_LogNoMatchInformation_Node0 -- Yes --> N_LogNoMatchInformation_Node0_action N_LogNoMatchInformation_Node0_action --> E_LogNoMatchInformation S_LogNoMatchInformation --> N_LogNoMatchInformation_Node0 N_LogNoMatchInformation_Node0 -- No --> E_LogNoMatchInformation
matching is recorded in system logs"]:::main N_LogNoMatchInformation_Node0 -- Yes --> N_LogNoMatchInformation_Node0_action N_LogNoMatchInformation_Node0_action --> E_LogNoMatchInformation S_LogNoMatchInformation --> N_LogNoMatchInformation_Node0 N_LogNoMatchInformation_Node0 -- No --> E_LogNoMatchInformation
File: GCX016.cbl
GIVEN:
No Canadian match has been found and marked
WHEN:
The system logs the no-match event
THEN:
Information about unsuccessful matching is recorded in system logs
β Consolidated Acceptance Criteria
- The system begins broker name retrieval → all broker name fields are set to spaces to ensure clean processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_InitializeBrokerNameFields(["Start Step"])
E_InitializeBrokerNameFields(["End Step"])
N_InitializeBrokerNameFields_Node0{"the system begins broker name
retrieval"}:::decision N_InitializeBrokerNameFields_Node0_action["all broker name fields are set to
spaces to ensure clean processing"]:::main N_InitializeBrokerNameFields_Node0 -- Yes --> N_InitializeBrokerNameFields_Node0_action N_InitializeBrokerNameFields_Node0_action --> E_InitializeBrokerNameFields S_InitializeBrokerNameFields --> N_InitializeBrokerNameFields_Node0 N_InitializeBrokerNameFields_Node0 -- No --> E_InitializeBrokerNameFields
retrieval"}:::decision N_InitializeBrokerNameFields_Node0_action["all broker name fields are set to
spaces to ensure clean processing"]:::main N_InitializeBrokerNameFields_Node0 -- Yes --> N_InitializeBrokerNameFields_Node0_action N_InitializeBrokerNameFields_Node0_action --> E_InitializeBrokerNameFields S_InitializeBrokerNameFields --> N_InitializeBrokerNameFields_Node0 N_InitializeBrokerNameFields_Node0 -- No --> E_InitializeBrokerNameFields
File: GCX016.cbl
GIVEN:
KCSM broker name lookup process is initiated
WHEN:
the system begins broker name retrieval
THEN:
all broker name fields are set to spaces to ensure clean processing
β Consolidated Acceptance Criteria
- The system checks for broker code presence → the system determines if broker code exists and is not empty
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CheckifBrokerCodeExists(["Start Step"])
E_CheckifBrokerCodeExists(["End Step"])
N_CheckifBrokerCodeExists_Node0{"the system checks for broker code
presence"}:::decision N_CheckifBrokerCodeExists_Node0_action["the system determines if broker
code exists and is not empty"]:::main N_CheckifBrokerCodeExists_Node0 -- Yes --> N_CheckifBrokerCodeExists_Node0_action N_CheckifBrokerCodeExists_Node0_action --> E_CheckifBrokerCodeExists S_CheckifBrokerCodeExists --> N_CheckifBrokerCodeExists_Node0 N_CheckifBrokerCodeExists_Node0 -- No --> E_CheckifBrokerCodeExists
presence"}:::decision N_CheckifBrokerCodeExists_Node0_action["the system determines if broker
code exists and is not empty"]:::main N_CheckifBrokerCodeExists_Node0 -- Yes --> N_CheckifBrokerCodeExists_Node0_action N_CheckifBrokerCodeExists_Node0_action --> E_CheckifBrokerCodeExists S_CheckifBrokerCodeExists --> N_CheckifBrokerCodeExists_Node0 N_CheckifBrokerCodeExists_Node0 -- No --> E_CheckifBrokerCodeExists
File: GCX016.cbl
GIVEN:
a broker code lookup request for KCSM processing
WHEN:
the system checks for broker code presence
THEN:
- The system determines if broker code exists
- Is not empty
β Consolidated Acceptance Criteria
- If broker code presence → if broker code is present, proceed to BK table lookup, otherwise set broker name to spaces
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_BrokerCodePresent(["Start Step"])
E_BrokerCodePresent(["End Step"])
N_BrokerCodePresent_Node0{"the system evaluates broker code
presence"}:::decision N_BrokerCodePresent_Node0_action["if broker code is present, proceed
to BK table lookup, otherwise set
broker name to spaces"]:::main N_BrokerCodePresent_Node0 -- Yes --> N_BrokerCodePresent_Node0_action N_BrokerCodePresent_Node0_action --> E_BrokerCodePresent S_BrokerCodePresent --> N_BrokerCodePresent_Node0 N_BrokerCodePresent_Node0 -- No --> E_BrokerCodePresent
presence"}:::decision N_BrokerCodePresent_Node0_action["if broker code is present, proceed
to BK table lookup, otherwise set
broker name to spaces"]:::main N_BrokerCodePresent_Node0 -- Yes --> N_BrokerCodePresent_Node0_action N_BrokerCodePresent_Node0_action --> E_BrokerCodePresent S_BrokerCodePresent --> N_BrokerCodePresent_Node0 N_BrokerCodePresent_Node0 -- No --> E_BrokerCodePresent
File: GCX016.cbl
GIVEN:
a broker code validation check has been performed
WHEN:
the system evaluates broker code presence
THEN:
if broker code is present, proceed to BK table lookup, otherwise set broker name to spaces
β Consolidated Acceptance Criteria
- The system prepares to lookup broker information → the BK table key is constructed using the broker code for table access
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetUpBKTableKeywithBrokerCode(["Start Step"])
E_SetUpBKTableKeywithBrokerCode(["End Step"])
N_SetUpBKTableKeywithBrokerCode_Node0{"the system prepares to lookup
broker information"}:::decision N_SetUpBKTableKeywithBrokerCode_Node0_action["the BK table key is constructed
using the broker code for table
access"]:::main N_SetUpBKTableKeywithBrokerCode_Node0 -- Yes --> N_SetUpBKTableKeywithBrokerCode_Node0_action N_SetUpBKTableKeywithBrokerCode_Node0_action --> E_SetUpBKTableKeywithBrokerCode S_SetUpBKTableKeywithBrokerCode --> N_SetUpBKTableKeywithBrokerCode_Node0 N_SetUpBKTableKeywithBrokerCode_Node0 -- No --> E_SetUpBKTableKeywithBrokerCode
broker information"}:::decision N_SetUpBKTableKeywithBrokerCode_Node0_action["the BK table key is constructed
using the broker code for table
access"]:::main N_SetUpBKTableKeywithBrokerCode_Node0 -- Yes --> N_SetUpBKTableKeywithBrokerCode_Node0_action N_SetUpBKTableKeywithBrokerCode_Node0_action --> E_SetUpBKTableKeywithBrokerCode S_SetUpBKTableKeywithBrokerCode --> N_SetUpBKTableKeywithBrokerCode_Node0 N_SetUpBKTableKeywithBrokerCode_Node0 -- No --> E_SetUpBKTableKeywithBrokerCode
File: GCX016.cbl
GIVEN:
a valid broker code exists for KCSM processing
WHEN:
the system prepares to lookup broker information
THEN:
the BK table key is constructed using the broker code for table access
β Consolidated Acceptance Criteria
- The system calls GCCTBIO table service → the system attempts to read the broker record from the BK table
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CallGCCTBIOtoReadBKTable(["Start Step"])
E_CallGCCTBIOtoReadBKTable(["End Step"])
N_CallGCCTBIOtoReadBKTable_Node0{"the system calls GCCTBIO table
service"}:::decision N_CallGCCTBIOtoReadBKTable_Node0_action["the system attempts to read the
broker record from the BK table"]:::main N_CallGCCTBIOtoReadBKTable_Node0 -- Yes --> N_CallGCCTBIOtoReadBKTable_Node0_action N_CallGCCTBIOtoReadBKTable_Node0_action --> E_CallGCCTBIOtoReadBKTable S_CallGCCTBIOtoReadBKTable --> N_CallGCCTBIOtoReadBKTable_Node0 N_CallGCCTBIOtoReadBKTable_Node0 -- No --> E_CallGCCTBIOtoReadBKTable
service"}:::decision N_CallGCCTBIOtoReadBKTable_Node0_action["the system attempts to read the
broker record from the BK table"]:::main N_CallGCCTBIOtoReadBKTable_Node0 -- Yes --> N_CallGCCTBIOtoReadBKTable_Node0_action N_CallGCCTBIOtoReadBKTable_Node0_action --> E_CallGCCTBIOtoReadBKTable S_CallGCCTBIOtoReadBKTable --> N_CallGCCTBIOtoReadBKTable_Node0 N_CallGCCTBIOtoReadBKTable_Node0 -- No --> E_CallGCCTBIOtoReadBKTable
File: GCX016.cbl
GIVEN:
a properly formatted BK table key with broker code
WHEN:
the system calls GCCTBIO table service
THEN:
the system attempts to read the broker record from the BK table
β Consolidated Acceptance Criteria
- If the lookup results → if record is found, extract broker name, otherwise set broker name to spaces
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_BKTableRecordFound(["Start Step"])
E_BKTableRecordFound(["End Step"])
N_BKTableRecordFound_Node0{"the system evaluates the lookup
results"}:::decision N_BKTableRecordFound_Node0_action["if record is found, extract broker
name, otherwise set broker name to
spaces"]:::main N_BKTableRecordFound_Node0 -- Yes --> N_BKTableRecordFound_Node0_action N_BKTableRecordFound_Node0_action --> E_BKTableRecordFound S_BKTableRecordFound --> N_BKTableRecordFound_Node0 N_BKTableRecordFound_Node0 -- No --> E_BKTableRecordFound
results"}:::decision N_BKTableRecordFound_Node0_action["if record is found, extract broker
name, otherwise set broker name to
spaces"]:::main N_BKTableRecordFound_Node0 -- Yes --> N_BKTableRecordFound_Node0_action N_BKTableRecordFound_Node0_action --> E_BKTableRecordFound S_BKTableRecordFound --> N_BKTableRecordFound_Node0 N_BKTableRecordFound_Node0 -- No --> E_BKTableRecordFound
File: GCX016.cbl
GIVEN:
a BK table lookup has been performed using GCCTBIO
WHEN:
the system evaluates the lookup results
THEN:
if record is found, extract broker name, otherwise set broker name to spaces
β Consolidated Acceptance Criteria
- The system processes the retrieved record → the broker short name is extracted from the BK table record
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExtractBrokerShortNamefromBKTable(["Start Step"])
E_ExtractBrokerShortNamefromBKTable(["End Step"])
N_ExtractBrokerShortNamefromBKTable_Node0{"the system processes the retrieved
record"}:::decision N_ExtractBrokerShortNamefromBKTable_Node0_action["the broker short name is extracted
from the BK table record"]:::main N_ExtractBrokerShortNamefromBKTable_Node0 -- Yes --> N_ExtractBrokerShortNamefromBKTable_Node0_action N_ExtractBrokerShortNamefromBKTable_Node0_action --> E_ExtractBrokerShortNamefromBKTable S_ExtractBrokerShortNamefromBKTable --> N_ExtractBrokerShortNamefromBKTable_Node0 N_ExtractBrokerShortNamefromBKTable_Node0 -- No --> E_ExtractBrokerShortNamefromBKTable
record"}:::decision N_ExtractBrokerShortNamefromBKTable_Node0_action["the broker short name is extracted
from the BK table record"]:::main N_ExtractBrokerShortNamefromBKTable_Node0 -- Yes --> N_ExtractBrokerShortNamefromBKTable_Node0_action N_ExtractBrokerShortNamefromBKTable_Node0_action --> E_ExtractBrokerShortNamefromBKTable S_ExtractBrokerShortNamefromBKTable --> N_ExtractBrokerShortNamefromBKTable_Node0 N_ExtractBrokerShortNamefromBKTable_Node0 -- No --> E_ExtractBrokerShortNamefromBKTable
File: GCX016.cbl
GIVEN:
a broker record has been successfully found in the BK table
WHEN:
the system processes the retrieved record
THEN:
the broker short name is extracted from the BK table record
β Consolidated Acceptance Criteria
- The system completes broker name extraction → the broker name is stored in the designated field for KCSM processing use
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_StoreBrokerNameforKCSMProcessing(["Start Step"])
E_StoreBrokerNameforKCSMProcessing(["End Step"])
N_StoreBrokerNameforKCSMProcessing_Node0{"the system completes broker name
extraction"}:::decision N_StoreBrokerNameforKCSMProcessing_Node0_action["the broker name is stored in the
designated field for KCSM processing
use"]:::main N_StoreBrokerNameforKCSMProcessing_Node0 -- Yes --> N_StoreBrokerNameforKCSMProcessing_Node0_action N_StoreBrokerNameforKCSMProcessing_Node0_action --> E_StoreBrokerNameforKCSMProcessing S_StoreBrokerNameforKCSMProcessing --> N_StoreBrokerNameforKCSMProcessing_Node0 N_StoreBrokerNameforKCSMProcessing_Node0 -- No --> E_StoreBrokerNameforKCSMProcessing
extraction"}:::decision N_StoreBrokerNameforKCSMProcessing_Node0_action["the broker name is stored in the
designated field for KCSM processing
use"]:::main N_StoreBrokerNameforKCSMProcessing_Node0 -- Yes --> N_StoreBrokerNameforKCSMProcessing_Node0_action N_StoreBrokerNameforKCSMProcessing_Node0_action --> E_StoreBrokerNameforKCSMProcessing S_StoreBrokerNameforKCSMProcessing --> N_StoreBrokerNameforKCSMProcessing_Node0 N_StoreBrokerNameforKCSMProcessing_Node0 -- No --> E_StoreBrokerNameforKCSMProcessing
File: GCX016.cbl
GIVEN:
a broker short name has been extracted from the BK table record
WHEN:
the system completes broker name extraction
THEN:
the broker name is stored in the designated field for KCSM processing use
β Consolidated Acceptance Criteria
- The system handles the missing broker information scenario → the broker name field is set to spaces to indicate no broker information available
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetBrokerNametoSpacesifNotFound(["Start Step"])
E_SetBrokerNametoSpacesifNotFound(["End Step"])
N_SetBrokerNametoSpacesifNotFound_Node0{"the system handles the missing
broker information scenario"}:::decision N_SetBrokerNametoSpacesifNotFound_Node0_action["the broker name field is set to
spaces to indicate no broker
information available"]:::main N_SetBrokerNametoSpacesifNotFound_Node0 -- Yes --> N_SetBrokerNametoSpacesifNotFound_Node0_action N_SetBrokerNametoSpacesifNotFound_Node0_action --> E_SetBrokerNametoSpacesifNotFound S_SetBrokerNametoSpacesifNotFound --> N_SetBrokerNametoSpacesifNotFound_Node0 N_SetBrokerNametoSpacesifNotFound_Node0 -- No --> E_SetBrokerNametoSpacesifNotFound
broker information scenario"}:::decision N_SetBrokerNametoSpacesifNotFound_Node0_action["the broker name field is set to
spaces to indicate no broker
information available"]:::main N_SetBrokerNametoSpacesifNotFound_Node0 -- Yes --> N_SetBrokerNametoSpacesifNotFound_Node0_action N_SetBrokerNametoSpacesifNotFound_Node0_action --> E_SetBrokerNametoSpacesifNotFound S_SetBrokerNametoSpacesifNotFound --> N_SetBrokerNametoSpacesifNotFound_Node0 N_SetBrokerNametoSpacesifNotFound_Node0 -- No --> E_SetBrokerNametoSpacesifNotFound
File: GCX016.cbl
GIVEN:
either no broker code exists or BK table lookup failed to find a record
WHEN:
the system handles the missing broker information scenario
THEN:
the broker name field is set to spaces to indicate no broker information available
β Consolidated Acceptance Criteria
- A transmission ID is required → a unique transmission identifier is generated for message tracking
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GenerateTransmissionID(["Start Step"])
E_GenerateTransmissionID(["End Step"])
N_GenerateTransmissionID_Node0{"a transmission ID is required"}:::decision
N_GenerateTransmissionID_Node0_action["a unique transmission identifier is
generated for message tracking"]:::main N_GenerateTransmissionID_Node0 -- Yes --> N_GenerateTransmissionID_Node0_action N_GenerateTransmissionID_Node0_action --> E_GenerateTransmissionID S_GenerateTransmissionID --> N_GenerateTransmissionID_Node0 N_GenerateTransmissionID_Node0 -- No --> E_GenerateTransmissionID
generated for message tracking"]:::main N_GenerateTransmissionID_Node0 -- Yes --> N_GenerateTransmissionID_Node0_action N_GenerateTransmissionID_Node0_action --> E_GenerateTransmissionID S_GenerateTransmissionID --> N_GenerateTransmissionID_Node0 N_GenerateTransmissionID_Node0 -- No --> E_GenerateTransmissionID
File: GCX016.cbl
GIVEN:
transmission control information is set
WHEN:
a transmission ID is required
THEN:
a unique transmission identifier is generated for message tracking
β Consolidated Acceptance Criteria
- Message routing information is being configured → routing information is set to determine message destination and delivery path
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetMessageRoutingInformation(["Start Step"])
E_SetMessageRoutingInformation(["End Step"])
N_SetMessageRoutingInformation_Node0{"message routing information is
being configured"}:::decision N_SetMessageRoutingInformation_Node0_action["routing information is set to
determine message destination and
delivery path"]:::main N_SetMessageRoutingInformation_Node0 -- Yes --> N_SetMessageRoutingInformation_Node0_action N_SetMessageRoutingInformation_Node0_action --> E_SetMessageRoutingInformation S_SetMessageRoutingInformation --> N_SetMessageRoutingInformation_Node0 N_SetMessageRoutingInformation_Node0 -- No --> E_SetMessageRoutingInformation
being configured"}:::decision N_SetMessageRoutingInformation_Node0_action["routing information is set to
determine message destination and
delivery path"]:::main N_SetMessageRoutingInformation_Node0 -- Yes --> N_SetMessageRoutingInformation_Node0_action N_SetMessageRoutingInformation_Node0_action --> E_SetMessageRoutingInformation S_SetMessageRoutingInformation --> N_SetMessageRoutingInformation_Node0 N_SetMessageRoutingInformation_Node0 -- No --> E_SetMessageRoutingInformation
File: GCX016.cbl
GIVEN:
transmission ID is generated
WHEN:
message routing information is being configured
THEN:
- Routing information is set to determine message destination
- Delivery path
β Consolidated Acceptance Criteria
- Tracking information is being set → tracking information is established for monitoring transmission status and progress
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetTrackingInformation(["Start Step"])
E_SetTrackingInformation(["End Step"])
N_SetTrackingInformation_Node0{"tracking information is being set"}:::decision
N_SetTrackingInformation_Node0_action["tracking information is established
for monitoring transmission status
and progress"]:::main N_SetTrackingInformation_Node0 -- Yes --> N_SetTrackingInformation_Node0_action N_SetTrackingInformation_Node0_action --> E_SetTrackingInformation S_SetTrackingInformation --> N_SetTrackingInformation_Node0 N_SetTrackingInformation_Node0 -- No --> E_SetTrackingInformation
for monitoring transmission status
and progress"]:::main N_SetTrackingInformation_Node0 -- Yes --> N_SetTrackingInformation_Node0_action N_SetTrackingInformation_Node0_action --> E_SetTrackingInformation S_SetTrackingInformation --> N_SetTrackingInformation_Node0 N_SetTrackingInformation_Node0 -- No --> E_SetTrackingInformation
File: GCX016.cbl
GIVEN:
A9RT root segment is created
WHEN:
tracking information is being set
THEN:
- Tracking information is established for monitoring transmission status
- Progress
β Consolidated Acceptance Criteria
- Creation error handling is initiated → system handles errors that occurred during root segment creation process
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_HandleCreationError(["Start Step"])
E_HandleCreationError(["End Step"])
N_HandleCreationError_Node0{"creation error handling is
initiated"}:::decision N_HandleCreationError_Node0_action["system handles errors that occurred
during root segment creation process"]:::exclusion N_HandleCreationError_Node0 -- Yes -->|Alternative| N_HandleCreationError_Node0_action N_HandleCreationError_Node0_action --> E_HandleCreationError S_HandleCreationError --> N_HandleCreationError_Node0 N_HandleCreationError_Node0 -- No --> E_HandleCreationError
initiated"}:::decision N_HandleCreationError_Node0_action["system handles errors that occurred
during root segment creation process"]:::exclusion N_HandleCreationError_Node0 -- Yes -->|Alternative| N_HandleCreationError_Node0_action N_HandleCreationError_Node0_action --> E_HandleCreationError S_HandleCreationError --> N_HandleCreationError_Node0 N_HandleCreationError_Node0 -- No --> E_HandleCreationError
File: GCX016.cbl
GIVEN:
segment validation fails
WHEN:
creation error handling is initiated
THEN:
system handles errors that occurred during root segment creation process
β Consolidated Acceptance Criteria
- The system needs to create dependent segments for transmission → the system initializes a new A9DP dependent segment structure with default values
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_InitializeA9DPDependentSegment(["Start Step"])
E_InitializeA9DPDependentSegment(["End Step"])
N_InitializeA9DPDependentSegment_Node0{"The system needs to create
dependent segments for transmission"}:::decision N_InitializeA9DPDependentSegment_Node0_action["The system initializes a new A9DP
dependent segment structure with
default values"]:::main N_InitializeA9DPDependentSegment_Node0 -- Yes --> N_InitializeA9DPDependentSegment_Node0_action N_InitializeA9DPDependentSegment_Node0_action --> E_InitializeA9DPDependentSegment S_InitializeA9DPDependentSegment --> N_InitializeA9DPDependentSegment_Node0 N_InitializeA9DPDependentSegment_Node0 -- No --> E_InitializeA9DPDependentSegment
dependent segments for transmission"}:::decision N_InitializeA9DPDependentSegment_Node0_action["The system initializes a new A9DP
dependent segment structure with
default values"]:::main N_InitializeA9DPDependentSegment_Node0 -- Yes --> N_InitializeA9DPDependentSegment_Node0_action N_InitializeA9DPDependentSegment_Node0_action --> E_InitializeA9DPDependentSegment S_InitializeA9DPDependentSegment --> N_InitializeA9DPDependentSegment_Node0 N_InitializeA9DPDependentSegment_Node0 -- No --> E_InitializeA9DPDependentSegment
File: GCX016.cbl
GIVEN:
EDI 350 message data has been retrieved
WHEN:
The system needs to create dependent segments for transmission
THEN:
The system initializes a new A9DP dependent segment structure with default values
β Consolidated Acceptance Criteria
- The system needs to create another dependent segment → the system creates a new A9DP dependent segment for the next EDI segment data
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CreateNextA9DPSegment(["Start Step"])
E_CreateNextA9DPSegment(["End Step"])
N_CreateNextA9DPSegment_Node0{"The system needs to create another
dependent segment"}:::decision N_CreateNextA9DPSegment_Node0_action["The system creates a new A9DP
dependent segment for the next EDI
segment data"]:::main N_CreateNextA9DPSegment_Node0 -- Yes --> N_CreateNextA9DPSegment_Node0_action N_CreateNextA9DPSegment_Node0_action --> E_CreateNextA9DPSegment S_CreateNextA9DPSegment --> N_CreateNextA9DPSegment_Node0 N_CreateNextA9DPSegment_Node0 -- No --> E_CreateNextA9DPSegment
dependent segment"}:::decision N_CreateNextA9DPSegment_Node0_action["The system creates a new A9DP
dependent segment for the next EDI
segment data"]:::main N_CreateNextA9DPSegment_Node0 -- Yes --> N_CreateNextA9DPSegment_Node0_action N_CreateNextA9DPSegment_Node0_action --> E_CreateNextA9DPSegment S_CreateNextA9DPSegment --> N_CreateNextA9DPSegment_Node0 N_CreateNextA9DPSegment_Node0 -- No --> E_CreateNextA9DPSegment
File: GCX016.cbl
GIVEN:
More EDI segments exist to be processed
WHEN:
The system needs to create another dependent segment
THEN:
The system creates a new A9DP dependent segment for the next EDI segment data
β Consolidated Acceptance Criteria
- EDI data needs to be stored in the dependent segment → the system stores the EDI data in the dependent segment with proper formatting and structure
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_StoreEDIDatainDependentSegment(["Start Step"])
E_StoreEDIDatainDependentSegment(["End Step"])
N_StoreEDIDatainDependentSegment_Node0{"EDI data needs to be stored in the
dependent segment"}:::decision N_StoreEDIDatainDependentSegment_Node0_action["The system stores the EDI data in
the dependent segment with proper
formatting and structure"]:::main N_StoreEDIDatainDependentSegment_Node0 -- Yes --> N_StoreEDIDatainDependentSegment_Node0_action N_StoreEDIDatainDependentSegment_Node0_action --> E_StoreEDIDatainDependentSegment S_StoreEDIDatainDependentSegment --> N_StoreEDIDatainDependentSegment_Node0 N_StoreEDIDatainDependentSegment_Node0 -- No --> E_StoreEDIDatainDependentSegment
dependent segment"}:::decision N_StoreEDIDatainDependentSegment_Node0_action["The system stores the EDI data in
the dependent segment with proper
formatting and structure"]:::main N_StoreEDIDatainDependentSegment_Node0 -- Yes --> N_StoreEDIDatainDependentSegment_Node0_action N_StoreEDIDatainDependentSegment_Node0_action --> E_StoreEDIDatainDependentSegment S_StoreEDIDatainDependentSegment --> N_StoreEDIDatainDependentSegment_Node0 N_StoreEDIDatainDependentSegment_Node0 -- No --> E_StoreEDIDatainDependentSegment
File: GCX016.cbl
GIVEN:
A segment sequence number has been assigned
WHEN:
EDI data needs to be stored in the dependent segment
THEN:
- The system stores the edi data in the dependent segment with proper formatting
- Structure
β Consolidated Acceptance Criteria
- The segment needs to be persisted for transmission → the system inserts the A9DP dependent segment into the database
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_InsertA9DPSegmenttoDatabase(["Start Step"])
E_InsertA9DPSegmenttoDatabase(["End Step"])
N_InsertA9DPSegmenttoDatabase_Node0{"The segment needs to be persisted
for transmission"}:::decision N_InsertA9DPSegmenttoDatabase_Node0_action["The system inserts the A9DP
dependent segment into the database"]:::main N_InsertA9DPSegmenttoDatabase_Node0 -- Yes --> N_InsertA9DPSegmenttoDatabase_Node0_action N_InsertA9DPSegmenttoDatabase_Node0_action --> E_InsertA9DPSegmenttoDatabase S_InsertA9DPSegmenttoDatabase --> N_InsertA9DPSegmenttoDatabase_Node0 N_InsertA9DPSegmenttoDatabase_Node0 -- No --> E_InsertA9DPSegmenttoDatabase
for transmission"}:::decision N_InsertA9DPSegmenttoDatabase_Node0_action["The system inserts the A9DP
dependent segment into the database"]:::main N_InsertA9DPSegmenttoDatabase_Node0 -- Yes --> N_InsertA9DPSegmenttoDatabase_Node0_action N_InsertA9DPSegmenttoDatabase_Node0_action --> E_InsertA9DPSegmenttoDatabase S_InsertA9DPSegmenttoDatabase --> N_InsertA9DPSegmenttoDatabase_Node0 N_InsertA9DPSegmenttoDatabase_Node0 -- No --> E_InsertA9DPSegmenttoDatabase
File: GCX016.cbl
GIVEN:
The dependent segment has been linked to the transmission root segment
WHEN:
The segment needs to be persisted for transmission
THEN:
The system inserts the A9DP dependent segment into the database
β Consolidated Acceptance Criteria
- The system needs to verify the insertion was successful → the system checks the database insert status and proceeds with logging if successful, or handles the error if unsuccessful
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_DatabaseInsertSuccessful(["Start Step"])
E_DatabaseInsertSuccessful(["End Step"])
N_DatabaseInsertSuccessful_Node0{"The system needs to verify the
insertion was successful"}:::decision N_DatabaseInsertSuccessful_Node0_action["The system checks the database
insert status and proceeds with
logging if successful, or handles
the error if unsuccessful"]:::main N_DatabaseInsertSuccessful_Node0 -- Yes --> N_DatabaseInsertSuccessful_Node0_action N_DatabaseInsertSuccessful_Node0_action --> E_DatabaseInsertSuccessful S_DatabaseInsertSuccessful --> N_DatabaseInsertSuccessful_Node0 N_DatabaseInsertSuccessful_Node0 -- No --> E_DatabaseInsertSuccessful
insertion was successful"}:::decision N_DatabaseInsertSuccessful_Node0_action["The system checks the database
insert status and proceeds with
logging if successful, or handles
the error if unsuccessful"]:::main N_DatabaseInsertSuccessful_Node0 -- Yes --> N_DatabaseInsertSuccessful_Node0_action N_DatabaseInsertSuccessful_Node0_action --> E_DatabaseInsertSuccessful S_DatabaseInsertSuccessful --> N_DatabaseInsertSuccessful_Node0 N_DatabaseInsertSuccessful_Node0 -- No --> E_DatabaseInsertSuccessful
File: GCX016.cbl
GIVEN:
An A9DP segment has been inserted into the database
WHEN:
The system needs to verify the insertion was successful
THEN:
- The system checks the database insert status
- Proceeds with logging if successful, or handles the error if unsuccessful
β Consolidated Acceptance Criteria
- The system is ready for transmission → the system prepares the dependent segments for KCSM transmission processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_PrepareforKCSMTransmission(["Start Step"])
E_PrepareforKCSMTransmission(["End Step"])
N_PrepareforKCSMTransmission_Node0{"The system is ready for
transmission"}:::decision N_PrepareforKCSMTransmission_Node0_action["The system prepares the dependent
segments for KCSM transmission
processing"]:::main N_PrepareforKCSMTransmission_Node0 -- Yes --> N_PrepareforKCSMTransmission_Node0_action N_PrepareforKCSMTransmission_Node0_action --> E_PrepareforKCSMTransmission S_PrepareforKCSMTransmission --> N_PrepareforKCSMTransmission_Node0 N_PrepareforKCSMTransmission_Node0 -- No --> E_PrepareforKCSMTransmission
transmission"}:::decision N_PrepareforKCSMTransmission_Node0_action["The system prepares the dependent
segments for KCSM transmission
processing"]:::main N_PrepareforKCSMTransmission_Node0 -- Yes --> N_PrepareforKCSMTransmission_Node0_action N_PrepareforKCSMTransmission_Node0_action --> E_PrepareforKCSMTransmission S_PrepareforKCSMTransmission --> N_PrepareforKCSMTransmission_Node0 N_PrepareforKCSMTransmission_Node0 -- No --> E_PrepareforKCSMTransmission
File: GCX016.cbl
GIVEN:
All EDI segments have been processed and stored in dependent segments
WHEN:
The system is ready for transmission
THEN:
The system prepares the dependent segments for KCSM transmission processing
β Consolidated Acceptance Criteria
- The system attempts to retrieve broker information from GCSTBRT broker tables → the broker name is successfully retrieved and made available for transmission processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RetrieveBrokerNameforKCSM(["Start Step"])
E_RetrieveBrokerNameforKCSM(["End Step"])
N_RetrieveBrokerNameforKCSM_Node0{"The system attempts to retrieve
broker information from GCSTBRT
broker tables"}:::decision N_RetrieveBrokerNameforKCSM_Node0_action["The broker name is successfully
retrieved and made available for
transmission processing"]:::main N_RetrieveBrokerNameforKCSM_Node0 -- Yes --> N_RetrieveBrokerNameforKCSM_Node0_action N_RetrieveBrokerNameforKCSM_Node0_action --> E_RetrieveBrokerNameforKCSM S_RetrieveBrokerNameforKCSM --> N_RetrieveBrokerNameforKCSM_Node0 N_RetrieveBrokerNameforKCSM_Node0 -- No --> E_RetrieveBrokerNameforKCSM
broker information from GCSTBRT
broker tables"}:::decision N_RetrieveBrokerNameforKCSM_Node0_action["The broker name is successfully
retrieved and made available for
transmission processing"]:::main N_RetrieveBrokerNameforKCSM_Node0 -- Yes --> N_RetrieveBrokerNameforKCSM_Node0_action N_RetrieveBrokerNameforKCSM_Node0_action --> E_RetrieveBrokerNameforKCSM S_RetrieveBrokerNameforKCSM --> N_RetrieveBrokerNameforKCSM_Node0 N_RetrieveBrokerNameforKCSM_Node0 -- No --> E_RetrieveBrokerNameforKCSM
File: GCX016.cbl
GIVEN:
A cargo record requires KCSM integration processing
WHEN:
The system attempts to retrieve broker information from GCSTBRT broker tables
THEN:
- The broker name is successfully retrieved
- Made available for transmission processing
β Consolidated Acceptance Criteria
- The broker lookup operation completes → if broker name is found, proceed to transmission creation; if broker name is not found, handle broker lookup error and complete KCSM integration
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_BrokerNameFound(["Start Step"])
E_BrokerNameFound(["End Step"])
N_BrokerNameFound_Node0{"The broker lookup operation
completes"}:::decision N_BrokerNameFound_Node0_action["If broker name is found, proceed to
transmission creation if broker name
is not found, handle broker lookup
error and complete KCSM integration"]:::main N_BrokerNameFound_Node0 -- Yes --> N_BrokerNameFound_Node0_action N_BrokerNameFound_Node0_action --> E_BrokerNameFound S_BrokerNameFound --> N_BrokerNameFound_Node0 N_BrokerNameFound_Node0 -- No --> E_BrokerNameFound
completes"}:::decision N_BrokerNameFound_Node0_action["If broker name is found, proceed to
transmission creation if broker name
is not found, handle broker lookup
error and complete KCSM integration"]:::main N_BrokerNameFound_Node0 -- Yes --> N_BrokerNameFound_Node0_action N_BrokerNameFound_Node0_action --> E_BrokerNameFound S_BrokerNameFound --> N_BrokerNameFound_Node0 N_BrokerNameFound_Node0 -- No --> E_BrokerNameFound
File: GCX016.cbl
GIVEN:
The system has attempted to retrieve broker information for KCSM processing
WHEN:
The broker lookup operation completes
THEN:
- If broker name is found, proceed to transmission creation; if broker name is not found, handle broker lookup error
- Complete kcsm integration
β Consolidated Acceptance Criteria
- The system creates the dependent segment with EDI data → a9DP dependent segment is created containing the formatted EDI message data for transmission
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CreateDependentSegmentwithEDIData(["Start Step"])
E_CreateDependentSegmentwithEDIData(["End Step"])
N_CreateDependentSegmentwithEDIData_Node0{"The system creates the dependent
segment with EDI data"}:::decision N_CreateDependentSegmentwithEDIData_Node0_action["A9DP dependent segment is created
containing the formatted EDI message
data for transmission"]:::main N_CreateDependentSegmentwithEDIData_Node0 -- Yes --> N_CreateDependentSegmentwithEDIData_Node0_action N_CreateDependentSegmentwithEDIData_Node0_action --> E_CreateDependentSegmentwithEDIData S_CreateDependentSegmentwithEDIData --> N_CreateDependentSegmentwithEDIData_Node0 N_CreateDependentSegmentwithEDIData_Node0 -- No --> E_CreateDependentSegmentwithEDIData
segment with EDI data"}:::decision N_CreateDependentSegmentwithEDIData_Node0_action["A9DP dependent segment is created
containing the formatted EDI message
data for transmission"]:::main N_CreateDependentSegmentwithEDIData_Node0 -- Yes --> N_CreateDependentSegmentwithEDIData_Node0_action N_CreateDependentSegmentwithEDIData_Node0_action --> E_CreateDependentSegmentwithEDIData S_CreateDependentSegmentwithEDIData --> N_CreateDependentSegmentwithEDIData_Node0 N_CreateDependentSegmentwithEDIData_Node0 -- No --> E_CreateDependentSegmentwithEDIData
File: GCX016.cbl
GIVEN:
Transmission control information has been set
WHEN:
The system creates the dependent segment with EDI data
THEN:
A9DP dependent segment is created containing the formatted EDI message data for transmission
β Consolidated Acceptance Criteria
- The system calculates message parameters → message length and entry count are calculated and set for transmission validation
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetMessageLengthandEntryCount(["Start Step"])
E_SetMessageLengthandEntryCount(["End Step"])
N_SetMessageLengthandEntryCount_Node0{"The system calculates message
parameters"}:::decision N_SetMessageLengthandEntryCount_Node0_action["Message length and entry count are
calculated and set for transmission
validation"]:::main N_SetMessageLengthandEntryCount_Node0 -- Yes --> N_SetMessageLengthandEntryCount_Node0_action N_SetMessageLengthandEntryCount_Node0_action --> E_SetMessageLengthandEntryCount S_SetMessageLengthandEntryCount --> N_SetMessageLengthandEntryCount_Node0 N_SetMessageLengthandEntryCount_Node0 -- No --> E_SetMessageLengthandEntryCount
parameters"}:::decision N_SetMessageLengthandEntryCount_Node0_action["Message length and entry count are
calculated and set for transmission
validation"]:::main N_SetMessageLengthandEntryCount_Node0 -- Yes --> N_SetMessageLengthandEntryCount_Node0_action N_SetMessageLengthandEntryCount_Node0_action --> E_SetMessageLengthandEntryCount S_SetMessageLengthandEntryCount --> N_SetMessageLengthandEntryCount_Node0 N_SetMessageLengthandEntryCount_Node0 -- No --> E_SetMessageLengthandEntryCount
File: GCX016.cbl
GIVEN:
EDI dependent segment has been created with message data
WHEN:
The system calculates message parameters
THEN:
- Message length
- Entry count are calculated
- Set for transmission validation
β Consolidated Acceptance Criteria
- The system validates transmission creation → if transmission created successfully, spawn GCT1091E transaction; if transmission creation failed, handle transmission creation error and complete KCSM integration
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_TransmissionCreatedSuccessfully(["Start Step"])
E_TransmissionCreatedSuccessfully(["End Step"])
N_TransmissionCreatedSuccessfully_Node0{"The system validates transmission
creation"}:::decision N_TransmissionCreatedSuccessfully_Node0_action["If transmission created
successfully, spawn GCT1091E
transaction if transmission creation
failed, handle transmission creation
error and complete KCSM integration"]:::main N_TransmissionCreatedSuccessfully_Node0 -- Yes --> N_TransmissionCreatedSuccessfully_Node0_action N_TransmissionCreatedSuccessfully_Node0_action --> E_TransmissionCreatedSuccessfully S_TransmissionCreatedSuccessfully --> N_TransmissionCreatedSuccessfully_Node0 N_TransmissionCreatedSuccessfully_Node0 -- No --> E_TransmissionCreatedSuccessfully
creation"}:::decision N_TransmissionCreatedSuccessfully_Node0_action["If transmission created
successfully, spawn GCT1091E
transaction if transmission creation
failed, handle transmission creation
error and complete KCSM integration"]:::main N_TransmissionCreatedSuccessfully_Node0 -- Yes --> N_TransmissionCreatedSuccessfully_Node0_action N_TransmissionCreatedSuccessfully_Node0_action --> E_TransmissionCreatedSuccessfully S_TransmissionCreatedSuccessfully --> N_TransmissionCreatedSuccessfully_Node0 N_TransmissionCreatedSuccessfully_Node0 -- No --> E_TransmissionCreatedSuccessfully
File: GCX016.cbl
GIVEN:
Message length and entry count have been set
WHEN:
The system validates transmission creation
THEN:
- If transmission created successfully, spawn gct1091e transaction; if transmission creation failed, handle transmission creation error
- Complete kcsm integration
β Consolidated Acceptance Criteria
- The system checks spawn operation status → if GCT1091E spawn successful, pass transmission parameters; if spawn failed, handle spawn transaction error and complete KCSM integration
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GCT1091ESpawnSuccessful(["Start Step"])
E_GCT1091ESpawnSuccessful(["End Step"])
N_GCT1091ESpawnSuccessful_Node0{"The system checks spawn operation
status"}:::decision N_GCT1091ESpawnSuccessful_Node0_action["If GCT1091E spawn successful, pass
transmission parameters if spawn
failed, handle spawn transaction
error and complete KCSM integration"]:::main N_GCT1091ESpawnSuccessful_Node0 -- Yes --> N_GCT1091ESpawnSuccessful_Node0_action N_GCT1091ESpawnSuccessful_Node0_action --> E_GCT1091ESpawnSuccessful S_GCT1091ESpawnSuccessful --> N_GCT1091ESpawnSuccessful_Node0 N_GCT1091ESpawnSuccessful_Node0 -- No --> E_GCT1091ESpawnSuccessful
status"}:::decision N_GCT1091ESpawnSuccessful_Node0_action["If GCT1091E spawn successful, pass
transmission parameters if spawn
failed, handle spawn transaction
error and complete KCSM integration"]:::main N_GCT1091ESpawnSuccessful_Node0 -- Yes --> N_GCT1091ESpawnSuccessful_Node0_action N_GCT1091ESpawnSuccessful_Node0_action --> E_GCT1091ESpawnSuccessful S_GCT1091ESpawnSuccessful --> N_GCT1091ESpawnSuccessful_Node0 N_GCT1091ESpawnSuccessful_Node0 -- No --> E_GCT1091ESpawnSuccessful
File: GCX016.cbl
GIVEN:
GCT1091E transaction spawn has been attempted
WHEN:
The system checks spawn operation status
THEN:
- If gct1091e spawn successful, pass transmission parameters; if spawn failed, handle spawn transaction error
- Complete kcsm integration
β Consolidated Acceptance Criteria
- The system passes transmission parameters → transmission parameters including root segment, dependent segment, and control information are passed to GCT1091E
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_PassTransmissionParameters(["Start Step"])
E_PassTransmissionParameters(["End Step"])
N_PassTransmissionParameters_Node0{"The system passes transmission
parameters"}:::decision N_PassTransmissionParameters_Node0_action["Transmission parameters including
root segment, dependent segment, and
control information are passed to
GCT1091E"]:::main N_PassTransmissionParameters_Node0 -- Yes --> N_PassTransmissionParameters_Node0_action N_PassTransmissionParameters_Node0_action --> E_PassTransmissionParameters S_PassTransmissionParameters --> N_PassTransmissionParameters_Node0 N_PassTransmissionParameters_Node0 -- No --> E_PassTransmissionParameters
parameters"}:::decision N_PassTransmissionParameters_Node0_action["Transmission parameters including
root segment, dependent segment, and
control information are passed to
GCT1091E"]:::main N_PassTransmissionParameters_Node0 -- Yes --> N_PassTransmissionParameters_Node0_action N_PassTransmissionParameters_Node0_action --> E_PassTransmissionParameters S_PassTransmissionParameters --> N_PassTransmissionParameters_Node0 N_PassTransmissionParameters_Node0 -- No --> E_PassTransmissionParameters
File: GCX016.cbl
GIVEN:
GCT1091E transaction has been spawned successfully
WHEN:
The system passes transmission parameters
THEN:
Transmission parameters including root segment, dependent segment, and control information are passed to GCT1091E
β Consolidated Acceptance Criteria
- The system queues EDI message for transmission → eDI message is placed in transmission queue for delivery to KCSM system
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_QueueEDIMessageforTransmission(["Start Step"])
E_QueueEDIMessageforTransmission(["End Step"])
N_QueueEDIMessageforTransmission_Node0{"The system queues EDI message for
transmission"}:::decision N_QueueEDIMessageforTransmission_Node0_action["EDI message is placed in
transmission queue for delivery to
KCSM system"]:::main N_QueueEDIMessageforTransmission_Node0 -- Yes --> N_QueueEDIMessageforTransmission_Node0_action N_QueueEDIMessageforTransmission_Node0_action --> E_QueueEDIMessageforTransmission S_QueueEDIMessageforTransmission --> N_QueueEDIMessageforTransmission_Node0 N_QueueEDIMessageforTransmission_Node0 -- No --> E_QueueEDIMessageforTransmission
transmission"}:::decision N_QueueEDIMessageforTransmission_Node0_action["EDI message is placed in
transmission queue for delivery to
KCSM system"]:::main N_QueueEDIMessageforTransmission_Node0 -- Yes --> N_QueueEDIMessageforTransmission_Node0_action N_QueueEDIMessageforTransmission_Node0_action --> E_QueueEDIMessageforTransmission S_QueueEDIMessageforTransmission --> N_QueueEDIMessageforTransmission_Node0 N_QueueEDIMessageforTransmission_Node0 -- No --> E_QueueEDIMessageforTransmission
File: GCX016.cbl
GIVEN:
Transmission details have been logged
WHEN:
The system queues EDI message for transmission
THEN:
EDI message is placed in transmission queue for delivery to KCSM system
β Consolidated Acceptance Criteria
- The system handles broker lookup error → error is logged and KCSM integration process is completed without transmission
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_HandleBrokerLookupError(["Start Step"])
E_HandleBrokerLookupError(["End Step"])
N_HandleBrokerLookupError_Node0{"The system handles broker lookup
error"}:::decision N_HandleBrokerLookupError_Node0_action["Error is logged and KCSM
integration process is completed
without transmission"]:::exclusion N_HandleBrokerLookupError_Node0 -- Yes -->|Alternative| N_HandleBrokerLookupError_Node0_action N_HandleBrokerLookupError_Node0_action --> E_HandleBrokerLookupError S_HandleBrokerLookupError --> N_HandleBrokerLookupError_Node0 N_HandleBrokerLookupError_Node0 -- No --> E_HandleBrokerLookupError
error"}:::decision N_HandleBrokerLookupError_Node0_action["Error is logged and KCSM
integration process is completed
without transmission"]:::exclusion N_HandleBrokerLookupError_Node0 -- Yes -->|Alternative| N_HandleBrokerLookupError_Node0_action N_HandleBrokerLookupError_Node0_action --> E_HandleBrokerLookupError S_HandleBrokerLookupError --> N_HandleBrokerLookupError_Node0 N_HandleBrokerLookupError_Node0 -- No --> E_HandleBrokerLookupError
File: GCX016.cbl
GIVEN:
Broker name lookup has failed
WHEN:
The system handles broker lookup error
THEN:
- Error is logged
- Kcsm integration process is completed without transmission
β Consolidated Acceptance Criteria
- The system handles transmission creation error → error is logged and KCSM integration process is completed without spawning transaction
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_HandleTransmissionCreationError(["Start Step"])
E_HandleTransmissionCreationError(["End Step"])
N_HandleTransmissionCreationError_Node0{"The system handles transmission
creation error"}:::decision N_HandleTransmissionCreationError_Node0_action["Error is logged and KCSM
integration process is completed
without spawning transaction"]:::exclusion N_HandleTransmissionCreationError_Node0 -- Yes -->|Alternative| N_HandleTransmissionCreationError_Node0_action N_HandleTransmissionCreationError_Node0_action --> E_HandleTransmissionCreationError S_HandleTransmissionCreationError --> N_HandleTransmissionCreationError_Node0 N_HandleTransmissionCreationError_Node0 -- No --> E_HandleTransmissionCreationError
creation error"}:::decision N_HandleTransmissionCreationError_Node0_action["Error is logged and KCSM
integration process is completed
without spawning transaction"]:::exclusion N_HandleTransmissionCreationError_Node0 -- Yes -->|Alternative| N_HandleTransmissionCreationError_Node0_action N_HandleTransmissionCreationError_Node0_action --> E_HandleTransmissionCreationError S_HandleTransmissionCreationError --> N_HandleTransmissionCreationError_Node0 N_HandleTransmissionCreationError_Node0 -- No --> E_HandleTransmissionCreationError
File: GCX016.cbl
GIVEN:
Transmission creation has failed
WHEN:
The system handles transmission creation error
THEN:
- Error is logged
- Kcsm integration process is completed without spawning transaction
β Consolidated Acceptance Criteria
- The system handles spawn transaction error → error is logged and KCSM integration process is completed without parameter passing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_HandleSpawnTransactionError(["Start Step"])
E_HandleSpawnTransactionError(["End Step"])
N_HandleSpawnTransactionError_Node0{"The system handles spawn
transaction error"}:::decision N_HandleSpawnTransactionError_Node0_action["Error is logged and KCSM
integration process is completed
without parameter passing"]:::exclusion N_HandleSpawnTransactionError_Node0 -- Yes -->|Alternative| N_HandleSpawnTransactionError_Node0_action N_HandleSpawnTransactionError_Node0_action --> E_HandleSpawnTransactionError S_HandleSpawnTransactionError --> N_HandleSpawnTransactionError_Node0 N_HandleSpawnTransactionError_Node0 -- No --> E_HandleSpawnTransactionError
transaction error"}:::decision N_HandleSpawnTransactionError_Node0_action["Error is logged and KCSM
integration process is completed
without parameter passing"]:::exclusion N_HandleSpawnTransactionError_Node0 -- Yes -->|Alternative| N_HandleSpawnTransactionError_Node0_action N_HandleSpawnTransactionError_Node0_action --> E_HandleSpawnTransactionError S_HandleSpawnTransactionError --> N_HandleSpawnTransactionError_Node0 N_HandleSpawnTransactionError_Node0 -- No --> E_HandleSpawnTransactionError
File: GCX016.cbl
GIVEN:
GCT1091E transaction spawn has failed
WHEN:
The system handles spawn transaction error
THEN:
- Error is logged
- Kcsm integration process is completed without parameter passing